diff options
author | 2023-07-24 14:37:16 +0200 | |
---|---|---|
committer | 2023-07-24 14:37:16 +0200 | |
commit | 8789304690384d19ad829286560aec5ed0917976 (patch) | |
tree | b157e78e8b6a3f2fb3d0eee6e1aa10d2c16e0204 | |
parent | decreasing steps in fast fuzz tests (diff) | |
parent | Merge pull request #27 from kris7t/ordered-result-set (diff) | |
download | refinery-8789304690384d19ad829286560aec5ed0917976.tar.gz refinery-8789304690384d19ad829286560aec5ed0917976.tar.zst refinery-8789304690384d19ad829286560aec5ed0917976.zip |
Merge branch 'graphs4value:main' into datastructure
703 files changed, 23805 insertions, 6564 deletions
diff --git a/.editorconfig b/.editorconfig index 81e5fda1..7e5e9f16 100644 --- a/.editorconfig +++ b/.editorconfig | |||
@@ -1,3 +1,7 @@ | |||
1 | # SPDX-FileCopyrightText: 2021-2023 The Refinery Authors | ||
2 | # | ||
3 | # SPDX-License-Identifier: EPL-2.0 | ||
4 | |||
1 | root = true | 5 | root = true |
2 | 6 | ||
3 | [*] | 7 | [*] |
@@ -8,7 +12,7 @@ insert_final_newline = true | |||
8 | max_line_length = 80 | 12 | max_line_length = 80 |
9 | ij_wrap_on_typing = true | 13 | ij_wrap_on_typing = true |
10 | 14 | ||
11 | [*.{gradle,java,mwe2,xtend,xtext}] | 15 | [*.{gradle,java,kts,mwe2,xtend,xtext}] |
12 | indent_style = tab | 16 | indent_style = tab |
13 | indent_size = 4 | 17 | indent_size = 4 |
14 | # Mimic Eclipse continuation indent style in IntelliJ | 18 | # Mimic Eclipse continuation indent style in IntelliJ |
@@ -19,3 +23,6 @@ ij_any_indent_case_from_switch = false | |||
19 | [*.{grammar,html,js,json,jsx,scss,ts,tsx,yml}] | 23 | [*.{grammar,html,js,json,jsx,scss,ts,tsx,yml}] |
20 | indent_style = space | 24 | indent_style = space |
21 | indent_size = 2 | 25 | indent_size = 2 |
26 | |||
27 | [libs.versions.toml] | ||
28 | max_line_length = 999 \ No newline at end of file | ||
diff --git a/.gitattributes b/.gitattributes index edd224df..847ceced 100644 --- a/.gitattributes +++ b/.gitattributes | |||
@@ -1,3 +1,7 @@ | |||
1 | # SPDX-FileCopyrightText: 2021-2023 The Refinery Authors | ||
2 | # | ||
3 | # SPDX-License-Identifier: CC0-1.0 | ||
4 | |||
1 | .yarn/releases/** binary | 5 | .yarn/releases/** binary |
2 | .yarn/plugins/** binary | 6 | .yarn/plugins/** binary |
3 | *.cjs eol=lf | 7 | *.cjs eol=lf |
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ce42b9f1..6138fad1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml | |||
@@ -1,3 +1,7 @@ | |||
1 | # SPDX-FileCopyrightText: 2021-2023 The Refinery Authors | ||
2 | # | ||
3 | # SPDX-License-Identifier: EPL-2.0 | ||
4 | |||
1 | name: Build | 5 | name: Build |
2 | on: | 6 | on: |
3 | push: | 7 | push: |
@@ -16,15 +20,17 @@ jobs: | |||
16 | env: | 20 | env: |
17 | SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | 21 | SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} |
18 | run: | | 22 | run: | |
19 | echo "is_SONAR_TOKEN_set=${{ env.SONAR_TOKEN != '' }}" >> $GITHUB_OUTPUT | 23 | if [ "${SONAR_TOKEN}" != '' ]; then |
24 | echo 'is_SONAR_TOKEN_set=true' >> $GITHUB_OUTPUT | ||
25 | fi | ||
20 | - name: Checkout code | 26 | - name: Checkout code |
21 | uses: actions/checkout@v3 | 27 | uses: actions/checkout@v3 |
22 | with: | 28 | with: |
23 | fetch-depth: ${{ !steps.check-secret.outputs.is_SONAR_TOKEN_set && 1 || 0 }} # Shallow clones should be disabled for a better relevancy of SonarCloud analysis | 29 | fetch-depth: ${{ !steps.check-secret.outputs.is_SONAR_TOKEN_set && 1 || 0 }} # Shallow clones should be disabled for a better relevancy of SonarCloud analysis |
24 | - name: Set up JDK 19 | 30 | - name: Set up JDK 17 |
25 | uses: actions/setup-java@v3 | 31 | uses: actions/setup-java@v3 |
26 | with: | 32 | with: |
27 | java-version: 19 | 33 | java-version: 17 |
28 | distribution: temurin | 34 | distribution: temurin |
29 | - name: Cache Gradle packages | 35 | - name: Cache Gradle packages |
30 | uses: actions/cache@v3 | 36 | uses: actions/cache@v3 |
@@ -65,4 +71,13 @@ jobs: | |||
65 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed by Sonar to get PR information, if any | 71 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed by Sonar to get PR information, if any |
66 | SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | 72 | SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} |
67 | run: | | 73 | run: | |
68 | ./gradlew build sonarqube -Pci --info | 74 | ./gradlew build sonar -Pci --info |
75 | reuse-check: | ||
76 | name: REUSE Compliance Check | ||
77 | runs-on: ubuntu-latest | ||
78 | steps: | ||
79 | - uses: actions/checkout@v3 | ||
80 | - name: REUSE Compliance Check | ||
81 | uses: fsfe/reuse-action@v1 | ||
82 | with: | ||
83 | args: --include-meson-subprojects lint | ||
@@ -1,3 +1,7 @@ | |||
1 | # SPDX-FileCopyrightText: 2021-2023 The Refinery Authors | ||
2 | # | ||
3 | # SPDX-License-Identifier: CC0-1.0 | ||
4 | |||
1 | *._trace | 5 | *._trace |
2 | .classpath | 6 | .classpath |
3 | .idea/ | 7 | .idea/ |
diff --git a/.reuse/dep5 b/.reuse/dep5 new file mode 100644 index 00000000..523ac368 --- /dev/null +++ b/.reuse/dep5 | |||
@@ -0,0 +1,29 @@ | |||
1 | Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ | ||
2 | Upstream-Name: Refinery | ||
3 | Upstream-Contact: Dániel Varró <daniel.varro@liu.se> | ||
4 | Source: https://github.com/graphs4value/refinery | ||
5 | |||
6 | # Sample paragraph, commented out: | ||
7 | # | ||
8 | # Files: src/* | ||
9 | # Copyright: $YEAR $NAME <$CONTACT> | ||
10 | # License: ... | ||
11 | |||
12 | Files: .yarn/releases/*.cjs | ||
13 | Copyright: (c) 2016-present, Yarn Contributors. All rights reserved. | ||
14 | (c) 2014-present, Jon Schlinkert. | ||
15 | (c) 2014-2016, Jon Schlinkert. | ||
16 | (c) 2014-2017, Jon Schlinkert. | ||
17 | © 2015-2018, Jon Schlinkert. | ||
18 | (c) 2015-present, Jon Schlinkert. | ||
19 | (c) 2015, Rebecca Turner | ||
20 | Joyent, Inc. and other Node contributors. | ||
21 | Node.js contributors. All rights reserved. | ||
22 | (c) 2014 Blake Embrey (hello@blakeembrey.com) | ||
23 | (c) Facebook, Inc. and its affiliates. | ||
24 | License: BSD-2-Clause AND MIT | ||
25 | |||
26 | Files: .yarn/sdks/eslint/* | ||
27 | .yarn/sdks/typescript/* | ||
28 | Copyright: (c) 2016-present, Yarn Contributors. All rights reserved. | ||
29 | License: BSD-2-Clause | ||
diff --git a/.vscode/extensions.json b/.vscode/extensions.json index fa381855..8ff62a2a 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors | ||
3 | * | ||
4 | * SPDX-License-Identifier: CC0-1.0 | ||
5 | */ | ||
1 | { | 6 | { |
2 | "recommendations": [ | 7 | "recommendations": [ |
3 | "EditorConfig.EditorConfig", | 8 | "EditorConfig.EditorConfig", |
diff --git a/.vscode/settings.json b/.vscode/settings.json index 66e5806b..52d43dba 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors | ||
3 | * | ||
4 | * SPDX-License-Identifier: CC0-1.0 | ||
5 | */ | ||
1 | { | 6 | { |
2 | "search.exclude": { | 7 | "search.exclude": { |
3 | "**/.yarn": true, | 8 | "**/.yarn": true, |
diff --git a/.yarn/releases/yarn-4.0.0-rc.37.cjs b/.yarn/releases/yarn-4.0.0-rc.45.cjs index e8f633a1..e02fd942 100755 --- a/.yarn/releases/yarn-4.0.0-rc.37.cjs +++ b/.yarn/releases/yarn-4.0.0-rc.45.cjs | |||
@@ -1,98 +1,98 @@ | |||
1 | #!/usr/bin/env node | 1 | #!/usr/bin/env node |
2 | /* eslint-disable */ | 2 | /* eslint-disable */ |
3 | //prettier-ignore | 3 | //prettier-ignore |
4 | (()=>{var l_e=Object.create;var PR=Object.defineProperty;var c_e=Object.getOwnPropertyDescriptor;var u_e=Object.getOwnPropertyNames;var A_e=Object.getPrototypeOf,f_e=Object.prototype.hasOwnProperty;var Ie=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+t+'" is not supported')});var dt=(t,e)=>()=>(t&&(e=t(t=0)),e);var U=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Yt=(t,e)=>{for(var r in e)PR(t,r,{get:e[r],enumerable:!0})},p_e=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of u_e(e))!f_e.call(t,a)&&a!==r&&PR(t,a,{get:()=>e[a],enumerable:!(o=c_e(e,a))||o.enumerable});return t};var tt=(t,e,r)=>(r=t!=null?l_e(A_e(t)):{},p_e(e||!t||!t.__esModule?PR(r,"default",{value:t,enumerable:!0}):r,t));var Ii={};Yt(Ii,{SAFE_TIME:()=>E7,S_IFDIR:()=>eD,S_IFLNK:()=>tD,S_IFMT:()=>_u,S_IFREG:()=>bI});var _u,eD,bI,tD,E7,C7=dt(()=>{_u=61440,eD=16384,bI=32768,tD=40960,E7=456789e3});var sr={};Yt(sr,{EBADF:()=>Co,EBUSY:()=>h_e,EEXIST:()=>C_e,EINVAL:()=>d_e,EISDIR:()=>E_e,ENOENT:()=>m_e,ENOSYS:()=>g_e,ENOTDIR:()=>y_e,ENOTEMPTY:()=>w_e,EOPNOTSUPP:()=>B_e,EROFS:()=>I_e,ERR_DIR_CLOSED:()=>xR});function Tl(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function h_e(t){return Tl("EBUSY",t)}function g_e(t,e){return Tl("ENOSYS",`${t}, ${e}`)}function d_e(t){return Tl("EINVAL",`invalid argument, ${t}`)}function Co(t){return Tl("EBADF",`bad file descriptor, ${t}`)}function m_e(t){return Tl("ENOENT",`no such file or directory, ${t}`)}function y_e(t){return Tl("ENOTDIR",`not a directory, ${t}`)}function E_e(t){return Tl("EISDIR",`illegal operation on a directory, ${t}`)}function C_e(t){return Tl("EEXIST",`file already exists, ${t}`)}function I_e(t){return Tl("EROFS",`read-only filesystem, ${t}`)}function w_e(t){return Tl("ENOTEMPTY",`directory not empty, ${t}`)}function B_e(t){return Tl("EOPNOTSUPP",`operation not supported, ${t}`)}function xR(){return Tl("ERR_DIR_CLOSED","Directory handle was closed")}var rD=dt(()=>{});var Nl={};Yt(Nl,{BigIntStatsEntry:()=>Zm,DEFAULT_MODE:()=>kR,DirEntry:()=>bR,StatEntry:()=>Xm,areStatsEqual:()=>FR,clearStats:()=>nD,convertToBigIntStats:()=>D_e,makeDefaultStats:()=>I7,makeEmptyStats:()=>v_e});function I7(){return new Xm}function v_e(){return nD(I7())}function nD(t){for(let e in t)if(Object.prototype.hasOwnProperty.call(t,e)){let r=t[e];typeof r=="number"?t[e]=0:typeof r=="bigint"?t[e]=BigInt(0):QR.types.isDate(r)&&(t[e]=new Date(0))}return t}function D_e(t){let e=new Zm;for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let o=t[r];typeof o=="number"?e[r]=BigInt(o):QR.types.isDate(o)&&(e[r]=new Date(o))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function FR(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs||t.blksize!==e.blksize||t.blocks!==e.blocks||t.ctimeMs!==e.ctimeMs||t.dev!==e.dev||t.gid!==e.gid||t.ino!==e.ino||t.isBlockDevice()!==e.isBlockDevice()||t.isCharacterDevice()!==e.isCharacterDevice()||t.isDirectory()!==e.isDirectory()||t.isFIFO()!==e.isFIFO()||t.isFile()!==e.isFile()||t.isSocket()!==e.isSocket()||t.isSymbolicLink()!==e.isSymbolicLink()||t.mode!==e.mode||t.mtimeMs!==e.mtimeMs||t.nlink!==e.nlink||t.rdev!==e.rdev||t.size!==e.size||t.uid!==e.uid)return!1;let r=t,o=e;return!(r.atimeNs!==o.atimeNs||r.mtimeNs!==o.mtimeNs||r.ctimeNs!==o.ctimeNs||r.birthtimeNs!==o.birthtimeNs)}var QR,kR,bR,Xm,Zm,RR=dt(()=>{QR=tt(Ie("util")),kR=33188,bR=class{constructor(){this.name="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},Xm=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=kR;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},Zm=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(kR);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(61440))===BigInt(16384)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(61440))===BigInt(32768)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(61440))===BigInt(40960)}}});function B7(t){if(process.platform!=="win32")return t;let e,r;if(e=t.match(x_e))t=e[1];else if(r=t.match(b_e))t=`\\\\${r[1]?".\\":""}${r[2]}`;else return t;return t.replace(/\//g,"\\")}function TR(t){if(process.platform!=="win32")return t;t=t.replace(/\\/g,"/");let e,r;return(e=t.match(S_e))?t=`/${e[1]}`:(r=t.match(P_e))&&(t=`/unc/${r[1]?".dot/":""}${r[2]}`),t}function iD(t,e){return t===Ae?B7(e):TR(e)}function Li(t){if(Ae.parse(t).dir!==""||V.parse(t).dir!=="")throw new Error(`Invalid filename: "${t}"`);return t}var QI,wt,Lr,Ae,V,w7,S_e,P_e,x_e,b_e,ya=dt(()=>{QI=tt(Ie("path")),wt={root:"/",dot:".",parent:".."},Lr={home:"~",nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",pnpData:".pnp.data.json",pnpEsmLoader:".pnp.loader.mjs",rc:".yarnrc.yml"},Ae=Object.create(QI.default),V=Object.create(QI.default.posix);Ae.cwd=()=>process.cwd();V.cwd=()=>TR(process.cwd());V.resolve=(...t)=>t.length>0&&V.isAbsolute(t[0])?QI.default.posix.resolve(...t):QI.default.posix.resolve(V.cwd(),...t);w7=function(t,e,r){return e=t.normalize(e),r=t.normalize(r),e===r?".":(e.endsWith(t.sep)||(e=e+t.sep),r.startsWith(e)?r.slice(e.length):null)};Ae.fromPortablePath=B7;Ae.toPortablePath=TR;Ae.contains=(t,e)=>w7(Ae,t,e);V.contains=(t,e)=>w7(V,t,e);S_e=/^([a-zA-Z]:.*)$/,P_e=/^\/\/(\.\/)?(.*)$/,x_e=/^\/([a-zA-Z]:.*)$/,b_e=/^\/unc\/(\.dot\/)?(.*)$/});async function sD(t,e){let r="0123456789abcdef";await t.mkdirPromise(e.indexPath,{recursive:!0});let o=[];for(let a of r)for(let n of r)o.push(t.mkdirPromise(t.pathUtils.join(e.indexPath,`${a}${n}`),{recursive:!0}));return await Promise.all(o),e.indexPath}async function v7(t,e,r,o,a){let n=t.pathUtils.normalize(e),u=r.pathUtils.normalize(o),A=[],p=[],{atime:h,mtime:C}=a.stableTime?{atime:Qg,mtime:Qg}:await r.lstatPromise(u);await t.mkdirpPromise(t.pathUtils.dirname(e),{utimes:[h,C]}),await NR(A,p,t,n,r,u,{...a,didParentExist:!0});for(let w of A)await w();await Promise.all(p.map(w=>w()))}async function NR(t,e,r,o,a,n,u){var v,b,E;let A=u.didParentExist?await D7(r,o):null,p=await a.lstatPromise(n),{atime:h,mtime:C}=u.stableTime?{atime:Qg,mtime:Qg}:p,w;switch(!0){case p.isDirectory():w=await k_e(t,e,r,o,A,a,n,p,u);break;case p.isFile():w=await T_e(t,e,r,o,A,a,n,p,u);break;case p.isSymbolicLink():w=await N_e(t,e,r,o,A,a,n,p,u);break;default:throw new Error(`Unsupported file type (${p.mode})`)}return(((v=u.linkStrategy)==null?void 0:v.type)!=="HardlinkFromIndex"||!p.isFile())&&((w||((b=A==null?void 0:A.mtime)==null?void 0:b.getTime())!==C.getTime()||((E=A==null?void 0:A.atime)==null?void 0:E.getTime())!==h.getTime())&&(e.push(()=>r.lutimesPromise(o,h,C)),w=!0),(A===null||(A.mode&511)!==(p.mode&511))&&(e.push(()=>r.chmodPromise(o,p.mode&511)),w=!0)),w}async function D7(t,e){try{return await t.lstatPromise(e)}catch{return null}}async function k_e(t,e,r,o,a,n,u,A,p){if(a!==null&&!a.isDirectory())if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;let h=!1;a===null&&(t.push(async()=>{try{await r.mkdirPromise(o,{mode:A.mode})}catch(v){if(v.code!=="EEXIST")throw v}}),h=!0);let C=await n.readdirPromise(u),w=p.didParentExist&&!a?{...p,didParentExist:!1}:p;if(p.stableSort)for(let v of C.sort())await NR(t,e,r,r.pathUtils.join(o,v),n,n.pathUtils.join(u,v),w)&&(h=!0);else(await Promise.all(C.map(async b=>{await NR(t,e,r,r.pathUtils.join(o,b),n,n.pathUtils.join(u,b),w)}))).some(b=>b)&&(h=!0);return h}async function F_e(t,e,r,o,a,n,u,A,p,h){let C=await n.checksumFilePromise(u,{algorithm:"sha1"}),w=r.pathUtils.join(h.indexPath,C.slice(0,2),`${C}.dat`),v;(re=>(re[re.Lock=0]="Lock",re[re.Rename=1]="Rename"))(v||(v={}));let b=1,E=await D7(r,w);if(a){let _=E&&a.dev===E.dev&&a.ino===E.ino,J=(E==null?void 0:E.mtimeMs)!==Q_e;if(_&&J&&h.autoRepair&&(b=0,E=null),!_)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1}let R=!E&&b===1?`${w}.${Math.floor(Math.random()*4294967296).toString(16).padStart(8,"0")}`:null,L=!1;return t.push(async()=>{if(!E&&(b===0&&await r.lockPromise(w,async()=>{let _=await n.readFilePromise(u);await r.writeFilePromise(w,_)}),b===1&&R)){let _=await n.readFilePromise(u);await r.writeFilePromise(R,_);try{await r.linkPromise(R,w)}catch(J){if(J.code==="EEXIST")L=!0,await r.unlinkPromise(R);else throw J}}a||await r.linkPromise(w,o)}),e.push(async()=>{E||await r.lutimesPromise(w,Qg,Qg),R&&!L&&await r.unlinkPromise(R)}),!1}async function R_e(t,e,r,o,a,n,u,A,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;return t.push(async()=>{let h=await n.readFilePromise(u);await r.writeFilePromise(o,h)}),!0}async function T_e(t,e,r,o,a,n,u,A,p){var h;return((h=p.linkStrategy)==null?void 0:h.type)==="HardlinkFromIndex"?F_e(t,e,r,o,a,n,u,A,p,p.linkStrategy):R_e(t,e,r,o,a,n,u,A,p)}async function N_e(t,e,r,o,a,n,u,A,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;return t.push(async()=>{await r.symlinkPromise(iD(r.pathUtils,await n.readlinkPromise(u)),o)}),!0}var Qg,Q_e,LR=dt(()=>{ya();Qg=new Date(456789e3*1e3),Q_e=Qg.getTime()});function oD(t,e,r,o){let a=()=>{let n=r.shift();return typeof n>"u"?null:Object.assign(t.statSync(t.pathUtils.join(e,n)),{name:n})};return new OR(e,a,o)}var OR,S7=dt(()=>{rD();OR=class{constructor(e,r,o={}){this.path=e;this.nextDirent=r;this.opts=o;this.closed=!1}throwIfClosed(){if(this.closed)throw xR()}async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==null;)yield e}finally{await this.close()}}read(e){let r=this.readSync();return typeof e<"u"?e(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),typeof e<"u"?e(null):Promise.resolve()}closeSync(){var e,r;this.throwIfClosed(),(r=(e=this.opts).onClose)==null||r.call(e),this.closed=!0}}});function P7(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${t}'`)}var x7,$m,b7=dt(()=>{x7=Ie("events");RR();$m=class extends x7.EventEmitter{constructor(r,o,{bigint:a=!1}={}){super();this.status="ready";this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=r,this.path=o,this.bigint=a,this.lastStats=this.stat()}static create(r,o,a){let n=new $m(r,o,a);return n.start(),n}start(){P7(this.status,"ready"),this.status="running",this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit("change",this.lastStats,this.lastStats)},3)}stop(){P7(this.status,"running"),this.status="stopped",this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit("stop")}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch{let o=this.bigint?new Zm:new Xm;return nD(o)}}makeInterval(r){let o=setInterval(()=>{let a=this.stat(),n=this.lastStats;FR(a,n)||(this.lastStats=a,this.emit("change",a,n))},r.interval);return r.persistent?o:o.unref()}registerChangeListener(r,o){this.addListener("change",r),this.changeListeners.set(r,this.makeInterval(o))}unregisterChangeListener(r){this.removeListener("change",r);let o=this.changeListeners.get(r);typeof o<"u"&&clearInterval(o),this.changeListeners.delete(r)}unregisterAllChangeListeners(){for(let r of this.changeListeners.keys())this.unregisterChangeListener(r)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let r of this.changeListeners.values())r.ref();return this}unref(){for(let r of this.changeListeners.values())r.unref();return this}}});function ey(t,e,r,o){let a,n,u,A;switch(typeof r){case"function":a=!1,n=!0,u=5007,A=r;break;default:({bigint:a=!1,persistent:n=!0,interval:u=5007}=r),A=o;break}let p=aD.get(t);typeof p>"u"&&aD.set(t,p=new Map);let h=p.get(e);return typeof h>"u"&&(h=$m.create(t,e,{bigint:a}),p.set(e,h)),h.registerChangeListener(A,{persistent:n,interval:u}),h}function kg(t,e,r){let o=aD.get(t);if(typeof o>"u")return;let a=o.get(e);typeof a>"u"||(typeof r>"u"?a.unregisterAllChangeListeners():a.unregisterChangeListener(r),a.hasChangeListeners()||(a.stop(),o.delete(e)))}function Fg(t){let e=aD.get(t);if(!(typeof e>"u"))for(let r of e.keys())kg(t,r)}var aD,MR=dt(()=>{b7();aD=new WeakMap});function L_e(t){let e=t.match(/\r?\n/g);if(e===null)return k7.EOL;let r=e.filter(a=>a===`\r | 4 | (()=>{var B_e=Object.create;var kR=Object.defineProperty;var v_e=Object.getOwnPropertyDescriptor;var D_e=Object.getOwnPropertyNames;var S_e=Object.getPrototypeOf,P_e=Object.prototype.hasOwnProperty;var Ie=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+t+'" is not supported')});var dt=(t,e)=>()=>(t&&(e=t(t=0)),e);var U=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Yt=(t,e)=>{for(var r in e)kR(t,r,{get:e[r],enumerable:!0})},x_e=(t,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of D_e(e))!P_e.call(t,a)&&a!==r&&kR(t,a,{get:()=>e[a],enumerable:!(o=v_e(e,a))||o.enumerable});return t};var tt=(t,e,r)=>(r=t!=null?B_e(S_e(t)):{},x_e(e||!t||!t.__esModule?kR(r,"default",{value:t,enumerable:!0}):r,t));var Ii={};Yt(Ii,{SAFE_TIME:()=>P7,S_IFDIR:()=>cD,S_IFLNK:()=>uD,S_IFMT:()=>Hu,S_IFREG:()=>RI});var Hu,cD,RI,uD,P7,x7=dt(()=>{Hu=61440,cD=16384,RI=32768,uD=40960,P7=456789e3});var sr={};Yt(sr,{EBADF:()=>Co,EBUSY:()=>b_e,EEXIST:()=>N_e,EINVAL:()=>k_e,EISDIR:()=>T_e,ENOENT:()=>F_e,ENOSYS:()=>Q_e,ENOTDIR:()=>R_e,ENOTEMPTY:()=>O_e,EOPNOTSUPP:()=>M_e,EROFS:()=>L_e,ERR_DIR_CLOSED:()=>FR});function Ml(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function b_e(t){return Ml("EBUSY",t)}function Q_e(t,e){return Ml("ENOSYS",`${t}, ${e}`)}function k_e(t){return Ml("EINVAL",`invalid argument, ${t}`)}function Co(t){return Ml("EBADF",`bad file descriptor, ${t}`)}function F_e(t){return Ml("ENOENT",`no such file or directory, ${t}`)}function R_e(t){return Ml("ENOTDIR",`not a directory, ${t}`)}function T_e(t){return Ml("EISDIR",`illegal operation on a directory, ${t}`)}function N_e(t){return Ml("EEXIST",`file already exists, ${t}`)}function L_e(t){return Ml("EROFS",`read-only filesystem, ${t}`)}function O_e(t){return Ml("ENOTEMPTY",`directory not empty, ${t}`)}function M_e(t){return Ml("EOPNOTSUPP",`operation not supported, ${t}`)}function FR(){return Ml("ERR_DIR_CLOSED","Directory handle was closed")}var AD=dt(()=>{});var Ul={};Yt(Ul,{BigIntStatsEntry:()=>ny,DEFAULT_MODE:()=>NR,DirEntry:()=>RR,StatEntry:()=>ry,areStatsEqual:()=>LR,clearStats:()=>fD,convertToBigIntStats:()=>__e,makeDefaultStats:()=>b7,makeEmptyStats:()=>U_e});function b7(){return new ry}function U_e(){return fD(b7())}function fD(t){for(let e in t)if(Object.prototype.hasOwnProperty.call(t,e)){let r=t[e];typeof r=="number"?t[e]=0:typeof r=="bigint"?t[e]=BigInt(0):TR.types.isDate(r)&&(t[e]=new Date(0))}return t}function __e(t){let e=new ny;for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let o=t[r];typeof o=="number"?e[r]=BigInt(o):TR.types.isDate(o)&&(e[r]=new Date(o))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function LR(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs||t.blksize!==e.blksize||t.blocks!==e.blocks||t.ctimeMs!==e.ctimeMs||t.dev!==e.dev||t.gid!==e.gid||t.ino!==e.ino||t.isBlockDevice()!==e.isBlockDevice()||t.isCharacterDevice()!==e.isCharacterDevice()||t.isDirectory()!==e.isDirectory()||t.isFIFO()!==e.isFIFO()||t.isFile()!==e.isFile()||t.isSocket()!==e.isSocket()||t.isSymbolicLink()!==e.isSymbolicLink()||t.mode!==e.mode||t.mtimeMs!==e.mtimeMs||t.nlink!==e.nlink||t.rdev!==e.rdev||t.size!==e.size||t.uid!==e.uid)return!1;let r=t,o=e;return!(r.atimeNs!==o.atimeNs||r.mtimeNs!==o.mtimeNs||r.ctimeNs!==o.ctimeNs||r.birthtimeNs!==o.birthtimeNs)}var TR,NR,RR,ry,ny,OR=dt(()=>{TR=tt(Ie("util")),NR=33188,RR=class{constructor(){this.name="";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},ry=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=NR;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},ny=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(NR);this.nlink=BigInt(1);this.rdev=BigInt(0);this.blocks=BigInt(1)}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&BigInt(61440))===BigInt(16384)}isFIFO(){return!1}isFile(){return(this.mode&BigInt(61440))===BigInt(32768)}isSocket(){return!1}isSymbolicLink(){return(this.mode&BigInt(61440))===BigInt(40960)}}});function k7(t){if(process.platform!=="win32")return t;let e,r;if(e=t.match(j_e))t=e[1];else if(r=t.match(G_e))t=`\\\\${r[1]?".\\":""}${r[2]}`;else return t;return t.replace(/\//g,"\\")}function MR(t){if(process.platform!=="win32")return t;t=t.replace(/\\/g,"/");let e,r;return(e=t.match(H_e))?t=`/${e[1]}`:(r=t.match(q_e))&&(t=`/unc/${r[1]?".dot/":""}${r[2]}`),t}function pD(t,e){return t===ue?k7(e):MR(e)}function Li(t){if(ue.parse(t).dir!==""||J.parse(t).dir!=="")throw new Error(`Invalid filename: "${t}"`);return t}var TI,wt,Lr,ue,J,Q7,H_e,q_e,j_e,G_e,Ca=dt(()=>{TI=tt(Ie("path")),wt={root:"/",dot:".",parent:".."},Lr={home:"~",nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",virtual:"__virtual__",pnpJs:".pnp.js",pnpCjs:".pnp.cjs",pnpData:".pnp.data.json",pnpEsmLoader:".pnp.loader.mjs",rc:".yarnrc.yml"},ue=Object.create(TI.default),J=Object.create(TI.default.posix);ue.cwd=()=>process.cwd();J.cwd=()=>MR(process.cwd());J.resolve=(...t)=>t.length>0&&J.isAbsolute(t[0])?TI.default.posix.resolve(...t):TI.default.posix.resolve(J.cwd(),...t);Q7=function(t,e,r){return e=t.normalize(e),r=t.normalize(r),e===r?".":(e.endsWith(t.sep)||(e=e+t.sep),r.startsWith(e)?r.slice(e.length):null)};ue.fromPortablePath=k7;ue.toPortablePath=MR;ue.contains=(t,e)=>Q7(ue,t,e);J.contains=(t,e)=>Q7(J,t,e);H_e=/^([a-zA-Z]:.*)$/,q_e=/^\/\/(\.\/)?(.*)$/,j_e=/^\/([a-zA-Z]:.*)$/,G_e=/^\/unc\/(\.dot\/)?(.*)$/});async function hD(t,e){let r="0123456789abcdef";await t.mkdirPromise(e.indexPath,{recursive:!0});let o=[];for(let a of r)for(let n of r)o.push(t.mkdirPromise(t.pathUtils.join(e.indexPath,`${a}${n}`),{recursive:!0}));return await Promise.all(o),e.indexPath}async function F7(t,e,r,o,a){let n=t.pathUtils.normalize(e),u=r.pathUtils.normalize(o),A=[],p=[],{atime:h,mtime:C}=a.stableTime?{atime:Tg,mtime:Tg}:await r.lstatPromise(u);await t.mkdirpPromise(t.pathUtils.dirname(e),{utimes:[h,C]}),await UR(A,p,t,n,r,u,{...a,didParentExist:!0});for(let w of A)await w();await Promise.all(p.map(w=>w()))}async function UR(t,e,r,o,a,n,u){var v,b,E;let A=u.didParentExist?await R7(r,o):null,p=await a.lstatPromise(n),{atime:h,mtime:C}=u.stableTime?{atime:Tg,mtime:Tg}:p,w;switch(!0){case p.isDirectory():w=await Y_e(t,e,r,o,A,a,n,p,u);break;case p.isFile():w=await J_e(t,e,r,o,A,a,n,p,u);break;case p.isSymbolicLink():w=await z_e(t,e,r,o,A,a,n,p,u);break;default:throw new Error(`Unsupported file type (${p.mode})`)}return(((v=u.linkStrategy)==null?void 0:v.type)!=="HardlinkFromIndex"||!p.isFile())&&((w||((b=A==null?void 0:A.mtime)==null?void 0:b.getTime())!==C.getTime()||((E=A==null?void 0:A.atime)==null?void 0:E.getTime())!==h.getTime())&&(e.push(()=>r.lutimesPromise(o,h,C)),w=!0),(A===null||(A.mode&511)!==(p.mode&511))&&(e.push(()=>r.chmodPromise(o,p.mode&511)),w=!0)),w}async function R7(t,e){try{return await t.lstatPromise(e)}catch{return null}}async function Y_e(t,e,r,o,a,n,u,A,p){if(a!==null&&!a.isDirectory())if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;let h=!1;a===null&&(t.push(async()=>{try{await r.mkdirPromise(o,{mode:A.mode})}catch(v){if(v.code!=="EEXIST")throw v}}),h=!0);let C=await n.readdirPromise(u),w=p.didParentExist&&!a?{...p,didParentExist:!1}:p;if(p.stableSort)for(let v of C.sort())await UR(t,e,r,r.pathUtils.join(o,v),n,n.pathUtils.join(u,v),w)&&(h=!0);else(await Promise.all(C.map(async b=>{await UR(t,e,r,r.pathUtils.join(o,b),n,n.pathUtils.join(u,b),w)}))).some(b=>b)&&(h=!0);return h}async function K_e(t,e,r,o,a,n,u,A,p,h){let C=await n.checksumFilePromise(u,{algorithm:"sha1"}),w=r.pathUtils.join(h.indexPath,C.slice(0,2),`${C}.dat`),v;(re=>(re[re.Lock=0]="Lock",re[re.Rename=1]="Rename"))(v||(v={}));let b=1,E=await R7(r,w);if(a){let _=E&&a.dev===E.dev&&a.ino===E.ino,V=(E==null?void 0:E.mtimeMs)!==W_e;if(_&&V&&h.autoRepair&&(b=0,E=null),!_)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1}let R=!E&&b===1?`${w}.${Math.floor(Math.random()*4294967296).toString(16).padStart(8,"0")}`:null,L=!1;return t.push(async()=>{if(!E&&(b===0&&await r.lockPromise(w,async()=>{let _=await n.readFilePromise(u);await r.writeFilePromise(w,_)}),b===1&&R)){let _=await n.readFilePromise(u);await r.writeFilePromise(R,_);try{await r.linkPromise(R,w)}catch(V){if(V.code==="EEXIST")L=!0,await r.unlinkPromise(R);else throw V}}a||await r.linkPromise(w,o)}),e.push(async()=>{E||await r.lutimesPromise(w,Tg,Tg),R&&!L&&await r.unlinkPromise(R)}),!1}async function V_e(t,e,r,o,a,n,u,A,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;return t.push(async()=>{let h=await n.readFilePromise(u);await r.writeFilePromise(o,h)}),!0}async function J_e(t,e,r,o,a,n,u,A,p){var h;return((h=p.linkStrategy)==null?void 0:h.type)==="HardlinkFromIndex"?K_e(t,e,r,o,a,n,u,A,p,p.linkStrategy):V_e(t,e,r,o,a,n,u,A,p)}async function z_e(t,e,r,o,a,n,u,A,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(o)),a=null;else return!1;return t.push(async()=>{await r.symlinkPromise(pD(r.pathUtils,await n.readlinkPromise(u)),o)}),!0}var Tg,W_e,_R=dt(()=>{Ca();Tg=new Date(456789e3*1e3),W_e=Tg.getTime()});function gD(t,e,r,o){let a=()=>{let n=r.shift();return typeof n>"u"?null:Object.assign(t.statSync(t.pathUtils.join(e,n)),{name:n})};return new NI(e,a,o)}var NI,T7=dt(()=>{AD();NI=class{constructor(e,r,o={}){this.path=e;this.nextDirent=r;this.opts=o;this.closed=!1}throwIfClosed(){if(this.closed)throw FR()}async*[Symbol.asyncIterator](){try{let e;for(;(e=await this.read())!==null;)yield e}finally{await this.close()}}read(e){let r=this.readSync();return typeof e<"u"?e(null,r):Promise.resolve(r)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),typeof e<"u"?e(null):Promise.resolve()}closeSync(){var e,r;this.throwIfClosed(),(r=(e=this.opts).onClose)==null||r.call(e),this.closed=!0}}});function N7(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${t}'`)}var L7,iy,O7=dt(()=>{L7=Ie("events");OR();iy=class extends L7.EventEmitter{constructor(r,o,{bigint:a=!1}={}){super();this.status="ready";this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=r,this.path=o,this.bigint=a,this.lastStats=this.stat()}static create(r,o,a){let n=new iy(r,o,a);return n.start(),n}start(){N7(this.status,"ready"),this.status="running",this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit("change",this.lastStats,this.lastStats)},3)}stop(){N7(this.status,"running"),this.status="stopped",this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit("stop")}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch{let o=this.bigint?new ny:new ry;return fD(o)}}makeInterval(r){let o=setInterval(()=>{let a=this.stat(),n=this.lastStats;LR(a,n)||(this.lastStats=a,this.emit("change",a,n))},r.interval);return r.persistent?o:o.unref()}registerChangeListener(r,o){this.addListener("change",r),this.changeListeners.set(r,this.makeInterval(o))}unregisterChangeListener(r){this.removeListener("change",r);let o=this.changeListeners.get(r);typeof o<"u"&&clearInterval(o),this.changeListeners.delete(r)}unregisterAllChangeListeners(){for(let r of this.changeListeners.keys())this.unregisterChangeListener(r)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let r of this.changeListeners.values())r.ref();return this}unref(){for(let r of this.changeListeners.values())r.unref();return this}}});function sy(t,e,r,o){let a,n,u,A;switch(typeof r){case"function":a=!1,n=!0,u=5007,A=r;break;default:({bigint:a=!1,persistent:n=!0,interval:u=5007}=r),A=o;break}let p=dD.get(t);typeof p>"u"&&dD.set(t,p=new Map);let h=p.get(e);return typeof h>"u"&&(h=iy.create(t,e,{bigint:a}),p.set(e,h)),h.registerChangeListener(A,{persistent:n,interval:u}),h}function Ng(t,e,r){let o=dD.get(t);if(typeof o>"u")return;let a=o.get(e);typeof a>"u"||(typeof r>"u"?a.unregisterAllChangeListeners():a.unregisterChangeListener(r),a.hasChangeListeners()||(a.stop(),o.delete(e)))}function Lg(t){let e=dD.get(t);if(!(typeof e>"u"))for(let r of e.keys())Ng(t,r)}var dD,HR=dt(()=>{O7();dD=new WeakMap});function X_e(t){let e=t.match(/\r?\n/g);if(e===null)return U7.EOL;let r=e.filter(a=>a===`\r |
5 | `).length,o=e.length-r;return r>o?`\r | 5 | `).length,o=e.length-r;return r>o?`\r |
6 | `:` | 6 | `:` |
7 | `}function Rg(t,e){return e.replace(/\r?\n/g,L_e(t))}var Q7,k7,pf,Hu,Tg=dt(()=>{Q7=Ie("crypto"),k7=Ie("os");LR();ya();pf=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:r=!1}={}){let o=[e];for(;o.length>0;){let a=o.shift();if((await this.lstatPromise(a)).isDirectory()){let u=await this.readdirPromise(a);if(r)for(let A of u.sort())o.push(this.pathUtils.join(a,A));else throw new Error("Not supported")}else yield a}}async checksumFilePromise(e,{algorithm:r="sha512"}={}){let o=await this.openPromise(e,"r");try{let n=Buffer.allocUnsafeSlow(65536),u=(0,Q7.createHash)(r),A=0;for(;(A=await this.readPromise(o,n,0,65536))!==0;)u.update(A===65536?n:n.slice(0,A));return u.digest("hex")}finally{await this.closePromise(o)}}async removePromise(e,{recursive:r=!0,maxRetries:o=5}={}){let a;try{a=await this.lstatPromise(e)}catch(n){if(n.code==="ENOENT")return;throw n}if(a.isDirectory()){if(r){let n=await this.readdirPromise(e);await Promise.all(n.map(u=>this.removePromise(this.pathUtils.resolve(e,u))))}for(let n=0;n<=o;n++)try{await this.rmdirPromise(e);break}catch(u){if(u.code!=="EBUSY"&&u.code!=="ENOTEMPTY")throw u;n<o&&await new Promise(A=>setTimeout(A,n*100))}}else await this.unlinkPromise(e)}removeSync(e,{recursive:r=!0}={}){let o;try{o=this.lstatSync(e)}catch(a){if(a.code==="ENOENT")return;throw a}if(o.isDirectory()){if(r)for(let a of this.readdirSync(e))this.removeSync(this.pathUtils.resolve(e,a));this.rmdirSync(e)}else this.unlinkSync(e)}async mkdirpPromise(e,{chmod:r,utimes:o}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let u=2;u<=a.length;++u){let A=a.slice(0,u).join(this.pathUtils.sep);if(!this.existsSync(A)){try{await this.mkdirPromise(A)}catch(p){if(p.code==="EEXIST")continue;throw p}if(n??(n=A),r!=null&&await this.chmodPromise(A,r),o!=null)await this.utimesPromise(A,o[0],o[1]);else{let p=await this.statPromise(this.pathUtils.dirname(A));await this.utimesPromise(A,p.atime,p.mtime)}}}return n}mkdirpSync(e,{chmod:r,utimes:o}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let u=2;u<=a.length;++u){let A=a.slice(0,u).join(this.pathUtils.sep);if(!this.existsSync(A)){try{this.mkdirSync(A)}catch(p){if(p.code==="EEXIST")continue;throw p}if(n??(n=A),r!=null&&this.chmodSync(A,r),o!=null)this.utimesSync(A,o[0],o[1]);else{let p=this.statSync(this.pathUtils.dirname(A));this.utimesSync(A,p.atime,p.mtime)}}}return n}async copyPromise(e,r,{baseFs:o=this,overwrite:a=!0,stableSort:n=!1,stableTime:u=!1,linkStrategy:A=null}={}){return await v7(this,e,o,r,{overwrite:a,stableSort:n,stableTime:u,linkStrategy:A})}copySync(e,r,{baseFs:o=this,overwrite:a=!0}={}){let n=o.lstatSync(r),u=this.existsSync(e);if(n.isDirectory()){this.mkdirpSync(e);let p=o.readdirSync(r);for(let h of p)this.copySync(this.pathUtils.join(e,h),o.pathUtils.join(r,h),{baseFs:o,overwrite:a})}else if(n.isFile()){if(!u||a){u&&this.removeSync(e);let p=o.readFileSync(r);this.writeFileSync(e,p)}}else if(n.isSymbolicLink()){if(!u||a){u&&this.removeSync(e);let p=o.readlinkSync(r);this.symlinkSync(iD(this.pathUtils,p),e)}}else throw new Error(`Unsupported file type (file: ${r}, mode: 0o${n.mode.toString(8).padStart(6,"0")})`);let A=n.mode&511;this.chmodSync(e,A)}async changeFilePromise(e,r,o={}){return Buffer.isBuffer(r)?this.changeFileBufferPromise(e,r,o):this.changeFileTextPromise(e,r,o)}async changeFileBufferPromise(e,r,{mode:o}={}){let a=Buffer.alloc(0);try{a=await this.readFilePromise(e)}catch{}Buffer.compare(a,r)!==0&&await this.writeFilePromise(e,r,{mode:o})}async changeFileTextPromise(e,r,{automaticNewlines:o,mode:a}={}){let n="";try{n=await this.readFilePromise(e,"utf8")}catch{}let u=o?Rg(n,r):r;n!==u&&await this.writeFilePromise(e,u,{mode:a})}changeFileSync(e,r,o={}){return Buffer.isBuffer(r)?this.changeFileBufferSync(e,r,o):this.changeFileTextSync(e,r,o)}changeFileBufferSync(e,r,{mode:o}={}){let a=Buffer.alloc(0);try{a=this.readFileSync(e)}catch{}Buffer.compare(a,r)!==0&&this.writeFileSync(e,r,{mode:o})}changeFileTextSync(e,r,{automaticNewlines:o=!1,mode:a}={}){let n="";try{n=this.readFileSync(e,"utf8")}catch{}let u=o?Rg(n,r):r;n!==u&&this.writeFileSync(e,u,{mode:a})}async movePromise(e,r){try{await this.renamePromise(e,r)}catch(o){if(o.code==="EXDEV")await this.copyPromise(r,e),await this.removePromise(e);else throw o}}moveSync(e,r){try{this.renameSync(e,r)}catch(o){if(o.code==="EXDEV")this.copySync(r,e),this.removeSync(e);else throw o}}async lockPromise(e,r){let o=`${e}.flock`,a=1e3/60,n=Date.now(),u=null,A=async()=>{let p;try{[p]=await this.readJsonPromise(o)}catch{return Date.now()-n<500}try{return process.kill(p,0),!0}catch{return!1}};for(;u===null;)try{u=await this.openPromise(o,"wx")}catch(p){if(p.code==="EEXIST"){if(!await A())try{await this.unlinkPromise(o);continue}catch{}if(Date.now()-n<60*1e3)await new Promise(h=>setTimeout(h,a));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${o})`)}else throw p}await this.writePromise(u,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(u),await this.unlinkPromise(o)}catch{}}}async readJsonPromise(e){let r=await this.readFilePromise(e,"utf8");try{return JSON.parse(r)}catch(o){throw o.message+=` (in ${e})`,o}}readJsonSync(e){let r=this.readFileSync(e,"utf8");try{return JSON.parse(r)}catch(o){throw o.message+=` (in ${e})`,o}}async writeJsonPromise(e,r){return await this.writeFilePromise(e,`${JSON.stringify(r,null,2)} | 7 | `}function Og(t,e){return e.replace(/\r?\n/g,X_e(t))}var M7,U7,df,qu,Mg=dt(()=>{M7=Ie("crypto"),U7=Ie("os");_R();Ca();df=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:r=!1}={}){let o=[e];for(;o.length>0;){let a=o.shift();if((await this.lstatPromise(a)).isDirectory()){let u=await this.readdirPromise(a);if(r)for(let A of u.sort())o.push(this.pathUtils.join(a,A));else throw new Error("Not supported")}else yield a}}async checksumFilePromise(e,{algorithm:r="sha512"}={}){let o=await this.openPromise(e,"r");try{let n=Buffer.allocUnsafeSlow(65536),u=(0,M7.createHash)(r),A=0;for(;(A=await this.readPromise(o,n,0,65536))!==0;)u.update(A===65536?n:n.slice(0,A));return u.digest("hex")}finally{await this.closePromise(o)}}async removePromise(e,{recursive:r=!0,maxRetries:o=5}={}){let a;try{a=await this.lstatPromise(e)}catch(n){if(n.code==="ENOENT")return;throw n}if(a.isDirectory()){if(r){let n=await this.readdirPromise(e);await Promise.all(n.map(u=>this.removePromise(this.pathUtils.resolve(e,u))))}for(let n=0;n<=o;n++)try{await this.rmdirPromise(e);break}catch(u){if(u.code!=="EBUSY"&&u.code!=="ENOTEMPTY")throw u;n<o&&await new Promise(A=>setTimeout(A,n*100))}}else await this.unlinkPromise(e)}removeSync(e,{recursive:r=!0}={}){let o;try{o=this.lstatSync(e)}catch(a){if(a.code==="ENOENT")return;throw a}if(o.isDirectory()){if(r)for(let a of this.readdirSync(e))this.removeSync(this.pathUtils.resolve(e,a));this.rmdirSync(e)}else this.unlinkSync(e)}async mkdirpPromise(e,{chmod:r,utimes:o}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let u=2;u<=a.length;++u){let A=a.slice(0,u).join(this.pathUtils.sep);if(!this.existsSync(A)){try{await this.mkdirPromise(A)}catch(p){if(p.code==="EEXIST")continue;throw p}if(n??(n=A),r!=null&&await this.chmodPromise(A,r),o!=null)await this.utimesPromise(A,o[0],o[1]);else{let p=await this.statPromise(this.pathUtils.dirname(A));await this.utimesPromise(A,p.atime,p.mtime)}}}return n}mkdirpSync(e,{chmod:r,utimes:o}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let u=2;u<=a.length;++u){let A=a.slice(0,u).join(this.pathUtils.sep);if(!this.existsSync(A)){try{this.mkdirSync(A)}catch(p){if(p.code==="EEXIST")continue;throw p}if(n??(n=A),r!=null&&this.chmodSync(A,r),o!=null)this.utimesSync(A,o[0],o[1]);else{let p=this.statSync(this.pathUtils.dirname(A));this.utimesSync(A,p.atime,p.mtime)}}}return n}async copyPromise(e,r,{baseFs:o=this,overwrite:a=!0,stableSort:n=!1,stableTime:u=!1,linkStrategy:A=null}={}){return await F7(this,e,o,r,{overwrite:a,stableSort:n,stableTime:u,linkStrategy:A})}copySync(e,r,{baseFs:o=this,overwrite:a=!0}={}){let n=o.lstatSync(r),u=this.existsSync(e);if(n.isDirectory()){this.mkdirpSync(e);let p=o.readdirSync(r);for(let h of p)this.copySync(this.pathUtils.join(e,h),o.pathUtils.join(r,h),{baseFs:o,overwrite:a})}else if(n.isFile()){if(!u||a){u&&this.removeSync(e);let p=o.readFileSync(r);this.writeFileSync(e,p)}}else if(n.isSymbolicLink()){if(!u||a){u&&this.removeSync(e);let p=o.readlinkSync(r);this.symlinkSync(pD(this.pathUtils,p),e)}}else throw new Error(`Unsupported file type (file: ${r}, mode: 0o${n.mode.toString(8).padStart(6,"0")})`);let A=n.mode&511;this.chmodSync(e,A)}async changeFilePromise(e,r,o={}){return Buffer.isBuffer(r)?this.changeFileBufferPromise(e,r,o):this.changeFileTextPromise(e,r,o)}async changeFileBufferPromise(e,r,{mode:o}={}){let a=Buffer.alloc(0);try{a=await this.readFilePromise(e)}catch{}Buffer.compare(a,r)!==0&&await this.writeFilePromise(e,r,{mode:o})}async changeFileTextPromise(e,r,{automaticNewlines:o,mode:a}={}){let n="";try{n=await this.readFilePromise(e,"utf8")}catch{}let u=o?Og(n,r):r;n!==u&&await this.writeFilePromise(e,u,{mode:a})}changeFileSync(e,r,o={}){return Buffer.isBuffer(r)?this.changeFileBufferSync(e,r,o):this.changeFileTextSync(e,r,o)}changeFileBufferSync(e,r,{mode:o}={}){let a=Buffer.alloc(0);try{a=this.readFileSync(e)}catch{}Buffer.compare(a,r)!==0&&this.writeFileSync(e,r,{mode:o})}changeFileTextSync(e,r,{automaticNewlines:o=!1,mode:a}={}){let n="";try{n=this.readFileSync(e,"utf8")}catch{}let u=o?Og(n,r):r;n!==u&&this.writeFileSync(e,u,{mode:a})}async movePromise(e,r){try{await this.renamePromise(e,r)}catch(o){if(o.code==="EXDEV")await this.copyPromise(r,e),await this.removePromise(e);else throw o}}moveSync(e,r){try{this.renameSync(e,r)}catch(o){if(o.code==="EXDEV")this.copySync(r,e),this.removeSync(e);else throw o}}async lockPromise(e,r){let o=`${e}.flock`,a=1e3/60,n=Date.now(),u=null,A=async()=>{let p;try{[p]=await this.readJsonPromise(o)}catch{return Date.now()-n<500}try{return process.kill(p,0),!0}catch{return!1}};for(;u===null;)try{u=await this.openPromise(o,"wx")}catch(p){if(p.code==="EEXIST"){if(!await A())try{await this.unlinkPromise(o);continue}catch{}if(Date.now()-n<60*1e3)await new Promise(h=>setTimeout(h,a));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${o})`)}else throw p}await this.writePromise(u,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(u),await this.unlinkPromise(o)}catch{}}}async readJsonPromise(e){let r=await this.readFilePromise(e,"utf8");try{return JSON.parse(r)}catch(o){throw o.message+=` (in ${e})`,o}}readJsonSync(e){let r=this.readFileSync(e,"utf8");try{return JSON.parse(r)}catch(o){throw o.message+=` (in ${e})`,o}}async writeJsonPromise(e,r){return await this.writeFilePromise(e,`${JSON.stringify(r,null,2)} |
8 | `)}writeJsonSync(e,r){return this.writeFileSync(e,`${JSON.stringify(r,null,2)} | 8 | `)}writeJsonSync(e,r){return this.writeFileSync(e,`${JSON.stringify(r,null,2)} |
9 | `)}async preserveTimePromise(e,r){let o=await this.lstatPromise(e),a=await r();typeof a<"u"&&(e=a),await this.lutimesPromise(e,o.atime,o.mtime)}async preserveTimeSync(e,r){let o=this.lstatSync(e),a=r();typeof a<"u"&&(e=a),this.lutimesSync(e,o.atime,o.mtime)}},Hu=class extends pf{constructor(){super(V)}}});var vs,hf=dt(()=>{Tg();vs=class extends pf{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,r,o){return this.baseFs.openPromise(this.mapToBase(e),r,o)}openSync(e,r,o){return this.baseFs.openSync(this.mapToBase(e),r,o)}async opendirPromise(e,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),r),{path:e})}opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),r),{path:e})}async readPromise(e,r,o,a,n){return await this.baseFs.readPromise(e,r,o,a,n)}readSync(e,r,o,a,n){return this.baseFs.readSync(e,r,o,a,n)}async writePromise(e,r,o,a,n){return typeof r=="string"?await this.baseFs.writePromise(e,r,o):await this.baseFs.writePromise(e,r,o,a,n)}writeSync(e,r,o,a,n){return typeof r=="string"?this.baseFs.writeSync(e,r,o):this.baseFs.writeSync(e,r,o,a,n)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,r)}createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,r)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase(e),r)}async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}fstatSync(e,r){return this.baseFs.fstatSync(e,r)}lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}async fchmodPromise(e,r){return this.baseFs.fchmodPromise(e,r)}fchmodSync(e,r){return this.baseFs.fchmodSync(e,r)}async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e),r)}chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}async fchownPromise(e,r,o){return this.baseFs.fchownPromise(e,r,o)}fchownSync(e,r,o){return this.baseFs.fchownSync(e,r,o)}async chownPromise(e,r,o){return this.baseFs.chownPromise(this.mapToBase(e),r,o)}chownSync(e,r,o){return this.baseFs.chownSync(this.mapToBase(e),r,o)}async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(r))}renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(r))}async copyFilePromise(e,r,o=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(r),o)}copyFileSync(e,r,o=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(r),o)}async appendFilePromise(e,r,o){return this.baseFs.appendFilePromise(this.fsMapToBase(e),r,o)}appendFileSync(e,r,o){return this.baseFs.appendFileSync(this.fsMapToBase(e),r,o)}async writeFilePromise(e,r,o){return this.baseFs.writeFilePromise(this.fsMapToBase(e),r,o)}writeFileSync(e,r,o){return this.baseFs.writeFileSync(this.fsMapToBase(e),r,o)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,r,o){return this.baseFs.utimesPromise(this.mapToBase(e),r,o)}utimesSync(e,r,o){return this.baseFs.utimesSync(this.mapToBase(e),r,o)}async lutimesPromise(e,r,o){return this.baseFs.lutimesPromise(this.mapToBase(e),r,o)}lutimesSync(e,r,o){return this.baseFs.lutimesSync(this.mapToBase(e),r,o)}async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e),r)}mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e),r)}rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(r))}linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(r))}async symlinkPromise(e,r,o){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),a,o);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),u=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkPromise(u,a,o)}symlinkSync(e,r,o){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),a,o);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),u=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkSync(u,a,o)}async readFilePromise(e,r){return this.baseFs.readFilePromise(this.fsMapToBase(e),r)}readFileSync(e,r){return this.baseFs.readFileSync(this.fsMapToBase(e),r)}async readdirPromise(e,r){return this.baseFs.readdirPromise(this.mapToBase(e),r)}readdirSync(e,r){return this.baseFs.readdirSync(this.mapToBase(e),r)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,r){return this.baseFs.truncatePromise(this.mapToBase(e),r)}truncateSync(e,r){return this.baseFs.truncateSync(this.mapToBase(e),r)}async ftruncatePromise(e,r){return this.baseFs.ftruncatePromise(e,r)}ftruncateSync(e,r){return this.baseFs.ftruncateSync(e,r)}watch(e,r,o){return this.baseFs.watch(this.mapToBase(e),r,o)}watchFile(e,r,o){return this.baseFs.watchFile(this.mapToBase(e),r,o)}unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}fsMapToBase(e){return typeof e=="number"?e:this.mapToBase(e)}}});var qu,F7=dt(()=>{hf();qu=class extends vs{constructor(r,{baseFs:o,pathUtils:a}){super(a);this.target=r,this.baseFs=o}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(r){return r}mapToBase(r){return r}}});var R7,xn,Ng=dt(()=>{R7=tt(Ie("fs"));Tg();ya();xn=class extends Hu{constructor(r=R7.default){super();this.realFs=r}getExtractHint(){return!1}getRealPath(){return wt.root}resolve(r){return V.resolve(r)}async openPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.open(Ae.fromPortablePath(r),o,a,this.makeCallback(n,u))})}openSync(r,o,a){return this.realFs.openSync(Ae.fromPortablePath(r),o,a)}async opendirPromise(r,o){return await new Promise((a,n)=>{typeof o<"u"?this.realFs.opendir(Ae.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.opendir(Ae.fromPortablePath(r),this.makeCallback(a,n))}).then(a=>Object.defineProperty(a,"path",{value:r,configurable:!0,writable:!0}))}opendirSync(r,o){let a=typeof o<"u"?this.realFs.opendirSync(Ae.fromPortablePath(r),o):this.realFs.opendirSync(Ae.fromPortablePath(r));return Object.defineProperty(a,"path",{value:r,configurable:!0,writable:!0})}async readPromise(r,o,a=0,n=0,u=-1){return await new Promise((A,p)=>{this.realFs.read(r,o,a,n,u,(h,C)=>{h?p(h):A(C)})})}readSync(r,o,a,n,u){return this.realFs.readSync(r,o,a,n,u)}async writePromise(r,o,a,n,u){return await new Promise((A,p)=>typeof o=="string"?this.realFs.write(r,o,a,this.makeCallback(A,p)):this.realFs.write(r,o,a,n,u,this.makeCallback(A,p)))}writeSync(r,o,a,n,u){return typeof o=="string"?this.realFs.writeSync(r,o,a):this.realFs.writeSync(r,o,a,n,u)}async closePromise(r){await new Promise((o,a)=>{this.realFs.close(r,this.makeCallback(o,a))})}closeSync(r){this.realFs.closeSync(r)}createReadStream(r,o){let a=r!==null?Ae.fromPortablePath(r):r;return this.realFs.createReadStream(a,o)}createWriteStream(r,o){let a=r!==null?Ae.fromPortablePath(r):r;return this.realFs.createWriteStream(a,o)}async realpathPromise(r){return await new Promise((o,a)=>{this.realFs.realpath(Ae.fromPortablePath(r),{},this.makeCallback(o,a))}).then(o=>Ae.toPortablePath(o))}realpathSync(r){return Ae.toPortablePath(this.realFs.realpathSync(Ae.fromPortablePath(r),{}))}async existsPromise(r){return await new Promise(o=>{this.realFs.exists(Ae.fromPortablePath(r),o)})}accessSync(r,o){return this.realFs.accessSync(Ae.fromPortablePath(r),o)}async accessPromise(r,o){return await new Promise((a,n)=>{this.realFs.access(Ae.fromPortablePath(r),o,this.makeCallback(a,n))})}existsSync(r){return this.realFs.existsSync(Ae.fromPortablePath(r))}async statPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.stat(Ae.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.stat(Ae.fromPortablePath(r),this.makeCallback(a,n))})}statSync(r,o){return o?this.realFs.statSync(Ae.fromPortablePath(r),o):this.realFs.statSync(Ae.fromPortablePath(r))}async fstatPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.fstat(r,o,this.makeCallback(a,n)):this.realFs.fstat(r,this.makeCallback(a,n))})}fstatSync(r,o){return o?this.realFs.fstatSync(r,o):this.realFs.fstatSync(r)}async lstatPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.lstat(Ae.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.lstat(Ae.fromPortablePath(r),this.makeCallback(a,n))})}lstatSync(r,o){return o?this.realFs.lstatSync(Ae.fromPortablePath(r),o):this.realFs.lstatSync(Ae.fromPortablePath(r))}async fchmodPromise(r,o){return await new Promise((a,n)=>{this.realFs.fchmod(r,o,this.makeCallback(a,n))})}fchmodSync(r,o){return this.realFs.fchmodSync(r,o)}async chmodPromise(r,o){return await new Promise((a,n)=>{this.realFs.chmod(Ae.fromPortablePath(r),o,this.makeCallback(a,n))})}chmodSync(r,o){return this.realFs.chmodSync(Ae.fromPortablePath(r),o)}async fchownPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.fchown(r,o,a,this.makeCallback(n,u))})}fchownSync(r,o,a){return this.realFs.fchownSync(r,o,a)}async chownPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.chown(Ae.fromPortablePath(r),o,a,this.makeCallback(n,u))})}chownSync(r,o,a){return this.realFs.chownSync(Ae.fromPortablePath(r),o,a)}async renamePromise(r,o){return await new Promise((a,n)=>{this.realFs.rename(Ae.fromPortablePath(r),Ae.fromPortablePath(o),this.makeCallback(a,n))})}renameSync(r,o){return this.realFs.renameSync(Ae.fromPortablePath(r),Ae.fromPortablePath(o))}async copyFilePromise(r,o,a=0){return await new Promise((n,u)=>{this.realFs.copyFile(Ae.fromPortablePath(r),Ae.fromPortablePath(o),a,this.makeCallback(n,u))})}copyFileSync(r,o,a=0){return this.realFs.copyFileSync(Ae.fromPortablePath(r),Ae.fromPortablePath(o),a)}async appendFilePromise(r,o,a){return await new Promise((n,u)=>{let A=typeof r=="string"?Ae.fromPortablePath(r):r;a?this.realFs.appendFile(A,o,a,this.makeCallback(n,u)):this.realFs.appendFile(A,o,this.makeCallback(n,u))})}appendFileSync(r,o,a){let n=typeof r=="string"?Ae.fromPortablePath(r):r;a?this.realFs.appendFileSync(n,o,a):this.realFs.appendFileSync(n,o)}async writeFilePromise(r,o,a){return await new Promise((n,u)=>{let A=typeof r=="string"?Ae.fromPortablePath(r):r;a?this.realFs.writeFile(A,o,a,this.makeCallback(n,u)):this.realFs.writeFile(A,o,this.makeCallback(n,u))})}writeFileSync(r,o,a){let n=typeof r=="string"?Ae.fromPortablePath(r):r;a?this.realFs.writeFileSync(n,o,a):this.realFs.writeFileSync(n,o)}async unlinkPromise(r){return await new Promise((o,a)=>{this.realFs.unlink(Ae.fromPortablePath(r),this.makeCallback(o,a))})}unlinkSync(r){return this.realFs.unlinkSync(Ae.fromPortablePath(r))}async utimesPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.utimes(Ae.fromPortablePath(r),o,a,this.makeCallback(n,u))})}utimesSync(r,o,a){this.realFs.utimesSync(Ae.fromPortablePath(r),o,a)}async lutimesPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.lutimes(Ae.fromPortablePath(r),o,a,this.makeCallback(n,u))})}lutimesSync(r,o,a){this.realFs.lutimesSync(Ae.fromPortablePath(r),o,a)}async mkdirPromise(r,o){return await new Promise((a,n)=>{this.realFs.mkdir(Ae.fromPortablePath(r),o,this.makeCallback(a,n))})}mkdirSync(r,o){return this.realFs.mkdirSync(Ae.fromPortablePath(r),o)}async rmdirPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.rmdir(Ae.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.rmdir(Ae.fromPortablePath(r),this.makeCallback(a,n))})}rmdirSync(r,o){return this.realFs.rmdirSync(Ae.fromPortablePath(r),o)}async linkPromise(r,o){return await new Promise((a,n)=>{this.realFs.link(Ae.fromPortablePath(r),Ae.fromPortablePath(o),this.makeCallback(a,n))})}linkSync(r,o){return this.realFs.linkSync(Ae.fromPortablePath(r),Ae.fromPortablePath(o))}async symlinkPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.symlink(Ae.fromPortablePath(r.replace(/\/+$/,"")),Ae.fromPortablePath(o),a,this.makeCallback(n,u))})}symlinkSync(r,o,a){return this.realFs.symlinkSync(Ae.fromPortablePath(r.replace(/\/+$/,"")),Ae.fromPortablePath(o),a)}async readFilePromise(r,o){return await new Promise((a,n)=>{let u=typeof r=="string"?Ae.fromPortablePath(r):r;this.realFs.readFile(u,o,this.makeCallback(a,n))})}readFileSync(r,o){let a=typeof r=="string"?Ae.fromPortablePath(r):r;return this.realFs.readFileSync(a,o)}async readdirPromise(r,o){return await new Promise((a,n)=>{o!=null&&o.withFileTypes?this.realFs.readdir(Ae.fromPortablePath(r),{withFileTypes:!0},this.makeCallback(a,n)):this.realFs.readdir(Ae.fromPortablePath(r),this.makeCallback(u=>a(u),n))})}readdirSync(r,o){return o!=null&&o.withFileTypes?this.realFs.readdirSync(Ae.fromPortablePath(r),{withFileTypes:!0}):this.realFs.readdirSync(Ae.fromPortablePath(r))}async readlinkPromise(r){return await new Promise((o,a)=>{this.realFs.readlink(Ae.fromPortablePath(r),this.makeCallback(o,a))}).then(o=>Ae.toPortablePath(o))}readlinkSync(r){return Ae.toPortablePath(this.realFs.readlinkSync(Ae.fromPortablePath(r)))}async truncatePromise(r,o){return await new Promise((a,n)=>{this.realFs.truncate(Ae.fromPortablePath(r),o,this.makeCallback(a,n))})}truncateSync(r,o){return this.realFs.truncateSync(Ae.fromPortablePath(r),o)}async ftruncatePromise(r,o){return await new Promise((a,n)=>{this.realFs.ftruncate(r,o,this.makeCallback(a,n))})}ftruncateSync(r,o){return this.realFs.ftruncateSync(r,o)}watch(r,o,a){return this.realFs.watch(Ae.fromPortablePath(r),o,a)}watchFile(r,o,a){return this.realFs.watchFile(Ae.fromPortablePath(r),o,a)}unwatchFile(r,o){return this.realFs.unwatchFile(Ae.fromPortablePath(r),o)}makeCallback(r,o){return(a,n)=>{a?o(a):r(n)}}}});var An,T7=dt(()=>{Ng();hf();ya();An=class extends vs{constructor(r,{baseFs:o=new xn}={}){super(V);this.target=this.pathUtils.normalize(r),this.baseFs=o}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(r){return this.pathUtils.isAbsolute(r)?V.normalize(r):this.baseFs.resolve(V.join(this.target,r))}mapFromBase(r){return r}mapToBase(r){return this.pathUtils.isAbsolute(r)?r:this.pathUtils.join(this.target,r)}}});var N7,ju,L7=dt(()=>{Ng();hf();ya();N7=wt.root,ju=class extends vs{constructor(r,{baseFs:o=new xn}={}){super(V);this.target=this.pathUtils.resolve(wt.root,r),this.baseFs=o}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(wt.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(r){let o=this.pathUtils.normalize(r);if(this.pathUtils.isAbsolute(r))return this.pathUtils.resolve(this.target,this.pathUtils.relative(N7,r));if(o.match(/^\.\.\/?/))throw new Error(`Resolving this path (${r}) would escape the jail`);return this.pathUtils.resolve(this.target,r)}mapFromBase(r){return this.pathUtils.resolve(N7,this.pathUtils.relative(this.target,r))}}});var ty,O7=dt(()=>{hf();ty=class extends vs{constructor(r,o){super(o);this.instance=null;this.factory=r}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(r){this.instance=r}mapFromBase(r){return r}mapToBase(r){return r}}});var Lg,Ea,Mp,M7=dt(()=>{Lg=Ie("fs");Tg();Ng();MR();rD();ya();Ea=4278190080,Mp=class extends Hu{constructor({baseFs:r=new xn,filter:o=null,magicByte:a=42,maxOpenFiles:n=1/0,useCache:u=!0,maxAge:A=5e3,typeCheck:p=Lg.constants.S_IFREG,getMountPoint:h,factoryPromise:C,factorySync:w}){if(Math.floor(a)!==a||!(a>1&&a<=127))throw new Error("The magic byte must be set to a round value between 1 and 127 included");super();this.fdMap=new Map;this.nextFd=3;this.isMount=new Set;this.notMount=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.baseFs=r,this.mountInstances=u?new Map:null,this.factoryPromise=C,this.factorySync=w,this.filter=o,this.getMountPoint=h,this.magic=a<<24,this.maxAge=A,this.maxOpenFiles=n,this.typeCheck=p}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){var r;if(Fg(this),this.mountInstances)for(let[o,{childFs:a}]of this.mountInstances.entries())(r=a.saveAndClose)==null||r.call(a),this.mountInstances.delete(o)}discardAndClose(){var r;if(Fg(this),this.mountInstances)for(let[o,{childFs:a}]of this.mountInstances.entries())(r=a.discardAndClose)==null||r.call(a),this.mountInstances.delete(o)}resolve(r){return this.baseFs.resolve(r)}remapFd(r,o){let a=this.nextFd++|this.magic;return this.fdMap.set(a,[r,o]),a}async openPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.openPromise(r,o,a),async(n,{subPath:u})=>this.remapFd(n,await n.openPromise(u,o,a)))}openSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.openSync(r,o,a),(n,{subPath:u})=>this.remapFd(n,n.openSync(u,o,a)))}async opendirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.opendirPromise(r,o),async(a,{subPath:n})=>await a.opendirPromise(n,o),{requireSubpath:!1})}opendirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.opendirSync(r,o),(a,{subPath:n})=>a.opendirSync(n,o),{requireSubpath:!1})}async readPromise(r,o,a,n,u){if((r&Ea)!==this.magic)return await this.baseFs.readPromise(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>"u")throw Co("read");let[p,h]=A;return await p.readPromise(h,o,a,n,u)}readSync(r,o,a,n,u){if((r&Ea)!==this.magic)return this.baseFs.readSync(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>"u")throw Co("readSync");let[p,h]=A;return p.readSync(h,o,a,n,u)}async writePromise(r,o,a,n,u){if((r&Ea)!==this.magic)return typeof o=="string"?await this.baseFs.writePromise(r,o,a):await this.baseFs.writePromise(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>"u")throw Co("write");let[p,h]=A;return typeof o=="string"?await p.writePromise(h,o,a):await p.writePromise(h,o,a,n,u)}writeSync(r,o,a,n,u){if((r&Ea)!==this.magic)return typeof o=="string"?this.baseFs.writeSync(r,o,a):this.baseFs.writeSync(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>"u")throw Co("writeSync");let[p,h]=A;return typeof o=="string"?p.writeSync(h,o,a):p.writeSync(h,o,a,n,u)}async closePromise(r){if((r&Ea)!==this.magic)return await this.baseFs.closePromise(r);let o=this.fdMap.get(r);if(typeof o>"u")throw Co("close");this.fdMap.delete(r);let[a,n]=o;return await a.closePromise(n)}closeSync(r){if((r&Ea)!==this.magic)return this.baseFs.closeSync(r);let o=this.fdMap.get(r);if(typeof o>"u")throw Co("closeSync");this.fdMap.delete(r);let[a,n]=o;return a.closeSync(n)}createReadStream(r,o){return r===null?this.baseFs.createReadStream(r,o):this.makeCallSync(r,()=>this.baseFs.createReadStream(r,o),(a,{archivePath:n,subPath:u})=>{let A=a.createReadStream(u,o);return A.path=Ae.fromPortablePath(this.pathUtils.join(n,u)),A})}createWriteStream(r,o){return r===null?this.baseFs.createWriteStream(r,o):this.makeCallSync(r,()=>this.baseFs.createWriteStream(r,o),(a,{subPath:n})=>a.createWriteStream(n,o))}async realpathPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.realpathPromise(r),async(o,{archivePath:a,subPath:n})=>{let u=this.realPaths.get(a);return typeof u>"u"&&(u=await this.baseFs.realpathPromise(a),this.realPaths.set(a,u)),this.pathUtils.join(u,this.pathUtils.relative(wt.root,await o.realpathPromise(n)))})}realpathSync(r){return this.makeCallSync(r,()=>this.baseFs.realpathSync(r),(o,{archivePath:a,subPath:n})=>{let u=this.realPaths.get(a);return typeof u>"u"&&(u=this.baseFs.realpathSync(a),this.realPaths.set(a,u)),this.pathUtils.join(u,this.pathUtils.relative(wt.root,o.realpathSync(n)))})}async existsPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.existsPromise(r),async(o,{subPath:a})=>await o.existsPromise(a))}existsSync(r){return this.makeCallSync(r,()=>this.baseFs.existsSync(r),(o,{subPath:a})=>o.existsSync(a))}async accessPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.accessPromise(r,o),async(a,{subPath:n})=>await a.accessPromise(n,o))}accessSync(r,o){return this.makeCallSync(r,()=>this.baseFs.accessSync(r,o),(a,{subPath:n})=>a.accessSync(n,o))}async statPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.statPromise(r,o),async(a,{subPath:n})=>await a.statPromise(n,o))}statSync(r,o){return this.makeCallSync(r,()=>this.baseFs.statSync(r,o),(a,{subPath:n})=>a.statSync(n,o))}async fstatPromise(r,o){if((r&Ea)!==this.magic)return this.baseFs.fstatPromise(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Co("fstat");let[n,u]=a;return n.fstatPromise(u,o)}fstatSync(r,o){if((r&Ea)!==this.magic)return this.baseFs.fstatSync(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Co("fstatSync");let[n,u]=a;return n.fstatSync(u,o)}async lstatPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.lstatPromise(r,o),async(a,{subPath:n})=>await a.lstatPromise(n,o))}lstatSync(r,o){return this.makeCallSync(r,()=>this.baseFs.lstatSync(r,o),(a,{subPath:n})=>a.lstatSync(n,o))}async fchmodPromise(r,o){if((r&Ea)!==this.magic)return this.baseFs.fchmodPromise(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Co("fchmod");let[n,u]=a;return n.fchmodPromise(u,o)}fchmodSync(r,o){if((r&Ea)!==this.magic)return this.baseFs.fchmodSync(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Co("fchmodSync");let[n,u]=a;return n.fchmodSync(u,o)}async chmodPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.chmodPromise(r,o),async(a,{subPath:n})=>await a.chmodPromise(n,o))}chmodSync(r,o){return this.makeCallSync(r,()=>this.baseFs.chmodSync(r,o),(a,{subPath:n})=>a.chmodSync(n,o))}async fchownPromise(r,o,a){if((r&Ea)!==this.magic)return this.baseFs.fchownPromise(r,o,a);let n=this.fdMap.get(r);if(typeof n>"u")throw Co("fchown");let[u,A]=n;return u.fchownPromise(A,o,a)}fchownSync(r,o,a){if((r&Ea)!==this.magic)return this.baseFs.fchownSync(r,o,a);let n=this.fdMap.get(r);if(typeof n>"u")throw Co("fchownSync");let[u,A]=n;return u.fchownSync(A,o,a)}async chownPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.chownPromise(r,o,a),async(n,{subPath:u})=>await n.chownPromise(u,o,a))}chownSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.chownSync(r,o,a),(n,{subPath:u})=>n.chownSync(u,o,a))}async renamePromise(r,o){return await this.makeCallPromise(r,async()=>await this.makeCallPromise(o,async()=>await this.baseFs.renamePromise(r,o),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),async(a,{subPath:n})=>await this.makeCallPromise(o,async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},async(u,{subPath:A})=>{if(a!==u)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return await a.renamePromise(n,A)}))}renameSync(r,o){return this.makeCallSync(r,()=>this.makeCallSync(o,()=>this.baseFs.renameSync(r,o),()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),(a,{subPath:n})=>this.makeCallSync(o,()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},(u,{subPath:A})=>{if(a!==u)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return a.renameSync(n,A)}))}async copyFilePromise(r,o,a=0){let n=async(u,A,p,h)=>{if((a&Lg.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${A}' -> ${h}'`),{code:"EXDEV"});if(a&Lg.constants.COPYFILE_EXCL&&await this.existsPromise(A))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${A}' -> '${h}'`),{code:"EEXIST"});let C;try{C=await u.readFilePromise(A)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${A}' -> '${h}'`),{code:"EINVAL"})}await p.writeFilePromise(h,C)};return await this.makeCallPromise(r,async()=>await this.makeCallPromise(o,async()=>await this.baseFs.copyFilePromise(r,o,a),async(u,{subPath:A})=>await n(this.baseFs,r,u,A)),async(u,{subPath:A})=>await this.makeCallPromise(o,async()=>await n(u,A,this.baseFs,o),async(p,{subPath:h})=>u!==p?await n(u,A,p,h):await u.copyFilePromise(A,h,a)))}copyFileSync(r,o,a=0){let n=(u,A,p,h)=>{if((a&Lg.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${A}' -> ${h}'`),{code:"EXDEV"});if(a&Lg.constants.COPYFILE_EXCL&&this.existsSync(A))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${A}' -> '${h}'`),{code:"EEXIST"});let C;try{C=u.readFileSync(A)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${A}' -> '${h}'`),{code:"EINVAL"})}p.writeFileSync(h,C)};return this.makeCallSync(r,()=>this.makeCallSync(o,()=>this.baseFs.copyFileSync(r,o,a),(u,{subPath:A})=>n(this.baseFs,r,u,A)),(u,{subPath:A})=>this.makeCallSync(o,()=>n(u,A,this.baseFs,o),(p,{subPath:h})=>u!==p?n(u,A,p,h):u.copyFileSync(A,h,a)))}async appendFilePromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.appendFilePromise(r,o,a),async(n,{subPath:u})=>await n.appendFilePromise(u,o,a))}appendFileSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.appendFileSync(r,o,a),(n,{subPath:u})=>n.appendFileSync(u,o,a))}async writeFilePromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.writeFilePromise(r,o,a),async(n,{subPath:u})=>await n.writeFilePromise(u,o,a))}writeFileSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.writeFileSync(r,o,a),(n,{subPath:u})=>n.writeFileSync(u,o,a))}async unlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.unlinkPromise(r),async(o,{subPath:a})=>await o.unlinkPromise(a))}unlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.unlinkSync(r),(o,{subPath:a})=>o.unlinkSync(a))}async utimesPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.utimesPromise(r,o,a),async(n,{subPath:u})=>await n.utimesPromise(u,o,a))}utimesSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.utimesSync(r,o,a),(n,{subPath:u})=>n.utimesSync(u,o,a))}async lutimesPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.lutimesPromise(r,o,a),async(n,{subPath:u})=>await n.lutimesPromise(u,o,a))}lutimesSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.lutimesSync(r,o,a),(n,{subPath:u})=>n.lutimesSync(u,o,a))}async mkdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.mkdirPromise(r,o),async(a,{subPath:n})=>await a.mkdirPromise(n,o))}mkdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.mkdirSync(r,o),(a,{subPath:n})=>a.mkdirSync(n,o))}async rmdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.rmdirPromise(r,o),async(a,{subPath:n})=>await a.rmdirPromise(n,o))}rmdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.rmdirSync(r,o),(a,{subPath:n})=>a.rmdirSync(n,o))}async linkPromise(r,o){return await this.makeCallPromise(o,async()=>await this.baseFs.linkPromise(r,o),async(a,{subPath:n})=>await a.linkPromise(r,n))}linkSync(r,o){return this.makeCallSync(o,()=>this.baseFs.linkSync(r,o),(a,{subPath:n})=>a.linkSync(r,n))}async symlinkPromise(r,o,a){return await this.makeCallPromise(o,async()=>await this.baseFs.symlinkPromise(r,o,a),async(n,{subPath:u})=>await n.symlinkPromise(r,u))}symlinkSync(r,o,a){return this.makeCallSync(o,()=>this.baseFs.symlinkSync(r,o,a),(n,{subPath:u})=>n.symlinkSync(r,u))}async readFilePromise(r,o){return this.makeCallPromise(r,async()=>await this.baseFs.readFilePromise(r,o),async(a,{subPath:n})=>await a.readFilePromise(n,o))}readFileSync(r,o){return this.makeCallSync(r,()=>this.baseFs.readFileSync(r,o),(a,{subPath:n})=>a.readFileSync(n,o))}async readdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.readdirPromise(r,o),async(a,{subPath:n})=>await a.readdirPromise(n,o),{requireSubpath:!1})}readdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.readdirSync(r,o),(a,{subPath:n})=>a.readdirSync(n,o),{requireSubpath:!1})}async readlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.readlinkPromise(r),async(o,{subPath:a})=>await o.readlinkPromise(a))}readlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.readlinkSync(r),(o,{subPath:a})=>o.readlinkSync(a))}async truncatePromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.truncatePromise(r,o),async(a,{subPath:n})=>await a.truncatePromise(n,o))}truncateSync(r,o){return this.makeCallSync(r,()=>this.baseFs.truncateSync(r,o),(a,{subPath:n})=>a.truncateSync(n,o))}async ftruncatePromise(r,o){if((r&Ea)!==this.magic)return this.baseFs.ftruncatePromise(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Co("ftruncate");let[n,u]=a;return n.ftruncatePromise(u,o)}ftruncateSync(r,o){if((r&Ea)!==this.magic)return this.baseFs.ftruncateSync(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Co("ftruncateSync");let[n,u]=a;return n.ftruncateSync(u,o)}watch(r,o,a){return this.makeCallSync(r,()=>this.baseFs.watch(r,o,a),(n,{subPath:u})=>n.watch(u,o,a))}watchFile(r,o,a){return this.makeCallSync(r,()=>this.baseFs.watchFile(r,o,a),()=>ey(this,r,o,a))}unwatchFile(r,o){return this.makeCallSync(r,()=>this.baseFs.unwatchFile(r,o),()=>kg(this,r,o))}async makeCallPromise(r,o,a,{requireSubpath:n=!0}={}){if(typeof r!="string")return await o();let u=this.resolve(r),A=this.findMount(u);return A?n&&A.subPath==="/"?await o():await this.getMountPromise(A.archivePath,async p=>await a(p,A)):await o()}makeCallSync(r,o,a,{requireSubpath:n=!0}={}){if(typeof r!="string")return o();let u=this.resolve(r),A=this.findMount(u);return!A||n&&A.subPath==="/"?o():this.getMountSync(A.archivePath,p=>a(p,A))}findMount(r){if(this.filter&&!this.filter.test(r))return null;let o="";for(;;){let a=r.substring(o.length),n=this.getMountPoint(a,o);if(!n)return null;if(o=this.pathUtils.join(o,n),!this.isMount.has(o)){if(this.notMount.has(o))continue;try{if(this.typeCheck!==null&&(this.baseFs.lstatSync(o).mode&Lg.constants.S_IFMT)!==this.typeCheck){this.notMount.add(o);continue}}catch{return null}this.isMount.add(o)}return{archivePath:o,subPath:this.pathUtils.join(wt.root,r.substring(o.length))}}}limitOpenFiles(r){var u,A,p;if(this.mountInstances===null)return;let o=Date.now(),a=o+this.maxAge,n=r===null?0:this.mountInstances.size-r;for(let[h,{childFs:C,expiresAt:w,refCount:v}]of this.mountInstances.entries())if(!(v!==0||((u=C.hasOpenFileHandles)==null?void 0:u.call(C)))){if(o>=w){(A=C.saveAndClose)==null||A.call(C),this.mountInstances.delete(h),n-=1;continue}else if(r===null||n<=0){a=w;break}(p=C.saveAndClose)==null||p.call(C),this.mountInstances.delete(h),n-=1}this.limitOpenFilesTimeout===null&&(r===null&&this.mountInstances.size>0||r!==null)&&isFinite(a)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},a-o).unref())}async getMountPromise(r,o){var a;if(this.mountInstances){let n=this.mountInstances.get(r);if(!n){let u=await this.factoryPromise(this.baseFs,r);n=this.mountInstances.get(r),n||(n={childFs:u(),expiresAt:0,refCount:0})}this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,n),n.expiresAt=Date.now()+this.maxAge,n.refCount+=1;try{return await o(n.childFs)}finally{n.refCount-=1}}else{let n=(await this.factoryPromise(this.baseFs,r))();try{return await o(n)}finally{(a=n.saveAndClose)==null||a.call(n)}}}getMountSync(r,o){var a;if(this.mountInstances){let n=this.mountInstances.get(r);return n||(n={childFs:this.factorySync(this.baseFs,r),expiresAt:0,refCount:0}),this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,n),n.expiresAt=Date.now()+this.maxAge,o(n.childFs)}else{let n=this.factorySync(this.baseFs,r);try{return o(n)}finally{(a=n.saveAndClose)==null||a.call(n)}}}}});var zt,UR,kI,U7=dt(()=>{Tg();ya();zt=()=>Object.assign(new Error("ENOSYS: unsupported filesystem access"),{code:"ENOSYS"}),UR=class extends pf{constructor(){super(V)}getExtractHint(){throw zt()}getRealPath(){throw zt()}resolve(){throw zt()}async openPromise(){throw zt()}openSync(){throw zt()}async opendirPromise(){throw zt()}opendirSync(){throw zt()}async readPromise(){throw zt()}readSync(){throw zt()}async writePromise(){throw zt()}writeSync(){throw zt()}async closePromise(){throw zt()}closeSync(){throw zt()}createWriteStream(){throw zt()}createReadStream(){throw zt()}async realpathPromise(){throw zt()}realpathSync(){throw zt()}async readdirPromise(){throw zt()}readdirSync(){throw zt()}async existsPromise(e){throw zt()}existsSync(e){throw zt()}async accessPromise(){throw zt()}accessSync(){throw zt()}async statPromise(){throw zt()}statSync(){throw zt()}async fstatPromise(e){throw zt()}fstatSync(e){throw zt()}async lstatPromise(e){throw zt()}lstatSync(e){throw zt()}async fchmodPromise(){throw zt()}fchmodSync(){throw zt()}async chmodPromise(){throw zt()}chmodSync(){throw zt()}async fchownPromise(){throw zt()}fchownSync(){throw zt()}async chownPromise(){throw zt()}chownSync(){throw zt()}async mkdirPromise(){throw zt()}mkdirSync(){throw zt()}async rmdirPromise(){throw zt()}rmdirSync(){throw zt()}async linkPromise(){throw zt()}linkSync(){throw zt()}async symlinkPromise(){throw zt()}symlinkSync(){throw zt()}async renamePromise(){throw zt()}renameSync(){throw zt()}async copyFilePromise(){throw zt()}copyFileSync(){throw zt()}async appendFilePromise(){throw zt()}appendFileSync(){throw zt()}async writeFilePromise(){throw zt()}writeFileSync(){throw zt()}async unlinkPromise(){throw zt()}unlinkSync(){throw zt()}async utimesPromise(){throw zt()}utimesSync(){throw zt()}async lutimesPromise(){throw zt()}lutimesSync(){throw zt()}async readFilePromise(){throw zt()}readFileSync(){throw zt()}async readlinkPromise(){throw zt()}readlinkSync(){throw zt()}async truncatePromise(){throw zt()}truncateSync(){throw zt()}async ftruncatePromise(e,r){throw zt()}ftruncateSync(e,r){throw zt()}watch(){throw zt()}watchFile(){throw zt()}unwatchFile(){throw zt()}},kI=UR;kI.instance=new UR});var Up,_7=dt(()=>{hf();ya();Up=class extends vs{constructor(r){super(Ae);this.baseFs=r}mapFromBase(r){return Ae.fromPortablePath(r)}mapToBase(r){return Ae.toPortablePath(r)}}});var O_e,_R,M_e,pi,H7=dt(()=>{Ng();hf();ya();O_e=/^[0-9]+$/,_R=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,M_e=/^([^/]+-)?[a-f0-9]+$/,pi=class extends vs{constructor({baseFs:r=new xn}={}){super(V);this.baseFs=r}static makeVirtualPath(r,o,a){if(V.basename(r)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!V.basename(o).match(M_e))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let u=V.relative(V.dirname(r),a).split("/"),A=0;for(;A<u.length&&u[A]==="..";)A+=1;let p=u.slice(A);return V.join(r,o,String(A),...p)}static resolveVirtual(r){let o=r.match(_R);if(!o||!o[3]&&o[5])return r;let a=V.dirname(o[1]);if(!o[3]||!o[4])return a;if(!O_e.test(o[4]))return r;let u=Number(o[4]),A="../".repeat(u),p=o[5]||".";return pi.resolveVirtual(V.join(a,A,p))}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}realpathSync(r){let o=r.match(_R);if(!o)return this.baseFs.realpathSync(r);if(!o[5])return r;let a=this.baseFs.realpathSync(this.mapToBase(r));return pi.makeVirtualPath(o[1],o[3],a)}async realpathPromise(r){let o=r.match(_R);if(!o)return await this.baseFs.realpathPromise(r);if(!o[5])return r;let a=await this.baseFs.realpathPromise(this.mapToBase(r));return pi.makeVirtualPath(o[1],o[3],a)}mapToBase(r){if(r==="")return r;if(this.pathUtils.isAbsolute(r))return pi.resolveVirtual(r);let o=pi.resolveVirtual(this.baseFs.resolve(wt.dot)),a=pi.resolveVirtual(this.baseFs.resolve(r));return V.relative(o,a)||wt.dot}mapFromBase(r){return r}}});var cD,q7,lD,j7=dt(()=>{cD=Ie("url"),q7=Ie("util");hf();ya();lD=class extends vs{constructor(r){super(Ae);this.baseFs=r}mapFromBase(r){return r}mapToBase(r){if(typeof r=="string")return r;if(r instanceof cD.URL)return(0,cD.fileURLToPath)(r);if(Buffer.isBuffer(r)){let o=r.toString();if(Buffer.byteLength(o)!==r.byteLength)throw new Error("Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942");return o}throw new Error(`Unsupported path type: ${(0,q7.inspect)(r)}`)}}});var G7,Io,gf,_p,uD,AD,ry,Tc,Nc,U_e,__e,H_e,q_e,FI,W7=dt(()=>{G7=Ie("readline"),Io=Symbol("kBaseFs"),gf=Symbol("kFd"),_p=Symbol("kClosePromise"),uD=Symbol("kCloseResolve"),AD=Symbol("kCloseReject"),ry=Symbol("kRefs"),Tc=Symbol("kRef"),Nc=Symbol("kUnref"),FI=class{constructor(e,r){this[U_e]=1;this[__e]=void 0;this[H_e]=void 0;this[q_e]=void 0;this[Io]=r,this[gf]=e}get fd(){return this[gf]}async appendFile(e,r){try{this[Tc](this.appendFile);let o=(typeof r=="string"?r:r==null?void 0:r.encoding)??void 0;return await this[Io].appendFilePromise(this.fd,e,o?{encoding:o}:void 0)}finally{this[Nc]()}}async chown(e,r){try{return this[Tc](this.chown),await this[Io].fchownPromise(this.fd,e,r)}finally{this[Nc]()}}async chmod(e){try{return this[Tc](this.chmod),await this[Io].fchmodPromise(this.fd,e)}finally{this[Nc]()}}createReadStream(e){return this[Io].createReadStream(null,{...e,fd:this.fd})}createWriteStream(e){return this[Io].createWriteStream(null,{...e,fd:this.fd})}datasync(){throw new Error("Method not implemented.")}sync(){throw new Error("Method not implemented.")}async read(e,r,o,a){try{this[Tc](this.read);let n;return Buffer.isBuffer(e)?n=e:(e??(e={}),n=e.buffer??Buffer.alloc(16384),r=e.offset||0,o=e.length??n.byteLength,a=e.position??null),r??(r=0),o??(o=0),o===0?{bytesRead:o,buffer:n}:{bytesRead:await this[Io].readPromise(this.fd,n,r,o,a),buffer:n}}finally{this[Nc]()}}async readFile(e){try{this[Tc](this.readFile);let r=(typeof e=="string"?e:e==null?void 0:e.encoding)??void 0;return await this[Io].readFilePromise(this.fd,r)}finally{this[Nc]()}}readLines(e){return(0,G7.createInterface)({input:this.createReadStream(e),crlfDelay:1/0})}async stat(e){try{return this[Tc](this.stat),await this[Io].fstatPromise(this.fd,e)}finally{this[Nc]()}}async truncate(e){try{return this[Tc](this.truncate),await this[Io].ftruncatePromise(this.fd,e)}finally{this[Nc]()}}utimes(e,r){throw new Error("Method not implemented.")}async writeFile(e,r){try{this[Tc](this.writeFile);let o=(typeof r=="string"?r:r==null?void 0:r.encoding)??void 0;await this[Io].writeFilePromise(this.fd,e,o)}finally{this[Nc]()}}async write(...e){try{if(this[Tc](this.write),ArrayBuffer.isView(e[0])){let[r,o,a,n]=e;return{bytesWritten:await this[Io].writePromise(this.fd,r,o??void 0,a??void 0,n??void 0),buffer:r}}else{let[r,o,a]=e;return{bytesWritten:await this[Io].writePromise(this.fd,r,o,a),buffer:r}}}finally{this[Nc]()}}async writev(e,r){try{this[Tc](this.writev);let o=0;if(typeof r<"u")for(let a of e){let n=await this.write(a,void 0,void 0,r);o+=n.bytesWritten,r+=n.bytesWritten}else for(let a of e){let n=await this.write(a);o+=n.bytesWritten}return{buffers:e,bytesWritten:o}}finally{this[Nc]()}}readv(e,r){throw new Error("Method not implemented.")}close(){if(this[gf]===-1)return Promise.resolve();if(this[_p])return this[_p];if(this[ry]--,this[ry]===0){let e=this[gf];this[gf]=-1,this[_p]=this[Io].closePromise(e).finally(()=>{this[_p]=void 0})}else this[_p]=new Promise((e,r)=>{this[uD]=e,this[AD]=r}).finally(()=>{this[_p]=void 0,this[AD]=void 0,this[uD]=void 0});return this[_p]}[(Io,gf,U_e=ry,__e=_p,H_e=uD,q_e=AD,Tc)](e){if(this[gf]===-1){let r=new Error("file closed");throw r.code="EBADF",r.syscall=e.name,r}this[ry]++}[Nc](){if(this[ry]--,this[ry]===0){let e=this[gf];this[gf]=-1,this[Io].closePromise(e).then(this[uD],this[AD])}}}});function RI(t,e){e=new lD(e);let r=(o,a,n)=>{let u=o[a];o[a]=n,typeof(u==null?void 0:u[ny.promisify.custom])<"u"&&(n[ny.promisify.custom]=u[ny.promisify.custom])};{r(t,"exists",(o,...a)=>{let u=typeof a[a.length-1]=="function"?a.pop():()=>{};process.nextTick(()=>{e.existsPromise(o).then(A=>{u(A)},()=>{u(!1)})})}),r(t,"read",(...o)=>{let[a,n,u,A,p,h]=o;if(o.length<=3){let C={};o.length<3?h=o[1]:(C=o[1],h=o[2]),{buffer:n=Buffer.alloc(16384),offset:u=0,length:A=n.byteLength,position:p}=C}if(u==null&&(u=0),A|=0,A===0){process.nextTick(()=>{h(null,0,n)});return}p==null&&(p=-1),process.nextTick(()=>{e.readPromise(a,n,u,A,p).then(C=>{h(null,C,n)},C=>{h(C,0,n)})})});for(let o of Y7){let a=o.replace(/Promise$/,"");if(typeof t[a]>"u")continue;let n=e[o];if(typeof n>"u")continue;r(t,a,(...A)=>{let h=typeof A[A.length-1]=="function"?A.pop():()=>{};process.nextTick(()=>{n.apply(e,A).then(C=>{h(null,C)},C=>{h(C)})})})}t.realpath.native=t.realpath}{r(t,"existsSync",o=>{try{return e.existsSync(o)}catch{return!1}}),r(t,"readSync",(...o)=>{let[a,n,u,A,p]=o;return o.length<=3&&({offset:u=0,length:A=n.byteLength,position:p}=o[2]||{}),u==null&&(u=0),A|=0,A===0?0:(p==null&&(p=-1),e.readSync(a,n,u,A,p))});for(let o of j_e){let a=o;if(typeof t[a]>"u")continue;let n=e[o];typeof n>"u"||r(t,a,n.bind(e))}t.realpathSync.native=t.realpathSync}{let o=t.promises;for(let a of Y7){let n=a.replace(/Promise$/,"");if(typeof o[n]>"u")continue;let u=e[a];typeof u>"u"||a!=="open"&&r(o,n,(A,...p)=>A instanceof FI?A[n].apply(A,p):u.call(e,A,...p))}r(o,"open",async(...a)=>{let n=await e.openPromise(...a);return new FI(n,e)})}t.read[ny.promisify.custom]=async(o,a,...n)=>({bytesRead:await e.readPromise(o,a,...n),buffer:a}),t.write[ny.promisify.custom]=async(o,a,...n)=>({bytesWritten:await e.writePromise(o,a,...n),buffer:a})}function fD(t,e){let r=Object.create(t);return RI(r,e),r}var ny,j_e,Y7,K7=dt(()=>{ny=Ie("util");j7();W7();j_e=new Set(["accessSync","appendFileSync","createReadStream","createWriteStream","chmodSync","fchmodSync","chownSync","fchownSync","closeSync","copyFileSync","linkSync","lstatSync","fstatSync","lutimesSync","mkdirSync","openSync","opendirSync","readlinkSync","readFileSync","readdirSync","readlinkSync","realpathSync","renameSync","rmdirSync","statSync","symlinkSync","truncateSync","ftruncateSync","unlinkSync","unwatchFile","utimesSync","watch","watchFile","writeFileSync","writeSync"]),Y7=new Set(["accessPromise","appendFilePromise","fchmodPromise","chmodPromise","fchownPromise","chownPromise","closePromise","copyFilePromise","linkPromise","fstatPromise","lstatPromise","lutimesPromise","mkdirPromise","openPromise","opendirPromise","readdirPromise","realpathPromise","readFilePromise","readdirPromise","readlinkPromise","renamePromise","rmdirPromise","statPromise","symlinkPromise","truncatePromise","ftruncatePromise","unlinkPromise","utimesPromise","writeFilePromise","writeSync"])});function J7(t){let e=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,"0");return`${t}${e}`}function V7(){if(HR)return HR;let t=Ae.toPortablePath(z7.default.tmpdir()),e=ae.realpathSync(t);return process.once("exit",()=>{ae.rmtempSync()}),HR={tmpdir:t,realTmpdir:e}}var z7,Lc,HR,ae,X7=dt(()=>{z7=tt(Ie("os"));Ng();ya();Lc=new Set,HR=null;ae=Object.assign(new xn,{detachTemp(t){Lc.delete(t)},mktempSync(t){let{tmpdir:e,realTmpdir:r}=V7();for(;;){let o=J7("xfs-");try{this.mkdirSync(V.join(e,o))}catch(n){if(n.code==="EEXIST")continue;throw n}let a=V.join(r,o);if(Lc.add(a),typeof t>"u")return a;try{return t(a)}finally{if(Lc.has(a)){Lc.delete(a);try{this.removeSync(a)}catch{}}}}},async mktempPromise(t){let{tmpdir:e,realTmpdir:r}=V7();for(;;){let o=J7("xfs-");try{await this.mkdirPromise(V.join(e,o))}catch(n){if(n.code==="EEXIST")continue;throw n}let a=V.join(r,o);if(Lc.add(a),typeof t>"u")return a;try{return await t(a)}finally{if(Lc.has(a)){Lc.delete(a);try{await this.removePromise(a)}catch{}}}}},async rmtempPromise(){await Promise.all(Array.from(Lc.values()).map(async t=>{try{await ae.removePromise(t,{maxRetries:0}),Lc.delete(t)}catch{}}))},rmtempSync(){for(let t of Lc)try{ae.removeSync(t),Lc.delete(t)}catch{}}})});var TI={};Yt(TI,{AliasFS:()=>qu,BasePortableFakeFS:()=>Hu,CwdFS:()=>An,FakeFS:()=>pf,Filename:()=>Lr,JailFS:()=>ju,LazyFS:()=>ty,MountFS:()=>Mp,NoFS:()=>kI,NodeFS:()=>xn,PortablePath:()=>wt,PosixFS:()=>Up,ProxiedFS:()=>vs,VirtualFS:()=>pi,constants:()=>Ii,errors:()=>sr,extendFs:()=>fD,normalizeLineEndings:()=>Rg,npath:()=>Ae,opendir:()=>oD,patchFs:()=>RI,ppath:()=>V,setupCopyIndex:()=>sD,statUtils:()=>Nl,toFilename:()=>Li,unwatchAllFiles:()=>Fg,unwatchFile:()=>kg,watchFile:()=>ey,xfs:()=>ae});var bt=dt(()=>{C7();rD();RR();LR();S7();MR();Tg();ya();ya();F7();Tg();T7();L7();O7();M7();U7();Ng();_7();hf();H7();K7();X7()});var rW=U((VSt,tW)=>{tW.exports=eW;eW.sync=W_e;var Z7=Ie("fs");function G_e(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var o=0;o<r.length;o++){var a=r[o].toLowerCase();if(a&&t.substr(-a.length).toLowerCase()===a)return!0}return!1}function $7(t,e,r){return!t.isSymbolicLink()&&!t.isFile()?!1:G_e(e,r)}function eW(t,e,r){Z7.stat(t,function(o,a){r(o,o?!1:$7(a,t,e))})}function W_e(t,e){return $7(Z7.statSync(t),t,e)}});var aW=U((zSt,oW)=>{oW.exports=iW;iW.sync=Y_e;var nW=Ie("fs");function iW(t,e,r){nW.stat(t,function(o,a){r(o,o?!1:sW(a,e))})}function Y_e(t,e){return sW(nW.statSync(t),e)}function sW(t,e){return t.isFile()&&K_e(t,e)}function K_e(t,e){var r=t.mode,o=t.uid,a=t.gid,n=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),u=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),A=parseInt("100",8),p=parseInt("010",8),h=parseInt("001",8),C=A|p,w=r&h||r&p&&a===u||r&A&&o===n||r&C&&n===0;return w}});var cW=U((ZSt,lW)=>{var XSt=Ie("fs"),pD;process.platform==="win32"||global.TESTING_WINDOWS?pD=rW():pD=aW();lW.exports=qR;qR.sync=J_e;function qR(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(o,a){qR(t,e||{},function(n,u){n?a(n):o(u)})})}pD(t,e||{},function(o,a){o&&(o.code==="EACCES"||e&&e.ignoreErrors)&&(o=null,a=!1),r(o,a)})}function J_e(t,e){try{return pD.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var dW=U(($St,gW)=>{var iy=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",uW=Ie("path"),V_e=iy?";":":",AW=cW(),fW=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),pW=(t,e)=>{let r=e.colon||V_e,o=t.match(/\//)||iy&&t.match(/\\/)?[""]:[...iy?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],a=iy?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",n=iy?a.split(r):[""];return iy&&t.indexOf(".")!==-1&&n[0]!==""&&n.unshift(""),{pathEnv:o,pathExt:n,pathExtExe:a}},hW=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:o,pathExt:a,pathExtExe:n}=pW(t,e),u=[],A=h=>new Promise((C,w)=>{if(h===o.length)return e.all&&u.length?C(u):w(fW(t));let v=o[h],b=/^".*"$/.test(v)?v.slice(1,-1):v,E=uW.join(b,t),R=!b&&/^\.[\\\/]/.test(t)?t.slice(0,2)+E:E;C(p(R,h,0))}),p=(h,C,w)=>new Promise((v,b)=>{if(w===a.length)return v(A(C+1));let E=a[w];AW(h+E,{pathExt:n},(R,L)=>{if(!R&&L)if(e.all)u.push(h+E);else return v(h+E);return v(p(h,C,w+1))})});return r?A(0).then(h=>r(null,h),r):A(0)},z_e=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:o,pathExtExe:a}=pW(t,e),n=[];for(let u=0;u<r.length;u++){let A=r[u],p=/^".*"$/.test(A)?A.slice(1,-1):A,h=uW.join(p,t),C=!p&&/^\.[\\\/]/.test(t)?t.slice(0,2)+h:h;for(let w=0;w<o.length;w++){let v=C+o[w];try{if(AW.sync(v,{pathExt:a}))if(e.all)n.push(v);else return v}catch{}}}if(e.all&&n.length)return n;if(e.nothrow)return null;throw fW(t)};gW.exports=hW;hW.sync=z_e});var yW=U((ePt,jR)=>{"use strict";var mW=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(o=>o.toUpperCase()==="PATH")||"Path"};jR.exports=mW;jR.exports.default=mW});var wW=U((tPt,IW)=>{"use strict";var EW=Ie("path"),X_e=dW(),Z_e=yW();function CW(t,e){let r=t.options.env||process.env,o=process.cwd(),a=t.options.cwd!=null,n=a&&process.chdir!==void 0&&!process.chdir.disabled;if(n)try{process.chdir(t.options.cwd)}catch{}let u;try{u=X_e.sync(t.command,{path:r[Z_e({env:r})],pathExt:e?EW.delimiter:void 0})}catch{}finally{n&&process.chdir(o)}return u&&(u=EW.resolve(a?t.options.cwd:"",u)),u}function $_e(t){return CW(t)||CW(t,!0)}IW.exports=$_e});var BW=U((rPt,WR)=>{"use strict";var GR=/([()\][%!^"`<>&|;, *?])/g;function e8e(t){return t=t.replace(GR,"^$1"),t}function t8e(t,e){return t=`${t}`,t=t.replace(/(\\*)"/g,'$1$1\\"'),t=t.replace(/(\\*)$/,"$1$1"),t=`"${t}"`,t=t.replace(GR,"^$1"),e&&(t=t.replace(GR,"^$1")),t}WR.exports.command=e8e;WR.exports.argument=t8e});var DW=U((nPt,vW)=>{"use strict";vW.exports=/^#!(.*)/});var PW=U((iPt,SW)=>{"use strict";var r8e=DW();SW.exports=(t="")=>{let e=t.match(r8e);if(!e)return null;let[r,o]=e[0].replace(/#! ?/,"").split(" "),a=r.split("/").pop();return a==="env"?o:o?`${a} ${o}`:a}});var bW=U((sPt,xW)=>{"use strict";var YR=Ie("fs"),n8e=PW();function i8e(t){let r=Buffer.alloc(150),o;try{o=YR.openSync(t,"r"),YR.readSync(o,r,0,150,0),YR.closeSync(o)}catch{}return n8e(r.toString())}xW.exports=i8e});var RW=U((oPt,FW)=>{"use strict";var s8e=Ie("path"),QW=wW(),kW=BW(),o8e=bW(),a8e=process.platform==="win32",l8e=/\.(?:com|exe)$/i,c8e=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function u8e(t){t.file=QW(t);let e=t.file&&o8e(t.file);return e?(t.args.unshift(t.file),t.command=e,QW(t)):t.file}function A8e(t){if(!a8e)return t;let e=u8e(t),r=!l8e.test(e);if(t.options.forceShell||r){let o=c8e.test(e);t.command=s8e.normalize(t.command),t.command=kW.command(t.command),t.args=t.args.map(n=>kW.argument(n,o));let a=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${a}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function f8e(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let o={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?o:A8e(o)}FW.exports=f8e});var LW=U((aPt,NW)=>{"use strict";var KR=process.platform==="win32";function JR(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function p8e(t,e){if(!KR)return;let r=t.emit;t.emit=function(o,a){if(o==="exit"){let n=TW(a,e,"spawn");if(n)return r.call(t,"error",n)}return r.apply(t,arguments)}}function TW(t,e){return KR&&t===1&&!e.file?JR(e.original,"spawn"):null}function h8e(t,e){return KR&&t===1&&!e.file?JR(e.original,"spawnSync"):null}NW.exports={hookChildProcess:p8e,verifyENOENT:TW,verifyENOENTSync:h8e,notFoundError:JR}});var XR=U((lPt,sy)=>{"use strict";var OW=Ie("child_process"),VR=RW(),zR=LW();function MW(t,e,r){let o=VR(t,e,r),a=OW.spawn(o.command,o.args,o.options);return zR.hookChildProcess(a,o),a}function g8e(t,e,r){let o=VR(t,e,r),a=OW.spawnSync(o.command,o.args,o.options);return a.error=a.error||zR.verifyENOENTSync(a.status,o),a}sy.exports=MW;sy.exports.spawn=MW;sy.exports.sync=g8e;sy.exports._parse=VR;sy.exports._enoent=zR});function _W(t){UW=t}function NI(){return typeof ZR>"u"&&(ZR=UW()),ZR}var ZR,UW,$R=dt(()=>{UW=()=>{throw new Error("Assertion failed: No libzip instance is available, and no factory was configured")}});var HW=U((hD,tT)=>{var d8e=Object.assign({},Ie("fs")),eT=function(){var t=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(t=t||__filename),function(e){e=e||{};var r=typeof e<"u"?e:{},o,a;r.ready=new Promise(function(Be,xe){o=Be,a=xe});var n={},u;for(u in r)r.hasOwnProperty(u)&&(n[u]=r[u]);var A=[],p="./this.program",h=function(Be,xe){throw xe},C=!1,w=!0,v="";function b(Be){return r.locateFile?r.locateFile(Be,v):v+Be}var E,R,L,_;w&&(C?v=Ie("path").dirname(v)+"/":v=__dirname+"/",E=function(xe,Je){var vt=Zn(xe);return vt?Je?vt:vt.toString():(L||(L=d8e),_||(_=Ie("path")),xe=_.normalize(xe),L.readFileSync(xe,Je?null:"utf8"))},R=function(xe){var Je=E(xe,!0);return Je.buffer||(Je=new Uint8Array(Je)),De(Je.buffer),Je},process.argv.length>1&&(p=process.argv[1].replace(/\\/g,"/")),A=process.argv.slice(2),h=function(Be){process.exit(Be)},r.inspect=function(){return"[Emscripten Module object]"});var J=r.print||console.log.bind(console),re=r.printErr||console.warn.bind(console);for(u in n)n.hasOwnProperty(u)&&(r[u]=n[u]);n=null,r.arguments&&(A=r.arguments),r.thisProgram&&(p=r.thisProgram),r.quit&&(h=r.quit);var oe=0,pe=function(Be){oe=Be},he;r.wasmBinary&&(he=r.wasmBinary);var ve=r.noExitRuntime||!0;typeof WebAssembly!="object"&&ki("no native wasm support detected");function ge(Be,xe,Je){switch(xe=xe||"i8",xe.charAt(xe.length-1)==="*"&&(xe="i32"),xe){case"i1":return Ue[Be>>0];case"i8":return Ue[Be>>0];case"i16":return ap((Be>>1)*2);case"i32":return ks((Be>>2)*4);case"i64":return ks((Be>>2)*4);case"float":return hu((Be>>2)*4);case"double":return op((Be>>3)*8);default:ki("invalid type for getValue: "+xe)}return null}var le,Pe=!1,g;function De(Be,xe){Be||ki("Assertion failed: "+xe)}function Ee(Be){var xe=r["_"+Be];return De(xe,"Cannot call unknown function "+Be+", make sure it is exported"),xe}function de(Be,xe,Je,vt,tr){var Zr={string:function(yi){var aa=0;if(yi!=null&&yi!==0){var Ha=(yi.length<<2)+1;aa=ee(Ha),ut(yi,aa,Ha)}return aa},array:function(yi){var aa=ee(yi.length);return Me(yi,aa),aa}};function Tn(yi){return xe==="string"?me(yi):xe==="boolean"?Boolean(yi):yi}var _r=Ee(Be),$n=[],Ti=0;if(vt)for(var Yn=0;Yn<vt.length;Yn++){var Ua=Zr[Je[Yn]];Ua?(Ti===0&&(Ti=Ma()),$n[Yn]=Ua(vt[Yn])):$n[Yn]=vt[Yn]}var oa=_r.apply(null,$n);return oa=Tn(oa),Ti!==0&&sa(Ti),oa}function ne(Be,xe,Je,vt){Je=Je||[];var tr=Je.every(function(Tn){return Tn==="number"}),Zr=xe!=="string";return Zr&&tr&&!vt?Ee(Be):function(){return de(Be,xe,Je,arguments,vt)}}var Z=new TextDecoder("utf8");function me(Be,xe){if(!Be)return"";for(var Je=Be+xe,vt=Be;!(vt>=Je)&&je[vt];)++vt;return Z.decode(je.subarray(Be,vt))}function be(Be,xe,Je,vt){if(!(vt>0))return 0;for(var tr=Je,Zr=Je+vt-1,Tn=0;Tn<Be.length;++Tn){var _r=Be.charCodeAt(Tn);if(_r>=55296&&_r<=57343){var $n=Be.charCodeAt(++Tn);_r=65536+((_r&1023)<<10)|$n&1023}if(_r<=127){if(Je>=Zr)break;xe[Je++]=_r}else if(_r<=2047){if(Je+1>=Zr)break;xe[Je++]=192|_r>>6,xe[Je++]=128|_r&63}else if(_r<=65535){if(Je+2>=Zr)break;xe[Je++]=224|_r>>12,xe[Je++]=128|_r>>6&63,xe[Je++]=128|_r&63}else{if(Je+3>=Zr)break;xe[Je++]=240|_r>>18,xe[Je++]=128|_r>>12&63,xe[Je++]=128|_r>>6&63,xe[Je++]=128|_r&63}}return xe[Je]=0,Je-tr}function ut(Be,xe,Je){return be(Be,je,xe,Je)}function H(Be){for(var xe=0,Je=0;Je<Be.length;++Je){var vt=Be.charCodeAt(Je);vt>=55296&&vt<=57343&&(vt=65536+((vt&1023)<<10)|Be.charCodeAt(++Je)&1023),vt<=127?++xe:vt<=2047?xe+=2:vt<=65535?xe+=3:xe+=4}return xe}function yt(Be){var xe=H(Be)+1,Je=Cl(xe);return Je&&be(Be,Ue,Je,xe),Je}function Me(Be,xe){Ue.set(Be,xe)}function Te(Be,xe){return Be%xe>0&&(Be+=xe-Be%xe),Be}var Qe,Ue,je,At,Le,x,I,P,y,F;function z(Be){Qe=Be,r.HEAP_DATA_VIEW=F=new DataView(Be),r.HEAP8=Ue=new Int8Array(Be),r.HEAP16=At=new Int16Array(Be),r.HEAP32=x=new Int32Array(Be),r.HEAPU8=je=new Uint8Array(Be),r.HEAPU16=Le=new Uint16Array(Be),r.HEAPU32=I=new Uint32Array(Be),r.HEAPF32=P=new Float32Array(Be),r.HEAPF64=y=new Float64Array(Be)}var X=r.INITIAL_MEMORY||16777216,$,ie=[],ke=[],Ne=[],st=!1;function ht(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)Pt(r.preRun.shift());no(ie)}function Ut(){st=!0,no(ke)}function Xt(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;)Dr(r.postRun.shift());no(Ne)}function Pt(Be){ie.unshift(Be)}function tn(Be){ke.unshift(Be)}function Dr(Be){Ne.unshift(Be)}var fr=0,Br=null,jr=null;function Hn(Be){fr++,r.monitorRunDependencies&&r.monitorRunDependencies(fr)}function bs(Be){if(fr--,r.monitorRunDependencies&&r.monitorRunDependencies(fr),fr==0&&(Br!==null&&(clearInterval(Br),Br=null),jr)){var xe=jr;jr=null,xe()}}r.preloadedImages={},r.preloadedAudios={};function ki(Be){r.onAbort&&r.onAbort(Be),Be+="",re(Be),Pe=!0,g=1,Be="abort("+Be+"). Build with -s ASSERTIONS=1 for more info.";var xe=new WebAssembly.RuntimeError(Be);throw a(xe),xe}var gs="data:application/octet-stream;base64,";function to(Be){return Be.startsWith(gs)}var Di="data:application/octet-stream;base64,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AQsgAEEAOgAAQQAPCyAAKAIEIgNFBEBBAA8LIAAgAjcDECADIAGnaigAAAtVAgF+AX8gAARAAkAgACkDCFANAEIBIQEDQCAAKAIAIAJBBHRqEDogASAAKQMIWg0BIAGnIQIgAUIBfCEBDAALAAsgACgCABAGIAAoAigQECAAEAYLC2QBAn8CQAJAAkAgAEUEQCABpxAIIgNFDQJBGBAIIgJFDQEMAwsgACEDQRgQCCICDQJBAA8LIAMQBgtBAA8LIAJCADcDECACIAE3AwggAiADNgIEIAJBAToAACACIABFOgABIAILnQECAn4BfwJAAkAgAC0AAEUNACAAKQMQIgJCd1YNACACQgh8IgMgACkDCFgNAQsgAEEAOgAADwsgACgCBCIERQRADwsgACADNwMQIAQgAqdqIgAgAUI4iDwAByAAIAFCMIg8AAYgACABQiiIPAAFIAAgAUIgiDwABCAAIAFCGIg8AAMgACABQhCIPAACIAAgAUIIiDwAASAAIAE8AAAL8AICAn8BfgJAIAJFDQAgACACaiIDQQFrIAE6AAAgACABOgAAIAJBA0kNACADQQJrIAE6AAAgACABOgABIANBA2sgAToAACAAIAE6AAIgAkEHSQ0AIANBBGsgAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgA2AgAgAyACIARrQXxxIgJqIgFBBGsgADYCACACQQlJDQAgAyAANgIIIAMgADYCBCABQQhrIAA2AgAgAUEMayAANgIAIAJBGUkNACADIAA2AhggAyAANgIUIAMgADYCECADIAA2AgwgAUEQayAANgIAIAFBFGsgADYCACABQRhrIAA2AgAgAUEcayAANgIAIAIgA0EEcUEYciIBayICQSBJDQAgAK1CgYCAgBB+IQUgASADaiEBA0AgASAFNwMYIAEgBTcDECABIAU3AwggASAFNwMAIAFBIGohASACQSBrIgJBH0sNAAsLC28BA38gAEEMaiECAkACfyAAKAIgIgFFBEBBfyEBQRIMAQsgACABQQFrIgM2AiBBACEBIAMNASAAQQBCAEECEA4aIAAoAgAiAEUNASAAEBtBf0oNAUEUCyEAIAIEQCACQQA2AgQgAiAANgIACwsgAQufAQIBfwF+An8CQAJ+IAAoAgAiAygCJEEBRkEA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RQ0AIAQtAAxFDQFBFyEFIAcNAQtBACECIAMgAEEIaiADGyIABEAgAEEANgIEIAAgBTYCAAsLIAILbgEBfyMAQYACayIFJAACQCAEQYDABHENACACIANMDQAgBSABQf8BcSACIANrIgJBgAIgAkGAAkkiARsQGiABRQRAA0AgACAFQYACEC4gAkGAAmsiAkH/AUsNAAsLIAAgBSACEC4LIAVBgAJqJAALUgECf0H0mAEoAgAiASAAQQNqQXxxIgJqIQACQCACQQAgACABTRsNACAAPwBBEHRLBEAgABADRQ0BC0H0mAEgADYCACABDwtB+JsBQTA2AgBBfwuGBQEGfyAAKAIwIgNBhgJrIQYgACgCPCECIAMhAQNAIAAoAkQgAiAAKAJkIgRqayECIAEgBmogBE0EQCAAKAJIIgEgASADaiADEAkaAkAgAyAAKAJoIgFNBEAgACABIANrNgJoDAELIABCADcDaAsgACAAKAJkIANrIgE2AmQgACAAKAJUIANrNgJUIAEgACgCqC1JBEAgACABNgKoLQsgAEHQmAEoAgARBAAgAiADaiECCwJAIAAoAgAiASgCBCIERQ0AIAAoAjwhBSAAIAIgBCACIARJGyICBH8gACgCSCAAKAJkaiAFaiEFIAEgBCACazYCBAJAIAEoAhwoAhRBAkYEQCABIAUgAhBADAELIAUgASgCACACEAkhBCABKAIcKAIUQQFHDQAgASABKAIwIAQgAkHImAEoAgARAAA2AjALIAEgASgCACACajYCACABIAEoAgggAmo2AgggACgCPAUgBQsgAmoiAjYCPAJAIAAoAqgtIgEgAmpBA0kNACAAKAJkIAFrIgEEQCAAIAFBAWtBxJgBKAIAEQEAGiAAKAI8IQILIAAoAqgtIAJBAUZrIgRFDQAgACABIARBwJgBKAIAEQcAIAAgACgCqC0gBGs2AqgtIAAoAjwhAgsgAkGFAksNACAAKAIAKAIERQ0AIAAoAjAhAQwBCwsCQCAAKAJEIgIgACgCQCIDTQ0AIAACfyAAKAI8IAAoAmRqIgEgA0sEQCAAKAJIIAFqQQAgAiABayIDQYICIANBggJJGyIDEBogASADagwBCyABQYICaiIBIANNDQEgACgCSCADakEAIAIgA2siAiABIANrIgMgAiADSRsiAxAaIAAoAkAgA2oLNgJACws3ACAAQn83AxAgAEEANgIIIABCADcDACAAQQA2AjAgAEL/////DzcDKCAAQgA3AxggAEIANwMgC6UBAQF/QdgAEAgiAUUEQEEADwsCQCAABEAgASAAQdgAEAkaDAELIAFCADcDICABQQA2AhggAUL/////DzcDECABQQA7AQwgAUG/hig2AgggAUEBOgAGIAFBADoABCABQgA3A0ggAUGAgNiNeDYCRCABQgA3AyggAUIANwMwIAFCADcDOCABQUBrQQA7AQAgAUIANwNQCyABQQE6AAUgAUEANgIAIAELWAICfgF/AkACQCAALQAARQ0AIAApAxAiAyACrXwiBCADVA0AIAQgACkDCFgNAQsgAEEAOgAADwsgACgCBCIFRQRADwsgACAENwMQIAUgA6dqIAEgAhAJGguWAQECfwJAAkAgAkUEQCABpxAIIgVFDQFBGBAIIgQNAiAFEAYMAQsgAiEFQRgQCCIEDQELIAMEQCADQQA2AgQgA0EONgIAC0EADwsgBEIANwMQIAQgATcDCCAEIAU2AgQgBEEBOgAAIAQgAkU6AAEgACAFIAEgAxBpQQBIBH8gBC0AAQRAIAQoAgQQBgsgBBAGQQAFIAQLC5sCAQN/IAAtAABBIHFFBEACQCABIQMCQCACIAAiASgCECIABH8gAAUCfyABIAEtAEoiAEEBayAAcjoASiABKAIAIgBBCHEEQCABIABBIHI2AgBBfwwBCyABQgA3AgQgASABKAIsIgA2AhwgASAANgIUIAEgACABKAIwajYCEEEACw0BIAEoAhALIAEoAhQiBWtLBEAgASADIAIgASgCJBEAABoMAgsCfyABLABLQX9KBEAgAiEAA0AgAiAAIgRFDQIaIAMgBEEBayIAai0AAEEKRw0ACyABIAMgBCABKAIkEQAAIARJDQIgAyAEaiEDIAEoAhQhBSACIARrDAELIAILIQAgBSADIAAQCRogASABKAIUIABqNgIUCwsLCxAAIAAoAggQBiAAQQA2AggLWQIBfwF+AkACf0EAIABFDQAaIACtIAGtfiIDpyICIAAgAXJBgIAESQ0AGkF/IAIgA0IgiKcbCyICEAgiAEUNACAAQQRrLQAAQQNxRQ0AIABBACACEBoLIAAL8AEBAn9BfyEBAkAgAC0AKA0AIAAoAiRBA0YEQCAAQQxqBEAgAEEANgIQIABB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DwsCQAJAIAAgASACIAMQhwEiBEUNAEEYEAgiAkUEQCADBEAgA0EANgIEIANBDjYCAAsCQCAEKAIoIgBFBEAgBCkDGCEBDAELIABBADYCKCAEKAIoQgA3AyAgBCAEKQMYIgUgBCkDICIBIAEgBVQbIgE3AxgLIAQpAwggAVYEQANAIAQoAgAgAadBBHRqKAIAEAYgAUIBfCIBIAQpAwhUDQALCyAEKAIAEAYgBCgCBBAGIAQQBgwBCyACQQA2AhQgAiAENgIQIAJBABABNgIMIAJBADYCCCACQgA3AgACf0E4EAgiAEUEQCADBEAgA0EANgIEIANBDjYCAAtBAAwBCyAAQQA2AgggAEIANwMAIABCADcDICAAQoCAgIAQNwIsIABBADoAKCAAQQA2AhQgAEIANwIMIABBADsBNCAAIAI2AgggAEEjNgIEIABCPyACQQBCAEEOQSMRDAAiASABQgBTGzcDGCAACyIADQEgAigCECIDBEACQCADKAIoIgBFBEAgAykDGCEBDAELIABBADYCKCADKAIoQgA3AyAgAyADKQMYIgUgAykDICIBIAEgBVQbIgE3AxgLIAMpAwggAVYEQANAIAMoAgAgAadBBHRqKAIAEAYgAUIBfCIBIAMpAwhUDQALCyADKAIAEAYgAygCBBAGIAMQBgsgAhAGC0EAIQALIAALFAAgABBBIAAoAgAQICAAKAIEECALiwwBBn8gACABaiEFAkACQCAAKAIEIgJBAXENACACQQNxRQ0BIAAoAgAiAiABaiEBAkAgACACayIAQbycASgCAEcEQCACQf8BTQRAIAAoAggiBCACQQN2IgJBA3RB0JwBakYaIAAoAgwiAyAERw0CQaicAUGonAEoAgBBfiACd3E2AgAMAwsgACgCGCEGAkAgACAAKAIMIgNHBEAgACgCCCICQbicASgCAEkaIAIgAzYCDCADIAI2AggMAQsCQCAAQRRqIgIoAgAiBA0AIABBEGoiAigCACIEDQBBACEDDAELA0AgAiEHIAQiA0EUaiICKAIAIgQNACADQRBqIQIgAygCECIEDQALIAdBADYCAAsgBkUNAgJAIAAgACgCHCIEQQJ0QdieAWoiAigCAEYEQCACIAM2AgAgAw0BQaycAUGsnAEoAgBBfiAEd3E2AgAMBAsgBkEQQRQgBigCECAARhtqIAM2AgAg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ACIIQiCIpyEEIAinIQEMAwsgAUEHTQRAIAAgAmpBAWshByABIAJJBEAgA0EEaiEGA0AgByAAa0EBaiIEIAEgASAESxsiBUEITwRAA0AgACADKQAANwAAIANBCGohAyAAQQhqIQAMAAsACyAFQQRJBH8gAwUgACADKAAANgAAIAVBBGshBSAAQQRqIQAgBgshBCAFQQJPBEAgACAELwAAOwAAIAVBAmshBSAEQQJqIQQgAEECaiEACyAFQQFGBEAgACAELQAAOgAAIABBAWohAAsgAiABayICIAFLDQALIAJFDQULAkAgByAAa0EBaiIBIAIgASACSRsiAkEISQ0AIAJBCGsiBEEDdkEBakEHcSIBBEADQCAAIAMpAAA3AAAgAkEIayECIANBCGohAyAAQQhqIQAgAUEBayIBDQALCyAEQThJDQADQCAAIAMpAAA3AAAgACADKQAINwAIIAAgAykAEDcAECAAIAMpABg3ABggACADKQAgNwAgIAAgAykAKDcAKCAAIAMpADA3ADAgACADKQA4NwA4IANBQGshAyAAQUBrIQAgAkFAaiICQQdLDQALCyACQQRPBEAgACADKAAANgAAIAJBBGshAiADQQRqIQMgAEEEaiEACyACQQJPBEAgACADLwAAOwAAIAJBAmshAiADQQJqIQMgAEECaiEACyACQQFHDQQgACADLQAAOgAAIABBAWoPCyAAIAMpAAA3AAAgACACQQFrIgFBB3FBAWoiAmohACABQQhJDQMgAiADaiEDIAFBA3YiAkEBayEEIAJBB3EiAQRAA0AgACADKQAANwAAIAJBAWshAiADQQhqIQMgAEEIaiEAIAFBAWsiAQ0ACwsgBEEHSQ0DA0AgACADKQAANwAAIAAgAykACDcACCAAIAMpABA3ABAgACADKQAYNwAYIAAgAykAIDcAICAAIAMpACg3ACggACADKQAwNwAwIAAgAykAODcAOCADQUBrIQMgAEFAayEAIAJBCGsiAg0ACwwDCyADLQAAQYGChAhsCyIBIQQLIAJBB3EhBgJAIAJBeHEiAkUNACABrSAErUIghoQhCCACQQhrIgRBA3ZBAWpBB3EiAQRAA0AgACAINwAAIAJBCGshAiAAQQhqIQAgAUEBayIBDQALCyAEQThJDQADQCAAIAg3ADggACAINwAwIAAgCDcAKCAAIAg3ACAgACAINwAYIAAgCDcAECAAIAg3AAggACAINwAAIABBQGshACACQUBqIgINAAsLIAZFDQAgACADIAYQCSAGaiEACyAADwsgACADLQABOgABIAJBAkYEQCAAQQJqDwsgACADLQACOgACIAJBA0YEQCAAQQNqDwsgACADLQADOgADIAJBBEYEQCAAQQRqDwsgACADLQAEOgAEIAJBBUYEQCAAQQVqDwsgACADLQAFOgAFIAJBBkYEQCAAQQZqDwsgACADLQAGOgAGIABBB2oLAwABC2wBA38CQCABKAIAIgNBB0sNACADIAIoAgBPDQAgACADayEEA0AgACAEKQAANwAAIAIgAigCACABKAIAIgVrNgIAIAEgASgCAEEBdCIDNgIAIAAgBWohACADQQdLDQEgAyACKAIASQ0ACwsgAAu8AgEBfwJAIAMgAGtBAWoiAyACIAIgA0sbIgJBCEkNACACQQhrIgRBA3ZBAWpBB3EiAwRAA0AgACABKQAANwAAIAJBCGshAiABQQhqIQEgAEEIaiEAIANBAWsiAw0ACwsgBEE4SQ0AA0AgACABKQAANwAAIAAgASkACDcACCAAIAEpABA3ABAgACABKQAYNwAYIAAgASkAIDcAICAAIAEpACg3ACggACABKQAwNwAwIAAgASkAODcAOCABQUBrIQEgAEFAayEAIAJBQGoiAkEHSw0ACwsgAkEETwRAIAAgASgAADYAACACQQRrIQIgAUEEaiEBIABBBGohAAsgAkECTwRAIAAgAS8AADsAACACQQJrIQIgAUECaiEBIABBAmohAAsgAkEBRgR/IAAgAS0AADoAACAAQQFqBSAACwvnAQECfyAAIAEpAAA3AAAgACACQQFrIgJBB3FBAWoiA2ohAAJAIAJBCEkNACABIANqIQEgAkEDdiICQQFrIQQgAkEHcSIDBEADQCAAIAEpAAA3AAAgAkEBayECIAFBCGohASAAQQhqIQAgA0EBayIDDQALCyAEQQdJDQADQCAAIAEpAAA3AAAgACABKQAINwAIIAAgASkAEDcAECAAIAEpABg3ABggACABKQAgNwAgIAAgASkAKDcAKCAAIAEpADA3ADAgACABKQA4NwA4IAFBQGshASAAQUBrIQAgAkEIayICDQALCyAAC/wFAQR/IABB//8DcSEDIABBEHYhBEEBIQAgAkEB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ADYCBCACQQ42AgALDAELIANBARB0IAMgARBmEBIgAyAFIAQoAgwQLAJ/IAMtAABFBEAgAgRAIAJBADYCBCACQRQ2AgALQQAMAQsgACADLQAABH4gAykDEAVCAAunQf//A3EgAygCBBBICyEGIAMQBwsgBEEQaiQAIAYL4AECAn8BfkEwEAgiAkUEQCABBEAgAUEANgIEIAFBDjYCAAtBAA8LIAJCADcDCCACQQA2AgAgAkIANwMQIAJCADcDGCACQgA3AyAgAkIANwAlIABQBEAgAg8LAkAgAEL/////AFYNACAAp0EEdBAIIgNFDQAgAiADNgIAQQAhAUIBIQQDQCADIAFBBHRqIgFCADcCACABQgA3AAUgACAEUgRAIASnIQEgBEIBfCEEDAELCyACIAA3AwggAiAANwMQIAIPCyABBEAgAUEANgIEIAFBDjYCAAtBABAQIAIQBkEAC+4BAgN/AX4jAEEQayIEJAACQCAEQQxqQgQQGCIDRQRAQX8hAgwBCwJAIAEEQCACQYAGcSEFA0ACQCAFIAEoAgRxRQ0AAkAgAykDCEIAVARAIANBADoAAAwBCyADQgA3AxAgA0EBOgAACyADIAEvAQgQDSADIAEvAQoQDSADLQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALQX8hAgwEC0F/IQIgACAEQQxqQgQQHEEASA0DIAEzAQoiBlANACAAIAEoAgwgBhAcQQBIDQMLIAEoAgAiAQ0ACwtBACECCyADEAcLIARBEGokACACCzwBAX8gAARAIAFBgAZxIQEDQCABIAAoAgRxBEAgAiAALwEKakEEaiECCyAAKAIAIgANAAsLIAJB//8DcQucAQEDfyAARQRAQQAPCyAAIQMDQAJ/AkACQCAALwEIIgFB9OABTQRAIAFBAUYNASABQfXGAUYNAQwCCyABQYGyAkYNACABQfXgAUcNAQsgACgCACEBIABBADYCACAAKAIMEAYgABAGIAEgAyAAIANGGyEDAkAgAkUEQEEAIQIMAQsgAiABNgIACyABDAELIAAiAigCAAsiAA0ACyADC7IEAgV/AX4CQAJAAkAgACABrRAYIgEEQCABLQAADQFBACEADAILIAQEQCAEQQA2AgQgBEEONgIAC0EADwtBACEAA0AgAS0AAAR+IAEpAwggASkDEH0FQgALQgRUDQEgARALIQcgASABEAsiBq0QEyIIRQRAQQAhAiAEBEAgBEEANgIEIARBFTYCAAsgARAHIABFDQMDQCAAKAIAIQEgACgCDBAGIAAQBiABIgANAAsMAwsCQAJAQRAQCCIFBEAgBSAGOwEKIAUgBzsBCCAFIAI2AgQgBUEANgIAIAZFDQEgBSAIIAYQZyIGNgIMIAYNAiAFEAYLQQAhAiAEBEAgBEEANgIEIARBDjYCAAsgARAHIABFDQQDQCAAKAIAIQEgACgCDBAGIAAQBiABIgANAAsMBAsgBUEANgIMCwJAIABFBEAgBSEADAELIAkgBTYCAAsgBSEJIAEtAAANAAsLAkAgAS0AAAR/IAEpAxAgASkDCFEFQQALDQAgASABLQAABH4gASkDCCABKQMQfQVCAAsiCkL/////D4MQEyECAkAgCqciBUEDSw0AIAJFDQAgAkHBFCAFEDxFDQELQQAhAiAEBEAgBEEANgIEIARBFTYCAAsgARAHIABFDQEDQCAAKAIAIQEgACgCDBAGIAAQBiABIgANAAsMAQsgARAHIAMEQCADIAA2AgBBAQ8LQQEhAiAARQ0AA0AgACgCACEBIAAoAgwQBiAAEAYgASIADQALCyACC74BAQV/IAAEfyAAIQIDQCACIgQoAgAiAg0ACyABBEADQCABIgMvAQghBiADKAIAIQEgACECAkACQANAAkAgAi8BCCAGRw0AIAIvAQoiBSADLwEKRw0AIAVFDQIgAigCDCADKAIMIAUQPEUNAgsgAigCACICDQALIANBADYCACAEIAM2AgAgAyEEDAELIAIgAigCBCADKAIEQYAGcXI2AgQgA0EANgIAIAMoAgwQBiADEAYLIAENAAsLIAAFIAELC1UCAn4BfwJAAkAgAC0AAEUNACAAKQMQIgJCAXwiAyACVA0AIAMgACkDCFgNAQsgAEEAOgAADwsgACgCBCIERQRADwsgACADNwMQIAQgAqdqIAE6AAALWgICfgF/An8CQAJAIAAtAABFDQAgACkDECIBQgF8IgIgAVQNACACIAApAwhYDQELIABBADoAAEEADAELQQAgACgCBCIDRQ0AGiAAIAI3AxAgAyABp2otAAALC94BAQN/IAEgACkDMFoEQCAAQQhqBEAgAEEANgIMIABBEjYCCAtBfw8LIABBCGohAiAALQAYQQJxBEAg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DAELIAFBGU4EQCAAIAAoAhAiAUEBajYCECABIAAoAgRqIAApA7gtIgI8AAAgACAAKAIQIgFBAWo2AhAgASAAKAIEaiACQgiIPAAAIAAgACgCECIBQQFqNgIQIAEgACgCBGogAkIQiDwAACAAIAAoAhAiAUEBajYCECABIAAoAgRqIAJCGIg8AAAgACAAQbwtajUCADcDuC0gACAAKALALUEgayIBNgLALQsgAUEJTgRAIAAgACgCECIBQQFqNgIQIAEgACgCBGogACkDuC0iAjwAACAAIAAoAhAiAUEBajYCECABIAAoAgRqIAJCCIg8AAAgACAAKQO4LUIQiDcDuC0gACAAKALALUEQayIBNgLALQsgAUEBSA0AIAAgACgCECIBQQFqNgIQIAEgACgCBGogACkDuC08AAALIABBADYCwC0gAEIANwO4LQvwBAEDfyAAQYgBaiECA0AgAiABQQJ0IgNqQQA7AQAgAiADQQRyakEAOwEAIAFBAmoiAUGeAkcNAAsgAEEAOwHwFCAAQQA7AfwSIABBuBVqQQA7AQAgAEG0FWpBADsBACAAQbAVakEAOwEAIABBrBVqQQA7AQAgAEGoFWpBADsBACAAQaQVakEAOwEAIABBoBVqQQA7AQAgAEGcFWpBADsBACAAQZgVakEAOwEAIABBlBVqQQA7AQAgAEGQFWpBADsBACAAQYwVakEAOwEAIABBiBVqQQA7AQAgAEGEFWpBADsBACAAQYAVakEAOwEAIABB/BRqQQA7AQAgAEH4FGpBADsBACAAQfQUakEAOwEAIABB8BNqQQA7AQAgAEHsE2pBADsBACAAQegTakEAOwEAIABB5BNqQQA7AQAgAEHgE2pBADsBACAAQdwTakEAOwEAIABB2BNqQQA7AQAgAEHUE2pBADsBACAAQdATakEAOwEAIABBzBNqQQA7AQAgAEHIE2pBADsBACAAQcQTakEAOwEAIABBwBNqQQA7AQAgAEG8E2pBADsBACAAQbgTakEAOwEAIABBtBNqQQA7AQAgAEGwE2pBADsBACAAQawTakEAOwEAIABBqBNqQQA7AQAgAEGkE2pBADsBACAAQaATakEAOwEAIABBnBNqQQA7AQAgAEGYE2pBADsBACAAQZQTakEAOwEAIABBkBNqQQA7AQAgAEGME2pBADsBACAAQYgTakEAOwEA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AAwFCyABLQAPDQQgASgCrEAgASgCqEAoAggRAgCsIQUMBAsgA0IIWgR+IAIgASgCADYCACACIAEoAgQ2AgRCCAVCfwshBQwDCyABRQ0CIAEoAqxAIAEoAqhAKAIEEQQAIAEQLyABEAYMAgsgB0F/NgIAQRAgBxAkQj+EIQUMAQsgAQRAIAFBADYCBCABQRQ2AgALQn8hBQsgB0EQaiQAIAULYwBByAAQCCIARQRAQfibASgCACEBIAIEQCACIAE2AgQgAkEBNgIACyAADwsgAEEAOgAMIABBADoABCAAIAI2AgAgAEEANgI4IABCADcDMCAAIAFBCSABQQFrQQlJGzYCCCAAC0gBAX8gAEIANwIEIAAgATYCAAJAIAFBAEgNAEGwEygCACABTA0AIAFBAnRBwBNqKAIAQQFHDQBB+JsBKAIAIQILIAAgAjYCBAvuhwECJH8BfiACKQMAIScgACABNgIcIAAgJ0L/////DyAnQv////8PVBs+AiAgAEEQaiEKAn8gAC0ABARAAn8gAC0ADEECdCENQX4hAQJAAkACQCAKRQ0AIAooAiBFDQAgCigCJEUNACAKKAIcIgNFDQAgAygCACAKRw0AAkACQCADKAIgIgVBOWsOOQECAgICAgICAgICAgECAgIBAgICAgICAgICAgICAgICAgIBAgICAgICAgICAgIBAgICAgICAgICAQALIAVBmgVGDQAgBUEqRw0BCyANQQVLDQACQAJAIAooAgxFDQAgCigCBCIEBEAgCigCAEUNAQsgBUGaBUcNASANQQRGDQELIApBkPEAKAIANgIYQX4MBAsgCigCEEUNASADKAIkIQEgAyANNgIkAkAgAygCEARAIAMQFAJAIAooAhAiBSADKAIQIgkgBSAJSRsiAUUNACAKKAIMIAMoAgggARAJGiAKIAooAgwgAWo2AgwgAyADKAIIIAFqNgIIIAogCigCFCABajYCFCAKIAooAhAgAWsiBTYCECADIAMoAhAgAWsiCTYCECAJDQAgAyADKAIENgIIQQAhCQsgBQRAIAMoAiAhBQwCCwwECyAEDQAgDUEBdEF3QQAgDUEESxtqIAFBAXRBd0EAIAFBBEobakoNACANQQRGDQAMAgsCQAJAAkACQAJAIAVBKkcEQCAFQZoFRw0BIAooAgRFDQMMBwsgAygCFEUEQCADQfEANgIgDAILIAMoAjRBDHRBgPABayEBAkAgAygCfEECTg0AIAMoAngiBEEBTA0AIARBBUwEQCABQcAAciEBDAELQYABQcABIARBBkYbIAFyIQELIAMgCUEBajYCECADKAIEIAlqIAFBIHIgASADKAJkGyIBQQh2OgAAIAMgAygCECIEQQFqNgIQIAQgAygCBGogAUEfcCABckEfczoAACADKAJkBEAgAyAKKAIwEF0LIApBATYCMCADQfEANgIgIAoQDCADKAIQDQcgAygCICEFCwJAAkACQAJAIAVBOUYEfyADKAIAQQA2AjAgAyADKAIQIgFBAWo2AhAgASADKAIEakEfOgAAIAMgAygCECIBQQFqNgIQIAEgAygCBGpBiwE6AAAgAyADKAIQIgFBAWo2AhAgASADKAIEakEIOgAAAkAgAygCHCIBRQRAIANBABA0IAMgAygCECIBQQFqNgIQIAEgAygCBGpBADoAAEECIQEgAygCeCIEQQlHBEBBBCAEQQJIQQJ0IAMoAnxBAUobIQELIAMgAygCECIEQQFqNgIQIAQgAygCBGogAToAACADIAMoAhAiAUEBajYCECABIAMoAgRqQQM6AAAgA0HxADYCICAKEAwgAygCEEUNAQwNCyABKAIkIQQgASgCHCEFIAEoAhAhByABKAIsIQkgASgCACELIAMgAygCECIIQQFqNgIQQQIhASAIIAMoAgRqIAlBAEdBAXQgC0EAR3IgB0EAR0ECdHIgBUEAR0EDdHIgBEEAR0EEdHI6AAAgAyADKAIcKAIEEDQgAygCeCIEQQlHBEBBBCAEQQJIQQJ0IAMoAnxBAUobIQELIAMgAygCECIEQQFqNgIQIAQgAygCBGogAToAACADKAIcKAIMIQEgAyADKAIQIgRBAWo2AhAgBCADKAIEaiABOgAAIAMoAhwiASgCEAR/IAEoAhQhASADIAMoAhAiBEEBajYCECAEIAMoAgRqIAE6AAAgAyADKAIQIgRBAWo2AhAgBCADKAIEaiABQQh2OgAAIAMoAhwFIAELKAIsBEAgCgJ/IAooAjAhASADKAIQIQRBACADKAIEIgVFDQAaIAEgBSAErUHMmAEoAgARAwALNgIwCyADQcUANgIgIANBADYCGAwCCyADKAIgBSAFC0HFAGsOIwAEBAQBBAQEBAQEBAQEBAQEBAQEBAQCBAQEBAQEBAQEBAQDBAsgAygCHCIEKAIQIgUEQCADKAIMIgkgAygCECIBIAQvARQgAygCGCIHayIEakkEQANAIAMoAgQgAWogBSAHaiAJIAFrIgkQCRogAyADKAIMIgU2AhACQCADKAIcKAIsRQ0AIAEgBU8NACAKAn8gCigCMCEHQQAgAygCBCABaiILRQ0AGiAHIAsgBSABa61BzJgBKAIAEQMACzYCMAsgAyADKAIYIAlqNgIYIAooAhwiARAUAkAgCigCECIFIAEoAhAiByAFIAdJGyIFRQ0AIAooAgwgASgCCCAFEAkaIAogCigCDCAFajYCDCABIAEoAgggBWo2AgggCiAKKAIUIAVqNgIUIAogCigCECAFazYCECABIAEoAhAgBWsiBTYCECAFDQAgASABKAIENgIICyADKAIQDQwgAygCGCEHIAMoAhwoAhAhBUEAIQEgBCAJayIEIAMoAgwiCUsNAAsLIAMoAgQgAWogBSAHaiAEEAkaIAMgAygCECAEaiIENgIQAkAgAygCHCgCLEUNACABIARPDQAgCgJ/IAooAjAhBUEAIAMoAgQgAWoiB0UNABogBSAHIAQgAWutQcyYASgCABEDAAs2AjALIANBADYCGAsgA0HJADYCIAsgAygCHCgCHARAIAMoAhAiASEEA0ACQCABIAMoAgxHDQACQCADKAIcKAIsRQ0AIAEgBE0NACAKAn8gCigCMCEFQQAgAygCBCAEaiIHRQ0AGiAFIAcgASAEa61BzJgBKAIAEQMACzYCMAsgCigCHCIBEBQCQCAKKAIQIgQgASgCECIFIAQgBUkbIgRFDQAgCigCDCABKAIIIAQQCRogCiAKKAIMIARqNgIMIAEgASgCCCAEajYCCCAKIAooAhQgBGo2AhQgCiAKKAIQIARrNgIQIAEgASgCECAEayIENgIQIAQNACABIAEoAgQ2AggLQQAhAUEAIQQgAygCEEUNAAwLCyADKAIcKAIcIQUgAyADKAIYIgdBAWo2AhggBSAHai0AACEFIAMgAUEBajYCECADKAIEIAFqIAU6AAAgBQRAIAMoAhAhAQwBCwsCQCADKAIcKAIsRQ0AIAMoAhAiASAETQ0AIAoCfyAKKAIwIQVBACADKAIEIARqIgdFDQAaIAUgByABIARrrUHMmAEoAgARAwALNgIwCyADQQA2AhgLIANB2wA2AiALAkAgAygCHCgCJEUNACADKAIQIgEhBANAAkAgASADKAIMRw0AAkAgAygCHCgCLEUNACABIARNDQAgCgJ/IAooAjAhBUEAIAMoAgQgBGoiB0UNABogBSAHIAEgBGutQcyYASgCABEDAAs2AjALIAooAhwiARAUAkAgCigCECIEIAEoAhAiBSAEIAVJGyIERQ0AIAooAgwgASgCCCAEEAkaIAogCigCDCAEajYCDCABIAEoAgggBGo2AgggCiAKKAIUIARqNgIUIAogCigCECAEazYCECABIAEoAhAgBGsiBDYCECAEDQAgASABKAIENgIIC0EAIQFBACEEIAMoAhBFDQAMCgsgAygCHCgCJCEFIAMgAygCGCIHQQFqNgIYIAUgB2otAAAhBSADIAFBAWo2AhAgAygCBCABaiAFOgAAIAUEQCADKAIQIQEMAQsLIAMoAhwoAixFDQAgAygCECIBIARNDQAgCgJ/IAooAjAhBUEAIAMoAgQgBGoiB0UNABogBSAHIAEgBGutQcyYASgCABEDAAs2AjALIANB5wA2AiALAkAgAygCHCgCLARAIAMoAgwgAygCECIBQQJqSQRAIAoQDCADKAIQDQJBACEBCyAKKAIwIQQgAyABQQFqNgIQIAMoAgQgAWogBDoAACADIAMoAhAiAUEBajYCECABIAMoAgRqIARBCHY6AAAgAygCAEEANgIwCyADQfEANgIgIAoQDCADKAIQRQ0BDAcLDAYLIAooAgQNAQsgAygCPA0AIA1FDQEgAygCIEGaBUYNAQsCfyADKAJ4IgFFBEAgAyANEFwMAQsCQAJAAkAgAygCfEECaw4CAAECCwJ/AkADQAJAIAMoAjwNACADECkgAygCPA0AIA0NAkEADAMLIAMoAkggAygCZGotAAAhASADIAMoApQtIgRBAWo2ApQtIAQgAygCkC1qQQA6AAAgAyADKAKULSIEQQFqNgKULSAEIAMoApAtakEAOgAAIAMgAygClC0iBEEBajYClC0gBCADKAKQLWogAToAACADIAFBAnRqIgEgAS8BiAFBAWo7AYgBIAMgAygCPEEBazYCPCADIAMoAmRBAWoiBDYCZCADKAKULSADKAKYLUcNACADIAMoAlQiAUEATgR/IAMoAkggAWoFQQALIAQgAWtBABAPIAMgAygCZDYCVCADKAIAIgEoAhwiBBAUAkAgASgCECIFIAQoAhAiByAFIAdJGyIFRQ0AIAEoAgwgBCgCCCAFEAkaIAEgASgCDCAFajYCDCAEIAQoAgggBWo2AgggASABKAIUIAVqNgIUIAEgASgCECAFazYCECAEIAQoAhAgBWsiATYCECABDQAgBCAEKAIENgIICyADKAIAKAIQDQALQQAMAQsgA0EANgKoLSANQQRGBEAgAyADKAJUIgFBAE4EfyADKAJIIAFqBUEACyADKAJkIAFrQQEQDyADIAMoAmQ2AlQgAygCACIBKAIcIgQQFAJAIAEoAhAiBSAEKAIQIgcgBSAHSRsiBUUNACABKAIMIAQoAgggBRAJGiABIAEoAgwgBWo2AgwgBCAEKAIIIAVqNgIIIAEgASgCFCAFajYCFCABIAEoAhAgBWs2AhAgBCAEKAIQIAVrIgE2AhAgAQ0AIAQgBCgCBDYCCAtBA0ECIAMoAgAoAhAbDAELAkAgAygClC1FDQAgAyADKAJUIgFBAE4EfyADKAJIIAFqBUEACyADKAJkIAFrQQAQDyADIAMoAmQ2AlQgAygCACIBKAIcIgQQFAJAIAEoAhAiBSAEKAIQIgcgBSAHSRsiBUUNACABKAIMIAQoAgggBRAJGiABIAEoAgwgBWo2AgwgBCAEKAIIIAVqNgIIIAEgASgCFCAFajYCFCABIAEoAhAgBWs2AhAgBCAEKAIQIAVrIgE2AhAgAQ0AIAQgBCgCBDYCCAsgAygCACgCEA0AQQAMAQtBAQsMAgsCfwJAA0ACQAJAAkACQCADKAI8IghBggJLDQAgAxApAkAgAygCPCIIQYICSw0AIA0NAEEADAcLIAhFDQUgCEECSw0AIAMoAmQhCwwBCyADKAJkIgtFBEBBACELDAELIAMoAkggC2oiDEEBayIBLQAAIgkgDC0AAEcNACAJIAEtAAJHDQAgCSABLQADRw0AIAxBggJqIQ5BfyEBAkACQAJAAkACQAJAA0AgASAMaiIFLQAEIAlGBEAgCSAFLQAFRw0CIAkgBS0ABkcNAyAJIAUtAAdHDQQgCSAMIAFBCGoiBGoiBy0AAEcNByAJIAUtAAlHDQUgCSAFLQAKRw0GIAkgBUELaiIHLQAARw0HIAFB9wFIIQUgBCEBIAUNAQwHCwsgBUEEaiEHDAULIAVBBWohBwwECyAFQQZqIQcMAwsgBUEHaiEHDAILIAVBCWohBwwBCyAFQQpqIQcLIAggByAOa0GCAmoiASABIAhLGyIBQQJLDQELIAMoAkggC2otAAAhASADIAMoApQtIgRBAWo2ApQtIAQgAygCkC1qQQA6AAAgAyADKAKULSIEQQFqNgKULSAEIAMoApAtakEAOgAAIAMgAygClC0iBEEBajYClC0gBCADKAKQLWogAToAACADIAFBAnRqIgEgAS8BiAFBAWo7AYgBIAMgAygCPEEBazYCPCADIAMoAmRBAWoiCzYCZAwBCyADIAMoApQtIgRBAWo2ApQtIAQgAygCkC1qQQE6AAAgAyADKAKULSIEQQFqNgKULSAEIAMoApAtakEAOgAAIAMgAygClC0iBEEBajYClC0gBCADKAKQLWogAUEDazoAACADIAMoAqQtQQFqNgKkLSABQc3pAGotAABBAnQgA2pBjAlqIgQgBC8BAEEBajsBACADQdDlAC0AAEECdGpB/BJqIgQgBC8BAEEBajsBACADIAMoAjwgAWs2AjwgAyADKAJkIAFqIgs2AmQLIAMoApQtIAMoApgtRw0AIAMgAygCVCIBQQBOBH8gAygCSCABagVBAAsgCyABa0EAEA8gAyADKAJkNgJUIAMoAgAiASgCHCIEEBQCQCABKAIQIgUgBCgCECIHIAUgB0kbIgVFDQAgASgCDCAEKAIIIAUQCRogASABKAIMIAVqNgIMIAQgBCgCCCAFajYCCCABIAEoAhQgBWo2AhQgASABKAIQIAVrNgIQIAQgBCgCECAFayIBNgIQIAENACAEIAQoAgQ2AggLIAMoAgAoAhANAAtBAAwBCyADQQA2AqgtIA1BBEYEQCADIAMoAlQiAUEATgR/IAMoAkggAWoFQQALIAMoAmQgAWtBARAPIAMgAygCZDYCVCADKAIAIgEoAhwiBBAUAkAgASgCECIFIAQoAhAiByAFIAdJGyIFRQ0AIAEoAgwgBCgCCCAFEAkaIAEgASgCDCAFajYCDCAEIAQoAgggBWo2AgggASABKAIUIAVqNgIUIAEgASgCECAFazYCECAEIAQoAhAgBWsiATYCECABDQAgBCAEKAIENgIIC0EDQQIgAygCACgCEBsMAQsCQCADKAKULUUNACADIAMoAlQiAUEATgR/IAMoAkggAWoFQQALIAMoAmQgAWtB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ASABKAIodCIFIAEoAtA3akEBIAMoAiARAAAiAzYCOCADRQ0CIAMgBWpBACABKALQNxAaCyABKAIsIgVFBEAgAUIANwIwIAFBASABKAIodCIFNgIsCyAWIA5rIgMgBU8EQCABKAI4IBEgBWsgBRAJGiABQQA2AjQgASABKAIsNgIwDAELIAEoAjQiDSABKAI4aiARIANrIAMgBSANayIFIAMgBUkbIgUQCRogAyAFayIDBEAgASgCOCARIANrIAMQCRogASADNgI0IAEgASgCLDYCMAwBCyABQQAgASgCNCAFaiIDIAMgASgCLCINRhs2AjQgASgCMCIDIA1PDQAgASADIAVqNgIwCyAKIB8gCigCBGsiBSAKKAIIajYCCCAKIBYgCigCEGsiASAKKAIUajYCFCAGIAYoAiAgAWo2AiACQCAGLQAMQQRxRQ0AIAFFDQAgBgJ/IAYoAhQEQAJ/IAYoAhwhA0EAIAooAgwgAWsiDUUNABogAyANIAGtQcyYASgCABEDAAsMAQsgBigCHCAKKAIMIAFrIAFByJgBKAIAEQAACyIDNgIcIAogAzYCMAsgCiAGKAJAIAYoAghBAEdBBnRqIAYoAgQiA0G//gBGQQd0akGAAiADQcL+AEZBCHQgA0HH/gBGG2o2AiwgBCAEQXsgBBsgASAFchshFwwCCyAGQdL+ADYCBAtBfCEXCyAUQRBqJAAgFwshASACIAIpAwAgADUCIH03AwACQAJAAkACQCABQQVqDgcBAgICAgMAAgtBAQ8LIAAoAhQNAEEDDwsgACgCACIABEAgACABNgIEIABBDTYCAAtBAiEBCyABCwkAIABBAToADAtEAAJAIAJC/////w9YBEAgACgCFEUNAQsgACgCACIABEAgAEEANgIEIABBEjYCAAtBAA8LIAAgATYCECAAIAI+AhRBAQu6AQEEfyAAQRBqIQECfyAALQAEBEAgARBeDAELQX4hAwJAIAFFDQAgASgCIEUNACABKAIkIgRFDQAgASgCHCICRQ0AIAIoAgAgAUcNACACKAIEQbT+AGtBH0sNACACKAI4IgMEQCABKAIoIAMgBBEGACABKAIkIQQgASgCHCECCyABKAIoIAIgBBEGAEEAIQMgAUEANgIcCyADCyIBBEAgACgCACIABEAgACABNgIEIABBDTYCAAsLIAFFC5gMAQZ/IABCADcCECAAQgA3AhwgAEEQaiEBAn8gAC0ABARAAn8gACgCCCECQXohBQJAQesMLQAAQTFHDQBBfiEFIAFFDQAgAUEANgIYIAEoAiAiA0UEQCABQQA2AiggAUECNgIgQQIhAwsgASgCJEUEQCABQQM2AiQLQQYgAiACQX9GGyIGQQBIDQAgBkEJSg0AQXwhBSABKAIoQQFB8C0gAxEAACIERQ0AIAEgBDYCHCAEIAE2AgAgBEENQQ8gBkEBRhsiAzYCNCAEQoCAgICgBTcCHCAEQQA2AhQgBEEBIAN0IgM2AjAgBCADQQFrNgI4IAQgASgCKCADQQIgASgCIBEAADYCSCAEIAEoAiggBCgCMEECIAEoAiARAAAiAzYCTCADQQAgBCgCMEEBdBAaIAEoAihBgIAEQQIgASgCIBEAACEDIARBgIACNgKMLSAEQQA2AkAgBCADNgJQIAQgASgCKEGAgAJBBCABKAIgEQAAIgI2AgQgBCAEKAKMLSIDQQJ0NgIMAkACQCAEKAJIRQ0AIAQoAkxFDQAgBCgCUEUNACACDQELIARBmgU2AiAgAUGY8QAoAgA2AhggARBeGkF8DAILIARBADYCfCAEIAY2AnggBEIANwMoIAQgAiADajYCkC0gBCADQQNsQQNrNgKYLQJ/QX4hBQJAIAFFDQAgASgCIEUNACABKAIkRQ0AIAEoAhwiAkUNACACKAIAIAFHDQACQAJAIAIoAiAiA0E5aw45AQICAgICAgICAgICAQICAgECAgICAgICAgICAgICAgICAgECAgICAgICAgICAgECAgICAgICAgIBAAsgA0GaBUYNACADQSpHDQELIAFBAjYCLCABQQA2AgggAUIANwIUIAJBADYCECACIAIoAgQ2AgggAigCFCIFQX9MBEAgAkEAIAVrIgU2AhQLIAJBOUEqIAVBAkYbNgIgAkAgBUECRgRAIAIoAgBBADYCMAwBCyABQQE2AjALIAJBfjYCJCACQQA2AsAtIAJCADcDuC0gAkGsFmpB8O0ANgIAIAIgAkHwFGo2AqQWIAJBoBZqQdztADYCACACIAJB/BJqNgKYFiACQZQWakHI7QA2AgAgAiACQYgBajYCjBYgAhCNAUEAIQULIAVFCwRAIAEoAhwiAyADKAIwQQF0NgJEIAMoAlBBAEGAgAgQGiADQQA2AlQgA0EANgKoLSADQQA2AjwgA0KAgICAIDcDaCADQgA3A2AgAyADKAJ4QQxsIgFB1NoAai8BADYChAEgAyABQdDaAGovAQA2AoABIAMgAUHS2gBqLwEANgJ0IAMgAUHW2gBqLwEANgJwCwsgBQsMAQsCf0F6QesMLQAAQTFHDQAaQX4gAUUNABogAUEANgIYIAEoAiAiBUUEQCABQQA2AiggAUECNgIgQQIhBQsgASgCJEUEQCABQQM2AiQLQXwgASgCKEEBQdQ3IAURAAAiBkUNABogASAGNgIcIAZBADYCOCAGIAE2AgAgBkG0/gA2AgQgBkHcmAEoAgARCQA2AtA3QX4hBQJAIAFFDQAgASgCIEUNACABKAIkIgJFDQAgASgCHCIERQ0AIAQoAgAgAUcNACAEKAIEQbT+AGtBH0sNAAJAAkAgBCgCOCIDBEAgBCgCKEEPRw0BCyAEQQ82AiggBEEANgIMDAELIAEoAiggAyACEQYAIARBADYCOCABKAIgIQMgBEEPNgIoIARBADYCDCADRQ0BCyABKAIkRQ0AIAEoAhwiAkUNACACKAIAIAFHDQAgAigCBEG0/gBrQR9LDQBBACEFIAJBADYCNCACQgA3AiwgAkEANgIgIAFBADYCCCABQgA3AhQgAigCDCIDBEAgASADQQFxNgIwCyACQrT+ADcCBCACQgA3AjwgAkEANgIkIAJCgICCgBA3AhggAkKAgICAcDcCECACQoGAgIBwNwLENyACIAJBtApqIgM2AnAgAiADNgJUIAIgAzYCUAtBACAFRQ0AGiABKAIoIAYgASgCJBEGACABQQA2AhwgBQsLIgEEQCAAKAIAIgAEQCAAIAE2AgQgAEENNgIACwsgAUULKQEBfyAALQAERQRAQQAPC0ECIQEgACgCCCIAQQNOBH8gAEEHSgVBAgsLBgAgABAGC2MAQcgAEAgiAEUEQEH4mwEoAgAhASACBEAgAiABNgIEIAJBATYCAAsgAA8LIABBADoADCAAQQE6AAQgACACNgIAIABBADYCOCAAQgA3AzAgACABQQkgAUEBa0EJSRs2AgggAAuMCgIBfgJ/IwBB8ABrIgYkAAJAAkACQAJAAkACQAJAAkAgBA4PAAEHAgQFBgYGBgYGBgYDBgtCfyEFAkAgACAGQeQAakIMEBEiA0J/VwRAIAEEQCABIAAoAgw2AgAgASAAKAIQNgIECwwBCwJAIANCDFIEQCABBEAgAUEANgIEIAFBETYCAAsMAQsgASgCFCEEQQAhAkIBIQUDQCAGQeQAaiACaiICIAItAAAgBEH9/wNxIgJBAnIgAkEDc2xBCHZzIgI6AAAgBiACOgAoIAECfyABKAIMQX9zIQJBACAGQShqIgRFDQAaIAIgBEIBQcyYASgCABEDAAtBf3MiAjYCDCABIAEoAhAgAkH/AXFqQYWIosAAbEEBaiICNgIQIAYgAkEYdjoAKCABAn8gASgCFEF/cyECQQAgBkEoaiIERQ0AGiACIARCAUHMmAEoAgARAwALQX9zIgQ2AhQgBUIMUgRAIAWnIQIgBUIBfCEFDAELC0IAIQUgACAGQShqECFBAEgNASAGKAJQIQAjAEEQayICJAAgAiAANgIMIAYCfyACQQxqEIkBIgBFBEAgBkEhOwEkQQAMAQsCfyAAKAIUIgRB0ABOBEAgBEEJdAwBCyAAQdAANgIUQYDAAgshBCAGIAAoAgwgBCAAKAIQQQV0ampBoMABajsBJCAAKAIEQQV0IAAoAghBC3RqIAAoAgBBAXZqCzsBJiACQRBqJAAgBi0AbyIAIAYtAFdGDQEgBi0AJyAARg0BIAEEQCABQQA2AgQgAUEbNgIACwtCfyEFCyAGQfAAaiQAIAUPC0J/IQUgACACIAMQESIDQn9XBEAgAQRAIAEgACgCDDYCACABIAAoAhA2AgQLDAYLIwBBEGsiACQAAkAgA1ANACABKAIUIQQgAkUEQEIBIQUDQCAAIAIgB2otAAAgBEH9/wNxIgRBAnIgBEEDc2xBCHZzOgAPIAECfyABKAIMQX9zIQRBACAAQQ9qIgdFDQAaIAQgB0IBQcyYASgCABEDAAtBf3MiBDYCDCABIAEoAhAgBEH/AXFqQYWIosAAbEEBaiIENgIQIAAgBEEYdjoADyABAn8gASgCFEF/cyEEQQAgAEEPaiIHRQ0AGiAEIAdCAUHMmAEoAgARAwALQX9zIgQ2AhQgAyAFUQ0CIAWnIQcgBUIBfCEFDAALAAtCASEFA0AgACACIAdqLQAAIARB/f8DcSIEQQJyIARBA3NsQQh2cyIEOgAPIAIgB2ogBDoAACABAn8gASgCDEF/cyEEQQAgAEEPaiIHRQ0AGiAEIAdCAUHMmAEoAgARAwALQX9zIgQ2AgwgASABKAIQIARB/wFxakGFiKLAAGxBAWoiBDYCECAAIARBGHY6AA8gAQJ/IAEoAhRBf3MhBEEAIABBD2oiB0UNABogBCAHQgFBzJgBKAIAEQMAC0F/cyIENgIUIAMgBVENASAFpyEHIAVCAXwhBQwACwALIABBEGokACADIQUMBQsgAkEAOwEyIAIgAikDACIDQoABhDcDACADQgiDUA0EIAIgAikDIEIMfTcDIAwECyAGQoWAgIBwNwMQIAZCg4CAgMAANwMIIAZCgYCAgCA3AwBBACAGECQhBQwDCyADQghaBH4gAiABKAIANgIAIAIgASgCBDYCBEIIBUJ/CyEFDAILIAEQBgwBCyABBEAgAUEANgIEIAFBEjYCAAtCfyEFCyAGQfAAaiQAIAULrQMCAn8CfiMAQRBrIgYkAAJAAkACQCAERQ0AIAFFDQAgAkEBRg0BC0EAIQMgAEEIaiIABEAgAEEANgIEIABBEjYCAAsMAQsgA0EBcQRAQQAhAyAAQQhqIgAEQCAAQQA2AgQgAEEYNgIACwwBC0EYEAgiBUUEQEEAIQMgAEEIaiIABEAgAEEANgIEIABBDjYCAAsMAQsgBUEANgIIIAVCADcCACAFQZDx2aIDNgIUIAVC+KzRkZHx2aIjNwIMAkAgBBAiIgJFDQAgAq0hCEEAIQNBh9Ou7n4hAkIBIQcDQCAGIAMgBGotAAA6AA8gBSAGQQ9qIgMEfyACIANCAUHMmAEoAgARAwAFQQALQX9zIgI2AgwgBSAFKAIQIAJB/wFxakGFiKLAAGxBAWoiAjYCECAGIAJBGHY6AA8gBQJ/IAUoAhRBf3MhAkEAIAZBD2oiA0UNABogAiADQgFBzJgBKAIAEQMAC0F/czYCFCAHIAhRDQEgBSgCDEF/cyECIAenIQMgB0IBfCEHDAALAAsgACABQSQgBRBDIgMNACAFEAZBACEDCyAGQRBqJAAgAwudGgIGfgV/IwBB0ABrIgskAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMOFAUGFQsDBAkOAAIIEAoPDQcRAREMEQsCQEHIABAIIgEEQCABQgA3AwAgAUIANwMwIAFBADYCKCABQgA3AyAgAUIANwMYIAFCADcDECABQgA3AwggAUIANwM4IAFBCBAIIgM2AgQgAw0BIAEQBiAABEAgAEEANgIEIABBDjYCAAsLIABBADYCFAwUCyADQgA3AwAgACABNgIUIAFBQGtCADcDACABQgA3AzgMFAsCQAJAIAJQBEBByAAQCCIDRQ0UIANCADcDACADQgA3AzAgA0EANgIoIANCADcDICADQgA3AxggA0IANwMQIANCADcDCCADQgA3AzggA0EIEAgiATYCBCABDQEgAxAGIAAEQCAAQQA2AgQgAEEONgIACwwUCyACIAAoAhAiASkDMFYEQCAABEAgAEEANgIEIABBEjYCAAsMFAsgASgCKARAIAAEQCAAQQA2AgQgAEEdNgIACwwUCyABKAIEIQMCQCABKQMIIgZCAX0iB1ANAANAAkAgAiADIAcgBH1CAYggBHwiBadBA3RqKQMAVARAIAVCAX0hBwwBCyAFIAZRBEAgBiEFDAMLIAMgBUIBfCIEp0EDdGopAwAgAlYNAgsgBCEFIAQgB1QNAAsLAkAgAiADIAWnIgpBA3RqKQMAfSIEUEUEQCABKAIAIgMgCkEEdGopAwghBwwBCyABKAIAIgMgBUIBfSIFp0EEdGopAwgiByEECyACIAcgBH1UBEAgAARAIABBADYCBCAAQRw2AgALDBQLIAMgBUIBfCIFQQAgABCHASIDRQ0TIAMoAgAgAygCCCIKQQR0akEIayAENwMAIAMoAgQgCkEDdGogAjcDACADIAI3AzAgAyABKQMYIgYgAykDCCIEQgF9IgcgBiAHVBs3AxggASADNgIoIAMgATYCKCABIAQ3AyAgAyAFNwMgDAELIAFCADcDAAsgACADNgIUIAMgBDcDQCADIAI3AzhCACEEDBMLIAAoAhAiAQRAAkAgASgCKCIDRQRAIAEpAxghAgwBCyADQQA2AiggASgCKEIANwMgIAEgASkDGCICIAEpAyAiBSACIAVWGyICNwMYCyABKQMIIAJWBEADQCABKAIAIAKnQQR0aigCABAGIAJCAXwiAiABKQMIVA0ACwsgASgCABAGIAEoAgQQBiABEAYLIAAoAhQhASAAQQA2AhQgACABNgIQDBILIAJCCFoEfiABIAAoAgA2AgAgASAAKAIENgIEQggFQn8LIQQMEQsgACgCECIBBEACQCABKAIoIgNFBEAgASkDGCECDAELIANBADYCKCABKAIoQgA3AyAgASABKQMYIgIgASkDICIFIAIgBVYbIgI3AxgLIAEpAwggAlYEQANAIAEoAgAgAqdBBHRqKAIAEAYgAkIBfCICIAEpAwhUDQALCyABKAIAEAYgASgCBBAGIAEQBgsgACgCFCIBBEACQCABKAIoIgNFBEAgASkDGCECDAELIANBADYCKCABKAIoQgA3AyAgASABKQMYIgIgASkDICIFIAIgBVYbIgI3AxgLIAEpAwggAlYEQANAIAEoAgAgAqdBBHRqKAIAEAYgAkIBfCICIAEpAwhUDQALCyABKAIAEAYgASgCBBAGIAEQBgsgABAGDBALIAAoAhAiAEIANwM4IABBQGtCADcDAAwPCyACQn9XBEAgAARAIABBADYCBCAAQRI2AgALDA4LIAIgACgCECIDKQMwIAMpAzgiBn0iBSACIAVUGyIFUA0OIAEgAykDQCIHpyIAQQR0IgEgAygCAGoiCigCACAGIAMoAgQgAEEDdGopAwB9IgKnaiAFIAopAwggAn0iBiAFIAZUGyIEpxAJIQogByAEIAMoAgAiACABaikDCCACfVGtfCECIAUgBlYEQANAIAogBKdqIAAgAqdBBHQiAWoiACgCACAFIAR9IgYgACkDCCIHIAYgB1QbIganEAkaIAIgBiADKAIAIgAgAWopAwhRrXwhAiAFIAQgBnwiBFYNAAsLIAMgAjcDQCADIAMpAzggBHw3AzgMDgtCfyEEQcgAEAgiA0UNDSADQgA3AwAgA0IANwMwIANBADYCKCADQgA3AyAgA0IANwMYIANCADcDECADQgA3AwggA0IANwM4IANBCBAIIgE2AgQgAUUEQCADEAYgAARAIABBADYCBCAAQQ42AgALDA4LIAFCADcDACAAKAIQIgEEQAJAIAEoAigiCkUEQCABKQMYIQQMAQsgCkEANgIoIAEoAihCADcDICABIAEpAxgiAiABKQMgIgUgAiAFVhsiBDcDGAsgASkDCCAEVgRAA0AgASgCACAEp0EEdGooAgAQBiAEQgF8IgQgASkDCFQNAAsLIAEoAgAQBiABKAIEEAYgARAGCyAAIAM2AhBCACEEDA0LIAAoAhQiAQRAAkAgASgCKCIDRQRAIAEpAxghAgwBCyADQQA2AiggASgCKEIANwMgIAEgASkDGCICIAEpAyAiBSACIAVWGyICNwMYCyABKQMIIAJWBEADQCABKAIAIAKnQQR0aigCABAGIAJCAXwiAiABKQMIVA0ACwsgASgCABAGIAEoAgQQBiABEAYLIABBADYCFAwMCyAAKAIQIgMpAzggAykDMCABIAIgABBFIgdCAFMNCiADIAc3AzgCQCADKQMIIgZCAX0iAlANACADKAIEIQADQAJAIAcgACACIAR9QgGIIAR8IgWnQQN0aikDAFQEQCAFQgF9IQIMAQsgBSAGUQRAIAYhBQwDCyAAIAVCAXwiBKdBA3RqKQMAIAdWDQILIAQhBSACIARWDQALCyADIAU3A0BCACEEDAsLIAAoAhQiAykDOCADKQMwIAEgAiAAEEUiB0IAUw0JIAMgBzcDOAJAIAMpAwgiBkIBfSICUA0AIAMoAgQhAANAAkAgByAAIAIgBH1CAYggBHwiBadBA3RqKQMAVARAIAVCAX0hAgwBCyAFIAZRBEAgBiEFDAMLIAAgBUIBfCIEp0EDdGopAwAgB1YNAgsgBCEFIAIgBFYNAAsLIAMgBTcDQEIAIQQMCgsgAkI3WARAIAAEQCAAQQA2AgQgAEESNgIACwwJCyABECogASAAKAIMNgIoIAAoAhApAzAhAiABQQA2AjAgASACNwMgIAEgAjcDGCABQtwBNwMAQjghBAwJCyAAIAEoAgA2AgwMCAsgC0FAa0F/NgIAIAtCi4CAgLACNwM4IAtCjICAgNABNwMwIAtCj4CAgKABNwMoIAtCkYCAgJABNwMgIAtCh4CAgIABNwMYIAtChYCAgOAANwMQIAtCg4CAgMAANwMIIAtCgYCAgCA3AwBBACALECQhBAwHCyAAKAIQKQM4IgRCf1UNBiAABEAgAEE9NgIEIABBHjYCAAsMBQsgACgCFCkDOCIEQn9VDQUgAARAIABBPTYCBCAAQR42AgALDAQLQn8hBCACQn9XBEAgAARAIABBADYCBCAAQRI2AgALDAULIAIgACgCFCIDKQM4IAJ8IgVC//8DfCIEVgRAIAAEQCAAQQA2AgQgAEESNgIACwwECwJAIAUgAygCBCIKIAMpAwgiBqdBA3RqKQMAIgdYDQACQCAEIAd9QhCIIAZ8IgggAykDECIJWA0AQhAgCSAJUBshBQNAIAUiBEIBhiEFIAQgCFQNAAsgBCAJVA0AIAMoAgAgBKciCkEEdBAzIgxFDQMgAyAMNgIAIAMoAgQgCkEDdEEIahAzIgpFDQMgAyAENwMQIAMgCjYCBCADKQMIIQYLIAYgCFoNACADKAIAIQwDQCAMIAanQQR0aiINQYCABBAIIg42AgAgDkUEQCAABEAgAEEANgIEIABBDjYCAAsMBgsgDUKAgAQ3AwggAyAGQgF8IgU3AwggCiAFp0EDdGogB0KAgAR8Igc3AwAgAykDCCIGIAhUDQALCyADKQNAIQUgAykDOCEHAkAgAlAEQEIAIQQMAQsgBaciAEEEdCIMIAMoAgBqIg0oAgAgByAKIABBA3RqKQMAfSIGp2ogASACIA0pAwggBn0iByACIAdUGyIEpxAJGiAFIAQgAygCACIAIAxqKQMIIAZ9Ua18IQUgAiAHVgRAA0AgACAFp0EEdCIKaiIAKAIAIAEgBKdqIAIgBH0iBiAAKQMIIgcgBiAHVBsiBqcQCRogBSAGIAMoAgAiACAKaikDCFGtfCEFIAQgBnwiBCACVA0ACwsgAykDOCEHCyADIAU3A0AgAyAEIAd8IgI3AzggAiADKQMwWA0EIAMgAjcDMAwECyAABEAgAEEANgIEIABBHDYCAAsMAgsgAARAIABBADYCBCAAQQ42AgALIAAEQCAAQQA2AgQgAEEONgIACwwBCyAAQQA2AhQLQn8hBAsgC0HQAGokACAECwcAIAAvATALBgAgARAGC58DAQV/IwBBEGsiACQAIAEgAmwiAUGAf0sEf0EwBQJ/IAFBgH9PBEBB+JsBQTA2AgBBAAwBC0EAQRAgAUELakF4cSABQQtJGyIFQcwAahAIIgFFDQAaIAFBCGshAgJAIAFBP3FFBEAgAiEBDAELIAFBBGsiBigCACIHQXhxIAFBP2pBQHFBCGsiASABQUBrIAEgAmtBD0sbIgEgAmsiA2shBCAHQQNxRQRAIAIoAgAhAiABIAQ2AgQgASACIANqNgIADAELIAEgBCABKAIEQQFxckECcjYCBCABIARqIgQgBCgCBEEBcjYCBCAGIAMgBigCAEEBcXJBAnI2AgAgAiADaiIEIAQoAgRBAXI2AgQgAiADEDsLAkAgASgCBCICQQNxRQ0AIAJBeHEiAyAFQRBqTQ0AIAEgBSACQQFxckECcjYCBCABIAVqIgIgAyAFayIFQQNyNgIEIAEgA2oiAyADKAIEQQFyNgIEIAIgBRA7CyABQQhqCyIBBH8gACABNgIMQQAFQTALCyEBIAAoAgwhAiAAQRBqJABBACACIAEbCwcAIAAoAiALEgBB2JgBQRU2AgAgACABEJABCxIAQdSYAUEUNgIAIAAgARCRAQsnAEH0mwEtAABFBEBB9JsBQQE6AAALQcyYAUETNgIAIAAgASACEGALFgBB8JgBQRI2AgAgACABIAIgAxCSAQsTAEHsmAFBETYCACAAIAEgAhBWCxMAQeiYAUEQNgIAIAAgASACEFgLFQBB5JgBQQ82AgAgACABIAIgAxBZCwcAIAAoAgALEwBB4JgBQQ42AgAgACABIAIQWgshAEHcmAFBDTYCAEH0mwEtAABFBEBB9JsBQQE6AAALQQgLJwBByJgBQQw2AgBB9JsBLQAARQRAQfSbAUEBOgAACyAAIAEgAhBbCyMAQdCYAUELNgIAQfSbAS0AAEUEQEH0mwFBAToAAAsgABBfCxIAQcSYAUEKNgIAIAAgARCPAQsoAEHAmAFBCTYCAEH0mwEtAABFBEBB9JsBQQE6AAALIAAgASACEI4BCxgAQeibAUIANwIAQfCbAUEANgIAQeibAQuFAQIEfwF+IwBBEGsiASQAAkAgACkDMFAEQAwBCwNAAkAgACAFQQAgAUEPaiABQQhqEGoiBEF/Rg0AIAEtAA9BA0cNACACIAEoAghBgICAgH9xQYCAgIB6RmohAgtBfyEDIARBf0YNASACIQMgBUIBfCIFIAApAzBUDQALCyABQRBqJAAgAwsLho0BJQBBgAgLsQtpbnN1ZmZpY2llbnQgbWVtb3J5AG5lZWQgZGljdGlvbmFyeQAtKyAgIDBYMHgAWmlwIGFyY2hpdmUgaW5jb25zaXN0ZW50AEludmFsaWQgYXJndW1lbnQAaW52YWxpZCBsaXRlcmFsL2xlbmd0aHMgc2V0AGludmFsaWQgY29kZSBsZW5ndGhzIHNldAB1bmtub3duIGhlYWRlciBmbGFncyBzZXQAaW52YWxpZCBkaXN0YW5jZXMgc2V0AGludmFsaWQgYml0IGxlbmd0aCByZXBlYXQARmlsZSBhbHJlYWR5IGV4aXN0cwB0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scwBpbnZhbGlkIHN0b3JlZCBibG9jayBsZW5ndGhzACVzJXMlcwBidWZmZXIgZXJyb3IATm8gZXJyb3IAc3RyZWFtIGVycm9yAFRlbGwgZXJyb3IASW50ZXJuYWwgZXJyb3IAU2VlayBlcnJvcgBXcml0ZSBlcnJvcgBmaWxlIGVycm9yAFJlYWQgZXJyb3IAWmxpYiBlcnJvcgBkYXRhIGVycm9yAENSQyBlcnJvcgBpbmNvbXBhdGlibGUgdmVyc2lvbgBpbnZhbGlkIGNvZGUgLS0gbWlzc2luZyBlbmQtb2YtYmxvY2sAaW5jb3JyZWN0IGhlYWRlciBjaGVjawBpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrAGluY29ycmVjdCBkYXRhIGNoZWNrAGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAGhlYWRlciBjcmMgbWlzbWF0Y2gAMS4yLjExLnpsaWItbmcAaW52YWxpZCB3aW5kb3cgc2l6ZQBSZWFkLW9ubHkgYXJjaGl2ZQBOb3QgYSB6aXAgYXJjaGl2ZQBSZXNvdXJjZSBzdGlsbCBpbiB1c2UATWFsbG9jIGZhaWx1cmUAaW52YWxpZCBibG9jayB0eXBlAEZhaWx1cmUgdG8gY3JlYXRlIHRlbXBvcmFyeSBmaWxlAENhbid0IG9wZW4gZmlsZQBObyBzdWNoIGZpbGUAUHJlbWF0dXJlIGVuZCBvZiBmaWxlAENhbid0IHJlbW92ZSBmaWxlAGludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZQBpbnZhbGlkIGRpc3RhbmNlIGNvZGUAdW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QAc3RyZWFtIGVuZABDb21wcmVzc2VkIGRhdGEgaW52YWxpZABNdWx0aS1kaXNrIHppcCBhcmNoaXZlcyBub3Qgc3VwcG9ydGVkAE9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkAEVuY3J5cHRpb24gbWV0aG9kIG5vdCBzdXBwb3J0ZWQAQ29tcHJlc3Npb24gbWV0aG9kIG5vdCBzdXBwb3J0ZWQARW50cnkgaGFzIGJlZW4gZGVsZXRlZABDb250YWluaW5nIHppcCBhcmNoaXZlIHdhcyBjbG9zZWQAQ2xvc2luZyB6aXAgYXJjaGl2ZSBmYWlsZWQAUmVuYW1pbmcgdGVtcG9yYXJ5IGZpbGUgZmFpbGVkAEVudHJ5IGhhcyBiZWVuIGNoYW5nZWQATm8gcGFzc3dvcmQg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AQAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAABAAAAAQAAAAEAAAABAAAAAUAAAAFAAAABQAAAAUAQeDZAAtlAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAQAAAAFAAAABQAAAAYAAAAGAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACgAAAAoAAAALAAAACwAAAAwAAAAMAAAADQAAAA0AQdjaAAttBAAAAAQABAAIAAQABQAAAAQABAAIAAQABgAAAAQABgAgACAABgAAAAQABAAQABAABwAAAAgAEAAgACAABwAAAAgAEACAAIAABwAAAAgAIACAAAABCAAAACAAgAACAQAECAAAACAAAgECAQAQCABB0NsAC/cJDAAIAIwACABMAAgAzAAIACwACACsAAgAbAAIAOwACAAcAAgAnAAIAFwACADcAAgAPAAIALwACAB8AAgA/AAIAAIACACCAAgAQgAIAMIACAAiAAgAogAIAGIACADiAAgAEgAIAJIACABSAAgA0gAIADIACACyAAgAcgAIAPIACAAKAAgAigAIAEoACADKAAgAKgAIAKoACABqAAgA6gAIABoACACaAAgAWgAIANoACAA6AAgAugAIAHoACAD6AAgABgAIAIYACABGAAgAxgAIACYACACmAAgAZgAIAOYACAAWAAgAlgAIAFYACADWAAgANgAIALYACAB2AAgA9gAIAA4ACACOAAgATgAIAM4ACAAuAAgArgAIAG4ACADuAAgAHgAIAJ4ACABeAAgA3gAIAD4ACAC+AAgAfgAIAP4ACAABAAgAgQAIAEEACADBAAgAIQAIAKEACABhAAgA4QAIABEACACRAAgAUQAIANEACAAxAAgAsQAIAHEACADxAAgACQAIAIkACABJAAgAyQAIACkACACpAAgAaQAIAOkACAAZAAgAmQAIAFkACADZAAgAOQAIALkACAB5AAgA+QAIAAUACACFAAgARQAIAMUACAAlAAgApQAIAGUACADlAAgAFQAIAJUACABVAAgA1QAIADUACAC1AAgAdQAIAPUACAANAAgAjQAIAE0ACADNAAgALQAIAK0ACABtAAgA7QAIAB0ACACdAAgAXQAIAN0ACAA9AAgAvQAIAH0ACAD9AAgAEwAJABMBCQCTAAkAkwEJAFMACQBTAQkA0wAJ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IGRvd24ASG9zdCBpcyB1bnJlYWNoYWJsZQBBZGRyZXNzIGluIHVzZQBCcm9rZW4gcGlwZQBJL08gZXJyb3IATm8gc3VjaCBkZXZpY2Ugb3IgYWRkcmVzcwBCbG9jayBkZXZpY2UgcmVxdWlyZWQATm8gc3VjaCBkZXZpY2UATm90IGEgZGlyZWN0b3J5AElzIGEgZGlyZWN0b3J5AFRleHQgZmlsZSBidXN5AEV4ZWMgZm9ybWF0IGVycm9yAEludmFsaWQgYXJndW1lbnQAQXJndW1lbnQgbGlzdCB0b28gbG9uZwBTeW1ib2xpYyBsaW5rIGxvb3AARmlsZW5hbWUgdG9vIGxvbmcAVG9vIG1hbnkgb3BlbiBmaWxlcyBpbiBzeXN0ZW0ATm8gZmlsZSBkZXNjcmlwdG9ycyBhdmFpbGFibGUAQmFkIGZpbGUgZGVzY3JpcHRvcgBObyBjaGlsZCBwcm9jZXNzAEJhZCBhZGRyZXNzAEZpbGUgdG9vIGxhcmdlAFRvbyBtYW55IGxpbmtzAE5vIGxvY2tzIGF2YWlsYWJsZQBSZXNvdXJjZSBkZWFkbG9jayB3b3VsZCBvY2N1cgBTdGF0ZSBub3QgcmVjb3ZlcmFibGUAUHJldmlvdXMgb3duZXIgZGllZABPcGVyYXRpb24gY2FuY2VsZWQARnVuY3Rpb24gbm90IGltcGxlbWVudGVkAE5vIG1lc3NhZ2Ugb2YgZGVzaXJlZCB0eXBlAElkZW50aWZpZXIgcmVtb3ZlZABEZXZpY2Ugbm90IGEgc3RyZWFtAE5vIGRhdGEgYXZhaWxhYmxlAERldmljZSB0aW1lb3V0AE91dCBvZiBzdHJlYW1zIHJlc291cmNlcwBMaW5rIGhhcyBiZWVuIHNldmVyZWQAUHJvdG9jb2wgZXJyb3IAQmFkIG1lc3NhZ2UARmlsZSBkZXNjcmlwdG9yIGluIGJhZCBzdGF0ZQBOb3QgYSBzb2NrZXQARGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZABNZXNzYWdlIHRvbyBsYXJnZQBQcm90b2NvbCB3cm9uZyB0eXBlIGZvciBzb2NrZXQAUHJvdG9jb2wgbm90IGF2YWlsYWJsZQBQcm90b2NvbCBub3Qgc3VwcG9ydGVkAFNvY2tldCB0eXBlIG5vdCBzdXBwb3J0ZWQATm90IHN1cHBvcnRlZABQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRlZABBZGRyZXNzIGZhbWlseSBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sAEFkZHJlc3Mgbm90IGF2YWlsYWJsZQBOZXR3b3JrIGlzIGRvd24ATmV0d29yayB1bnJlYWNoYWJsZQBDb25uZWN0aW9uIHJlc2V0IGJ5IG5ldHdvcmsAQ29ubmVjdGlvbiBhYm9ydGVkAE5vIGJ1ZmZlciBzcGFjZSBhdmFpbGFibGUAU29ja2V0IGlzIGNvbm5lY3RlZABTb2NrZXQgbm90IGNvbm5lY3RlZABDYW5ub3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd24AT3BlcmF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MAT3BlcmF0aW9uIGluIHByb2dyZXNzAFN0YWxlIGZpbGUgaGFuZGxlAFJlbW90ZSBJL08gZXJyb3IAUXVvdGEgZXhjZWVkZWQATm8gbWVkaXVtIGZvdW5kAFdyb25nIG1lZGl1bSB0eXBlAE5vIGVycm9yIGluZm9ybWF0aW9uAEHAmAELdRYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAABwUFAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQBB5JoBCwJQUABBoJsBCxD/////////////////////";to(Di)||(Di=b(Di));function Qs(Be){try{if(Be==Di&&he)return new Uint8Array(he);var xe=Zn(Be);if(xe)return xe;if(R)return R(Be);throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}catch(Je){ki(Je)}}function ro(Be,xe){var Je,vt,tr;try{tr=Qs(Be),vt=new WebAssembly.Module(tr),Je=new WebAssembly.Instance(vt,xe)}catch(Tn){var Zr=Tn.toString();throw re("failed to compile wasm module: "+Zr),(Zr.includes("imported Memory")||Zr.includes("memory import"))&&re("Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."),Tn}return[Je,vt]}function uc(){var Be={a:La};function xe(tr,Zr){var Tn=tr.exports;r.asm=Tn,le=r.asm.g,z(le.buffer),$=r.asm.$,tn(r.asm.h),bs("wasm-instantiate")}if(Hn("wasm-instantiate"),r.instantiateWasm)try{var Je=r.instantiateWasm(Be,xe);return Je}catch(tr){return re("Module.instantiateWasm callback failed with error: "+tr),!1}var vt=ro(Di,Be);return xe(vt[0]),r.asm}function hu(Be){return F.getFloat32(Be,!0)}function op(Be){return F.getFloat64(Be,!0)}function ap(Be){return F.getInt16(Be,!0)}function ks(Be){return F.getInt32(Be,!0)}function Cn(Be,xe){F.setInt32(Be,xe,!0)}function no(Be){for(;Be.length>0;){var xe=Be.shift();if(typeof xe=="function"){xe(r);continue}var Je=xe.func;typeof Je=="number"?xe.arg===void 0?$.get(Je)():$.get(Je)(xe.arg):Je(xe.arg===void 0?null:xe.arg)}}function Fs(Be,xe){var Je=new Date(ks((Be>>2)*4)*1e3);Cn((xe>>2)*4,Je.getUTCSeconds()),Cn((xe+4>>2)*4,Je.getUTCMinutes()),Cn((xe+8>>2)*4,Je.getUTCHours()),Cn((xe+12>>2)*4,Je.getUTCDate()),Cn((xe+16>>2)*4,Je.getUTCMonth()),Cn((xe+20>>2)*4,Je.getUTCFullYear()-1900),Cn((xe+24>>2)*4,Je.getUTCDay()),Cn((xe+36>>2)*4,0),Cn((xe+32>>2)*4,0);var vt=Date.UTC(Je.getUTCFullYear(),0,1,0,0,0,0),tr=(Je.getTime()-vt)/(1e3*60*60*24)|0;return Cn((xe+28>>2)*4,tr),Fs.GMTString||(Fs.GMTString=yt("GMT")),Cn((xe+40>>2)*4,Fs.GMTString),xe}function dl(Be,xe){return Fs(Be,xe)}function ml(Be,xe,Je){je.copyWithin(Be,xe,xe+Je)}function io(Be){try{return le.grow(Be-Qe.byteLength+65535>>>16),z(le.buffer),1}catch{}}function _e(Be){var xe=je.length;Be=Be>>>0;var Je=2147483648;if(Be>Je)return!1;for(var vt=1;vt<=4;vt*=2){var tr=xe*(1+.2/vt);tr=Math.min(tr,Be+100663296);var Zr=Math.min(Je,Te(Math.max(Be,tr),65536)),Tn=io(Zr);if(Tn)return!0}return!1}function Fn(Be){pe(Be)}function Fi(Be){var xe=Date.now()/1e3|0;return Be&&Cn((Be>>2)*4,xe),xe}function Rn(){if(Rn.called)return;Rn.called=!0;var Be=new Date().getFullYear(),xe=new Date(Be,0,1),Je=new Date(Be,6,1),vt=xe.getTimezoneOffset(),tr=Je.getTimezoneOffset(),Zr=Math.max(vt,tr);Cn((mi()>>2)*4,Zr*60),Cn((es()>>2)*4,Number(vt!=tr));function Tn(Ua){var oa=Ua.toTimeString().match(/\(([A-Za-z ]+)\)$/);return oa?oa[1]:"GMT"}var _r=Tn(xe),$n=Tn(Je),Ti=yt(_r),Yn=yt($n);tr<vt?(Cn(($i()>>2)*4,Ti),Cn(($i()+4>>2)*4,Yn)):(Cn(($i()>>2)*4,Yn),Cn(($i()+4>>2)*4,Ti))}function Ui(Be){Rn();var xe=Date.UTC(ks((Be+20>>2)*4)+1900,ks((Be+16>>2)*4),ks((Be+12>>2)*4),ks((Be+8>>2)*4),ks((Be+4>>2)*4),ks((Be>>2)*4),0),Je=new Date(xe);Cn((Be+24>>2)*4,Je.getUTCDay());var vt=Date.UTC(Je.getUTCFullYear(),0,1,0,0,0,0),tr=(Je.getTime()-vt)/(1e3*60*60*24)|0;return Cn((Be+28>>2)*4,tr),Je.getTime()/1e3|0}var Zt=typeof atob=="function"?atob:function(Be){var xe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",Je="",vt,tr,Zr,Tn,_r,$n,Ti,Yn=0;Be=Be.replace(/[^A-Za-z0-9\+\/\=]/g,"");do Tn=xe.indexOf(Be.charAt(Yn++)),_r=xe.indexOf(Be.charAt(Yn++)),$n=xe.indexOf(Be.charAt(Yn++)),Ti=xe.indexOf(Be.charAt(Yn++)),vt=Tn<<2|_r>>4,tr=(_r&15)<<4|$n>>2,Zr=($n&3)<<6|Ti,Je=Je+String.fromCharCode(vt),$n!==64&&(Je=Je+String.fromCharCode(tr)),Ti!==64&&(Je=Je+String.fromCharCode(Zr));while(Yn<Be.length);return Je};function Ri(Be){if(typeof w=="boolean"&&w){var xe;try{xe=Buffer.from(Be,"base64")}catch{xe=new Buffer(Be,"base64")}return new Uint8Array(xe.buffer,xe.byteOffset,xe.byteLength)}try{for(var Je=Zt(Be),vt=new Uint8Array(Je.length),tr=0;tr<Je.length;++tr)vt[tr]=Je.charCodeAt(tr);return vt}catch{throw new Error("Converting base64 string to bytes failed.")}}function Zn(Be){if(!!to(Be))return Ri(Be.slice(gs.length))}var La={e:dl,c:ml,d:_e,a:Fn,b:Fi,f:Ui},$t=uc(),Ac=r.___wasm_call_ctors=$t.h,gu=r._zip_ext_count_symlinks=$t.i,fc=r._zip_file_get_external_attributes=$t.j,yl=r._zipstruct_stat=$t.k,DA=r._zipstruct_statS=$t.l,du=r._zipstruct_stat_name=$t.m,Ce=r._zipstruct_stat_index=$t.n,Rt=r._zipstruct_stat_size=$t.o,pc=r._zipstruct_stat_mtime=$t.p,_i=r._zipstruct_stat_crc=$t.q,mu=r._zipstruct_error=$t.r,qt=r._zipstruct_errorS=$t.s,El=r._zipstruct_error_code_zip=$t.t,SA=r._zipstruct_stat_comp_size=$t.u,lp=r._zipstruct_stat_comp_method=$t.v,hc=r._zip_close=$t.w,PA=r._zip_delete=$t.x,Dn=r._zip_dir_add=$t.y,ui=r._zip_discard=$t.z,gc=r._zip_error_init_with_code=$t.A,xA=r._zip_get_error=$t.B,ta=r._zip_file_get_error=$t.C,Hi=r._zip_error_strerror=$t.D,Lo=r._zip_fclose=$t.E,$e=r._zip_file_add=$t.F,so=r._free=$t.G,Cl=r._malloc=$t.H,yu=r._zip_source_error=$t.I,qi=r._zip_source_seek=$t.J,Eu=r._zip_file_set_external_attributes=$t.K,bA=r._zip_file_set_mtime=$t.L,Oa=r._zip_fopen=$t.M,dc=r._zip_fopen_index=$t.N,ds=r._zip_fread=$t.O,Ot=r._zip_get_name=$t.P,Sn=r._zip_get_num_entries=$t.Q,di=r._zip_source_read=$t.R,ra=r._zip_name_locate=$t.S,oo=r._zip_open_from_source=$t.T,Rs=r._zip_set_file_compression=$t.U,na=r._zip_source_buffer=$t.V,ia=r._zip_source_buffer_create=$t.W,Oo=r._zip_source_close=$t.X,Zi=r._zip_source_free=$t.Y,Ts=r._zip_source_keep=$t.Z,Ns=r._zip_source_open=$t._,Ls=r._zip_source_set_mtime=$t.aa,ao=r._zip_source_tell=$t.ba,Wn=r._zip_stat=$t.ca,qn=r._zip_stat_index=$t.da,$i=r.__get_tzname=$t.ea,es=r.__get_daylight=$t.fa,mi=r.__get_timezone=$t.ga,Ma=r.stackSave=$t.ha,sa=r.stackRestore=$t.ia,ee=r.stackAlloc=$t.ja;r.cwrap=ne,r.getValue=ge;var we;jr=function Be(){we||qe(),we||(jr=Be)};function qe(Be){if(Be=Be||A,fr>0||(ht(),fr>0))return;function xe(){we||(we=!0,r.calledRun=!0,!Pe&&(Ut(),o(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),Xt()))}r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),xe()},1)):xe()}if(r.run=qe,r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return qe(),e}}();typeof hD=="object"&&typeof tT=="object"?tT.exports=eT:typeof define=="function"&&define.amd?define([],function(){return eT}):typeof hD=="object"&&(hD.createModule=eT)});var df,qW,jW,GW=dt(()=>{df=["number","number"],qW=(Z=>(Z[Z.ZIP_ER_OK=0]="ZIP_ER_OK",Z[Z.ZIP_ER_MULTIDISK=1]="ZIP_ER_MULTIDISK",Z[Z.ZIP_ER_RENAME=2]="ZIP_ER_RENAME",Z[Z.ZIP_ER_CLOSE=3]="ZIP_ER_CLOSE",Z[Z.ZIP_ER_SEEK=4]="ZIP_ER_SEEK",Z[Z.ZIP_ER_READ=5]="ZIP_ER_READ",Z[Z.ZIP_ER_WRITE=6]="ZIP_ER_WRITE",Z[Z.ZIP_ER_CRC=7]="ZIP_ER_CRC",Z[Z.ZIP_ER_ZIPCLOSED=8]="ZIP_ER_ZIPCLOSED",Z[Z.ZIP_ER_NOENT=9]="ZIP_ER_NOENT",Z[Z.ZIP_ER_EXISTS=10]="ZIP_ER_EXISTS",Z[Z.ZIP_ER_OPEN=11]="ZIP_ER_OPEN",Z[Z.ZIP_ER_TMPOPEN=12]="ZIP_ER_TMPOPEN",Z[Z.ZIP_ER_ZLIB=13]="ZIP_ER_ZLIB",Z[Z.ZIP_ER_MEMORY=14]="ZIP_ER_MEMORY",Z[Z.ZIP_ER_CHANGED=15]="ZIP_ER_CHANGED",Z[Z.ZIP_ER_COMPNOTSUPP=16]="ZIP_ER_COMPNOTSUPP",Z[Z.ZIP_ER_EOF=17]="ZIP_ER_EOF",Z[Z.ZIP_ER_INVAL=18]="ZIP_ER_INVAL",Z[Z.ZIP_ER_NOZIP=19]="ZIP_ER_NOZIP",Z[Z.ZIP_ER_INTERNAL=20]="ZIP_ER_INTERNAL",Z[Z.ZIP_ER_INCONS=21]="ZIP_ER_INCONS",Z[Z.ZIP_ER_REMOVE=22]="ZIP_ER_REMOVE",Z[Z.ZIP_ER_DELETED=23]="ZIP_ER_DELETED",Z[Z.ZIP_ER_ENCRNOTSUPP=24]="ZIP_ER_ENCRNOTSUPP",Z[Z.ZIP_ER_RDONLY=25]="ZIP_ER_RDONLY",Z[Z.ZIP_ER_NOPASSWD=26]="ZIP_ER_NOPASSWD",Z[Z.ZIP_ER_WRONGPASSWD=27]="ZIP_ER_WRONGPASSWD",Z[Z.ZIP_ER_OPNOTSUPP=28]="ZIP_ER_OPNOTSUPP",Z[Z.ZIP_ER_INUSE=29]="ZIP_ER_INUSE",Z[Z.ZIP_ER_TELL=30]="ZIP_ER_TELL",Z[Z.ZIP_ER_COMPRESSED_DATA=31]="ZIP_ER_COMPRESSED_DATA",Z))(qW||{}),jW=t=>({get HEAP8(){return t.HEAP8},get HEAPU8(){return t.HEAPU8},errors:qW,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_EXCL:2,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:t._malloc(1),uint16S:t._malloc(2),uint32S:t._malloc(4),uint64S:t._malloc(8),malloc:t._malloc,free:t._free,getValue:t.getValue,openFromSource:t.cwrap("zip_open_from_source","number",["number","number","number"]),close:t.cwrap("zip_close","number",["number"]),discard:t.cwrap("zip_discard",null,["number"]),getError:t.cwrap("zip_get_error","number",["number"]),getName:t.cwrap("zip_get_name","string",["number","number","number"]),getNumEntries:t.cwrap("zip_get_num_entries","number",["number","number"]),delete:t.cwrap("zip_delete","number",["number","number"]),stat:t.cwrap("zip_stat","number",["number","string","number","number"]),statIndex:t.cwrap("zip_stat_index","number",["number",...df,"number","number"]),fopen:t.cwrap("zip_fopen","number",["number","string","number"]),fopenIndex:t.cwrap("zip_fopen_index","number",["number",...df,"number"]),fread:t.cwrap("zip_fread","number",["number","number","number","number"]),fclose:t.cwrap("zip_fclose","number",["number"]),dir:{add:t.cwrap("zip_dir_add","number",["number","string"])},file:{add:t.cwrap("zip_file_add","number",["number","string","number","number"]),getError:t.cwrap("zip_file_get_error","number",["number"]),getExternalAttributes:t.cwrap("zip_file_get_external_attributes","number",["number",...df,"number","number","number"]),setExternalAttributes:t.cwrap("zip_file_set_external_attributes","number",["number",...df,"number","number","number"]),setMtime:t.cwrap("zip_file_set_mtime","number",["number",...df,"number","number"]),setCompression:t.cwrap("zip_set_file_compression","number",["number",...df,"number","number"])},ext:{countSymlinks:t.cwrap("zip_ext_count_symlinks","number",["number"])},error:{initWithCode:t.cwrap("zip_error_init_with_code",null,["number","number"]),strerror:t.cwrap("zip_error_strerror","string",["number"])},name:{locate:t.cwrap("zip_name_locate","number",["number","string","number"])},source:{fromUnattachedBuffer:t.cwrap("zip_source_buffer_create","number",["number",...df,"number","number"]),fromBuffer:t.cwrap("zip_source_buffer","number",["number","number",...df,"number"]),free:t.cwrap("zip_source_free",null,["number"]),keep:t.cwrap("zip_source_keep",null,["number"]),open:t.cwrap("zip_source_open","number",["number"]),close:t.cwrap("zip_source_close","number",["number"]),seek:t.cwrap("zip_source_seek","number",["number",...df,"number"]),tell:t.cwrap("zip_source_tell","number",["number"]),read:t.cwrap("zip_source_read","number",["number","number","number"]),error:t.cwrap("zip_source_error","number",["number"]),setMtime:t.cwrap("zip_source_set_mtime","number",["number","number"])},struct:{stat:t.cwrap("zipstruct_stat","number",[]),statS:t.cwrap("zipstruct_statS","number",[]),statName:t.cwrap("zipstruct_stat_name","string",["number"]),statIndex:t.cwrap("zipstruct_stat_index","number",["number"]),statSize:t.cwrap("zipstruct_stat_size","number",["number"]),statCompSize:t.cwrap("zipstruct_stat_comp_size","number",["number"]),statCompMethod:t.cwrap("zipstruct_stat_comp_method","number",["number"]),statMtime:t.cwrap("zipstruct_stat_mtime","number",["number"]),statCrc:t.cwrap("zipstruct_stat_crc","number",["number"]),error:t.cwrap("zipstruct_error","number",[]),errorS:t.cwrap("zipstruct_errorS","number",[]),errorCodeZip:t.cwrap("zipstruct_error_code_zip","number",["number"])}})});function rT(t,e){let r=t.indexOf(e);if(r<=0)return null;let o=r;for(;r>=0&&(o=r+e.length,t[o]!==V.sep);){if(t[r-1]===V.sep)return null;r=t.indexOf(e,o)}return t.length>o&&t[o]!==V.sep?null:t.slice(0,o)}var Ll,WW=dt(()=>{bt();bt();Oc();Ll=class extends Mp{static async openPromise(e,r){let o=new Ll(r);try{return await e(o)}finally{o.saveAndClose()}}constructor(e={}){let r=e.fileExtensions,o=e.readOnlyArchives,a=typeof r>"u"?A=>rT(A,".zip"):A=>{for(let p of r){let h=rT(A,p);if(h)return h}return null},n=(A,p)=>new os(p,{baseFs:A,readOnly:o,stats:A.statSync(p)}),u=async(A,p)=>{let h={baseFs:A,readOnly:o,stats:await A.statPromise(p)};return()=>new os(p,h)};super({...e,factorySync:n,factoryPromise:u,getMountPoint:a})}}});function m8e(t){if(typeof t=="string"&&String(+t)===t)return+t;if(typeof t=="number"&&Number.isFinite(t))return t<0?Date.now()/1e3:t;if(YW.types.isDate(t))return t.getTime()/1e3;throw new Error("Invalid time")}function gD(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var qo,nT,YW,iT,oy,dD,os,sT=dt(()=>{bt();bt();bt();bt();bt();bt();qo=Ie("fs"),nT=Ie("stream"),YW=Ie("util"),iT=tt(Ie("zlib"));$R();oy="mixed";dD=class extends Error{constructor(r,o){super(r);this.name="Libzip Error",this.code=o}},os=class extends Hu{constructor(r,o={}){super();this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;let a=o;if(this.level=typeof a.level<"u"?a.level:oy,r??(r=gD()),typeof r=="string"){let{baseFs:A=new xn}=a;this.baseFs=A,this.path=r}else this.path=null,this.baseFs=null;if(o.stats)this.stats=o.stats;else if(typeof r=="string")try{this.stats=this.baseFs.statSync(r)}catch(A){if(A.code==="ENOENT"&&a.create)this.stats=Nl.makeDefaultStats();else throw A}else this.stats=Nl.makeDefaultStats();this.libzip=NI();let n=this.libzip.malloc(4);try{let A=0;o.readOnly&&(A|=this.libzip.ZIP_RDONLY,this.readOnly=!0),typeof r=="string"&&(r=a.create?gD():this.baseFs.readFileSync(r));let p=this.allocateUnattachedSource(r);try{this.zip=this.libzip.openFromSource(p,A,n),this.lzSource=p}catch(h){throw this.libzip.source.free(p),h}if(this.zip===0){let h=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(h,this.libzip.getValue(n,"i32")),this.makeLibzipError(h)}}finally{this.libzip.free(n)}this.listings.set(wt.root,new Set);let u=this.libzip.getNumEntries(this.zip,0);for(let A=0;A<u;++A){let p=this.libzip.getName(this.zip,A,0);if(V.isAbsolute(p))continue;let h=V.resolve(wt.root,p);this.registerEntry(h,A),p.endsWith("/")&&this.registerListing(h)}if(this.symlinkCount=this.libzip.ext.countSymlinks(this.zip),this.symlinkCount===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.ready=!0}makeLibzipError(r){let o=this.libzip.struct.errorCodeZip(r),a=this.libzip.error.strerror(r),n=new dD(a,this.libzip.errors[o]);if(o===this.libzip.errors.ZIP_ER_CHANGED)throw new Error(`Assertion failed: Unexpected libzip error: ${n.message}`);return n}getExtractHint(r){for(let o of this.entries.keys()){let a=this.pathUtils.extname(o);if(r.relevantExtensions.has(a))return!0}return!1}getAllFiles(){return Array.from(this.entries.keys())}getRealPath(){if(!this.path)throw new Error("ZipFS don't have real paths when loaded from a buffer");return this.path}prepareClose(){if(!this.ready)throw sr.EBUSY("archive closed, close");Fg(this)}getBufferAndClose(){if(this.prepareClose(),this.entries.size===0)return this.discardAndClose(),gD();try{if(this.libzip.source.keep(this.lzSource),this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.libzip.source.open(this.lzSource)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_END)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let r=this.libzip.source.tell(this.lzSource);if(r===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_SET)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let o=this.libzip.malloc(r);if(!o)throw new Error("Couldn't allocate enough memory");try{let a=this.libzip.source.read(this.lzSource,o,r);if(a===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(a<r)throw new Error("Incomplete read");if(a>r)throw new Error("Overread");let n=this.libzip.HEAPU8.subarray(o,o+r);return Buffer.from(n)}finally{this.libzip.free(o)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource),this.ready=!1}}discardAndClose(){this.prepareClose(),this.libzip.discard(this.zip),this.ready=!1}saveAndClose(){if(!this.path||!this.baseFs)throw new Error("ZipFS cannot be saved and must be discarded when loaded from a buffer");if(this.readOnly){this.discardAndClose();return}let r=this.baseFs.existsSync(this.path)||this.stats.mode===Nl.DEFAULT_MODE?void 0:this.stats.mode;this.baseFs.writeFileSync(this.path,this.getBufferAndClose(),{mode:r}),this.ready=!1}resolve(r){return V.resolve(wt.root,r)}async openPromise(r,o,a){return this.openSync(r,o,a)}openSync(r,o,a){let n=this.nextFd++;return this.fds.set(n,{cursor:0,p:r}),n}hasOpenFileHandles(){return!!this.fds.size}async opendirPromise(r,o){return this.opendirSync(r,o)}opendirSync(r,o={}){let a=this.resolveFilename(`opendir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw sr.ENOENT(`opendir '${r}'`);let n=this.listings.get(a);if(!n)throw sr.ENOTDIR(`opendir '${r}'`);let u=[...n],A=this.openSync(a,"r");return oD(this,a,u,{onClose:()=>{this.closeSync(A)}})}async readPromise(r,o,a,n,u){return this.readSync(r,o,a,n,u)}readSync(r,o,a=0,n=o.byteLength,u=-1){let A=this.fds.get(r);if(typeof A>"u")throw sr.EBADF("read");let p=u===-1||u===null?A.cursor:u,h=this.readFileSync(A.p);h.copy(o,a,p,p+n);let C=Math.max(0,Math.min(h.length-p,n));return(u===-1||u===null)&&(A.cursor+=C),C}async writePromise(r,o,a,n,u){return typeof o=="string"?this.writeSync(r,o,u):this.writeSync(r,o,a,n,u)}writeSync(r,o,a,n,u){throw typeof this.fds.get(r)>"u"?sr.EBADF("read"):new Error("Unimplemented")}async closePromise(r){return this.closeSync(r)}closeSync(r){if(typeof this.fds.get(r)>"u")throw sr.EBADF("read");this.fds.delete(r)}createReadStream(r,{encoding:o}={}){if(r===null)throw new Error("Unimplemented");let a=this.openSync(r,"r"),n=Object.assign(new nT.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(A,p)=>{clearImmediate(u),this.closeSync(a),p(A)}}),{close(){n.destroy()},bytesRead:0,path:r,pending:!1}),u=setImmediate(async()=>{try{let A=await this.readFilePromise(r,o);n.bytesRead=A.length,n.end(A)}catch(A){n.destroy(A)}});return n}createWriteStream(r,{encoding:o}={}){if(this.readOnly)throw sr.EROFS(`open '${r}'`);if(r===null)throw new Error("Unimplemented");let a=[],n=this.openSync(r,"w"),u=Object.assign(new nT.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(A,p)=>{try{A?p(A):(this.writeFileSync(r,Buffer.concat(a),o),p(null))}catch(h){p(h)}finally{this.closeSync(n)}}}),{close(){u.destroy()},bytesWritten:0,path:r,pending:!1});return u.on("data",A=>{let p=Buffer.from(A);u.bytesWritten+=p.length,a.push(p)}),u}async realpathPromise(r){return this.realpathSync(r)}realpathSync(r){let o=this.resolveFilename(`lstat '${r}'`,r);if(!this.entries.has(o)&&!this.listings.has(o))throw sr.ENOENT(`lstat '${r}'`);return o}async existsPromise(r){return this.existsSync(r)}existsSync(r){if(!this.ready)throw sr.EBUSY(`archive closed, existsSync '${r}'`);if(this.symlinkCount===0){let a=V.resolve(wt.root,r);return this.entries.has(a)||this.listings.has(a)}let o;try{o=this.resolveFilename(`stat '${r}'`,r,void 0,!1)}catch{return!1}return o===void 0?!1:this.entries.has(o)||this.listings.has(o)}async accessPromise(r,o){return this.accessSync(r,o)}accessSync(r,o=qo.constants.F_OK){let a=this.resolveFilename(`access '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw sr.ENOENT(`access '${r}'`);if(this.readOnly&&o&qo.constants.W_OK)throw sr.EROFS(`access '${r}'`)}async statPromise(r,o={bigint:!1}){return o.bigint?this.statSync(r,{bigint:!0}):this.statSync(r)}statSync(r,o={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`stat '${r}'`,r,void 0,o.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(o.throwIfNoEntry===!1)return;throw sr.ENOENT(`stat '${r}'`)}if(r[r.length-1]==="/"&&!this.listings.has(a))throw sr.ENOTDIR(`stat '${r}'`);return this.statImpl(`stat '${r}'`,a,o)}}async fstatPromise(r,o){return this.fstatSync(r,o)}fstatSync(r,o){let a=this.fds.get(r);if(typeof a>"u")throw sr.EBADF("fstatSync");let{p:n}=a,u=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(u)&&!this.listings.has(u))throw sr.ENOENT(`stat '${n}'`);if(n[n.length-1]==="/"&&!this.listings.has(u))throw sr.ENOTDIR(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,u,o)}async lstatPromise(r,o={bigint:!1}){return o.bigint?this.lstatSync(r,{bigint:!0}):this.lstatSync(r)}lstatSync(r,o={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`lstat '${r}'`,r,!1,o.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(o.throwIfNoEntry===!1)return;throw sr.ENOENT(`lstat '${r}'`)}if(r[r.length-1]==="/"&&!this.listings.has(a))throw sr.ENOTDIR(`lstat '${r}'`);return this.statImpl(`lstat '${r}'`,a,o)}}statImpl(r,o,a={}){let n=this.entries.get(o);if(typeof n<"u"){let u=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,n,0,0,u)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let p=this.stats.uid,h=this.stats.gid,C=this.libzip.struct.statSize(u)>>>0,w=512,v=Math.ceil(C/w),b=(this.libzip.struct.statMtime(u)>>>0)*1e3,E=b,R=b,L=b,_=new Date(E),J=new Date(R),re=new Date(L),oe=new Date(b),pe=this.listings.has(o)?qo.constants.S_IFDIR:this.isSymbolicLink(n)?qo.constants.S_IFLNK:qo.constants.S_IFREG,he=pe===qo.constants.S_IFDIR?493:420,ve=pe|this.getUnixMode(n,he)&511,ge=this.libzip.struct.statCrc(u),le=Object.assign(new Nl.StatEntry,{uid:p,gid:h,size:C,blksize:w,blocks:v,atime:_,birthtime:J,ctime:re,mtime:oe,atimeMs:E,birthtimeMs:R,ctimeMs:L,mtimeMs:b,mode:ve,crc:ge});return a.bigint===!0?Nl.convertToBigIntStats(le):le}if(this.listings.has(o)){let u=this.stats.uid,A=this.stats.gid,p=0,h=512,C=0,w=this.stats.mtimeMs,v=this.stats.mtimeMs,b=this.stats.mtimeMs,E=this.stats.mtimeMs,R=new Date(w),L=new Date(v),_=new Date(b),J=new Date(E),re=qo.constants.S_IFDIR|493,oe=0,pe=Object.assign(new Nl.StatEntry,{uid:u,gid:A,size:p,blksize:h,blocks:C,atime:R,birthtime:L,ctime:_,mtime:J,atimeMs:w,birthtimeMs:v,ctimeMs:b,mtimeMs:E,mode:re,crc:oe});return a.bigint===!0?Nl.convertToBigIntStats(pe):pe}throw new Error("Unreachable")}getUnixMode(r,o){if(this.libzip.file.getExternalAttributes(this.zip,r,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?o:this.libzip.getValue(this.libzip.uint32S,"i32")>>>16}registerListing(r){let o=this.listings.get(r);if(o)return o;this.registerListing(V.dirname(r)).add(V.basename(r));let n=new Set;return this.listings.set(r,n),n}registerEntry(r,o){this.registerListing(V.dirname(r)).add(V.basename(r)),this.entries.set(r,o)}unregisterListing(r){this.listings.delete(r);let o=this.listings.get(V.dirname(r));o==null||o.delete(V.basename(r))}unregisterEntry(r){this.unregisterListing(r);let o=this.entries.get(r);this.entries.delete(r),!(typeof o>"u")&&(this.fileSources.delete(o),this.isSymbolicLink(o)&&this.symlinkCount--)}deleteEntry(r,o){if(this.unregisterEntry(r),this.libzip.delete(this.zip,o)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}resolveFilename(r,o,a=!0,n=!0){if(!this.ready)throw sr.EBUSY(`archive closed, ${r}`);let u=V.resolve(wt.root,o);if(u==="/")return wt.root;let A=this.entries.get(u);if(a&&A!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(A)){let p=this.getFileSource(A).toString();return this.resolveFilename(r,V.resolve(V.dirname(u),p),!0,n)}else return u;for(;;){let p=this.resolveFilename(r,V.dirname(u),!0,n);if(p===void 0)return p;let h=this.listings.has(p),C=this.entries.has(p);if(!h&&!C){if(n===!1)return;throw sr.ENOENT(r)}if(!h)throw sr.ENOTDIR(r);if(u=V.resolve(p,V.basename(u)),!a||this.symlinkCount===0)break;let w=this.libzip.name.locate(this.zip,u.slice(1),0);if(w===-1)break;if(this.isSymbolicLink(w)){let v=this.getFileSource(w).toString();u=V.resolve(V.dirname(u),v)}else break}return u}allocateBuffer(r){Buffer.isBuffer(r)||(r=Buffer.from(r));let o=this.libzip.malloc(r.byteLength);if(!o)throw new Error("Couldn't allocate enough memory");return new Uint8Array(this.libzip.HEAPU8.buffer,o,r.byteLength).set(r),{buffer:o,byteLength:r.byteLength}}allocateUnattachedSource(r){let o=this.libzip.struct.errorS(),{buffer:a,byteLength:n}=this.allocateBuffer(r),u=this.libzip.source.fromUnattachedBuffer(a,n,0,1,o);if(u===0)throw this.libzip.free(o),this.makeLibzipError(o);return u}allocateSource(r){let{buffer:o,byteLength:a}=this.allocateBuffer(r),n=this.libzip.source.fromBuffer(this.zip,o,a,0,1);if(n===0)throw this.libzip.free(o),this.makeLibzipError(this.libzip.getError(this.zip));return n}setFileSource(r,o){let a=Buffer.isBuffer(o)?o:Buffer.from(o),n=V.relative(wt.root,r),u=this.allocateSource(o);try{let A=this.libzip.file.add(this.zip,n,u,this.libzip.ZIP_FL_OVERWRITE);if(A===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.level!=="mixed"){let p=this.level===0?this.libzip.ZIP_CM_STORE:this.libzip.ZIP_CM_DEFLATE;if(this.libzip.file.setCompression(this.zip,A,0,p,this.level)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}return this.fileSources.set(A,a),A}catch(A){throw this.libzip.source.free(u),A}}isSymbolicLink(r){if(this.symlinkCount===0)return!1;if(this.libzip.file.getExternalAttributes(this.zip,r,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?!1:(this.libzip.getValue(this.libzip.uint32S,"i32")>>>16&qo.constants.S_IFMT)===qo.constants.S_IFLNK}getFileSource(r,o={asyncDecompress:!1}){let a=this.fileSources.get(r);if(typeof a<"u")return a;let n=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,r,0,0,n)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let A=this.libzip.struct.statCompSize(n),p=this.libzip.struct.statCompMethod(n),h=this.libzip.malloc(A);try{let C=this.libzip.fopenIndex(this.zip,r,0,this.libzip.ZIP_FL_COMPRESSED);if(C===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let w=this.libzip.fread(C,h,A,0);if(w===-1)throw this.makeLibzipError(this.libzip.file.getError(C));if(w<A)throw new Error("Incomplete read");if(w>A)throw new Error("Overread");let v=this.libzip.HEAPU8.subarray(h,h+A),b=Buffer.from(v);if(p===0)return this.fileSources.set(r,b),b;if(o.asyncDecompress)return new Promise((E,R)=>{iT.default.inflateRaw(b,(L,_)=>{L?R(L):(this.fileSources.set(r,_),E(_))})});{let E=iT.default.inflateRawSync(b);return this.fileSources.set(r,E),E}}finally{this.libzip.fclose(C)}}finally{this.libzip.free(h)}}async fchmodPromise(r,o){return this.chmodPromise(this.fdToPath(r,"fchmod"),o)}fchmodSync(r,o){return this.chmodSync(this.fdToPath(r,"fchmodSync"),o)}async chmodPromise(r,o){return this.chmodSync(r,o)}chmodSync(r,o){if(this.readOnly)throw sr.EROFS(`chmod '${r}'`);o&=493;let a=this.resolveFilename(`chmod '${r}'`,r,!1),n=this.entries.get(a);if(typeof n>"u")throw new Error(`Assertion failed: The entry should have been registered (${a})`);let A=this.getUnixMode(n,qo.constants.S_IFREG|0)&-512|o;if(this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,A<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async fchownPromise(r,o,a){return this.chownPromise(this.fdToPath(r,"fchown"),o,a)}fchownSync(r,o,a){return this.chownSync(this.fdToPath(r,"fchownSync"),o,a)}async chownPromise(r,o,a){return this.chownSync(r,o,a)}chownSync(r,o,a){throw new Error("Unimplemented")}async renamePromise(r,o){return this.renameSync(r,o)}renameSync(r,o){throw new Error("Unimplemented")}async copyFilePromise(r,o,a){let{indexSource:n,indexDest:u,resolvedDestP:A}=this.prepareCopyFile(r,o,a),p=await this.getFileSource(n,{asyncDecompress:!0}),h=this.setFileSource(A,p);h!==u&&this.registerEntry(A,h)}copyFileSync(r,o,a=0){let{indexSource:n,indexDest:u,resolvedDestP:A}=this.prepareCopyFile(r,o,a),p=this.getFileSource(n),h=this.setFileSource(A,p);h!==u&&this.registerEntry(A,h)}prepareCopyFile(r,o,a=0){if(this.readOnly)throw sr.EROFS(`copyfile '${r} -> '${o}'`);if((a&qo.constants.COPYFILE_FICLONE_FORCE)!==0)throw sr.ENOSYS("unsupported clone operation",`copyfile '${r}' -> ${o}'`);let n=this.resolveFilename(`copyfile '${r} -> ${o}'`,r),u=this.entries.get(n);if(typeof u>"u")throw sr.EINVAL(`copyfile '${r}' -> '${o}'`);let A=this.resolveFilename(`copyfile '${r}' -> ${o}'`,o),p=this.entries.get(A);if((a&(qo.constants.COPYFILE_EXCL|qo.constants.COPYFILE_FICLONE_FORCE))!==0&&typeof p<"u")throw sr.EEXIST(`copyfile '${r}' -> '${o}'`);return{indexSource:u,resolvedDestP:A,indexDest:p}}async appendFilePromise(r,o,a){if(this.readOnly)throw sr.EROFS(`open '${r}'`);return typeof a>"u"?a={flag:"a"}:typeof a=="string"?a={flag:"a",encoding:a}:typeof a.flag>"u"&&(a={flag:"a",...a}),this.writeFilePromise(r,o,a)}appendFileSync(r,o,a={}){if(this.readOnly)throw sr.EROFS(`open '${r}'`);return typeof a>"u"?a={flag:"a"}:typeof a=="string"?a={flag:"a",encoding:a}:typeof a.flag>"u"&&(a={flag:"a",...a}),this.writeFileSync(r,o,a)}fdToPath(r,o){var n;let a=(n=this.fds.get(r))==null?void 0:n.p;if(typeof a>"u")throw sr.EBADF(o);return a}async writeFilePromise(r,o,a){let{encoding:n,mode:u,index:A,resolvedP:p}=this.prepareWriteFile(r,a);A!==void 0&&typeof a=="object"&&a.flag&&a.flag.includes("a")&&(o=Buffer.concat([await this.getFileSource(A,{asyncDecompress:!0}),Buffer.from(o)])),n!==null&&(o=o.toString(n));let h=this.setFileSource(p,o);h!==A&&this.registerEntry(p,h),u!==null&&await this.chmodPromise(p,u)}writeFileSync(r,o,a){let{encoding:n,mode:u,index:A,resolvedP:p}=this.prepareWriteFile(r,a);A!==void 0&&typeof a=="object"&&a.flag&&a.flag.includes("a")&&(o=Buffer.concat([this.getFileSource(A),Buffer.from(o)])),n!==null&&(o=o.toString(n));let h=this.setFileSource(p,o);h!==A&&this.registerEntry(p,h),u!==null&&this.chmodSync(p,u)}prepareWriteFile(r,o){if(typeof r=="number"&&(r=this.fdToPath(r,"read")),this.readOnly)throw sr.EROFS(`open '${r}'`);let a=this.resolveFilename(`open '${r}'`,r);if(this.listings.has(a))throw sr.EISDIR(`open '${r}'`);let n=null,u=null;typeof o=="string"?n=o:typeof o=="object"&&({encoding:n=null,mode:u=null}=o);let A=this.entries.get(a);return{encoding:n,mode:u,resolvedP:a,index:A}}async unlinkPromise(r){return this.unlinkSync(r)}unlinkSync(r){if(this.readOnly)throw sr.EROFS(`unlink '${r}'`);let o=this.resolveFilename(`unlink '${r}'`,r);if(this.listings.has(o))throw sr.EISDIR(`unlink '${r}'`);let a=this.entries.get(o);if(typeof a>"u")throw sr.EINVAL(`unlink '${r}'`);this.deleteEntry(o,a)}async utimesPromise(r,o,a){return this.utimesSync(r,o,a)}utimesSync(r,o,a){if(this.readOnly)throw sr.EROFS(`utimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r);this.utimesImpl(n,a)}async lutimesPromise(r,o,a){return this.lutimesSync(r,o,a)}lutimesSync(r,o,a){if(this.readOnly)throw sr.EROFS(`lutimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r,!1);this.utimesImpl(n,a)}utimesImpl(r,o){this.listings.has(r)&&(this.entries.has(r)||this.hydrateDirectory(r));let a=this.entries.get(r);if(a===void 0)throw new Error("Unreachable");if(this.libzip.file.setMtime(this.zip,a,0,m8e(o),0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async mkdirPromise(r,o){return this.mkdirSync(r,o)}mkdirSync(r,{mode:o=493,recursive:a=!1}={}){if(a)return this.mkdirpSync(r,{chmod:o});if(this.readOnly)throw sr.EROFS(`mkdir '${r}'`);let n=this.resolveFilename(`mkdir '${r}'`,r);if(this.entries.has(n)||this.listings.has(n))throw sr.EEXIST(`mkdir '${r}'`);this.hydrateDirectory(n),this.chmodSync(n,o)}async rmdirPromise(r,o){return this.rmdirSync(r,o)}rmdirSync(r,{recursive:o=!1}={}){if(this.readOnly)throw sr.EROFS(`rmdir '${r}'`);if(o){this.removeSync(r);return}let a=this.resolveFilename(`rmdir '${r}'`,r),n=this.listings.get(a);if(!n)throw sr.ENOTDIR(`rmdir '${r}'`);if(n.size>0)throw sr.ENOTEMPTY(`rmdir '${r}'`);let u=this.entries.get(a);if(typeof u>"u")throw sr.EINVAL(`rmdir '${r}'`);this.deleteEntry(r,u)}hydrateDirectory(r){let o=this.libzip.dir.add(this.zip,V.relative(wt.root,r));if(o===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.registerListing(r),this.registerEntry(r,o),o}async linkPromise(r,o){return this.linkSync(r,o)}linkSync(r,o){throw sr.EOPNOTSUPP(`link '${r}' -> '${o}'`)}async symlinkPromise(r,o){return this.symlinkSync(r,o)}symlinkSync(r,o){if(this.readOnly)throw sr.EROFS(`symlink '${r}' -> '${o}'`);let a=this.resolveFilename(`symlink '${r}' -> '${o}'`,o);if(this.listings.has(a))throw sr.EISDIR(`symlink '${r}' -> '${o}'`);if(this.entries.has(a))throw sr.EEXIST(`symlink '${r}' -> '${o}'`);let n=this.setFileSource(a,r);if(this.registerEntry(a,n),this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,(qo.constants.S_IFLNK|511)<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.symlinkCount+=1}async readFilePromise(r,o){typeof o=="object"&&(o=o?o.encoding:void 0);let a=await this.readFileBuffer(r,{asyncDecompress:!0});return o?a.toString(o):a}readFileSync(r,o){typeof o=="object"&&(o=o?o.encoding:void 0);let a=this.readFileBuffer(r);return o?a.toString(o):a}readFileBuffer(r,o={asyncDecompress:!1}){typeof r=="number"&&(r=this.fdToPath(r,"read"));let a=this.resolveFilename(`open '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw sr.ENOENT(`open '${r}'`);if(r[r.length-1]==="/"&&!this.listings.has(a))throw sr.ENOTDIR(`open '${r}'`);if(this.listings.has(a))throw sr.EISDIR("read");let n=this.entries.get(a);if(n===void 0)throw new Error("Unreachable");return this.getFileSource(n,o)}async readdirPromise(r,o){return this.readdirSync(r,o)}readdirSync(r,o){let a=this.resolveFilename(`scandir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw sr.ENOENT(`scandir '${r}'`);let n=this.listings.get(a);if(!n)throw sr.ENOTDIR(`scandir '${r}'`);let u=[...n];return o!=null&&o.withFileTypes?u.map(A=>Object.assign(this.statImpl("lstat",V.join(r,A)),{name:A})):u}async readlinkPromise(r){let o=this.prepareReadlink(r);return(await this.getFileSource(o,{asyncDecompress:!0})).toString()}readlinkSync(r){let o=this.prepareReadlink(r);return this.getFileSource(o).toString()}prepareReadlink(r){let o=this.resolveFilename(`readlink '${r}'`,r,!1);if(!this.entries.has(o)&&!this.listings.has(o))throw sr.ENOENT(`readlink '${r}'`);if(r[r.length-1]==="/"&&!this.listings.has(o))throw sr.ENOTDIR(`open '${r}'`);if(this.listings.has(o))throw sr.EINVAL(`readlink '${r}'`);let a=this.entries.get(o);if(a===void 0)throw new Error("Unreachable");if(!this.isSymbolicLink(a))throw sr.EINVAL(`readlink '${r}'`);return a}async truncatePromise(r,o=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>"u")throw sr.EINVAL(`open '${r}'`);let u=await this.getFileSource(n,{asyncDecompress:!0}),A=Buffer.alloc(o,0);return u.copy(A),await this.writeFilePromise(r,A)}truncateSync(r,o=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>"u")throw sr.EINVAL(`open '${r}'`);let u=this.getFileSource(n),A=Buffer.alloc(o,0);return u.copy(A),this.writeFileSync(r,A)}async ftruncatePromise(r,o){return this.truncatePromise(this.fdToPath(r,"ftruncate"),o)}ftruncateSync(r,o){return this.truncateSync(this.fdToPath(r,"ftruncateSync"),o)}watch(r,o,a){let n;switch(typeof o){case"function":case"string":case"undefined":n=!0;break;default:({persistent:n=!0}=o);break}if(!n)return{on:()=>{},close:()=>{}};let u=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(u)}}}watchFile(r,o,a){let n=V.resolve(wt.root,r);return ey(this,n,o,a)}unwatchFile(r,o){let a=V.resolve(wt.root,r);return kg(this,a,o)}}});function JW(t,e,r=Buffer.alloc(0),o){let a=new os(r),n=w=>w===e||w.startsWith(`${e}/`)?w.slice(0,e.length):null,u=async(w,v)=>()=>a,A=(w,v)=>a,p={...t},h=new xn(p),C=new Mp({baseFs:h,getMountPoint:n,factoryPromise:u,factorySync:A,magicByte:21,maxAge:1/0,typeCheck:o==null?void 0:o.typeCheck});return RI(KW.default,new Up(C)),a}var KW,VW=dt(()=>{bt();KW=tt(Ie("fs"));sT()});var zW=dt(()=>{WW();sT();VW()});var LI={};Yt(LI,{DEFAULT_COMPRESSION_LEVEL:()=>oy,LibzipError:()=>dD,ZipFS:()=>os,ZipOpenFS:()=>Ll,getArchivePart:()=>rT,getLibzipPromise:()=>E8e,getLibzipSync:()=>y8e,makeEmptyArchive:()=>gD,mountMemoryDrive:()=>JW});function y8e(){return NI()}async function E8e(){return NI()}var XW,Oc=dt(()=>{$R();XW=tt(HW());GW();zW();_W(()=>{let t=(0,XW.default)();return jW(t)})});var $W=U((VPt,ZW)=>{"use strict";function C8e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Og(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Og)}C8e(Og,Error);Og.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var C="",w;for(w=0;w<h.parts.length;w++)C+=h.parts[w]instanceof Array?n(h.parts[w][0])+"-"+n(h.parts[w][1]):n(h.parts[w]);return"["+(h.inverted?"^":"")+C+"]"},any:function(h){return"any character"},end:function(h){return"end of input"},other:function(h){return h.description}};function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(C){return"\\x0"+o(C)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(C){return"\\x"+o(C)})}function n(h){return h.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(C){return"\\x0"+o(C)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(C){return"\\x"+o(C)})}function u(h){return r[h.type](h)}function A(h){var C=new Array(h.length),w,v;for(w=0;w<h.length;w++)C[w]=u(h[w]);if(C.sort(),C.length>0){for(w=1,v=1;w<C.length;w++)C[w-1]!==C[w]&&(C[v]=C[w],v++);C.length=v}switch(C.length){case 1:return C[0];case 2:return C[0]+" or "+C[1];default:return C.slice(0,-1).join(", ")+", or "+C[C.length-1]}}function p(h){return h?'"'+a(h)+'"':"end of input"}return"Expected "+A(t)+" but "+p(e)+" found."};function I8e(t,e){e=e!==void 0?e:{};var r={},o={Start:ag},a=ag,n=function(N){return N||[]},u=function(N,K,te){return[{command:N,type:K}].concat(te||[])},A=function(N,K){return[{command:N,type:K||";"}]},p=function(N){return N},h=";",C=yr(";",!1),w="&",v=yr("&",!1),b=function(N,K){return K?{chain:N,then:K}:{chain:N}},E=function(N,K){return{type:N,line:K}},R="&&",L=yr("&&",!1),_="||",J=yr("||",!1),re=function(N,K){return K?{...N,then:K}:N},oe=function(N,K){return{type:N,chain:K}},pe="|&",he=yr("|&",!1),ve="|",ge=yr("|",!1),le="=",Pe=yr("=",!1),g=function(N,K){return{name:N,args:[K]}},De=function(N){return{name:N,args:[]}},Ee="(",de=yr("(",!1),ne=")",Z=yr(")",!1),me=function(N,K){return{type:"subshell",subshell:N,args:K}},be="{",ut=yr("{",!1),H="}",yt=yr("}",!1),Me=function(N,K){return{type:"group",group:N,args:K}},Te=function(N,K){return{type:"command",args:K,envs:N}},Qe=function(N){return{type:"envs",envs:N}},Ue=function(N){return N},je=function(N){return N},At=/^[0-9]/,Le=ys([["0","9"]],!1,!1),x=function(N,K,te){return{type:"redirection",subtype:K,fd:N!==null?parseInt(N):null,args:[te]}},I=">>",P=yr(">>",!1),y=">&",F=yr(">&",!1),z=">",X=yr(">",!1),$="<<<",ie=yr("<<<",!1),ke="<&",Ne=yr("<&",!1),st="<",ht=yr("<",!1),Ut=function(N){return{type:"argument",segments:[].concat(...N)}},Xt=function(N){return N},Pt="$'",tn=yr("$'",!1),Dr="'",fr=yr("'",!1),Br=function(N){return[{type:"text",text:N}]},jr='""',Hn=yr('""',!1),bs=function(){return{type:"text",text:""}},ki='"',gs=yr('"',!1),to=function(N){return N},Di=function(N){return{type:"arithmetic",arithmetic:N,quoted:!0}},Qs=function(N){return{type:"shell",shell:N,quoted:!0}},ro=function(N){return{type:"variable",...N,quoted:!0}},uc=function(N){return{type:"text",text:N}},hu=function(N){return{type:"arithmetic",arithmetic:N,quoted:!1}},op=function(N){return{type:"shell",shell:N,quoted:!1}},ap=function(N){return{type:"variable",...N,quoted:!1}},ks=function(N){return{type:"glob",pattern:N}},Cn=/^[^']/,no=ys(["'"],!0,!1),Fs=function(N){return N.join("")},dl=/^[^$"]/,ml=ys(["$",'"'],!0,!1),io=`\\ | 9 | `)}async preserveTimePromise(e,r){let o=await this.lstatPromise(e),a=await r();typeof a<"u"&&(e=a),await this.lutimesPromise(e,o.atime,o.mtime)}async preserveTimeSync(e,r){let o=this.lstatSync(e),a=r();typeof a<"u"&&(e=a),this.lutimesSync(e,o.atime,o.mtime)}},qu=class extends df{constructor(){super(J)}}});var vs,mf=dt(()=>{Mg();vs=class extends df{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,r,o){return this.baseFs.openPromise(this.mapToBase(e),r,o)}openSync(e,r,o){return this.baseFs.openSync(this.mapToBase(e),r,o)}async opendirPromise(e,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),r),{path:e})}opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),r),{path:e})}async readPromise(e,r,o,a,n){return await this.baseFs.readPromise(e,r,o,a,n)}readSync(e,r,o,a,n){return this.baseFs.readSync(e,r,o,a,n)}async writePromise(e,r,o,a,n){return typeof r=="string"?await this.baseFs.writePromise(e,r,o):await this.baseFs.writePromise(e,r,o,a,n)}writeSync(e,r,o,a,n){return typeof r=="string"?this.baseFs.writeSync(e,r,o):this.baseFs.writeSync(e,r,o,a,n)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,r)}createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,r)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase(e),r)}async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}fstatSync(e,r){return this.baseFs.fstatSync(e,r)}lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}async fchmodPromise(e,r){return this.baseFs.fchmodPromise(e,r)}fchmodSync(e,r){return this.baseFs.fchmodSync(e,r)}async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e),r)}chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}async fchownPromise(e,r,o){return this.baseFs.fchownPromise(e,r,o)}fchownSync(e,r,o){return this.baseFs.fchownSync(e,r,o)}async chownPromise(e,r,o){return this.baseFs.chownPromise(this.mapToBase(e),r,o)}chownSync(e,r,o){return this.baseFs.chownSync(this.mapToBase(e),r,o)}async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(r))}renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(r))}async copyFilePromise(e,r,o=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(r),o)}copyFileSync(e,r,o=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(r),o)}async appendFilePromise(e,r,o){return this.baseFs.appendFilePromise(this.fsMapToBase(e),r,o)}appendFileSync(e,r,o){return this.baseFs.appendFileSync(this.fsMapToBase(e),r,o)}async writeFilePromise(e,r,o){return this.baseFs.writeFilePromise(this.fsMapToBase(e),r,o)}writeFileSync(e,r,o){return this.baseFs.writeFileSync(this.fsMapToBase(e),r,o)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,r,o){return this.baseFs.utimesPromise(this.mapToBase(e),r,o)}utimesSync(e,r,o){return this.baseFs.utimesSync(this.mapToBase(e),r,o)}async lutimesPromise(e,r,o){return this.baseFs.lutimesPromise(this.mapToBase(e),r,o)}lutimesSync(e,r,o){return this.baseFs.lutimesSync(this.mapToBase(e),r,o)}async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e),r)}mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e),r)}rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(r))}linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(r))}async symlinkPromise(e,r,o){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),a,o);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),u=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkPromise(u,a,o)}symlinkSync(e,r,o){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),a,o);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),u=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkSync(u,a,o)}async readFilePromise(e,r){return this.baseFs.readFilePromise(this.fsMapToBase(e),r)}readFileSync(e,r){return this.baseFs.readFileSync(this.fsMapToBase(e),r)}async readdirPromise(e,r){return this.baseFs.readdirPromise(this.mapToBase(e),r)}readdirSync(e,r){return this.baseFs.readdirSync(this.mapToBase(e),r)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,r){return this.baseFs.truncatePromise(this.mapToBase(e),r)}truncateSync(e,r){return this.baseFs.truncateSync(this.mapToBase(e),r)}async ftruncatePromise(e,r){return this.baseFs.ftruncatePromise(e,r)}ftruncateSync(e,r){return this.baseFs.ftruncateSync(e,r)}watch(e,r,o){return this.baseFs.watch(this.mapToBase(e),r,o)}watchFile(e,r,o){return this.baseFs.watchFile(this.mapToBase(e),r,o)}unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}fsMapToBase(e){return typeof e=="number"?e:this.mapToBase(e)}}});var ju,_7=dt(()=>{mf();ju=class extends vs{constructor(r,{baseFs:o,pathUtils:a}){super(a);this.target=r,this.baseFs=o}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(r){return r}mapToBase(r){return r}}});var H7,xn,Ug=dt(()=>{H7=tt(Ie("fs"));Mg();Ca();xn=class extends qu{constructor(r=H7.default){super();this.realFs=r}getExtractHint(){return!1}getRealPath(){return wt.root}resolve(r){return J.resolve(r)}async openPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.open(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}openSync(r,o,a){return this.realFs.openSync(ue.fromPortablePath(r),o,a)}async opendirPromise(r,o){return await new Promise((a,n)=>{typeof o<"u"?this.realFs.opendir(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.opendir(ue.fromPortablePath(r),this.makeCallback(a,n))}).then(a=>Object.defineProperty(a,"path",{value:r,configurable:!0,writable:!0}))}opendirSync(r,o){let a=typeof o<"u"?this.realFs.opendirSync(ue.fromPortablePath(r),o):this.realFs.opendirSync(ue.fromPortablePath(r));return Object.defineProperty(a,"path",{value:r,configurable:!0,writable:!0})}async readPromise(r,o,a=0,n=0,u=-1){return await new Promise((A,p)=>{this.realFs.read(r,o,a,n,u,(h,C)=>{h?p(h):A(C)})})}readSync(r,o,a,n,u){return this.realFs.readSync(r,o,a,n,u)}async writePromise(r,o,a,n,u){return await new Promise((A,p)=>typeof o=="string"?this.realFs.write(r,o,a,this.makeCallback(A,p)):this.realFs.write(r,o,a,n,u,this.makeCallback(A,p)))}writeSync(r,o,a,n,u){return typeof o=="string"?this.realFs.writeSync(r,o,a):this.realFs.writeSync(r,o,a,n,u)}async closePromise(r){await new Promise((o,a)=>{this.realFs.close(r,this.makeCallback(o,a))})}closeSync(r){this.realFs.closeSync(r)}createReadStream(r,o){let a=r!==null?ue.fromPortablePath(r):r;return this.realFs.createReadStream(a,o)}createWriteStream(r,o){let a=r!==null?ue.fromPortablePath(r):r;return this.realFs.createWriteStream(a,o)}async realpathPromise(r){return await new Promise((o,a)=>{this.realFs.realpath(ue.fromPortablePath(r),{},this.makeCallback(o,a))}).then(o=>ue.toPortablePath(o))}realpathSync(r){return ue.toPortablePath(this.realFs.realpathSync(ue.fromPortablePath(r),{}))}async existsPromise(r){return await new Promise(o=>{this.realFs.exists(ue.fromPortablePath(r),o)})}accessSync(r,o){return this.realFs.accessSync(ue.fromPortablePath(r),o)}async accessPromise(r,o){return await new Promise((a,n)=>{this.realFs.access(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}existsSync(r){return this.realFs.existsSync(ue.fromPortablePath(r))}async statPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.stat(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.stat(ue.fromPortablePath(r),this.makeCallback(a,n))})}statSync(r,o){return o?this.realFs.statSync(ue.fromPortablePath(r),o):this.realFs.statSync(ue.fromPortablePath(r))}async fstatPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.fstat(r,o,this.makeCallback(a,n)):this.realFs.fstat(r,this.makeCallback(a,n))})}fstatSync(r,o){return o?this.realFs.fstatSync(r,o):this.realFs.fstatSync(r)}async lstatPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.lstat(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.lstat(ue.fromPortablePath(r),this.makeCallback(a,n))})}lstatSync(r,o){return o?this.realFs.lstatSync(ue.fromPortablePath(r),o):this.realFs.lstatSync(ue.fromPortablePath(r))}async fchmodPromise(r,o){return await new Promise((a,n)=>{this.realFs.fchmod(r,o,this.makeCallback(a,n))})}fchmodSync(r,o){return this.realFs.fchmodSync(r,o)}async chmodPromise(r,o){return await new Promise((a,n)=>{this.realFs.chmod(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}chmodSync(r,o){return this.realFs.chmodSync(ue.fromPortablePath(r),o)}async fchownPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.fchown(r,o,a,this.makeCallback(n,u))})}fchownSync(r,o,a){return this.realFs.fchownSync(r,o,a)}async chownPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.chown(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}chownSync(r,o,a){return this.realFs.chownSync(ue.fromPortablePath(r),o,a)}async renamePromise(r,o){return await new Promise((a,n)=>{this.realFs.rename(ue.fromPortablePath(r),ue.fromPortablePath(o),this.makeCallback(a,n))})}renameSync(r,o){return this.realFs.renameSync(ue.fromPortablePath(r),ue.fromPortablePath(o))}async copyFilePromise(r,o,a=0){return await new Promise((n,u)=>{this.realFs.copyFile(ue.fromPortablePath(r),ue.fromPortablePath(o),a,this.makeCallback(n,u))})}copyFileSync(r,o,a=0){return this.realFs.copyFileSync(ue.fromPortablePath(r),ue.fromPortablePath(o),a)}async appendFilePromise(r,o,a){return await new Promise((n,u)=>{let A=typeof r=="string"?ue.fromPortablePath(r):r;a?this.realFs.appendFile(A,o,a,this.makeCallback(n,u)):this.realFs.appendFile(A,o,this.makeCallback(n,u))})}appendFileSync(r,o,a){let n=typeof r=="string"?ue.fromPortablePath(r):r;a?this.realFs.appendFileSync(n,o,a):this.realFs.appendFileSync(n,o)}async writeFilePromise(r,o,a){return await new Promise((n,u)=>{let A=typeof r=="string"?ue.fromPortablePath(r):r;a?this.realFs.writeFile(A,o,a,this.makeCallback(n,u)):this.realFs.writeFile(A,o,this.makeCallback(n,u))})}writeFileSync(r,o,a){let n=typeof r=="string"?ue.fromPortablePath(r):r;a?this.realFs.writeFileSync(n,o,a):this.realFs.writeFileSync(n,o)}async unlinkPromise(r){return await new Promise((o,a)=>{this.realFs.unlink(ue.fromPortablePath(r),this.makeCallback(o,a))})}unlinkSync(r){return this.realFs.unlinkSync(ue.fromPortablePath(r))}async utimesPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.utimes(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}utimesSync(r,o,a){this.realFs.utimesSync(ue.fromPortablePath(r),o,a)}async lutimesPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.lutimes(ue.fromPortablePath(r),o,a,this.makeCallback(n,u))})}lutimesSync(r,o,a){this.realFs.lutimesSync(ue.fromPortablePath(r),o,a)}async mkdirPromise(r,o){return await new Promise((a,n)=>{this.realFs.mkdir(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}mkdirSync(r,o){return this.realFs.mkdirSync(ue.fromPortablePath(r),o)}async rmdirPromise(r,o){return await new Promise((a,n)=>{o?this.realFs.rmdir(ue.fromPortablePath(r),o,this.makeCallback(a,n)):this.realFs.rmdir(ue.fromPortablePath(r),this.makeCallback(a,n))})}rmdirSync(r,o){return this.realFs.rmdirSync(ue.fromPortablePath(r),o)}async linkPromise(r,o){return await new Promise((a,n)=>{this.realFs.link(ue.fromPortablePath(r),ue.fromPortablePath(o),this.makeCallback(a,n))})}linkSync(r,o){return this.realFs.linkSync(ue.fromPortablePath(r),ue.fromPortablePath(o))}async symlinkPromise(r,o,a){return await new Promise((n,u)=>{this.realFs.symlink(ue.fromPortablePath(r.replace(/\/+$/,"")),ue.fromPortablePath(o),a,this.makeCallback(n,u))})}symlinkSync(r,o,a){return this.realFs.symlinkSync(ue.fromPortablePath(r.replace(/\/+$/,"")),ue.fromPortablePath(o),a)}async readFilePromise(r,o){return await new Promise((a,n)=>{let u=typeof r=="string"?ue.fromPortablePath(r):r;this.realFs.readFile(u,o,this.makeCallback(a,n))})}readFileSync(r,o){let a=typeof r=="string"?ue.fromPortablePath(r):r;return this.realFs.readFileSync(a,o)}async readdirPromise(r,o){return await new Promise((a,n)=>{o!=null&&o.withFileTypes?this.realFs.readdir(ue.fromPortablePath(r),{withFileTypes:!0},this.makeCallback(a,n)):this.realFs.readdir(ue.fromPortablePath(r),this.makeCallback(u=>a(u),n))})}readdirSync(r,o){return o!=null&&o.withFileTypes?this.realFs.readdirSync(ue.fromPortablePath(r),{withFileTypes:!0}):this.realFs.readdirSync(ue.fromPortablePath(r))}async readlinkPromise(r){return await new Promise((o,a)=>{this.realFs.readlink(ue.fromPortablePath(r),this.makeCallback(o,a))}).then(o=>ue.toPortablePath(o))}readlinkSync(r){return ue.toPortablePath(this.realFs.readlinkSync(ue.fromPortablePath(r)))}async truncatePromise(r,o){return await new Promise((a,n)=>{this.realFs.truncate(ue.fromPortablePath(r),o,this.makeCallback(a,n))})}truncateSync(r,o){return this.realFs.truncateSync(ue.fromPortablePath(r),o)}async ftruncatePromise(r,o){return await new Promise((a,n)=>{this.realFs.ftruncate(r,o,this.makeCallback(a,n))})}ftruncateSync(r,o){return this.realFs.ftruncateSync(r,o)}watch(r,o,a){return this.realFs.watch(ue.fromPortablePath(r),o,a)}watchFile(r,o,a){return this.realFs.watchFile(ue.fromPortablePath(r),o,a)}unwatchFile(r,o){return this.realFs.unwatchFile(ue.fromPortablePath(r),o)}makeCallback(r,o){return(a,n)=>{a?o(a):r(n)}}}});var An,q7=dt(()=>{Ug();mf();Ca();An=class extends vs{constructor(r,{baseFs:o=new xn}={}){super(J);this.target=this.pathUtils.normalize(r),this.baseFs=o}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(r){return this.pathUtils.isAbsolute(r)?J.normalize(r):this.baseFs.resolve(J.join(this.target,r))}mapFromBase(r){return r}mapToBase(r){return this.pathUtils.isAbsolute(r)?r:this.pathUtils.join(this.target,r)}}});var j7,Gu,G7=dt(()=>{Ug();mf();Ca();j7=wt.root,Gu=class extends vs{constructor(r,{baseFs:o=new xn}={}){super(J);this.target=this.pathUtils.resolve(wt.root,r),this.baseFs=o}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(wt.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(r){let o=this.pathUtils.normalize(r);if(this.pathUtils.isAbsolute(r))return this.pathUtils.resolve(this.target,this.pathUtils.relative(j7,r));if(o.match(/^\.\.\/?/))throw new Error(`Resolving this path (${r}) would escape the jail`);return this.pathUtils.resolve(this.target,r)}mapFromBase(r){return this.pathUtils.resolve(j7,this.pathUtils.relative(this.target,r))}}});var oy,W7=dt(()=>{mf();oy=class extends vs{constructor(r,o){super(o);this.instance=null;this.factory=r}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(r){this.instance=r}mapFromBase(r){return r}mapToBase(r){return r}}});var _g,Ia,Hp,Y7=dt(()=>{_g=Ie("fs");Mg();Ug();HR();AD();Ca();Ia=4278190080,Hp=class extends qu{constructor({baseFs:r=new xn,filter:o=null,magicByte:a=42,maxOpenFiles:n=1/0,useCache:u=!0,maxAge:A=5e3,typeCheck:p=_g.constants.S_IFREG,getMountPoint:h,factoryPromise:C,factorySync:w}){if(Math.floor(a)!==a||!(a>1&&a<=127))throw new Error("The magic byte must be set to a round value between 1 and 127 included");super();this.fdMap=new Map;this.nextFd=3;this.isMount=new Set;this.notMount=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.baseFs=r,this.mountInstances=u?new Map:null,this.factoryPromise=C,this.factorySync=w,this.filter=o,this.getMountPoint=h,this.magic=a<<24,this.maxAge=A,this.maxOpenFiles=n,this.typeCheck=p}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){var r;if(Lg(this),this.mountInstances)for(let[o,{childFs:a}]of this.mountInstances.entries())(r=a.saveAndClose)==null||r.call(a),this.mountInstances.delete(o)}discardAndClose(){var r;if(Lg(this),this.mountInstances)for(let[o,{childFs:a}]of this.mountInstances.entries())(r=a.discardAndClose)==null||r.call(a),this.mountInstances.delete(o)}resolve(r){return this.baseFs.resolve(r)}remapFd(r,o){let a=this.nextFd++|this.magic;return this.fdMap.set(a,[r,o]),a}async openPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.openPromise(r,o,a),async(n,{subPath:u})=>this.remapFd(n,await n.openPromise(u,o,a)))}openSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.openSync(r,o,a),(n,{subPath:u})=>this.remapFd(n,n.openSync(u,o,a)))}async opendirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.opendirPromise(r,o),async(a,{subPath:n})=>await a.opendirPromise(n,o),{requireSubpath:!1})}opendirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.opendirSync(r,o),(a,{subPath:n})=>a.opendirSync(n,o),{requireSubpath:!1})}async readPromise(r,o,a,n,u){if((r&Ia)!==this.magic)return await this.baseFs.readPromise(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>"u")throw Co("read");let[p,h]=A;return await p.readPromise(h,o,a,n,u)}readSync(r,o,a,n,u){if((r&Ia)!==this.magic)return this.baseFs.readSync(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>"u")throw Co("readSync");let[p,h]=A;return p.readSync(h,o,a,n,u)}async writePromise(r,o,a,n,u){if((r&Ia)!==this.magic)return typeof o=="string"?await this.baseFs.writePromise(r,o,a):await this.baseFs.writePromise(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>"u")throw Co("write");let[p,h]=A;return typeof o=="string"?await p.writePromise(h,o,a):await p.writePromise(h,o,a,n,u)}writeSync(r,o,a,n,u){if((r&Ia)!==this.magic)return typeof o=="string"?this.baseFs.writeSync(r,o,a):this.baseFs.writeSync(r,o,a,n,u);let A=this.fdMap.get(r);if(typeof A>"u")throw Co("writeSync");let[p,h]=A;return typeof o=="string"?p.writeSync(h,o,a):p.writeSync(h,o,a,n,u)}async closePromise(r){if((r&Ia)!==this.magic)return await this.baseFs.closePromise(r);let o=this.fdMap.get(r);if(typeof o>"u")throw Co("close");this.fdMap.delete(r);let[a,n]=o;return await a.closePromise(n)}closeSync(r){if((r&Ia)!==this.magic)return this.baseFs.closeSync(r);let o=this.fdMap.get(r);if(typeof o>"u")throw Co("closeSync");this.fdMap.delete(r);let[a,n]=o;return a.closeSync(n)}createReadStream(r,o){return r===null?this.baseFs.createReadStream(r,o):this.makeCallSync(r,()=>this.baseFs.createReadStream(r,o),(a,{archivePath:n,subPath:u})=>{let A=a.createReadStream(u,o);return A.path=ue.fromPortablePath(this.pathUtils.join(n,u)),A})}createWriteStream(r,o){return r===null?this.baseFs.createWriteStream(r,o):this.makeCallSync(r,()=>this.baseFs.createWriteStream(r,o),(a,{subPath:n})=>a.createWriteStream(n,o))}async realpathPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.realpathPromise(r),async(o,{archivePath:a,subPath:n})=>{let u=this.realPaths.get(a);return typeof u>"u"&&(u=await this.baseFs.realpathPromise(a),this.realPaths.set(a,u)),this.pathUtils.join(u,this.pathUtils.relative(wt.root,await o.realpathPromise(n)))})}realpathSync(r){return this.makeCallSync(r,()=>this.baseFs.realpathSync(r),(o,{archivePath:a,subPath:n})=>{let u=this.realPaths.get(a);return typeof u>"u"&&(u=this.baseFs.realpathSync(a),this.realPaths.set(a,u)),this.pathUtils.join(u,this.pathUtils.relative(wt.root,o.realpathSync(n)))})}async existsPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.existsPromise(r),async(o,{subPath:a})=>await o.existsPromise(a))}existsSync(r){return this.makeCallSync(r,()=>this.baseFs.existsSync(r),(o,{subPath:a})=>o.existsSync(a))}async accessPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.accessPromise(r,o),async(a,{subPath:n})=>await a.accessPromise(n,o))}accessSync(r,o){return this.makeCallSync(r,()=>this.baseFs.accessSync(r,o),(a,{subPath:n})=>a.accessSync(n,o))}async statPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.statPromise(r,o),async(a,{subPath:n})=>await a.statPromise(n,o))}statSync(r,o){return this.makeCallSync(r,()=>this.baseFs.statSync(r,o),(a,{subPath:n})=>a.statSync(n,o))}async fstatPromise(r,o){if((r&Ia)!==this.magic)return this.baseFs.fstatPromise(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Co("fstat");let[n,u]=a;return n.fstatPromise(u,o)}fstatSync(r,o){if((r&Ia)!==this.magic)return this.baseFs.fstatSync(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Co("fstatSync");let[n,u]=a;return n.fstatSync(u,o)}async lstatPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.lstatPromise(r,o),async(a,{subPath:n})=>await a.lstatPromise(n,o))}lstatSync(r,o){return this.makeCallSync(r,()=>this.baseFs.lstatSync(r,o),(a,{subPath:n})=>a.lstatSync(n,o))}async fchmodPromise(r,o){if((r&Ia)!==this.magic)return this.baseFs.fchmodPromise(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Co("fchmod");let[n,u]=a;return n.fchmodPromise(u,o)}fchmodSync(r,o){if((r&Ia)!==this.magic)return this.baseFs.fchmodSync(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Co("fchmodSync");let[n,u]=a;return n.fchmodSync(u,o)}async chmodPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.chmodPromise(r,o),async(a,{subPath:n})=>await a.chmodPromise(n,o))}chmodSync(r,o){return this.makeCallSync(r,()=>this.baseFs.chmodSync(r,o),(a,{subPath:n})=>a.chmodSync(n,o))}async fchownPromise(r,o,a){if((r&Ia)!==this.magic)return this.baseFs.fchownPromise(r,o,a);let n=this.fdMap.get(r);if(typeof n>"u")throw Co("fchown");let[u,A]=n;return u.fchownPromise(A,o,a)}fchownSync(r,o,a){if((r&Ia)!==this.magic)return this.baseFs.fchownSync(r,o,a);let n=this.fdMap.get(r);if(typeof n>"u")throw Co("fchownSync");let[u,A]=n;return u.fchownSync(A,o,a)}async chownPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.chownPromise(r,o,a),async(n,{subPath:u})=>await n.chownPromise(u,o,a))}chownSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.chownSync(r,o,a),(n,{subPath:u})=>n.chownSync(u,o,a))}async renamePromise(r,o){return await this.makeCallPromise(r,async()=>await this.makeCallPromise(o,async()=>await this.baseFs.renamePromise(r,o),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),async(a,{subPath:n})=>await this.makeCallPromise(o,async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},async(u,{subPath:A})=>{if(a!==u)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return await a.renamePromise(n,A)}))}renameSync(r,o){return this.makeCallSync(r,()=>this.makeCallSync(o,()=>this.baseFs.renameSync(r,o),()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),(a,{subPath:n})=>this.makeCallSync(o,()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},(u,{subPath:A})=>{if(a!==u)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return a.renameSync(n,A)}))}async copyFilePromise(r,o,a=0){let n=async(u,A,p,h)=>{if((a&_g.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${A}' -> ${h}'`),{code:"EXDEV"});if(a&_g.constants.COPYFILE_EXCL&&await this.existsPromise(A))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${A}' -> '${h}'`),{code:"EEXIST"});let C;try{C=await u.readFilePromise(A)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${A}' -> '${h}'`),{code:"EINVAL"})}await p.writeFilePromise(h,C)};return await this.makeCallPromise(r,async()=>await this.makeCallPromise(o,async()=>await this.baseFs.copyFilePromise(r,o,a),async(u,{subPath:A})=>await n(this.baseFs,r,u,A)),async(u,{subPath:A})=>await this.makeCallPromise(o,async()=>await n(u,A,this.baseFs,o),async(p,{subPath:h})=>u!==p?await n(u,A,p,h):await u.copyFilePromise(A,h,a)))}copyFileSync(r,o,a=0){let n=(u,A,p,h)=>{if((a&_g.constants.COPYFILE_FICLONE_FORCE)!==0)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${A}' -> ${h}'`),{code:"EXDEV"});if(a&_g.constants.COPYFILE_EXCL&&this.existsSync(A))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${A}' -> '${h}'`),{code:"EEXIST"});let C;try{C=u.readFileSync(A)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${A}' -> '${h}'`),{code:"EINVAL"})}p.writeFileSync(h,C)};return this.makeCallSync(r,()=>this.makeCallSync(o,()=>this.baseFs.copyFileSync(r,o,a),(u,{subPath:A})=>n(this.baseFs,r,u,A)),(u,{subPath:A})=>this.makeCallSync(o,()=>n(u,A,this.baseFs,o),(p,{subPath:h})=>u!==p?n(u,A,p,h):u.copyFileSync(A,h,a)))}async appendFilePromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.appendFilePromise(r,o,a),async(n,{subPath:u})=>await n.appendFilePromise(u,o,a))}appendFileSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.appendFileSync(r,o,a),(n,{subPath:u})=>n.appendFileSync(u,o,a))}async writeFilePromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.writeFilePromise(r,o,a),async(n,{subPath:u})=>await n.writeFilePromise(u,o,a))}writeFileSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.writeFileSync(r,o,a),(n,{subPath:u})=>n.writeFileSync(u,o,a))}async unlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.unlinkPromise(r),async(o,{subPath:a})=>await o.unlinkPromise(a))}unlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.unlinkSync(r),(o,{subPath:a})=>o.unlinkSync(a))}async utimesPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.utimesPromise(r,o,a),async(n,{subPath:u})=>await n.utimesPromise(u,o,a))}utimesSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.utimesSync(r,o,a),(n,{subPath:u})=>n.utimesSync(u,o,a))}async lutimesPromise(r,o,a){return await this.makeCallPromise(r,async()=>await this.baseFs.lutimesPromise(r,o,a),async(n,{subPath:u})=>await n.lutimesPromise(u,o,a))}lutimesSync(r,o,a){return this.makeCallSync(r,()=>this.baseFs.lutimesSync(r,o,a),(n,{subPath:u})=>n.lutimesSync(u,o,a))}async mkdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.mkdirPromise(r,o),async(a,{subPath:n})=>await a.mkdirPromise(n,o))}mkdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.mkdirSync(r,o),(a,{subPath:n})=>a.mkdirSync(n,o))}async rmdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.rmdirPromise(r,o),async(a,{subPath:n})=>await a.rmdirPromise(n,o))}rmdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.rmdirSync(r,o),(a,{subPath:n})=>a.rmdirSync(n,o))}async linkPromise(r,o){return await this.makeCallPromise(o,async()=>await this.baseFs.linkPromise(r,o),async(a,{subPath:n})=>await a.linkPromise(r,n))}linkSync(r,o){return this.makeCallSync(o,()=>this.baseFs.linkSync(r,o),(a,{subPath:n})=>a.linkSync(r,n))}async symlinkPromise(r,o,a){return await this.makeCallPromise(o,async()=>await this.baseFs.symlinkPromise(r,o,a),async(n,{subPath:u})=>await n.symlinkPromise(r,u))}symlinkSync(r,o,a){return this.makeCallSync(o,()=>this.baseFs.symlinkSync(r,o,a),(n,{subPath:u})=>n.symlinkSync(r,u))}async readFilePromise(r,o){return this.makeCallPromise(r,async()=>await this.baseFs.readFilePromise(r,o),async(a,{subPath:n})=>await a.readFilePromise(n,o))}readFileSync(r,o){return this.makeCallSync(r,()=>this.baseFs.readFileSync(r,o),(a,{subPath:n})=>a.readFileSync(n,o))}async readdirPromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.readdirPromise(r,o),async(a,{subPath:n})=>await a.readdirPromise(n,o),{requireSubpath:!1})}readdirSync(r,o){return this.makeCallSync(r,()=>this.baseFs.readdirSync(r,o),(a,{subPath:n})=>a.readdirSync(n,o),{requireSubpath:!1})}async readlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.readlinkPromise(r),async(o,{subPath:a})=>await o.readlinkPromise(a))}readlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.readlinkSync(r),(o,{subPath:a})=>o.readlinkSync(a))}async truncatePromise(r,o){return await this.makeCallPromise(r,async()=>await this.baseFs.truncatePromise(r,o),async(a,{subPath:n})=>await a.truncatePromise(n,o))}truncateSync(r,o){return this.makeCallSync(r,()=>this.baseFs.truncateSync(r,o),(a,{subPath:n})=>a.truncateSync(n,o))}async ftruncatePromise(r,o){if((r&Ia)!==this.magic)return this.baseFs.ftruncatePromise(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Co("ftruncate");let[n,u]=a;return n.ftruncatePromise(u,o)}ftruncateSync(r,o){if((r&Ia)!==this.magic)return this.baseFs.ftruncateSync(r,o);let a=this.fdMap.get(r);if(typeof a>"u")throw Co("ftruncateSync");let[n,u]=a;return n.ftruncateSync(u,o)}watch(r,o,a){return this.makeCallSync(r,()=>this.baseFs.watch(r,o,a),(n,{subPath:u})=>n.watch(u,o,a))}watchFile(r,o,a){return this.makeCallSync(r,()=>this.baseFs.watchFile(r,o,a),()=>sy(this,r,o,a))}unwatchFile(r,o){return this.makeCallSync(r,()=>this.baseFs.unwatchFile(r,o),()=>Ng(this,r,o))}async makeCallPromise(r,o,a,{requireSubpath:n=!0}={}){if(typeof r!="string")return await o();let u=this.resolve(r),A=this.findMount(u);return A?n&&A.subPath==="/"?await o():await this.getMountPromise(A.archivePath,async p=>await a(p,A)):await o()}makeCallSync(r,o,a,{requireSubpath:n=!0}={}){if(typeof r!="string")return o();let u=this.resolve(r),A=this.findMount(u);return!A||n&&A.subPath==="/"?o():this.getMountSync(A.archivePath,p=>a(p,A))}findMount(r){if(this.filter&&!this.filter.test(r))return null;let o="";for(;;){let a=r.substring(o.length),n=this.getMountPoint(a,o);if(!n)return null;if(o=this.pathUtils.join(o,n),!this.isMount.has(o)){if(this.notMount.has(o))continue;try{if(this.typeCheck!==null&&(this.baseFs.lstatSync(o).mode&_g.constants.S_IFMT)!==this.typeCheck){this.notMount.add(o);continue}}catch{return null}this.isMount.add(o)}return{archivePath:o,subPath:this.pathUtils.join(wt.root,r.substring(o.length))}}}limitOpenFiles(r){var u,A,p;if(this.mountInstances===null)return;let o=Date.now(),a=o+this.maxAge,n=r===null?0:this.mountInstances.size-r;for(let[h,{childFs:C,expiresAt:w,refCount:v}]of this.mountInstances.entries())if(!(v!==0||((u=C.hasOpenFileHandles)==null?void 0:u.call(C)))){if(o>=w){(A=C.saveAndClose)==null||A.call(C),this.mountInstances.delete(h),n-=1;continue}else if(r===null||n<=0){a=w;break}(p=C.saveAndClose)==null||p.call(C),this.mountInstances.delete(h),n-=1}this.limitOpenFilesTimeout===null&&(r===null&&this.mountInstances.size>0||r!==null)&&isFinite(a)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},a-o).unref())}async getMountPromise(r,o){var a;if(this.mountInstances){let n=this.mountInstances.get(r);if(!n){let u=await this.factoryPromise(this.baseFs,r);n=this.mountInstances.get(r),n||(n={childFs:u(),expiresAt:0,refCount:0})}this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,n),n.expiresAt=Date.now()+this.maxAge,n.refCount+=1;try{return await o(n.childFs)}finally{n.refCount-=1}}else{let n=(await this.factoryPromise(this.baseFs,r))();try{return await o(n)}finally{(a=n.saveAndClose)==null||a.call(n)}}}getMountSync(r,o){var a;if(this.mountInstances){let n=this.mountInstances.get(r);return n||(n={childFs:this.factorySync(this.baseFs,r),expiresAt:0,refCount:0}),this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,n),n.expiresAt=Date.now()+this.maxAge,o(n.childFs)}else{let n=this.factorySync(this.baseFs,r);try{return o(n)}finally{(a=n.saveAndClose)==null||a.call(n)}}}}});var zt,qR,LI,K7=dt(()=>{Mg();Ca();zt=()=>Object.assign(new Error("ENOSYS: unsupported filesystem access"),{code:"ENOSYS"}),qR=class extends df{constructor(){super(J)}getExtractHint(){throw zt()}getRealPath(){throw zt()}resolve(){throw zt()}async openPromise(){throw zt()}openSync(){throw zt()}async opendirPromise(){throw zt()}opendirSync(){throw zt()}async readPromise(){throw zt()}readSync(){throw zt()}async writePromise(){throw zt()}writeSync(){throw zt()}async closePromise(){throw zt()}closeSync(){throw zt()}createWriteStream(){throw zt()}createReadStream(){throw zt()}async realpathPromise(){throw zt()}realpathSync(){throw zt()}async readdirPromise(){throw zt()}readdirSync(){throw zt()}async existsPromise(e){throw zt()}existsSync(e){throw zt()}async accessPromise(){throw zt()}accessSync(){throw zt()}async statPromise(){throw zt()}statSync(){throw zt()}async fstatPromise(e){throw zt()}fstatSync(e){throw zt()}async lstatPromise(e){throw zt()}lstatSync(e){throw zt()}async fchmodPromise(){throw zt()}fchmodSync(){throw zt()}async chmodPromise(){throw zt()}chmodSync(){throw zt()}async fchownPromise(){throw zt()}fchownSync(){throw zt()}async chownPromise(){throw zt()}chownSync(){throw zt()}async mkdirPromise(){throw zt()}mkdirSync(){throw zt()}async rmdirPromise(){throw zt()}rmdirSync(){throw zt()}async linkPromise(){throw zt()}linkSync(){throw zt()}async symlinkPromise(){throw zt()}symlinkSync(){throw zt()}async renamePromise(){throw zt()}renameSync(){throw zt()}async copyFilePromise(){throw zt()}copyFileSync(){throw zt()}async appendFilePromise(){throw zt()}appendFileSync(){throw zt()}async writeFilePromise(){throw zt()}writeFileSync(){throw zt()}async unlinkPromise(){throw zt()}unlinkSync(){throw zt()}async utimesPromise(){throw zt()}utimesSync(){throw zt()}async lutimesPromise(){throw zt()}lutimesSync(){throw zt()}async readFilePromise(){throw zt()}readFileSync(){throw zt()}async readlinkPromise(){throw zt()}readlinkSync(){throw zt()}async truncatePromise(){throw zt()}truncateSync(){throw zt()}async ftruncatePromise(e,r){throw zt()}ftruncateSync(e,r){throw zt()}watch(){throw zt()}watchFile(){throw zt()}unwatchFile(){throw zt()}},LI=qR;LI.instance=new qR});var qp,V7=dt(()=>{mf();Ca();qp=class extends vs{constructor(r){super(ue);this.baseFs=r}mapFromBase(r){return ue.fromPortablePath(r)}mapToBase(r){return ue.toPortablePath(r)}}});var Z_e,jR,$_e,pi,J7=dt(()=>{Ug();mf();Ca();Z_e=/^[0-9]+$/,jR=/^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,$_e=/^([^/]+-)?[a-f0-9]+$/,pi=class extends vs{constructor({baseFs:r=new xn}={}){super(J);this.baseFs=r}static makeVirtualPath(r,o,a){if(J.basename(r)!=="__virtual__")throw new Error('Assertion failed: Virtual folders must be named "__virtual__"');if(!J.basename(o).match($_e))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");let u=J.relative(J.dirname(r),a).split("/"),A=0;for(;A<u.length&&u[A]==="..";)A+=1;let p=u.slice(A);return J.join(r,o,String(A),...p)}static resolveVirtual(r){let o=r.match(jR);if(!o||!o[3]&&o[5])return r;let a=J.dirname(o[1]);if(!o[3]||!o[4])return a;if(!Z_e.test(o[4]))return r;let u=Number(o[4]),A="../".repeat(u),p=o[5]||".";return pi.resolveVirtual(J.join(a,A,p))}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}realpathSync(r){let o=r.match(jR);if(!o)return this.baseFs.realpathSync(r);if(!o[5])return r;let a=this.baseFs.realpathSync(this.mapToBase(r));return pi.makeVirtualPath(o[1],o[3],a)}async realpathPromise(r){let o=r.match(jR);if(!o)return await this.baseFs.realpathPromise(r);if(!o[5])return r;let a=await this.baseFs.realpathPromise(this.mapToBase(r));return pi.makeVirtualPath(o[1],o[3],a)}mapToBase(r){if(r==="")return r;if(this.pathUtils.isAbsolute(r))return pi.resolveVirtual(r);let o=pi.resolveVirtual(this.baseFs.resolve(wt.dot)),a=pi.resolveVirtual(this.baseFs.resolve(r));return J.relative(o,a)||wt.dot}mapFromBase(r){return r}}});var yD,z7,mD,X7=dt(()=>{yD=Ie("url"),z7=Ie("util");mf();Ca();mD=class extends vs{constructor(r){super(ue);this.baseFs=r}mapFromBase(r){return r}mapToBase(r){if(typeof r=="string")return r;if(r instanceof yD.URL)return(0,yD.fileURLToPath)(r);if(Buffer.isBuffer(r)){let o=r.toString();if(Buffer.byteLength(o)!==r.byteLength)throw new Error("Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942");return o}throw new Error(`Unsupported path type: ${(0,z7.inspect)(r)}`)}}});var Z7,Io,yf,jp,ED,CD,ay,Mc,Uc,e8e,t8e,r8e,n8e,OI,$7=dt(()=>{Z7=Ie("readline"),Io=Symbol("kBaseFs"),yf=Symbol("kFd"),jp=Symbol("kClosePromise"),ED=Symbol("kCloseResolve"),CD=Symbol("kCloseReject"),ay=Symbol("kRefs"),Mc=Symbol("kRef"),Uc=Symbol("kUnref"),OI=class{constructor(e,r){this[e8e]=1;this[t8e]=void 0;this[r8e]=void 0;this[n8e]=void 0;this[Io]=r,this[yf]=e}get fd(){return this[yf]}async appendFile(e,r){try{this[Mc](this.appendFile);let o=(typeof r=="string"?r:r==null?void 0:r.encoding)??void 0;return await this[Io].appendFilePromise(this.fd,e,o?{encoding:o}:void 0)}finally{this[Uc]()}}async chown(e,r){try{return this[Mc](this.chown),await this[Io].fchownPromise(this.fd,e,r)}finally{this[Uc]()}}async chmod(e){try{return this[Mc](this.chmod),await this[Io].fchmodPromise(this.fd,e)}finally{this[Uc]()}}createReadStream(e){return this[Io].createReadStream(null,{...e,fd:this.fd})}createWriteStream(e){return this[Io].createWriteStream(null,{...e,fd:this.fd})}datasync(){throw new Error("Method not implemented.")}sync(){throw new Error("Method not implemented.")}async read(e,r,o,a){try{this[Mc](this.read);let n;return Buffer.isBuffer(e)?n=e:(e??(e={}),n=e.buffer??Buffer.alloc(16384),r=e.offset||0,o=e.length??n.byteLength,a=e.position??null),r??(r=0),o??(o=0),o===0?{bytesRead:o,buffer:n}:{bytesRead:await this[Io].readPromise(this.fd,n,r,o,a),buffer:n}}finally{this[Uc]()}}async readFile(e){try{this[Mc](this.readFile);let r=(typeof e=="string"?e:e==null?void 0:e.encoding)??void 0;return await this[Io].readFilePromise(this.fd,r)}finally{this[Uc]()}}readLines(e){return(0,Z7.createInterface)({input:this.createReadStream(e),crlfDelay:1/0})}async stat(e){try{return this[Mc](this.stat),await this[Io].fstatPromise(this.fd,e)}finally{this[Uc]()}}async truncate(e){try{return this[Mc](this.truncate),await this[Io].ftruncatePromise(this.fd,e)}finally{this[Uc]()}}utimes(e,r){throw new Error("Method not implemented.")}async writeFile(e,r){try{this[Mc](this.writeFile);let o=(typeof r=="string"?r:r==null?void 0:r.encoding)??void 0;await this[Io].writeFilePromise(this.fd,e,o)}finally{this[Uc]()}}async write(...e){try{if(this[Mc](this.write),ArrayBuffer.isView(e[0])){let[r,o,a,n]=e;return{bytesWritten:await this[Io].writePromise(this.fd,r,o??void 0,a??void 0,n??void 0),buffer:r}}else{let[r,o,a]=e;return{bytesWritten:await this[Io].writePromise(this.fd,r,o,a),buffer:r}}}finally{this[Uc]()}}async writev(e,r){try{this[Mc](this.writev);let o=0;if(typeof r<"u")for(let a of e){let n=await this.write(a,void 0,void 0,r);o+=n.bytesWritten,r+=n.bytesWritten}else for(let a of e){let n=await this.write(a);o+=n.bytesWritten}return{buffers:e,bytesWritten:o}}finally{this[Uc]()}}readv(e,r){throw new Error("Method not implemented.")}close(){if(this[yf]===-1)return Promise.resolve();if(this[jp])return this[jp];if(this[ay]--,this[ay]===0){let e=this[yf];this[yf]=-1,this[jp]=this[Io].closePromise(e).finally(()=>{this[jp]=void 0})}else this[jp]=new Promise((e,r)=>{this[ED]=e,this[CD]=r}).finally(()=>{this[jp]=void 0,this[CD]=void 0,this[ED]=void 0});return this[jp]}[(Io,yf,e8e=ay,t8e=jp,r8e=ED,n8e=CD,Mc)](e){if(this[yf]===-1){let r=new Error("file closed");throw r.code="EBADF",r.syscall=e.name,r}this[ay]++}[Uc](){if(this[ay]--,this[ay]===0){let e=this[yf];this[yf]=-1,this[Io].closePromise(e).then(this[ED],this[CD])}}}});function MI(t,e){e=new mD(e);let r=(o,a,n)=>{let u=o[a];o[a]=n,typeof(u==null?void 0:u[ly.promisify.custom])<"u"&&(n[ly.promisify.custom]=u[ly.promisify.custom])};{r(t,"exists",(o,...a)=>{let u=typeof a[a.length-1]=="function"?a.pop():()=>{};process.nextTick(()=>{e.existsPromise(o).then(A=>{u(A)},()=>{u(!1)})})}),r(t,"read",(...o)=>{let[a,n,u,A,p,h]=o;if(o.length<=3){let C={};o.length<3?h=o[1]:(C=o[1],h=o[2]),{buffer:n=Buffer.alloc(16384),offset:u=0,length:A=n.byteLength,position:p}=C}if(u==null&&(u=0),A|=0,A===0){process.nextTick(()=>{h(null,0,n)});return}p==null&&(p=-1),process.nextTick(()=>{e.readPromise(a,n,u,A,p).then(C=>{h(null,C,n)},C=>{h(C,0,n)})})});for(let o of eW){let a=o.replace(/Promise$/,"");if(typeof t[a]>"u")continue;let n=e[o];if(typeof n>"u")continue;r(t,a,(...A)=>{let h=typeof A[A.length-1]=="function"?A.pop():()=>{};process.nextTick(()=>{n.apply(e,A).then(C=>{h(null,C)},C=>{h(C)})})})}t.realpath.native=t.realpath}{r(t,"existsSync",o=>{try{return e.existsSync(o)}catch{return!1}}),r(t,"readSync",(...o)=>{let[a,n,u,A,p]=o;return o.length<=3&&({offset:u=0,length:A=n.byteLength,position:p}=o[2]||{}),u==null&&(u=0),A|=0,A===0?0:(p==null&&(p=-1),e.readSync(a,n,u,A,p))});for(let o of i8e){let a=o;if(typeof t[a]>"u")continue;let n=e[o];typeof n>"u"||r(t,a,n.bind(e))}t.realpathSync.native=t.realpathSync}{let o=t.promises;for(let a of eW){let n=a.replace(/Promise$/,"");if(typeof o[n]>"u")continue;let u=e[a];typeof u>"u"||a!=="open"&&r(o,n,(A,...p)=>A instanceof OI?A[n].apply(A,p):u.call(e,A,...p))}r(o,"open",async(...a)=>{let n=await e.openPromise(...a);return new OI(n,e)})}t.read[ly.promisify.custom]=async(o,a,...n)=>({bytesRead:await e.readPromise(o,a,...n),buffer:a}),t.write[ly.promisify.custom]=async(o,a,...n)=>({bytesWritten:await e.writePromise(o,a,...n),buffer:a})}function ID(t,e){let r=Object.create(t);return MI(r,e),r}var ly,i8e,eW,tW=dt(()=>{ly=Ie("util");X7();$7();i8e=new Set(["accessSync","appendFileSync","createReadStream","createWriteStream","chmodSync","fchmodSync","chownSync","fchownSync","closeSync","copyFileSync","linkSync","lstatSync","fstatSync","lutimesSync","mkdirSync","openSync","opendirSync","readlinkSync","readFileSync","readdirSync","readlinkSync","realpathSync","renameSync","rmdirSync","statSync","symlinkSync","truncateSync","ftruncateSync","unlinkSync","unwatchFile","utimesSync","watch","watchFile","writeFileSync","writeSync"]),eW=new Set(["accessPromise","appendFilePromise","fchmodPromise","chmodPromise","fchownPromise","chownPromise","closePromise","copyFilePromise","linkPromise","fstatPromise","lstatPromise","lutimesPromise","mkdirPromise","openPromise","opendirPromise","readdirPromise","realpathPromise","readFilePromise","readdirPromise","readlinkPromise","renamePromise","rmdirPromise","statPromise","symlinkPromise","truncatePromise","ftruncatePromise","unlinkPromise","utimesPromise","writeFilePromise","writeSync"])});function rW(t){let e=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,"0");return`${t}${e}`}function nW(){if(GR)return GR;let t=ue.toPortablePath(iW.default.tmpdir()),e=oe.realpathSync(t);return process.once("exit",()=>{oe.rmtempSync()}),GR={tmpdir:t,realTmpdir:e}}var iW,_c,GR,oe,sW=dt(()=>{iW=tt(Ie("os"));Ug();Ca();_c=new Set,GR=null;oe=Object.assign(new xn,{detachTemp(t){_c.delete(t)},mktempSync(t){let{tmpdir:e,realTmpdir:r}=nW();for(;;){let o=rW("xfs-");try{this.mkdirSync(J.join(e,o))}catch(n){if(n.code==="EEXIST")continue;throw n}let a=J.join(r,o);if(_c.add(a),typeof t>"u")return a;try{return t(a)}finally{if(_c.has(a)){_c.delete(a);try{this.removeSync(a)}catch{}}}}},async mktempPromise(t){let{tmpdir:e,realTmpdir:r}=nW();for(;;){let o=rW("xfs-");try{await this.mkdirPromise(J.join(e,o))}catch(n){if(n.code==="EEXIST")continue;throw n}let a=J.join(r,o);if(_c.add(a),typeof t>"u")return a;try{return await t(a)}finally{if(_c.has(a)){_c.delete(a);try{await this.removePromise(a)}catch{}}}}},async rmtempPromise(){await Promise.all(Array.from(_c.values()).map(async t=>{try{await oe.removePromise(t,{maxRetries:0}),_c.delete(t)}catch{}}))},rmtempSync(){for(let t of _c)try{oe.removeSync(t),_c.delete(t)}catch{}}})});var UI={};Yt(UI,{AliasFS:()=>ju,BasePortableFakeFS:()=>qu,CustomDir:()=>NI,CwdFS:()=>An,FakeFS:()=>df,Filename:()=>Lr,JailFS:()=>Gu,LazyFS:()=>oy,MountFS:()=>Hp,NoFS:()=>LI,NodeFS:()=>xn,PortablePath:()=>wt,PosixFS:()=>qp,ProxiedFS:()=>vs,VirtualFS:()=>pi,constants:()=>Ii,errors:()=>sr,extendFs:()=>ID,normalizeLineEndings:()=>Og,npath:()=>ue,opendir:()=>gD,patchFs:()=>MI,ppath:()=>J,setupCopyIndex:()=>hD,statUtils:()=>Ul,toFilename:()=>Li,unwatchAllFiles:()=>Lg,unwatchFile:()=>Ng,watchFile:()=>sy,xfs:()=>oe});var St=dt(()=>{x7();AD();OR();_R();T7();HR();Mg();Ca();Ca();_7();Mg();q7();G7();W7();Y7();K7();Ug();V7();mf();J7();tW();sW()});var uW=U((hPt,cW)=>{cW.exports=lW;lW.sync=o8e;var oW=Ie("fs");function s8e(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(";"),r.indexOf("")!==-1))return!0;for(var o=0;o<r.length;o++){var a=r[o].toLowerCase();if(a&&t.substr(-a.length).toLowerCase()===a)return!0}return!1}function aW(t,e,r){return!t.isSymbolicLink()&&!t.isFile()?!1:s8e(e,r)}function lW(t,e,r){oW.stat(t,function(o,a){r(o,o?!1:aW(a,t,e))})}function o8e(t,e){return aW(oW.statSync(t),t,e)}});var gW=U((gPt,hW)=>{hW.exports=fW;fW.sync=a8e;var AW=Ie("fs");function fW(t,e,r){AW.stat(t,function(o,a){r(o,o?!1:pW(a,e))})}function a8e(t,e){return pW(AW.statSync(t),e)}function pW(t,e){return t.isFile()&&l8e(t,e)}function l8e(t,e){var r=t.mode,o=t.uid,a=t.gid,n=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),u=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),A=parseInt("100",8),p=parseInt("010",8),h=parseInt("001",8),C=A|p,w=r&h||r&p&&a===u||r&A&&o===n||r&C&&n===0;return w}});var mW=U((mPt,dW)=>{var dPt=Ie("fs"),wD;process.platform==="win32"||global.TESTING_WINDOWS?wD=uW():wD=gW();dW.exports=WR;WR.sync=c8e;function WR(t,e,r){if(typeof e=="function"&&(r=e,e={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(o,a){WR(t,e||{},function(n,u){n?a(n):o(u)})})}wD(t,e||{},function(o,a){o&&(o.code==="EACCES"||e&&e.ignoreErrors)&&(o=null,a=!1),r(o,a)})}function c8e(t,e){try{return wD.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code==="EACCES")return!1;throw r}}});var vW=U((yPt,BW)=>{var cy=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",yW=Ie("path"),u8e=cy?";":":",EW=mW(),CW=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),IW=(t,e)=>{let r=e.colon||u8e,o=t.match(/\//)||cy&&t.match(/\\/)?[""]:[...cy?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(r)],a=cy?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",n=cy?a.split(r):[""];return cy&&t.indexOf(".")!==-1&&n[0]!==""&&n.unshift(""),{pathEnv:o,pathExt:n,pathExtExe:a}},wW=(t,e,r)=>{typeof e=="function"&&(r=e,e={}),e||(e={});let{pathEnv:o,pathExt:a,pathExtExe:n}=IW(t,e),u=[],A=h=>new Promise((C,w)=>{if(h===o.length)return e.all&&u.length?C(u):w(CW(t));let v=o[h],b=/^".*"$/.test(v)?v.slice(1,-1):v,E=yW.join(b,t),R=!b&&/^\.[\\\/]/.test(t)?t.slice(0,2)+E:E;C(p(R,h,0))}),p=(h,C,w)=>new Promise((v,b)=>{if(w===a.length)return v(A(C+1));let E=a[w];EW(h+E,{pathExt:n},(R,L)=>{if(!R&&L)if(e.all)u.push(h+E);else return v(h+E);return v(p(h,C,w+1))})});return r?A(0).then(h=>r(null,h),r):A(0)},A8e=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:o,pathExtExe:a}=IW(t,e),n=[];for(let u=0;u<r.length;u++){let A=r[u],p=/^".*"$/.test(A)?A.slice(1,-1):A,h=yW.join(p,t),C=!p&&/^\.[\\\/]/.test(t)?t.slice(0,2)+h:h;for(let w=0;w<o.length;w++){let v=C+o[w];try{if(EW.sync(v,{pathExt:a}))if(e.all)n.push(v);else return v}catch{}}}if(e.all&&n.length)return n;if(e.nothrow)return null;throw CW(t)};BW.exports=wW;wW.sync=A8e});var SW=U((EPt,YR)=>{"use strict";var DW=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(o=>o.toUpperCase()==="PATH")||"Path"};YR.exports=DW;YR.exports.default=DW});var QW=U((CPt,bW)=>{"use strict";var PW=Ie("path"),f8e=vW(),p8e=SW();function xW(t,e){let r=t.options.env||process.env,o=process.cwd(),a=t.options.cwd!=null,n=a&&process.chdir!==void 0&&!process.chdir.disabled;if(n)try{process.chdir(t.options.cwd)}catch{}let u;try{u=f8e.sync(t.command,{path:r[p8e({env:r})],pathExt:e?PW.delimiter:void 0})}catch{}finally{n&&process.chdir(o)}return u&&(u=PW.resolve(a?t.options.cwd:"",u)),u}function h8e(t){return xW(t)||xW(t,!0)}bW.exports=h8e});var kW=U((IPt,VR)=>{"use strict";var KR=/([()\][%!^"`<>&|;, *?])/g;function g8e(t){return t=t.replace(KR,"^$1"),t}function d8e(t,e){return t=`${t}`,t=t.replace(/(\\*)"/g,'$1$1\\"'),t=t.replace(/(\\*)$/,"$1$1"),t=`"${t}"`,t=t.replace(KR,"^$1"),e&&(t=t.replace(KR,"^$1")),t}VR.exports.command=g8e;VR.exports.argument=d8e});var RW=U((wPt,FW)=>{"use strict";FW.exports=/^#!(.*)/});var NW=U((BPt,TW)=>{"use strict";var m8e=RW();TW.exports=(t="")=>{let e=t.match(m8e);if(!e)return null;let[r,o]=e[0].replace(/#! ?/,"").split(" "),a=r.split("/").pop();return a==="env"?o:o?`${a} ${o}`:a}});var OW=U((vPt,LW)=>{"use strict";var JR=Ie("fs"),y8e=NW();function E8e(t){let r=Buffer.alloc(150),o;try{o=JR.openSync(t,"r"),JR.readSync(o,r,0,150,0),JR.closeSync(o)}catch{}return y8e(r.toString())}LW.exports=E8e});var HW=U((DPt,_W)=>{"use strict";var C8e=Ie("path"),MW=QW(),UW=kW(),I8e=OW(),w8e=process.platform==="win32",B8e=/\.(?:com|exe)$/i,v8e=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function D8e(t){t.file=MW(t);let e=t.file&&I8e(t.file);return e?(t.args.unshift(t.file),t.command=e,MW(t)):t.file}function S8e(t){if(!w8e)return t;let e=D8e(t),r=!B8e.test(e);if(t.options.forceShell||r){let o=v8e.test(e);t.command=C8e.normalize(t.command),t.command=UW.command(t.command),t.args=t.args.map(n=>UW.argument(n,o));let a=[t.command].concat(t.args).join(" ");t.args=["/d","/s","/c",`"${a}"`],t.command=process.env.comspec||"cmd.exe",t.options.windowsVerbatimArguments=!0}return t}function P8e(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let o={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?o:S8e(o)}_W.exports=P8e});var GW=U((SPt,jW)=>{"use strict";var zR=process.platform==="win32";function XR(t,e){return Object.assign(new Error(`${e} ${t.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${t.command}`,path:t.command,spawnargs:t.args})}function x8e(t,e){if(!zR)return;let r=t.emit;t.emit=function(o,a){if(o==="exit"){let n=qW(a,e,"spawn");if(n)return r.call(t,"error",n)}return r.apply(t,arguments)}}function qW(t,e){return zR&&t===1&&!e.file?XR(e.original,"spawn"):null}function b8e(t,e){return zR&&t===1&&!e.file?XR(e.original,"spawnSync"):null}jW.exports={hookChildProcess:x8e,verifyENOENT:qW,verifyENOENTSync:b8e,notFoundError:XR}});var eT=U((PPt,uy)=>{"use strict";var WW=Ie("child_process"),ZR=HW(),$R=GW();function YW(t,e,r){let o=ZR(t,e,r),a=WW.spawn(o.command,o.args,o.options);return $R.hookChildProcess(a,o),a}function Q8e(t,e,r){let o=ZR(t,e,r),a=WW.spawnSync(o.command,o.args,o.options);return a.error=a.error||$R.verifyENOENTSync(a.status,o),a}uy.exports=YW;uy.exports.spawn=YW;uy.exports.sync=Q8e;uy.exports._parse=ZR;uy.exports._enoent=$R});function VW(t){KW=t}function _I(){return typeof tT>"u"&&(tT=KW()),tT}var tT,KW,rT=dt(()=>{KW=()=>{throw new Error("Assertion failed: No libzip instance is available, and no factory was configured")}});var JW=U((BD,iT)=>{var k8e=Object.assign({},Ie("fs")),nT=function(){var t=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(t=t||__filename),function(e){e=e||{};var r=typeof e<"u"?e:{},o,a;r.ready=new Promise(function(Be,xe){o=Be,a=xe});var n={},u;for(u in r)r.hasOwnProperty(u)&&(n[u]=r[u]);var A=[],p="./this.program",h=function(Be,xe){throw xe},C=!1,w=!0,v="";function b(Be){return r.locateFile?r.locateFile(Be,v):v+Be}var E,R,L,_;w&&(C?v=Ie("path").dirname(v)+"/":v=__dirname+"/",E=function(xe,Ve){var vt=$n(xe);return vt?Ve?vt:vt.toString():(L||(L=k8e),_||(_=Ie("path")),xe=_.normalize(xe),L.readFileSync(xe,Ve?null:"utf8"))},R=function(xe){var Ve=E(xe,!0);return Ve.buffer||(Ve=new Uint8Array(Ve)),ve(Ve.buffer),Ve},process.argv.length>1&&(p=process.argv[1].replace(/\\/g,"/")),A=process.argv.slice(2),h=function(Be){process.exit(Be)},r.inspect=function(){return"[Emscripten Module object]"});var V=r.print||console.log.bind(console),re=r.printErr||console.warn.bind(console);for(u in n)n.hasOwnProperty(u)&&(r[u]=n[u]);n=null,r.arguments&&(A=r.arguments),r.thisProgram&&(p=r.thisProgram),r.quit&&(h=r.quit);var ae=0,he=function(Be){ae=Be},pe;r.wasmBinary&&(pe=r.wasmBinary);var De=r.noExitRuntime||!0;typeof WebAssembly!="object"&&ki("no native wasm support detected");function ge(Be,xe,Ve){switch(xe=xe||"i8",xe.charAt(xe.length-1)==="*"&&(xe="i32"),xe){case"i1":return _e[Be>>0];case"i8":return _e[Be>>0];case"i16":return up((Be>>1)*2);case"i32":return ks((Be>>2)*4);case"i64":return ks((Be>>2)*4);case"float":return gu((Be>>2)*4);case"double":return cp((Be>>3)*8);default:ki("invalid type for getValue: "+xe)}return null}var le,Pe=!1,g;function ve(Be,xe){Be||ki("Assertion failed: "+xe)}function Ee(Be){var xe=r["_"+Be];return ve(xe,"Cannot call unknown function "+Be+", make sure it is exported"),xe}function de(Be,xe,Ve,vt,tr){var Zr={string:function(yi){var ca=0;if(yi!=null&&yi!==0){var Ga=(yi.length<<2)+1;ca=ee(Ga),ut(yi,ca,Ga)}return ca},array:function(yi){var ca=ee(yi.length);return Me(yi,ca),ca}};function Tn(yi){return xe==="string"?me(yi):xe==="boolean"?Boolean(yi):yi}var _r=Ee(Be),ei=[],Ti=0;if(vt)for(var Kn=0;Kn<vt.length;Kn++){var ja=Zr[Ve[Kn]];ja?(Ti===0&&(Ti=qa()),ei[Kn]=ja(vt[Kn])):ei[Kn]=vt[Kn]}var la=_r.apply(null,ei);return la=Tn(la),Ti!==0&&aa(Ti),la}function ne(Be,xe,Ve,vt){Ve=Ve||[];var tr=Ve.every(function(Tn){return Tn==="number"}),Zr=xe!=="string";return Zr&&tr&&!vt?Ee(Be):function(){return de(Be,xe,Ve,arguments,vt)}}var Z=new TextDecoder("utf8");function me(Be,xe){if(!Be)return"";for(var Ve=Be+xe,vt=Be;!(vt>=Ve)&&qe[vt];)++vt;return Z.decode(qe.subarray(Be,vt))}function be(Be,xe,Ve,vt){if(!(vt>0))return 0;for(var tr=Ve,Zr=Ve+vt-1,Tn=0;Tn<Be.length;++Tn){var _r=Be.charCodeAt(Tn);if(_r>=55296&&_r<=57343){var ei=Be.charCodeAt(++Tn);_r=65536+((_r&1023)<<10)|ei&1023}if(_r<=127){if(Ve>=Zr)break;xe[Ve++]=_r}else if(_r<=2047){if(Ve+1>=Zr)break;xe[Ve++]=192|_r>>6,xe[Ve++]=128|_r&63}else if(_r<=65535){if(Ve+2>=Zr)break;xe[Ve++]=224|_r>>12,xe[Ve++]=128|_r>>6&63,xe[Ve++]=128|_r&63}else{if(Ve+3>=Zr)break;xe[Ve++]=240|_r>>18,xe[Ve++]=128|_r>>12&63,xe[Ve++]=128|_r>>6&63,xe[Ve++]=128|_r&63}}return xe[Ve]=0,Ve-tr}function ut(Be,xe,Ve){return be(Be,qe,xe,Ve)}function H(Be){for(var xe=0,Ve=0;Ve<Be.length;++Ve){var vt=Be.charCodeAt(Ve);vt>=55296&&vt<=57343&&(vt=65536+((vt&1023)<<10)|Be.charCodeAt(++Ve)&1023),vt<=127?++xe:vt<=2047?xe+=2:vt<=65535?xe+=3:xe+=4}return xe}function yt(Be){var xe=H(Be)+1,Ve=vl(xe);return Ve&&be(Be,_e,Ve,xe),Ve}function Me(Be,xe){_e.set(Be,xe)}function Te(Be,xe){return Be%xe>0&&(Be+=xe-Be%xe),Be}var Qe,_e,qe,At,Oe,x,I,P,y,F;function z(Be){Qe=Be,r.HEAP_DATA_VIEW=F=new DataView(Be),r.HEAP8=_e=new Int8Array(Be),r.HEAP16=At=new Int16Array(Be),r.HEAP32=x=new Int32Array(Be),r.HEAPU8=qe=new Uint8Array(Be),r.HEAPU16=Oe=new Uint16Array(Be),r.HEAPU32=I=new Uint32Array(Be),r.HEAPF32=P=new Float32Array(Be),r.HEAPF64=y=new Float64Array(Be)}var X=r.INITIAL_MEMORY||16777216,$,ie=[],ke=[],Ne=[],st=!1;function ht(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)xt(r.preRun.shift());no(ie)}function Ut(){st=!0,no(ke)}function Xt(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;)Dr(r.postRun.shift());no(Ne)}function xt(Be){ie.unshift(Be)}function tn(Be){ke.unshift(Be)}function Dr(Be){Ne.unshift(Be)}var fr=0,Br=null,jr=null;function Hn(Be){fr++,r.monitorRunDependencies&&r.monitorRunDependencies(fr)}function bs(Be){if(fr--,r.monitorRunDependencies&&r.monitorRunDependencies(fr),fr==0&&(Br!==null&&(clearInterval(Br),Br=null),jr)){var xe=jr;jr=null,xe()}}r.preloadedImages={},r.preloadedAudios={};function ki(Be){r.onAbort&&r.onAbort(Be),Be+="",re(Be),Pe=!0,g=1,Be="abort("+Be+"). Build with -s ASSERTIONS=1 for more info.";var xe=new WebAssembly.RuntimeError(Be);throw a(xe),xe}var gs="data:application/octet-stream;base64,";function to(Be){return Be.startsWith(gs)}var Di="data:application/octet-stream;base64,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AQsgAEEAOgAAQQAPCyAAKAIEIgNFBEBBAA8LIAAgAjcDECADIAGnaigAAAtVAgF+AX8gAARAAkAgACkDCFANAEIBIQEDQCAAKAIAIAJBBHRqEDogASAAKQMIWg0BIAGnIQIgAUIBfCEBDAALAAsgACgCABAGIAAoAigQECAAEAYLC2QBAn8CQAJAAkAgAEUEQCABpxAIIgNFDQJBGBAIIgJFDQEMAwsgACEDQRgQCCICDQJBAA8LIAMQBgtBAA8LIAJCADcDECACIAE3AwggAiADNgIEIAJBAToAACACIABFOgABIAILnQECAn4BfwJAAkAgAC0AAEUNACAAKQMQIgJCd1YNACACQgh8IgMgACkDCFgNAQsgAEEAOgAADwsgACgCBCIERQRADwsgACADNwMQIAQgAqdqIgAgAUI4iDwAByAAIAFCMIg8AAYgACABQiiIPAAFIAAgAUIgiDwABCAAIAFCGIg8AAMgACABQhCIPAACIAAgAUIIiDwAASAAIAE8AAAL8AICAn8BfgJAIAJFDQAgACACaiIDQQFrIAE6AAAgACABOgAAIAJBA0kNACADQQJrIAE6AAAgACABOgABIANBA2sgAToAACAAIAE6AAIgAkEHSQ0AIANBBGsgAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgA2AgAgAyACIARrQXxxIgJqIgFBBGsgADYCACACQQlJDQAgAyAANgIIIAMgADYCBCABQQhrIAA2AgAgAUEMayAANgIAIAJBGUkNACADIAA2AhggAyAANgIUIAMgADYCECADIAA2AgwgAUEQayAANgIAIAFBFGsgADYCACABQRhrIAA2AgAgAUEcayAANgIAIAIgA0EEcUEYciIBayICQSBJDQAgAK1CgYCAgBB+IQUgASADaiEBA0AgASAFNwMYIAEgBTcDECABIAU3AwggASAFNwMAIAFBIGohASACQSBrIgJBH0sNAAsLC28BA38gAEEMaiECAkACfyAAKAIgIgFFBEBBfyEBQRIMAQsgACABQQFrIgM2AiBBACEBIAMNASAAQQBCAEECEA4aIAAoAgAiAEUNASAAEBtBf0oNAUEUCyEAIAIEQCACQQA2AgQgAiAANgIACwsgAQufAQIBfwF+An8CQAJ+IAAoAgAiAygCJEEBRkEA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RQ0AIAQtAAxFDQFBFyEFIAcNAQtBACECIAMgAEEIaiADGyIABEAgAEEANgIEIAAgBTYCAAsLIAILbgEBfyMAQYACayIFJAACQCAEQYDABHENACACIANMDQAgBSABQf8BcSACIANrIgJBgAIgAkGAAkkiARsQGiABRQRAA0AgACAFQYACEC4gAkGAAmsiAkH/AUsNAAsLIAAgBSACEC4LIAVBgAJqJAALUgECf0H0mAEoAgAiASAAQQNqQXxxIgJqIQACQCACQQAgACABTRsNACAAPwBBEHRLBEAgABADRQ0BC0H0mAEgADYCACABDwtB+JsBQTA2AgBBfwuGBQEGfyAAKAIwIgNBhgJrIQYgACgCPCECIAMhAQNAIAAoAkQgAiAAKAJkIgRqayECIAEgBmogBE0EQCAAKAJIIgEgASADaiADEAkaAkAgAyAAKAJoIgFNBEAgACABIANrNgJoDAELIABCADcDaAsgACAAKAJkIANrIgE2AmQgACAAKAJUIANrNgJUIAEgACgCqC1JBEAgACABNgKoLQsgAEHQmAEoAgARBAAgAiADaiECCwJAIAAoAgAiASgCBCIERQ0AIAAoAjwhBSAAIAIgBCACIARJGyICBH8gACgCSCAAKAJkaiAFaiEFIAEgBCACazYCBAJAIAEoAhwoAhRBAkYEQCABIAUgAhBADAELIAUgASgCACACEAkhBCABKAIcKAIUQQFHDQAgASABKAIwIAQgAkHImAEoAgARAAA2AjALIAEgASgCACACajYCACABIAEoAgggAmo2AgggACgCPAUgBQsgAmoiAjYCPAJAIAAoAqgtIgEgAmpBA0kNACAAKAJkIAFrIgEEQCAAIAFBAWtBxJgBKAIAEQEAGiAAKAI8IQILIAAoAqgtIAJBAUZrIgRFDQAgACABIARBwJgBKAIAEQcAIAAgACgCqC0gBGs2AqgtIAAoAjwhAgsgAkGFAksNACAAKAIAKAIERQ0AIAAoAjAhAQwBCwsCQCAAKAJEIgIgACgCQCIDTQ0AIAACfyAAKAI8IAAoAmRqIgEgA0sEQCAAKAJIIAFqQQAgAiABayIDQYICIANBggJJGyIDEBogASADagwBCyABQYICaiIBIANNDQEgACgCSCADakEAIAIgA2siAiABIANrIgMgAiADSRsiAxAaIAAoAkAgA2oLNgJACws3ACAAQn83AxAgAEEANgIIIABCADcDACAAQQA2AjAgAEL/////DzcDKCAAQgA3AxggAEIANwMgC6UBAQF/QdgAEAgiAUUEQEEADwsCQCAABEAgASAAQdgAEAkaDAELIAFCADcDICABQQA2AhggAUL/////DzcDECABQQA7AQwgAUG/hig2AgggAUEBOgAGIAFBADoABCABQgA3A0ggAUGAgNiNeDYCRCABQgA3AyggAUIANwMwIAFCADcDOCABQUBrQQA7AQAgAUIANwNQCyABQQE6AAUgAUEANgIAIAELWAICfgF/AkACQCAALQAARQ0AIAApAxAiAyACrXwiBCADVA0AIAQgACkDCFgNAQsgAEEAOgAADwsgACgCBCIFRQRADwsgACAENwMQIAUgA6dqIAEgAhAJGguWAQECfwJAAkAgAkUEQCABpxAIIgVFDQFBGBAIIgQNAiAFEAYMAQsgAiEFQRgQCCIEDQELIAMEQCADQQA2AgQgA0EONgIAC0EADwsgBEIANwMQIAQgATcDCCAEIAU2AgQgBEEBOgAAIAQgAkU6AAEgACAFIAEgAxBpQQBIBH8gBC0AAQRAIAQoAgQQBgsgBBAGQQAFIAQLC5sCAQN/IAAtAABBIHFFBEACQCABIQMCQCACIAAiASgCECIABH8gAAUCfyABIAEtAEoiAEEBayAAcjoASiABKAIAIgBBCHEEQCABIABBIHI2AgBBfwwBCyABQgA3AgQgASABKAIsIgA2AhwgASAANgIUIAEgACABKAIwajYCEEEACw0BIAEoAhALIAEoAhQiBWtLBEAgASADIAIgASgCJBEAABoMAgsCfyABLABLQX9KBEAgAiEAA0AgAiAAIgRFDQIaIAMgBEEBayIAai0AAEEKRw0ACyABIAMgBCABKAIkEQAAIARJDQIgAyAEaiEDIAEoAhQhBSACIARrDAELIAILIQAgBSADIAAQCRogASABKAIUIABqNgIUCwsLCxAAIAAoAggQBiAAQQA2AggLWQIBfwF+AkACf0EAIABFDQAaIACtIAGtfiIDpyICIAAgAXJBgIAESQ0AGkF/IAIgA0IgiKcbCyICEAgiAEUNACAAQQRrLQAAQQNxRQ0AIABBACACEBoLIAAL8AEBAn9BfyEBAkAgAC0AKA0AIAAoAiRBA0YEQCAAQQxqBEAgAEEANgIQIABB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DwsCQAJAIAAgASACIAMQhwEiBEUNAEEYEAgiAkUEQCADBEAgA0EANgIEIANBDjYCAAsCQCAEKAIoIgBFBEAgBCkDGCEBDAELIABBADYCKCAEKAIoQgA3AyAgBCAEKQMYIgUgBCkDICIBIAEgBVQbIgE3AxgLIAQpAwggAVYEQANAIAQoAgAgAadBBHRqKAIAEAYgAUIBfCIBIAQpAwhUDQALCyAEKAIAEAYgBCgCBBAGIAQQBgwBCyACQQA2AhQgAiAENgIQIAJBABABNgIMIAJBADYCCCACQgA3AgACf0E4EAgiAEUEQCADBEAgA0EANgIEIANBDjYCAAtBAAwBCyAAQQA2AgggAEIANwMAIABCADcDICAAQoCAgIAQNwIsIABBADoAKCAAQQA2AhQgAEIANwIMIABBADsBNCAAIAI2AgggAEEjNgIEIABCPyACQQBCAEEOQSMRDAAiASABQgBTGzcDGCAACyIADQEgAigCECIDBEACQCADKAIoIgBFBEAgAykDGCEBDAELIABBADYCKCADKAIoQgA3AyAgAyADKQMYIgUgAykDICIBIAEgBVQbIgE3AxgLIAMpAwggAVYEQANAIAMoAgAgAadBBHRqKAIAEAYgAUIBfCIBIAMpAwhUDQALCyADKAIAEAYgAygCBBAGIAMQBgsgAhAGC0EAIQALIAALFAAgABBBIAAoAgAQICAAKAIEECALiwwBBn8gACABaiEFAkACQCAAKAIEIgJBAXENACACQQNxRQ0BIAAoAgAiAiABaiEBAkAgACACayIAQbycASgCAEcEQCACQf8BTQRAIAAoAggiBCACQQN2IgJBA3RB0JwBakYaIAAoAgwiAyAERw0CQaicAUGonAEoAgBBfiACd3E2AgAMAwsgACgCGCEGAkAgACAAKAIMIgNHBEAgACgCCCICQbicASgCAEkaIAIgAzYCDCADIAI2AggMAQsCQCAAQRRqIgIoAgAiBA0AIABBEGoiAigCACIEDQBBACEDDAELA0AgAiEHIAQiA0EUaiICKAIAIgQNACADQRBqIQIgAygCECIEDQALIAdBADYCAAsgBkUNAgJAIAAgACgCHCIEQQJ0QdieAWoiAigCAEYEQCACIAM2AgAgAw0BQaycAUGsnAEoAgBBfiAEd3E2AgAMBAsgBkEQQRQgBigCECAARhtqIAM2AgAg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ACIIQiCIpyEEIAinIQEMAwsgAUEHTQRAIAAgAmpBAWshByABIAJJBEAgA0EEaiEGA0AgByAAa0EBaiIEIAEgASAESxsiBUEITwRAA0AgACADKQAANwAAIANBCGohAyAAQQhqIQAMAAsACyAFQQRJBH8gAwUgACADKAAANgAAIAVBBGshBSAAQQRqIQAgBgshBCAFQQJPBEAgACAELwAAOwAAIAVBAmshBSAEQQJqIQQgAEECaiEACyAFQQFGBEAgACAELQAAOgAAIABBAWohAAsgAiABayICIAFLDQALIAJFDQULAkAgByAAa0EBaiIBIAIgASACSRsiAkEISQ0AIAJBCGsiBEEDdkEBakEHcSIBBEADQCAAIAMpAAA3AAAgAkEIayECIANBCGohAyAAQQhqIQAgAUEBayIBDQALCyAEQThJDQADQCAAIAMpAAA3AAAgACADKQAINwAIIAAgAykAEDcAECAAIAMpABg3ABggACADKQAgNwAgIAAgAykAKDcAKCAAIAMpADA3ADAgACADKQA4NwA4IANBQGshAyAAQUBrIQAgAkFAaiICQQdLDQALCyACQQRPBEAgACADKAAANgAAIAJBBGshAiADQQRqIQMgAEEEaiEACyACQQJPBEAgACADLwAAOwAAIAJBAmshAiADQQJqIQMgAEECaiEACyACQQFHDQQgACADLQAAOgAAIABBAWoPCyAAIAMpAAA3AAAgACACQQFrIgFBB3FBAWoiAmohACABQQhJDQMgAiADaiEDIAFBA3YiAkEBayEEIAJBB3EiAQRAA0AgACADKQAANwAAIAJBAWshAiADQQhqIQMgAEEIaiEAIAFBAWsiAQ0ACwsgBEEHSQ0DA0AgACADKQAANwAAIAAgAykACDcACCAAIAMpABA3ABAgACADKQAYNwAYIAAgAykAIDcAICAAIAMpACg3ACggACADKQAwNwAwIAAgAykAODcAOCADQUBrIQMgAEFAayEAIAJBCGsiAg0ACwwDCyADLQAAQYGChAhsCyIBIQQLIAJBB3EhBgJAIAJBeHEiAkUNACABrSAErUIghoQhCCACQQhrIgRBA3ZBAWpBB3EiAQRAA0AgACAINwAAIAJBCGshAiAAQQhqIQAgAUEBayIBDQALCyAEQThJDQADQCAAIAg3ADggACAINwAwIAAgCDcAKCAAIAg3ACAgACAINwAYIAAgCDcAECAAIAg3AAggACAINwAAIABBQGshACACQUBqIgINAAsLIAZFDQAgACADIAYQCSAGaiEACyAADwsgACADLQABOgABIAJBAkYEQCAAQQJqDwsgACADLQACOgACIAJBA0YEQCAAQQNqDwsgACADLQADOgADIAJBBEYEQCAAQQRqDwsgACADLQAEOgAEIAJBBUYEQCAAQQVqDwsgACADLQAFOgAFIAJBBkYEQCAAQQZqDwsgACADLQAGOgAGIABBB2oLAwABC2wBA38CQCABKAIAIgNBB0sNACADIAIoAgBPDQAgACADayEEA0AgACAEKQAANwAAIAIgAigCACABKAIAIgVrNgIAIAEgASgCAEEBdCIDNgIAIAAgBWohACADQQdLDQEgAyACKAIASQ0ACwsgAAu8AgEBfwJAIAMgAGtBAWoiAyACIAIgA0sbIgJBCEkNACACQQhrIgRBA3ZBAWpBB3EiAwRAA0AgACABKQAANwAAIAJBCGshAiABQQhqIQEgAEEIaiEAIANBAWsiAw0ACwsgBEE4SQ0AA0AgACABKQAANwAAIAAgASkACDcACCAAIAEpABA3ABAgACABKQAYNwAYIAAgASkAIDcAICAAIAEpACg3ACggACABKQAwNwAwIAAgASkAODcAOCABQUBrIQEgAEFAayEAIAJBQGoiAkEHSw0ACwsgAkEETwRAIAAgASgAADYAACACQQRrIQIgAUEEaiEBIABBBGohAAsgAkECTwRAIAAgAS8AADsAACACQQJrIQIgAUECaiEBIABBAmohAAsgAkEBRgR/IAAgAS0AADoAACAAQQFqBSAACwvnAQECfyAAIAEpAAA3AAAgACACQQFrIgJBB3FBAWoiA2ohAAJAIAJBCEkNACABIANqIQEgAkEDdiICQQFrIQQgAkEHcSIDBEADQCAAIAEpAAA3AAAgAkEBayECIAFBCGohASAAQQhqIQAgA0EBayIDDQALCyAEQQdJDQADQCAAIAEpAAA3AAAgACABKQAINwAIIAAgASkAEDcAECAAIAEpABg3ABggACABKQAgNwAgIAAgASkAKDcAKCAAIAEpADA3ADAgACABKQA4NwA4IAFBQGshASAAQUBrIQAgAkEIayICDQALCyAAC/wFAQR/IABB//8DcSEDIABBEHYhBEEBIQAgAkEB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ADYCBCACQQ42AgALDAELIANBARB0IAMgARBmEBIgAyAFIAQoAgwQLAJ/IAMtAABFBEAgAgRAIAJBADYCBCACQRQ2AgALQQAMAQsgACADLQAABH4gAykDEAVCAAunQf//A3EgAygCBBBICyEGIAMQBwsgBEEQaiQAIAYL4AECAn8BfkEwEAgiAkUEQCABBEAgAUEANgIEIAFBDjYCAAtBAA8LIAJCADcDCCACQQA2AgAgAkIANwMQIAJCADcDGCACQgA3AyAgAkIANwAlIABQBEAgAg8LAkAgAEL/////AFYNACAAp0EEdBAIIgNFDQAgAiADNgIAQQAhAUIBIQQDQCADIAFBBHRqIgFCADcCACABQgA3AAUgACAEUgRAIASnIQEgBEIBfCEEDAELCyACIAA3AwggAiAANwMQIAIPCyABBEAgAUEANgIEIAFBDjYCAAtBABAQIAIQBkEAC+4BAgN/AX4jAEEQayIEJAACQCAEQQxqQgQQGCIDRQRAQX8hAgwBCwJAIAEEQCACQYAGcSEFA0ACQCAFIAEoAgRxRQ0AAkAgAykDCEIAVARAIANBADoAAAwBCyADQgA3AxAgA0EBOgAACyADIAEvAQgQDSADIAEvAQoQDSADLQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALQX8hAgwEC0F/IQIgACAEQQxqQgQQHEEASA0DIAEzAQoiBlANACAAIAEoAgwgBhAcQQBIDQMLIAEoAgAiAQ0ACwtBACECCyADEAcLIARBEGokACACCzwBAX8gAARAIAFBgAZxIQEDQCABIAAoAgRxBEAgAiAALwEKakEEaiECCyAAKAIAIgANAAsLIAJB//8DcQucAQEDfyAARQRAQQAPCyAAIQMDQAJ/AkACQCAALwEIIgFB9OABTQRAIAFBAUYNASABQfXGAUYNAQwCCyABQYGyAkYNACABQfXgAUcNAQsgACgCACEBIABBADYCACAAKAIMEAYgABAGIAEgAyAAIANGGyEDAkAgAkUEQEEAIQIMAQsgAiABNgIACyABDAELIAAiAigCAAsiAA0ACyADC7IEAgV/AX4CQAJAAkAgACABrRAYIgEEQCABLQAADQFBACEADAILIAQEQCAEQQA2AgQgBEEONgIAC0EADwtBACEAA0AgAS0AAAR+IAEpAwggASkDEH0FQgALQgRUDQEgARALIQcgASABEAsiBq0QEyIIRQRAQQAhAiAEBEAgBEEANgIEIARBFTYCAAsgARAHIABFDQMDQCAAKAIAIQEgACgCDBAGIAAQBiABIgANAAsMAwsCQAJAQRAQCCIFBEAgBSAGOwEKIAUgBzsBCCAFIAI2AgQgBUEANgIAIAZFDQEgBSAIIAYQZyIGNgIMIAYNAiAFEAYLQQAhAiAEBEAgBEEANgIEIARBDjYCAAsgARAHIABFDQQDQCAAKAIAIQEgACgCDBAGIAAQBiABIgANAAsMBAsgBUEANgIMCwJAIABFBEAgBSEADAELIAkgBTYCAAsgBSEJIAEtAAANAAsLAkAgAS0AAAR/IAEpAxAgASkDCFEFQQALDQAgASABLQAABH4gASkDCCABKQMQfQVCAAsiCkL/////D4MQEyECAkAgCqciBUEDSw0AIAJFDQAgAkHBFCAFEDxFDQELQQAhAiAEBEAgBEEANgIEIARBFTYCAAsgARAHIABFDQEDQCAAKAIAIQEgACgCDBAGIAAQBiABIgANAAsMAQsgARAHIAMEQCADIAA2AgBBAQ8LQQEhAiAARQ0AA0AgACgCACEBIAAoAgwQBiAAEAYgASIADQALCyACC74BAQV/IAAEfyAAIQIDQCACIgQoAgAiAg0ACyABBEADQCABIgMvAQghBiADKAIAIQEgACECAkACQANAAkAgAi8BCCAGRw0AIAIvAQoiBSADLwEKRw0AIAVFDQIgAigCDCADKAIMIAUQPEUNAgsgAigCACICDQALIANBADYCACAEIAM2AgAgAyEEDAELIAIgAigCBCADKAIEQYAGcXI2AgQgA0EANgIAIAMoAgwQBiADEAYLIAENAAsLIAAFIAELC1UCAn4BfwJAAkAgAC0AAEUNACAAKQMQIgJCAXwiAyACVA0AIAMgACkDCFgNAQsgAEEAOgAADwsgACgCBCIERQRADwsgACADNwMQIAQgAqdqIAE6AAALWgICfgF/An8CQAJAIAAtAABFDQAgACkDECIBQgF8IgIgAVQNACACIAApAwhYDQELIABBADoAAEEADAELQQAgACgCBCIDRQ0AGiAAIAI3AxAgAyABp2otAAALC94BAQN/IAEgACkDMFoEQCAAQQhqBEAgAEEANgIMIABBEjYCCAtBfw8LIABBCGohAiAALQAYQQJxBEAgAgRAIAJBADYCBCACQRk2AgALQX8PC0F/IQMCQCAAIAFBACACEFQiBEUNACAAKAJQIAQgAhCBAUUNAAJ/IAEgACkDMFoEQCAAQQhqBEAgAEEANgIMIABBEjYCCAtBfwwBCyABp0EEdCICIAAoAkBqKAIEECAgACgCQCACaiICQQA2AgQgAhBBQQALDQAgACgCQCABp0EEdGpBAToADEEAIQMLIAMLpgIBBX9BfyEFAkAgACABQQBBABAmRQ0AIAAtABhBAnEEQCAAQQhqIgAEQCAAQQA2AgQgAEEZNgIAC0F/DwsCfyAAKAJAIgQgAaciBkEEdGooAgAiBUUEQCADQYCA2I14RyEHQQMMAQsgBSgCRCADRyEHIAUtAAkLIQggBCAGQQR0aiIEIQYgBCgCBCEEQQAgAiAIRiAHG0UEQAJAIAQNACAGIAUQKyIENgIEIAQNACAAQQhqIgAEQCAAQQA2AgQgAEEONgIAC0F/DwsgBCADNgJEIAQgAjoACSAEIAQoAgBBEHI2AgBBAA8LQQAhBSAERQ0AIAQgBCgCAEFvcSIANgIAIABFBEAgBBAgIAZBADYCBEEADwsgBCADNgJEIAQgCDoACQsgBQvkCAIFfwR+IAAtABhBAnEEQCAAQQhqBEAgAEEANgIMIABBGTYCCAtCfw8LIAApAzAhCwJAIANBgMAAcQRAIAAgASADQQAQTiIJQn9SDQELAn4CQAJAIAApAzAiCUIBfCIMIAApAzgiClQEQCAAKAJAIQQMAQsgCkIBhiIJQoAIIAlCgAhUGyIJQhAgCUIQVhsgCnwiCadBBHQiBK0gCkIEhkLw////D4NUDQEgACgCQCAEEDMiBEUNASAAIAk3AzggACAENgJAIAApAzAiCUIBfCEMCyAAIAw3AzAgBCAJp0EEdGoiBEIANwIAIARCADcABSAJDAELIABBCGoEQCAAQQA2AgwgAEEONgIIC0J/CyIJQgBZDQBCfw8LAkAgAUUNAAJ/QQAhBCAJIAApAzBaBEAgAEEIagRAIABBADYCDCAAQRI2AggLQX8MAQsgAC0AGEECcQRAIABBCGoEQCAAQQA2AgwgAEEZNgIIC0F/DAELAkAgAUUNACABLQAARQ0AQX8gASABECJB//8DcSADIABBCGoQNSIERQ0BGiADQYAwcQ0AIARBABAjQQNHDQAgBEECNgIICwJAIAAgAUEAQQAQTiIKQgBTIgENACAJIApRDQAgBBAQIABBCGoEQCAAQQA2AgwgAEEKNgIIC0F/DAELAkAgAUEBIAkgClEbRQ0AAkACfwJAIAAoAkAiASAJpyIFQQR0aiIGKAIAIgMEQCADKAIwIAQQZQ0BCyAEIAYoAgQNARogBiAGKAIAECsiAzYCBCAEIAMNARogAEEIagRAIABBADYCDCAAQQ42AggLDAILQQEhByAGKAIAKAIwC0EAQQAgAEEIaiIDECUiCEUNAAJAAkAgASAFQQR0aiIFKAIEIgENACAGKAIAIgENAEEAIQEMAQsgASgCMCIBRQRAQQAhAQwBCyABQQBBACADECUiAUUNAQsgACgCUCAIIAlBACADEFBFDQAgAQRAIAAoAlAgAUEAEIEBGgsgBSgCBCEDIAcEQCADRQ0CIAMtAABBAnFFDQIgAygCMBAQIAUoAgQiASABKAIAQX1xIgM2AgAgA0UEQCABECAgBUEANgIEIAQQEEEADAQLIAEgBigCACgCMDYCMCAEEBBBAAwDCyADKAIAIgFBAnEEQCADKAIwEBAgBSgCBCIDKAIAIQELIAMgBDYCMCADIAFBAnI2AgBBAAwCCyAEEBBBfwwBCyAEEBBBAAtFDQAgCyAAKQMwUQRAQn8PCyAAKAJAIAmnQQR0ahA6IAAgCzcDMEJ/DwsgCaciBkEEdCIBIAAoAkBqEEECQAJAIAAoAkAiBCABaiIDKAIAIgVFDQACQCADKAIEIgMEQCADKAIAIgBBAXFFDQEMAgsgBRArIQMgACgCQCIEIAZBBHRqIAM2AgQgA0UNAiADKAIAIQALIANBfjYCECADIABBAXI2AgALIAEgBGogAjYCCCAJDwsgAEEIagRAIABBADYCDCAAQQ42AggLQn8LXgEBfyMAQRBrIgIkAAJ/IAAoAiRBAUcEQCAAQQxqIgAEQCAAQQA2AgQgAEESNgIAC0F/DAELIAJBADYCCCACIAE3AwAgACACQhBBDBAOQj+HpwshACACQRBqJAAgAAvaAwEGfyMAQRBrIgUkACAFIAI2AgwjAEGgAWsiBCQAIARBCGpBwIgBQZABEAkaIAQgADYCNCAEIAA2AhwgBEF+IABrIgNB/////wcgA0H/////B0kbIgY2AjggBCAAIAZqIgA2AiQgBCAANgIYIARBCGohACMAQdABayIDJAAgAyACNgLMASADQaABakEAQSgQGiADIAMoAswBNgLIAQJAQQAgASADQcgBaiADQdAAaiADQaABahBMQQBIDQAgACgCTEEATiEHIAAoAgAhAiAALABKQQBMBEAgACACQV9xNgIACyACQSBxIQgCfyAAKAIwBEAgACABIANByAFqIANB0ABqIANBoAFqEEwMAQsgAEHQADYCMCAAIANB0ABqNgIQIAAgAzYCHCAAIAM2AhQgACgCLCECIAAgAzYCLCAAIAEgA0HIAWogA0HQAGogA0GgAWoQTCACRQ0AGiAAQQBBACAAKAIkEQAAGiAAQQA2AjAgACACNgIsIABBADYCHCAAQQA2AhAgACgCFBogAEEANgIUQQALGiAAIAAoAgAgCHI2AgAgB0UNAAsgA0HQAWokACAGBEAgBCgCHCIAIAAgBCgCGEZrQQA6AAALIARBoAFqJAAgBUEQaiQAC1MBA38CQCAAKAIALAAAQTBrQQpPDQADQCAAKAIAIgIsAAAhAyAAIAJBAWo2AgAgASADakEwayEBIAIsAAFBMGtBCk8NASABQQpsIQEMAAsACyABC7sCAAJAIAFBFEsNAAJAAkACQAJAAkACQAJAAkACQAJAIAFBCWsOCgABAgMEBQYHCAkKCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCyACIAIoAgAiAUEEajYCACAAIAE0AgA3AwAPCyACIAIoAgAiAUEEajYCACAAIAE1AgA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAEpAwA3AwAPCyACIAIoAgAiAUEEajYCACAAIAEyAQA3AwAPCyACIAIoAgAiAUEEajYCACAAIAEzAQA3AwAPCyACIAIoAgAiAUEEajYCACAAIAEwAAA3AwAPCyACIAIoAgAiAUEEajYCACAAIAExAAA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAErAwA5AwAPCyAAIAJBABEGAAsLmwIAIABFBEBBAA8LAn8CQCAABH8gAUH/AE0NAQJAQeSaASgCACgCAEUEQCABQYB/cUGAvwNGDQMMAQsgAUH/D00EQCAAIAFBP3FBgAFyOgABIAAgAUEGdkHAAXI6AABBAgwECyABQYCwA09BACABQYBAcUGAwANHG0UEQCAAIAFBP3FBgAFyOgACIAAgAUEMdkHgAXI6AAAgACABQQZ2QT9xQYABcjoAAUEDDAQLIAFBgIAEa0H//z9NBEAgACABQT9xQYABcjoAAyAAIAFBEnZB8AFyOgAAIAAgAUEGdkE/cUGAAXI6AAIgACABQQx2QT9xQYABcjoAAUEEDAQLC0H4mwFBGTYCAEF/BUEBCwwBCyAAIAE6AABBAQsL4wEBAn8gAkEARyEDAkACQAJAIABBA3FFDQAgAkUNACABQf8BcSEEA0AgAC0AACAERg0CIAJBAWsiAkEARyEDIABBAWoiAEEDcUUNASACDQALCyADRQ0BCwJAIAAtAAAgAUH/AXFGDQAgAkEESQ0AIAFB/wFxQYGChAhsIQMDQCAAKAIAIANzIgRBf3MgBEGBgoQIa3FBgIGChHhxDQEgAEEEaiEAIAJBBGsiAkEDSw0ACwsgAkUNACABQf8BcSEBA0AgASAALQAARgRAIAAPCyAAQQFqIQAgAkEBayICDQALC0EAC3kBAXwCQCAARQ0AIAArAxAgACsDICICIAFEAAAAAAAAAAAgAUQAAAAAAAAAAGQbIgFEAAAAAAAA8D8gAUQAAAAAAADwP2MbIAArAyggAqGioCIBIAArAxihY0UNACAAKAIAIAEgACgCDCAAKAIEEQ4AIAAgATkDGAsLSAEBfAJAIABFDQAgACsDECAAKwMgIgEgACsDKCABoaAiASAAKwMYoWNFDQAgACgCACABIAAoAgwgACgCBBEOACAAIAE5AxgLC4QEAgZ/AX4gAEEAIAEbRQRAIAIEQCACQQA2AgQgAkESNgIAC0EADwsCQAJAIAApAwhQDQAgACgCECABLQAAIgQEf0Kl6wohCSABIQMDQCAJIAStQv8Bg3whCSADLQABIgQEQCADQQFqIQMgCUL/////D4NCIX4hCQwBCwsgCacFQYUqCyIEIAAoAgBwQQJ0aiIGKAIAIgNFDQADQAJAIAMoAhwgBEcNACABIAMoAgAQOA0AAkAgAykDCEJ/UQRAIAMoAhghAQJAIAUEQCAFIAE2AhgMAQsgBiABNgIACyADEAYgACAAKQMIQgF9Igk3AwggCbogACgCACIBuER7FK5H4XqEP6JjRQ0BIAFBgQJJDQECf0EAIQMgACgCACIGIAFBAXYiBUcEQCAFQQQQMCIHRQRAIAIEQCACQQA2AgQgAkEONgIAC0EADAILAkAgACkDCEIAIAYbUARAIAAoAhAhBAwBCyAAKAIQIQQDQCAEIANBAnRqKAIAIgEEQANAIAEoAhghAiABIAcgASgCHCAFcEECdGoiCCgCADYCGCAIIAE2AgAgAiIBDQALCyADQQFqIgMgBkcNAAsLIAQQBiAAIAU2AgAgACAHNgIQC0EBCw0BDAULIANCfzcDEAtBAQ8LIAMiBSgCGCIDDQALCyACBEAgAkEANgIEIAJBCTYCAAsLQQALkQEBAX8gACAAIAEgAiADEIMBIgIEQCACEDFBf0wEQCAAQQhqIgAEQCAAIAIoAgw2AgAgACACKAIQNgIECyACEApBAA8LQRgQCCIERQRAIABBCGoEQCAAQQA2AgwgAEEONgIICyACEApBAA8LIAQgADYCACAEQQA2AgwgBEIANwIEIAQgAjYCFCAEQQA6ABALIAQLpAYCCX8BfiMAQfAAayIFJAACQAJAIABFDQACQCABBEAgASkDMCACVg0BC0EAIQMgAEEIagRAIABBADYCDCAAQRI2AggLDAILAkAgA0EIcQ0AIAEoAkAgAqdBBHRqIgYoAghFBEAgBi0ADEUNAQtBACEDIABBCGoEQCAAQQA2AgwgAEEPNgIICwwCCyABIAIgA0EIciAFQThqEFNBf0wEQEEAIQMgAEEIagRAIABBADYCDCAAQRQ2AggLDAILIANBA3ZBBHEgA3IiBkEEcSEHIAUpA1AhDiAFLwFoIQkCQCADQSBxRSAFLwFqQQBHcSILRQ0AIAQNACAAKAIcIgQNAEEAIQMgAEEIagRAIABBADYCDCAAQRo2AggLDAILIAUpA1hQBEAgAEEAQgBBABBSIQMMAgsCQCAHRSIMIAlBAEdxIg1BAXJFBEBBACEDIAVBADsBMCAFIA43AyAgBSAONwMYIAUgBSgCYDYCKCAFQtwANwMAIAEoAgAgDiAFQQAgASACIABBCGoQYSIGDQEMAwtBACEDIAEgAiAGIABBCGoiBhAmIgdFDQIgASgCACAFKQNYIAVBOGogBy8BDEEBdkEDcSABIAIgBhBhIgZFDQILAn8gBiABNgIsAkAgASgCRCIIQQFqIgogASgCSCIHSQRAIAEoAkwhBwwBCyABKAJMIAdBCmoiCEECdBAzIgdFBEAgAUEIagRAIAFBADYCDCABQQ42AggLQX8MAgsgASAHNgJMIAEgCDYCSCABKAJEIghBAWohCgsgASAKNgJEIAcgCEECdGogBjYCAEEAC0F/TARAIAYQCgwBCwJAIAtFBEAgBiEBDAELQSVBACAFLwFqQQFGGyIBRQRAIABBCGoEQCAAQQA2AgwgAEEYNgIICwwDCyAAIAYgBS8BakEAIAQgAREIACEBIAYQCiABRQ0CCwJAIA1FBEAgASEDDAELIAAgASAFLwFoEIUBIQMgARAKIANFDQELAkAgCUUgDHJFBEAgAyEBDAELIAAgA0EBEIQBIQEgAxAKIAFFDQELIAEhAwwBC0EAIQMLIAVB8ABqJAAgAwuFAQEBfyABRQRAIABBCGoiAARAIABBADYCBCAAQRI2AgALQQAPC0E4EAgiA0UEQCAAQQhqIgAEQCAAQQA2AgQgAEEONgIAC0EADwsgA0EANgIQIANCADcCCCADQgA3AyggA0EANgIEIAMgAjYCACADQgA3AxggA0EANgIwIAAgAUEwIAMQQwsPACAAIAEgAkEAQQAQhgELrAIBAn8gAUUEQCAAQQhqIgAEQCAAQQA2AgQgAEESNgIAC0EADwsCQCACQX1LDQAgAkH//wNxQQhGDQAgAEEIaiIABEAgAEEANgIEIABBEDYCAAtBAA8LAkBBsMAAEAgiBQRAIAVBADYCCCAFQgA3AgAgBUH4mAFBmJkBIAMbNgKoQCAFIAI2AhQgBSADOgAQIAVBADoADyAFQQA7AQwgBSADIAJBfUsiBnE6AA4gBUEIIAIgBhtB//8DcSAEIAVB+JgBQZiZASADGygCABEAACICNgKsQCACDQEgBRAvIAUQBgsgAEEIaiIABEAgAEEANgIEIABBDjYCAAtBAA8LIAAgAUEvIAUQQyIABH8gAAUgBSgCrEAgBSgCqEAoAgQRBAAgBRAvIAUQBkEACwuKAwIGfwR+QcgAEAgiBEUEQEEADwsgBEIANwMAIARCADcDMCAEQQA2AiggBEIANwMgIARCADcDGCAEQgA3AxAgBEIANwMIIARCADcDOCABUARAIARBCBAIIgA2AgQgAEUEQCAEEAYgAwRAIANBADYCBCADQQ42AgALQQAPCyAAQgA3AwAgBA8LAkAgAaciBUEEdBAIIgZFDQAgBCAGNgIAIAVBA3RBCGoQCCIFRQ0AIAQgATcDECAEIAU2AgQDQCAAIAynIghBBHRqIgcpAwgiDVBFBEAgBygCACIHRQRAIAMEQCADQQA2AgQgA0ESNgIACyAGEAYgBRAGIAQQBkEADwsgBiAKp0EEdGoiCSANNwMIIAkgBzYCACAFIAhBA3RqIAs3AwAgCyANfCELIApCAXwhCgsgDEIBfCIMIAFSDQALIAQgCjcDCCAEQgAgCiACGzcDGCAFIAqnQQN0aiALNwMAIAQgCzcDMCAEDwsgAwRAIANBADYCBCADQQ42AgALIAYQBiAEEAZBAAspAQF/IAAgASACIABBCGoiABAmIgNFBEBBAA8LIAMoAjBBACACIAAQJQsKACAAQfybARAEC48qAgt/A34gACkDuC0hDiAAKALALSEDIAJBAE4EQEEEQQMgAS8BAiIKGyELQQdBigEgChshBUF/IQYDQCAKIQkgASAMIg1BAWoiDEECdGovAQIhCgJAAkAgB0EBaiIEIAVODQAgCSAKRw0AIAQhBwwBCwJAIAQgC0gEQCAAIAlBAnRqIgVB8hRqIQYgBUHwFGohCwNAIAszAQAhEAJ/IAMgBi8BACIHaiIFQT9NBEAgECADrYYgDoQhDiAFDAELIANBwABGBEAgACgCBCEDIAAgACgCECIFQQFqNgIQIAMgBWogDjwAACAAKAIEIQMgACAAKAIQIgVBAWo2AhAgAyAFaiAOQgiIPAAAIAAoAgQhAyAAIAAoAhAiBUEBajYCECADIAVqIA5CEIg8AAAgACgCBCEDIAAgACgCECIFQQFqNgIQIAMgBWogDkIYiDwAACAAKAIEIQMgACAAKAIQIgVBAWo2AhAgAyAFaiAOQiCIPAAAIAAoAgQhAyAAIAAoAhAiBUEBajYCECADIAVqIA5CKIg8AAAgACgCBCEDIAAgACgCECIFQQFqNgIQIAMgBWogDkIwiDwAACAAKAIEIQMgACAAKAIQIgVBAWo2AhAgAyAFaiAOQjiIPAAAIBAhDiAHDAELIAAoAgQhByAAIAAoAhAiCEEBajYCECAHIAhqIBAgA62GIA6EIg48AAAgACgCBCEHIAAgACgCECIIQQFqNgIQIAcgCGogDkIIiDwAACAAKAIEIQcgACAAKAIQIghBAWo2AhAgByAIaiAOQhCIPAAAIAAoAgQhByAAIAAoAhAiCEEBajYCECAHIAhqIA5CGIg8AAAgACgCBCEHIAAgACgCECIIQQFqNgIQIAcgCGogDkIgiDwAACAAKAIEIQcgACAAKAIQIghBAWo2AhAgByAIaiAOQiiIPAAAIAAoAgQhByAAIAAoAhAiCEEBajYCECAHIAhqIA5CMIg8AAAgACgCBCEHIAAgACgCECIIQQFqNgIQIAcgCGogDkI4iDwAACAQQcAAIANrrYghDiAFQUBqCyEDIARBAWsiBA0ACwwBCyAJBEACQCAGIAlGBEAgDiEQIAMhBSAEIQcMAQsgACAJQQJ0aiIEQfAUajMBACEQIAMgBEHyFGovAQAiBGoiBUE/TQRAIBAgA62GIA6EIRAMAQsgA0HAAEYEQCAAKAIEIQMgACAAKAIQIgVBAWo2AhAgAyAFaiAOPAAAIAAoAgQhAyAAIAAoAhAiBUEBajYCECADIAVqIA5CCIg8AAAgACgCBCEDIAAgACgCECIFQQFqNgIQIAMgBWogDkIQiDwAACAAKAIEIQMgACAAKAIQIgVBAWo2AhAgAyAFaiAOQhiIPAAAIAAoAgQhAyAAIAAoAhAiBUEBajYCECADIAVqIA5CIIg8AAAgACgCBCEDIAAgACgCECIFQQFqNgIQIAMgBWogDkIoiDwAACAAKAIEIQMgACAAKAIQIgVBAWo2AhAgAyAFaiAOQjCIPAAAIAAoAgQhAyAAIAAoAhAiBUEBajYCECADIAVqIA5COIg8AAAgBCEFDAELIAAoAgQhBCAAIAAoAhAiBkEBajYCECAEIAZqIBAgA62GIA6EIg48AAAgACgCBCEEIAAgACgCECIGQQFqNgIQIAQgBmogDkIIiDwAACAAKAIEIQQgACAAKAIQIgZBAWo2AhAgBCAGaiAOQhCIPAAAIAAoAgQhBCAAIAAoAhAiBkEBajYCECAEIAZqIA5CGIg8AAAgACgCBCEEIAAgACgCECIGQQFqNgIQIAQgBmogDkIgiDwAACAAKAIEIQQgACAAKAIQIgZBAWo2AhAgBCAGaiAOQiiIPAAAIAAoAgQhBCAAIAAoAhAiBkEBajYCECAEIAZqIA5CMIg8AAAgACgCBCEEIAAgACgCECIGQQFqNgIQIAQgBmogDkI4iDwAACAFQUBqIQUgEEHAACADa62IIRALIAAzAbAVIQ8CQCAFIAAvAbIVIgNqIgRBP00EQCAPIAWthiAQhCEPDAELIAVBwABGBEAgACgCBCEEIAAgACgCECIFQQFqNgIQIAQgBWogEDwAACAAKAIEIQQgACAAKAIQIgVBAWo2AhAgBCAFaiAQQgiIPAAAIAAoAgQhBCAAIAAoAhAiBUEBajYCECAEIAVqIBBCEIg8AAAgACgCBCEEIAAgACgCECIFQQFqNgIQIAQgBWogEEIYiDwAACAAKAIEIQQgACAAKAIQIgVBAWo2AhAgBCAFaiAQQiCIPAAAIAAoAgQhBCAAIAAoAhAiBUEBajYCECAEIAVqIBBCKIg8AAAgACgCBCEEIAAgACgCECIFQQFqNgIQIAQgBWogEEIwiDwAACAAKAIEIQQgACAAKAIQIgVBAWo2AhAgBCAFaiAQQjiIPAAAIAMhBAwBCyAAKAIEIQMgACAAKAIQIgZBAWo2AhAgAyAGaiAPIAWthiAQhCIOPAAAIAAoAgQhAyAAIAAoAhAiBkEBajYCECADIAZqIA5CCIg8AAAgACgCBCEDIAAgACgCECIGQQFqNgIQIAMgBmogDkIQiDwAACAAKAIEIQMgACAAKAIQIgZBAWo2AhAgAyAGaiAOQhiIPAAAIAAoAgQhAyAAIAAoAhAiBkEBajYCECADIAZqIA5CIIg8AAAgACgCBCEDIAAgACgCECIGQQFqNgIQIAMgBmogDkIoiDwAACAAKAIEIQMgACAAKAIQIgZBAWo2AhAgAyAGaiAOQjCIPAAAIAAoAgQhAyAAIAAoAhAiBkEBajYCECADIAZqIA5COIg8AAAgBEFAaiEEIA9BwAAgBWutiCEPCyAHrEIDfSEOIARBPU0EQCAEQQJqIQMgDiAErYYgD4QhDgwCCyAEQcAARgRAIAAoAgQhBCAAIAAoAhAiA0EBajYCECADIARqIA88AAAgACgCBCEEIAAgACgCECIDQQFqNgIQIAMgBGogD0IIiDwAACAAKAIEIQQgACAAKAIQIgNBAWo2AhAgAyAEaiAPQhCIPAAAIAAoAgQhBCAAIAAoAhAiA0EBajYCECADIARqIA9CGIg8AAAgACgCBCEEIAAgACgCECIDQQFqNgIQIAMgBGogD0IgiDwAACAAKAIEIQQgACAAKAIQIgNBAWo2AhAgAyAEaiAPQiiIPAAAIAAoAgQhBCAAIAAoAhAiA0EBajYCECADIARqIA9CMIg8AAAgACgCBCEEIAAgACgCECIDQQFqNgIQIAMgBGogD0I4iDwAAEECIQMMAgsgACgCBCEDIAAgACgCECIFQQFqNgIQIAMgBWogDiAErYYgD4QiEDwAACAAKAIEIQMgACAAKAIQIgVBAWo2AhAgAyAFaiAQQgiIPAAAIAAoAgQhAyAAIAAoAhAiBUEBajYCECADIAVqIBBCEIg8AAAgACgCBCEDIAAgACgCECIFQQFqNgIQIAMgBWogEEIYiDwAACAAKAIEIQMgACAAKAIQIgVBAWo2AhAgAyAFaiAQQiCIPAAAIAAoAgQhAyAAIAAoAhAiBUEBajYCECADIAVqIBBCKIg8AAAgACgCBCEDIAAgACgCECIFQQFqNgIQIAMgBWogEEIwiDwAACAAKAIEIQMgACAAKAIQIgVBAWo2AhAgAyAFaiAQQjiIPAAAIARBPmshAyAOQcAAIARrrYghDgwBCyAHQQlMBEAgADMBtBUhDwJAIAMgAC8BthUiBWoiBEE/TQRAIA8gA62GIA6EIQ8MAQsgA0HAAEYEQCAAKAIEIQQgACAAKAIQIgNBAWo2AhAgAyAEaiAOPAAAIAAoAgQhBCAAIAAoAhAiA0EBajYCECADIARqIA5CCIg8AAAgACgCBCEEIAAgACgCECIDQQFqNgIQIAMgBGogDkIQiDwAACAAKAIEIQQgACAAKAIQIgNBAWo2AhAgAyAEaiAOQhiIPAAAIAAoAgQhBCAAIAAoAhAiA0EBajYCECADIARqIA5CIIg8AAAgACgCBCEEIAAgACgCECIDQQFqNgIQIAMgBGogDkIoiDwAACAAKAIEIQQgACAAKAIQIgNBAWo2AhAgAyAEaiAOQjCIPAAAIAAoAgQhBCAAIAAoAhAiA0EBajYCECADIARqIA5COIg8AAAgBSEEDAELIAAoAgQhBSAAIAAoAhAiBkEBajYCECAFIAZqIA8gA62GIA6EIg48AAAgACgCBCEFIAAgACgCECIGQQFqNgIQIAUgBmogDkIIiDwAACAAKAIEIQUgACAAKAIQIgZBAWo2AhAgBSAGaiAOQhCIPAAAIAAoAgQhBSAAIAAoAhAiBkEBajYCECAFIAZqIA5CGIg8AAAgACgCBCEFIAAgACgCECIGQQFqNgIQIAUgBmogDkIgiDwAACAAKAIEIQUgACAAKAIQIgZBAWo2AhAgBSAGaiAOQiiIPAAAIAAoAgQhBSAAIAAoAhAiBkEBajYCECAFIAZqIA5CMIg8AAAgACgCBCEFIAAgACgCECIGQQFqNgIQIAUgBmogDkI4iDwAACAEQUBqIQQgD0HAACADa62IIQ8LIAesQgJ9IQ4gBEE8TQRAIARBA2ohAyAOIASthiAPhCEODAILIARBwABGBEAgACgCBCEEIAAgACgCECIDQQFqNgIQIAMgBGogDzwAACAAKAIEIQQgACAAKAIQIgNBAWo2AhAgAyAEaiAPQgiIPAAAIAAoAgQhBCAAIAAoAhAiA0EBajYCECADIARqIA9CEIg8AAAgACgCBCEEIAAgACgCECIDQQFqNgIQIAMgBGogD0IYiDwAACAAKAIEIQQgACAAKAIQIgNBAWo2AhAgAyAEaiAPQiCIPAAAIAAoAgQhBCAAIAAoAhAiA0EBajYCECADIARqIA9CKIg8AAAgACgCBCEEIAAgACgCECIDQQFqNgIQIAMgBGogD0IwiDwAACAAKAIEIQQgACAAKAIQIgNBAWo2AhAgAyAEaiAPQjiIPAAAQQMhAwwCCyAAKAIEIQMgACAAKAIQIgVBAWo2AhAgAyAFaiAOIASthiAPhCIQPAAAIAAoAgQhAyAAIAAoAhAiBUEBajYCECADIAVqIBBCCIg8AAAgACgCBCEDIAAgACgCECIFQQFqNgIQIAMgBWogEEIQiDwAACAAKAIEIQMgACAAKAIQIgVBAWo2AhAgAyAFaiAQQhiIPAAAIAAoAgQhAyAAIAAoAhAiBUEBajYCECADIAVqIBBCIIg8AAAgACgCBCEDIAAgACgCECIFQQFqNgIQIAMgBWogEEIoiDwAACAAKAIEIQMgACAAKAIQIgVBAWo2AhAgAyAFaiAQQjCIPAAAIAAoAgQhAyAAIAAoAhAiBUEBajYCECADIAVqIBBCOIg8AAAgBEE9ayEDIA5BwAAgBGutiCEODAELIAAzAbgVIQ8CQCADIAAvAboVIgVqIgRBP00EQCAPIAOthiAOhCEPDAELIANBwABGBEAgACgCBCEEIAAgACgCECIDQQFqNgIQIAMgBGogDjwAACAAKAIEIQQgACAAKAIQIgNBAWo2AhAgAyAEaiAOQgiIPAAAIAAoAgQhBCAAIAAoAhAiA0EBajYCECADIARqIA5CEIg8AAAgACgCBCEEIAAgACgCECIDQQFqNgIQIAMgBGogDkIYiDwAACAAKAIEIQQgACAAKAIQIgNBAWo2AhAgAyAEaiAOQiCIPAAAIAAoAgQhBCAAIAAoAhAiA0EBajYCECADIARqIA5CKIg8AAAgACgCBCEEIAAgACgCECIDQQFqNgIQIAMgBGogDkIwiDwAACAAKAIEIQQgACAAKAIQIgNBAWo2AhAgAyAEaiAOQjiIPAAAIAUhBAwBCyAAKAIEIQUgACAAKAIQIgZBAWo2AhAgBSAGaiAPIAOthiAOhCIOPAAAIAAoAgQhBSAAIAAoAhAiBkEBajYCECAFIAZqIA5CCIg8AAAgACgCBCEFIAAgACgCECIGQQFqNgIQIAUgBmogDkIQiDwAACAAKAIEIQUgACAAKAIQIgZBAWo2AhAgBSAGaiAOQhiIPAAAIAAoAgQhBSAAIAAoAhAiBkEBajYCECAFIAZqIA5CIIg8AAAgACgCBCEFIAAgACgCECIGQQFqNgIQIAUgBmogDkIoiDwAACAAKAIEIQUgACAAKAIQIgZBAWo2AhAgBSAGaiAOQjCIPAAAIAAoAgQhBSAAIAAoAhAiBkEBajYCECAFIAZqIA5COIg8AAAgBEFAaiEEIA9BwAAgA2utiCEPCyAHrUIKfSEOIARBOE0EQCAEQQdqIQMgDiAErYYgD4QhDgwBCyAEQcAARgRAIAAoAgQhBCAAIAAoAhAiA0EBajYCECADIARqIA88AAAgACgCBCEEIAAgACgCECIDQQFqNgIQIAMgBGogD0IIiDwAACAAKAIEIQQgACAAKAIQIgNBAWo2AhAgAyAEaiAPQhCIPAAAIAAoAgQhBCAAIAAoAhAiA0EBajYCECADIARqIA9CGIg8AAAgACgCBCEEIAAgACgCECIDQQFqNgIQIAMgBGogD0IgiDwAACAAKAIEIQQgACAAKAIQIgNBAWo2AhAgAyAEaiAPQiiIPAAAIAAoAgQhBCAAIAAoAhAiA0EBajYCECADIARqIA9CMIg8AAAgACgCBCEEIAAgACgCECIDQQFqNgIQIAMgBGogD0I4iDwAAEEHIQMMAQsgACgCBCEDIAAgACgCECIFQQFqNgIQIAMgBWogDiAErYYgD4QiEDwAACAAKAIEIQMgACAAKAIQIgVBAWo2AhAgAyAFaiAQQgiIPAAAIAAoAgQhAyAAIAAoAhAiBUEBajYCECADIAVqIBBCEIg8AAAgACgCBCEDIAAgACgCECIFQQFqNgIQIAMgBWogEEIYiDwAACAAKAIEIQMgACAAKAIQIgVBAWo2AhAgAyAFaiAQQiCIPAAAIAAoAgQhAyAAIAAoAhAiBUEBajYCECADIAVqIBBCKIg8AAAgACgCBCEDIAAgACgCECIFQQFqNgIQIAMgBWogEEIwiDwAACAAKAIEIQMgACAAKAIQIgVBAWo2AhAgAyAFaiAQQjiIPAAAIARBOWshAyAOQcAAIARrrYghDgtBACEHAn8gCkUEQEGKASEFQQMMAQtBBkEHIAkgCkYiBBshBUEDQQQgBBsLIQsgCSEGCyACIA1HDQALCyAAIAM2AsAtIAAgDjcDuC0LjxECCH8CfgJAIAAoApQtRQRAIAApA7gtIQwgACgCwC0hBAwBCwNAIAkiBEEDaiEJIAQgACgCkC1qIgQtAAIhBSAAKQO4LSELIAAoAsAtIQYCQCAELwAAIgdFBEAgASAFQQJ0aiIEMwEAIQwgBiAELwECIgVqIgRBP00EQCAMIAathiALhCEMDAILIAZBwABGBEAgACgCBCEEIAAgACgCECIDQQFqNgIQIAMgBGogCzwAACAAKAIEIQQgACAAKAIQIgNBAWo2AhAgAyAEaiALQgiIPAAAIAAoAgQhBCAAIAAoAhAiA0EBajYCECADIARqIAtCEIg8AAAgACgCBCEEIAAgACgCECIDQQFqNgIQIAMgBGogC0IYiDwAACAAKAIEIQQgACAAKAIQIgNBAWo2AhAgAyAEaiALQiCIPAAAIAAoAgQhBCAAIAAoAhAiA0EBajYCECADIARqIAtCKIg8AAAgACgCBCEEIAAgACgCECIDQQFqNgIQIAMgBGogC0IwiDwAACAAKAIEIQQgACAAKAIQIgNBAWo2AhAgAyAEaiALQjiIPAAAIAUhBAwCCyAAKAIEIQUgACAAKAIQIgNBAWo2AhAgAyAFaiAMIAathiALhCILPAAAIAAoAgQhBSAAIAAoAhAiA0EBajYCECADIAVqIAtCCIg8AAAgACgCBCEFIAAgACgCECIDQQFqNgIQIAMgBWogC0IQiDwAACAAKAIEIQUgACAAKAIQIgNBAWo2AhAgAyAFaiALQhiIPAAAIAAoAgQhBSAAIAAoAhAiA0EBajYCECADIAVqIAtCIIg8AAAgACgCBCEFIAAgACgCECIDQQFqNgIQIAMgBWogC0IoiDwAACAAKAIEIQUgACAAKAIQIgNBAWo2AhAgAyAFaiALQjCIPAAAIAAoAgQhBSAAIAAoAhAiA0EBajYCECADIAVqIAtCOIg8AAAgBEFAaiEEIAxBwAAgBmutiCEMDAELIAVB0OkAai0AACIIQQJ0IgMgAWoiBEGECGozAQAhDCAEQYYIai8BACEEIAhBCGtBE00EQCAFIANB0OsAaigCAGutIASthiAMhCEMIANBkO4AaigCACAEaiEECyAEIAIgB0EBayIHIAdBB3ZBgAJqIAdBgAJJG0HQ5QBqLQAAIgVBAnQiCGoiCi8BAmohAyAKMwEAIASthiAMhCEMIAYgBUEESQR/IAMFIAcgCEHQ7ABqKAIAa60gA62GIAyEIQwgCEGQ7wBqKAIAIANqCyIFaiIEQT9NBEAgDCAGrYYgC4QhDAwBCyAGQcAARgRAIAAoAgQhBCAAIAAoAhAiA0EBajYCECADIARqIAs8AAAgACgCBCEEIAAgACgCECIDQQFqNgIQIAMgBGogC0IIiDwAACAAKAIEIQQgACAAKAIQIgNBAWo2AhAgAyAEaiALQhCIPAAAIAAoAgQhBCAAIAAoAhAiA0EBajYCECADIARqIAtCGIg8AAAgACgCBCEEIAAgACgCECIDQQFqNgIQIAMgBGogC0IgiDwAACAAKAIEIQQgACAAKAIQIgNBAWo2AhAgAyAEaiALQiiIPAAAIAAoAgQhBCAAIAAoAhAiA0EBajYCECADIARqIAtCMIg8AAAgACgCBCEEIAAgACgCECIDQQFqNgIQIAMgBGogC0I4iDwAACAFIQQMAQsgACgCBCEFIAAgACgCECIDQQFqNgIQIAMgBWogDCAGrYYgC4QiCzwAACAAKAIEIQUgACAAKAIQIgNBAWo2AhAgAyAFaiALQgiIPAAAIAAoAgQhBSAAIAAoAhAiA0EBajYCECADIAVqIAtCEIg8AAAgACgCBCEFIAAgACgCECIDQQFqNgIQIAMgBWogC0IYiDwAACAAKAIEIQUgACAAKAIQIgNBAWo2AhAgAyAFaiALQiCIPAAAIAAoAgQhBSAAIAAoAhAiA0EBajYCECADIAVqIAtCKIg8AAAgACgCBCEFIAAgACgCECIDQQFqNgIQIAMgBWogC0IwiDwAACAAKAIEIQUgACAAKAIQIgNBAWo2AhAgAyAFaiALQjiIPAAAIARBQGohBCAMQcAAIAZrrYghDAsgACAMNwO4LSAAIAQ2AsAtIAkgACgClC1JDQALCyABQYAIajMBACELAkAgBCABQYIIai8BACICaiIBQT9NBEAgCyAErYYgDIQhCwwBCyAEQcAARgRAIAAgACgCECIBQQFqNgIQIAEgACgCBGogDDwAACAAIAAoAhAiAUEBajYCECABIAAoAgRqIAxCCIg8AAAgACAAKAIQIgFBAWo2AhAgASAAKAIEaiAMQhCIPAAAIAAgACgCECIBQQFqNgIQIAEgACgCBGogDEIYiDwAACAAIAAoAhAiAUEBajYCECABIAAoAgRqIAxCIIg8AAAgACAAKAIQIgFBAWo2AhAgASAAKAIEaiAMQiiIPAAAIAAgACgCECIBQQFqNgIQIAEgACgCBGogDEIwiDwAACAAIAAoAhAiAUEBajYCECABIAAoAgRqIAxCOIg8AAAgAiEBDAELIAAgACgCECICQQFqNgIQIAIgACgCBGogCyAErYYgDIQiDDwAACAAIAAoAhAiAkEBajYCECACIAAoAgRqIAxCCIg8AAAgACAAKAIQIgJBAWo2AhAgAiAAKAIEaiAMQhCIPAAAIAAgACgCECICQQFqNgIQIAIgACgCBGogDEIYiDwAACAAIAAoAhAiAkEBajYCECACIAAoAgRqIAxCIIg8AAAgACAAKAIQIgJBAWo2AhAgAiAAKAIEaiAMQiiIPAAAIAAgACgCECICQQFqNgIQIAIgACgCBGogDEIwiDwAACAAIAAoAhAiAkEBajYCECACIAAoAgRqIAxCOIg8AAAgAUFAaiEBIAtBwAAgBGutiCELCyAAIAs3A7gtIAAgATYCwC0L2wQCAX8BfgJAIAAoAsAtIgFBOU4EQCAAIAAoAhAiAUEBajYCECABIAAoAgRqIAApA7gtIgI8AAAgACAAKAIQIgFBAWo2AhAgASAAKAIEaiACQgiIPAAAIAAgACgCECIBQQFqNgIQIAEgACgCBGogAkIQiDwAACAAIAAoAhAiAUEBajYCECABIAAoAgRqIAJCGIg8AAAgACAAKAIQIgFBAWo2AhAgASAAKAIEaiACQiCIPAAAIAAgACgCECIBQQFqNgIQIAEgACgCBGogAkIoiDwAACAAIAAoAhAiAUEBajYCECABIAAoAgRqIAJCMIg8AAAgACAAKAIQIgFBAWo2AhAgASAAKAIEaiACQjiIPAAADAELIAFBGU4EQCAAIAAoAhAiAUEBajYCECABIAAoAgRqIAApA7gtIgI8AAAgACAAKAIQIgFBAWo2AhAgASAAKAIEaiACQgiIPAAAIAAgACgCECIBQQFqNgIQIAEgACgCBGogAkIQiDwAACAAIAAoAhAiAUEBajYCECABIAAoAgRqIAJCGIg8AAAgACAAQbwtajUCADcDuC0gACAAKALALUEgayIBNgLALQsgAUEJTgRAIAAgACgCECIBQQFqNgIQIAEgACgCBGogACkDuC0iAjwAACAAIAAoAhAiAUEBajYCECABIAAoAgRqIAJCCIg8AAAgACAAKQO4LUIQiDcDuC0gACAAKALALUEQayIBNgLALQsgAUEBSA0AIAAgACgCECIBQQFqNgIQIAEgACgCBGogACkDuC08AAALIABBADYCwC0gAEIANwO4LQvwBAEDfyAAQYgBaiECA0AgAiABQQJ0IgNqQQA7AQAgAiADQQRyakEAOwEAIAFBAmoiAUGeAkcNAAsgAEEAOwHwFCAAQQA7AfwSIABBuBVqQQA7AQAgAEG0FWpBADsBACAAQbAVakEAOwEAIABBrBVqQQA7AQAgAEGoFWpBADsBACAAQaQVakEAOwEAIABBoBVqQQA7AQAgAEGcFWpBADsBACAAQZgVakEAOwEAIABBlBVqQQA7AQAgAEGQFWpBADsBACAAQYwVakEAOwEAIABBiBVqQQA7AQAgAEGEFWpBADsBACAAQYAVakEAOwEAIABB/BRqQQA7AQAgAEH4FGpBADsBACAAQfQUakEAOwEAIABB8BNqQQA7AQAgAEHsE2pBADsBACAAQegTakEAOwEAIABB5BNqQQA7AQAgAEHgE2pBADsBACAAQdwTakEAOwEAIABB2BNqQQA7AQAgAEHUE2pBADsBACAAQdATakEAOwEAIABBzBNqQQA7AQAgAEHIE2pBADsBACAAQcQTakEAOwEAIABBwBNqQQA7AQAgAEG8E2pBADsBACAAQbgTakEAOwEAIABBtBNqQQA7AQAgAEGwE2pBADsBACAAQawTakEAOwEAIABBqBNqQQA7AQAgAEGkE2pBADsBACAAQaATakEAOwEAIABBnBNqQQA7AQAgAEGYE2pBADsBACAAQZQTakEAOwEAIABBkBNqQQA7AQAgAEGME2pBADsBACAAQYgTakEAOwEAIABBhBNqQQA7AQAgAEGAE2pBADsBACAAQgA3A6AtIABBiAlqQQE7AQAgAEEANgKcLSAAQQA2ApQtC4oBAQR/IAAoAkggAWoiAyACIANqQQFrIgJNBEAgACgCUCEFA0AgAygAACEEIANBAWohAyAFIARBsfPd8XlsQQ92Qf7/B3FqIgQvAQAiBiABQf//A3FHBEAgACgCTCABIAAoAjhxQf//A3FBAXRqIAY7AQAgBCABOwEACyABQQFqIQEgAiADTw0ACwsLUAECfyABIAAoAlAgACgCSCABaigAAEGx893xeWxBD3ZB/v8HcWoiAy8BACICRwRAIAAoAkwgACgCOCABcUEBdGogAjsBACADIAE7AQALIAILhQUBE38gACgCcCIDIANBAnYgACgCbCIDQQEgAxsiAyAAKAKAAUkbIQcgACgCZCIKIAAoAjBBhgJrIgVrQf//A3FBACAFIApJGyEMIAAoAkgiCCAKaiIJIANBAWsiAmoiBS0AASENIAUtAAAhDiAJQQJqIQUgAiAIaiELIAAoAoQBIRIgACgCPCEPIAAoAkwhECAAKAI4IREgACgCeEEFSCETA0ACQCAKIAFB//8DcU0NAANAAkACQCALIAFB//8DcSIGai0AACAORw0AIAsgBkEBaiIBai0AACANRw0AIAYgCGoiAi0AACAJLQAARw0AIAEgCGotAAAgCS0AAUYNAQsgB0EBayIHRQ0CIAwgECAGIBFxQQF0ai8BACIBSQ0BDAILCyACQQJqIQRBACECIAUhAQJAA0AgAS0AACAELQAARw0BIAEtAAEgBC0AAUcEQCACQQFyIQIMAgsgAS0AAiAELQACRwRAIAJBAnIhAgwCCyABLQADIAQtAANHBEAgAkEDciECDAILIAEtAAQgBC0ABEcEQCACQQRyIQIMAgsgAS0ABSAELQAFRwRAIAJBBXIhAgwCCyABLQAGIAQtAAZHBEAgAkEGciECDAILIAEtAAcgBC0AB0cEQCACQQdyIQIMAgsgBEEIaiEEIAFBCGohASACQfgBSSEUIAJBCGohAiAUDQALQYACIQILAkAgAyACQQJqIgFJBEAgACAGNgJoIAEgD0sEQCAPDwsgASASTwRAIAEPCyAIIAJBAWoiA2ohCyADIAlqIgMtAAEhDSADLQAAIQ4gASEDDAELIBMNAQsgB0EBayIHRQ0AIAwgECAGIBFxQQF0ai8BACIBSQ0BCwsgAwuUAgECfwJ/QQAgAC0AACABLQAARw0AGkEBIAAtAAEgAS0AAUcNABogAUECaiEBIABBAmohAAJAA0AgAC0AACABLQAARw0BIAAtAAEgAS0AAUcEQCACQQFyIQIMAgsgAC0AAiABLQACRwRAIAJBAnIhAgwCCyAALQADIAEtAANHBEAgAkEDciECDAILIAAtAAQgAS0ABEcEQCACQQRyIQIMAgsgAC0ABSABLQAFRwRAIAJBBXIhAgwCCyAALQAGIAEtAAZHBEAgAkEGciECDAILIAAtAAcgAS0AB0cEQCACQQdyIQIMAgsgAUEIaiEBIABBCGohACACQfgBSSEDIAJBCGohAiADDQALQYACIQILIAJBAmoLC+IFAQR/IAMgAiACIANLGyEEIAAgAWshAgJAIABBB3FFDQAgBEUNACAAIAItAAA6AAAgA0EBayEGIAJBAWohAiAAQQFqIgdBB3FBACAEQQFrIgUbRQRAIAchACAFIQQgBiEDDAELIAAgAi0AADoAASADQQJrIQYgBEECayEFIAJBAWohAgJAIABBAmoiB0EHcUUNACAFRQ0AIAAgAi0AADoAAiADQQNrIQYgBEEDayEFIAJBAWohAgJAIABBA2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAAyADQQRrIQYgBEEEayEFIAJBAWohAgJAIABBBGoiB0EHcUUNACAFRQ0AIAAgAi0AADoABCADQQVrIQYgBEEFayEFIAJBAWohAgJAIABBBWoiB0EHcUUNACAFRQ0AIAAgAi0AADoABSADQQZrIQYgBEEGayEFIAJBAWohAgJAIABBBmoiB0EHcUUNACAFRQ0AIAAgAi0AADoABiADQQdrIQYgBEEHayEFIAJBAWohAgJAIABBB2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAByADQQhrIQMgBEEIayEEIABBCGohACACQQFqIQIMBgsgByEAIAUhBCAGIQMMBQsgByEAIAUhBCAGIQMMBAsgByEAIAUhBCAGIQMMAwsgByEAIAUhBCAGIQMMAgsgByEAIAUhBCAGIQMMAQsgByEAIAUhBCAGIQMLAkAgA0EXTQRAIARFDQEgBEEBayEBIARBB3EiAwRAA0AgACACLQAAOgAAIARBAWshBCAAQQFqIQAgAkEBaiECIANBAWsiAw0ACwsgAUEHSQ0BA0AgACACLQAAOgAAIAAgAi0AAToAASAAIAItAAI6AAIgACACLQADOgADIAAgAi0ABDoABCAAIAItAAU6AAUgACACLQAGOgAGIAAgAi0ABzoAByAAQQhqIQAgAkEIaiECIARBCGsiBA0ACwwBCyAAIAEgBBBWIQALIAALBABBCAsIAEEBQQwQMAuMCgIHfwF+AkADQAJAAn8CQCAAKAI8QYUCSw0AIAAQKQJAIAAoAjwiAkGFAksNACABDQBBAA8LIAJFDQIgAkEDTw0AQQAMAQsgACAAKAJkQcSYASgCABEBAAshAyAAIAAoAmg7AVxBAiECAkAgADUCZCADrX0iCUIBUw0AIAkgACgCMEGGAmutVQ0AIAAoAmwgACgCdE8NACADRQ0AIAAgA0HYmAEoAgARAQAiAkEFSw0AQQIgAiAAKAJ8QQFGGyECCwJAIAAoAmwiA0EDSQ0AIAIgA0sNACAAIAAoApQtIgJBAWo2ApQtIAAoAjwhBCACIAAoApAtaiAAKAJkIgYgAC8BXEF/c2oiAjoAACAAIAAoApQtIgVBAWo2ApQtIAUgACgCkC1qIAJBCHY6AAAgACAAKAKULSIFQQFqNgKULSAFIAAoApAtaiADQQNrOgAAIAAgACgCpC1BAWo2AqQtIANBzekAai0AAEECdCAAakGMCWoiAyADLwEAQQFqOwEAIAAgAkEBayICIAJBB3ZBgAJqIAJBgAJJG0HQ5QBqLQAAQQJ0akH8EmoiAiACLwEAQQFqOwEAIAAgACgCPCAAKAJsIgNBAWsiBWs2AjwgACgCmC0hByAAKAKULSEIIAQgBmpBA2siBCAAKAJkIgJLBEAgACACQQFqIAQgAmsiAiADQQJrIgMgAiADSRtBwJgBKAIAEQcAIAAoAmQhAgsgAEEANgJgIABBADYCbCAAIAIgBWoiBDYCZCAHIAhHDQJBACECIAAgACgCVCIDQQBOBH8gACgCSCADagVBAAsgBCADa0EAEA8gACAAKAJkNgJUIAAoAgAQDCAAKAIAKAIQDQIMAwsgACgCYARAIAAoAmQgACgCSGpBAWstAAAhAyAAIAAoApQtIgRBAWo2ApQtIAQgACgCkC1qQQA6AAAgACAAKAKULSIEQQFqNgKULSAEIAAoApAtakEAOgAAIAAgACgClC0iBEEBajYClC0gBCAAKAKQLWogAzoAACAAIANBAnRqIgMgAy8BiAFBAWo7AYgBIAAoApQtIAAoApgtRgRAIAAgACgCVCIDQQBOBH8gACgCSCADagVBAAsgACgCZCADa0EAEA8gACAAKAJkNgJUIAAoAgAQDAsgACACNgJsIAAgACgCZEEBajYCZCAAIAAoAjxBAWs2AjwgACgCACgCEA0CQQAPBSAAQQE2AmAgACACNgJsIAAgACgCZEEBajYCZCAAIAAoAjxBAWs2AjwMAgsACwsgACgCYARAIAAoAmQgACgCSGpBAWstAAAhAiAAIAAoApQtIgNBAWo2ApQtIAMgACgCkC1qQQA6AAAgACAAKAKULSIDQQFqNgKULSADIAAoApAtakEAOgAAIAAgACgClC0iA0EBajYClC0gAyAAKAKQLWogAjoAACAAIAJBAnRqIgIgAi8BiAFBAWo7AYgBIAAoApQtIAAoApgtRhogAEEANgJgCyAAIAAoAmQiA0ECIANBAkkbNgKoLSABQQRGBEAgACAAKAJUIgFBAE4EfyAAKAJIIAFqBUEACyADIAFrQQEQDyAAIAAoAmQ2AlQgACgCABAMQQNBAiAAKAIAKAIQGw8LIAAoApQtBEBBACECIAAgACgCVCIBQQBOBH8gACgCSCABagVBAAsgAyABa0EAEA8gACAAKAJkNgJUIAAoAgAQDCAAKAIAKAIQRQ0BC0EBIQILIAILxg4CD38BfgNAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACfwJAAkAgACgCPEGFAk0EQCAAECkgACgCPCIDQYUCSw0BIAENAUEADwsgCCEFIAYhBCALIQ0gCUH//wNxRQ0BDAMLIANFDQdBACADQQNJDQEaCyAAIAAoAmRBxJgBKAIAEQEACyECIAAoAmQiBa0gAq19IhFCAVMNASARIAAoAjBBhgJrrVUNASACRQ0BQQEgACACQdiYASgCABEBACIDIANB//8DcUEDSRtBASAAKAJoIg1B//8DcSAFQf//A3FJGyEJIAUhBAsgACgCPCICIAlB//8DcSIKQQNqSw0BIAkhAyAEIQUMAwtBASEKQQAhDUEBIQMgACgCPEEESw0BQQAhCQwHCwJ/AkAgCUH//wNxQQJNBEBBASAJQQFrQf//A3EiB0UNAhogBUH//wNxIgMgBEEBakH//wNxIgVLDQEgACAFIAcgAyAFa0EBaiAFIAdqIANLG0HAmAEoAgARBwAMAQsCQCAAKAJ0QQR0IApJDQAgAkEDSQ0AIAlBAWtB//8DcSIDIARBAWpB//8DcSICaiEHIAIgBUH//wNxIgxPBEBBwJgBKAIAIQUgByAMSwRAIAAgAiADIAURBwAMAwsgACACIAwgAmtBAWogBREHAAwCCyAHIAxNDQEgACAMIAcgDGtBwJgBKAIAEQcADAELIAQgCWpB//8DcSIDRQ0AIAAgA0EBa0HEmAEoAgARAQAaCyAJCyEDIAQhBQsgACgCPCECC0EAIQkgAkGHAkkNAyAKIAVB//8DcSIQaiIEIAAoAkRBhgJrTw0DIAAgBDYCZEEAIQsgACAEQcSYASgCABEBACEGIAAoAmQiCK0gBq19IhFCAVMNASARIAAoAjBBhgJrrVUNASAGRQ0BIAAgBkHYmAEoAgARAQAhCSAALwFoIgsgCEH//wNxIgJPDQEgCUH//wNxIgdBA0kNASAIIANB//8DcUECSQ0CGiAIIAogC0EBaksNAhogCCAKIAJBAWpLDQIaIAggACgCSCIEIAprQQFqIgYgC2otAAAgAiAGai0AAEcNAhogCCAEQQFrIgYgC2oiDi0AACACIAZqIg8tAABHDQIaIAggAiAIIAAoAjBBhgJrIgZrQf//A3FBACACIAZLGyIMTQ0CGiAIIAdB/wFLDQIaIAkhBiAIIQogAyECIAggCyIHQQJJDQIaA0ACQCACQQFrIQIgBkEBaiEEIAdBAWshByAKQQFrIQogDkEBayIOLQAAIA9BAWsiDy0AAEcNACACQf//A3FFDQAgDCAKQf//A3FPDQAgBkH//wNxQf4BSw0AIAQhBiAHQf//A3FBAUsNAQsLIAggAkH//wNxQQFLDQIaIAggBEH//wNxQQJGDQIaIAhBAWohCCACIQMgBCEJIAchCyAKDAILIAAgACgCZCIGQQIgBkECSRs2AqgtIAFBBEYEQEEAIQIgACAAKAJUIgFBAE4EfyAAKAJIIAFqBUEACyAGIAFrQQEQDyAAIAAoAmQ2AlQgACgCABAMQQNBAiAAKAIAKAIQGw8LIAAoApQtBEBBACEEQQAhAiAAIAAoAlQiAUEATgR/IAAoAkggAWoFQQALIAYgAWtBABAPIAAgACgCZDYCVCAAKAIAEAwgACgCACgCEEUNBwtBASEEDAYLQQEhCSAICyEGIAAgEDYCZAsgA0H//wNxIgJBAksNASADQf//A3FFDQQLIAAoApQtIQJBACEEIAMhDQNAIAAoAkggBUH//wNxai0AACEKIAAgAkEBajYClC0gACgCkC0gAmpBADoAACAAIAAoApQtIgdBAWo2ApQtIAcgACgCkC1qQQA6AAAgACAAKAKULSIHQQFqNgKULSAHIAAoApAtaiAKOgAAIAAgCkECdGoiB0GIAWogBy8BiAFBAWo7AQAgACAAKAI8QQFrNgI8IAVBAWohBSAEIAAoApQtIgIgACgCmC1GaiEEIA1BAWsiDUH//wNxDQALIANB//8DcSECDAELIAAgACgClC0iBEEBajYClC0gBCAAKAKQLWogBUH//wNxIA1B//8DcWsiBDoAACAAIAAoApQtIgVBAWo2ApQtIAUgACgCkC1qIARBCHY6AAAgACAAKAKULSIFQQFqNgKULSAFIAAoApAtaiADQQNrOgAAIAAgACgCpC1BAWo2AqQtIAJBzekAai0AAEECdCAAakGMCWoiAyADLwEAQQFqOwEAIAAgBEEBayIDIANBB3ZBgAJqIANBgAJJG0HQ5QBqLQAAQQJ0akH8EmoiAyADLwEAQQFqOwEAIAAgACgCPCACazYCPCAAKAKULSAAKAKYLUYhBAsgACAAKAJkIAJqIgM2AmQgBEUNAUEAIQRBACECIAAgACgCVCIFQQBOBH8gACgCSCAFagVBAAsgAyAFa0EAEA8gACAAKAJkNgJUIAAoAgAQDCAAKAIAKAIQDQELCyAEC7QHAgR/AX4CQANAAkACQAJAAkAgACgCPEGFAk0EQCAAECkCQCAAKAI8IgJBhQJLDQAgAQ0AQQAPCyACRQ0EIAJBA0kNAQsgACAAKAJkQcSYASgCABEBACECIAA1AmQgAq19IgZCAVMNACAGIAAoAjBBhgJrrVUNACACRQ0AIAAgAkHYmAEoAgARAQAiAkEDSQ0AIAAgACgClC0iA0EBajYClC0gAyAAKAKQLWogACgCZCAAKAJoayIDOgAAIAAgACgClC0iBEEBajYClC0gBCAAKAKQLWogA0EIdjoAACAAIAAoApQtIgRBAWo2ApQtIAQgACgCkC1qIAJBA2s6AAAgACAAKAKkLUEBajYCpC0gAkHN6QBqLQAAQQJ0IABqQYwJaiIEIAQvAQBBAWo7AQAgACADQQFrIgMgA0EHdkGAAmogA0GAAkkbQdDlAGotAABBAnRqQfwSaiIDIAMvAQBBAWo7AQAgACAAKAI8IAJrIgU2AjwgACgCmC0hAyAAKAKULSEEIAAoAnQgAk9BACAFQQJLGw0BIAAgACgCZCACaiICNgJkIAAgAkEBa0HEmAEoAgARAQAaIAMgBEcNBAwCCyAAKAJIIAAoAmRqLQAAIQIgACAAKAKULSIDQQFqNgKULSADIAAoApAtakEAOgAAIAAgACgClC0iA0EBajYClC0gAyAAKAKQLWpBADoAACAAIAAoApQtIgNBAWo2ApQtIAMgACgCkC1qIAI6AAAgACACQQJ0aiICQYgBaiACLwGIAUEBajsBACAAIAAoAjxBAWs2AjwgACAAKAJkQQFqNgJkIAAoApQtIAAoApgtRw0DDAELIAAgACgCZEEBaiIFNgJkIAAgBSACQQFrIgJBwJgBKAIAEQcAIAAgACgCZCACajYCZCADIARHDQILQQAhA0EAIQIgACAAKAJUIgRBAE4EfyAAKAJIIARqBUEACyAAKAJkIARrQQAQDyAAIAAoAmQ2AlQgACgCABAMIAAoAgAoAhANAQwCCwsgACAAKAJkIgRBAiAEQQJJGzYCqC0gAUEERgRAQQAhAiAAIAAoAlQiAUEATgR/IAAoAkggAWoFQQALIAQgAWtBARAPIAAgACgCZDYCVCAAKAIAEAxBA0ECIAAoAgAoAhAbDwsgACgClC0EQEEAIQNBACECIAAgACgCVCIBQQBOBH8gACgCSCABagVBAAsgBCABa0EAEA8gACAAKAJkNgJUIAAoAgAQDCAAKAIAKAIQRQ0BC0EBIQMLIAMLpRECC38CfiABQQRGIQcgACgCLCECAkACQAJAIAFBBEYEQCACQQJGDQIgAgRAQQAhAiAAQQAQPyAAQQA2AiwgACAAKAJkNgJUIAAoAgAQDCAAKAIAKAIQRQ0ECyAAIAcQPiAAQQI2AiwMAQsgAg0BIAAoAjxFDQEgACAHED4gAEEBNgIsCyAAIAAoAmQ2AlQLQQJBASABQQRGGyELIABB5ABqIQwgAEE8aiEKA0ACQCAAKAIMIAAoAhBBCGpLDQAgACgCABAMIAAoAgAiBCgCEA0AQQAhAiABQQRHDQIgBCgCBA0CIAAoAsAtDQIgACgCLEVBAXQPCwJAAkACQCAKKAIAQYUCTQRAIAAQKQJAIAAoAjwiAkGFAksNACABDQBBAA8LIAJFDQIgACgCLAR/IAIFIAAgBxA+IAAgCzYCLCAAIAAoAmQ2AlQgACgCPAtBA0kNAQsgACAAKAJkQcSYASgCABEBACECIAAoAmQiBK0gAq19Ig1CAVMNACANIAAoAjBBhgJrrVUNACAEIAAoAkgiBGogAiAEakHUmAEoAgARAQAiAkEDSQ0AIAAoAjwiBCACIAIgBEsbIgZBzekAai0AACIDQQJ0IgRB1OMAajMBACEOIARB1uMAai8BACECIANBCGtBE00EQCAGQQNrIARB0OsAaigCAGutIAKthiAOhCEOIARB0NgAaigCACACaiECCyAAKALALSEFIAIgDadBAWsiCCAIQQd2QYACaiAIQYACSRtB0OUAai0AACIEQQJ0IglB0uQAai8BAGohAyAJQdDkAGozAQAgAq2GIA6EIQ4gACkDuC0hDQJAIAUgBEEESQR/IAMFIAggCUHQ7ABqKAIAa60gA62GIA6EIQ4gCUHQ2QBqKAIAIANqCyIEaiICQT9NBEAgDiAFrYYgDYQhDgwBCyAFQcAARgRAIAAoAgQhAiAAIAAoAhAiA0EBajYCECACIANqIA08AAAgACgCBCECIAAgACgCECIDQQFqNgIQIAIgA2ogDUIIiDwAACAAKAIEIQIgACAAKAIQIgNBAWo2AhAgAiADaiANQhCIPAAAIAAoAgQhAiAAIAAoAhAiA0EBajYCECACIANqIA1CGIg8AAAgACgCBCECIAAgACgCECIDQQFqNgIQIAIgA2ogDUIgiDwAACAAKAIEIQIgACAAKAIQIgNBAWo2AhAgAiADaiANQiiIPAAAIAAoAgQhAiAAIAAoAhAiA0EBajYCECACIANqIA1CMIg8AAAgACgCBCECIAAgACgCECIDQQFqNgIQIAIgA2ogDUI4iDwAACAEIQIMAQsgACgCBCEEIAAgACgCECIDQQFqNgIQIAMgBGogDiAFrYYgDYQiDTwAACAAKAIEIQQgACAAKAIQIgNBAWo2AhAgAyAEaiANQgiIPAAAIAAoAgQhBCAAIAAoAhAiA0EBajYCECADIARqIA1CEIg8AAAgACgCBCEEIAAgACgCECIDQQFqNgIQIAMgBGogDUIYiDwAACAAKAIEIQQgACAAKAIQIgNBAWo2AhAgAyAEaiANQiCIPAAAIAAoAgQhBCAAIAAoAhAiA0EBajYCECADIARqIA1CKIg8AAAgACgCBCEEIAAgACgCECIDQQFqNgIQIAMgBGogDUIwiDwAACAAKAIEIQQgACAAKAIQIgNBAWo2AhAgAyAEaiANQjiIPAAAIAJBQGohAiAOQcAAIAVrrYghDgsgACAONwO4LSAAIAI2AsAtIAAgACgCPCAGazYCPCAMIQIMAgsgACgCSCAAKAJkai0AAEECdCICQdDbAGozAQAhDiAAKQO4LSENAkAgACgCwC0iAyACQdLbAGovAQAiBGoiAkE/TQRAIA4gA62GIA2EIQ4MAQsgA0HAAEYEQCAAKAIEIQIgACAAKAIQIgNBAWo2AhAgAiADaiANPAAAIAAoAgQhAiAAIAAoAhAiA0EBajYCECACIANqIA1CCIg8AAAgACgCBCECIAAgACgCECIDQQFqNgIQIAIgA2ogDUIQiDwAACAAKAIEIQIgACAAKAIQIgNBAWo2AhAgAiADaiANQhiIPAAAIAAoAgQhAiAAIAAoAhAiA0EBajYCECACIANqIA1CIIg8AAAgACgCBCECIAAgACgCECIDQQFqNgIQIAIgA2ogDUIoiDwAACAAKAIEIQIgACAAKAIQIgNBAWo2AhAgAiADaiANQjCIPAAAIAAoAgQhAiAAIAAoAhAiA0EBajYCECACIANqIA1COIg8AAAgBCECDAELIAAoAgQhBCAAIAAoAhAiBUEBajYCECAEIAVqIA4gA62GIA2EIg08AAAgACgCBCEEIAAgACgCECIFQQFqNgIQIAQgBWogDUIIiDwAACAAKAIEIQQgACAAKAIQIgVBAWo2AhAgBCAFaiANQhCIPAAAIAAoAgQhBCAAIAAoAhAiBUEBajYCECAEIAVqIA1CGIg8AAAgACgCBCEEIAAgACgCECIFQQFqNgIQIAQgBWogDUIgiDwAACAAKAIEIQQgACAAKAIQIgVBAWo2AhAgBCAFaiANQiiIPAAAIAAoAgQhBCAAIAAoAhAiBUEBajYCECAEIAVqIA1CMIg8AAAgACgCBCEEIAAgACgCECIFQQFqNgIQIAQgBWogDUI4iDwAACACQUBqIQIgDkHAACADa62IIQ4LIAAgDjcDuC0gACACNgLALSAAIAAoAmRBAWo2AmRBfyEGIAohAgwBCyAAIAAoAmQiAkECIAJBAkkbNgKoLSAAKAIsIQIgAUEERgRAAkAgAkUNACAAQQEQPyAAQQA2AiwgACAAKAJkNgJUIAAoAgAQDCAAKAIAKAIQDQBBAg8LQQMPCyACBEBBACECIABBABA/IABBADYCLCAAIAAoAmQ2AlQgACgCABAMIAAoAgAoAhBFDQMLQQEhAgwCCyACIAIoAgAgBmo2AgAMAAsACyACCwcAIAAoAiwLzgUCA34BfyMAQYBAaiIIJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEDhECAwwFAAEECAkJCQkJCQcJBgkLIANCCFoEfiACIAEoAmQ2AgAgAiABKAJoNgIEQggFQn8LIQYMCwsgARAGDAoLIAEoAhAiAgRAIAIgASkDGCABQeQAaiICEEIiA1ANCCABKQMIIgVCf4UgA1QEQCACBEAgAkEANgIEIAJBFTYCAAsMCQsgAUEANgIQIAEgAyAFfDcDCCABIAEpAwAgA3w3AwALIAEtAHgEQCABKQMAIQUMCQtCACEDIAEpAwAiBVAEQCABQgA3AyAMCgsDQCAAIAggBSADfSIFQoDAACAFQoDAAFQbEBEiB0J/VwRAIAFB5ABqIgEEQCABIAAoAgw2AgAgASAAKAIQNgIECwwJCyAHUEUEQCABKQMAIgUgAyAHfCIDWA0KDAELCyABQeQAagRAIAFBADYCaCABQRE2AmQLDAcLIAEpAwggASkDICIFfSIHIAMgAyAHVhsiA1ANCAJAIAEtAHhFDQAgACAFQQAQFUF/Sg0AIAFB5ABqIgEEQCABIAAoAgw2AgAgASAAKAIQNgIECwwHCyAAIAIgAxARIgZCf1cEQCABQeQAagRAIAFBADYCaCABQRE2AmQLDAcLIAEgASkDICAGfCIDNwMgIAZCAFINCEIAIQYgAyABKQMIWg0IIAFB5ABqBEAgAUEANgJoIAFBETYCZAsMBgsgASkDICABKQMAIgV9IAEpAwggBX0gAiADIAFB5ABqEEUiA0IAUw0FIAEgASkDACADfDcDIAwHCyACIAFBKGoQY0EfdawhBgwGCyABMABgIQYMBQsgASkDcCEGDAQLIAEpAyAgASkDAH0hBgwDCyABQeQAagRAIAFBADYCaCABQRw2AmQLC0J/IQYMAQsgASAFNwMgCyAIQYBAayQAIAYLDwAgACAAKAIwQQFqNgIwCwcAIAAoAigLBwAgACgCGAsHACAAQQxqCwcAIAAoAhALBwAgACgCCAtFAEHgmwFCADcDAEHYmwFCADcDAEHQmwFCADcDAEHImwFCADcDAEHAmwFCADcDAEG4mwFCADcDAEGwmwFCADcDAEGwmwELFAAgACABrSACrUIghoQgAyAEEFMLEwEBfiAAEDIiAUIgiKcQACABpwtvAQF+IAGtIAKtQiCGhCEFIwBBEGsiASQAAn8gAEUEQCAFUEUEQCAEBEAgBEEANgIEIARBEjYCAAtBAAwCC0EAQgAgAyAEEDkMAQsgASAFNwMIIAEgADYCACABQgEgAyAEEDkLIQAgAUEQaiQAIAALFAAgACABIAKtIAOtQiCGhCAEEFIL2gICAn8BfgJ/IAGtIAKtQiCGhCIHIAApAzBUQQAgBEEKSRtFBEAgAEEIagRAIABBADYCDCAAQRI2AggLQX8MAQsgAC0AGEECcQRAIABBCGoEQCAAQQA2AgwgAEEZNgIIC0F/DAELIAMEfyADQf//A3FBCEYgA0F9S3IFQQELRQRAIABBCGoEQCAAQQA2AgwgAEEQNgIIC0F/DAELIAAoAkAiASAHpyIFQQR0aigCACICBH8gAigCECADRgUgA0F/RgshBiABIAVBBHRqIgEhBSABKAIEIQECQCAGBEAgAUUNASABQQA7AVAgASABKAIAQX5xIgA2AgAgAA0BIAEQICAFQQA2AgRBAAwCCwJAIAENACAFIAIQKyIBNgIEIAENACAAQQhqBEAgAEEANgIMIABBDjYCCAtBfwwCCyABIAQ7AVAgASADNgIQIAEgASgCAEEBcjYCAAtBAAsLFwEBfiAAIAEgAhBPIgNCIIinEAAgA6cLHwEBfiAAIAEgAq0gA61CIIaEEBEiBEIgiKcQACAEpwteAQF+An5CfyAARQ0AGiAAKQMwIgIgAUEIcUUNABpCACACUA0AGiAAKAJAIQADQCACIAKnQQR0IABqQRBrKAIADQEaIAJCAX0iAkIAUg0AC0IACyICQiCIpxAAIAKnCxMAIAAgAa0gAq1CIIaEIAMQiAELnwEBAn4CfiACrSADrUIghoQhBUJ/IQQCQCAARQ0AIAAoAgQNACAAQQRqIQIgBUJ/VwRAIAIEQCACQQA2AgQgAkESNgIAC0J/DAILQgAhBCAALQAQDQAgBVANACAAKAIUIAEgBRARIgRCf1UNACAAKAIUIQAgAgRAIAIgACgCDDYCACACIAAoAhA2AgQLQn8hBAsgBAsiBEIgiKcQACAEpwsYACAAIAGtIAKtQiCGhCADIAAoAhwQggELsQICAX8BfgJ/QX8hBAJAIAAgAa0gAq1CIIaEIgZBAEEAECZFDQAgAC0AGEECcQRAIABBCGoEQCAAQQA2AgwgAEEZNgIIC0F/DAILIAAoAkAiASAGpyICQQR0aiIEKAIIIgUEQEEAIQQgBSADEElBf0oNASAAQQhqBEAgAEEANgIMIABBDzYCCAtBfwwCCwJAIAQoAgAiBQRAIAUoAhQgA0YNAQsCQCABIAJBBHRqIgEoAgQiBA0AIAEgBRArIgQ2AgQgBA0AIABBCGoEQCAAQQA2AgwgAEEONgIIC0F/DAMLIAQgAzYCFCAEIAQoAgBBIHI2AgBBAAwCC0EAIQQgASACQQR0aiIBKAIEIgBFDQAgACAAKAIAQV9xIgI2AgAgAg0AIAAQICABQQA2AgQLIAQLCxQAIAAgAa0gAq1CIIaEIAQgBRB3CxIAIAAgAa0gAq1CIIaEIAMQFQtBAQF+An4gAUEAIAIbRQRAIABBCGoEQCAAQQA2AgwgAEESNgIIC0J/DAELIAAgASACIAMQeAsiBEIgiKcQACAEpwvGAwIFfwF+An4CQAJAIAAiBC0AGEECcQRAIARBCGoEQCAEQQA2AgwgBEEZNgIICwwBCyABRQRAIARBCGoEQCAEQQA2AgwgBEESNgIICwwBCyABECIiByABakEBay0AAEEvRwRAIAdBAmoQCCIARQRAIARBCGoEQCAEQQA2AgwgBEEONgIICwwCCwJAAkAgACIGIAEiBXNBA3ENACAFQQNxBEADQCAGIAUtAAAiAzoAACADRQ0DIAZBAWohBiAFQQFqIgVBA3ENAAsLIAUoAgAiA0F/cyADQYGChAhrcUGAgYKEeHENAANAIAYgAzYCACAFKAIEIQMgBkEEaiEGIAVBBGohBSADQYGChAhrIANBf3NxQYCBgoR4cUUNAAsLIAYgBS0AACIDOgAAIANFDQADQCAGIAUtAAEiAzoAASAGQQFqIQYgBUEBaiEFIAMNAAsLIAcgACIDakEvOwAACyAEQQBCAEEAEFIiAEUEQCADEAYMAQsgBCADIAEgAxsgACACEHghCCADEAYgCEJ/VwRAIAAQCiAIDAMLIAQgCEEDQYCA/I8EEHdBf0oNASAEIAgQdhoLQn8hCAsgCAsiCEIgiKcQACAIpwsQACAAIAGtIAKtQiCGhBB2CxYAIAAgAa0gAq1CIIaEIAMgBCAFEGoLJQEBfiAAIAEgAhBPIgNCAFMEQEEADwsgACADIAIgACgCHBCCAQvgIwMPfwh+AXwjAEHwAGsiCSQAAkAgAUEATkEAIAAbRQRAIAIEQCACQQA2AgQgAkESNgIACwwBCyAAKQMYIhICfkGgmwEpAwAiE0J/UQRAIAlCg4CAgHA3AzAgCUKGgICA8AA3AyggCUKBgICAIDcDIEGgmwFBACAJQSBqECQ3AwAgCUKPgICAcDcDECAJQomAgICgATcDACAJQoyAgIDQATcDCEGomwFBCCAJECQ3AwBBoJsBKQMAIRMLIBMLgyATUgRAIAIEQCACQQA2AgQgAkEcNgIACwwBCyABIAFBEHJBqJsBKQMAIhMgEoMgE1EbIgpBGHFBGEYEQCACBEAgAkEANgIEIAJBGTYCAAsMAQsgCUE4ahAqAkAgACAJQThqECEEQAJAIAAoAgxBBUYEQCAAKAIQQSxGDQELIAIEQCACIAAoAgw2AgAgAiAAKAIQNgIECwwCCyAKQQFxRQRAIAIEQCACQQA2AgQgAkEJNgIACwwDCyACEEsiBUUNASAFIAo2AgQgBSAANgIAIApBEHFFDQIgBSAFKAIUQQJyNgIUIAUgBSgCGEECcjYCGAwCCyAKQQJxBEAgAgRAIAJBADYCBCACQQo2AgALDAILIAAQMUF/TARAIAIEQCACIAAoAgw2AgAgAiAAKAIQNgIECwwBCwJ/IApBCHEEQAJAIAIQSyIBRQ0AIAEgCjYCBCABIAA2AgAgCkEQcUUNACABIAEoAhRBAnI2AhQgASABKAIYQQJyNgIYCyABDAELIwBBQGoiDiQAIA5BCGoQKgJAIAAgDkEIahAhQX9MBEAgAgRAIAIgACgCDDYCACACIAAoAhA2AgQLDAELIA4tAAhBBHFFBEAgAgRAIAJBigE2AgQgAkEENgIACwwBCyAOKQMgIRMgAhBLIgVFBEBBACEFDAELIAUgCjYCBCAFIAA2AgAgCkEQcQRAIAUgBSgCFEECcjYCFCAFIAUoAhhBAnI2AhgLAkACQAJAIBNQBEACfyAAIQECQANAIAEpAxhCgIAQg0IAUg0BIAEoAgAiAQ0AC0EBDAELIAFBAEIAQRIQDqcLDQQgBUEIagRAIAVBADYCDCAFQRM2AggLDAELIwBB0ABrIgEkAAJAIBNCFVgEQCAFQQhqBEAgBUEANgIMIAVBEzYCCAsMAQsCQAJAIAUoAgBCACATQqqABCATQqqABFQbIhJ9QQIQFUF/Sg0AIAUoAgAiAygCDEEERgRAIAMoAhBBFkYNAQsgBUEIagRAIAUgAygCDDYCCCAFIAMoAhA2AgwLDAELIAUoAgAQMiITQn9XBEAgBSgCACEDIAVBCGoiCARAIAggAygCDDYCACAIIAMoAhA2AgQLDAELIAUoAgAgEkEAIAVBCGoiDxAtIgRFDQEgEkKqgARaBEACQCAEKQMIQhRUBEAgBEEAOgAADAELIARCFDcDECAEQQE6AAALCyABBEAgAUEANgIEIAFBEzYCAAsgBEIAEBMhDAJAIAQtAAAEfiAEKQMIIAQpAxB9BUIAC6ciB0ESa0EDSwRAQn8hFwNAIAxBAWshAyAHIAxqQRVrIQYCQANAIANBAWoiA0HQACAGIANrEH4iA0UNASADQQFqIgxBnxJBAxA8DQALAkAgAyAEKAIEa6wiEiAEKQMIVgRAIARBADoAAAwBCyAEIBI3AxAgBEEBOgAACyAELQAABH4gBCkDEAVCAAshEgJAIAQtAAAEfiAEKQMIIAQpAxB9BUIAC0IVWARAIAEEQCABQQA2AgQgAUETNgIACwwBCyAEQgQQEygAAEHQlpUwRwRAIAEEQCABQQA2AgQgAUETNgIACwwBCwJAAkACQCASQhRUDQAgBCgCBCASp2pBFGsoAABB0JaZOEcNAAJAIBJCFH0iFCAEIgMpAwhWBEAgA0EAOgAADAELIAMgFDcDECADQQE6AAALIAUoAhQhECAFKAIAIQYgAy0AAAR+IAQpAxAFQgALIRYgBEIEEBMaIAQQCyELIAQQCyENIAQQHiIUQn9XBEAgAQRAIAFBFjYCBCABQQQ2AgALDAQLIBRCOHwiFSATIBZ8IhZWBEAgAQRAIAFBADYCBCABQRU2AgALDAQLAkACQCATIBRWDQAgFSATIAQpAwh8Vg0AAkAgFCATfSIVIAQpAwhWBEAgA0EAOgAADAELIAMgFTcDECADQQE6AAALQQAhBwwBCyAGIBRBABAVQX9MBEAgAQRAIAEgBigCDDYCACABIAYoAhA2AgQLDAULQQEhByAGQjggAUEQaiABEC0iA0UNBAsgA0IEEBMoAABB0JaZMEcEQCABBEAgAUEANgIEIAFBFTYCAAsgB0UNBCADEAcMBAsgAxAeIRUCQCAQQQRxIgZFDQAgFCAVfEIMfCAWUQ0AIAEEQCABQQA2AgQgAUEVNgIACyAHRQ0EIAMQBwwECyADQgQQExogAxAWIhAgCyALQf//A0YbIQsgAxAWIhEgDSANQf//A0YbIQ0CQCAGRQ0AIA0gEUZBACALIBBGGw0AIAEEQCABQQA2AgQgAUEVNgIACyAHRQ0EIAMQBwwECyALIA1yBEAgAQRAIAFBADYCBCABQQE2AgALIAdFDQQgAxAHDAQLIAMQHiIYIAMQHlIEQCABBEAgAUEANgIEIAFBATYCAAsgB0UNBCADEAcMBAsgAxAeIRUgAxAeIRYgAy0AAEUEQCABBEAgAUEANgIEIAFBFDYCAAsgB0UNBCADEAcMBAsgBwRAIAMQBwsCQCAWQgBZBEAgFSAWfCIZIBZaDQELIAEEQCABQRY2AgQgAUEENgIACwwECyATIBR8IhQgGVQEQCABBEAgAUEANgIEIAFBFTYCAAsMBAsCQCAGRQ0AIBQgGVENACABBEAgAUEANgIEIAFBFTYCAAsMBAsgGCAVQi6AWA0BIAEEQCABQQA2AgQgAUEVNgIACwwDCwJAIBIgBCkDCFYEQCAEQQA6AAAMAQsgBCASNwMQIARBAToAAAsgBSgCFCEDIAQtAAAEfiAEKQMIIAQpAxB9BUIAC0IVWARAIAEEQCABQQA2AgQgAUEVNgIACwwDCyAELQAABH4gBCkDEAVCAAshFCAEQgQQExogBBAWBEAgAQRAIAFBADYCBCABQQE2AgALDAMLIAQQCyAEEAsiBkcEQCABBEAgAUEANgIEIAFBEzYCAAsMAwsgBBAWIQcgBBAWrSIWIAetIhV8IhggEyAUfCIUVgRAIAEEQCABQQA2AgQgAUEVNgIACwwDCwJAIANBBHFFDQAgFCAYUQ0AIAEEQCABQQA2AgQgAUEVNgIACwwDCyAGrSABEG4iA0UNAiADIBY3AyAgAyAVNwMYIANBADoALAwBCyAYIAEQbiIDRQ0BIAMgFjcDICADIBU3AxggA0EBOgAsCwJAIBJCFHwiFCAEKQMIVgRAIARBADoAAAwBCyAEIBQ3AxAgBEEBOgAACyAEEAshBgJAIAMpAxggAykDIHwgEiATfFYNAAJAIAZFBEAgBS0ABEEEcUUNAQsCQCASQhZ8IhIgBCkDCFYEQCAEQQA6AAAMAQsgBCASNwMQIARBAToAAAsgBC0AAAR+IAQpAwggBCkDEH0FQgALIhQgBq0iElQNASAFLQAEQQRxQQAgEiAUUhsNASAGRQ0AIAMgBCASEBMgBkEAIAEQNSIGNgIoIAYNACADEBcMAgsCQCATIAMpAyAiElgEQAJAIBIgE30iEiAEKQMIVgRAIARBADoAAAwBCyAEIBI3AxAgBEEBOgAACyAEIAMpAxgQEyIGRQ0CIAYgAykDGBAYIgcNASABBEAgAUEANgIEIAFBDjYCAAsgAxAXDAMLIAUoAgAgEkEAEBUhByAFKAIAIQYgB0F/TARAIAEEQCABIAYoAgw2AgAgASAGKAIQNgIECyADEBcMAwtBACEHIAYQMiADKQMgUQ0AIAEEQCABQQA2AgQgAUETNgIACyADEBcMAgtCACEUAkACQCADKQMYIhZQRQRAA0AgFCADKQMIUiILRQRAIAMtACwNAyAWQi5UDQMCfwJAIAMpAxAiFUKAgAR8IhIgFVpBACASQoCAgIABVBtFDQAgAygCACASp0EEdBAzIgZFDQAgAyAGNgIAAkAgAykDCCIVIBJaDQAgBiAVp0EEdGoiBkIANwIAIAZCADcABSAVQgF8IhUgElENAANAIAMoAgAgFadBBHRqIgZCADcCACAGQgA3AAUgFUIBfCIVIBJSDQALCyADIBI3AwggAyASNwMQQQEMAQsgAQRAIAFBADYCBCABQQ42AgALQQALRQ0EC0HYABAIIgYEfyAGQgA3AyAgBkEANgIYIAZC/////w83AxAgBkEAOwEMIAZBv4YoNgIIIAZBAToABiAGQQA7AQQgBkEANgIAIAZCADcDSCAGQYCA2I14NgJEIAZCADcDKCAGQgA3AzAgBkIANwM4IAZBQGtBADsBACAGQgA3A1AgBgVBAAshBiADKAIAIBSnQQR0aiAGNgIAAkAgBgRAIAYgBSgCACAHQQAgARBsIhJCf1UNAQsgCw0EIAEoAgBBE0cNBCABBEAgAUEANgIEIAFBFTYCAAsMBAsgFEIBfCEUIBYgEn0iFkIAUg0ACwsgFCADKQMIUg0AAkAgBS0ABEEEcUUNACAHBEAgBy0AAAR/IAcpAxAgBykDCFEFQQALRQ0CDAELIAUoAgAQMiISQn9XBEAgBSgCACEGIAEEQCABIAYoAgw2AgAgASAGKAIQNgIECyADEBcMBQsgEiADKQMYIAMpAyB8Ug0BCyAHEAcCfiAIBEACfyAXQgBXBEAgBSAIIAEQSiEXCyAFIAMgARBKIhIgF1ULBEAgCBAXIBIMAgsgAxAXDAULQgAgBS0ABEEEcUUNABogBSADIAEQSgshFyADIQgMAwsgAQRAIAFBADYCBCABQRU2AgALIAcQByADEBcMAgsgAxAXIAcQBwwBCyABBEAgAUEANgIEIAFBFTYCAAsgAxAXCwJAIAwgBCgCBGusIhIgBCkDCFYEQCAEQQA6AAAMAQsgBCASNwMQIARBAToAAAsgBC0AAAR+IAQpAwggBCkDEH0FQgALpyIHQRJrQQNLDQELCyAEEAcgF0J/VQ0DDAELIAQQBwsgDyIDBEAgAyABKAIANgIAIAMgASgCBDYCBAsgCBAXC0EAIQgLIAFB0ABqJAAgCA0BCyACBEAgAiAFKAIINgIAIAIgBSgCDDYCBAsMAQsgBSAIKAIANgJAIAUgCCkDCDcDMCAFIAgpAxA3AzggBSAIKAIoNgIgIAgQBiAFKAJQIQggBUEIaiIEIQFBACEHAkAgBSkDMCITUA0AQYCAgIB4IQYCfyATukQAAAAAAADoP6NEAADg////70GkIhpEAAAAAAAA8EFjIBpEAAAAAAAAAABmcQRAIBqrDAELQQALIgNBgICAgHhNBEAgA0EBayIDQQF2IANyIgNBAnYgA3IiA0EEdiADciIDQQh2IANyIgNBEHYgA3JBAWohBgsgBiAIKAIAIgxNDQAgBkEEEDAiC0UEQCABBEAgAUEANgIEIAFBDjYCAAsMAQsCQCAIKQMIQgAgDBtQBEAgCCgCECEPDAELIAgoAhAhDwNAIA8gB0ECdGooAgAiAQRAA0AgASgCGCEDIAEgCyABKAIcIAZwQQJ0aiINKAIANgIYIA0gATYCACADIgENAAsLIAdBAWoiByAMRw0ACwsgDxAGIAggBjYCACAIIAs2AhALAkAgBSkDMFANAEIAIRMCQCAKQQRxRQRAA0AgBSgCQCATp0EEdGooAgAoAjBBAEEAIAIQJSIBRQ0EIAUoAlAgASATQQggBBBQRQRAIAQoAgBBCkcNAwsgE0IBfCITIAUpAzBUDQAMAwsACwNAIAUoAkAgE6dBBHRqKAIAKAIwQQBBACACECUiAUUNAyAFKAJQIAEgE0EIIAQQUEUNASATQgF8IhMgBSkDMFQNAAsMAQsgAgRAIAIgBCgCADYCACACIAQoAgQ2AgQLDAELIAUgBSgCFDYCGAwBCyAAIAAoAjBBAWo2AjAgBRBNQQAhBQsgDkFAayQAIAULIgUNASAAEBsaC0EAIQULIAlB8ABqJAAgBQsQACMAIABrQXBxIgAkACAACwYAIAAkAAsEACMACwgAQQFBOBAwCyEBAX4gACABIAIQTyIEQgBTBEBBfw8LIAAgBCACIAMQUwvjKgMRfwh+A3wjAEHAwABrIgckAEF/IQICQCAARQ0AAn8gAC0AKEUEQEEAIAAoAhggACgCFEYNARoLQQELIQECQAJAIAApAzAiFFBFBEAgACgCQCEKA0AgCiASp0EEdGoiAy0ADCELAkACQCADKAIIDQAgCw0AIAMoAgQiA0UNASADKAIARQ0BC0EBIQELIBcgC0EBc61C/wGDfCEXIBJCAXwiEiAUUg0ACyAXQgBSDQELIAAoAgRBCHEgAXJFDQECfyAAKAIAIgMoAiQiAUEDRwRAIAMoAiAEf0F/IAMQG0EASA0CGiADKAIkBSABCwRAIAMQRAtBfyADQQBCAEEPEA5CAFMNARogA0EDNgIkC0EAC0F/Sg0BIAAoAgAoAgxBFkYEQCAAKAIAKAIQQSxGDQILIAAoAgAhASAAQQhqBEAgACABKAIMNgIIIAAgASgCEDYCDAsMAgsgAUUNACAUIBdUBEAgAEEIagRAIABBADYCDCAAQRQ2AggLDAILIBenQQN0EAgiC0UNAUJ/IRZCACESA0ACQCAKIBKnQQR0aiIGKAIAIgNFDQACQCAGKAIIDQAgBi0ADA0AIAYoAgQiAUUNASABKAIARQ0BCyAWIAMpA0giEyATIBZWGyEWCyAGLQAMRQRAIBcgGVgEQCALEAYgAEEIagRAIABBADYCDCAAQRQ2AggLDAQLIAsgGadBA3RqIBI3AwAgGUIBfCEZCyASQgF8IhIgFFINAAsgFyAZVgRAIAsQBiAAQQhqBEAgAEEANgIMIABBFDYCCAsMAgsCQAJAIAAoAgApAxhCgIAIg1ANAAJAAkAgFkJ/Ug0AIAApAzAiE1ANAiATQgGDIRUgACgCQCEDAkAgE0IBUQRAQn8hFEIAIRJCACEWDAELIBNCfoMhGUJ/IRRCACESQgAhFgNAIAMgEqdBBHRqKAIAIgEEQCAWIAEpA0giEyATIBZUIgEbIRYgFCASIAEbIRQLIAMgEkIBhCIYp0EEdGooAgAiAQRAIBYgASkDSCITIBMgFlQiARshFiAUIBggARshFAsgEkICfCESIBlCAn0iGVBFDQALCwJAIBVQDQAgAyASp0EEdGooAgAiAUUNACAWIAEpA0giEyATIBZUIgEbIRYgFCASIAEbIRQLIBRCf1ENAEIAIRMjAEEQayIGJAACQCAAIBQgAEEIaiIIEEIiFVANACAVIAAoAkAgFKdBBHRqKAIAIgopAyAiGHwiFCAYWkEAIBRCf1UbRQRAIAgEQCAIQRY2AgQgCEEENgIACwwBCyAKLQAMQQhxRQRAIBQhEwwBCyAAKAIAIBRBABAVIQEgACgCACEDIAFBf0wEQCAIBEAgCCADKAIMNgIAIAggAygCEDYCBAsMAQsgAyAGQQxqQgQQEUIEUgRAIAAoAgAhASAIBEAgCCABKAIMNgIAIAggASgCEDYCBAsMAQsgFEIEfCAUIAYoAAxB0JadwABGG0IUQgwCf0EBIQECQCAKKQMoQv7///8PVg0AIAopAyBC/v///w9WDQBBACEBCyABCxt8IhRCf1cEQCAIBEAgCEEWNgIEIAhBBDYCAAsMAQsgFCETCyAGQRBqJAAgEyIWQgBSDQEgCxAGDAULIBZQDQELAn8gACgCACIBKAIkQQFGBEAgAUEMagRAIAFBADYCECABQRI2AgwLQX8MAQtBfyABQQAgFkEREA5CAFMNABogAUEBNgIkQQALQX9KDQELQgAhFgJ/IAAoAgAiASgCJEEBRgRAIAFBDGoEQCABQQA2AhAgAUESNgIMC0F/DAELQX8gAUEAQgBBCBAOQgBTDQAaIAFBATYCJEEAC0F/Sg0AIAAoAgAhASAAQQhqBEAgACABKAIMNgIIIAAgASgCEDYCDAsgCxAGDAILIAAoAlQiAgRAIAJCADcDGCACKAIARAAAAAAAAAAAIAIoAgwgAigCBBEOAAsgAEEIaiEEIBe6IRxCACEUAkACQAJAA0AgFyAUIhNSBEAgE7ogHKMhGyATQgF8IhS6IByjIRoCQCAAKAJUIgJFDQAgAiAaOQMoIAIgGzkDICACKwMQIBogG6FEAAAAAAAAAACiIBugIhogAisDGKFjRQ0AIAIoAgAgGiACKAIMIAIoAgQRDgAgAiAaOQMYCwJ/AkAgACgCQCALIBOnQQN0aikDACITp0EEdGoiDSgCACIBBEAgASkDSCAWVA0BCyANKAIEIQUCQAJ/AkAgDSgCCCICRQRAIAVFDQFBASAFKAIAIgJBAXENAhogAkHAAHFBBnYMAgtBASAFDQEaCyANIAEQKyIFNgIEIAVFDQEgAkEARwshBkEAIQkjAEEQayIMJAACQCATIAApAzBaBEAgAEEIagRAIABBADYCDCAAQRI2AggLQX8hCQwBCyAAKAJAIgogE6ciA0EEdGoiDygCACICRQ0AIAItAAQNAAJAIAIpA0hCGnwiGEJ/VwRAIABBCGoEQCAAQRY2AgwgAEEENgIICwwBC0F/IQkgACgCACAYQQAQFUF/TARAIAAoAgAhAiAAQQhqBEAgACACKAIMNgIIIAAgAigCEDYCDAsMAgsgACgCAEIEIAxBDGogAEEIaiIOEC0iEEUNASAQEAshASAQEAshCCAQLQAABH8gECkDECAQKQMIUQVBAAshAiAQEAcgAkUEQCAOBEAgDkEANgIEIA5BFDYCAAsMAgsCQCAIRQ0AIAAoAgAgAa1BARAVQX9MBEBB+JsBKAIAIQIgDgRAIA4gAjYCBCAOQQQ2AgALDAMLQQAgACgCACAIQQAgDhBGIgFFDQEgASAIQYACIAxBCGogDhByIQIgARAGIAJFDQEgDCgCCCICRQ0AIAwgAhBxIgI2AgggDygCACgCNCACEHMhAiAPKAIAIAI2AjQLIA8oAgAiAkEBOgAEQQAhCSAKIANBBHRqKAIEIgFFDQEgAS0ABA0BIAIoAjQhAiABQQE6AAQgASACNgI0DAELQX8hCQsgDEEQaiQAIAlBAEgNBSAAKAIAEB8iGEIAUw0FIAUgGDcDSCAGBEBBACEMIA0oAggiDSEBIA1FBEAgACAAIBNBCEEAEIMBIgwhASAMRQ0HCwJAAkAgASAHQQhqECFBf0wEQCAEBEAgBCABKAIMNgIAIAQgASgCEDYCBAsMAQsgBykDCCISQsAAg1AEQCAHQQA7ATggByASQsAAhCISNwMICwJAAkAgBSgCECICQX5PBEAgBy8BOCIDRQ0BIAUgAzYCECADIQIMAgsgAg0AIBJCBINQDQAgByAHKQMgNwMoIAcgEkIIhCISNwMIQQAhAgwBCyAHIBJC9////w+DIhI3AwgLIBJCgAGDUARAIAdBADsBOiAHIBJCgAGEIhI3AwgLAn8gEkIEg1AEQEJ/IRVBgAoMAQsgBSAHKQMgIhU3AyggEkIIg1AEQAJAAkACQAJAQQggAiACQX1LG0H//wNxDg0CAwMDAwMDAwEDAwMAAwtBgApBgAIgFUKUwuTzD1YbDAQLQYAKQYACIBVCg4Ow/w9WGwwDC0GACkGAAiAVQv////8PVhsMAgtBgApBgAIgFUIAUhsMAQsgBSAHKQMoNwMgQYACCyEPIAAoAgAQHyITQn9XBEAgACgCACECIAQEQCAEIAIoAgw2AgAgBCACKAIQNgIECwwBCyAFIAUvAQxB9/8DcTsBDCAAIAUgDxA3IgpBAEgNACAHLwE4IghBCCAFKAIQIgMgA0F9SxtB//8DcSICRyEGAkACQAJAAkACQAJAAkAgAiAIRwRAIANBAEchAwwBC0EAIQMgBS0AAEGAAXFFDQELIAUvAVIhCSAHLwE6IQIMAQsgBS8BUiIJIAcvAToiAkYNAQsgASABKAIwQQFqNgIwIAJB//8DcQ0BIAEhAgwCCyABIAEoAjBBAWo2AjBBACEJDAILQSVBACAHLwE6QQFGGyICRQRAIAQEQCAEQQA2AgQgBEEYNgIACyABEAoMAwsgACABIAcvATpBACAAKAIcIAIRCAAhAiABEAogAkUNAgsgCUEARyEJIAhBAEcgBnFFBEAgAiEBDAELIAAgAiAHLwE4EIUBIQEgAhAKIAFFDQELAkAgCEUgBnJFBEAgASECDAELIAAgAUEAEIQBIQIgARAKIAJFDQELAkAgA0UEQCACIQMMAQsgACACIAUoAhBBASAFLwFQEIYBIQMgAhAKIANFDQELAkAgCUUEQCADIQEMAQsgBSgCVCIBRQRAIAAoAhwhAQsCfyAFLwFSGkEBCwRAIAQEQCAEQQA2AgQgBEEYNgIACyADEAoMAgsgACADIAUvAVJBASABQQARCAAhASADEAogAUUNAQsgACgCABAfIhhCf1cEQCAAKAIAIQIgBARAIAQgAigCDDYCACAEIAIoAhA2AgQLDAELAkAgARAxQQBOBEACfwJAAkAgASAHQUBrQoDAABARIhJCAVMNAEIAIRkgFUIAVQRAIBW5IRoDQCAAIAdBQGsgEhAcQQBIDQMCQCASQoDAAFINACAAKAJUIgJFDQAgAiAZQoBAfSIZuSAaoxB/CyABIAdBQGtCgMAAEBEiEkIAVQ0ACwwBCwNAIAAgB0FAayASEBxBAEgNAiABIAdBQGtCgMAAEBEiEkIAVQ0ACwtBACASQn9VDQEaIAQEQCAEIAEoAgw2AgAgBCABKAIQNgIECwtBfwshAiABEBsaDAELIAQEQCAEIAEoAgw2AgAgBCABKAIQNgIEC0F/IQILIAEgB0EIahAhQX9MBEAgBARAIAQgASgCDDYCACAEIAEoAhA2AgQLQX8hAgsCf0EAIQkCQCABIgNFDQADQCADLQAaQQFxBEBB/wEhCSADQQBCAEEQEA4iFUIAUw0CIBVCBFkEQCADQQxqBEAgA0EANgIQIANBFDYCDAsMAwsgFachCQwCCyADKAIAIgMNAAsLIAlBGHRBGHUiA0F/TAsEQCAEBEAgBCABKAIMNgIAIAQgASgCEDYCBAsgARAKDAELIAEQCiACQQBIDQAgACgCABAfIRUgACgCACECIBVCf1cEQCAEBEAgBCACKAIMNgIAIAQgAigCEDYCBAsMAQsgAiATEHlBf0wEQCAAKAIAIQIgBARAIAQgAigCDDYCACAEIAIoAhA2AgQLDAELIAcpAwgiE0LkAINC5ABSBEAgBARAIARBADYCBCAEQRQ2AgALDAELAkAgBS0AAEEgcQ0AIBNCEINQRQRAIAUgBygCMDYCFAwBCyAFQRRqEAEaCyAFIAcvATg2AhAgBSAHKAI0NgIYIAcpAyAhEyAFIBUgGH03AyAgBSATNwMoIAUgBS8BDEH5/wNxIANB/wFxQQF0cjsBDCAPQQp2IQNBPyEBAkACQAJAAkAgBSgCECICQQxrDgMAAQIBCyAFQS47AQoMAgtBLSEBIAMNACAFKQMoQv7///8PVg0AIAUpAyBC/v///w9WDQBBFCEBIAJBCEYNACAFLwFSQQFGDQAgBSgCMCICBH8gAi8BBAVBAAtB//8DcSICBEAgAiAFKAIwKAIAakEBay0AAEEvRg0BC0EKIQELIAUgATsBCgsgACAFIA8QNyICQQBIDQAgAiAKRwRAIAQEQCAEQQA2AgQgBEEUNgIACwwBCyAAKAIAIBUQeUF/Sg0BIAAoAgAhAiAEBEAgBCACKAIMNgIAIAQgAigCEDYCBAsLIA0NByAMEAoMBwsgDQ0CIAwQCgwCCyAFIAUvAQxB9/8DcTsBDCAAIAVBgAIQN0EASA0FIAAgEyAEEEIiE1ANBSAAKAIAIBNBABAVQX9MBEAgACgCACECIAQEQCAEIAIoAgw2AgAgBCACKAIQNgIECwwGCyAFKQMgIRIjAEGAQGoiAyQAAkAgElBFBEAgAEEIaiECIBK6IRoDQEF/IQEgACgCACADIBJCgMAAIBJCgMAAVBsiEyACEGlBAEgNAiAAIAMgExAcQQBIDQIgACgCVCAaIBIgE30iErqhIBqjEH8gEkIAUg0ACwtBACEBCyADQYBAayQAIAFBf0oNAUEBIREgAUEcdkEIcUEIRgwCCyAEBEAgBEEANgIEIARBDjYCAAsMBAtBAAtFDQELCyARDQBBfyECAkAgACgCABAfQgBTDQAgFyEUQQAhCkIAIRcjAEHwAGsiESQAAkAgACgCABAfIhVCAFkEQCAUUEUEQANAIAAgACgCQCALIBenQQN0aigCAEEEdGoiAygCBCIBBH8gAQUgAygCAAtBgAQQNyIBQQBIBEBCfyEXDAQLIAFBAEcgCnIhCiAXQgF8IhcgFFINAAsLQn8hFyAAKAIAEB8iGEJ/VwRAIAAoAgAhASAAQQhqBEAgACABKAIMNgIIIAAgASgCEDYCDAsMAgsgEULiABAYIgZFBEAgAEEIagRAIABBADYCDCAAQQ42AggLDAILIBggFX0hEyAVQv////8PViAUQv//A1ZyIApyQQFxBEAgBkGZEkEEECwgBkIsEBkgBkEtEA0gBkEtEA0gBkEAEBIgBkEAEBIgBiAUEBkgBiAUEBkgBiATEBkgBiAVEBkgBkGUEkEEECwgBkEAEBIgBiAYEBkgBkEBEBILIAZBnhJBBBAsIAZBABASIAYgFEL//wMgFEL//wNUG6dB//8DcSIBEA0gBiABEA0gBkF/IBOnIBNC/v///w9WGxASIAZBfyAVpyAVQv7///8PVhsQEiAGIABBJEEgIAAtACgbaigCACIDBH8gAy8BBAVBAAtB//8DcRANIAYtAABFBEAgAEEIagRAIABBADYCDCAAQRQ2AggLIAYQBwwCCyAAIAYoAgQgBi0AAAR+IAYpAxAFQgALEBwhASAGEAcgAUEASA0BIAMEQCAAIAMoAgAgAzMBBBAcQQBIDQILIBMhFwwBCyAAKAIAIQEgAEEIagRAIAAgASgCDDYCCCAAIAEoAhA2AgwLQn8hFwsgEUHwAGokACAXQgBTDQAgACgCABAfQj+HpyECCyALEAYgAkEASA0BAn8gACgCACIBKAIkQQFHBEAgAUEMagRAIAFBADYCECABQRI2AgwLQX8MAQsgASgCICICQQJPBEAgAUEMagRAIAFBADYCECABQR02AgwLQX8MAQsCQCACQQFHDQAgARAbQQBODQBBfwwBCyABQQBCAEEJEA5Cf1cEQCABQQI2AiRBfwwBCyABQQA2AiRBAAtFDQIgACgCACECIAQEQCAEIAIoAgw2AgAgBCACKAIQNgIECwwBCyALEAYLIAAoAlQQgAEgACgCABBEQX8hAgwCCyAAKAJUEIABCyAAEE1BACECCyAHQcDAAGokACACC6EDAQh/IwBBoAFrIgIkACAAEC8CQAJ/AkAgACgCACIBQQBOBEAgAUGwEygCAEgNAQsgAiABNgIQIAJBIGpB9hEgAkEQahB6QQEhBiACQSBqIQQgAkEgahAiIQNBAAwBCyABQQJ0IgFBsBJqKAIAIQUCfwJAAkAgAUHAE2ooAgBBAWsOAgABBAsgACgCBCEDQeSaASgCACEHQQAhAQJAAkADQCADIAFB0IkBai0AAEcEQEHXACEEIAFBAWoiAUHXAEcNAQwCCwsgASIEDQBBsIoBIQMMAQtBsIoBIQEDQCABLQAAIQggAUEBaiIDIQEgCA0AIAMhASAEQQFrIgQNAAsLIAcoAhQaIAMMAQtBACAAKAIEa0ECdEGI8QBqKAIACyIERQ0BIAQQIiEDIAVFBEBBACEFQQEhBkEADAELIAUQIkECagshASABIANqQQFqEAgiAUUEQEHoEigCACEFDAELIAIgBDYCCCACQawSQZESIAYbNgIEIAJBrBIgBSAGGzYCACABQasKIAIQeiAAIAE2AgggASEFCyACQaABaiQAIAULMwEBfyAAKAIUIgMgASACIAAoAhAgA2siASABIAJLGyIBEAkaIAAgACgCFCABajYCFCACCwYAQaSgAQsGAEGgoAELBgBBmKABCwcAIABBBGoLBwAgAEEIagsmAQF/IAAoAhQiAQRAIAEQCgsgACgCBCEBIABBBGoQLyAAEAYgAQupAQEDfwJAIAAtAAAiAkUNAANAIAEtAAAiBEUEQCACIQMMAgsCQCACIARGDQAgAkEgciACIAJBwQBrQRpJGyABLQAAIgJBIHIgAiACQcEAa0EaSRtGDQAgAC0AACEDDAILIAFBAWohASAALQABIQIgAEEBaiEAIAINAAsLIANB/wFxIgBBIHIgACAAQcEAa0EaSRsgAS0AACIAQSByIAAgAEHBAGtBGkkbawvMBgICfgJ/IwBB4ABrIgckAAJAAkACQAJAAkACQAJAAkACQAJAAkAgBA4PAAEKAgMEBgcICAgICAgFCAsgAUIANwMgDAkLIAAgAiADEBEiBUJ/VwRAIAFBCGoiAQRAIAEgACgCDDYCACABIAAoAhA2AgQLDAgLAkAgBVAEQCABKQMoIgMgASkDIFINASABIAM3AxggAUEBNgIEIAEoAgBFDQEgACAHQShqECFBf0wEQCABQQhqIgEEQCABIAAoAgw2AgAgASAAKAIQNgIECwwKCwJAIAcpAygiA0Igg1ANACAHKAJUIAEoAjBGDQAgAUEIagRAIAFBADYCDCABQQc2AggLDAoLIANCBINQDQEgBykDQCABKQMYUQ0BIAFBCGoEQCABQQA2AgwgAUEVNgIICwwJCyABKAIEDQAgASkDKCIDIAEpAyAiBlQNACAFIAMgBn0iA1gNACABKAIwIQQDQCABAn8gBSADfSIGQv////8PIAZC/////w9UGyIGpyEAQQAgAiADp2oiCEUNABogBCAIIACtQcyYASgCABEDAAsiBDYCMCABIAEpAyggBnw3AyggBSADIAZ8IgNWDQALCyABIAEpAyAgBXw3AyAMCAsgASgCBEUNByACIAEpAxgiAzcDGCABKAIwIQAgAkEANgIwIAIgAzcDICACIAA2AiwgAiACKQMAQuwBhDcDAAwHCyADQghaBH4gAiABKAIINgIAIAIgASgCDDYCBEIIBUJ/CyEFDAYLIAEQBgwFC0J/IQUgACkDGCIDQn9XBEAgAUEIaiIBBEAgASAAKAIMNgIAIAEgACgCEDYCBAsMBQsgB0F/NgIYIAdCj4CAgIACNwMQIAdCjICAgNABNwMIIAdCiYCAgKABNwMAIANBCCAHECRCf4WDIQUMBAsgA0IPWARAIAFBCGoEQCABQQA2AgwgAUESNgIICwwDCyACRQ0CAkAgACACKQMAIAIoAggQFUEATgRAIAAQMiIDQn9VDQELIAFBCGoiAQRAIAEgACgCDDYCACABIAAoAhA2AgQLDAMLIAEgAzcDIAwDCyABKQMgIQUMAgsgAUEIagRAIAFBADYCDCABQRw2AggLC0J/IQULIAdB4ABqJAAgBQuMBwICfgJ/IwBBEGsiByQAAkACQAJAAkACQAJAAkACQAJAAkAgBA4RAAECAwUGCAgICAgICAgHCAQICyABQn83AyAgAUEAOgAPIAFBADsBDCABQgA3AxggASgCrEAgASgCqEAoAgwRAgCtQgF9IQUMCAtCfyEFIAEoAgANB0IAIQUgA1ANByABLQANDQcgAUEoaiEEAkADQAJAIAcgAyAFfTcDCCABKAKsQCACIAWnaiAHQQhqIAEoAqhAKAIcEQAAIQhCACAHKQMIIAhBAkYbIAV8IQUCQAJAAkAgCEEBaw4DAAMBAgsgAUEBOgANIAEpAyAiA0J/VwRAIAEEQCABQQA2AgQgAUEUNgIACwwFCyABLQAORQ0EIAMgBVYNBCABIAM3AxggAUEBOgAPIAIgBCADpxAJGiABKQMYIQUMDAsgAS0ADA0DIAAgBEKAwAAQESIGQn9XBEAgAQRAIAEgACgCDDYCACABIAAoAhA2AgQLDAQLIAZQBEAgAUEBOgAMIAEoAqxAIAEoAqhAKAIYEQQAIAEpAyBCf1UNASABQgA3AyAMAQsCQCABKQMgQgBZBEAgAUEAOgAODAELIAEgBjcDIAsgASgCrEAgBCAGIAEoAqhAKAIUEQMAGgsgAyAFVg0BDAILCyABKAIADQAgAQRAIAFBADYCBCABQRQ2AgALCyAFUEUEQCABQQA6AA4gASABKQMYIAV8NwMYDAgLQn9CACABKAIAGyEFDAcLIAEoAqxAIAEoAqhAKAIQEQIArUIBfSEFDAYLIAEtABAEQCABLQANBEAgAiABLQAPBH9BAAVBCCABKAIUIgAgAEF9SxsLOwEwIAIgASkDGDcDICACIAIpAwBCyACENwMADAcLIAIgAikDAEK3////D4M3AwAMBgsgAkEAOwEwIAIpAwAhAyABLQANBEAgASkDGCEFIAIgA0LEAIQ3AwAgAiAFNwMYQgAhBQwGCyACIANCu////w+DQsAAhDcDAAwFCyABLQAPDQQgASgCrEAgASgCqEAoAggRAgCsIQUMBAsgA0IIWgR+IAIgASgCADYCACACIAEoAgQ2AgRCCAVCfwshBQwDCyABRQ0CIAEoAqxAIAEoAqhAKAIEEQQAIAEQLyABEAYMAgsgB0F/NgIAQRAgBxAkQj+EIQUMAQsgAQRAIAFBADYCBCABQRQ2AgALQn8hBQsgB0EQaiQAIAULYwBByAAQCCIARQRAQfibASgCACEBIAIEQCACIAE2AgQgAkEBNgIACyAADwsgAEEAOgAMIABBADoABCAAIAI2AgAgAEEANgI4IABCADcDMCAAIAFBCSABQQFrQQlJGzYCCCAAC0gBAX8gAEIANwIEIAAgATYCAAJAIAFBAEgNAEGwEygCACABTA0AIAFBAnRBwBNqKAIAQQFHDQBB+JsBKAIAIQILIAAgAjYCBAvuhwECJH8BfiACKQMAIScgACABNgIcIAAgJ0L/////DyAnQv////8PVBs+AiAgAEEQaiEKAn8gAC0ABARAAn8gAC0ADEECdCENQX4hAQJAAkACQCAKRQ0AIAooAiBFDQAgCigCJEUNACAKKAIcIgNFDQAgAygCACAKRw0AAkACQCADKAIgIgVBOWsOOQECAgICAgICAgICAgECAgIBAgICAgICAgICAgICAgICAgIBAgICAgICAgICAgIBAgICAgICAgICAQALIAVBmgVGDQAgBUEqRw0BCyANQQVLDQACQAJAIAooAgxFDQAgCigCBCIEBEAgCigCAEUNAQsgBUGaBUcNASANQQRGDQELIApBkPEAKAIANgIYQX4MBAsgCigCEEUNASADKAIkIQEgAyANNgIkAkAgAygCEARAIAMQFAJAIAooAhAiBSADKAIQIgkgBSAJSRsiAUUNACAKKAIMIAMoAgggARAJGiAKIAooAgwgAWo2AgwgAyADKAIIIAFqNgIIIAogCigCFCABajYCFCAKIAooAhAgAWsiBTYCECADIAMoAhAgAWsiCTYCECAJDQAgAyADKAIENgIIQQAhCQsgBQRAIAMoAiAhBQwCCwwECyAEDQAgDUEBdEF3QQAgDUEESxtqIAFBAXRBd0EAIAFBBEobakoNACANQQRGDQAMAgsCQAJAAkACQAJAIAVBKkcEQCAFQZoFRw0BIAooAgRFDQMMBwsgAygCFEUEQCADQfEANgIgDAILIAMoAjRBDHRBgPABayEBAkAgAygCfEECTg0AIAMoAngiBEEBTA0AIARBBUwEQCABQcAAciEBDAELQYABQcABIARBBkYbIAFyIQELIAMgCUEBajYCECADKAIEIAlqIAFBIHIgASADKAJkGyIBQQh2OgAAIAMgAygCECIEQQFqNgIQIAQgAygCBGogAUEfcCABckEfczoAACADKAJkBEAgAyAKKAIwEF0LIApBATYCMCADQfEANgIgIAoQDCADKAIQDQcgAygCICEFCwJAAkACQAJAIAVBOUYEfyADKAIAQQA2AjAgAyADKAIQIgFBAWo2AhAgASADKAIEakEfOgAAIAMgAygCECIBQQFqNgIQIAEgAygCBGpBiwE6AAAgAyADKAIQIgFBAWo2AhAgASADKAIEakEIOgAAAkAgAygCHCIBRQRAIANBABA0IAMgAygCECIBQQFqNgIQIAEgAygCBGpBADoAAEECIQEgAygCeCIEQQlHBEBBBCAEQQJIQQJ0IAMoAnxBAUobIQELIAMgAygCECIEQQFqNgIQIAQgAygCBGogAToAACADIAMoAhAiAUEBajYCECABIAMoAgRqQQM6AAAgA0HxADYCICAKEAwgAygCEEUNAQwNCyABKAIkIQQgASgCHCEFIAEoAhAhByABKAIsIQkgASgCACELIAMgAygCECIIQQFqNgIQQQIhASAIIAMoAgRqIAlBAEdBAXQgC0EAR3IgB0EAR0ECdHIgBUEAR0EDdHIgBEEAR0EEdHI6AAAgAyADKAIcKAIEEDQgAygCeCIEQQlHBEBBBCAEQQJIQQJ0IAMoAnxBAUobIQELIAMgAygCECIEQQFqNgIQIAQgAygCBGogAToAACADKAIcKAIMIQEgAyADKAIQIgRBAWo2AhAgBCADKAIEaiABOgAAIAMoAhwiASgCEAR/IAEoAhQhASADIAMoAhAiBEEBajYCECAEIAMoAgRqIAE6AAAgAyADKAIQIgRBAWo2AhAgBCADKAIEaiABQQh2OgAAIAMoAhwFIAELKAIsBEAgCgJ/IAooAjAhASADKAIQIQRBACADKAIEIgVFDQAaIAEgBSAErUHMmAEoAgARAwALNgIwCyADQcUANgIgIANBADYCGAwCCyADKAIgBSAFC0HFAGsOIwAEBAQBBAQEBAQEBAQEBAQEBAQEBAQCBAQEBAQEBAQEBAQDBAsgAygCHCIEKAIQIgUEQCADKAIMIgkgAygCECIBIAQvARQgAygCGCIHayIEakkEQANAIAMoAgQgAWogBSAHaiAJIAFrIgkQCRogAyADKAIMIgU2AhACQCADKAIcKAIsRQ0AIAEgBU8NACAKAn8gCigCMCEHQQAgAygCBCABaiILRQ0AGiAHIAsgBSABa61BzJgBKAIAEQMACzYCMAsgAyADKAIYIAlqNgIYIAooAhwiARAUAkAgCigCECIFIAEoAhAiByAFIAdJGyIFRQ0AIAooAgwgASgCCCAFEAkaIAogCigCDCAFajYCDCABIAEoAgggBWo2AgggCiAKKAIUIAVqNgIUIAogCigCECAFazYCECABIAEoAhAgBWsiBTYCECAFDQAgASABKAIENgIICyADKAIQDQwgAygCGCEHIAMoAhwoAhAhBUEAIQEgBCAJayIEIAMoAgwiCUsNAAsLIAMoAgQgAWogBSAHaiAEEAkaIAMgAygCECAEaiIENgIQAkAgAygCHCgCLEUNACABIARPDQAgCgJ/IAooAjAhBUEAIAMoAgQgAWoiB0UNABogBSAHIAQgAWutQcyYASgCABEDAAs2AjALIANBADYCGAsgA0HJADYCIAsgAygCHCgCHARAIAMoAhAiASEEA0ACQCABIAMoAgxHDQACQCADKAIcKAIsRQ0AIAEgBE0NACAKAn8gCigCMCEFQQAgAygCBCAEaiIHRQ0AGiAFIAcgASAEa61BzJgBKAIAEQMACzYCMAsgCigCHCIBEBQCQCAKKAIQIgQgASgCECIFIAQgBUkbIgRFDQAgCigCDCABKAIIIAQQCRogCiAKKAIMIARqNgIMIAEgASgCCCAEajYCCCAKIAooAhQgBGo2AhQgCiAKKAIQIARrNgIQIAEgASgCECAEayIENgIQIAQNACABIAEoAgQ2AggLQQAhAUEAIQQgAygCEEUNAAwLCyADKAIcKAIcIQUgAyADKAIYIgdBAWo2AhggBSAHai0AACEFIAMgAUEBajYCECADKAIEIAFqIAU6AAAgBQRAIAMoAhAhAQwBCwsCQCADKAIcKAIsRQ0AIAMoAhAiASAETQ0AIAoCfyAKKAIwIQVBACADKAIEIARqIgdFDQAaIAUgByABIARrrUHMmAEoAgARAwALNgIwCyADQQA2AhgLIANB2wA2AiALAkAgAygCHCgCJEUNACADKAIQIgEhBANAAkAgASADKAIMRw0AAkAgAygCHCgCLEUNACABIARNDQAgCgJ/IAooAjAhBUEAIAMoAgQgBGoiB0UNABogBSAHIAEgBGutQcyYASgCABEDAAs2AjALIAooAhwiARAUAkAgCigCECIEIAEoAhAiBSAEIAVJGyIERQ0AIAooAgwgASgCCCAEEAkaIAogCigCDCAEajYCDCABIAEoAgggBGo2AgggCiAKKAIUIARqNgIUIAogCigCECAEazYCECABIAEoAhAgBGsiBDYCECAEDQAgASABKAIENgIIC0EAIQFBACEEIAMoAhBFDQAMCgsgAygCHCgCJCEFIAMgAygCGCIHQQFqNgIYIAUgB2otAAAhBSADIAFBAWo2AhAgAygCBCABaiAFOgAAIAUEQCADKAIQIQEMAQsLIAMoAhwoAixFDQAgAygCECIBIARNDQAgCgJ/IAooAjAhBUEAIAMoAgQgBGoiB0UNABogBSAHIAEgBGutQcyYASgCABEDAAs2AjALIANB5wA2AiALAkAgAygCHCgCLARAIAMoAgwgAygCECIBQQJqSQRAIAoQDCADKAIQDQJBACEBCyAKKAIwIQQgAyABQQFqNgIQIAMoAgQgAWogBDoAACADIAMoAhAiAUEBajYCECABIAMoAgRqIARBCHY6AAAgAygCAEEANgIwCyADQfEANgIgIAoQDCADKAIQRQ0BDAcLDAYLIAooAgQNAQsgAygCPA0AIA1FDQEgAygCIEGaBUYNAQsCfyADKAJ4IgFFBEAgAyANEFwMAQsCQAJAAkAgAygCfEECaw4CAAECCwJ/AkADQAJAIAMoAjwNACADECkgAygCPA0AIA0NAkEADAMLIAMoAkggAygCZGotAAAhASADIAMoApQtIgRBAWo2ApQtIAQgAygCkC1qQQA6AAAgAyADKAKULSIEQQFqNgKULSAEIAMoApAtakEAOgAAIAMgAygClC0iBEEBajYClC0gBCADKAKQLWogAToAACADIAFBAnRqIgEgAS8BiAFBAWo7AYgBIAMgAygCPEEBazYCPCADIAMoAmRBAWoiBDYCZCADKAKULSADKAKYLUcNACADIAMoAlQiAUEATgR/IAMoAkggAWoFQQALIAQgAWtBABAPIAMgAygCZDYCVCADKAIAIgEoAhwiBBAUAkAgASgCECIFIAQoAhAiByAFIAdJGyIFRQ0AIAEoAgwgBCgCCCAFEAkaIAEgASgCDCAFajYCDCAEIAQoAgggBWo2AgggASABKAIUIAVqNgIUIAEgASgCECAFazYCECAEIAQoAhAgBWsiATYCECABDQAgBCAEKAIENgIICyADKAIAKAIQDQALQQAMAQsgA0EANgKoLSANQQRGBEAgAyADKAJUIgFBAE4EfyADKAJIIAFqBUEACyADKAJkIAFrQQEQDyADIAMoAmQ2AlQgAygCACIBKAIcIgQQFAJAIAEoAhAiBSAEKAIQIgcgBSAHSRsiBUUNACABKAIMIAQoAgggBRAJGiABIAEoAgwgBWo2AgwgBCAEKAIIIAVqNgIIIAEgASgCFCAFajYCFCABIAEoAhAgBWs2AhAgBCAEKAIQIAVrIgE2AhAgAQ0AIAQgBCgCBDYCCAtBA0ECIAMoAgAoAhAbDAELAkAgAygClC1FDQAgAyADKAJUIgFBAE4EfyADKAJIIAFqBUEACyADKAJkIAFrQQAQDyADIAMoAmQ2AlQgAygCACIBKAIcIgQQFAJAIAEoAhAiBSAEKAIQIgcgBSAHSRsiBUUNACABKAIMIAQoAgggBRAJGiABIAEoAgwgBWo2AgwgBCAEKAIIIAVqNgIIIAEgASgCFCAFajYCFCABIAEoAhAgBWs2AhAgBCAEKAIQIAVrIgE2AhAgAQ0AIAQgBCgCBDYCCAsgAygCACgCEA0AQQAMAQtBAQsMAgsCfwJAA0ACQAJAAkACQCADKAI8IghBggJLDQAgAxApAkAgAygCPCIIQYICSw0AIA0NAEEADAcLIAhFDQUgCEECSw0AIAMoAmQhCwwBCyADKAJkIgtFBEBBACELDAELIAMoAkggC2oiDEEBayIBLQAAIgkgDC0AAEcNACAJIAEtAAJHDQAgCSABLQADRw0AIAxBggJqIQ5BfyEBAkACQAJAAkACQAJAA0AgASAMaiIFLQAEIAlGBEAgCSAFLQAFRw0CIAkgBS0ABkcNAyAJIAUtAAdHDQQgCSAMIAFBCGoiBGoiBy0AAEcNByAJIAUtAAlHDQUgCSAFLQAKRw0GIAkgBUELaiIHLQAARw0HIAFB9wFIIQUgBCEBIAUNAQwHCwsgBUEEaiEHDAULIAVBBWohBwwECyAFQQZqIQcMAwsgBUEHaiEHDAILIAVBCWohBwwBCyAFQQpqIQcLIAggByAOa0GCAmoiASABIAhLGyIBQQJLDQELIAMoAkggC2otAAAhASADIAMoApQtIgRBAWo2ApQtIAQgAygCkC1qQQA6AAAgAyADKAKULSIEQQFqNgKULSAEIAMoApAtakEAOgAAIAMgAygClC0iBEEBajYClC0gBCADKAKQLWogAToAACADIAFBAnRqIgEgAS8BiAFBAWo7AYgBIAMgAygCPEEBazYCPCADIAMoAmRBAWoiCzYCZAwBCyADIAMoApQtIgRBAWo2ApQtIAQgAygCkC1qQQE6AAAgAyADKAKULSIEQQFqNgKULSAEIAMoApAtakEAOgAAIAMgAygClC0iBEEBajYClC0gBCADKAKQLWogAUEDazoAACADIAMoAqQtQQFqNgKkLSABQc3pAGotAABBAnQgA2pBjAlqIgQgBC8BAEEBajsBACADQdDlAC0AAEECdGpB/BJqIgQgBC8BAEEBajsBACADIAMoAjwgAWs2AjwgAyADKAJkIAFqIgs2AmQLIAMoApQtIAMoApgtRw0AIAMgAygCVCIBQQBOBH8gAygCSCABagVBAAsgCyABa0EAEA8gAyADKAJkNgJUIAMoAgAiASgCHCIEEBQCQCABKAIQIgUgBCgCECIHIAUgB0kbIgVFDQAgASgCDCAEKAIIIAUQCRogASABKAIMIAVqNgIMIAQgBCgCCCAFajYCCCABIAEoAhQgBWo2AhQgASABKAIQIAVrNgIQIAQgBCgCECAFayIBNgIQIAENACAEIAQoAgQ2AggLIAMoAgAoAhANAAtBAAwBCyADQQA2AqgtIA1BBEYEQCADIAMoAlQiAUEATgR/IAMoAkggAWoFQQALIAMoAmQgAWtBARAPIAMgAygCZDYCVCADKAIAIgEoAhwiBBAUAkAgASgCECIFIAQoAhAiByAFIAdJGyIFRQ0AIAEoAgwgBCgCCCAFEAkaIAEgASgCDCAFajYCDCAEIAQoAgggBWo2AgggASABKAIUIAVqNgIUIAEgASgCECAFazYCECAEIAQoAhAgBWsiATYCECABDQAgBCAEKAIENgIIC0EDQQIgAygCACgCEBsMAQsCQCADKAKULUUNACADIAMoAlQiAUEATgR/IAMoAkggAWoFQQALIAMoAmQgAWtB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ASABKAIodCIFIAEoAtA3akEBIAMoAiARAAAiAzYCOCADRQ0CIAMgBWpBACABKALQNxAaCyABKAIsIgVFBEAgAUIANwIwIAFBASABKAIodCIFNgIsCyAWIA5rIgMgBU8EQCABKAI4IBEgBWsgBRAJGiABQQA2AjQgASABKAIsNgIwDAELIAEoAjQiDSABKAI4aiARIANrIAMgBSANayIFIAMgBUkbIgUQCRogAyAFayIDBEAgASgCOCARIANrIAMQCRogASADNgI0IAEgASgCLDYCMAwBCyABQQAgASgCNCAFaiIDIAMgASgCLCINRhs2AjQgASgCMCIDIA1PDQAgASADIAVqNgIwCyAKIB8gCigCBGsiBSAKKAIIajYCCCAKIBYgCigCEGsiASAKKAIUajYCFCAGIAYoAiAgAWo2AiACQCAGLQAMQQRxRQ0AIAFFDQAgBgJ/IAYoAhQEQAJ/IAYoAhwhA0EAIAooAgwgAWsiDUUNABogAyANIAGtQcyYASgCABEDAAsMAQsgBigCHCAKKAIMIAFrIAFByJgBKAIAEQAACyIDNgIcIAogAzYCMAsgCiAGKAJAIAYoAghBAEdBBnRqIAYoAgQiA0G//gBGQQd0akGAAiADQcL+AEZBCHQgA0HH/gBGG2o2AiwgBCAEQXsgBBsgASAFchshFwwCCyAGQdL+ADYCBAtBfCEXCyAUQRBqJAAgFwshASACIAIpAwAgADUCIH03AwACQAJAAkACQCABQQVqDgcBAgICAgMAAgtBAQ8LIAAoAhQNAEEDDwsgACgCACIABEAgACABNgIEIABBDTYCAAtBAiEBCyABCwkAIABBAToADAtEAAJAIAJC/////w9YBEAgACgCFEUNAQsgACgCACIABEAgAEEANgIEIABBEjYCAAtBAA8LIAAgATYCECAAIAI+AhRBAQu6AQEEfyAAQRBqIQECfyAALQAEBEAgARBeDAELQX4hAwJAIAFFDQAgASgCIEUNACABKAIkIgRFDQAgASgCHCICRQ0AIAIoAgAgAUcNACACKAIEQbT+AGtBH0sNACACKAI4IgMEQCABKAIoIAMgBBEGACABKAIkIQQgASgCHCECCyABKAIoIAIgBBEGAEEAIQMgAUEANgIcCyADCyIBBEAgACgCACIABEAgACABNgIEIABBDTYCAAsLIAFFC5gMAQZ/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IAEQBiAABEAgAEEANgIEIABBDjYCAAsLIABBADYCFAwUCyADQgA3AwAgACABNgIUIAFBQGtCADcDACABQgA3AzgMFAsCQAJAIAJQBEBByAAQCCIDRQ0UIANCADcDACADQgA3AzAgA0EANgIoIANCADcDICADQgA3AxggA0IANwMQIANCADcDCCADQgA3AzggA0EIEAgiATYCBCABDQEgAxAGIAAEQCAAQQA2AgQgAEEONgIACwwUCyACIAAoAhAiASkDMFYEQCAABEAgAEEANgIEIABBEjYCAAsMFAsgASgCKARAIAAEQCAAQQA2AgQgAEEdNgIACwwUCyABKAIEIQMCQCABKQMIIgZCAX0iB1ANAANAAkAgAiADIAcgBH1CAYggBHwiBadBA3RqKQMAVARAIAVCAX0hBwwBCyAFIAZRBEAgBiEFDAMLIAMgBUIBfCIEp0EDdGopAwAgAlYNAgsgBCEFIAQgB1QNAAsLAkAgAiADIAWnIgpBA3RqKQMAfSIEUEUEQCABKAIAIgMgCkEEdGopAwghBwwBCyABKAIAIgMgBUIBfSIFp0EEdGopAwgiByEECyACIAcgBH1UBEAgAARAIABBADYCBCAAQRw2AgALDBQLIAMgBUIBfCIFQQAgABCHASIDRQ0TIAMoAgAgAygCCCIKQQR0akEIayAENwMAIAMoAgQgCkEDdGogAjcDACADIAI3AzAgAyABKQMYIgYgAykDCCIEQgF9IgcgBiAHVBs3AxggASADNgIoIAMgATYCKCABIAQ3AyAgAyAFNwMgDAELIAFCADcDAAsgACADNgIUIAMgBDcDQCADIAI3AzhCACEEDBMLIAAoAhAiAQRAAkAgASgCKCIDRQRAIAEpAxghAgwBCyADQQA2AiggASgCKEIANwMgIAEgASkDGCICIAEpAyAiBSACIAVWGyICNwMYCyABKQMIIAJWBEADQCABKAIAIAKnQQR0aigCABAGIAJCAXwiAiABKQMIVA0ACwsgASgCABAGIAEoAgQQBiABEAYLIAAoAhQhASAAQQA2AhQgACABNgIQDBILIAJCCFoEfiABIAAoAgA2AgAgASAAKAIENgIEQggFQn8LIQQMEQsgACgCECIBBEACQCABKAIoIgNFBEAgASkDGCECDAELIANBADYCKCABKAIoQgA3AyAgASABKQMYIgIgASkDICIFIAIgBVYbIgI3AxgLIAEpAwggAlYEQANAIAEoAgAgAqdBBHRqKAIAEAYgAkIBfCICIAEpAwhUDQALCyABKAIAEAYgASgCBBAGIAEQBgsgACgCFCIBBEACQCABKAIoIgNFBEAgASkDGCECDAELIANBADYCKCABKAIoQgA3AyAgASABKQMYIgIgASkDICIFIAIgBVYbIgI3AxgLIAEpAwggAlYEQANAIAEoAgAgAqdBBHRqKAIAEAYgAkIBfCICIAEpAwhUDQALCyABKAIAEAYgASgCBBAGIAEQBgsgABAGDBALIAAoAhAiAEIANwM4IABBQGtCADcDAAwPCyACQn9XBEAgAARAIABBADYCBCAAQRI2AgALDA4LIAIgACgCECIDKQMwIAMpAzgiBn0iBSACIAVUGyIFUA0OIAEgAykDQCIHpyIAQQR0IgEgAygCAGoiCigCACAGIAMoAgQgAEEDdGopAwB9IgKnaiAFIAopAwggAn0iBiAFIAZUGyIEpxAJIQogByAEIAMoAgAiACABaikDCCACfVGtfCECIAUgBlYEQANAIAogBKdqIAAgAqdBBHQiAWoiACgCACAFIAR9IgYgACkDCCIHIAYgB1QbIganEAkaIAIgBiADKAIAIgAgAWopAwhRrXwhAiAFIAQgBnwiBFYNAAsLIAMgAjcDQCADIAMpAzggBHw3AzgMDgtCfyEEQcgAEAgiA0UNDSADQgA3AwAgA0IANwMwIANBADYCKCADQgA3AyAgA0IANwMYIANCADcDECADQgA3AwggA0IANwM4IANBCBAIIgE2AgQgAUUEQCADEAYgAARAIABBADYCBCAAQQ42AgALDA4LIAFCADcDACAAKAIQIgEEQAJAIAEoAigiCkUEQCABKQMYIQQMAQsgCkEANgIoIAEoAihCADcDICABIAEpAxgiAiABKQMgIgUgAiAFVhsiBDcDGAsgASkDCCAEVgRAA0AgASgCACAEp0EEdGooAgAQBiAEQgF8IgQgASkDCFQNAAsLIAEoAgAQBiABKAIEEAYgARAGCyAAIAM2AhBCACEEDA0LIAAoAhQiAQRAAkAgASgCKCIDRQRAIAEpAxghAgwBCyADQQA2AiggASgCKEIANwMgIAEgASkDGCICIAEpAyAiBSACIAVWGyICNwMYCyABKQMIIAJWBEADQCABKAIAIAKn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cm9yAFRlbGwgZXJyb3IASW50ZXJuYWwgZXJyb3IAU2VlayBlcnJvcgBXcml0ZSBlcnJvcgBmaWxlIGVycm9yAFJlYWQgZXJyb3IAWmxpYiBlcnJvcgBkYXRhIGVycm9yAENSQyBlcnJvcgBpbmNvbXBhdGlibGUgdmVyc2lvbgBpbnZhbGlkIGNvZGUgLS0gbWlzc2luZyBlbmQtb2YtYmxvY2sAaW5jb3JyZWN0IGhlYWRlciBjaGVjawBpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrAGluY29ycmVjdCBkYXRhIGNoZWNrAGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAGhlYWRlciBjcmMgbWlzbWF0Y2gAMS4yLjExLnpsaWItbmcAaW52YWxpZCB3aW5kb3cgc2l6ZQBSZWFkLW9ubHkgYXJjaGl2ZQBOb3QgYSB6aXAgYXJjaGl2ZQBSZXNvdXJjZSBzdGlsbCBpbiB1c2UATWFsbG9jIGZhaWx1cmUAaW52YWxpZCBibG9jayB0eXBlAEZhaWx1cmUgdG8gY3JlYXRlIHRlbXBvcmFyeSBmaWxlAENhbid0IG9wZW4gZmlsZQBObyBzdWNoIGZpbGUAUHJlbWF0dXJlIGVuZCBvZiBmaWxlAENhbid0IHJlbW92ZSBmaWxlAGludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZQBpbnZhbGlkIGRpc3RhbmNlIGNvZGUAdW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QAc3RyZWFtIGVuZABDb21wcmVzc2VkIGRhdGEgaW52YWxpZABNdWx0aS1kaXNrIHppcCBhcmNoaXZlcyBub3Qgc3VwcG9ydGVkAE9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkAEVuY3J5cHRpb24gbWV0aG9kIG5vdCBzdXBwb3J0ZWQAQ29tcHJlc3Npb24gbWV0aG9kIG5vdCBzdXBwb3J0ZWQARW50cnkgaGFzIGJlZW4gZGVsZXRlZABDb250YWluaW5nIHppcCBhcmNoaXZlIHdhcyBjbG9zZWQAQ2xvc2luZyB6aXAgYXJjaGl2ZSBmYWlsZWQAUmVuYW1pbmcgdGVtcG9yYXJ5IGZpbGUgZmFpbGVkAEVudHJ5IGhhcyBiZWVuIGNoYW5nZWQATm8gcGFzc3dvcmQg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AQAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAABAAAAAQAAAAEAAAABAAAAAUAAAAFAAAABQAAAAUAQeDZAAtlAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAQAAAAFAAAABQAAAAYAAAAGAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACgAAAAoAAAALAAAACwAAAAwAAAAMAAAADQAAAA0AQdjaAAttBAAAAAQABAAIAAQABQAAAAQABAAIAAQABgAAAAQABgAgACAABgAAAAQABAAQABAABwAAAAgAEAAgACAABwAAAAgAEACAAIAABwAAAAgAIACAAAABCAAAACAAgAACAQAECAAAACAAAgECAQAQCABB0NsAC/cJDAAIAIwACABMAAgAzAAIACwACACsAAgAbAAIAOwACAAcAAgAnAAIAFwACADcAAgAPAAIALwACAB8AAgA/AAIAAIACACCAAgAQgAIAMIACAAiAAgAogAIAGIACADiAAgAEgAIAJIACABSAAgA0gAIADIACACyAAgAcgAIAPIACAAKAAgAigAIAEoACADKAAgAKgAIAKoACABqAAgA6gAIABoACACaAAgAWgAIANoACAA6AAgAugAIAHoACAD6AAgABgAIAIYACABGAAgAxgAIACYACACmAAgAZgAIAOYACAAWAAgAlgAIAFYACADWAAgANgAIALYACAB2AAgA9gAIAA4ACACOAAgATgAIAM4ACAAuAAgArgAIAG4ACADuAAgAHgAIAJ4ACABeAAgA3gAIAD4ACAC+AAgAfgAIAP4ACAABAAgAgQAIAEEACADBAAgAIQAIAKEACABhAAgA4QAIABEACACRAAgAUQAIANEACAAxAAgAsQAIAHEACADxAAgACQAIAIkACABJAAgAyQAIACkACACpAAgAaQAIAOkACAAZAAgAmQAIAFkACADZAAgAOQAIALkACAB5AAgA+QAIAAUACACFAAgARQAIAMUACAAlAAgApQAIAGUACADlAAgAFQAIAJUACABVAAgA1QAIADUACAC1AAgAdQAIAPUACAANAAgAjQAIAE0ACADNAAgALQAIAK0ACABtAAgA7QAIAB0ACACdAAgAXQAIAN0ACAA9AAgAvQAIAH0ACAD9AAgAEwAJABMBCQCTAAkAkwEJAFMACQBTAQkA0wAJ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IGRvd24ASG9zdCBpcyB1bnJlYWNoYWJsZQBBZGRyZXNzIGluIHVzZQBCcm9rZW4gcGlwZQBJL08gZXJyb3IATm8gc3VjaCBkZXZpY2Ugb3IgYWRkcmVzcwBCbG9jayBkZXZpY2UgcmVxdWlyZWQATm8gc3VjaCBkZXZpY2UATm90IGEgZGlyZWN0b3J5AElzIGEgZGlyZWN0b3J5AFRleHQgZmlsZSBidXN5AEV4ZWMgZm9ybWF0IGVycm9yAEludmFsaWQgYXJndW1lbnQAQXJndW1lbnQgbGlzdCB0b28gbG9uZwBTeW1ib2xpYyBsaW5rIGxvb3AARmlsZW5hbWUgdG9vIGxvbmcAVG9vIG1hbnkgb3BlbiBmaWxlcyBpbiBzeXN0ZW0ATm8gZmlsZSBkZXNjcmlwdG9ycyBhdmFpbGFibGUAQmFkIGZpbGUgZGVzY3JpcHRvcgBObyBjaGlsZCBwcm9jZXNzAEJhZCBhZGRyZXNzAEZpbGUgdG9vIGxhcmdlAFRvbyBtYW55IGxpbmtzAE5vIGxvY2tzIGF2YWlsYWJsZQBSZXNvdXJjZSBkZWFkbG9jayB3b3VsZCBvY2N1cgBTdGF0ZSBub3QgcmVjb3ZlcmFibGUAUHJldmlvdXMgb3duZXIgZGllZABPcGVyYXRpb24gY2FuY2VsZWQARnVuY3Rpb24gbm90IGltcGxlbWVudGVkAE5vIG1lc3NhZ2Ugb2YgZGVzaXJlZCB0eXBlAElkZW50aWZpZXIgcmVtb3ZlZABEZXZpY2Ugbm90IGEgc3RyZWFtAE5vIGRhdGEgYXZhaWxhYmxlAERldmljZSB0aW1lb3V0AE91dCBvZiBzdHJlYW1zIHJlc291cmNlcwBMaW5rIGhhcyBiZWVuIHNldmVyZWQAUHJvdG9jb2wgZXJyb3IAQmFkIG1lc3NhZ2UARmlsZSBkZXNjcmlwdG9yIGluIGJhZCBzdGF0ZQBOb3QgYSBzb2NrZXQARGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZABNZXNzYWdlIHRvbyBsYXJnZQBQcm90b2NvbCB3cm9uZyB0eXBlIGZvciBzb2NrZXQAUHJvdG9jb2wgbm90IGF2YWlsYWJsZQBQcm90b2NvbCBub3Qgc3VwcG9ydGVkAFNvY2tldCB0eXBlIG5vdCBzdXBwb3J0ZWQATm90IHN1cHBvcnRlZABQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRlZABBZGRyZXNzIGZhbWlseSBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sAEFkZHJlc3Mgbm90IGF2YWlsYWJsZQBOZXR3b3JrIGlzIGRvd24ATmV0d29yayB1bnJlYWNoYWJsZQBDb25uZWN0aW9uIHJlc2V0IGJ5IG5ldHdvcmsAQ29ubmVjdGlvbiBhYm9ydGVkAE5vIGJ1ZmZlciBzcGFjZSBhdmFpbGFibGUAU29ja2V0IGlzIGNvbm5lY3RlZABTb2NrZXQgbm90IGNvbm5lY3RlZABDYW5ub3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd24AT3BlcmF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MAT3BlcmF0aW9uIGluIHByb2dyZXNzAFN0YWxlIGZpbGUgaGFuZGxlAFJlbW90ZSBJL08gZXJyb3IAUXVvdGEgZXhjZWVkZWQATm8gbWVkaXVtIGZvdW5kAFdyb25nIG1lZGl1bSB0eXBlAE5vIGVycm9yIGluZm9ybWF0aW9uAEHAmAELdRYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAABwUFAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQBB5JoBCwJQUABBoJsBCxD/////////////////////";to(Di)||(Di=b(Di));function Qs(Be){try{if(Be==Di&&pe)return new Uint8Array(pe);var xe=$n(Be);if(xe)return xe;if(R)return R(Be);throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}catch(Ve){ki(Ve)}}function ro(Be,xe){var Ve,vt,tr;try{tr=Qs(Be),vt=new WebAssembly.Module(tr),Ve=new WebAssembly.Instance(vt,xe)}catch(Tn){var Zr=Tn.toString();throw re("failed to compile wasm module: "+Zr),(Zr.includes("imported Memory")||Zr.includes("memory import"))&&re("Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."),Tn}return[Ve,vt]}function hc(){var Be={a:Ua};function xe(tr,Zr){var Tn=tr.exports;r.asm=Tn,le=r.asm.g,z(le.buffer),$=r.asm.$,tn(r.asm.h),bs("wasm-instantiate")}if(Hn("wasm-instantiate"),r.instantiateWasm)try{var Ve=r.instantiateWasm(Be,xe);return Ve}catch(tr){return re("Module.instantiateWasm callback failed with error: "+tr),!1}var vt=ro(Di,Be);return xe(vt[0]),r.asm}function gu(Be){return F.getFloat32(Be,!0)}function cp(Be){return F.getFloat64(Be,!0)}function up(Be){return F.getInt16(Be,!0)}function ks(Be){return F.getInt32(Be,!0)}function Cn(Be,xe){F.setInt32(Be,xe,!0)}function no(Be){for(;Be.length>0;){var xe=Be.shift();if(typeof xe=="function"){xe(r);continue}var Ve=xe.func;typeof Ve=="number"?xe.arg===void 0?$.get(Ve)():$.get(Ve)(xe.arg):Ve(xe.arg===void 0?null:xe.arg)}}function Fs(Be,xe){var Ve=new Date(ks((Be>>2)*4)*1e3);Cn((xe>>2)*4,Ve.getUTCSeconds()),Cn((xe+4>>2)*4,Ve.getUTCMinutes()),Cn((xe+8>>2)*4,Ve.getUTCHours()),Cn((xe+12>>2)*4,Ve.getUTCDate()),Cn((xe+16>>2)*4,Ve.getUTCMonth()),Cn((xe+20>>2)*4,Ve.getUTCFullYear()-1900),Cn((xe+24>>2)*4,Ve.getUTCDay()),Cn((xe+36>>2)*4,0),Cn((xe+32>>2)*4,0);var vt=Date.UTC(Ve.getUTCFullYear(),0,1,0,0,0,0),tr=(Ve.getTime()-vt)/(1e3*60*60*24)|0;return Cn((xe+28>>2)*4,tr),Fs.GMTString||(Fs.GMTString=yt("GMT")),Cn((xe+40>>2)*4,Fs.GMTString),xe}function Cl(Be,xe){return Fs(Be,xe)}function Il(Be,xe,Ve){qe.copyWithin(Be,xe,xe+Ve)}function io(Be){try{return le.grow(Be-Qe.byteLength+65535>>>16),z(le.buffer),1}catch{}}function Ue(Be){var xe=qe.length;Be=Be>>>0;var Ve=2147483648;if(Be>Ve)return!1;for(var vt=1;vt<=4;vt*=2){var tr=xe*(1+.2/vt);tr=Math.min(tr,Be+100663296);var Zr=Math.min(Ve,Te(Math.max(Be,tr),65536)),Tn=io(Zr);if(Tn)return!0}return!1}function Fn(Be){he(Be)}function Fi(Be){var xe=Date.now()/1e3|0;return Be&&Cn((Be>>2)*4,xe),xe}function Rn(){if(Rn.called)return;Rn.called=!0;var Be=new Date().getFullYear(),xe=new Date(Be,0,1),Ve=new Date(Be,6,1),vt=xe.getTimezoneOffset(),tr=Ve.getTimezoneOffset(),Zr=Math.max(vt,tr);Cn((mi()>>2)*4,Zr*60),Cn((es()>>2)*4,Number(vt!=tr));function Tn(ja){var la=ja.toTimeString().match(/\(([A-Za-z ]+)\)$/);return la?la[1]:"GMT"}var _r=Tn(xe),ei=Tn(Ve),Ti=yt(_r),Kn=yt(ei);tr<vt?(Cn(($i()>>2)*4,Ti),Cn(($i()+4>>2)*4,Kn)):(Cn(($i()>>2)*4,Kn),Cn(($i()+4>>2)*4,Ti))}function Ui(Be){Rn();var xe=Date.UTC(ks((Be+20>>2)*4)+1900,ks((Be+16>>2)*4),ks((Be+12>>2)*4),ks((Be+8>>2)*4),ks((Be+4>>2)*4),ks((Be>>2)*4),0),Ve=new Date(xe);Cn((Be+24>>2)*4,Ve.getUTCDay());var vt=Date.UTC(Ve.getUTCFullYear(),0,1,0,0,0,0),tr=(Ve.getTime()-vt)/(1e3*60*60*24)|0;return Cn((Be+28>>2)*4,tr),Ve.getTime()/1e3|0}var Zt=typeof atob=="function"?atob:function(Be){var xe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",Ve="",vt,tr,Zr,Tn,_r,ei,Ti,Kn=0;Be=Be.replace(/[^A-Za-z0-9\+\/\=]/g,"");do Tn=xe.indexOf(Be.charAt(Kn++)),_r=xe.indexOf(Be.charAt(Kn++)),ei=xe.indexOf(Be.charAt(Kn++)),Ti=xe.indexOf(Be.charAt(Kn++)),vt=Tn<<2|_r>>4,tr=(_r&15)<<4|ei>>2,Zr=(ei&3)<<6|Ti,Ve=Ve+String.fromCharCode(vt),ei!==64&&(Ve=Ve+String.fromCharCode(tr)),Ti!==64&&(Ve=Ve+String.fromCharCode(Zr));while(Kn<Be.length);return Ve};function Ri(Be){if(typeof w=="boolean"&&w){var xe;try{xe=Buffer.from(Be,"base64")}catch{xe=new Buffer(Be,"base64")}return new Uint8Array(xe.buffer,xe.byteOffset,xe.byteLength)}try{for(var Ve=Zt(Be),vt=new Uint8Array(Ve.length),tr=0;tr<Ve.length;++tr)vt[tr]=Ve.charCodeAt(tr);return vt}catch{throw new Error("Converting base64 string to bytes failed.")}}function $n(Be){if(!!to(Be))return Ri(Be.slice(gs.length))}var Ua={e:Cl,c:Il,d:Ue,a:Fn,b:Fi,f:Ui},$t=hc(),gc=r.___wasm_call_ctors=$t.h,du=r._zip_ext_count_symlinks=$t.i,dc=r._zip_file_get_external_attributes=$t.j,wl=r._zipstruct_stat=$t.k,xA=r._zipstruct_statS=$t.l,mu=r._zipstruct_stat_name=$t.m,Ce=r._zipstruct_stat_index=$t.n,Rt=r._zipstruct_stat_size=$t.o,mc=r._zipstruct_stat_mtime=$t.p,_i=r._zipstruct_stat_crc=$t.q,yu=r._zipstruct_error=$t.r,qt=r._zipstruct_errorS=$t.s,Bl=r._zipstruct_error_code_zip=$t.t,bA=r._zipstruct_stat_comp_size=$t.u,Ap=r._zipstruct_stat_comp_method=$t.v,yc=r._zip_close=$t.w,QA=r._zip_delete=$t.x,Dn=r._zip_dir_add=$t.y,ui=r._zip_discard=$t.z,Ec=r._zip_error_init_with_code=$t.A,kA=r._zip_get_error=$t.B,na=r._zip_file_get_error=$t.C,Hi=r._zip_error_strerror=$t.D,Mo=r._zip_fclose=$t.E,$e=r._zip_file_add=$t.F,so=r._free=$t.G,vl=r._malloc=$t.H,Eu=r._zip_source_error=$t.I,qi=r._zip_source_seek=$t.J,Cu=r._zip_file_set_external_attributes=$t.K,FA=r._zip_file_set_mtime=$t.L,Ha=r._zip_fopen=$t.M,Cc=r._zip_fopen_index=$t.N,ds=r._zip_fread=$t.O,Ot=r._zip_get_name=$t.P,Sn=r._zip_get_num_entries=$t.Q,di=r._zip_source_read=$t.R,ia=r._zip_name_locate=$t.S,oo=r._zip_open_from_source=$t.T,Rs=r._zip_set_file_compression=$t.U,sa=r._zip_source_buffer=$t.V,oa=r._zip_source_buffer_create=$t.W,Uo=r._zip_source_close=$t.X,Zi=r._zip_source_free=$t.Y,Ts=r._zip_source_keep=$t.Z,Ns=r._zip_source_open=$t._,Ls=r._zip_source_set_mtime=$t.aa,ao=r._zip_source_tell=$t.ba,Yn=r._zip_stat=$t.ca,qn=r._zip_stat_index=$t.da,$i=r.__get_tzname=$t.ea,es=r.__get_daylight=$t.fa,mi=r.__get_timezone=$t.ga,qa=r.stackSave=$t.ha,aa=r.stackRestore=$t.ia,ee=r.stackAlloc=$t.ja;r.cwrap=ne,r.getValue=ge;var we;jr=function Be(){we||je(),we||(jr=Be)};function je(Be){if(Be=Be||A,fr>0||(ht(),fr>0))return;function xe(){we||(we=!0,r.calledRun=!0,!Pe&&(Ut(),o(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),Xt()))}r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),xe()},1)):xe()}if(r.run=je,r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return je(),e}}();typeof BD=="object"&&typeof iT=="object"?iT.exports=nT:typeof define=="function"&&define.amd?define([],function(){return nT}):typeof BD=="object"&&(BD.createModule=nT)});var Ef,zW,XW,ZW=dt(()=>{Ef=["number","number"],zW=(Z=>(Z[Z.ZIP_ER_OK=0]="ZIP_ER_OK",Z[Z.ZIP_ER_MULTIDISK=1]="ZIP_ER_MULTIDISK",Z[Z.ZIP_ER_RENAME=2]="ZIP_ER_RENAME",Z[Z.ZIP_ER_CLOSE=3]="ZIP_ER_CLOSE",Z[Z.ZIP_ER_SEEK=4]="ZIP_ER_SEEK",Z[Z.ZIP_ER_READ=5]="ZIP_ER_READ",Z[Z.ZIP_ER_WRITE=6]="ZIP_ER_WRITE",Z[Z.ZIP_ER_CRC=7]="ZIP_ER_CRC",Z[Z.ZIP_ER_ZIPCLOSED=8]="ZIP_ER_ZIPCLOSED",Z[Z.ZIP_ER_NOENT=9]="ZIP_ER_NOENT",Z[Z.ZIP_ER_EXISTS=10]="ZIP_ER_EXISTS",Z[Z.ZIP_ER_OPEN=11]="ZIP_ER_OPEN",Z[Z.ZIP_ER_TMPOPEN=12]="ZIP_ER_TMPOPEN",Z[Z.ZIP_ER_ZLIB=13]="ZIP_ER_ZLIB",Z[Z.ZIP_ER_MEMORY=14]="ZIP_ER_MEMORY",Z[Z.ZIP_ER_CHANGED=15]="ZIP_ER_CHANGED",Z[Z.ZIP_ER_COMPNOTSUPP=16]="ZIP_ER_COMPNOTSUPP",Z[Z.ZIP_ER_EOF=17]="ZIP_ER_EOF",Z[Z.ZIP_ER_INVAL=18]="ZIP_ER_INVAL",Z[Z.ZIP_ER_NOZIP=19]="ZIP_ER_NOZIP",Z[Z.ZIP_ER_INTERNAL=20]="ZIP_ER_INTERNAL",Z[Z.ZIP_ER_INCONS=21]="ZIP_ER_INCONS",Z[Z.ZIP_ER_REMOVE=22]="ZIP_ER_REMOVE",Z[Z.ZIP_ER_DELETED=23]="ZIP_ER_DELETED",Z[Z.ZIP_ER_ENCRNOTSUPP=24]="ZIP_ER_ENCRNOTSUPP",Z[Z.ZIP_ER_RDONLY=25]="ZIP_ER_RDONLY",Z[Z.ZIP_ER_NOPASSWD=26]="ZIP_ER_NOPASSWD",Z[Z.ZIP_ER_WRONGPASSWD=27]="ZIP_ER_WRONGPASSWD",Z[Z.ZIP_ER_OPNOTSUPP=28]="ZIP_ER_OPNOTSUPP",Z[Z.ZIP_ER_INUSE=29]="ZIP_ER_INUSE",Z[Z.ZIP_ER_TELL=30]="ZIP_ER_TELL",Z[Z.ZIP_ER_COMPRESSED_DATA=31]="ZIP_ER_COMPRESSED_DATA",Z))(zW||{}),XW=t=>({get HEAP8(){return t.HEAP8},get HEAPU8(){return t.HEAPU8},errors:zW,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_EXCL:2,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:t._malloc(1),uint16S:t._malloc(2),uint32S:t._malloc(4),uint64S:t._malloc(8),malloc:t._malloc,free:t._free,getValue:t.getValue,openFromSource:t.cwrap("zip_open_from_source","number",["number","number","number"]),close:t.cwrap("zip_close","number",["number"]),discard:t.cwrap("zip_discard",null,["number"]),getError:t.cwrap("zip_get_error","number",["number"]),getName:t.cwrap("zip_get_name","string",["number","number","number"]),getNumEntries:t.cwrap("zip_get_num_entries","number",["number","number"]),delete:t.cwrap("zip_delete","number",["number","number"]),stat:t.cwrap("zip_stat","number",["number","string","number","number"]),statIndex:t.cwrap("zip_stat_index","number",["number",...Ef,"number","number"]),fopen:t.cwrap("zip_fopen","number",["number","string","number"]),fopenIndex:t.cwrap("zip_fopen_index","number",["number",...Ef,"number"]),fread:t.cwrap("zip_fread","number",["number","number","number","number"]),fclose:t.cwrap("zip_fclose","number",["number"]),dir:{add:t.cwrap("zip_dir_add","number",["number","string"])},file:{add:t.cwrap("zip_file_add","number",["number","string","number","number"]),getError:t.cwrap("zip_file_get_error","number",["number"]),getExternalAttributes:t.cwrap("zip_file_get_external_attributes","number",["number",...Ef,"number","number","number"]),setExternalAttributes:t.cwrap("zip_file_set_external_attributes","number",["number",...Ef,"number","number","number"]),setMtime:t.cwrap("zip_file_set_mtime","number",["number",...Ef,"number","number"]),setCompression:t.cwrap("zip_set_file_compression","number",["number",...Ef,"number","number"])},ext:{countSymlinks:t.cwrap("zip_ext_count_symlinks","number",["number"])},error:{initWithCode:t.cwrap("zip_error_init_with_code",null,["number","number"]),strerror:t.cwrap("zip_error_strerror","string",["number"])},name:{locate:t.cwrap("zip_name_locate","number",["number","string","number"])},source:{fromUnattachedBuffer:t.cwrap("zip_source_buffer_create","number",["number",...Ef,"number","number"]),fromBuffer:t.cwrap("zip_source_buffer","number",["number","number",...Ef,"number"]),free:t.cwrap("zip_source_free",null,["number"]),keep:t.cwrap("zip_source_keep",null,["number"]),open:t.cwrap("zip_source_open","number",["number"]),close:t.cwrap("zip_source_close","number",["number"]),seek:t.cwrap("zip_source_seek","number",["number",...Ef,"number"]),tell:t.cwrap("zip_source_tell","number",["number"]),read:t.cwrap("zip_source_read","number",["number","number","number"]),error:t.cwrap("zip_source_error","number",["number"]),setMtime:t.cwrap("zip_source_set_mtime","number",["number","number"])},struct:{stat:t.cwrap("zipstruct_stat","number",[]),statS:t.cwrap("zipstruct_statS","number",[]),statName:t.cwrap("zipstruct_stat_name","string",["number"]),statIndex:t.cwrap("zipstruct_stat_index","number",["number"]),statSize:t.cwrap("zipstruct_stat_size","number",["number"]),statCompSize:t.cwrap("zipstruct_stat_comp_size","number",["number"]),statCompMethod:t.cwrap("zipstruct_stat_comp_method","number",["number"]),statMtime:t.cwrap("zipstruct_stat_mtime","number",["number"]),statCrc:t.cwrap("zipstruct_stat_crc","number",["number"]),error:t.cwrap("zipstruct_error","number",[]),errorS:t.cwrap("zipstruct_errorS","number",[]),errorCodeZip:t.cwrap("zipstruct_error_code_zip","number",["number"])}})});function sT(t,e){let r=t.indexOf(e);if(r<=0)return null;let o=r;for(;r>=0&&(o=r+e.length,t[o]!==J.sep);){if(t[r-1]===J.sep)return null;r=t.indexOf(e,o)}return t.length>o&&t[o]!==J.sep?null:t.slice(0,o)}var _l,$W=dt(()=>{St();St();Hc();_l=class extends Hp{static async openPromise(e,r){let o=new _l(r);try{return await e(o)}finally{o.saveAndClose()}}constructor(e={}){let r=e.fileExtensions,o=e.readOnlyArchives,a=typeof r>"u"?A=>sT(A,".zip"):A=>{for(let p of r){let h=sT(A,p);if(h)return h}return null},n=(A,p)=>new os(p,{baseFs:A,readOnly:o,stats:A.statSync(p)}),u=async(A,p)=>{let h={baseFs:A,readOnly:o,stats:await A.statPromise(p)};return()=>new os(p,h)};super({...e,factorySync:n,factoryPromise:u,getMountPoint:a})}}});function F8e(t){if(typeof t=="string"&&String(+t)===t)return+t;if(typeof t=="number"&&Number.isFinite(t))return t<0?Date.now()/1e3:t;if(eY.types.isDate(t))return t.getTime()/1e3;throw new Error("Invalid time")}function vD(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var Go,oT,eY,aT,Ay,DD,os,lT=dt(()=>{St();St();St();St();St();St();Go=Ie("fs"),oT=Ie("stream"),eY=Ie("util"),aT=tt(Ie("zlib"));rT();Ay="mixed";DD=class extends Error{constructor(r,o){super(r);this.name="Libzip Error",this.code=o}},os=class extends qu{constructor(r,o={}){super();this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;let a=o;if(this.level=typeof a.level<"u"?a.level:Ay,r??(r=vD()),typeof r=="string"){let{baseFs:A=new xn}=a;this.baseFs=A,this.path=r}else this.path=null,this.baseFs=null;if(o.stats)this.stats=o.stats;else if(typeof r=="string")try{this.stats=this.baseFs.statSync(r)}catch(A){if(A.code==="ENOENT"&&a.create)this.stats=Ul.makeDefaultStats();else throw A}else this.stats=Ul.makeDefaultStats();this.libzip=_I();let n=this.libzip.malloc(4);try{let A=0;o.readOnly&&(A|=this.libzip.ZIP_RDONLY,this.readOnly=!0),typeof r=="string"&&(r=a.create?vD():this.baseFs.readFileSync(r));let p=this.allocateUnattachedSource(r);try{this.zip=this.libzip.openFromSource(p,A,n),this.lzSource=p}catch(h){throw this.libzip.source.free(p),h}if(this.zip===0){let h=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(h,this.libzip.getValue(n,"i32")),this.makeLibzipError(h)}}finally{this.libzip.free(n)}this.listings.set(wt.root,new Set);let u=this.libzip.getNumEntries(this.zip,0);for(let A=0;A<u;++A){let p=this.libzip.getName(this.zip,A,0);if(J.isAbsolute(p))continue;let h=J.resolve(wt.root,p);this.registerEntry(h,A),p.endsWith("/")&&this.registerListing(h)}if(this.symlinkCount=this.libzip.ext.countSymlinks(this.zip),this.symlinkCount===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.ready=!0}makeLibzipError(r){let o=this.libzip.struct.errorCodeZip(r),a=this.libzip.error.strerror(r),n=new DD(a,this.libzip.errors[o]);if(o===this.libzip.errors.ZIP_ER_CHANGED)throw new Error(`Assertion failed: Unexpected libzip error: ${n.message}`);return n}getExtractHint(r){for(let o of this.entries.keys()){let a=this.pathUtils.extname(o);if(r.relevantExtensions.has(a))return!0}return!1}getAllFiles(){return Array.from(this.entries.keys())}getRealPath(){if(!this.path)throw new Error("ZipFS don't have real paths when loaded from a buffer");return this.path}prepareClose(){if(!this.ready)throw sr.EBUSY("archive closed, close");Lg(this)}getBufferAndClose(){if(this.prepareClose(),this.entries.size===0)return this.discardAndClose(),vD();try{if(this.libzip.source.keep(this.lzSource),this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.libzip.source.open(this.lzSource)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_END)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let r=this.libzip.source.tell(this.lzSource);if(r===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_SET)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let o=this.libzip.malloc(r);if(!o)throw new Error("Couldn't allocate enough memory");try{let a=this.libzip.source.read(this.lzSource,o,r);if(a===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(a<r)throw new Error("Incomplete read");if(a>r)throw new Error("Overread");let n=this.libzip.HEAPU8.subarray(o,o+r);return Buffer.from(n)}finally{this.libzip.free(o)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource),this.ready=!1}}discardAndClose(){this.prepareClose(),this.libzip.discard(this.zip),this.ready=!1}saveAndClose(){if(!this.path||!this.baseFs)throw new Error("ZipFS cannot be saved and must be discarded when loaded from a buffer");if(this.readOnly){this.discardAndClose();return}let r=this.baseFs.existsSync(this.path)||this.stats.mode===Ul.DEFAULT_MODE?void 0:this.stats.mode;this.baseFs.writeFileSync(this.path,this.getBufferAndClose(),{mode:r}),this.ready=!1}resolve(r){return J.resolve(wt.root,r)}async openPromise(r,o,a){return this.openSync(r,o,a)}openSync(r,o,a){let n=this.nextFd++;return this.fds.set(n,{cursor:0,p:r}),n}hasOpenFileHandles(){return!!this.fds.size}async opendirPromise(r,o){return this.opendirSync(r,o)}opendirSync(r,o={}){let a=this.resolveFilename(`opendir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw sr.ENOENT(`opendir '${r}'`);let n=this.listings.get(a);if(!n)throw sr.ENOTDIR(`opendir '${r}'`);let u=[...n],A=this.openSync(a,"r");return gD(this,a,u,{onClose:()=>{this.closeSync(A)}})}async readPromise(r,o,a,n,u){return this.readSync(r,o,a,n,u)}readSync(r,o,a=0,n=o.byteLength,u=-1){let A=this.fds.get(r);if(typeof A>"u")throw sr.EBADF("read");let p=u===-1||u===null?A.cursor:u,h=this.readFileSync(A.p);h.copy(o,a,p,p+n);let C=Math.max(0,Math.min(h.length-p,n));return(u===-1||u===null)&&(A.cursor+=C),C}async writePromise(r,o,a,n,u){return typeof o=="string"?this.writeSync(r,o,u):this.writeSync(r,o,a,n,u)}writeSync(r,o,a,n,u){throw typeof this.fds.get(r)>"u"?sr.EBADF("read"):new Error("Unimplemented")}async closePromise(r){return this.closeSync(r)}closeSync(r){if(typeof this.fds.get(r)>"u")throw sr.EBADF("read");this.fds.delete(r)}createReadStream(r,{encoding:o}={}){if(r===null)throw new Error("Unimplemented");let a=this.openSync(r,"r"),n=Object.assign(new oT.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(A,p)=>{clearImmediate(u),this.closeSync(a),p(A)}}),{close(){n.destroy()},bytesRead:0,path:r,pending:!1}),u=setImmediate(async()=>{try{let A=await this.readFilePromise(r,o);n.bytesRead=A.length,n.end(A)}catch(A){n.destroy(A)}});return n}createWriteStream(r,{encoding:o}={}){if(this.readOnly)throw sr.EROFS(`open '${r}'`);if(r===null)throw new Error("Unimplemented");let a=[],n=this.openSync(r,"w"),u=Object.assign(new oT.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(A,p)=>{try{A?p(A):(this.writeFileSync(r,Buffer.concat(a),o),p(null))}catch(h){p(h)}finally{this.closeSync(n)}}}),{close(){u.destroy()},bytesWritten:0,path:r,pending:!1});return u.on("data",A=>{let p=Buffer.from(A);u.bytesWritten+=p.length,a.push(p)}),u}async realpathPromise(r){return this.realpathSync(r)}realpathSync(r){let o=this.resolveFilename(`lstat '${r}'`,r);if(!this.entries.has(o)&&!this.listings.has(o))throw sr.ENOENT(`lstat '${r}'`);return o}async existsPromise(r){return this.existsSync(r)}existsSync(r){if(!this.ready)throw sr.EBUSY(`archive closed, existsSync '${r}'`);if(this.symlinkCount===0){let a=J.resolve(wt.root,r);return this.entries.has(a)||this.listings.has(a)}let o;try{o=this.resolveFilename(`stat '${r}'`,r,void 0,!1)}catch{return!1}return o===void 0?!1:this.entries.has(o)||this.listings.has(o)}async accessPromise(r,o){return this.accessSync(r,o)}accessSync(r,o=Go.constants.F_OK){let a=this.resolveFilename(`access '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw sr.ENOENT(`access '${r}'`);if(this.readOnly&&o&Go.constants.W_OK)throw sr.EROFS(`access '${r}'`)}async statPromise(r,o={bigint:!1}){return o.bigint?this.statSync(r,{bigint:!0}):this.statSync(r)}statSync(r,o={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`stat '${r}'`,r,void 0,o.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(o.throwIfNoEntry===!1)return;throw sr.ENOENT(`stat '${r}'`)}if(r[r.length-1]==="/"&&!this.listings.has(a))throw sr.ENOTDIR(`stat '${r}'`);return this.statImpl(`stat '${r}'`,a,o)}}async fstatPromise(r,o){return this.fstatSync(r,o)}fstatSync(r,o){let a=this.fds.get(r);if(typeof a>"u")throw sr.EBADF("fstatSync");let{p:n}=a,u=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(u)&&!this.listings.has(u))throw sr.ENOENT(`stat '${n}'`);if(n[n.length-1]==="/"&&!this.listings.has(u))throw sr.ENOTDIR(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,u,o)}async lstatPromise(r,o={bigint:!1}){return o.bigint?this.lstatSync(r,{bigint:!0}):this.lstatSync(r)}lstatSync(r,o={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`lstat '${r}'`,r,!1,o.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(o.throwIfNoEntry===!1)return;throw sr.ENOENT(`lstat '${r}'`)}if(r[r.length-1]==="/"&&!this.listings.has(a))throw sr.ENOTDIR(`lstat '${r}'`);return this.statImpl(`lstat '${r}'`,a,o)}}statImpl(r,o,a={}){let n=this.entries.get(o);if(typeof n<"u"){let u=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,n,0,0,u)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let p=this.stats.uid,h=this.stats.gid,C=this.libzip.struct.statSize(u)>>>0,w=512,v=Math.ceil(C/w),b=(this.libzip.struct.statMtime(u)>>>0)*1e3,E=b,R=b,L=b,_=new Date(E),V=new Date(R),re=new Date(L),ae=new Date(b),he=this.listings.has(o)?Go.constants.S_IFDIR:this.isSymbolicLink(n)?Go.constants.S_IFLNK:Go.constants.S_IFREG,pe=he===Go.constants.S_IFDIR?493:420,De=he|this.getUnixMode(n,pe)&511,ge=this.libzip.struct.statCrc(u),le=Object.assign(new Ul.StatEntry,{uid:p,gid:h,size:C,blksize:w,blocks:v,atime:_,birthtime:V,ctime:re,mtime:ae,atimeMs:E,birthtimeMs:R,ctimeMs:L,mtimeMs:b,mode:De,crc:ge});return a.bigint===!0?Ul.convertToBigIntStats(le):le}if(this.listings.has(o)){let u=this.stats.uid,A=this.stats.gid,p=0,h=512,C=0,w=this.stats.mtimeMs,v=this.stats.mtimeMs,b=this.stats.mtimeMs,E=this.stats.mtimeMs,R=new Date(w),L=new Date(v),_=new Date(b),V=new Date(E),re=Go.constants.S_IFDIR|493,ae=0,he=Object.assign(new Ul.StatEntry,{uid:u,gid:A,size:p,blksize:h,blocks:C,atime:R,birthtime:L,ctime:_,mtime:V,atimeMs:w,birthtimeMs:v,ctimeMs:b,mtimeMs:E,mode:re,crc:ae});return a.bigint===!0?Ul.convertToBigIntStats(he):he}throw new Error("Unreachable")}getUnixMode(r,o){if(this.libzip.file.getExternalAttributes(this.zip,r,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?o:this.libzip.getValue(this.libzip.uint32S,"i32")>>>16}registerListing(r){let o=this.listings.get(r);if(o)return o;this.registerListing(J.dirname(r)).add(J.basename(r));let n=new Set;return this.listings.set(r,n),n}registerEntry(r,o){this.registerListing(J.dirname(r)).add(J.basename(r)),this.entries.set(r,o)}unregisterListing(r){this.listings.delete(r);let o=this.listings.get(J.dirname(r));o==null||o.delete(J.basename(r))}unregisterEntry(r){this.unregisterListing(r);let o=this.entries.get(r);this.entries.delete(r),!(typeof o>"u")&&(this.fileSources.delete(o),this.isSymbolicLink(o)&&this.symlinkCount--)}deleteEntry(r,o){if(this.unregisterEntry(r),this.libzip.delete(this.zip,o)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}resolveFilename(r,o,a=!0,n=!0){if(!this.ready)throw sr.EBUSY(`archive closed, ${r}`);let u=J.resolve(wt.root,o);if(u==="/")return wt.root;let A=this.entries.get(u);if(a&&A!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(A)){let p=this.getFileSource(A).toString();return this.resolveFilename(r,J.resolve(J.dirname(u),p),!0,n)}else return u;for(;;){let p=this.resolveFilename(r,J.dirname(u),!0,n);if(p===void 0)return p;let h=this.listings.has(p),C=this.entries.has(p);if(!h&&!C){if(n===!1)return;throw sr.ENOENT(r)}if(!h)throw sr.ENOTDIR(r);if(u=J.resolve(p,J.basename(u)),!a||this.symlinkCount===0)break;let w=this.libzip.name.locate(this.zip,u.slice(1),0);if(w===-1)break;if(this.isSymbolicLink(w)){let v=this.getFileSource(w).toString();u=J.resolve(J.dirname(u),v)}else break}return u}allocateBuffer(r){Buffer.isBuffer(r)||(r=Buffer.from(r));let o=this.libzip.malloc(r.byteLength);if(!o)throw new Error("Couldn't allocate enough memory");return new Uint8Array(this.libzip.HEAPU8.buffer,o,r.byteLength).set(r),{buffer:o,byteLength:r.byteLength}}allocateUnattachedSource(r){let o=this.libzip.struct.errorS(),{buffer:a,byteLength:n}=this.allocateBuffer(r),u=this.libzip.source.fromUnattachedBuffer(a,n,0,1,o);if(u===0)throw this.libzip.free(o),this.makeLibzipError(o);return u}allocateSource(r){let{buffer:o,byteLength:a}=this.allocateBuffer(r),n=this.libzip.source.fromBuffer(this.zip,o,a,0,1);if(n===0)throw this.libzip.free(o),this.makeLibzipError(this.libzip.getError(this.zip));return n}setFileSource(r,o){let a=Buffer.isBuffer(o)?o:Buffer.from(o),n=J.relative(wt.root,r),u=this.allocateSource(o);try{let A=this.libzip.file.add(this.zip,n,u,this.libzip.ZIP_FL_OVERWRITE);if(A===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.level!=="mixed"){let p=this.level===0?this.libzip.ZIP_CM_STORE:this.libzip.ZIP_CM_DEFLATE;if(this.libzip.file.setCompression(this.zip,A,0,p,this.level)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}return this.fileSources.set(A,a),A}catch(A){throw this.libzip.source.free(u),A}}isSymbolicLink(r){if(this.symlinkCount===0)return!1;if(this.libzip.file.getExternalAttributes(this.zip,r,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?!1:(this.libzip.getValue(this.libzip.uint32S,"i32")>>>16&Go.constants.S_IFMT)===Go.constants.S_IFLNK}getFileSource(r,o={asyncDecompress:!1}){let a=this.fileSources.get(r);if(typeof a<"u")return a;let n=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,r,0,0,n)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let A=this.libzip.struct.statCompSize(n),p=this.libzip.struct.statCompMethod(n),h=this.libzip.malloc(A);try{let C=this.libzip.fopenIndex(this.zip,r,0,this.libzip.ZIP_FL_COMPRESSED);if(C===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let w=this.libzip.fread(C,h,A,0);if(w===-1)throw this.makeLibzipError(this.libzip.file.getError(C));if(w<A)throw new Error("Incomplete read");if(w>A)throw new Error("Overread");let v=this.libzip.HEAPU8.subarray(h,h+A),b=Buffer.from(v);if(p===0)return this.fileSources.set(r,b),b;if(o.asyncDecompress)return new Promise((E,R)=>{aT.default.inflateRaw(b,(L,_)=>{L?R(L):(this.fileSources.set(r,_),E(_))})});{let E=aT.default.inflateRawSync(b);return this.fileSources.set(r,E),E}}finally{this.libzip.fclose(C)}}finally{this.libzip.free(h)}}async fchmodPromise(r,o){return this.chmodPromise(this.fdToPath(r,"fchmod"),o)}fchmodSync(r,o){return this.chmodSync(this.fdToPath(r,"fchmodSync"),o)}async chmodPromise(r,o){return this.chmodSync(r,o)}chmodSync(r,o){if(this.readOnly)throw sr.EROFS(`chmod '${r}'`);o&=493;let a=this.resolveFilename(`chmod '${r}'`,r,!1),n=this.entries.get(a);if(typeof n>"u")throw new Error(`Assertion failed: The entry should have been registered (${a})`);let A=this.getUnixMode(n,Go.constants.S_IFREG|0)&-512|o;if(this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,A<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async fchownPromise(r,o,a){return this.chownPromise(this.fdToPath(r,"fchown"),o,a)}fchownSync(r,o,a){return this.chownSync(this.fdToPath(r,"fchownSync"),o,a)}async chownPromise(r,o,a){return this.chownSync(r,o,a)}chownSync(r,o,a){throw new Error("Unimplemented")}async renamePromise(r,o){return this.renameSync(r,o)}renameSync(r,o){throw new Error("Unimplemented")}async copyFilePromise(r,o,a){let{indexSource:n,indexDest:u,resolvedDestP:A}=this.prepareCopyFile(r,o,a),p=await this.getFileSource(n,{asyncDecompress:!0}),h=this.setFileSource(A,p);h!==u&&this.registerEntry(A,h)}copyFileSync(r,o,a=0){let{indexSource:n,indexDest:u,resolvedDestP:A}=this.prepareCopyFile(r,o,a),p=this.getFileSource(n),h=this.setFileSource(A,p);h!==u&&this.registerEntry(A,h)}prepareCopyFile(r,o,a=0){if(this.readOnly)throw sr.EROFS(`copyfile '${r} -> '${o}'`);if((a&Go.constants.COPYFILE_FICLONE_FORCE)!==0)throw sr.ENOSYS("unsupported clone operation",`copyfile '${r}' -> ${o}'`);let n=this.resolveFilename(`copyfile '${r} -> ${o}'`,r),u=this.entries.get(n);if(typeof u>"u")throw sr.EINVAL(`copyfile '${r}' -> '${o}'`);let A=this.resolveFilename(`copyfile '${r}' -> ${o}'`,o),p=this.entries.get(A);if((a&(Go.constants.COPYFILE_EXCL|Go.constants.COPYFILE_FICLONE_FORCE))!==0&&typeof p<"u")throw sr.EEXIST(`copyfile '${r}' -> '${o}'`);return{indexSource:u,resolvedDestP:A,indexDest:p}}async appendFilePromise(r,o,a){if(this.readOnly)throw sr.EROFS(`open '${r}'`);return typeof a>"u"?a={flag:"a"}:typeof a=="string"?a={flag:"a",encoding:a}:typeof a.flag>"u"&&(a={flag:"a",...a}),this.writeFilePromise(r,o,a)}appendFileSync(r,o,a={}){if(this.readOnly)throw sr.EROFS(`open '${r}'`);return typeof a>"u"?a={flag:"a"}:typeof a=="string"?a={flag:"a",encoding:a}:typeof a.flag>"u"&&(a={flag:"a",...a}),this.writeFileSync(r,o,a)}fdToPath(r,o){var n;let a=(n=this.fds.get(r))==null?void 0:n.p;if(typeof a>"u")throw sr.EBADF(o);return a}async writeFilePromise(r,o,a){let{encoding:n,mode:u,index:A,resolvedP:p}=this.prepareWriteFile(r,a);A!==void 0&&typeof a=="object"&&a.flag&&a.flag.includes("a")&&(o=Buffer.concat([await this.getFileSource(A,{asyncDecompress:!0}),Buffer.from(o)])),n!==null&&(o=o.toString(n));let h=this.setFileSource(p,o);h!==A&&this.registerEntry(p,h),u!==null&&await this.chmodPromise(p,u)}writeFileSync(r,o,a){let{encoding:n,mode:u,index:A,resolvedP:p}=this.prepareWriteFile(r,a);A!==void 0&&typeof a=="object"&&a.flag&&a.flag.includes("a")&&(o=Buffer.concat([this.getFileSource(A),Buffer.from(o)])),n!==null&&(o=o.toString(n));let h=this.setFileSource(p,o);h!==A&&this.registerEntry(p,h),u!==null&&this.chmodSync(p,u)}prepareWriteFile(r,o){if(typeof r=="number"&&(r=this.fdToPath(r,"read")),this.readOnly)throw sr.EROFS(`open '${r}'`);let a=this.resolveFilename(`open '${r}'`,r);if(this.listings.has(a))throw sr.EISDIR(`open '${r}'`);let n=null,u=null;typeof o=="string"?n=o:typeof o=="object"&&({encoding:n=null,mode:u=null}=o);let A=this.entries.get(a);return{encoding:n,mode:u,resolvedP:a,index:A}}async unlinkPromise(r){return this.unlinkSync(r)}unlinkSync(r){if(this.readOnly)throw sr.EROFS(`unlink '${r}'`);let o=this.resolveFilename(`unlink '${r}'`,r);if(this.listings.has(o))throw sr.EISDIR(`unlink '${r}'`);let a=this.entries.get(o);if(typeof a>"u")throw sr.EINVAL(`unlink '${r}'`);this.deleteEntry(o,a)}async utimesPromise(r,o,a){return this.utimesSync(r,o,a)}utimesSync(r,o,a){if(this.readOnly)throw sr.EROFS(`utimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r);this.utimesImpl(n,a)}async lutimesPromise(r,o,a){return this.lutimesSync(r,o,a)}lutimesSync(r,o,a){if(this.readOnly)throw sr.EROFS(`lutimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r,!1);this.utimesImpl(n,a)}utimesImpl(r,o){this.listings.has(r)&&(this.entries.has(r)||this.hydrateDirectory(r));let a=this.entries.get(r);if(a===void 0)throw new Error("Unreachable");if(this.libzip.file.setMtime(this.zip,a,0,F8e(o),0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}async mkdirPromise(r,o){return this.mkdirSync(r,o)}mkdirSync(r,{mode:o=493,recursive:a=!1}={}){if(a)return this.mkdirpSync(r,{chmod:o});if(this.readOnly)throw sr.EROFS(`mkdir '${r}'`);let n=this.resolveFilename(`mkdir '${r}'`,r);if(this.entries.has(n)||this.listings.has(n))throw sr.EEXIST(`mkdir '${r}'`);this.hydrateDirectory(n),this.chmodSync(n,o)}async rmdirPromise(r,o){return this.rmdirSync(r,o)}rmdirSync(r,{recursive:o=!1}={}){if(this.readOnly)throw sr.EROFS(`rmdir '${r}'`);if(o){this.removeSync(r);return}let a=this.resolveFilename(`rmdir '${r}'`,r),n=this.listings.get(a);if(!n)throw sr.ENOTDIR(`rmdir '${r}'`);if(n.size>0)throw sr.ENOTEMPTY(`rmdir '${r}'`);let u=this.entries.get(a);if(typeof u>"u")throw sr.EINVAL(`rmdir '${r}'`);this.deleteEntry(r,u)}hydrateDirectory(r){let o=this.libzip.dir.add(this.zip,J.relative(wt.root,r));if(o===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.registerListing(r),this.registerEntry(r,o),o}async linkPromise(r,o){return this.linkSync(r,o)}linkSync(r,o){throw sr.EOPNOTSUPP(`link '${r}' -> '${o}'`)}async symlinkPromise(r,o){return this.symlinkSync(r,o)}symlinkSync(r,o){if(this.readOnly)throw sr.EROFS(`symlink '${r}' -> '${o}'`);let a=this.resolveFilename(`symlink '${r}' -> '${o}'`,o);if(this.listings.has(a))throw sr.EISDIR(`symlink '${r}' -> '${o}'`);if(this.entries.has(a))throw sr.EEXIST(`symlink '${r}' -> '${o}'`);let n=this.setFileSource(a,r);if(this.registerEntry(a,n),this.libzip.file.setExternalAttributes(this.zip,n,0,0,this.libzip.ZIP_OPSYS_UNIX,(Go.constants.S_IFLNK|511)<<16)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));this.symlinkCount+=1}async readFilePromise(r,o){typeof o=="object"&&(o=o?o.encoding:void 0);let a=await this.readFileBuffer(r,{asyncDecompress:!0});return o?a.toString(o):a}readFileSync(r,o){typeof o=="object"&&(o=o?o.encoding:void 0);let a=this.readFileBuffer(r);return o?a.toString(o):a}readFileBuffer(r,o={asyncDecompress:!1}){typeof r=="number"&&(r=this.fdToPath(r,"read"));let a=this.resolveFilename(`open '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw sr.ENOENT(`open '${r}'`);if(r[r.length-1]==="/"&&!this.listings.has(a))throw sr.ENOTDIR(`open '${r}'`);if(this.listings.has(a))throw sr.EISDIR("read");let n=this.entries.get(a);if(n===void 0)throw new Error("Unreachable");return this.getFileSource(n,o)}async readdirPromise(r,o){return this.readdirSync(r,o)}readdirSync(r,o){let a=this.resolveFilename(`scandir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw sr.ENOENT(`scandir '${r}'`);let n=this.listings.get(a);if(!n)throw sr.ENOTDIR(`scandir '${r}'`);let u=[...n];return o!=null&&o.withFileTypes?u.map(A=>Object.assign(this.statImpl("lstat",J.join(r,A)),{name:A})):u}async readlinkPromise(r){let o=this.prepareReadlink(r);return(await this.getFileSource(o,{asyncDecompress:!0})).toString()}readlinkSync(r){let o=this.prepareReadlink(r);return this.getFileSource(o).toString()}prepareReadlink(r){let o=this.resolveFilename(`readlink '${r}'`,r,!1);if(!this.entries.has(o)&&!this.listings.has(o))throw sr.ENOENT(`readlink '${r}'`);if(r[r.length-1]==="/"&&!this.listings.has(o))throw sr.ENOTDIR(`open '${r}'`);if(this.listings.has(o))throw sr.EINVAL(`readlink '${r}'`);let a=this.entries.get(o);if(a===void 0)throw new Error("Unreachable");if(!this.isSymbolicLink(a))throw sr.EINVAL(`readlink '${r}'`);return a}async truncatePromise(r,o=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>"u")throw sr.EINVAL(`open '${r}'`);let u=await this.getFileSource(n,{asyncDecompress:!0}),A=Buffer.alloc(o,0);return u.copy(A),await this.writeFilePromise(r,A)}truncateSync(r,o=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>"u")throw sr.EINVAL(`open '${r}'`);let u=this.getFileSource(n),A=Buffer.alloc(o,0);return u.copy(A),this.writeFileSync(r,A)}async ftruncatePromise(r,o){return this.truncatePromise(this.fdToPath(r,"ftruncate"),o)}ftruncateSync(r,o){return this.truncateSync(this.fdToPath(r,"ftruncateSync"),o)}watch(r,o,a){let n;switch(typeof o){case"function":case"string":case"undefined":n=!0;break;default:({persistent:n=!0}=o);break}if(!n)return{on:()=>{},close:()=>{}};let u=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(u)}}}watchFile(r,o,a){let n=J.resolve(wt.root,r);return sy(this,n,o,a)}unwatchFile(r,o){let a=J.resolve(wt.root,r);return Ng(this,a,o)}}});function rY(t,e,r=Buffer.alloc(0),o){let a=new os(r),n=w=>w===e||w.startsWith(`${e}/`)?w.slice(0,e.length):null,u=async(w,v)=>()=>a,A=(w,v)=>a,p={...t},h=new xn(p),C=new Hp({baseFs:h,getMountPoint:n,factoryPromise:u,factorySync:A,magicByte:21,maxAge:1/0,typeCheck:o==null?void 0:o.typeCheck});return MI(tY.default,new qp(C)),a}var tY,nY=dt(()=>{St();tY=tt(Ie("fs"));lT()});var iY=dt(()=>{$W();lT();nY()});var HI={};Yt(HI,{DEFAULT_COMPRESSION_LEVEL:()=>Ay,LibzipError:()=>DD,ZipFS:()=>os,ZipOpenFS:()=>_l,getArchivePart:()=>sT,getLibzipPromise:()=>T8e,getLibzipSync:()=>R8e,makeEmptyArchive:()=>vD,mountMemoryDrive:()=>rY});function R8e(){return _I()}async function T8e(){return _I()}var sY,Hc=dt(()=>{rT();sY=tt(JW());ZW();iY();VW(()=>{let t=(0,sY.default)();return XW(t)})});var aY=U((hxt,oY)=>{"use strict";function N8e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Hg(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Hg)}N8e(Hg,Error);Hg.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var C="",w;for(w=0;w<h.parts.length;w++)C+=h.parts[w]instanceof Array?n(h.parts[w][0])+"-"+n(h.parts[w][1]):n(h.parts[w]);return"["+(h.inverted?"^":"")+C+"]"},any:function(h){return"any character"},end:function(h){return"end of input"},other:function(h){return h.description}};function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(C){return"\\x0"+o(C)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(C){return"\\x"+o(C)})}function n(h){return h.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(C){return"\\x0"+o(C)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(C){return"\\x"+o(C)})}function u(h){return r[h.type](h)}function A(h){var C=new Array(h.length),w,v;for(w=0;w<h.length;w++)C[w]=u(h[w]);if(C.sort(),C.length>0){for(w=1,v=1;w<C.length;w++)C[w-1]!==C[w]&&(C[v]=C[w],v++);C.length=v}switch(C.length){case 1:return C[0];case 2:return C[0]+" or "+C[1];default:return C.slice(0,-1).join(", ")+", or "+C[C.length-1]}}function p(h){return h?'"'+a(h)+'"':"end of input"}return"Expected "+A(t)+" but "+p(e)+" found."};function L8e(t,e){e=e!==void 0?e:{};var r={},o={Start:Ag},a=Ag,n=function(N){return N||[]},u=function(N,K,te){return[{command:N,type:K}].concat(te||[])},A=function(N,K){return[{command:N,type:K||";"}]},p=function(N){return N},h=";",C=yr(";",!1),w="&",v=yr("&",!1),b=function(N,K){return K?{chain:N,then:K}:{chain:N}},E=function(N,K){return{type:N,line:K}},R="&&",L=yr("&&",!1),_="||",V=yr("||",!1),re=function(N,K){return K?{...N,then:K}:N},ae=function(N,K){return{type:N,chain:K}},he="|&",pe=yr("|&",!1),De="|",ge=yr("|",!1),le="=",Pe=yr("=",!1),g=function(N,K){return{name:N,args:[K]}},ve=function(N){return{name:N,args:[]}},Ee="(",de=yr("(",!1),ne=")",Z=yr(")",!1),me=function(N,K){return{type:"subshell",subshell:N,args:K}},be="{",ut=yr("{",!1),H="}",yt=yr("}",!1),Me=function(N,K){return{type:"group",group:N,args:K}},Te=function(N,K){return{type:"command",args:K,envs:N}},Qe=function(N){return{type:"envs",envs:N}},_e=function(N){return N},qe=function(N){return N},At=/^[0-9]/,Oe=ys([["0","9"]],!1,!1),x=function(N,K,te){return{type:"redirection",subtype:K,fd:N!==null?parseInt(N):null,args:[te]}},I=">>",P=yr(">>",!1),y=">&",F=yr(">&",!1),z=">",X=yr(">",!1),$="<<<",ie=yr("<<<",!1),ke="<&",Ne=yr("<&",!1),st="<",ht=yr("<",!1),Ut=function(N){return{type:"argument",segments:[].concat(...N)}},Xt=function(N){return N},xt="$'",tn=yr("$'",!1),Dr="'",fr=yr("'",!1),Br=function(N){return[{type:"text",text:N}]},jr='""',Hn=yr('""',!1),bs=function(){return{type:"text",text:""}},ki='"',gs=yr('"',!1),to=function(N){return N},Di=function(N){return{type:"arithmetic",arithmetic:N,quoted:!0}},Qs=function(N){return{type:"shell",shell:N,quoted:!0}},ro=function(N){return{type:"variable",...N,quoted:!0}},hc=function(N){return{type:"text",text:N}},gu=function(N){return{type:"arithmetic",arithmetic:N,quoted:!1}},cp=function(N){return{type:"shell",shell:N,quoted:!1}},up=function(N){return{type:"variable",...N,quoted:!1}},ks=function(N){return{type:"glob",pattern:N}},Cn=/^[^']/,no=ys(["'"],!0,!1),Fs=function(N){return N.join("")},Cl=/^[^$"]/,Il=ys(["$",'"'],!0,!1),io=`\\ |
10 | `,_e=yr(`\\ | 10 | `,Ue=yr(`\\ |
11 | `,!1),Fn=function(){return""},Fi="\\",Rn=yr("\\",!1),Ui=/^[\\$"`]/,Zt=ys(["\\","$",'"',"`"],!1,!1),Ri=function(N){return N},Zn="\\a",La=yr("\\a",!1),$t=function(){return"a"},Ac="\\b",gu=yr("\\b",!1),fc=function(){return"\b"},yl=/^[Ee]/,DA=ys(["E","e"],!1,!1),du=function(){return"\x1B"},Ce="\\f",Rt=yr("\\f",!1),pc=function(){return"\f"},_i="\\n",mu=yr("\\n",!1),qt=function(){return` | 11 | `,!1),Fn=function(){return""},Fi="\\",Rn=yr("\\",!1),Ui=/^[\\$"`]/,Zt=ys(["\\","$",'"',"`"],!1,!1),Ri=function(N){return N},$n="\\a",Ua=yr("\\a",!1),$t=function(){return"a"},gc="\\b",du=yr("\\b",!1),dc=function(){return"\b"},wl=/^[Ee]/,xA=ys(["E","e"],!1,!1),mu=function(){return"\x1B"},Ce="\\f",Rt=yr("\\f",!1),mc=function(){return"\f"},_i="\\n",yu=yr("\\n",!1),qt=function(){return` |
12 | `},El="\\r",SA=yr("\\r",!1),lp=function(){return"\r"},hc="\\t",PA=yr("\\t",!1),Dn=function(){return" "},ui="\\v",gc=yr("\\v",!1),xA=function(){return"\v"},ta=/^[\\'"?]/,Hi=ys(["\\","'",'"',"?"],!1,!1),Lo=function(N){return String.fromCharCode(parseInt(N,16))},$e="\\x",so=yr("\\x",!1),Cl="\\u",yu=yr("\\u",!1),qi="\\U",Eu=yr("\\U",!1),bA=function(N){return String.fromCodePoint(parseInt(N,16))},Oa=/^[0-7]/,dc=ys([["0","7"]],!1,!1),ds=/^[0-9a-fA-f]/,Ot=ys([["0","9"],["a","f"],["A","f"]],!1,!1),Sn=ng(),di="{}",ra=yr("{}",!1),oo=function(){return"{}"},Rs="-",na=yr("-",!1),ia="+",Oo=yr("+",!1),Zi=".",Ts=yr(".",!1),Ns=function(N,K,te){return{type:"number",value:(N==="-"?-1:1)*parseFloat(K.join("")+"."+te.join(""))}},Ls=function(N,K){return{type:"number",value:(N==="-"?-1:1)*parseInt(K.join(""))}},ao=function(N){return{type:"variable",...N}},Wn=function(N){return{type:"variable",name:N}},qn=function(N){return N},$i="*",es=yr("*",!1),mi="/",Ma=yr("/",!1),sa=function(N,K,te){return{type:K==="*"?"multiplication":"division",right:te}},ee=function(N,K){return K.reduce((te,ue)=>({left:te,...ue}),N)},we=function(N,K,te){return{type:K==="+"?"addition":"subtraction",right:te}},qe="$((",Be=yr("$((",!1),xe="))",Je=yr("))",!1),vt=function(N){return N},tr="$(",Zr=yr("$(",!1),Tn=function(N){return N},_r="${",$n=yr("${",!1),Ti=":-",Yn=yr(":-",!1),Ua=function(N,K){return{name:N,defaultValue:K}},oa=":-}",yi=yr(":-}",!1),aa=function(N){return{name:N,defaultValue:[]}},Ha=":+",lo=yr(":+",!1),QA=function(N,K){return{name:N,alternativeValue:K}},mc=":+}",la=yr(":+}",!1),$h=function(N){return{name:N,alternativeValue:[]}},yc=function(N){return{name:N}},vm="$",eg=yr("$",!1),Kn=function(N){return e.isGlobPattern(N)},cp=function(N){return N},tg=/^[a-zA-Z0-9_]/,kA=ys([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),Os=function(){return rg()},Cu=/^[$@*?#a-zA-Z0-9_\-]/,qa=ys(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),ji=/^[()}<>$|&; \t"']/,ca=ys(["(",")","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),Iu=/^[<>&; \t"']/,ms=ys(["<",">","&",";"," "," ",'"',"'"],!1,!1),Ec=/^[ \t]/,Cc=ys([" "," "],!1,!1),G=0,Dt=0,Il=[{line:1,column:1}],Si=0,Ic=[],lt=0,wu;if("startRule"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=o[e.startRule]}function rg(){return t.substring(Dt,G)}function sI(){return wc(Dt,G)}function FA(N,K){throw K=K!==void 0?K:wc(Dt,G),og([sg(N)],t.substring(Dt,G),K)}function up(N,K){throw K=K!==void 0?K:wc(Dt,G),Dm(N,K)}function yr(N,K){return{type:"literal",text:N,ignoreCase:K}}function ys(N,K,te){return{type:"class",parts:N,inverted:K,ignoreCase:te}}function ng(){return{type:"any"}}function ig(){return{type:"end"}}function sg(N){return{type:"other",description:N}}function Ap(N){var K=Il[N],te;if(K)return K;for(te=N-1;!Il[te];)te--;for(K=Il[te],K={line:K.line,column:K.column};te<N;)t.charCodeAt(te)===10?(K.line++,K.column=1):K.column++,te++;return Il[N]=K,K}function wc(N,K){var te=Ap(N),ue=Ap(K);return{start:{offset:N,line:te.line,column:te.column},end:{offset:K,line:ue.line,column:ue.column}}}function mt(N){G<Si||(G>Si&&(Si=G,Ic=[]),Ic.push(N))}function Dm(N,K){return new Og(N,null,null,K)}function og(N,K,te){return new Og(Og.buildMessage(N,K),N,K,te)}function ag(){var N,K,te;for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();return K!==r?(te=Bu(),te===r&&(te=null),te!==r?(Dt=N,K=n(te),N=K):(G=N,N=r)):(G=N,N=r),N}function Bu(){var N,K,te,ue,ze;if(N=G,K=vu(),K!==r){for(te=[],ue=kt();ue!==r;)te.push(ue),ue=kt();te!==r?(ue=lg(),ue!==r?(ze=Sm(),ze===r&&(ze=null),ze!==r?(Dt=N,K=u(K,ue,ze),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;if(N===r)if(N=G,K=vu(),K!==r){for(te=[],ue=kt();ue!==r;)te.push(ue),ue=kt();te!==r?(ue=lg(),ue===r&&(ue=null),ue!==r?(Dt=N,K=A(K,ue),N=K):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;return N}function Sm(){var N,K,te,ue,ze;for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();if(K!==r)if(te=Bu(),te!==r){for(ue=[],ze=kt();ze!==r;)ue.push(ze),ze=kt();ue!==r?(Dt=N,K=p(te),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r;return N}function lg(){var N;return t.charCodeAt(G)===59?(N=h,G++):(N=r,lt===0&&mt(C)),N===r&&(t.charCodeAt(G)===38?(N=w,G++):(N=r,lt===0&&mt(v))),N}function vu(){var N,K,te;return N=G,K=ua(),K!==r?(te=oI(),te===r&&(te=null),te!==r?(Dt=N,K=b(K,te),N=K):(G=N,N=r)):(G=N,N=r),N}function oI(){var N,K,te,ue,ze,gt,ur;for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();if(K!==r)if(te=Pm(),te!==r){for(ue=[],ze=kt();ze!==r;)ue.push(ze),ze=kt();if(ue!==r)if(ze=vu(),ze!==r){for(gt=[],ur=kt();ur!==r;)gt.push(ur),ur=kt();gt!==r?(Dt=N,K=E(te,ze),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;return N}function Pm(){var N;return t.substr(G,2)===R?(N=R,G+=2):(N=r,lt===0&&mt(L)),N===r&&(t.substr(G,2)===_?(N=_,G+=2):(N=r,lt===0&&mt(J))),N}function ua(){var N,K,te;return N=G,K=cg(),K!==r?(te=Bc(),te===r&&(te=null),te!==r?(Dt=N,K=re(K,te),N=K):(G=N,N=r)):(G=N,N=r),N}function Bc(){var N,K,te,ue,ze,gt,ur;for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();if(K!==r)if(te=wl(),te!==r){for(ue=[],ze=kt();ze!==r;)ue.push(ze),ze=kt();if(ue!==r)if(ze=ua(),ze!==r){for(gt=[],ur=kt();ur!==r;)gt.push(ur),ur=kt();gt!==r?(Dt=N,K=oe(te,ze),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;return N}function wl(){var N;return t.substr(G,2)===pe?(N=pe,G+=2):(N=r,lt===0&&mt(he)),N===r&&(t.charCodeAt(G)===124?(N=ve,G++):(N=r,lt===0&&mt(ge))),N}function Du(){var N,K,te,ue,ze,gt;if(N=G,K=pg(),K!==r)if(t.charCodeAt(G)===61?(te=le,G++):(te=r,lt===0&&mt(Pe)),te!==r)if(ue=Mo(),ue!==r){for(ze=[],gt=kt();gt!==r;)ze.push(gt),gt=kt();ze!==r?(Dt=N,K=g(K,ue),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r;else G=N,N=r;if(N===r)if(N=G,K=pg(),K!==r)if(t.charCodeAt(G)===61?(te=le,G++):(te=r,lt===0&&mt(Pe)),te!==r){for(ue=[],ze=kt();ze!==r;)ue.push(ze),ze=kt();ue!==r?(Dt=N,K=De(K),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r;return N}function cg(){var N,K,te,ue,ze,gt,ur,gr,hn,ti,Ni;for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();if(K!==r)if(t.charCodeAt(G)===40?(te=Ee,G++):(te=r,lt===0&&mt(de)),te!==r){for(ue=[],ze=kt();ze!==r;)ue.push(ze),ze=kt();if(ue!==r)if(ze=Bu(),ze!==r){for(gt=[],ur=kt();ur!==r;)gt.push(ur),ur=kt();if(gt!==r)if(t.charCodeAt(G)===41?(ur=ne,G++):(ur=r,lt===0&&mt(Z)),ur!==r){for(gr=[],hn=kt();hn!==r;)gr.push(hn),hn=kt();if(gr!==r){for(hn=[],ti=ja();ti!==r;)hn.push(ti),ti=ja();if(hn!==r){for(ti=[],Ni=kt();Ni!==r;)ti.push(Ni),Ni=kt();ti!==r?(Dt=N,K=me(ze,hn),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;if(N===r){for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();if(K!==r)if(t.charCodeAt(G)===123?(te=be,G++):(te=r,lt===0&&mt(ut)),te!==r){for(ue=[],ze=kt();ze!==r;)ue.push(ze),ze=kt();if(ue!==r)if(ze=Bu(),ze!==r){for(gt=[],ur=kt();ur!==r;)gt.push(ur),ur=kt();if(gt!==r)if(t.charCodeAt(G)===125?(ur=H,G++):(ur=r,lt===0&&mt(yt)),ur!==r){for(gr=[],hn=kt();hn!==r;)gr.push(hn),hn=kt();if(gr!==r){for(hn=[],ti=ja();ti!==r;)hn.push(ti),ti=ja();if(hn!==r){for(ti=[],Ni=kt();Ni!==r;)ti.push(Ni),Ni=kt();ti!==r?(Dt=N,K=Me(ze,hn),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;if(N===r){for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();if(K!==r){for(te=[],ue=Du();ue!==r;)te.push(ue),ue=Du();if(te!==r){for(ue=[],ze=kt();ze!==r;)ue.push(ze),ze=kt();if(ue!==r){if(ze=[],gt=fp(),gt!==r)for(;gt!==r;)ze.push(gt),gt=fp();else ze=r;if(ze!==r){for(gt=[],ur=kt();ur!==r;)gt.push(ur),ur=kt();gt!==r?(Dt=N,K=Te(te,ze),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r}else G=N,N=r}else G=N,N=r;if(N===r){for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();if(K!==r){if(te=[],ue=Du(),ue!==r)for(;ue!==r;)te.push(ue),ue=Du();else te=r;if(te!==r){for(ue=[],ze=kt();ze!==r;)ue.push(ze),ze=kt();ue!==r?(Dt=N,K=Qe(te),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r}}}return N}function RA(){var N,K,te,ue,ze;for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();if(K!==r){if(te=[],ue=pp(),ue!==r)for(;ue!==r;)te.push(ue),ue=pp();else te=r;if(te!==r){for(ue=[],ze=kt();ze!==r;)ue.push(ze),ze=kt();ue!==r?(Dt=N,K=Ue(te),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r;return N}function fp(){var N,K,te;for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();if(K!==r?(te=ja(),te!==r?(Dt=N,K=je(te),N=K):(G=N,N=r)):(G=N,N=r),N===r){for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();K!==r?(te=pp(),te!==r?(Dt=N,K=je(te),N=K):(G=N,N=r)):(G=N,N=r)}return N}function ja(){var N,K,te,ue,ze;for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();return K!==r?(At.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(Le)),te===r&&(te=null),te!==r?(ue=ug(),ue!==r?(ze=pp(),ze!==r?(Dt=N,K=x(te,ue,ze),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function ug(){var N;return t.substr(G,2)===I?(N=I,G+=2):(N=r,lt===0&&mt(P)),N===r&&(t.substr(G,2)===y?(N=y,G+=2):(N=r,lt===0&&mt(F)),N===r&&(t.charCodeAt(G)===62?(N=z,G++):(N=r,lt===0&&mt(X)),N===r&&(t.substr(G,3)===$?(N=$,G+=3):(N=r,lt===0&&mt(ie)),N===r&&(t.substr(G,2)===ke?(N=ke,G+=2):(N=r,lt===0&&mt(Ne)),N===r&&(t.charCodeAt(G)===60?(N=st,G++):(N=r,lt===0&&mt(ht))))))),N}function pp(){var N,K,te;for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();return K!==r?(te=Mo(),te!==r?(Dt=N,K=je(te),N=K):(G=N,N=r)):(G=N,N=r),N}function Mo(){var N,K,te;if(N=G,K=[],te=Es(),te!==r)for(;te!==r;)K.push(te),te=Es();else K=r;return K!==r&&(Dt=N,K=Ut(K)),N=K,N}function Es(){var N,K;return N=G,K=Ei(),K!==r&&(Dt=N,K=Xt(K)),N=K,N===r&&(N=G,K=xm(),K!==r&&(Dt=N,K=Xt(K)),N=K,N===r&&(N=G,K=bm(),K!==r&&(Dt=N,K=Xt(K)),N=K,N===r&&(N=G,K=Uo(),K!==r&&(Dt=N,K=Xt(K)),N=K))),N}function Ei(){var N,K,te,ue;return N=G,t.substr(G,2)===Pt?(K=Pt,G+=2):(K=r,lt===0&&mt(tn)),K!==r?(te=rn(),te!==r?(t.charCodeAt(G)===39?(ue=Dr,G++):(ue=r,lt===0&&mt(fr)),ue!==r?(Dt=N,K=Br(te),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function xm(){var N,K,te,ue;return N=G,t.charCodeAt(G)===39?(K=Dr,G++):(K=r,lt===0&&mt(fr)),K!==r?(te=gp(),te!==r?(t.charCodeAt(G)===39?(ue=Dr,G++):(ue=r,lt===0&&mt(fr)),ue!==r?(Dt=N,K=Br(te),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function bm(){var N,K,te,ue;if(N=G,t.substr(G,2)===jr?(K=jr,G+=2):(K=r,lt===0&&mt(Hn)),K!==r&&(Dt=N,K=bs()),N=K,N===r)if(N=G,t.charCodeAt(G)===34?(K=ki,G++):(K=r,lt===0&&mt(gs)),K!==r){for(te=[],ue=TA();ue!==r;)te.push(ue),ue=TA();te!==r?(t.charCodeAt(G)===34?(ue=ki,G++):(ue=r,lt===0&&mt(gs)),ue!==r?(Dt=N,K=to(te),N=K):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;return N}function Uo(){var N,K,te;if(N=G,K=[],te=hp(),te!==r)for(;te!==r;)K.push(te),te=hp();else K=r;return K!==r&&(Dt=N,K=to(K)),N=K,N}function TA(){var N,K;return N=G,K=Hr(),K!==r&&(Dt=N,K=Di(K)),N=K,N===r&&(N=G,K=dp(),K!==r&&(Dt=N,K=Qs(K)),N=K,N===r&&(N=G,K=Dc(),K!==r&&(Dt=N,K=ro(K)),N=K,N===r&&(N=G,K=Ag(),K!==r&&(Dt=N,K=uc(K)),N=K))),N}function hp(){var N,K;return N=G,K=Hr(),K!==r&&(Dt=N,K=hu(K)),N=K,N===r&&(N=G,K=dp(),K!==r&&(Dt=N,K=op(K)),N=K,N===r&&(N=G,K=Dc(),K!==r&&(Dt=N,K=ap(K)),N=K,N===r&&(N=G,K=aI(),K!==r&&(Dt=N,K=ks(K)),N=K,N===r&&(N=G,K=fa(),K!==r&&(Dt=N,K=uc(K)),N=K)))),N}function gp(){var N,K,te;for(N=G,K=[],Cn.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(no));te!==r;)K.push(te),Cn.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(no));return K!==r&&(Dt=N,K=Fs(K)),N=K,N}function Ag(){var N,K,te;if(N=G,K=[],te=Aa(),te===r&&(dl.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(ml))),te!==r)for(;te!==r;)K.push(te),te=Aa(),te===r&&(dl.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(ml)));else K=r;return K!==r&&(Dt=N,K=Fs(K)),N=K,N}function Aa(){var N,K,te;return N=G,t.substr(G,2)===io?(K=io,G+=2):(K=r,lt===0&&mt(_e)),K!==r&&(Dt=N,K=Fn()),N=K,N===r&&(N=G,t.charCodeAt(G)===92?(K=Fi,G++):(K=r,lt===0&&mt(Rn)),K!==r?(Ui.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(Zt)),te!==r?(Dt=N,K=Ri(te),N=K):(G=N,N=r)):(G=N,N=r)),N}function rn(){var N,K,te;for(N=G,K=[],te=co(),te===r&&(Cn.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(no)));te!==r;)K.push(te),te=co(),te===r&&(Cn.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(no)));return K!==r&&(Dt=N,K=Fs(K)),N=K,N}function co(){var N,K,te;return N=G,t.substr(G,2)===Zn?(K=Zn,G+=2):(K=r,lt===0&&mt(La)),K!==r&&(Dt=N,K=$t()),N=K,N===r&&(N=G,t.substr(G,2)===Ac?(K=Ac,G+=2):(K=r,lt===0&&mt(gu)),K!==r&&(Dt=N,K=fc()),N=K,N===r&&(N=G,t.charCodeAt(G)===92?(K=Fi,G++):(K=r,lt===0&&mt(Rn)),K!==r?(yl.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(DA)),te!==r?(Dt=N,K=du(),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===Ce?(K=Ce,G+=2):(K=r,lt===0&&mt(Rt)),K!==r&&(Dt=N,K=pc()),N=K,N===r&&(N=G,t.substr(G,2)===_i?(K=_i,G+=2):(K=r,lt===0&&mt(mu)),K!==r&&(Dt=N,K=qt()),N=K,N===r&&(N=G,t.substr(G,2)===El?(K=El,G+=2):(K=r,lt===0&&mt(SA)),K!==r&&(Dt=N,K=lp()),N=K,N===r&&(N=G,t.substr(G,2)===hc?(K=hc,G+=2):(K=r,lt===0&&mt(PA)),K!==r&&(Dt=N,K=Dn()),N=K,N===r&&(N=G,t.substr(G,2)===ui?(K=ui,G+=2):(K=r,lt===0&&mt(gc)),K!==r&&(Dt=N,K=xA()),N=K,N===r&&(N=G,t.charCodeAt(G)===92?(K=Fi,G++):(K=r,lt===0&&mt(Rn)),K!==r?(ta.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(Hi)),te!==r?(Dt=N,K=Ri(te),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=NA()))))))))),N}function NA(){var N,K,te,ue,ze,gt,ur,gr,hn,ti,Ni,gg;return N=G,t.charCodeAt(G)===92?(K=Fi,G++):(K=r,lt===0&&mt(Rn)),K!==r?(te=Ga(),te!==r?(Dt=N,K=Lo(te),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===$e?(K=$e,G+=2):(K=r,lt===0&&mt(so)),K!==r?(te=G,ue=G,ze=Ga(),ze!==r?(gt=ei(),gt!==r?(ze=[ze,gt],ue=ze):(G=ue,ue=r)):(G=ue,ue=r),ue===r&&(ue=Ga()),ue!==r?te=t.substring(te,G):te=ue,te!==r?(Dt=N,K=Lo(te),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===Cl?(K=Cl,G+=2):(K=r,lt===0&&mt(yu)),K!==r?(te=G,ue=G,ze=ei(),ze!==r?(gt=ei(),gt!==r?(ur=ei(),ur!==r?(gr=ei(),gr!==r?(ze=[ze,gt,ur,gr],ue=ze):(G=ue,ue=r)):(G=ue,ue=r)):(G=ue,ue=r)):(G=ue,ue=r),ue!==r?te=t.substring(te,G):te=ue,te!==r?(Dt=N,K=Lo(te),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===qi?(K=qi,G+=2):(K=r,lt===0&&mt(Eu)),K!==r?(te=G,ue=G,ze=ei(),ze!==r?(gt=ei(),gt!==r?(ur=ei(),ur!==r?(gr=ei(),gr!==r?(hn=ei(),hn!==r?(ti=ei(),ti!==r?(Ni=ei(),Ni!==r?(gg=ei(),gg!==r?(ze=[ze,gt,ur,gr,hn,ti,Ni,gg],ue=ze):(G=ue,ue=r)):(G=ue,ue=r)):(G=ue,ue=r)):(G=ue,ue=r)):(G=ue,ue=r)):(G=ue,ue=r)):(G=ue,ue=r)):(G=ue,ue=r),ue!==r?te=t.substring(te,G):te=ue,te!==r?(Dt=N,K=bA(te),N=K):(G=N,N=r)):(G=N,N=r)))),N}function Ga(){var N;return Oa.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,lt===0&&mt(dc)),N}function ei(){var N;return ds.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,lt===0&&mt(Ot)),N}function fa(){var N,K,te,ue,ze;if(N=G,K=[],te=G,t.charCodeAt(G)===92?(ue=Fi,G++):(ue=r,lt===0&&mt(Rn)),ue!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,lt===0&&mt(Sn)),ze!==r?(Dt=te,ue=Ri(ze),te=ue):(G=te,te=r)):(G=te,te=r),te===r&&(te=G,t.substr(G,2)===di?(ue=di,G+=2):(ue=r,lt===0&&mt(ra)),ue!==r&&(Dt=te,ue=oo()),te=ue,te===r&&(te=G,ue=G,lt++,ze=Qm(),lt--,ze===r?ue=void 0:(G=ue,ue=r),ue!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,lt===0&&mt(Sn)),ze!==r?(Dt=te,ue=Ri(ze),te=ue):(G=te,te=r)):(G=te,te=r))),te!==r)for(;te!==r;)K.push(te),te=G,t.charCodeAt(G)===92?(ue=Fi,G++):(ue=r,lt===0&&mt(Rn)),ue!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,lt===0&&mt(Sn)),ze!==r?(Dt=te,ue=Ri(ze),te=ue):(G=te,te=r)):(G=te,te=r),te===r&&(te=G,t.substr(G,2)===di?(ue=di,G+=2):(ue=r,lt===0&&mt(ra)),ue!==r&&(Dt=te,ue=oo()),te=ue,te===r&&(te=G,ue=G,lt++,ze=Qm(),lt--,ze===r?ue=void 0:(G=ue,ue=r),ue!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,lt===0&&mt(Sn)),ze!==r?(Dt=te,ue=Ri(ze),te=ue):(G=te,te=r)):(G=te,te=r)));else K=r;return K!==r&&(Dt=N,K=Fs(K)),N=K,N}function vc(){var N,K,te,ue,ze,gt;if(N=G,t.charCodeAt(G)===45?(K=Rs,G++):(K=r,lt===0&&mt(na)),K===r&&(t.charCodeAt(G)===43?(K=ia,G++):(K=r,lt===0&&mt(Oo))),K===r&&(K=null),K!==r){if(te=[],At.test(t.charAt(G))?(ue=t.charAt(G),G++):(ue=r,lt===0&&mt(Le)),ue!==r)for(;ue!==r;)te.push(ue),At.test(t.charAt(G))?(ue=t.charAt(G),G++):(ue=r,lt===0&&mt(Le));else te=r;if(te!==r)if(t.charCodeAt(G)===46?(ue=Zi,G++):(ue=r,lt===0&&mt(Ts)),ue!==r){if(ze=[],At.test(t.charAt(G))?(gt=t.charAt(G),G++):(gt=r,lt===0&&mt(Le)),gt!==r)for(;gt!==r;)ze.push(gt),At.test(t.charAt(G))?(gt=t.charAt(G),G++):(gt=r,lt===0&&mt(Le));else ze=r;ze!==r?(Dt=N,K=Ns(K,te,ze),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;if(N===r){if(N=G,t.charCodeAt(G)===45?(K=Rs,G++):(K=r,lt===0&&mt(na)),K===r&&(t.charCodeAt(G)===43?(K=ia,G++):(K=r,lt===0&&mt(Oo))),K===r&&(K=null),K!==r){if(te=[],At.test(t.charAt(G))?(ue=t.charAt(G),G++):(ue=r,lt===0&&mt(Le)),ue!==r)for(;ue!==r;)te.push(ue),At.test(t.charAt(G))?(ue=t.charAt(G),G++):(ue=r,lt===0&&mt(Le));else te=r;te!==r?(Dt=N,K=Ls(K,te),N=K):(G=N,N=r)}else G=N,N=r;if(N===r&&(N=G,K=Dc(),K!==r&&(Dt=N,K=ao(K)),N=K,N===r&&(N=G,K=Wa(),K!==r&&(Dt=N,K=Wn(K)),N=K,N===r)))if(N=G,t.charCodeAt(G)===40?(K=Ee,G++):(K=r,lt===0&&mt(de)),K!==r){for(te=[],ue=kt();ue!==r;)te.push(ue),ue=kt();if(te!==r)if(ue=ts(),ue!==r){for(ze=[],gt=kt();gt!==r;)ze.push(gt),gt=kt();ze!==r?(t.charCodeAt(G)===41?(gt=ne,G++):(gt=r,lt===0&&mt(Z)),gt!==r?(Dt=N,K=qn(ue),N=K):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r}return N}function Bl(){var N,K,te,ue,ze,gt,ur,gr;if(N=G,K=vc(),K!==r){for(te=[],ue=G,ze=[],gt=kt();gt!==r;)ze.push(gt),gt=kt();if(ze!==r)if(t.charCodeAt(G)===42?(gt=$i,G++):(gt=r,lt===0&&mt(es)),gt===r&&(t.charCodeAt(G)===47?(gt=mi,G++):(gt=r,lt===0&&mt(Ma))),gt!==r){for(ur=[],gr=kt();gr!==r;)ur.push(gr),gr=kt();ur!==r?(gr=vc(),gr!==r?(Dt=ue,ze=sa(K,gt,gr),ue=ze):(G=ue,ue=r)):(G=ue,ue=r)}else G=ue,ue=r;else G=ue,ue=r;for(;ue!==r;){for(te.push(ue),ue=G,ze=[],gt=kt();gt!==r;)ze.push(gt),gt=kt();if(ze!==r)if(t.charCodeAt(G)===42?(gt=$i,G++):(gt=r,lt===0&&mt(es)),gt===r&&(t.charCodeAt(G)===47?(gt=mi,G++):(gt=r,lt===0&&mt(Ma))),gt!==r){for(ur=[],gr=kt();gr!==r;)ur.push(gr),gr=kt();ur!==r?(gr=vc(),gr!==r?(Dt=ue,ze=sa(K,gt,gr),ue=ze):(G=ue,ue=r)):(G=ue,ue=r)}else G=ue,ue=r;else G=ue,ue=r}te!==r?(Dt=N,K=ee(K,te),N=K):(G=N,N=r)}else G=N,N=r;return N}function ts(){var N,K,te,ue,ze,gt,ur,gr;if(N=G,K=Bl(),K!==r){for(te=[],ue=G,ze=[],gt=kt();gt!==r;)ze.push(gt),gt=kt();if(ze!==r)if(t.charCodeAt(G)===43?(gt=ia,G++):(gt=r,lt===0&&mt(Oo)),gt===r&&(t.charCodeAt(G)===45?(gt=Rs,G++):(gt=r,lt===0&&mt(na))),gt!==r){for(ur=[],gr=kt();gr!==r;)ur.push(gr),gr=kt();ur!==r?(gr=Bl(),gr!==r?(Dt=ue,ze=we(K,gt,gr),ue=ze):(G=ue,ue=r)):(G=ue,ue=r)}else G=ue,ue=r;else G=ue,ue=r;for(;ue!==r;){for(te.push(ue),ue=G,ze=[],gt=kt();gt!==r;)ze.push(gt),gt=kt();if(ze!==r)if(t.charCodeAt(G)===43?(gt=ia,G++):(gt=r,lt===0&&mt(Oo)),gt===r&&(t.charCodeAt(G)===45?(gt=Rs,G++):(gt=r,lt===0&&mt(na))),gt!==r){for(ur=[],gr=kt();gr!==r;)ur.push(gr),gr=kt();ur!==r?(gr=Bl(),gr!==r?(Dt=ue,ze=we(K,gt,gr),ue=ze):(G=ue,ue=r)):(G=ue,ue=r)}else G=ue,ue=r;else G=ue,ue=r}te!==r?(Dt=N,K=ee(K,te),N=K):(G=N,N=r)}else G=N,N=r;return N}function Hr(){var N,K,te,ue,ze,gt;if(N=G,t.substr(G,3)===qe?(K=qe,G+=3):(K=r,lt===0&&mt(Be)),K!==r){for(te=[],ue=kt();ue!==r;)te.push(ue),ue=kt();if(te!==r)if(ue=ts(),ue!==r){for(ze=[],gt=kt();gt!==r;)ze.push(gt),gt=kt();ze!==r?(t.substr(G,2)===xe?(gt=xe,G+=2):(gt=r,lt===0&&mt(Je)),gt!==r?(Dt=N,K=vt(ue),N=K):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;return N}function dp(){var N,K,te,ue;return N=G,t.substr(G,2)===tr?(K=tr,G+=2):(K=r,lt===0&&mt(Zr)),K!==r?(te=Bu(),te!==r?(t.charCodeAt(G)===41?(ue=ne,G++):(ue=r,lt===0&&mt(Z)),ue!==r?(Dt=N,K=Tn(te),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function Dc(){var N,K,te,ue,ze,gt;return N=G,t.substr(G,2)===_r?(K=_r,G+=2):(K=r,lt===0&&mt($n)),K!==r?(te=Wa(),te!==r?(t.substr(G,2)===Ti?(ue=Ti,G+=2):(ue=r,lt===0&&mt(Yn)),ue!==r?(ze=RA(),ze!==r?(t.charCodeAt(G)===125?(gt=H,G++):(gt=r,lt===0&&mt(yt)),gt!==r?(Dt=N,K=Ua(te,ze),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===_r?(K=_r,G+=2):(K=r,lt===0&&mt($n)),K!==r?(te=Wa(),te!==r?(t.substr(G,3)===oa?(ue=oa,G+=3):(ue=r,lt===0&&mt(yi)),ue!==r?(Dt=N,K=aa(te),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===_r?(K=_r,G+=2):(K=r,lt===0&&mt($n)),K!==r?(te=Wa(),te!==r?(t.substr(G,2)===Ha?(ue=Ha,G+=2):(ue=r,lt===0&&mt(lo)),ue!==r?(ze=RA(),ze!==r?(t.charCodeAt(G)===125?(gt=H,G++):(gt=r,lt===0&&mt(yt)),gt!==r?(Dt=N,K=QA(te,ze),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===_r?(K=_r,G+=2):(K=r,lt===0&&mt($n)),K!==r?(te=Wa(),te!==r?(t.substr(G,3)===mc?(ue=mc,G+=3):(ue=r,lt===0&&mt(la)),ue!==r?(Dt=N,K=$h(te),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===_r?(K=_r,G+=2):(K=r,lt===0&&mt($n)),K!==r?(te=Wa(),te!==r?(t.charCodeAt(G)===125?(ue=H,G++):(ue=r,lt===0&&mt(yt)),ue!==r?(Dt=N,K=yc(te),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.charCodeAt(G)===36?(K=vm,G++):(K=r,lt===0&&mt(eg)),K!==r?(te=Wa(),te!==r?(Dt=N,K=yc(te),N=K):(G=N,N=r)):(G=N,N=r)))))),N}function aI(){var N,K,te;return N=G,K=fg(),K!==r?(Dt=G,te=Kn(K),te?te=void 0:te=r,te!==r?(Dt=N,K=cp(K),N=K):(G=N,N=r)):(G=N,N=r),N}function fg(){var N,K,te,ue,ze;if(N=G,K=[],te=G,ue=G,lt++,ze=hg(),lt--,ze===r?ue=void 0:(G=ue,ue=r),ue!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,lt===0&&mt(Sn)),ze!==r?(Dt=te,ue=Ri(ze),te=ue):(G=te,te=r)):(G=te,te=r),te!==r)for(;te!==r;)K.push(te),te=G,ue=G,lt++,ze=hg(),lt--,ze===r?ue=void 0:(G=ue,ue=r),ue!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,lt===0&&mt(Sn)),ze!==r?(Dt=te,ue=Ri(ze),te=ue):(G=te,te=r)):(G=te,te=r);else K=r;return K!==r&&(Dt=N,K=Fs(K)),N=K,N}function pg(){var N,K,te;if(N=G,K=[],tg.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(kA)),te!==r)for(;te!==r;)K.push(te),tg.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(kA));else K=r;return K!==r&&(Dt=N,K=Os()),N=K,N}function Wa(){var N,K,te;if(N=G,K=[],Cu.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(qa)),te!==r)for(;te!==r;)K.push(te),Cu.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(qa));else K=r;return K!==r&&(Dt=N,K=Os()),N=K,N}function Qm(){var N;return ji.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,lt===0&&mt(ca)),N}function hg(){var N;return Iu.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,lt===0&&mt(ms)),N}function kt(){var N,K;if(N=[],Ec.test(t.charAt(G))?(K=t.charAt(G),G++):(K=r,lt===0&&mt(Cc)),K!==r)for(;K!==r;)N.push(K),Ec.test(t.charAt(G))?(K=t.charAt(G),G++):(K=r,lt===0&&mt(Cc));else N=r;return N}if(wu=a(),wu!==r&&G===t.length)return wu;throw wu!==r&&G<t.length&&mt(ig()),og(Ic,Si<t.length?t.charAt(Si):null,Si<t.length?wc(Si,Si+1):wc(Si,Si))}ZW.exports={SyntaxError:Og,parse:I8e}});function yD(t,e={isGlobPattern:()=>!1}){try{return(0,eY.parse)(t,e)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function ay(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:o},a)=>`${ED(r)}${o===";"?a!==t.length-1||e?";":"":" &"}`).join(" ")}function ED(t){return`${ly(t.chain)}${t.then?` ${oT(t.then)}`:""}`}function oT(t){return`${t.type} ${ED(t.line)}`}function ly(t){return`${lT(t)}${t.then?` ${aT(t.then)}`:""}`}function aT(t){return`${t.type} ${ly(t.chain)}`}function lT(t){switch(t.type){case"command":return`${t.envs.length>0?`${t.envs.map(e=>mD(e)).join(" ")} `:""}${t.args.map(e=>cT(e)).join(" ")}`;case"subshell":return`(${ay(t.subshell)})${t.args.length>0?` ${t.args.map(e=>OI(e)).join(" ")}`:""}`;case"group":return`{ ${ay(t.group,{endSemicolon:!0})} }${t.args.length>0?` ${t.args.map(e=>OI(e)).join(" ")}`:""}`;case"envs":return t.envs.map(e=>mD(e)).join(" ");default:throw new Error(`Unsupported command type: "${t.type}"`)}}function mD(t){return`${t.name}=${t.args[0]?Mg(t.args[0]):""}`}function cT(t){switch(t.type){case"redirection":return OI(t);case"argument":return Mg(t);default:throw new Error(`Unsupported argument type: "${t.type}"`)}}function OI(t){return`${t.subtype} ${t.args.map(e=>Mg(e)).join(" ")}`}function Mg(t){return t.segments.map(e=>uT(e)).join("")}function uT(t){let e=(o,a)=>a?`"${o}"`:o,r=o=>o===""?'""':o.match(/[(){}<>$|&; \t"']/)?`$'${o.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\f/g,"\\f").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/\v/g,"\\v").replace(/\0/g,"\\0")}'`:o;switch(t.type){case"text":return r(t.text);case"glob":return t.pattern;case"shell":return e(`\${${ay(t.shell)}}`,t.quoted);case"variable":return e(typeof t.defaultValue>"u"?typeof t.alternativeValue>"u"?`\${${t.name}}`:t.alternativeValue.length===0?`\${${t.name}:+}`:`\${${t.name}:+${t.alternativeValue.map(o=>Mg(o)).join(" ")}}`:t.defaultValue.length===0?`\${${t.name}:-}`:`\${${t.name}:-${t.defaultValue.map(o=>Mg(o)).join(" ")}}`,t.quoted);case"arithmetic":return`$(( ${CD(t.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: "${t.type}"`)}}function CD(t){let e=a=>{switch(a){case"addition":return"+";case"subtraction":return"-";case"multiplication":return"*";case"division":return"/";default:throw new Error(`Can't extract operator from arithmetic expression of type "${a}"`)}},r=(a,n)=>n?`( ${a} )`:a,o=a=>r(CD(a),!["number","variable"].includes(a.type));switch(t.type){case"number":return String(t.value);case"variable":return t.name;default:return`${o(t.left)} ${e(t.type)} ${o(t.right)}`}}var eY,tY=dt(()=>{eY=tt($W())});var nY=U((cxt,rY)=>{"use strict";function w8e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Ug(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Ug)}w8e(Ug,Error);Ug.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var C="",w;for(w=0;w<h.parts.length;w++)C+=h.parts[w]instanceof Array?n(h.parts[w][0])+"-"+n(h.parts[w][1]):n(h.parts[w]);return"["+(h.inverted?"^":"")+C+"]"},any:function(h){return"any character"},end:function(h){return"end of input"},other:function(h){return h.description}};function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(C){return"\\x0"+o(C)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(C){return"\\x"+o(C)})}function n(h){return h.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(C){return"\\x0"+o(C)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(C){return"\\x"+o(C)})}function u(h){return r[h.type](h)}function A(h){var C=new Array(h.length),w,v;for(w=0;w<h.length;w++)C[w]=u(h[w]);if(C.sort(),C.length>0){for(w=1,v=1;w<C.length;w++)C[w-1]!==C[w]&&(C[v]=C[w],v++);C.length=v}switch(C.length){case 1:return C[0];case 2:return C[0]+" or "+C[1];default:return C.slice(0,-1).join(", ")+", or "+C[C.length-1]}}function p(h){return h?'"'+a(h)+'"':"end of input"}return"Expected "+A(t)+" but "+p(e)+" found."};function B8e(t,e){e=e!==void 0?e:{};var r={},o={resolution:Te},a=Te,n="/",u=Ee("/",!1),A=function(Le,x){return{from:Le,descriptor:x}},p=function(Le){return{descriptor:Le}},h="@",C=Ee("@",!1),w=function(Le,x){return{fullName:Le,description:x}},v=function(Le){return{fullName:Le}},b=function(){return le()},E=/^[^\/@]/,R=de(["/","@"],!0,!1),L=/^[^\/]/,_=de(["/"],!0,!1),J=0,re=0,oe=[{line:1,column:1}],pe=0,he=[],ve=0,ge;if("startRule"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=o[e.startRule]}function le(){return t.substring(re,J)}function Pe(){return ut(re,J)}function g(Le,x){throw x=x!==void 0?x:ut(re,J),Me([me(Le)],t.substring(re,J),x)}function De(Le,x){throw x=x!==void 0?x:ut(re,J),yt(Le,x)}function Ee(Le,x){return{type:"literal",text:Le,ignoreCase:x}}function de(Le,x,I){return{type:"class",parts:Le,inverted:x,ignoreCase:I}}function ne(){return{type:"any"}}function Z(){return{type:"end"}}function me(Le){return{type:"other",description:Le}}function be(Le){var x=oe[Le],I;if(x)return x;for(I=Le-1;!oe[I];)I--;for(x=oe[I],x={line:x.line,column:x.column};I<Le;)t.charCodeAt(I)===10?(x.line++,x.column=1):x.column++,I++;return oe[Le]=x,x}function ut(Le,x){var I=be(Le),P=be(x);return{start:{offset:Le,line:I.line,column:I.column},end:{offset:x,line:P.line,column:P.column}}}function H(Le){J<pe||(J>pe&&(pe=J,he=[]),he.push(Le))}function yt(Le,x){return new Ug(Le,null,null,x)}function Me(Le,x,I){return new Ug(Ug.buildMessage(Le,x),Le,x,I)}function Te(){var Le,x,I,P;return Le=J,x=Qe(),x!==r?(t.charCodeAt(J)===47?(I=n,J++):(I=r,ve===0&&H(u)),I!==r?(P=Qe(),P!==r?(re=Le,x=A(x,P),Le=x):(J=Le,Le=r)):(J=Le,Le=r)):(J=Le,Le=r),Le===r&&(Le=J,x=Qe(),x!==r&&(re=Le,x=p(x)),Le=x),Le}function Qe(){var Le,x,I,P;return Le=J,x=Ue(),x!==r?(t.charCodeAt(J)===64?(I=h,J++):(I=r,ve===0&&H(C)),I!==r?(P=At(),P!==r?(re=Le,x=w(x,P),Le=x):(J=Le,Le=r)):(J=Le,Le=r)):(J=Le,Le=r),Le===r&&(Le=J,x=Ue(),x!==r&&(re=Le,x=v(x)),Le=x),Le}function Ue(){var Le,x,I,P,y;return Le=J,t.charCodeAt(J)===64?(x=h,J++):(x=r,ve===0&&H(C)),x!==r?(I=je(),I!==r?(t.charCodeAt(J)===47?(P=n,J++):(P=r,ve===0&&H(u)),P!==r?(y=je(),y!==r?(re=Le,x=b(),Le=x):(J=Le,Le=r)):(J=Le,Le=r)):(J=Le,Le=r)):(J=Le,Le=r),Le===r&&(Le=J,x=je(),x!==r&&(re=Le,x=b()),Le=x),Le}function je(){var Le,x,I;if(Le=J,x=[],E.test(t.charAt(J))?(I=t.charAt(J),J++):(I=r,ve===0&&H(R)),I!==r)for(;I!==r;)x.push(I),E.test(t.charAt(J))?(I=t.charAt(J),J++):(I=r,ve===0&&H(R));else x=r;return x!==r&&(re=Le,x=b()),Le=x,Le}function At(){var Le,x,I;if(Le=J,x=[],L.test(t.charAt(J))?(I=t.charAt(J),J++):(I=r,ve===0&&H(_)),I!==r)for(;I!==r;)x.push(I),L.test(t.charAt(J))?(I=t.charAt(J),J++):(I=r,ve===0&&H(_));else x=r;return x!==r&&(re=Le,x=b()),Le=x,Le}if(ge=a(),ge!==r&&J===t.length)return ge;throw ge!==r&&J<t.length&&H(Z()),Me(he,pe<t.length?t.charAt(pe):null,pe<t.length?ut(pe,pe+1):ut(pe,pe))}rY.exports={SyntaxError:Ug,parse:B8e}});function ID(t){let e=t.match(/^\*{1,2}\/(.*)/);if(e)throw new Error(`The override for '${t}' includes a glob pattern. Glob patterns have been removed since their behaviours don't match what you'd expect. Set the override to '${e[1]}' instead.`);try{return(0,iY.parse)(t)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function wD(t){let e="";return t.from&&(e+=t.from.fullName,t.from.description&&(e+=`@${t.from.description}`),e+="/"),e+=t.descriptor.fullName,t.descriptor.description&&(e+=`@${t.descriptor.description}`),e}var iY,sY=dt(()=>{iY=tt(nY())});var Hg=U((Axt,_g)=>{"use strict";function oY(t){return typeof t>"u"||t===null}function v8e(t){return typeof t=="object"&&t!==null}function D8e(t){return Array.isArray(t)?t:oY(t)?[]:[t]}function S8e(t,e){var r,o,a,n;if(e)for(n=Object.keys(e),r=0,o=n.length;r<o;r+=1)a=n[r],t[a]=e[a];return t}function P8e(t,e){var r="",o;for(o=0;o<e;o+=1)r+=t;return r}function x8e(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}_g.exports.isNothing=oY;_g.exports.isObject=v8e;_g.exports.toArray=D8e;_g.exports.repeat=P8e;_g.exports.isNegativeZero=x8e;_g.exports.extend=S8e});var cy=U((fxt,aY)=>{"use strict";function MI(t,e){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}MI.prototype=Object.create(Error.prototype);MI.prototype.constructor=MI;MI.prototype.toString=function(e){var r=this.name+": ";return r+=this.reason||"(unknown reason)",!e&&this.mark&&(r+=" "+this.mark.toString()),r};aY.exports=MI});var uY=U((pxt,cY)=>{"use strict";var lY=Hg();function AT(t,e,r,o,a){this.name=t,this.buffer=e,this.position=r,this.line=o,this.column=a}AT.prototype.getSnippet=function(e,r){var o,a,n,u,A;if(!this.buffer)return null;for(e=e||4,r=r||75,o="",a=this.position;a>0&&`\0\r | 12 | `},Bl="\\r",bA=yr("\\r",!1),Ap=function(){return"\r"},yc="\\t",QA=yr("\\t",!1),Dn=function(){return" "},ui="\\v",Ec=yr("\\v",!1),kA=function(){return"\v"},na=/^[\\'"?]/,Hi=ys(["\\","'",'"',"?"],!1,!1),Mo=function(N){return String.fromCharCode(parseInt(N,16))},$e="\\x",so=yr("\\x",!1),vl="\\u",Eu=yr("\\u",!1),qi="\\U",Cu=yr("\\U",!1),FA=function(N){return String.fromCodePoint(parseInt(N,16))},Ha=/^[0-7]/,Cc=ys([["0","7"]],!1,!1),ds=/^[0-9a-fA-f]/,Ot=ys([["0","9"],["a","f"],["A","f"]],!1,!1),Sn=ag(),di="{}",ia=yr("{}",!1),oo=function(){return"{}"},Rs="-",sa=yr("-",!1),oa="+",Uo=yr("+",!1),Zi=".",Ts=yr(".",!1),Ns=function(N,K,te){return{type:"number",value:(N==="-"?-1:1)*parseFloat(K.join("")+"."+te.join(""))}},Ls=function(N,K){return{type:"number",value:(N==="-"?-1:1)*parseInt(K.join(""))}},ao=function(N){return{type:"variable",...N}},Yn=function(N){return{type:"variable",name:N}},qn=function(N){return N},$i="*",es=yr("*",!1),mi="/",qa=yr("/",!1),aa=function(N,K,te){return{type:K==="*"?"multiplication":"division",right:te}},ee=function(N,K){return K.reduce((te,Ae)=>({left:te,...Ae}),N)},we=function(N,K,te){return{type:K==="+"?"addition":"subtraction",right:te}},je="$((",Be=yr("$((",!1),xe="))",Ve=yr("))",!1),vt=function(N){return N},tr="$(",Zr=yr("$(",!1),Tn=function(N){return N},_r="${",ei=yr("${",!1),Ti=":-",Kn=yr(":-",!1),ja=function(N,K){return{name:N,defaultValue:K}},la=":-}",yi=yr(":-}",!1),ca=function(N){return{name:N,defaultValue:[]}},Ga=":+",lo=yr(":+",!1),RA=function(N,K){return{name:N,alternativeValue:K}},Ic=":+}",ua=yr(":+}",!1),ng=function(N){return{name:N,alternativeValue:[]}},wc=function(N){return{name:N}},bm="$",ig=yr("$",!1),Vn=function(N){return e.isGlobPattern(N)},fp=function(N){return N},sg=/^[a-zA-Z0-9_]/,TA=ys([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),Os=function(){return og()},Iu=/^[$@*?#a-zA-Z0-9_\-]/,Wa=ys(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),ji=/^[()}<>$|&; \t"']/,Aa=ys(["(",")","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),wu=/^[<>&; \t"']/,ms=ys(["<",">","&",";"," "," ",'"',"'"],!1,!1),Bc=/^[ \t]/,vc=ys([" "," "],!1,!1),G=0,Dt=0,Dl=[{line:1,column:1}],Si=0,Dc=[],lt=0,Bu;if("startRule"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=o[e.startRule]}function og(){return t.substring(Dt,G)}function cI(){return Sc(Dt,G)}function NA(N,K){throw K=K!==void 0?K:Sc(Dt,G),ug([cg(N)],t.substring(Dt,G),K)}function pp(N,K){throw K=K!==void 0?K:Sc(Dt,G),Qm(N,K)}function yr(N,K){return{type:"literal",text:N,ignoreCase:K}}function ys(N,K,te){return{type:"class",parts:N,inverted:K,ignoreCase:te}}function ag(){return{type:"any"}}function lg(){return{type:"end"}}function cg(N){return{type:"other",description:N}}function hp(N){var K=Dl[N],te;if(K)return K;for(te=N-1;!Dl[te];)te--;for(K=Dl[te],K={line:K.line,column:K.column};te<N;)t.charCodeAt(te)===10?(K.line++,K.column=1):K.column++,te++;return Dl[N]=K,K}function Sc(N,K){var te=hp(N),Ae=hp(K);return{start:{offset:N,line:te.line,column:te.column},end:{offset:K,line:Ae.line,column:Ae.column}}}function mt(N){G<Si||(G>Si&&(Si=G,Dc=[]),Dc.push(N))}function Qm(N,K){return new Hg(N,null,null,K)}function ug(N,K,te){return new Hg(Hg.buildMessage(N,K),N,K,te)}function Ag(){var N,K,te;for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();return K!==r?(te=vu(),te===r&&(te=null),te!==r?(Dt=N,K=n(te),N=K):(G=N,N=r)):(G=N,N=r),N}function vu(){var N,K,te,Ae,ze;if(N=G,K=Du(),K!==r){for(te=[],Ae=kt();Ae!==r;)te.push(Ae),Ae=kt();te!==r?(Ae=fg(),Ae!==r?(ze=km(),ze===r&&(ze=null),ze!==r?(Dt=N,K=u(K,Ae,ze),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;if(N===r)if(N=G,K=Du(),K!==r){for(te=[],Ae=kt();Ae!==r;)te.push(Ae),Ae=kt();te!==r?(Ae=fg(),Ae===r&&(Ae=null),Ae!==r?(Dt=N,K=A(K,Ae),N=K):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;return N}function km(){var N,K,te,Ae,ze;for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();if(K!==r)if(te=vu(),te!==r){for(Ae=[],ze=kt();ze!==r;)Ae.push(ze),ze=kt();Ae!==r?(Dt=N,K=p(te),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r;return N}function fg(){var N;return t.charCodeAt(G)===59?(N=h,G++):(N=r,lt===0&&mt(C)),N===r&&(t.charCodeAt(G)===38?(N=w,G++):(N=r,lt===0&&mt(v))),N}function Du(){var N,K,te;return N=G,K=fa(),K!==r?(te=uI(),te===r&&(te=null),te!==r?(Dt=N,K=b(K,te),N=K):(G=N,N=r)):(G=N,N=r),N}function uI(){var N,K,te,Ae,ze,gt,ur;for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();if(K!==r)if(te=Fm(),te!==r){for(Ae=[],ze=kt();ze!==r;)Ae.push(ze),ze=kt();if(Ae!==r)if(ze=Du(),ze!==r){for(gt=[],ur=kt();ur!==r;)gt.push(ur),ur=kt();gt!==r?(Dt=N,K=E(te,ze),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;return N}function Fm(){var N;return t.substr(G,2)===R?(N=R,G+=2):(N=r,lt===0&&mt(L)),N===r&&(t.substr(G,2)===_?(N=_,G+=2):(N=r,lt===0&&mt(V))),N}function fa(){var N,K,te;return N=G,K=pg(),K!==r?(te=Pc(),te===r&&(te=null),te!==r?(Dt=N,K=re(K,te),N=K):(G=N,N=r)):(G=N,N=r),N}function Pc(){var N,K,te,Ae,ze,gt,ur;for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();if(K!==r)if(te=Sl(),te!==r){for(Ae=[],ze=kt();ze!==r;)Ae.push(ze),ze=kt();if(Ae!==r)if(ze=fa(),ze!==r){for(gt=[],ur=kt();ur!==r;)gt.push(ur),ur=kt();gt!==r?(Dt=N,K=ae(te,ze),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;return N}function Sl(){var N;return t.substr(G,2)===he?(N=he,G+=2):(N=r,lt===0&&mt(pe)),N===r&&(t.charCodeAt(G)===124?(N=De,G++):(N=r,lt===0&&mt(ge))),N}function Su(){var N,K,te,Ae,ze,gt;if(N=G,K=mg(),K!==r)if(t.charCodeAt(G)===61?(te=le,G++):(te=r,lt===0&&mt(Pe)),te!==r)if(Ae=_o(),Ae!==r){for(ze=[],gt=kt();gt!==r;)ze.push(gt),gt=kt();ze!==r?(Dt=N,K=g(K,Ae),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r;else G=N,N=r;if(N===r)if(N=G,K=mg(),K!==r)if(t.charCodeAt(G)===61?(te=le,G++):(te=r,lt===0&&mt(Pe)),te!==r){for(Ae=[],ze=kt();ze!==r;)Ae.push(ze),ze=kt();Ae!==r?(Dt=N,K=ve(K),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r;return N}function pg(){var N,K,te,Ae,ze,gt,ur,gr,hn,ri,Ni;for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();if(K!==r)if(t.charCodeAt(G)===40?(te=Ee,G++):(te=r,lt===0&&mt(de)),te!==r){for(Ae=[],ze=kt();ze!==r;)Ae.push(ze),ze=kt();if(Ae!==r)if(ze=vu(),ze!==r){for(gt=[],ur=kt();ur!==r;)gt.push(ur),ur=kt();if(gt!==r)if(t.charCodeAt(G)===41?(ur=ne,G++):(ur=r,lt===0&&mt(Z)),ur!==r){for(gr=[],hn=kt();hn!==r;)gr.push(hn),hn=kt();if(gr!==r){for(hn=[],ri=Ya();ri!==r;)hn.push(ri),ri=Ya();if(hn!==r){for(ri=[],Ni=kt();Ni!==r;)ri.push(Ni),Ni=kt();ri!==r?(Dt=N,K=me(ze,hn),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;if(N===r){for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();if(K!==r)if(t.charCodeAt(G)===123?(te=be,G++):(te=r,lt===0&&mt(ut)),te!==r){for(Ae=[],ze=kt();ze!==r;)Ae.push(ze),ze=kt();if(Ae!==r)if(ze=vu(),ze!==r){for(gt=[],ur=kt();ur!==r;)gt.push(ur),ur=kt();if(gt!==r)if(t.charCodeAt(G)===125?(ur=H,G++):(ur=r,lt===0&&mt(yt)),ur!==r){for(gr=[],hn=kt();hn!==r;)gr.push(hn),hn=kt();if(gr!==r){for(hn=[],ri=Ya();ri!==r;)hn.push(ri),ri=Ya();if(hn!==r){for(ri=[],Ni=kt();Ni!==r;)ri.push(Ni),Ni=kt();ri!==r?(Dt=N,K=Me(ze,hn),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r}else G=N,N=r;else G=N,N=r;if(N===r){for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();if(K!==r){for(te=[],Ae=Su();Ae!==r;)te.push(Ae),Ae=Su();if(te!==r){for(Ae=[],ze=kt();ze!==r;)Ae.push(ze),ze=kt();if(Ae!==r){if(ze=[],gt=gp(),gt!==r)for(;gt!==r;)ze.push(gt),gt=gp();else ze=r;if(ze!==r){for(gt=[],ur=kt();ur!==r;)gt.push(ur),ur=kt();gt!==r?(Dt=N,K=Te(te,ze),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r}else G=N,N=r}else G=N,N=r;if(N===r){for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();if(K!==r){if(te=[],Ae=Su(),Ae!==r)for(;Ae!==r;)te.push(Ae),Ae=Su();else te=r;if(te!==r){for(Ae=[],ze=kt();ze!==r;)Ae.push(ze),ze=kt();Ae!==r?(Dt=N,K=Qe(te),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r}}}return N}function LA(){var N,K,te,Ae,ze;for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();if(K!==r){if(te=[],Ae=dp(),Ae!==r)for(;Ae!==r;)te.push(Ae),Ae=dp();else te=r;if(te!==r){for(Ae=[],ze=kt();ze!==r;)Ae.push(ze),ze=kt();Ae!==r?(Dt=N,K=_e(te),N=K):(G=N,N=r)}else G=N,N=r}else G=N,N=r;return N}function gp(){var N,K,te;for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();if(K!==r?(te=Ya(),te!==r?(Dt=N,K=qe(te),N=K):(G=N,N=r)):(G=N,N=r),N===r){for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();K!==r?(te=dp(),te!==r?(Dt=N,K=qe(te),N=K):(G=N,N=r)):(G=N,N=r)}return N}function Ya(){var N,K,te,Ae,ze;for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();return K!==r?(At.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(Oe)),te===r&&(te=null),te!==r?(Ae=hg(),Ae!==r?(ze=dp(),ze!==r?(Dt=N,K=x(te,Ae,ze),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function hg(){var N;return t.substr(G,2)===I?(N=I,G+=2):(N=r,lt===0&&mt(P)),N===r&&(t.substr(G,2)===y?(N=y,G+=2):(N=r,lt===0&&mt(F)),N===r&&(t.charCodeAt(G)===62?(N=z,G++):(N=r,lt===0&&mt(X)),N===r&&(t.substr(G,3)===$?(N=$,G+=3):(N=r,lt===0&&mt(ie)),N===r&&(t.substr(G,2)===ke?(N=ke,G+=2):(N=r,lt===0&&mt(Ne)),N===r&&(t.charCodeAt(G)===60?(N=st,G++):(N=r,lt===0&&mt(ht))))))),N}function dp(){var N,K,te;for(N=G,K=[],te=kt();te!==r;)K.push(te),te=kt();return K!==r?(te=_o(),te!==r?(Dt=N,K=qe(te),N=K):(G=N,N=r)):(G=N,N=r),N}function _o(){var N,K,te;if(N=G,K=[],te=Es(),te!==r)for(;te!==r;)K.push(te),te=Es();else K=r;return K!==r&&(Dt=N,K=Ut(K)),N=K,N}function Es(){var N,K;return N=G,K=Ei(),K!==r&&(Dt=N,K=Xt(K)),N=K,N===r&&(N=G,K=Rm(),K!==r&&(Dt=N,K=Xt(K)),N=K,N===r&&(N=G,K=Tm(),K!==r&&(Dt=N,K=Xt(K)),N=K,N===r&&(N=G,K=Ho(),K!==r&&(Dt=N,K=Xt(K)),N=K))),N}function Ei(){var N,K,te,Ae;return N=G,t.substr(G,2)===xt?(K=xt,G+=2):(K=r,lt===0&&mt(tn)),K!==r?(te=rn(),te!==r?(t.charCodeAt(G)===39?(Ae=Dr,G++):(Ae=r,lt===0&&mt(fr)),Ae!==r?(Dt=N,K=Br(te),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function Rm(){var N,K,te,Ae;return N=G,t.charCodeAt(G)===39?(K=Dr,G++):(K=r,lt===0&&mt(fr)),K!==r?(te=yp(),te!==r?(t.charCodeAt(G)===39?(Ae=Dr,G++):(Ae=r,lt===0&&mt(fr)),Ae!==r?(Dt=N,K=Br(te),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function Tm(){var N,K,te,Ae;if(N=G,t.substr(G,2)===jr?(K=jr,G+=2):(K=r,lt===0&&mt(Hn)),K!==r&&(Dt=N,K=bs()),N=K,N===r)if(N=G,t.charCodeAt(G)===34?(K=ki,G++):(K=r,lt===0&&mt(gs)),K!==r){for(te=[],Ae=OA();Ae!==r;)te.push(Ae),Ae=OA();te!==r?(t.charCodeAt(G)===34?(Ae=ki,G++):(Ae=r,lt===0&&mt(gs)),Ae!==r?(Dt=N,K=to(te),N=K):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;return N}function Ho(){var N,K,te;if(N=G,K=[],te=mp(),te!==r)for(;te!==r;)K.push(te),te=mp();else K=r;return K!==r&&(Dt=N,K=to(K)),N=K,N}function OA(){var N,K;return N=G,K=Hr(),K!==r&&(Dt=N,K=Di(K)),N=K,N===r&&(N=G,K=Ep(),K!==r&&(Dt=N,K=Qs(K)),N=K,N===r&&(N=G,K=bc(),K!==r&&(Dt=N,K=ro(K)),N=K,N===r&&(N=G,K=gg(),K!==r&&(Dt=N,K=hc(K)),N=K))),N}function mp(){var N,K;return N=G,K=Hr(),K!==r&&(Dt=N,K=gu(K)),N=K,N===r&&(N=G,K=Ep(),K!==r&&(Dt=N,K=cp(K)),N=K,N===r&&(N=G,K=bc(),K!==r&&(Dt=N,K=up(K)),N=K,N===r&&(N=G,K=AI(),K!==r&&(Dt=N,K=ks(K)),N=K,N===r&&(N=G,K=ha(),K!==r&&(Dt=N,K=hc(K)),N=K)))),N}function yp(){var N,K,te;for(N=G,K=[],Cn.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(no));te!==r;)K.push(te),Cn.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(no));return K!==r&&(Dt=N,K=Fs(K)),N=K,N}function gg(){var N,K,te;if(N=G,K=[],te=pa(),te===r&&(Cl.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(Il))),te!==r)for(;te!==r;)K.push(te),te=pa(),te===r&&(Cl.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(Il)));else K=r;return K!==r&&(Dt=N,K=Fs(K)),N=K,N}function pa(){var N,K,te;return N=G,t.substr(G,2)===io?(K=io,G+=2):(K=r,lt===0&&mt(Ue)),K!==r&&(Dt=N,K=Fn()),N=K,N===r&&(N=G,t.charCodeAt(G)===92?(K=Fi,G++):(K=r,lt===0&&mt(Rn)),K!==r?(Ui.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(Zt)),te!==r?(Dt=N,K=Ri(te),N=K):(G=N,N=r)):(G=N,N=r)),N}function rn(){var N,K,te;for(N=G,K=[],te=co(),te===r&&(Cn.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(no)));te!==r;)K.push(te),te=co(),te===r&&(Cn.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(no)));return K!==r&&(Dt=N,K=Fs(K)),N=K,N}function co(){var N,K,te;return N=G,t.substr(G,2)===$n?(K=$n,G+=2):(K=r,lt===0&&mt(Ua)),K!==r&&(Dt=N,K=$t()),N=K,N===r&&(N=G,t.substr(G,2)===gc?(K=gc,G+=2):(K=r,lt===0&&mt(du)),K!==r&&(Dt=N,K=dc()),N=K,N===r&&(N=G,t.charCodeAt(G)===92?(K=Fi,G++):(K=r,lt===0&&mt(Rn)),K!==r?(wl.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(xA)),te!==r?(Dt=N,K=mu(),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===Ce?(K=Ce,G+=2):(K=r,lt===0&&mt(Rt)),K!==r&&(Dt=N,K=mc()),N=K,N===r&&(N=G,t.substr(G,2)===_i?(K=_i,G+=2):(K=r,lt===0&&mt(yu)),K!==r&&(Dt=N,K=qt()),N=K,N===r&&(N=G,t.substr(G,2)===Bl?(K=Bl,G+=2):(K=r,lt===0&&mt(bA)),K!==r&&(Dt=N,K=Ap()),N=K,N===r&&(N=G,t.substr(G,2)===yc?(K=yc,G+=2):(K=r,lt===0&&mt(QA)),K!==r&&(Dt=N,K=Dn()),N=K,N===r&&(N=G,t.substr(G,2)===ui?(K=ui,G+=2):(K=r,lt===0&&mt(Ec)),K!==r&&(Dt=N,K=kA()),N=K,N===r&&(N=G,t.charCodeAt(G)===92?(K=Fi,G++):(K=r,lt===0&&mt(Rn)),K!==r?(na.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(Hi)),te!==r?(Dt=N,K=Ri(te),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=MA()))))))))),N}function MA(){var N,K,te,Ae,ze,gt,ur,gr,hn,ri,Ni,Eg;return N=G,t.charCodeAt(G)===92?(K=Fi,G++):(K=r,lt===0&&mt(Rn)),K!==r?(te=Ka(),te!==r?(Dt=N,K=Mo(te),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===$e?(K=$e,G+=2):(K=r,lt===0&&mt(so)),K!==r?(te=G,Ae=G,ze=Ka(),ze!==r?(gt=ti(),gt!==r?(ze=[ze,gt],Ae=ze):(G=Ae,Ae=r)):(G=Ae,Ae=r),Ae===r&&(Ae=Ka()),Ae!==r?te=t.substring(te,G):te=Ae,te!==r?(Dt=N,K=Mo(te),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===vl?(K=vl,G+=2):(K=r,lt===0&&mt(Eu)),K!==r?(te=G,Ae=G,ze=ti(),ze!==r?(gt=ti(),gt!==r?(ur=ti(),ur!==r?(gr=ti(),gr!==r?(ze=[ze,gt,ur,gr],Ae=ze):(G=Ae,Ae=r)):(G=Ae,Ae=r)):(G=Ae,Ae=r)):(G=Ae,Ae=r),Ae!==r?te=t.substring(te,G):te=Ae,te!==r?(Dt=N,K=Mo(te),N=K):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===qi?(K=qi,G+=2):(K=r,lt===0&&mt(Cu)),K!==r?(te=G,Ae=G,ze=ti(),ze!==r?(gt=ti(),gt!==r?(ur=ti(),ur!==r?(gr=ti(),gr!==r?(hn=ti(),hn!==r?(ri=ti(),ri!==r?(Ni=ti(),Ni!==r?(Eg=ti(),Eg!==r?(ze=[ze,gt,ur,gr,hn,ri,Ni,Eg],Ae=ze):(G=Ae,Ae=r)):(G=Ae,Ae=r)):(G=Ae,Ae=r)):(G=Ae,Ae=r)):(G=Ae,Ae=r)):(G=Ae,Ae=r)):(G=Ae,Ae=r)):(G=Ae,Ae=r),Ae!==r?te=t.substring(te,G):te=Ae,te!==r?(Dt=N,K=FA(te),N=K):(G=N,N=r)):(G=N,N=r)))),N}function Ka(){var N;return Ha.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,lt===0&&mt(Cc)),N}function ti(){var N;return ds.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,lt===0&&mt(Ot)),N}function ha(){var N,K,te,Ae,ze;if(N=G,K=[],te=G,t.charCodeAt(G)===92?(Ae=Fi,G++):(Ae=r,lt===0&&mt(Rn)),Ae!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,lt===0&&mt(Sn)),ze!==r?(Dt=te,Ae=Ri(ze),te=Ae):(G=te,te=r)):(G=te,te=r),te===r&&(te=G,t.substr(G,2)===di?(Ae=di,G+=2):(Ae=r,lt===0&&mt(ia)),Ae!==r&&(Dt=te,Ae=oo()),te=Ae,te===r&&(te=G,Ae=G,lt++,ze=Nm(),lt--,ze===r?Ae=void 0:(G=Ae,Ae=r),Ae!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,lt===0&&mt(Sn)),ze!==r?(Dt=te,Ae=Ri(ze),te=Ae):(G=te,te=r)):(G=te,te=r))),te!==r)for(;te!==r;)K.push(te),te=G,t.charCodeAt(G)===92?(Ae=Fi,G++):(Ae=r,lt===0&&mt(Rn)),Ae!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,lt===0&&mt(Sn)),ze!==r?(Dt=te,Ae=Ri(ze),te=Ae):(G=te,te=r)):(G=te,te=r),te===r&&(te=G,t.substr(G,2)===di?(Ae=di,G+=2):(Ae=r,lt===0&&mt(ia)),Ae!==r&&(Dt=te,Ae=oo()),te=Ae,te===r&&(te=G,Ae=G,lt++,ze=Nm(),lt--,ze===r?Ae=void 0:(G=Ae,Ae=r),Ae!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,lt===0&&mt(Sn)),ze!==r?(Dt=te,Ae=Ri(ze),te=Ae):(G=te,te=r)):(G=te,te=r)));else K=r;return K!==r&&(Dt=N,K=Fs(K)),N=K,N}function xc(){var N,K,te,Ae,ze,gt;if(N=G,t.charCodeAt(G)===45?(K=Rs,G++):(K=r,lt===0&&mt(sa)),K===r&&(t.charCodeAt(G)===43?(K=oa,G++):(K=r,lt===0&&mt(Uo))),K===r&&(K=null),K!==r){if(te=[],At.test(t.charAt(G))?(Ae=t.charAt(G),G++):(Ae=r,lt===0&&mt(Oe)),Ae!==r)for(;Ae!==r;)te.push(Ae),At.test(t.charAt(G))?(Ae=t.charAt(G),G++):(Ae=r,lt===0&&mt(Oe));else te=r;if(te!==r)if(t.charCodeAt(G)===46?(Ae=Zi,G++):(Ae=r,lt===0&&mt(Ts)),Ae!==r){if(ze=[],At.test(t.charAt(G))?(gt=t.charAt(G),G++):(gt=r,lt===0&&mt(Oe)),gt!==r)for(;gt!==r;)ze.push(gt),At.test(t.charAt(G))?(gt=t.charAt(G),G++):(gt=r,lt===0&&mt(Oe));else ze=r;ze!==r?(Dt=N,K=Ns(K,te,ze),N=K):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;if(N===r){if(N=G,t.charCodeAt(G)===45?(K=Rs,G++):(K=r,lt===0&&mt(sa)),K===r&&(t.charCodeAt(G)===43?(K=oa,G++):(K=r,lt===0&&mt(Uo))),K===r&&(K=null),K!==r){if(te=[],At.test(t.charAt(G))?(Ae=t.charAt(G),G++):(Ae=r,lt===0&&mt(Oe)),Ae!==r)for(;Ae!==r;)te.push(Ae),At.test(t.charAt(G))?(Ae=t.charAt(G),G++):(Ae=r,lt===0&&mt(Oe));else te=r;te!==r?(Dt=N,K=Ls(K,te),N=K):(G=N,N=r)}else G=N,N=r;if(N===r&&(N=G,K=bc(),K!==r&&(Dt=N,K=ao(K)),N=K,N===r&&(N=G,K=Va(),K!==r&&(Dt=N,K=Yn(K)),N=K,N===r)))if(N=G,t.charCodeAt(G)===40?(K=Ee,G++):(K=r,lt===0&&mt(de)),K!==r){for(te=[],Ae=kt();Ae!==r;)te.push(Ae),Ae=kt();if(te!==r)if(Ae=ts(),Ae!==r){for(ze=[],gt=kt();gt!==r;)ze.push(gt),gt=kt();ze!==r?(t.charCodeAt(G)===41?(gt=ne,G++):(gt=r,lt===0&&mt(Z)),gt!==r?(Dt=N,K=qn(Ae),N=K):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r}return N}function Pl(){var N,K,te,Ae,ze,gt,ur,gr;if(N=G,K=xc(),K!==r){for(te=[],Ae=G,ze=[],gt=kt();gt!==r;)ze.push(gt),gt=kt();if(ze!==r)if(t.charCodeAt(G)===42?(gt=$i,G++):(gt=r,lt===0&&mt(es)),gt===r&&(t.charCodeAt(G)===47?(gt=mi,G++):(gt=r,lt===0&&mt(qa))),gt!==r){for(ur=[],gr=kt();gr!==r;)ur.push(gr),gr=kt();ur!==r?(gr=xc(),gr!==r?(Dt=Ae,ze=aa(K,gt,gr),Ae=ze):(G=Ae,Ae=r)):(G=Ae,Ae=r)}else G=Ae,Ae=r;else G=Ae,Ae=r;for(;Ae!==r;){for(te.push(Ae),Ae=G,ze=[],gt=kt();gt!==r;)ze.push(gt),gt=kt();if(ze!==r)if(t.charCodeAt(G)===42?(gt=$i,G++):(gt=r,lt===0&&mt(es)),gt===r&&(t.charCodeAt(G)===47?(gt=mi,G++):(gt=r,lt===0&&mt(qa))),gt!==r){for(ur=[],gr=kt();gr!==r;)ur.push(gr),gr=kt();ur!==r?(gr=xc(),gr!==r?(Dt=Ae,ze=aa(K,gt,gr),Ae=ze):(G=Ae,Ae=r)):(G=Ae,Ae=r)}else G=Ae,Ae=r;else G=Ae,Ae=r}te!==r?(Dt=N,K=ee(K,te),N=K):(G=N,N=r)}else G=N,N=r;return N}function ts(){var N,K,te,Ae,ze,gt,ur,gr;if(N=G,K=Pl(),K!==r){for(te=[],Ae=G,ze=[],gt=kt();gt!==r;)ze.push(gt),gt=kt();if(ze!==r)if(t.charCodeAt(G)===43?(gt=oa,G++):(gt=r,lt===0&&mt(Uo)),gt===r&&(t.charCodeAt(G)===45?(gt=Rs,G++):(gt=r,lt===0&&mt(sa))),gt!==r){for(ur=[],gr=kt();gr!==r;)ur.push(gr),gr=kt();ur!==r?(gr=Pl(),gr!==r?(Dt=Ae,ze=we(K,gt,gr),Ae=ze):(G=Ae,Ae=r)):(G=Ae,Ae=r)}else G=Ae,Ae=r;else G=Ae,Ae=r;for(;Ae!==r;){for(te.push(Ae),Ae=G,ze=[],gt=kt();gt!==r;)ze.push(gt),gt=kt();if(ze!==r)if(t.charCodeAt(G)===43?(gt=oa,G++):(gt=r,lt===0&&mt(Uo)),gt===r&&(t.charCodeAt(G)===45?(gt=Rs,G++):(gt=r,lt===0&&mt(sa))),gt!==r){for(ur=[],gr=kt();gr!==r;)ur.push(gr),gr=kt();ur!==r?(gr=Pl(),gr!==r?(Dt=Ae,ze=we(K,gt,gr),Ae=ze):(G=Ae,Ae=r)):(G=Ae,Ae=r)}else G=Ae,Ae=r;else G=Ae,Ae=r}te!==r?(Dt=N,K=ee(K,te),N=K):(G=N,N=r)}else G=N,N=r;return N}function Hr(){var N,K,te,Ae,ze,gt;if(N=G,t.substr(G,3)===je?(K=je,G+=3):(K=r,lt===0&&mt(Be)),K!==r){for(te=[],Ae=kt();Ae!==r;)te.push(Ae),Ae=kt();if(te!==r)if(Ae=ts(),Ae!==r){for(ze=[],gt=kt();gt!==r;)ze.push(gt),gt=kt();ze!==r?(t.substr(G,2)===xe?(gt=xe,G+=2):(gt=r,lt===0&&mt(Ve)),gt!==r?(Dt=N,K=vt(Ae),N=K):(G=N,N=r)):(G=N,N=r)}else G=N,N=r;else G=N,N=r}else G=N,N=r;return N}function Ep(){var N,K,te,Ae;return N=G,t.substr(G,2)===tr?(K=tr,G+=2):(K=r,lt===0&&mt(Zr)),K!==r?(te=vu(),te!==r?(t.charCodeAt(G)===41?(Ae=ne,G++):(Ae=r,lt===0&&mt(Z)),Ae!==r?(Dt=N,K=Tn(te),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N}function bc(){var N,K,te,Ae,ze,gt;return N=G,t.substr(G,2)===_r?(K=_r,G+=2):(K=r,lt===0&&mt(ei)),K!==r?(te=Va(),te!==r?(t.substr(G,2)===Ti?(Ae=Ti,G+=2):(Ae=r,lt===0&&mt(Kn)),Ae!==r?(ze=LA(),ze!==r?(t.charCodeAt(G)===125?(gt=H,G++):(gt=r,lt===0&&mt(yt)),gt!==r?(Dt=N,K=ja(te,ze),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===_r?(K=_r,G+=2):(K=r,lt===0&&mt(ei)),K!==r?(te=Va(),te!==r?(t.substr(G,3)===la?(Ae=la,G+=3):(Ae=r,lt===0&&mt(yi)),Ae!==r?(Dt=N,K=ca(te),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===_r?(K=_r,G+=2):(K=r,lt===0&&mt(ei)),K!==r?(te=Va(),te!==r?(t.substr(G,2)===Ga?(Ae=Ga,G+=2):(Ae=r,lt===0&&mt(lo)),Ae!==r?(ze=LA(),ze!==r?(t.charCodeAt(G)===125?(gt=H,G++):(gt=r,lt===0&&mt(yt)),gt!==r?(Dt=N,K=RA(te,ze),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===_r?(K=_r,G+=2):(K=r,lt===0&&mt(ei)),K!==r?(te=Va(),te!==r?(t.substr(G,3)===Ic?(Ae=Ic,G+=3):(Ae=r,lt===0&&mt(ua)),Ae!==r?(Dt=N,K=ng(te),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.substr(G,2)===_r?(K=_r,G+=2):(K=r,lt===0&&mt(ei)),K!==r?(te=Va(),te!==r?(t.charCodeAt(G)===125?(Ae=H,G++):(Ae=r,lt===0&&mt(yt)),Ae!==r?(Dt=N,K=wc(te),N=K):(G=N,N=r)):(G=N,N=r)):(G=N,N=r),N===r&&(N=G,t.charCodeAt(G)===36?(K=bm,G++):(K=r,lt===0&&mt(ig)),K!==r?(te=Va(),te!==r?(Dt=N,K=wc(te),N=K):(G=N,N=r)):(G=N,N=r)))))),N}function AI(){var N,K,te;return N=G,K=dg(),K!==r?(Dt=G,te=Vn(K),te?te=void 0:te=r,te!==r?(Dt=N,K=fp(K),N=K):(G=N,N=r)):(G=N,N=r),N}function dg(){var N,K,te,Ae,ze;if(N=G,K=[],te=G,Ae=G,lt++,ze=yg(),lt--,ze===r?Ae=void 0:(G=Ae,Ae=r),Ae!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,lt===0&&mt(Sn)),ze!==r?(Dt=te,Ae=Ri(ze),te=Ae):(G=te,te=r)):(G=te,te=r),te!==r)for(;te!==r;)K.push(te),te=G,Ae=G,lt++,ze=yg(),lt--,ze===r?Ae=void 0:(G=Ae,Ae=r),Ae!==r?(t.length>G?(ze=t.charAt(G),G++):(ze=r,lt===0&&mt(Sn)),ze!==r?(Dt=te,Ae=Ri(ze),te=Ae):(G=te,te=r)):(G=te,te=r);else K=r;return K!==r&&(Dt=N,K=Fs(K)),N=K,N}function mg(){var N,K,te;if(N=G,K=[],sg.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(TA)),te!==r)for(;te!==r;)K.push(te),sg.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(TA));else K=r;return K!==r&&(Dt=N,K=Os()),N=K,N}function Va(){var N,K,te;if(N=G,K=[],Iu.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(Wa)),te!==r)for(;te!==r;)K.push(te),Iu.test(t.charAt(G))?(te=t.charAt(G),G++):(te=r,lt===0&&mt(Wa));else K=r;return K!==r&&(Dt=N,K=Os()),N=K,N}function Nm(){var N;return ji.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,lt===0&&mt(Aa)),N}function yg(){var N;return wu.test(t.charAt(G))?(N=t.charAt(G),G++):(N=r,lt===0&&mt(ms)),N}function kt(){var N,K;if(N=[],Bc.test(t.charAt(G))?(K=t.charAt(G),G++):(K=r,lt===0&&mt(vc)),K!==r)for(;K!==r;)N.push(K),Bc.test(t.charAt(G))?(K=t.charAt(G),G++):(K=r,lt===0&&mt(vc));else N=r;return N}if(Bu=a(),Bu!==r&&G===t.length)return Bu;throw Bu!==r&&G<t.length&&mt(lg()),ug(Dc,Si<t.length?t.charAt(Si):null,Si<t.length?Sc(Si,Si+1):Sc(Si,Si))}oY.exports={SyntaxError:Hg,parse:L8e}});function PD(t,e={isGlobPattern:()=>!1}){try{return(0,lY.parse)(t,e)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function fy(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:o},a)=>`${xD(r)}${o===";"?a!==t.length-1||e?";":"":" &"}`).join(" ")}function xD(t){return`${py(t.chain)}${t.then?` ${cT(t.then)}`:""}`}function cT(t){return`${t.type} ${xD(t.line)}`}function py(t){return`${AT(t)}${t.then?` ${uT(t.then)}`:""}`}function uT(t){return`${t.type} ${py(t.chain)}`}function AT(t){switch(t.type){case"command":return`${t.envs.length>0?`${t.envs.map(e=>SD(e)).join(" ")} `:""}${t.args.map(e=>fT(e)).join(" ")}`;case"subshell":return`(${fy(t.subshell)})${t.args.length>0?` ${t.args.map(e=>qI(e)).join(" ")}`:""}`;case"group":return`{ ${fy(t.group,{endSemicolon:!0})} }${t.args.length>0?` ${t.args.map(e=>qI(e)).join(" ")}`:""}`;case"envs":return t.envs.map(e=>SD(e)).join(" ");default:throw new Error(`Unsupported command type: "${t.type}"`)}}function SD(t){return`${t.name}=${t.args[0]?qg(t.args[0]):""}`}function fT(t){switch(t.type){case"redirection":return qI(t);case"argument":return qg(t);default:throw new Error(`Unsupported argument type: "${t.type}"`)}}function qI(t){return`${t.subtype} ${t.args.map(e=>qg(e)).join(" ")}`}function qg(t){return t.segments.map(e=>pT(e)).join("")}function pT(t){let e=(o,a)=>a?`"${o}"`:o,r=o=>o===""?'""':o.match(/[(){}<>$|&; \t"']/)?`$'${o.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\f/g,"\\f").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t").replace(/\v/g,"\\v").replace(/\0/g,"\\0")}'`:o;switch(t.type){case"text":return r(t.text);case"glob":return t.pattern;case"shell":return e(`\${${fy(t.shell)}}`,t.quoted);case"variable":return e(typeof t.defaultValue>"u"?typeof t.alternativeValue>"u"?`\${${t.name}}`:t.alternativeValue.length===0?`\${${t.name}:+}`:`\${${t.name}:+${t.alternativeValue.map(o=>qg(o)).join(" ")}}`:t.defaultValue.length===0?`\${${t.name}:-}`:`\${${t.name}:-${t.defaultValue.map(o=>qg(o)).join(" ")}}`,t.quoted);case"arithmetic":return`$(( ${bD(t.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: "${t.type}"`)}}function bD(t){let e=a=>{switch(a){case"addition":return"+";case"subtraction":return"-";case"multiplication":return"*";case"division":return"/";default:throw new Error(`Can't extract operator from arithmetic expression of type "${a}"`)}},r=(a,n)=>n?`( ${a} )`:a,o=a=>r(bD(a),!["number","variable"].includes(a.type));switch(t.type){case"number":return String(t.value);case"variable":return t.name;default:return`${o(t.left)} ${e(t.type)} ${o(t.right)}`}}var lY,cY=dt(()=>{lY=tt(aY())});var AY=U((xxt,uY)=>{"use strict";function O8e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function jg(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,jg)}O8e(jg,Error);jg.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var C="",w;for(w=0;w<h.parts.length;w++)C+=h.parts[w]instanceof Array?n(h.parts[w][0])+"-"+n(h.parts[w][1]):n(h.parts[w]);return"["+(h.inverted?"^":"")+C+"]"},any:function(h){return"any character"},end:function(h){return"end of input"},other:function(h){return h.description}};function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(C){return"\\x0"+o(C)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(C){return"\\x"+o(C)})}function n(h){return h.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(C){return"\\x0"+o(C)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(C){return"\\x"+o(C)})}function u(h){return r[h.type](h)}function A(h){var C=new Array(h.length),w,v;for(w=0;w<h.length;w++)C[w]=u(h[w]);if(C.sort(),C.length>0){for(w=1,v=1;w<C.length;w++)C[w-1]!==C[w]&&(C[v]=C[w],v++);C.length=v}switch(C.length){case 1:return C[0];case 2:return C[0]+" or "+C[1];default:return C.slice(0,-1).join(", ")+", or "+C[C.length-1]}}function p(h){return h?'"'+a(h)+'"':"end of input"}return"Expected "+A(t)+" but "+p(e)+" found."};function M8e(t,e){e=e!==void 0?e:{};var r={},o={resolution:Te},a=Te,n="/",u=Ee("/",!1),A=function(Oe,x){return{from:Oe,descriptor:x}},p=function(Oe){return{descriptor:Oe}},h="@",C=Ee("@",!1),w=function(Oe,x){return{fullName:Oe,description:x}},v=function(Oe){return{fullName:Oe}},b=function(){return le()},E=/^[^\/@]/,R=de(["/","@"],!0,!1),L=/^[^\/]/,_=de(["/"],!0,!1),V=0,re=0,ae=[{line:1,column:1}],he=0,pe=[],De=0,ge;if("startRule"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=o[e.startRule]}function le(){return t.substring(re,V)}function Pe(){return ut(re,V)}function g(Oe,x){throw x=x!==void 0?x:ut(re,V),Me([me(Oe)],t.substring(re,V),x)}function ve(Oe,x){throw x=x!==void 0?x:ut(re,V),yt(Oe,x)}function Ee(Oe,x){return{type:"literal",text:Oe,ignoreCase:x}}function de(Oe,x,I){return{type:"class",parts:Oe,inverted:x,ignoreCase:I}}function ne(){return{type:"any"}}function Z(){return{type:"end"}}function me(Oe){return{type:"other",description:Oe}}function be(Oe){var x=ae[Oe],I;if(x)return x;for(I=Oe-1;!ae[I];)I--;for(x=ae[I],x={line:x.line,column:x.column};I<Oe;)t.charCodeAt(I)===10?(x.line++,x.column=1):x.column++,I++;return ae[Oe]=x,x}function ut(Oe,x){var I=be(Oe),P=be(x);return{start:{offset:Oe,line:I.line,column:I.column},end:{offset:x,line:P.line,column:P.column}}}function H(Oe){V<he||(V>he&&(he=V,pe=[]),pe.push(Oe))}function yt(Oe,x){return new jg(Oe,null,null,x)}function Me(Oe,x,I){return new jg(jg.buildMessage(Oe,x),Oe,x,I)}function Te(){var Oe,x,I,P;return Oe=V,x=Qe(),x!==r?(t.charCodeAt(V)===47?(I=n,V++):(I=r,De===0&&H(u)),I!==r?(P=Qe(),P!==r?(re=Oe,x=A(x,P),Oe=x):(V=Oe,Oe=r)):(V=Oe,Oe=r)):(V=Oe,Oe=r),Oe===r&&(Oe=V,x=Qe(),x!==r&&(re=Oe,x=p(x)),Oe=x),Oe}function Qe(){var Oe,x,I,P;return Oe=V,x=_e(),x!==r?(t.charCodeAt(V)===64?(I=h,V++):(I=r,De===0&&H(C)),I!==r?(P=At(),P!==r?(re=Oe,x=w(x,P),Oe=x):(V=Oe,Oe=r)):(V=Oe,Oe=r)):(V=Oe,Oe=r),Oe===r&&(Oe=V,x=_e(),x!==r&&(re=Oe,x=v(x)),Oe=x),Oe}function _e(){var Oe,x,I,P,y;return Oe=V,t.charCodeAt(V)===64?(x=h,V++):(x=r,De===0&&H(C)),x!==r?(I=qe(),I!==r?(t.charCodeAt(V)===47?(P=n,V++):(P=r,De===0&&H(u)),P!==r?(y=qe(),y!==r?(re=Oe,x=b(),Oe=x):(V=Oe,Oe=r)):(V=Oe,Oe=r)):(V=Oe,Oe=r)):(V=Oe,Oe=r),Oe===r&&(Oe=V,x=qe(),x!==r&&(re=Oe,x=b()),Oe=x),Oe}function qe(){var Oe,x,I;if(Oe=V,x=[],E.test(t.charAt(V))?(I=t.charAt(V),V++):(I=r,De===0&&H(R)),I!==r)for(;I!==r;)x.push(I),E.test(t.charAt(V))?(I=t.charAt(V),V++):(I=r,De===0&&H(R));else x=r;return x!==r&&(re=Oe,x=b()),Oe=x,Oe}function At(){var Oe,x,I;if(Oe=V,x=[],L.test(t.charAt(V))?(I=t.charAt(V),V++):(I=r,De===0&&H(_)),I!==r)for(;I!==r;)x.push(I),L.test(t.charAt(V))?(I=t.charAt(V),V++):(I=r,De===0&&H(_));else x=r;return x!==r&&(re=Oe,x=b()),Oe=x,Oe}if(ge=a(),ge!==r&&V===t.length)return ge;throw ge!==r&&V<t.length&&H(Z()),Me(pe,he<t.length?t.charAt(he):null,he<t.length?ut(he,he+1):ut(he,he))}uY.exports={SyntaxError:jg,parse:M8e}});function QD(t){let e=t.match(/^\*{1,2}\/(.*)/);if(e)throw new Error(`The override for '${t}' includes a glob pattern. Glob patterns have been removed since their behaviours don't match what you'd expect. Set the override to '${e[1]}' instead.`);try{return(0,fY.parse)(t)}catch(r){throw r.location&&(r.message=r.message.replace(/(\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function kD(t){let e="";return t.from&&(e+=t.from.fullName,t.from.description&&(e+=`@${t.from.description}`),e+="/"),e+=t.descriptor.fullName,t.descriptor.description&&(e+=`@${t.descriptor.description}`),e}var fY,pY=dt(()=>{fY=tt(AY())});var Wg=U((Qxt,Gg)=>{"use strict";function hY(t){return typeof t>"u"||t===null}function U8e(t){return typeof t=="object"&&t!==null}function _8e(t){return Array.isArray(t)?t:hY(t)?[]:[t]}function H8e(t,e){var r,o,a,n;if(e)for(n=Object.keys(e),r=0,o=n.length;r<o;r+=1)a=n[r],t[a]=e[a];return t}function q8e(t,e){var r="",o;for(o=0;o<e;o+=1)r+=t;return r}function j8e(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}Gg.exports.isNothing=hY;Gg.exports.isObject=U8e;Gg.exports.toArray=_8e;Gg.exports.repeat=q8e;Gg.exports.isNegativeZero=j8e;Gg.exports.extend=H8e});var hy=U((kxt,gY)=>{"use strict";function jI(t,e){Error.call(this),this.name="YAMLException",this.reason=t,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}jI.prototype=Object.create(Error.prototype);jI.prototype.constructor=jI;jI.prototype.toString=function(e){var r=this.name+": ";return r+=this.reason||"(unknown reason)",!e&&this.mark&&(r+=" "+this.mark.toString()),r};gY.exports=jI});var yY=U((Fxt,mY)=>{"use strict";var dY=Wg();function hT(t,e,r,o,a){this.name=t,this.buffer=e,this.position=r,this.line=o,this.column=a}hT.prototype.getSnippet=function(e,r){var o,a,n,u,A;if(!this.buffer)return null;for(e=e||4,r=r||75,o="",a=this.position;a>0&&`\0\r |
13 | \x85\u2028\u2029`.indexOf(this.buffer.charAt(a-1))===-1;)if(a-=1,this.position-a>r/2-1){o=" ... ",a+=5;break}for(n="",u=this.position;u<this.buffer.length&&`\0\r | 13 | \x85\u2028\u2029`.indexOf(this.buffer.charAt(a-1))===-1;)if(a-=1,this.position-a>r/2-1){o=" ... ",a+=5;break}for(n="",u=this.position;u<this.buffer.length&&`\0\r |
14 | \x85\u2028\u2029`.indexOf(this.buffer.charAt(u))===-1;)if(u+=1,u-this.position>r/2-1){n=" ... ",u-=5;break}return A=this.buffer.slice(a,u),lY.repeat(" ",e)+o+A+n+` | 14 | \x85\u2028\u2029`.indexOf(this.buffer.charAt(u))===-1;)if(u+=1,u-this.position>r/2-1){n=" ... ",u-=5;break}return A=this.buffer.slice(a,u),dY.repeat(" ",e)+o+A+n+` |
15 | `+lY.repeat(" ",e+this.position-a+o.length)+"^"};AT.prototype.toString=function(e){var r,o="";return this.name&&(o+='in "'+this.name+'" '),o+="at line "+(this.line+1)+", column "+(this.column+1),e||(r=this.getSnippet(),r&&(o+=`: | 15 | `+dY.repeat(" ",e+this.position-a+o.length)+"^"};hT.prototype.toString=function(e){var r,o="";return this.name&&(o+='in "'+this.name+'" '),o+="at line "+(this.line+1)+", column "+(this.column+1),e||(r=this.getSnippet(),r&&(o+=`: |
16 | `+r)),o};cY.exports=AT});var as=U((hxt,fY)=>{"use strict";var AY=cy(),b8e=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],Q8e=["scalar","sequence","mapping"];function k8e(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(o){e[String(o)]=r})}),e}function F8e(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(b8e.indexOf(r)===-1)throw new AY('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=k8e(e.styleAliases||null),Q8e.indexOf(this.kind)===-1)throw new AY('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}fY.exports=F8e});var qg=U((gxt,hY)=>{"use strict";var pY=Hg(),BD=cy(),R8e=as();function fT(t,e,r){var o=[];return t.include.forEach(function(a){r=fT(a,e,r)}),t[e].forEach(function(a){r.forEach(function(n,u){n.tag===a.tag&&n.kind===a.kind&&o.push(u)}),r.push(a)}),r.filter(function(a,n){return o.indexOf(n)===-1})}function T8e(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;function o(a){t[a.kind][a.tag]=t.fallback[a.tag]=a}for(e=0,r=arguments.length;e<r;e+=1)arguments[e].forEach(o);return t}function uy(t){this.include=t.include||[],this.implicit=t.implicit||[],this.explicit=t.explicit||[],this.implicit.forEach(function(e){if(e.loadKind&&e.loadKind!=="scalar")throw new BD("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.")}),this.compiledImplicit=fT(this,"implicit",[]),this.compiledExplicit=fT(this,"explicit",[]),this.compiledTypeMap=T8e(this.compiledImplicit,this.compiledExplicit)}uy.DEFAULT=null;uy.create=function(){var e,r;switch(arguments.length){case 1:e=uy.DEFAULT,r=arguments[0];break;case 2:e=arguments[0],r=arguments[1];break;default:throw new BD("Wrong number of arguments for Schema.create function")}if(e=pY.toArray(e),r=pY.toArray(r),!e.every(function(o){return o instanceof uy}))throw new BD("Specified list of super schemas (or a single Schema object) contains a non-Schema object.");if(!r.every(function(o){return o instanceof R8e}))throw new BD("Specified list of YAML types (or a single Type object) contains a non-Type object.");return new uy({include:e,explicit:r})};hY.exports=uy});var dY=U((dxt,gY)=>{"use strict";var N8e=as();gY.exports=new N8e("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return t!==null?t:""}})});var yY=U((mxt,mY)=>{"use strict";var L8e=as();mY.exports=new L8e("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return t!==null?t:[]}})});var CY=U((yxt,EY)=>{"use strict";var O8e=as();EY.exports=new O8e("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return t!==null?t:{}}})});var vD=U((Ext,IY)=>{"use strict";var M8e=qg();IY.exports=new M8e({explicit:[dY(),yY(),CY()]})});var BY=U((Cxt,wY)=>{"use strict";var U8e=as();function _8e(t){if(t===null)return!0;var e=t.length;return e===1&&t==="~"||e===4&&(t==="null"||t==="Null"||t==="NULL")}function H8e(){return null}function q8e(t){return t===null}wY.exports=new U8e("tag:yaml.org,2002:null",{kind:"scalar",resolve:_8e,construct:H8e,predicate:q8e,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var DY=U((Ixt,vY)=>{"use strict";var j8e=as();function G8e(t){if(t===null)return!1;var e=t.length;return e===4&&(t==="true"||t==="True"||t==="TRUE")||e===5&&(t==="false"||t==="False"||t==="FALSE")}function W8e(t){return t==="true"||t==="True"||t==="TRUE"}function Y8e(t){return Object.prototype.toString.call(t)==="[object Boolean]"}vY.exports=new j8e("tag:yaml.org,2002:bool",{kind:"scalar",resolve:G8e,construct:W8e,predicate:Y8e,represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"})});var PY=U((wxt,SY)=>{"use strict";var K8e=Hg(),J8e=as();function V8e(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function z8e(t){return 48<=t&&t<=55}function X8e(t){return 48<=t&&t<=57}function Z8e(t){if(t===null)return!1;var e=t.length,r=0,o=!1,a;if(!e)return!1;if(a=t[r],(a==="-"||a==="+")&&(a=t[++r]),a==="0"){if(r+1===e)return!0;if(a=t[++r],a==="b"){for(r++;r<e;r++)if(a=t[r],a!=="_"){if(a!=="0"&&a!=="1")return!1;o=!0}return o&&a!=="_"}if(a==="x"){for(r++;r<e;r++)if(a=t[r],a!=="_"){if(!V8e(t.charCodeAt(r)))return!1;o=!0}return o&&a!=="_"}for(;r<e;r++)if(a=t[r],a!=="_"){if(!z8e(t.charCodeAt(r)))return!1;o=!0}return o&&a!=="_"}if(a==="_")return!1;for(;r<e;r++)if(a=t[r],a!=="_"){if(a===":")break;if(!X8e(t.charCodeAt(r)))return!1;o=!0}return!o||a==="_"?!1:a!==":"?!0:/^(:[0-5]?[0-9])+$/.test(t.slice(r))}function $8e(t){var e=t,r=1,o,a,n=[];return e.indexOf("_")!==-1&&(e=e.replace(/_/g,"")),o=e[0],(o==="-"||o==="+")&&(o==="-"&&(r=-1),e=e.slice(1),o=e[0]),e==="0"?0:o==="0"?e[1]==="b"?r*parseInt(e.slice(2),2):e[1]==="x"?r*parseInt(e,16):r*parseInt(e,8):e.indexOf(":")!==-1?(e.split(":").forEach(function(u){n.unshift(parseInt(u,10))}),e=0,a=1,n.forEach(function(u){e+=u*a,a*=60}),r*e):r*parseInt(e,10)}function eHe(t){return Object.prototype.toString.call(t)==="[object Number]"&&t%1===0&&!K8e.isNegativeZero(t)}SY.exports=new J8e("tag:yaml.org,2002:int",{kind:"scalar",resolve:Z8e,construct:$8e,predicate:eHe,represent:{binary:function(t){return t>=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0"+t.toString(8):"-0"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var QY=U((Bxt,bY)=>{"use strict";var xY=Hg(),tHe=as(),rHe=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function nHe(t){return!(t===null||!rHe.test(t)||t[t.length-1]==="_")}function iHe(t){var e,r,o,a;return e=t.replace(/_/g,"").toLowerCase(),r=e[0]==="-"?-1:1,a=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(n){a.unshift(parseFloat(n,10))}),e=0,o=1,a.forEach(function(n){e+=n*o,o*=60}),r*e):r*parseFloat(e,10)}var sHe=/^[-+]?[0-9]+e/;function oHe(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(xY.isNegativeZero(t))return"-0.0";return r=t.toString(10),sHe.test(r)?r.replace("e",".e"):r}function aHe(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||xY.isNegativeZero(t))}bY.exports=new tHe("tag:yaml.org,2002:float",{kind:"scalar",resolve:nHe,construct:iHe,predicate:aHe,represent:oHe,defaultStyle:"lowercase"})});var pT=U((vxt,kY)=>{"use strict";var lHe=qg();kY.exports=new lHe({include:[vD()],implicit:[BY(),DY(),PY(),QY()]})});var hT=U((Dxt,FY)=>{"use strict";var cHe=qg();FY.exports=new cHe({include:[pT()]})});var LY=U((Sxt,NY)=>{"use strict";var uHe=as(),RY=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),TY=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function AHe(t){return t===null?!1:RY.exec(t)!==null||TY.exec(t)!==null}function fHe(t){var e,r,o,a,n,u,A,p=0,h=null,C,w,v;if(e=RY.exec(t),e===null&&(e=TY.exec(t)),e===null)throw new Error("Date resolve error");if(r=+e[1],o=+e[2]-1,a=+e[3],!e[4])return new Date(Date.UTC(r,o,a));if(n=+e[4],u=+e[5],A=+e[6],e[7]){for(p=e[7].slice(0,3);p.length<3;)p+="0";p=+p}return e[9]&&(C=+e[10],w=+(e[11]||0),h=(C*60+w)*6e4,e[9]==="-"&&(h=-h)),v=new Date(Date.UTC(r,o,a,n,u,A,p)),h&&v.setTime(v.getTime()-h),v}function pHe(t){return t.toISOString()}NY.exports=new uHe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:AHe,construct:fHe,instanceOf:Date,represent:pHe})});var MY=U((Pxt,OY)=>{"use strict";var hHe=as();function gHe(t){return t==="<<"||t===null}OY.exports=new hHe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:gHe})});var HY=U((xxt,_Y)=>{"use strict";var jg;try{UY=Ie,jg=UY("buffer").Buffer}catch{}var UY,dHe=as(),gT=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= | 16 | `+r)),o};mY.exports=hT});var as=U((Rxt,CY)=>{"use strict";var EY=hy(),G8e=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],W8e=["scalar","sequence","mapping"];function Y8e(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(o){e[String(o)]=r})}),e}function K8e(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(G8e.indexOf(r)===-1)throw new EY('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=Y8e(e.styleAliases||null),W8e.indexOf(this.kind)===-1)throw new EY('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}CY.exports=K8e});var Yg=U((Txt,wY)=>{"use strict";var IY=Wg(),FD=hy(),V8e=as();function gT(t,e,r){var o=[];return t.include.forEach(function(a){r=gT(a,e,r)}),t[e].forEach(function(a){r.forEach(function(n,u){n.tag===a.tag&&n.kind===a.kind&&o.push(u)}),r.push(a)}),r.filter(function(a,n){return o.indexOf(n)===-1})}function J8e(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;function o(a){t[a.kind][a.tag]=t.fallback[a.tag]=a}for(e=0,r=arguments.length;e<r;e+=1)arguments[e].forEach(o);return t}function gy(t){this.include=t.include||[],this.implicit=t.implicit||[],this.explicit=t.explicit||[],this.implicit.forEach(function(e){if(e.loadKind&&e.loadKind!=="scalar")throw new FD("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.")}),this.compiledImplicit=gT(this,"implicit",[]),this.compiledExplicit=gT(this,"explicit",[]),this.compiledTypeMap=J8e(this.compiledImplicit,this.compiledExplicit)}gy.DEFAULT=null;gy.create=function(){var e,r;switch(arguments.length){case 1:e=gy.DEFAULT,r=arguments[0];break;case 2:e=arguments[0],r=arguments[1];break;default:throw new FD("Wrong number of arguments for Schema.create function")}if(e=IY.toArray(e),r=IY.toArray(r),!e.every(function(o){return o instanceof gy}))throw new FD("Specified list of super schemas (or a single Schema object) contains a non-Schema object.");if(!r.every(function(o){return o instanceof V8e}))throw new FD("Specified list of YAML types (or a single Type object) contains a non-Type object.");return new gy({include:e,explicit:r})};wY.exports=gy});var vY=U((Nxt,BY)=>{"use strict";var z8e=as();BY.exports=new z8e("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return t!==null?t:""}})});var SY=U((Lxt,DY)=>{"use strict";var X8e=as();DY.exports=new X8e("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return t!==null?t:[]}})});var xY=U((Oxt,PY)=>{"use strict";var Z8e=as();PY.exports=new Z8e("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return t!==null?t:{}}})});var RD=U((Mxt,bY)=>{"use strict";var $8e=Yg();bY.exports=new $8e({explicit:[vY(),SY(),xY()]})});var kY=U((Uxt,QY)=>{"use strict";var eHe=as();function tHe(t){if(t===null)return!0;var e=t.length;return e===1&&t==="~"||e===4&&(t==="null"||t==="Null"||t==="NULL")}function rHe(){return null}function nHe(t){return t===null}QY.exports=new eHe("tag:yaml.org,2002:null",{kind:"scalar",resolve:tHe,construct:rHe,predicate:nHe,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var RY=U((_xt,FY)=>{"use strict";var iHe=as();function sHe(t){if(t===null)return!1;var e=t.length;return e===4&&(t==="true"||t==="True"||t==="TRUE")||e===5&&(t==="false"||t==="False"||t==="FALSE")}function oHe(t){return t==="true"||t==="True"||t==="TRUE"}function aHe(t){return Object.prototype.toString.call(t)==="[object Boolean]"}FY.exports=new iHe("tag:yaml.org,2002:bool",{kind:"scalar",resolve:sHe,construct:oHe,predicate:aHe,represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"})});var NY=U((Hxt,TY)=>{"use strict";var lHe=Wg(),cHe=as();function uHe(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function AHe(t){return 48<=t&&t<=55}function fHe(t){return 48<=t&&t<=57}function pHe(t){if(t===null)return!1;var e=t.length,r=0,o=!1,a;if(!e)return!1;if(a=t[r],(a==="-"||a==="+")&&(a=t[++r]),a==="0"){if(r+1===e)return!0;if(a=t[++r],a==="b"){for(r++;r<e;r++)if(a=t[r],a!=="_"){if(a!=="0"&&a!=="1")return!1;o=!0}return o&&a!=="_"}if(a==="x"){for(r++;r<e;r++)if(a=t[r],a!=="_"){if(!uHe(t.charCodeAt(r)))return!1;o=!0}return o&&a!=="_"}for(;r<e;r++)if(a=t[r],a!=="_"){if(!AHe(t.charCodeAt(r)))return!1;o=!0}return o&&a!=="_"}if(a==="_")return!1;for(;r<e;r++)if(a=t[r],a!=="_"){if(a===":")break;if(!fHe(t.charCodeAt(r)))return!1;o=!0}return!o||a==="_"?!1:a!==":"?!0:/^(:[0-5]?[0-9])+$/.test(t.slice(r))}function hHe(t){var e=t,r=1,o,a,n=[];return e.indexOf("_")!==-1&&(e=e.replace(/_/g,"")),o=e[0],(o==="-"||o==="+")&&(o==="-"&&(r=-1),e=e.slice(1),o=e[0]),e==="0"?0:o==="0"?e[1]==="b"?r*parseInt(e.slice(2),2):e[1]==="x"?r*parseInt(e,16):r*parseInt(e,8):e.indexOf(":")!==-1?(e.split(":").forEach(function(u){n.unshift(parseInt(u,10))}),e=0,a=1,n.forEach(function(u){e+=u*a,a*=60}),r*e):r*parseInt(e,10)}function gHe(t){return Object.prototype.toString.call(t)==="[object Number]"&&t%1===0&&!lHe.isNegativeZero(t)}TY.exports=new cHe("tag:yaml.org,2002:int",{kind:"scalar",resolve:pHe,construct:hHe,predicate:gHe,represent:{binary:function(t){return t>=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0"+t.toString(8):"-0"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var MY=U((qxt,OY)=>{"use strict";var LY=Wg(),dHe=as(),mHe=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function yHe(t){return!(t===null||!mHe.test(t)||t[t.length-1]==="_")}function EHe(t){var e,r,o,a;return e=t.replace(/_/g,"").toLowerCase(),r=e[0]==="-"?-1:1,a=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(n){a.unshift(parseFloat(n,10))}),e=0,o=1,a.forEach(function(n){e+=n*o,o*=60}),r*e):r*parseFloat(e,10)}var CHe=/^[-+]?[0-9]+e/;function IHe(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(LY.isNegativeZero(t))return"-0.0";return r=t.toString(10),CHe.test(r)?r.replace("e",".e"):r}function wHe(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||LY.isNegativeZero(t))}OY.exports=new dHe("tag:yaml.org,2002:float",{kind:"scalar",resolve:yHe,construct:EHe,predicate:wHe,represent:IHe,defaultStyle:"lowercase"})});var dT=U((jxt,UY)=>{"use strict";var BHe=Yg();UY.exports=new BHe({include:[RD()],implicit:[kY(),RY(),NY(),MY()]})});var mT=U((Gxt,_Y)=>{"use strict";var vHe=Yg();_Y.exports=new vHe({include:[dT()]})});var GY=U((Wxt,jY)=>{"use strict";var DHe=as(),HY=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),qY=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function SHe(t){return t===null?!1:HY.exec(t)!==null||qY.exec(t)!==null}function PHe(t){var e,r,o,a,n,u,A,p=0,h=null,C,w,v;if(e=HY.exec(t),e===null&&(e=qY.exec(t)),e===null)throw new Error("Date resolve error");if(r=+e[1],o=+e[2]-1,a=+e[3],!e[4])return new Date(Date.UTC(r,o,a));if(n=+e[4],u=+e[5],A=+e[6],e[7]){for(p=e[7].slice(0,3);p.length<3;)p+="0";p=+p}return e[9]&&(C=+e[10],w=+(e[11]||0),h=(C*60+w)*6e4,e[9]==="-"&&(h=-h)),v=new Date(Date.UTC(r,o,a,n,u,A,p)),h&&v.setTime(v.getTime()-h),v}function xHe(t){return t.toISOString()}jY.exports=new DHe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:SHe,construct:PHe,instanceOf:Date,represent:xHe})});var YY=U((Yxt,WY)=>{"use strict";var bHe=as();function QHe(t){return t==="<<"||t===null}WY.exports=new bHe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:QHe})});var JY=U((Kxt,VY)=>{"use strict";var Kg;try{KY=Ie,Kg=KY("buffer").Buffer}catch{}var KY,kHe=as(),yT=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= |
17 | \r`;function mHe(t){if(t===null)return!1;var e,r,o=0,a=t.length,n=gT;for(r=0;r<a;r++)if(e=n.indexOf(t.charAt(r)),!(e>64)){if(e<0)return!1;o+=6}return o%8===0}function yHe(t){var e,r,o=t.replace(/[\r\n=]/g,""),a=o.length,n=gT,u=0,A=[];for(e=0;e<a;e++)e%4===0&&e&&(A.push(u>>16&255),A.push(u>>8&255),A.push(u&255)),u=u<<6|n.indexOf(o.charAt(e));return r=a%4*6,r===0?(A.push(u>>16&255),A.push(u>>8&255),A.push(u&255)):r===18?(A.push(u>>10&255),A.push(u>>2&255)):r===12&&A.push(u>>4&255),jg?jg.from?jg.from(A):new jg(A):A}function EHe(t){var e="",r=0,o,a,n=t.length,u=gT;for(o=0;o<n;o++)o%3===0&&o&&(e+=u[r>>18&63],e+=u[r>>12&63],e+=u[r>>6&63],e+=u[r&63]),r=(r<<8)+t[o];return a=n%3,a===0?(e+=u[r>>18&63],e+=u[r>>12&63],e+=u[r>>6&63],e+=u[r&63]):a===2?(e+=u[r>>10&63],e+=u[r>>4&63],e+=u[r<<2&63],e+=u[64]):a===1&&(e+=u[r>>2&63],e+=u[r<<4&63],e+=u[64],e+=u[64]),e}function CHe(t){return jg&&jg.isBuffer(t)}_Y.exports=new dHe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:mHe,construct:yHe,predicate:CHe,represent:EHe})});var jY=U((Qxt,qY)=>{"use strict";var IHe=as(),wHe=Object.prototype.hasOwnProperty,BHe=Object.prototype.toString;function vHe(t){if(t===null)return!0;var e=[],r,o,a,n,u,A=t;for(r=0,o=A.length;r<o;r+=1){if(a=A[r],u=!1,BHe.call(a)!=="[object Object]")return!1;for(n in a)if(wHe.call(a,n))if(!u)u=!0;else return!1;if(!u)return!1;if(e.indexOf(n)===-1)e.push(n);else return!1}return!0}function DHe(t){return t!==null?t:[]}qY.exports=new IHe("tag:yaml.org,2002:omap",{kind:"sequence",resolve:vHe,construct:DHe})});var WY=U((kxt,GY)=>{"use strict";var SHe=as(),PHe=Object.prototype.toString;function xHe(t){if(t===null)return!0;var e,r,o,a,n,u=t;for(n=new Array(u.length),e=0,r=u.length;e<r;e+=1){if(o=u[e],PHe.call(o)!=="[object Object]"||(a=Object.keys(o),a.length!==1))return!1;n[e]=[a[0],o[a[0]]]}return!0}function bHe(t){if(t===null)return[];var e,r,o,a,n,u=t;for(n=new Array(u.length),e=0,r=u.length;e<r;e+=1)o=u[e],a=Object.keys(o),n[e]=[a[0],o[a[0]]];return n}GY.exports=new SHe("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:xHe,construct:bHe})});var KY=U((Fxt,YY)=>{"use strict";var QHe=as(),kHe=Object.prototype.hasOwnProperty;function FHe(t){if(t===null)return!0;var e,r=t;for(e in r)if(kHe.call(r,e)&&r[e]!==null)return!1;return!0}function RHe(t){return t!==null?t:{}}YY.exports=new QHe("tag:yaml.org,2002:set",{kind:"mapping",resolve:FHe,construct:RHe})});var Ay=U((Rxt,JY)=>{"use strict";var THe=qg();JY.exports=new THe({include:[hT()],implicit:[LY(),MY()],explicit:[HY(),jY(),WY(),KY()]})});var zY=U((Txt,VY)=>{"use strict";var NHe=as();function LHe(){return!0}function OHe(){}function MHe(){return""}function UHe(t){return typeof t>"u"}VY.exports=new NHe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:LHe,construct:OHe,predicate:UHe,represent:MHe})});var ZY=U((Nxt,XY)=>{"use strict";var _He=as();function HHe(t){if(t===null||t.length===0)return!1;var e=t,r=/\/([gim]*)$/.exec(t),o="";return!(e[0]==="/"&&(r&&(o=r[1]),o.length>3||e[e.length-o.length-1]!=="/"))}function qHe(t){var e=t,r=/\/([gim]*)$/.exec(t),o="";return e[0]==="/"&&(r&&(o=r[1]),e=e.slice(1,e.length-o.length-1)),new RegExp(e,o)}function jHe(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multiline&&(e+="m"),t.ignoreCase&&(e+="i"),e}function GHe(t){return Object.prototype.toString.call(t)==="[object RegExp]"}XY.exports=new _He("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:HHe,construct:qHe,predicate:GHe,represent:jHe})});var tK=U((Lxt,eK)=>{"use strict";var DD;try{$Y=Ie,DD=$Y("esprima")}catch{typeof window<"u"&&(DD=window.esprima)}var $Y,WHe=as();function YHe(t){if(t===null)return!1;try{var e="("+t+")",r=DD.parse(e,{range:!0});return!(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")}catch{return!1}}function KHe(t){var e="("+t+")",r=DD.parse(e,{range:!0}),o=[],a;if(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return r.body[0].expression.params.forEach(function(n){o.push(n.name)}),a=r.body[0].expression.body.range,r.body[0].expression.body.type==="BlockStatement"?new Function(o,e.slice(a[0]+1,a[1]-1)):new Function(o,"return "+e.slice(a[0],a[1]))}function JHe(t){return t.toString()}function VHe(t){return Object.prototype.toString.call(t)==="[object Function]"}eK.exports=new WHe("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:YHe,construct:KHe,predicate:VHe,represent:JHe})});var UI=U((Mxt,nK)=>{"use strict";var rK=qg();nK.exports=rK.DEFAULT=new rK({include:[Ay()],explicit:[zY(),ZY(),tK()]})});var wK=U((Uxt,_I)=>{"use strict";var mf=Hg(),uK=cy(),zHe=uY(),AK=Ay(),XHe=UI(),qp=Object.prototype.hasOwnProperty,SD=1,fK=2,pK=3,PD=4,dT=1,ZHe=2,iK=3,$He=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,e6e=/[\x85\u2028\u2029]/,t6e=/[,\[\]\{\}]/,hK=/^(?:!|!!|![a-z\-]+!)$/i,gK=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function sK(t){return Object.prototype.toString.call(t)}function Gu(t){return t===10||t===13}function Wg(t){return t===9||t===32}function Ca(t){return t===9||t===32||t===10||t===13}function fy(t){return t===44||t===91||t===93||t===123||t===125}function r6e(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-97+10:-1)}function n6e(t){return t===120?2:t===117?4:t===85?8:0}function i6e(t){return 48<=t&&t<=57?t-48:-1}function oK(t){return t===48?"\0":t===97?"\x07":t===98?"\b":t===116||t===9?" ":t===110?` | 17 | \r`;function FHe(t){if(t===null)return!1;var e,r,o=0,a=t.length,n=yT;for(r=0;r<a;r++)if(e=n.indexOf(t.charAt(r)),!(e>64)){if(e<0)return!1;o+=6}return o%8===0}function RHe(t){var e,r,o=t.replace(/[\r\n=]/g,""),a=o.length,n=yT,u=0,A=[];for(e=0;e<a;e++)e%4===0&&e&&(A.push(u>>16&255),A.push(u>>8&255),A.push(u&255)),u=u<<6|n.indexOf(o.charAt(e));return r=a%4*6,r===0?(A.push(u>>16&255),A.push(u>>8&255),A.push(u&255)):r===18?(A.push(u>>10&255),A.push(u>>2&255)):r===12&&A.push(u>>4&255),Kg?Kg.from?Kg.from(A):new Kg(A):A}function THe(t){var e="",r=0,o,a,n=t.length,u=yT;for(o=0;o<n;o++)o%3===0&&o&&(e+=u[r>>18&63],e+=u[r>>12&63],e+=u[r>>6&63],e+=u[r&63]),r=(r<<8)+t[o];return a=n%3,a===0?(e+=u[r>>18&63],e+=u[r>>12&63],e+=u[r>>6&63],e+=u[r&63]):a===2?(e+=u[r>>10&63],e+=u[r>>4&63],e+=u[r<<2&63],e+=u[64]):a===1&&(e+=u[r>>2&63],e+=u[r<<4&63],e+=u[64],e+=u[64]),e}function NHe(t){return Kg&&Kg.isBuffer(t)}VY.exports=new kHe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:FHe,construct:RHe,predicate:NHe,represent:THe})});var XY=U((Jxt,zY)=>{"use strict";var LHe=as(),OHe=Object.prototype.hasOwnProperty,MHe=Object.prototype.toString;function UHe(t){if(t===null)return!0;var e=[],r,o,a,n,u,A=t;for(r=0,o=A.length;r<o;r+=1){if(a=A[r],u=!1,MHe.call(a)!=="[object Object]")return!1;for(n in a)if(OHe.call(a,n))if(!u)u=!0;else return!1;if(!u)return!1;if(e.indexOf(n)===-1)e.push(n);else return!1}return!0}function _He(t){return t!==null?t:[]}zY.exports=new LHe("tag:yaml.org,2002:omap",{kind:"sequence",resolve:UHe,construct:_He})});var $Y=U((zxt,ZY)=>{"use strict";var HHe=as(),qHe=Object.prototype.toString;function jHe(t){if(t===null)return!0;var e,r,o,a,n,u=t;for(n=new Array(u.length),e=0,r=u.length;e<r;e+=1){if(o=u[e],qHe.call(o)!=="[object Object]"||(a=Object.keys(o),a.length!==1))return!1;n[e]=[a[0],o[a[0]]]}return!0}function GHe(t){if(t===null)return[];var e,r,o,a,n,u=t;for(n=new Array(u.length),e=0,r=u.length;e<r;e+=1)o=u[e],a=Object.keys(o),n[e]=[a[0],o[a[0]]];return n}ZY.exports=new HHe("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:jHe,construct:GHe})});var tK=U((Xxt,eK)=>{"use strict";var WHe=as(),YHe=Object.prototype.hasOwnProperty;function KHe(t){if(t===null)return!0;var e,r=t;for(e in r)if(YHe.call(r,e)&&r[e]!==null)return!1;return!0}function VHe(t){return t!==null?t:{}}eK.exports=new WHe("tag:yaml.org,2002:set",{kind:"mapping",resolve:KHe,construct:VHe})});var dy=U((Zxt,rK)=>{"use strict";var JHe=Yg();rK.exports=new JHe({include:[mT()],implicit:[GY(),YY()],explicit:[JY(),XY(),$Y(),tK()]})});var iK=U(($xt,nK)=>{"use strict";var zHe=as();function XHe(){return!0}function ZHe(){}function $He(){return""}function e6e(t){return typeof t>"u"}nK.exports=new zHe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:XHe,construct:ZHe,predicate:e6e,represent:$He})});var oK=U((ebt,sK)=>{"use strict";var t6e=as();function r6e(t){if(t===null||t.length===0)return!1;var e=t,r=/\/([gim]*)$/.exec(t),o="";return!(e[0]==="/"&&(r&&(o=r[1]),o.length>3||e[e.length-o.length-1]!=="/"))}function n6e(t){var e=t,r=/\/([gim]*)$/.exec(t),o="";return e[0]==="/"&&(r&&(o=r[1]),e=e.slice(1,e.length-o.length-1)),new RegExp(e,o)}function i6e(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multiline&&(e+="m"),t.ignoreCase&&(e+="i"),e}function s6e(t){return Object.prototype.toString.call(t)==="[object RegExp]"}sK.exports=new t6e("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:r6e,construct:n6e,predicate:s6e,represent:i6e})});var cK=U((tbt,lK)=>{"use strict";var TD;try{aK=Ie,TD=aK("esprima")}catch{typeof window<"u"&&(TD=window.esprima)}var aK,o6e=as();function a6e(t){if(t===null)return!1;try{var e="("+t+")",r=TD.parse(e,{range:!0});return!(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")}catch{return!1}}function l6e(t){var e="("+t+")",r=TD.parse(e,{range:!0}),o=[],a;if(r.type!=="Program"||r.body.length!==1||r.body[0].type!=="ExpressionStatement"||r.body[0].expression.type!=="ArrowFunctionExpression"&&r.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return r.body[0].expression.params.forEach(function(n){o.push(n.name)}),a=r.body[0].expression.body.range,r.body[0].expression.body.type==="BlockStatement"?new Function(o,e.slice(a[0]+1,a[1]-1)):new Function(o,"return "+e.slice(a[0],a[1]))}function c6e(t){return t.toString()}function u6e(t){return Object.prototype.toString.call(t)==="[object Function]"}lK.exports=new o6e("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:a6e,construct:l6e,predicate:u6e,represent:c6e})});var GI=U((nbt,AK)=>{"use strict";var uK=Yg();AK.exports=uK.DEFAULT=new uK({include:[dy()],explicit:[iK(),oK(),cK()]})});var QK=U((ibt,WI)=>{"use strict";var Cf=Wg(),yK=hy(),A6e=yY(),EK=dy(),f6e=GI(),Wp=Object.prototype.hasOwnProperty,ND=1,CK=2,IK=3,LD=4,ET=1,p6e=2,fK=3,h6e=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,g6e=/[\x85\u2028\u2029]/,d6e=/[,\[\]\{\}]/,wK=/^(?:!|!!|![a-z\-]+!)$/i,BK=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function pK(t){return Object.prototype.toString.call(t)}function Wu(t){return t===10||t===13}function Jg(t){return t===9||t===32}function wa(t){return t===9||t===32||t===10||t===13}function my(t){return t===44||t===91||t===93||t===123||t===125}function m6e(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-97+10:-1)}function y6e(t){return t===120?2:t===117?4:t===85?8:0}function E6e(t){return 48<=t&&t<=57?t-48:-1}function hK(t){return t===48?"\0":t===97?"\x07":t===98?"\b":t===116||t===9?" ":t===110?` |
18 | `:t===118?"\v":t===102?"\f":t===114?"\r":t===101?"\x1B":t===32?" ":t===34?'"':t===47?"/":t===92?"\\":t===78?"\x85":t===95?"\xA0":t===76?"\u2028":t===80?"\u2029":""}function s6e(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}var dK=new Array(256),mK=new Array(256);for(Gg=0;Gg<256;Gg++)dK[Gg]=oK(Gg)?1:0,mK[Gg]=oK(Gg);var Gg;function o6e(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||XHe,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function yK(t,e){return new uK(e,new zHe(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function wr(t,e){throw yK(t,e)}function xD(t,e){t.onWarning&&t.onWarning.call(null,yK(t,e))}var aK={YAML:function(e,r,o){var a,n,u;e.version!==null&&wr(e,"duplication of %YAML directive"),o.length!==1&&wr(e,"YAML directive accepts exactly one argument"),a=/^([0-9]+)\.([0-9]+)$/.exec(o[0]),a===null&&wr(e,"ill-formed argument of the YAML directive"),n=parseInt(a[1],10),u=parseInt(a[2],10),n!==1&&wr(e,"unacceptable YAML version of the document"),e.version=o[0],e.checkLineBreaks=u<2,u!==1&&u!==2&&xD(e,"unsupported YAML version of the document")},TAG:function(e,r,o){var a,n;o.length!==2&&wr(e,"TAG directive accepts exactly two arguments"),a=o[0],n=o[1],hK.test(a)||wr(e,"ill-formed tag handle (first argument) of the TAG directive"),qp.call(e.tagMap,a)&&wr(e,'there is a previously declared suffix for "'+a+'" tag handle'),gK.test(n)||wr(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[a]=n}};function Hp(t,e,r,o){var a,n,u,A;if(e<r){if(A=t.input.slice(e,r),o)for(a=0,n=A.length;a<n;a+=1)u=A.charCodeAt(a),u===9||32<=u&&u<=1114111||wr(t,"expected valid JSON character");else $He.test(A)&&wr(t,"the stream contains non-printable characters");t.result+=A}}function lK(t,e,r,o){var a,n,u,A;for(mf.isObject(r)||wr(t,"cannot merge mappings; the provided source object is unacceptable"),a=Object.keys(r),u=0,A=a.length;u<A;u+=1)n=a[u],qp.call(e,n)||(e[n]=r[n],o[n]=!0)}function py(t,e,r,o,a,n,u,A){var p,h;if(Array.isArray(a))for(a=Array.prototype.slice.call(a),p=0,h=a.length;p<h;p+=1)Array.isArray(a[p])&&wr(t,"nested arrays are not supported inside keys"),typeof a=="object"&&sK(a[p])==="[object Object]"&&(a[p]="[object Object]");if(typeof a=="object"&&sK(a)==="[object Object]"&&(a="[object Object]"),a=String(a),e===null&&(e={}),o==="tag:yaml.org,2002:merge")if(Array.isArray(n))for(p=0,h=n.length;p<h;p+=1)lK(t,e,n[p],r);else lK(t,e,n,r);else!t.json&&!qp.call(r,a)&&qp.call(e,a)&&(t.line=u||t.line,t.position=A||t.position,wr(t,"duplicated mapping key")),e[a]=n,delete r[a];return e}function mT(t){var e;e=t.input.charCodeAt(t.position),e===10?t.position++:e===13?(t.position++,t.input.charCodeAt(t.position)===10&&t.position++):wr(t,"a line break is expected"),t.line+=1,t.lineStart=t.position}function Wi(t,e,r){for(var o=0,a=t.input.charCodeAt(t.position);a!==0;){for(;Wg(a);)a=t.input.charCodeAt(++t.position);if(e&&a===35)do a=t.input.charCodeAt(++t.position);while(a!==10&&a!==13&&a!==0);if(Gu(a))for(mT(t),a=t.input.charCodeAt(t.position),o++,t.lineIndent=0;a===32;)t.lineIndent++,a=t.input.charCodeAt(++t.position);else break}return r!==-1&&o!==0&&t.lineIndent<r&&xD(t,"deficient indentation"),o}function bD(t){var e=t.position,r;return r=t.input.charCodeAt(e),!!((r===45||r===46)&&r===t.input.charCodeAt(e+1)&&r===t.input.charCodeAt(e+2)&&(e+=3,r=t.input.charCodeAt(e),r===0||Ca(r)))}function yT(t,e){e===1?t.result+=" ":e>1&&(t.result+=mf.repeat(` | 18 | `:t===118?"\v":t===102?"\f":t===114?"\r":t===101?"\x1B":t===32?" ":t===34?'"':t===47?"/":t===92?"\\":t===78?"\x85":t===95?"\xA0":t===76?"\u2028":t===80?"\u2029":""}function C6e(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}var vK=new Array(256),DK=new Array(256);for(Vg=0;Vg<256;Vg++)vK[Vg]=hK(Vg)?1:0,DK[Vg]=hK(Vg);var Vg;function I6e(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||f6e,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function SK(t,e){return new yK(e,new A6e(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function wr(t,e){throw SK(t,e)}function OD(t,e){t.onWarning&&t.onWarning.call(null,SK(t,e))}var gK={YAML:function(e,r,o){var a,n,u;e.version!==null&&wr(e,"duplication of %YAML directive"),o.length!==1&&wr(e,"YAML directive accepts exactly one argument"),a=/^([0-9]+)\.([0-9]+)$/.exec(o[0]),a===null&&wr(e,"ill-formed argument of the YAML directive"),n=parseInt(a[1],10),u=parseInt(a[2],10),n!==1&&wr(e,"unacceptable YAML version of the document"),e.version=o[0],e.checkLineBreaks=u<2,u!==1&&u!==2&&OD(e,"unsupported YAML version of the document")},TAG:function(e,r,o){var a,n;o.length!==2&&wr(e,"TAG directive accepts exactly two arguments"),a=o[0],n=o[1],wK.test(a)||wr(e,"ill-formed tag handle (first argument) of the TAG directive"),Wp.call(e.tagMap,a)&&wr(e,'there is a previously declared suffix for "'+a+'" tag handle'),BK.test(n)||wr(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[a]=n}};function Gp(t,e,r,o){var a,n,u,A;if(e<r){if(A=t.input.slice(e,r),o)for(a=0,n=A.length;a<n;a+=1)u=A.charCodeAt(a),u===9||32<=u&&u<=1114111||wr(t,"expected valid JSON character");else h6e.test(A)&&wr(t,"the stream contains non-printable characters");t.result+=A}}function dK(t,e,r,o){var a,n,u,A;for(Cf.isObject(r)||wr(t,"cannot merge mappings; the provided source object is unacceptable"),a=Object.keys(r),u=0,A=a.length;u<A;u+=1)n=a[u],Wp.call(e,n)||(e[n]=r[n],o[n]=!0)}function yy(t,e,r,o,a,n,u,A){var p,h;if(Array.isArray(a))for(a=Array.prototype.slice.call(a),p=0,h=a.length;p<h;p+=1)Array.isArray(a[p])&&wr(t,"nested arrays are not supported inside keys"),typeof a=="object"&&pK(a[p])==="[object Object]"&&(a[p]="[object Object]");if(typeof a=="object"&&pK(a)==="[object Object]"&&(a="[object Object]"),a=String(a),e===null&&(e={}),o==="tag:yaml.org,2002:merge")if(Array.isArray(n))for(p=0,h=n.length;p<h;p+=1)dK(t,e,n[p],r);else dK(t,e,n,r);else!t.json&&!Wp.call(r,a)&&Wp.call(e,a)&&(t.line=u||t.line,t.position=A||t.position,wr(t,"duplicated mapping key")),e[a]=n,delete r[a];return e}function CT(t){var e;e=t.input.charCodeAt(t.position),e===10?t.position++:e===13?(t.position++,t.input.charCodeAt(t.position)===10&&t.position++):wr(t,"a line break is expected"),t.line+=1,t.lineStart=t.position}function Wi(t,e,r){for(var o=0,a=t.input.charCodeAt(t.position);a!==0;){for(;Jg(a);)a=t.input.charCodeAt(++t.position);if(e&&a===35)do a=t.input.charCodeAt(++t.position);while(a!==10&&a!==13&&a!==0);if(Wu(a))for(CT(t),a=t.input.charCodeAt(t.position),o++,t.lineIndent=0;a===32;)t.lineIndent++,a=t.input.charCodeAt(++t.position);else break}return r!==-1&&o!==0&&t.lineIndent<r&&OD(t,"deficient indentation"),o}function MD(t){var e=t.position,r;return r=t.input.charCodeAt(e),!!((r===45||r===46)&&r===t.input.charCodeAt(e+1)&&r===t.input.charCodeAt(e+2)&&(e+=3,r=t.input.charCodeAt(e),r===0||wa(r)))}function IT(t,e){e===1?t.result+=" ":e>1&&(t.result+=Cf.repeat(` |
19 | `,e-1))}function a6e(t,e,r){var o,a,n,u,A,p,h,C,w=t.kind,v=t.result,b;if(b=t.input.charCodeAt(t.position),Ca(b)||fy(b)||b===35||b===38||b===42||b===33||b===124||b===62||b===39||b===34||b===37||b===64||b===96||(b===63||b===45)&&(a=t.input.charCodeAt(t.position+1),Ca(a)||r&&fy(a)))return!1;for(t.kind="scalar",t.result="",n=u=t.position,A=!1;b!==0;){if(b===58){if(a=t.input.charCodeAt(t.position+1),Ca(a)||r&&fy(a))break}else if(b===35){if(o=t.input.charCodeAt(t.position-1),Ca(o))break}else{if(t.position===t.lineStart&&bD(t)||r&&fy(b))break;if(Gu(b))if(p=t.line,h=t.lineStart,C=t.lineIndent,Wi(t,!1,-1),t.lineIndent>=e){A=!0,b=t.input.charCodeAt(t.position);continue}else{t.position=u,t.line=p,t.lineStart=h,t.lineIndent=C;break}}A&&(Hp(t,n,u,!1),yT(t,t.line-p),n=u=t.position,A=!1),Wg(b)||(u=t.position+1),b=t.input.charCodeAt(++t.position)}return Hp(t,n,u,!1),t.result?!0:(t.kind=w,t.result=v,!1)}function l6e(t,e){var r,o,a;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind="scalar",t.result="",t.position++,o=a=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(Hp(t,o,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)o=t.position,t.position++,a=t.position;else return!0;else Gu(r)?(Hp(t,o,a,!0),yT(t,Wi(t,!1,e)),o=a=t.position):t.position===t.lineStart&&bD(t)?wr(t,"unexpected end of the document within a single quoted scalar"):(t.position++,a=t.position);wr(t,"unexpected end of the stream within a single quoted scalar")}function c6e(t,e){var r,o,a,n,u,A;if(A=t.input.charCodeAt(t.position),A!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=o=t.position;(A=t.input.charCodeAt(t.position))!==0;){if(A===34)return Hp(t,r,t.position,!0),t.position++,!0;if(A===92){if(Hp(t,r,t.position,!0),A=t.input.charCodeAt(++t.position),Gu(A))Wi(t,!1,e);else if(A<256&&dK[A])t.result+=mK[A],t.position++;else if((u=n6e(A))>0){for(a=u,n=0;a>0;a--)A=t.input.charCodeAt(++t.position),(u=r6e(A))>=0?n=(n<<4)+u:wr(t,"expected hexadecimal character");t.result+=s6e(n),t.position++}else wr(t,"unknown escape sequence");r=o=t.position}else Gu(A)?(Hp(t,r,o,!0),yT(t,Wi(t,!1,e)),r=o=t.position):t.position===t.lineStart&&bD(t)?wr(t,"unexpected end of the document within a double quoted scalar"):(t.position++,o=t.position)}wr(t,"unexpected end of the stream within a double quoted scalar")}function u6e(t,e){var r=!0,o,a=t.tag,n,u=t.anchor,A,p,h,C,w,v={},b,E,R,L;if(L=t.input.charCodeAt(t.position),L===91)p=93,w=!1,n=[];else if(L===123)p=125,w=!0,n={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=n),L=t.input.charCodeAt(++t.position);L!==0;){if(Wi(t,!0,e),L=t.input.charCodeAt(t.position),L===p)return t.position++,t.tag=a,t.anchor=u,t.kind=w?"mapping":"sequence",t.result=n,!0;r||wr(t,"missed comma between flow collection entries"),E=b=R=null,h=C=!1,L===63&&(A=t.input.charCodeAt(t.position+1),Ca(A)&&(h=C=!0,t.position++,Wi(t,!0,e))),o=t.line,hy(t,e,SD,!1,!0),E=t.tag,b=t.result,Wi(t,!0,e),L=t.input.charCodeAt(t.position),(C||t.line===o)&&L===58&&(h=!0,L=t.input.charCodeAt(++t.position),Wi(t,!0,e),hy(t,e,SD,!1,!0),R=t.result),w?py(t,n,v,E,b,R):h?n.push(py(t,null,v,E,b,R)):n.push(b),Wi(t,!0,e),L=t.input.charCodeAt(t.position),L===44?(r=!0,L=t.input.charCodeAt(++t.position)):r=!1}wr(t,"unexpected end of the stream within a flow collection")}function A6e(t,e){var r,o,a=dT,n=!1,u=!1,A=e,p=0,h=!1,C,w;if(w=t.input.charCodeAt(t.position),w===124)o=!1;else if(w===62)o=!0;else return!1;for(t.kind="scalar",t.result="";w!==0;)if(w=t.input.charCodeAt(++t.position),w===43||w===45)dT===a?a=w===43?iK:ZHe:wr(t,"repeat of a chomping mode identifier");else if((C=i6e(w))>=0)C===0?wr(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):u?wr(t,"repeat of an indentation width identifier"):(A=e+C-1,u=!0);else break;if(Wg(w)){do w=t.input.charCodeAt(++t.position);while(Wg(w));if(w===35)do w=t.input.charCodeAt(++t.position);while(!Gu(w)&&w!==0)}for(;w!==0;){for(mT(t),t.lineIndent=0,w=t.input.charCodeAt(t.position);(!u||t.lineIndent<A)&&w===32;)t.lineIndent++,w=t.input.charCodeAt(++t.position);if(!u&&t.lineIndent>A&&(A=t.lineIndent),Gu(w)){p++;continue}if(t.lineIndent<A){a===iK?t.result+=mf.repeat(` | 19 | `,e-1))}function w6e(t,e,r){var o,a,n,u,A,p,h,C,w=t.kind,v=t.result,b;if(b=t.input.charCodeAt(t.position),wa(b)||my(b)||b===35||b===38||b===42||b===33||b===124||b===62||b===39||b===34||b===37||b===64||b===96||(b===63||b===45)&&(a=t.input.charCodeAt(t.position+1),wa(a)||r&&my(a)))return!1;for(t.kind="scalar",t.result="",n=u=t.position,A=!1;b!==0;){if(b===58){if(a=t.input.charCodeAt(t.position+1),wa(a)||r&&my(a))break}else if(b===35){if(o=t.input.charCodeAt(t.position-1),wa(o))break}else{if(t.position===t.lineStart&&MD(t)||r&&my(b))break;if(Wu(b))if(p=t.line,h=t.lineStart,C=t.lineIndent,Wi(t,!1,-1),t.lineIndent>=e){A=!0,b=t.input.charCodeAt(t.position);continue}else{t.position=u,t.line=p,t.lineStart=h,t.lineIndent=C;break}}A&&(Gp(t,n,u,!1),IT(t,t.line-p),n=u=t.position,A=!1),Jg(b)||(u=t.position+1),b=t.input.charCodeAt(++t.position)}return Gp(t,n,u,!1),t.result?!0:(t.kind=w,t.result=v,!1)}function B6e(t,e){var r,o,a;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind="scalar",t.result="",t.position++,o=a=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(Gp(t,o,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)o=t.position,t.position++,a=t.position;else return!0;else Wu(r)?(Gp(t,o,a,!0),IT(t,Wi(t,!1,e)),o=a=t.position):t.position===t.lineStart&&MD(t)?wr(t,"unexpected end of the document within a single quoted scalar"):(t.position++,a=t.position);wr(t,"unexpected end of the stream within a single quoted scalar")}function v6e(t,e){var r,o,a,n,u,A;if(A=t.input.charCodeAt(t.position),A!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=o=t.position;(A=t.input.charCodeAt(t.position))!==0;){if(A===34)return Gp(t,r,t.position,!0),t.position++,!0;if(A===92){if(Gp(t,r,t.position,!0),A=t.input.charCodeAt(++t.position),Wu(A))Wi(t,!1,e);else if(A<256&&vK[A])t.result+=DK[A],t.position++;else if((u=y6e(A))>0){for(a=u,n=0;a>0;a--)A=t.input.charCodeAt(++t.position),(u=m6e(A))>=0?n=(n<<4)+u:wr(t,"expected hexadecimal character");t.result+=C6e(n),t.position++}else wr(t,"unknown escape sequence");r=o=t.position}else Wu(A)?(Gp(t,r,o,!0),IT(t,Wi(t,!1,e)),r=o=t.position):t.position===t.lineStart&&MD(t)?wr(t,"unexpected end of the document within a double quoted scalar"):(t.position++,o=t.position)}wr(t,"unexpected end of the stream within a double quoted scalar")}function D6e(t,e){var r=!0,o,a=t.tag,n,u=t.anchor,A,p,h,C,w,v={},b,E,R,L;if(L=t.input.charCodeAt(t.position),L===91)p=93,w=!1,n=[];else if(L===123)p=125,w=!0,n={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=n),L=t.input.charCodeAt(++t.position);L!==0;){if(Wi(t,!0,e),L=t.input.charCodeAt(t.position),L===p)return t.position++,t.tag=a,t.anchor=u,t.kind=w?"mapping":"sequence",t.result=n,!0;r||wr(t,"missed comma between flow collection entries"),E=b=R=null,h=C=!1,L===63&&(A=t.input.charCodeAt(t.position+1),wa(A)&&(h=C=!0,t.position++,Wi(t,!0,e))),o=t.line,Ey(t,e,ND,!1,!0),E=t.tag,b=t.result,Wi(t,!0,e),L=t.input.charCodeAt(t.position),(C||t.line===o)&&L===58&&(h=!0,L=t.input.charCodeAt(++t.position),Wi(t,!0,e),Ey(t,e,ND,!1,!0),R=t.result),w?yy(t,n,v,E,b,R):h?n.push(yy(t,null,v,E,b,R)):n.push(b),Wi(t,!0,e),L=t.input.charCodeAt(t.position),L===44?(r=!0,L=t.input.charCodeAt(++t.position)):r=!1}wr(t,"unexpected end of the stream within a flow collection")}function S6e(t,e){var r,o,a=ET,n=!1,u=!1,A=e,p=0,h=!1,C,w;if(w=t.input.charCodeAt(t.position),w===124)o=!1;else if(w===62)o=!0;else return!1;for(t.kind="scalar",t.result="";w!==0;)if(w=t.input.charCodeAt(++t.position),w===43||w===45)ET===a?a=w===43?fK:p6e:wr(t,"repeat of a chomping mode identifier");else if((C=E6e(w))>=0)C===0?wr(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):u?wr(t,"repeat of an indentation width identifier"):(A=e+C-1,u=!0);else break;if(Jg(w)){do w=t.input.charCodeAt(++t.position);while(Jg(w));if(w===35)do w=t.input.charCodeAt(++t.position);while(!Wu(w)&&w!==0)}for(;w!==0;){for(CT(t),t.lineIndent=0,w=t.input.charCodeAt(t.position);(!u||t.lineIndent<A)&&w===32;)t.lineIndent++,w=t.input.charCodeAt(++t.position);if(!u&&t.lineIndent>A&&(A=t.lineIndent),Wu(w)){p++;continue}if(t.lineIndent<A){a===fK?t.result+=Cf.repeat(` |
20 | `,n?1+p:p):a===dT&&n&&(t.result+=` | 20 | `,n?1+p:p):a===ET&&n&&(t.result+=` |
21 | `);break}for(o?Wg(w)?(h=!0,t.result+=mf.repeat(` | 21 | `);break}for(o?Jg(w)?(h=!0,t.result+=Cf.repeat(` |
22 | `,n?1+p:p)):h?(h=!1,t.result+=mf.repeat(` | 22 | `,n?1+p:p)):h?(h=!1,t.result+=Cf.repeat(` |
23 | `,p+1)):p===0?n&&(t.result+=" "):t.result+=mf.repeat(` | 23 | `,p+1)):p===0?n&&(t.result+=" "):t.result+=Cf.repeat(` |
24 | `,p):t.result+=mf.repeat(` | 24 | `,p):t.result+=Cf.repeat(` |
25 | `,n?1+p:p),n=!0,u=!0,p=0,r=t.position;!Gu(w)&&w!==0;)w=t.input.charCodeAt(++t.position);Hp(t,r,t.position,!1)}return!0}function cK(t,e){var r,o=t.tag,a=t.anchor,n=[],u,A=!1,p;for(t.anchor!==null&&(t.anchorMap[t.anchor]=n),p=t.input.charCodeAt(t.position);p!==0&&!(p!==45||(u=t.input.charCodeAt(t.position+1),!Ca(u)));){if(A=!0,t.position++,Wi(t,!0,-1)&&t.lineIndent<=e){n.push(null),p=t.input.charCodeAt(t.position);continue}if(r=t.line,hy(t,e,pK,!1,!0),n.push(t.result),Wi(t,!0,-1),p=t.input.charCodeAt(t.position),(t.line===r||t.lineIndent>e)&&p!==0)wr(t,"bad indentation of a sequence entry");else if(t.lineIndent<e)break}return A?(t.tag=o,t.anchor=a,t.kind="sequence",t.result=n,!0):!1}function f6e(t,e,r){var o,a,n,u,A=t.tag,p=t.anchor,h={},C={},w=null,v=null,b=null,E=!1,R=!1,L;for(t.anchor!==null&&(t.anchorMap[t.anchor]=h),L=t.input.charCodeAt(t.position);L!==0;){if(o=t.input.charCodeAt(t.position+1),n=t.line,u=t.position,(L===63||L===58)&&Ca(o))L===63?(E&&(py(t,h,C,w,v,null),w=v=b=null),R=!0,E=!0,a=!0):E?(E=!1,a=!0):wr(t,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),t.position+=1,L=o;else if(hy(t,r,fK,!1,!0))if(t.line===n){for(L=t.input.charCodeAt(t.position);Wg(L);)L=t.input.charCodeAt(++t.position);if(L===58)L=t.input.charCodeAt(++t.position),Ca(L)||wr(t,"a whitespace character is expected after the key-value separator within a block mapping"),E&&(py(t,h,C,w,v,null),w=v=b=null),R=!0,E=!1,a=!1,w=t.tag,v=t.result;else if(R)wr(t,"can not read an implicit mapping pair; a colon is missed");else return t.tag=A,t.anchor=p,!0}else if(R)wr(t,"can not read a block mapping entry; a multiline key may not be an implicit key");else return t.tag=A,t.anchor=p,!0;else break;if((t.line===n||t.lineIndent>e)&&(hy(t,e,PD,!0,a)&&(E?v=t.result:b=t.result),E||(py(t,h,C,w,v,b,n,u),w=v=b=null),Wi(t,!0,-1),L=t.input.charCodeAt(t.position)),t.lineIndent>e&&L!==0)wr(t,"bad indentation of a mapping entry");else if(t.lineIndent<e)break}return E&&py(t,h,C,w,v,null),R&&(t.tag=A,t.anchor=p,t.kind="mapping",t.result=h),R}function p6e(t){var e,r=!1,o=!1,a,n,u;if(u=t.input.charCodeAt(t.position),u!==33)return!1;if(t.tag!==null&&wr(t,"duplication of a tag property"),u=t.input.charCodeAt(++t.position),u===60?(r=!0,u=t.input.charCodeAt(++t.position)):u===33?(o=!0,a="!!",u=t.input.charCodeAt(++t.position)):a="!",e=t.position,r){do u=t.input.charCodeAt(++t.position);while(u!==0&&u!==62);t.position<t.length?(n=t.input.slice(e,t.position),u=t.input.charCodeAt(++t.position)):wr(t,"unexpected end of the stream within a verbatim tag")}else{for(;u!==0&&!Ca(u);)u===33&&(o?wr(t,"tag suffix cannot contain exclamation marks"):(a=t.input.slice(e-1,t.position+1),hK.test(a)||wr(t,"named tag handle cannot contain such characters"),o=!0,e=t.position+1)),u=t.input.charCodeAt(++t.position);n=t.input.slice(e,t.position),t6e.test(n)&&wr(t,"tag suffix cannot contain flow indicator characters")}return n&&!gK.test(n)&&wr(t,"tag name cannot contain such characters: "+n),r?t.tag=n:qp.call(t.tagMap,a)?t.tag=t.tagMap[a]+n:a==="!"?t.tag="!"+n:a==="!!"?t.tag="tag:yaml.org,2002:"+n:wr(t,'undeclared tag handle "'+a+'"'),!0}function h6e(t){var e,r;if(r=t.input.charCodeAt(t.position),r!==38)return!1;for(t.anchor!==null&&wr(t,"duplication of an anchor property"),r=t.input.charCodeAt(++t.position),e=t.position;r!==0&&!Ca(r)&&!fy(r);)r=t.input.charCodeAt(++t.position);return t.position===e&&wr(t,"name of an anchor node must contain at least one character"),t.anchor=t.input.slice(e,t.position),!0}function g6e(t){var e,r,o;if(o=t.input.charCodeAt(t.position),o!==42)return!1;for(o=t.input.charCodeAt(++t.position),e=t.position;o!==0&&!Ca(o)&&!fy(o);)o=t.input.charCodeAt(++t.position);return t.position===e&&wr(t,"name of an alias node must contain at least one character"),r=t.input.slice(e,t.position),qp.call(t.anchorMap,r)||wr(t,'unidentified alias "'+r+'"'),t.result=t.anchorMap[r],Wi(t,!0,-1),!0}function hy(t,e,r,o,a){var n,u,A,p=1,h=!1,C=!1,w,v,b,E,R;if(t.listener!==null&&t.listener("open",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,n=u=A=PD===r||pK===r,o&&Wi(t,!0,-1)&&(h=!0,t.lineIndent>e?p=1:t.lineIndent===e?p=0:t.lineIndent<e&&(p=-1)),p===1)for(;p6e(t)||h6e(t);)Wi(t,!0,-1)?(h=!0,A=n,t.lineIndent>e?p=1:t.lineIndent===e?p=0:t.lineIndent<e&&(p=-1)):A=!1;if(A&&(A=h||a),(p===1||PD===r)&&(SD===r||fK===r?E=e:E=e+1,R=t.position-t.lineStart,p===1?A&&(cK(t,R)||f6e(t,R,E))||u6e(t,E)?C=!0:(u&&A6e(t,E)||l6e(t,E)||c6e(t,E)?C=!0:g6e(t)?(C=!0,(t.tag!==null||t.anchor!==null)&&wr(t,"alias node should not have any properties")):a6e(t,E,SD===r)&&(C=!0,t.tag===null&&(t.tag="?")),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):p===0&&(C=A&&cK(t,R))),t.tag!==null&&t.tag!=="!")if(t.tag==="?"){for(t.result!==null&&t.kind!=="scalar"&&wr(t,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+t.kind+'"'),w=0,v=t.implicitTypes.length;w<v;w+=1)if(b=t.implicitTypes[w],b.resolve(t.result)){t.result=b.construct(t.result),t.tag=b.tag,t.anchor!==null&&(t.anchorMap[t.anchor]=t.result);break}}else qp.call(t.typeMap[t.kind||"fallback"],t.tag)?(b=t.typeMap[t.kind||"fallback"][t.tag],t.result!==null&&b.kind!==t.kind&&wr(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+b.kind+'", not "'+t.kind+'"'),b.resolve(t.result)?(t.result=b.construct(t.result),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):wr(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")):wr(t,"unknown tag !<"+t.tag+">");return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||C}function d6e(t){var e=t.position,r,o,a,n=!1,u;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};(u=t.input.charCodeAt(t.position))!==0&&(Wi(t,!0,-1),u=t.input.charCodeAt(t.position),!(t.lineIndent>0||u!==37));){for(n=!0,u=t.input.charCodeAt(++t.position),r=t.position;u!==0&&!Ca(u);)u=t.input.charCodeAt(++t.position);for(o=t.input.slice(r,t.position),a=[],o.length<1&&wr(t,"directive name must not be less than one character in length");u!==0;){for(;Wg(u);)u=t.input.charCodeAt(++t.position);if(u===35){do u=t.input.charCodeAt(++t.position);while(u!==0&&!Gu(u));break}if(Gu(u))break;for(r=t.position;u!==0&&!Ca(u);)u=t.input.charCodeAt(++t.position);a.push(t.input.slice(r,t.position))}u!==0&&mT(t),qp.call(aK,o)?aK[o](t,o,a):xD(t,'unknown document directive "'+o+'"')}if(Wi(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,Wi(t,!0,-1)):n&&wr(t,"directives end mark is expected"),hy(t,t.lineIndent-1,PD,!1,!0),Wi(t,!0,-1),t.checkLineBreaks&&e6e.test(t.input.slice(e,t.position))&&xD(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&bD(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,Wi(t,!0,-1));return}if(t.position<t.length-1)wr(t,"end of the stream or a document separator is expected");else return}function EK(t,e){t=String(t),e=e||{},t.length!==0&&(t.charCodeAt(t.length-1)!==10&&t.charCodeAt(t.length-1)!==13&&(t+=` | 25 | `,n?1+p:p),n=!0,u=!0,p=0,r=t.position;!Wu(w)&&w!==0;)w=t.input.charCodeAt(++t.position);Gp(t,r,t.position,!1)}return!0}function mK(t,e){var r,o=t.tag,a=t.anchor,n=[],u,A=!1,p;for(t.anchor!==null&&(t.anchorMap[t.anchor]=n),p=t.input.charCodeAt(t.position);p!==0&&!(p!==45||(u=t.input.charCodeAt(t.position+1),!wa(u)));){if(A=!0,t.position++,Wi(t,!0,-1)&&t.lineIndent<=e){n.push(null),p=t.input.charCodeAt(t.position);continue}if(r=t.line,Ey(t,e,IK,!1,!0),n.push(t.result),Wi(t,!0,-1),p=t.input.charCodeAt(t.position),(t.line===r||t.lineIndent>e)&&p!==0)wr(t,"bad indentation of a sequence entry");else if(t.lineIndent<e)break}return A?(t.tag=o,t.anchor=a,t.kind="sequence",t.result=n,!0):!1}function P6e(t,e,r){var o,a,n,u,A=t.tag,p=t.anchor,h={},C={},w=null,v=null,b=null,E=!1,R=!1,L;for(t.anchor!==null&&(t.anchorMap[t.anchor]=h),L=t.input.charCodeAt(t.position);L!==0;){if(o=t.input.charCodeAt(t.position+1),n=t.line,u=t.position,(L===63||L===58)&&wa(o))L===63?(E&&(yy(t,h,C,w,v,null),w=v=b=null),R=!0,E=!0,a=!0):E?(E=!1,a=!0):wr(t,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),t.position+=1,L=o;else if(Ey(t,r,CK,!1,!0))if(t.line===n){for(L=t.input.charCodeAt(t.position);Jg(L);)L=t.input.charCodeAt(++t.position);if(L===58)L=t.input.charCodeAt(++t.position),wa(L)||wr(t,"a whitespace character is expected after the key-value separator within a block mapping"),E&&(yy(t,h,C,w,v,null),w=v=b=null),R=!0,E=!1,a=!1,w=t.tag,v=t.result;else if(R)wr(t,"can not read an implicit mapping pair; a colon is missed");else return t.tag=A,t.anchor=p,!0}else if(R)wr(t,"can not read a block mapping entry; a multiline key may not be an implicit key");else return t.tag=A,t.anchor=p,!0;else break;if((t.line===n||t.lineIndent>e)&&(Ey(t,e,LD,!0,a)&&(E?v=t.result:b=t.result),E||(yy(t,h,C,w,v,b,n,u),w=v=b=null),Wi(t,!0,-1),L=t.input.charCodeAt(t.position)),t.lineIndent>e&&L!==0)wr(t,"bad indentation of a mapping entry");else if(t.lineIndent<e)break}return E&&yy(t,h,C,w,v,null),R&&(t.tag=A,t.anchor=p,t.kind="mapping",t.result=h),R}function x6e(t){var e,r=!1,o=!1,a,n,u;if(u=t.input.charCodeAt(t.position),u!==33)return!1;if(t.tag!==null&&wr(t,"duplication of a tag property"),u=t.input.charCodeAt(++t.position),u===60?(r=!0,u=t.input.charCodeAt(++t.position)):u===33?(o=!0,a="!!",u=t.input.charCodeAt(++t.position)):a="!",e=t.position,r){do u=t.input.charCodeAt(++t.position);while(u!==0&&u!==62);t.position<t.length?(n=t.input.slice(e,t.position),u=t.input.charCodeAt(++t.position)):wr(t,"unexpected end of the stream within a verbatim tag")}else{for(;u!==0&&!wa(u);)u===33&&(o?wr(t,"tag suffix cannot contain exclamation marks"):(a=t.input.slice(e-1,t.position+1),wK.test(a)||wr(t,"named tag handle cannot contain such characters"),o=!0,e=t.position+1)),u=t.input.charCodeAt(++t.position);n=t.input.slice(e,t.position),d6e.test(n)&&wr(t,"tag suffix cannot contain flow indicator characters")}return n&&!BK.test(n)&&wr(t,"tag name cannot contain such characters: "+n),r?t.tag=n:Wp.call(t.tagMap,a)?t.tag=t.tagMap[a]+n:a==="!"?t.tag="!"+n:a==="!!"?t.tag="tag:yaml.org,2002:"+n:wr(t,'undeclared tag handle "'+a+'"'),!0}function b6e(t){var e,r;if(r=t.input.charCodeAt(t.position),r!==38)return!1;for(t.anchor!==null&&wr(t,"duplication of an anchor property"),r=t.input.charCodeAt(++t.position),e=t.position;r!==0&&!wa(r)&&!my(r);)r=t.input.charCodeAt(++t.position);return t.position===e&&wr(t,"name of an anchor node must contain at least one character"),t.anchor=t.input.slice(e,t.position),!0}function Q6e(t){var e,r,o;if(o=t.input.charCodeAt(t.position),o!==42)return!1;for(o=t.input.charCodeAt(++t.position),e=t.position;o!==0&&!wa(o)&&!my(o);)o=t.input.charCodeAt(++t.position);return t.position===e&&wr(t,"name of an alias node must contain at least one character"),r=t.input.slice(e,t.position),Wp.call(t.anchorMap,r)||wr(t,'unidentified alias "'+r+'"'),t.result=t.anchorMap[r],Wi(t,!0,-1),!0}function Ey(t,e,r,o,a){var n,u,A,p=1,h=!1,C=!1,w,v,b,E,R;if(t.listener!==null&&t.listener("open",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,n=u=A=LD===r||IK===r,o&&Wi(t,!0,-1)&&(h=!0,t.lineIndent>e?p=1:t.lineIndent===e?p=0:t.lineIndent<e&&(p=-1)),p===1)for(;x6e(t)||b6e(t);)Wi(t,!0,-1)?(h=!0,A=n,t.lineIndent>e?p=1:t.lineIndent===e?p=0:t.lineIndent<e&&(p=-1)):A=!1;if(A&&(A=h||a),(p===1||LD===r)&&(ND===r||CK===r?E=e:E=e+1,R=t.position-t.lineStart,p===1?A&&(mK(t,R)||P6e(t,R,E))||D6e(t,E)?C=!0:(u&&S6e(t,E)||B6e(t,E)||v6e(t,E)?C=!0:Q6e(t)?(C=!0,(t.tag!==null||t.anchor!==null)&&wr(t,"alias node should not have any properties")):w6e(t,E,ND===r)&&(C=!0,t.tag===null&&(t.tag="?")),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):p===0&&(C=A&&mK(t,R))),t.tag!==null&&t.tag!=="!")if(t.tag==="?"){for(t.result!==null&&t.kind!=="scalar"&&wr(t,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+t.kind+'"'),w=0,v=t.implicitTypes.length;w<v;w+=1)if(b=t.implicitTypes[w],b.resolve(t.result)){t.result=b.construct(t.result),t.tag=b.tag,t.anchor!==null&&(t.anchorMap[t.anchor]=t.result);break}}else Wp.call(t.typeMap[t.kind||"fallback"],t.tag)?(b=t.typeMap[t.kind||"fallback"][t.tag],t.result!==null&&b.kind!==t.kind&&wr(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+b.kind+'", not "'+t.kind+'"'),b.resolve(t.result)?(t.result=b.construct(t.result),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):wr(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")):wr(t,"unknown tag !<"+t.tag+">");return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||C}function k6e(t){var e=t.position,r,o,a,n=!1,u;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};(u=t.input.charCodeAt(t.position))!==0&&(Wi(t,!0,-1),u=t.input.charCodeAt(t.position),!(t.lineIndent>0||u!==37));){for(n=!0,u=t.input.charCodeAt(++t.position),r=t.position;u!==0&&!wa(u);)u=t.input.charCodeAt(++t.position);for(o=t.input.slice(r,t.position),a=[],o.length<1&&wr(t,"directive name must not be less than one character in length");u!==0;){for(;Jg(u);)u=t.input.charCodeAt(++t.position);if(u===35){do u=t.input.charCodeAt(++t.position);while(u!==0&&!Wu(u));break}if(Wu(u))break;for(r=t.position;u!==0&&!wa(u);)u=t.input.charCodeAt(++t.position);a.push(t.input.slice(r,t.position))}u!==0&&CT(t),Wp.call(gK,o)?gK[o](t,o,a):OD(t,'unknown document directive "'+o+'"')}if(Wi(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,Wi(t,!0,-1)):n&&wr(t,"directives end mark is expected"),Ey(t,t.lineIndent-1,LD,!1,!0),Wi(t,!0,-1),t.checkLineBreaks&&g6e.test(t.input.slice(e,t.position))&&OD(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&MD(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,Wi(t,!0,-1));return}if(t.position<t.length-1)wr(t,"end of the stream or a document separator is expected");else return}function PK(t,e){t=String(t),e=e||{},t.length!==0&&(t.charCodeAt(t.length-1)!==10&&t.charCodeAt(t.length-1)!==13&&(t+=` |
26 | `),t.charCodeAt(0)===65279&&(t=t.slice(1)));var r=new o6e(t,e),o=t.indexOf("\0");for(o!==-1&&(r.position=o,wr(r,"null byte is not allowed in input")),r.input+="\0";r.input.charCodeAt(r.position)===32;)r.lineIndent+=1,r.position+=1;for(;r.position<r.length-1;)d6e(r);return r.documents}function CK(t,e,r){e!==null&&typeof e=="object"&&typeof r>"u"&&(r=e,e=null);var o=EK(t,r);if(typeof e!="function")return o;for(var a=0,n=o.length;a<n;a+=1)e(o[a])}function IK(t,e){var r=EK(t,e);if(r.length!==0){if(r.length===1)return r[0];throw new uK("expected a single document in the stream, but found more")}}function m6e(t,e,r){return typeof e=="object"&&e!==null&&typeof r>"u"&&(r=e,e=null),CK(t,e,mf.extend({schema:AK},r))}function y6e(t,e){return IK(t,mf.extend({schema:AK},e))}_I.exports.loadAll=CK;_I.exports.load=IK;_I.exports.safeLoadAll=m6e;_I.exports.safeLoad=y6e});var WK=U((_xt,wT)=>{"use strict";var qI=Hg(),jI=cy(),E6e=UI(),C6e=Ay(),QK=Object.prototype.toString,kK=Object.prototype.hasOwnProperty,I6e=9,HI=10,w6e=13,B6e=32,v6e=33,D6e=34,FK=35,S6e=37,P6e=38,x6e=39,b6e=42,RK=44,Q6e=45,TK=58,k6e=61,F6e=62,R6e=63,T6e=64,NK=91,LK=93,N6e=96,OK=123,L6e=124,MK=125,wo={};wo[0]="\\0";wo[7]="\\a";wo[8]="\\b";wo[9]="\\t";wo[10]="\\n";wo[11]="\\v";wo[12]="\\f";wo[13]="\\r";wo[27]="\\e";wo[34]='\\"';wo[92]="\\\\";wo[133]="\\N";wo[160]="\\_";wo[8232]="\\L";wo[8233]="\\P";var O6e=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function M6e(t,e){var r,o,a,n,u,A,p;if(e===null)return{};for(r={},o=Object.keys(e),a=0,n=o.length;a<n;a+=1)u=o[a],A=String(e[u]),u.slice(0,2)==="!!"&&(u="tag:yaml.org,2002:"+u.slice(2)),p=t.compiledTypeMap.fallback[u],p&&kK.call(p.styleAliases,A)&&(A=p.styleAliases[A]),r[u]=A;return r}function BK(t){var e,r,o;if(e=t.toString(16).toUpperCase(),t<=255)r="x",o=2;else if(t<=65535)r="u",o=4;else if(t<=4294967295)r="U",o=8;else throw new jI("code point within a string may not be greater than 0xFFFFFFFF");return"\\"+r+qI.repeat("0",o-e.length)+e}function U6e(t){this.schema=t.schema||E6e,this.indent=Math.max(1,t.indent||2),this.noArrayIndent=t.noArrayIndent||!1,this.skipInvalid=t.skipInvalid||!1,this.flowLevel=qI.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=M6e(this.schema,t.styles||null),this.sortKeys=t.sortKeys||!1,this.lineWidth=t.lineWidth||80,this.noRefs=t.noRefs||!1,this.noCompatMode=t.noCompatMode||!1,this.condenseFlow=t.condenseFlow||!1,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function vK(t,e){for(var r=qI.repeat(" ",e),o=0,a=-1,n="",u,A=t.length;o<A;)a=t.indexOf(` | 26 | `),t.charCodeAt(0)===65279&&(t=t.slice(1)));var r=new I6e(t,e),o=t.indexOf("\0");for(o!==-1&&(r.position=o,wr(r,"null byte is not allowed in input")),r.input+="\0";r.input.charCodeAt(r.position)===32;)r.lineIndent+=1,r.position+=1;for(;r.position<r.length-1;)k6e(r);return r.documents}function xK(t,e,r){e!==null&&typeof e=="object"&&typeof r>"u"&&(r=e,e=null);var o=PK(t,r);if(typeof e!="function")return o;for(var a=0,n=o.length;a<n;a+=1)e(o[a])}function bK(t,e){var r=PK(t,e);if(r.length!==0){if(r.length===1)return r[0];throw new yK("expected a single document in the stream, but found more")}}function F6e(t,e,r){return typeof e=="object"&&e!==null&&typeof r>"u"&&(r=e,e=null),xK(t,e,Cf.extend({schema:EK},r))}function R6e(t,e){return bK(t,Cf.extend({schema:EK},e))}WI.exports.loadAll=xK;WI.exports.load=bK;WI.exports.safeLoadAll=F6e;WI.exports.safeLoad=R6e});var $K=U((sbt,DT)=>{"use strict";var KI=Wg(),VI=hy(),T6e=GI(),N6e=dy(),MK=Object.prototype.toString,UK=Object.prototype.hasOwnProperty,L6e=9,YI=10,O6e=13,M6e=32,U6e=33,_6e=34,_K=35,H6e=37,q6e=38,j6e=39,G6e=42,HK=44,W6e=45,qK=58,Y6e=61,K6e=62,V6e=63,J6e=64,jK=91,GK=93,z6e=96,WK=123,X6e=124,YK=125,wo={};wo[0]="\\0";wo[7]="\\a";wo[8]="\\b";wo[9]="\\t";wo[10]="\\n";wo[11]="\\v";wo[12]="\\f";wo[13]="\\r";wo[27]="\\e";wo[34]='\\"';wo[92]="\\\\";wo[133]="\\N";wo[160]="\\_";wo[8232]="\\L";wo[8233]="\\P";var Z6e=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function $6e(t,e){var r,o,a,n,u,A,p;if(e===null)return{};for(r={},o=Object.keys(e),a=0,n=o.length;a<n;a+=1)u=o[a],A=String(e[u]),u.slice(0,2)==="!!"&&(u="tag:yaml.org,2002:"+u.slice(2)),p=t.compiledTypeMap.fallback[u],p&&UK.call(p.styleAliases,A)&&(A=p.styleAliases[A]),r[u]=A;return r}function kK(t){var e,r,o;if(e=t.toString(16).toUpperCase(),t<=255)r="x",o=2;else if(t<=65535)r="u",o=4;else if(t<=4294967295)r="U",o=8;else throw new VI("code point within a string may not be greater than 0xFFFFFFFF");return"\\"+r+KI.repeat("0",o-e.length)+e}function eqe(t){this.schema=t.schema||T6e,this.indent=Math.max(1,t.indent||2),this.noArrayIndent=t.noArrayIndent||!1,this.skipInvalid=t.skipInvalid||!1,this.flowLevel=KI.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=$6e(this.schema,t.styles||null),this.sortKeys=t.sortKeys||!1,this.lineWidth=t.lineWidth||80,this.noRefs=t.noRefs||!1,this.noCompatMode=t.noCompatMode||!1,this.condenseFlow=t.condenseFlow||!1,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function FK(t,e){for(var r=KI.repeat(" ",e),o=0,a=-1,n="",u,A=t.length;o<A;)a=t.indexOf(` |
27 | `,o),a===-1?(u=t.slice(o),o=A):(u=t.slice(o,a+1),o=a+1),u.length&&u!==` | 27 | `,o),a===-1?(u=t.slice(o),o=A):(u=t.slice(o,a+1),o=a+1),u.length&&u!==` |
28 | `&&(n+=r),n+=u;return n}function ET(t,e){return` | 28 | `&&(n+=r),n+=u;return n}function wT(t,e){return` |
29 | `+qI.repeat(" ",t.indent*e)}function _6e(t,e){var r,o,a;for(r=0,o=t.implicitTypes.length;r<o;r+=1)if(a=t.implicitTypes[r],a.resolve(e))return!0;return!1}function IT(t){return t===B6e||t===I6e}function gy(t){return 32<=t&&t<=126||161<=t&&t<=55295&&t!==8232&&t!==8233||57344<=t&&t<=65533&&t!==65279||65536<=t&&t<=1114111}function H6e(t){return gy(t)&&!IT(t)&&t!==65279&&t!==w6e&&t!==HI}function DK(t,e){return gy(t)&&t!==65279&&t!==RK&&t!==NK&&t!==LK&&t!==OK&&t!==MK&&t!==TK&&(t!==FK||e&&H6e(e))}function q6e(t){return gy(t)&&t!==65279&&!IT(t)&&t!==Q6e&&t!==R6e&&t!==TK&&t!==RK&&t!==NK&&t!==LK&&t!==OK&&t!==MK&&t!==FK&&t!==P6e&&t!==b6e&&t!==v6e&&t!==L6e&&t!==k6e&&t!==F6e&&t!==x6e&&t!==D6e&&t!==S6e&&t!==T6e&&t!==N6e}function UK(t){var e=/^\n* /;return e.test(t)}var _K=1,HK=2,qK=3,jK=4,QD=5;function j6e(t,e,r,o,a){var n,u,A,p=!1,h=!1,C=o!==-1,w=-1,v=q6e(t.charCodeAt(0))&&!IT(t.charCodeAt(t.length-1));if(e)for(n=0;n<t.length;n++){if(u=t.charCodeAt(n),!gy(u))return QD;A=n>0?t.charCodeAt(n-1):null,v=v&&DK(u,A)}else{for(n=0;n<t.length;n++){if(u=t.charCodeAt(n),u===HI)p=!0,C&&(h=h||n-w-1>o&&t[w+1]!==" ",w=n);else if(!gy(u))return QD;A=n>0?t.charCodeAt(n-1):null,v=v&&DK(u,A)}h=h||C&&n-w-1>o&&t[w+1]!==" "}return!p&&!h?v&&!a(t)?_K:HK:r>9&&UK(t)?QD:h?jK:qK}function G6e(t,e,r,o){t.dump=function(){if(e.length===0)return"''";if(!t.noCompatMode&&O6e.indexOf(e)!==-1)return"'"+e+"'";var a=t.indent*Math.max(1,r),n=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-a),u=o||t.flowLevel>-1&&r>=t.flowLevel;function A(p){return _6e(t,p)}switch(j6e(e,u,t.indent,n,A)){case _K:return e;case HK:return"'"+e.replace(/'/g,"''")+"'";case qK:return"|"+SK(e,t.indent)+PK(vK(e,a));case jK:return">"+SK(e,t.indent)+PK(vK(W6e(e,n),a));case QD:return'"'+Y6e(e,n)+'"';default:throw new jI("impossible error: invalid scalar style")}}()}function SK(t,e){var r=UK(t)?String(e):"",o=t[t.length-1]===` | 29 | `+KI.repeat(" ",t.indent*e)}function tqe(t,e){var r,o,a;for(r=0,o=t.implicitTypes.length;r<o;r+=1)if(a=t.implicitTypes[r],a.resolve(e))return!0;return!1}function vT(t){return t===M6e||t===L6e}function Cy(t){return 32<=t&&t<=126||161<=t&&t<=55295&&t!==8232&&t!==8233||57344<=t&&t<=65533&&t!==65279||65536<=t&&t<=1114111}function rqe(t){return Cy(t)&&!vT(t)&&t!==65279&&t!==O6e&&t!==YI}function RK(t,e){return Cy(t)&&t!==65279&&t!==HK&&t!==jK&&t!==GK&&t!==WK&&t!==YK&&t!==qK&&(t!==_K||e&&rqe(e))}function nqe(t){return Cy(t)&&t!==65279&&!vT(t)&&t!==W6e&&t!==V6e&&t!==qK&&t!==HK&&t!==jK&&t!==GK&&t!==WK&&t!==YK&&t!==_K&&t!==q6e&&t!==G6e&&t!==U6e&&t!==X6e&&t!==Y6e&&t!==K6e&&t!==j6e&&t!==_6e&&t!==H6e&&t!==J6e&&t!==z6e}function KK(t){var e=/^\n* /;return e.test(t)}var VK=1,JK=2,zK=3,XK=4,UD=5;function iqe(t,e,r,o,a){var n,u,A,p=!1,h=!1,C=o!==-1,w=-1,v=nqe(t.charCodeAt(0))&&!vT(t.charCodeAt(t.length-1));if(e)for(n=0;n<t.length;n++){if(u=t.charCodeAt(n),!Cy(u))return UD;A=n>0?t.charCodeAt(n-1):null,v=v&&RK(u,A)}else{for(n=0;n<t.length;n++){if(u=t.charCodeAt(n),u===YI)p=!0,C&&(h=h||n-w-1>o&&t[w+1]!==" ",w=n);else if(!Cy(u))return UD;A=n>0?t.charCodeAt(n-1):null,v=v&&RK(u,A)}h=h||C&&n-w-1>o&&t[w+1]!==" "}return!p&&!h?v&&!a(t)?VK:JK:r>9&&KK(t)?UD:h?XK:zK}function sqe(t,e,r,o){t.dump=function(){if(e.length===0)return"''";if(!t.noCompatMode&&Z6e.indexOf(e)!==-1)return"'"+e+"'";var a=t.indent*Math.max(1,r),n=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-a),u=o||t.flowLevel>-1&&r>=t.flowLevel;function A(p){return tqe(t,p)}switch(iqe(e,u,t.indent,n,A)){case VK:return e;case JK:return"'"+e.replace(/'/g,"''")+"'";case zK:return"|"+TK(e,t.indent)+NK(FK(e,a));case XK:return">"+TK(e,t.indent)+NK(FK(oqe(e,n),a));case UD:return'"'+aqe(e,n)+'"';default:throw new VI("impossible error: invalid scalar style")}}()}function TK(t,e){var r=KK(t)?String(e):"",o=t[t.length-1]===` |
30 | `,a=o&&(t[t.length-2]===` | 30 | `,a=o&&(t[t.length-2]===` |
31 | `||t===` | 31 | `||t===` |
32 | `),n=a?"+":o?"":"-";return r+n+` | 32 | `),n=a?"+":o?"":"-";return r+n+` |
33 | `}function PK(t){return t[t.length-1]===` | 33 | `}function NK(t){return t[t.length-1]===` |
34 | `?t.slice(0,-1):t}function W6e(t,e){for(var r=/(\n+)([^\n]*)/g,o=function(){var h=t.indexOf(` | 34 | `?t.slice(0,-1):t}function oqe(t,e){for(var r=/(\n+)([^\n]*)/g,o=function(){var h=t.indexOf(` |
35 | `);return h=h!==-1?h:t.length,r.lastIndex=h,xK(t.slice(0,h),e)}(),a=t[0]===` | 35 | `);return h=h!==-1?h:t.length,r.lastIndex=h,LK(t.slice(0,h),e)}(),a=t[0]===` |
36 | `||t[0]===" ",n,u;u=r.exec(t);){var A=u[1],p=u[2];n=p[0]===" ",o+=A+(!a&&!n&&p!==""?` | 36 | `||t[0]===" ",n,u;u=r.exec(t);){var A=u[1],p=u[2];n=p[0]===" ",o+=A+(!a&&!n&&p!==""?` |
37 | `:"")+xK(p,e),a=n}return o}function xK(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,o,a=0,n,u=0,A=0,p="";o=r.exec(t);)A=o.index,A-a>e&&(n=u>a?u:A,p+=` | 37 | `:"")+LK(p,e),a=n}return o}function LK(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,o,a=0,n,u=0,A=0,p="";o=r.exec(t);)A=o.index,A-a>e&&(n=u>a?u:A,p+=` |
38 | `+t.slice(a,n),a=n+1),u=A;return p+=` | 38 | `+t.slice(a,n),a=n+1),u=A;return p+=` |
39 | `,t.length-a>e&&u>a?p+=t.slice(a,u)+` | 39 | `,t.length-a>e&&u>a?p+=t.slice(a,u)+` |
40 | `+t.slice(u+1):p+=t.slice(a),p.slice(1)}function Y6e(t){for(var e="",r,o,a,n=0;n<t.length;n++){if(r=t.charCodeAt(n),r>=55296&&r<=56319&&(o=t.charCodeAt(n+1),o>=56320&&o<=57343)){e+=BK((r-55296)*1024+o-56320+65536),n++;continue}a=wo[r],e+=!a&&gy(r)?t[n]:a||BK(r)}return e}function K6e(t,e,r){var o="",a=t.tag,n,u;for(n=0,u=r.length;n<u;n+=1)Yg(t,e,r[n],!1,!1)&&(n!==0&&(o+=","+(t.condenseFlow?"":" ")),o+=t.dump);t.tag=a,t.dump="["+o+"]"}function J6e(t,e,r,o){var a="",n=t.tag,u,A;for(u=0,A=r.length;u<A;u+=1)Yg(t,e+1,r[u],!0,!0)&&((!o||u!==0)&&(a+=ET(t,e)),t.dump&&HI===t.dump.charCodeAt(0)?a+="-":a+="- ",a+=t.dump);t.tag=n,t.dump=a||"[]"}function V6e(t,e,r){var o="",a=t.tag,n=Object.keys(r),u,A,p,h,C;for(u=0,A=n.length;u<A;u+=1)C="",u!==0&&(C+=", "),t.condenseFlow&&(C+='"'),p=n[u],h=r[p],Yg(t,e,p,!1,!1)&&(t.dump.length>1024&&(C+="? "),C+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),Yg(t,e,h,!1,!1)&&(C+=t.dump,o+=C));t.tag=a,t.dump="{"+o+"}"}function z6e(t,e,r,o){var a="",n=t.tag,u=Object.keys(r),A,p,h,C,w,v;if(t.sortKeys===!0)u.sort();else if(typeof t.sortKeys=="function")u.sort(t.sortKeys);else if(t.sortKeys)throw new jI("sortKeys must be a boolean or a function");for(A=0,p=u.length;A<p;A+=1)v="",(!o||A!==0)&&(v+=ET(t,e)),h=u[A],C=r[h],Yg(t,e+1,h,!0,!0,!0)&&(w=t.tag!==null&&t.tag!=="?"||t.dump&&t.dump.length>1024,w&&(t.dump&&HI===t.dump.charCodeAt(0)?v+="?":v+="? "),v+=t.dump,w&&(v+=ET(t,e)),Yg(t,e+1,C,!0,w)&&(t.dump&&HI===t.dump.charCodeAt(0)?v+=":":v+=": ",v+=t.dump,a+=v));t.tag=n,t.dump=a||"{}"}function bK(t,e,r){var o,a,n,u,A,p;for(a=r?t.explicitTypes:t.implicitTypes,n=0,u=a.length;n<u;n+=1)if(A=a[n],(A.instanceOf||A.predicate)&&(!A.instanceOf||typeof e=="object"&&e instanceof A.instanceOf)&&(!A.predicate||A.predicate(e))){if(t.tag=r?A.tag:"?",A.represent){if(p=t.styleMap[A.tag]||A.defaultStyle,QK.call(A.represent)==="[object Function]")o=A.represent(e,p);else if(kK.call(A.represent,p))o=A.represent[p](e,p);else throw new jI("!<"+A.tag+'> tag resolver accepts not "'+p+'" style');t.dump=o}return!0}return!1}function Yg(t,e,r,o,a,n){t.tag=null,t.dump=r,bK(t,r,!1)||bK(t,r,!0);var u=QK.call(t.dump);o&&(o=t.flowLevel<0||t.flowLevel>e);var A=u==="[object Object]"||u==="[object Array]",p,h;if(A&&(p=t.duplicates.indexOf(r),h=p!==-1),(t.tag!==null&&t.tag!=="?"||h||t.indent!==2&&e>0)&&(a=!1),h&&t.usedDuplicates[p])t.dump="*ref_"+p;else{if(A&&h&&!t.usedDuplicates[p]&&(t.usedDuplicates[p]=!0),u==="[object Object]")o&&Object.keys(t.dump).length!==0?(z6e(t,e,t.dump,a),h&&(t.dump="&ref_"+p+t.dump)):(V6e(t,e,t.dump),h&&(t.dump="&ref_"+p+" "+t.dump));else if(u==="[object Array]"){var C=t.noArrayIndent&&e>0?e-1:e;o&&t.dump.length!==0?(J6e(t,C,t.dump,a),h&&(t.dump="&ref_"+p+t.dump)):(K6e(t,C,t.dump),h&&(t.dump="&ref_"+p+" "+t.dump))}else if(u==="[object String]")t.tag!=="?"&&G6e(t,t.dump,e,n);else{if(t.skipInvalid)return!1;throw new jI("unacceptable kind of an object to dump "+u)}t.tag!==null&&t.tag!=="?"&&(t.dump="!<"+t.tag+"> "+t.dump)}return!0}function X6e(t,e){var r=[],o=[],a,n;for(CT(t,r,o),a=0,n=o.length;a<n;a+=1)e.duplicates.push(r[o[a]]);e.usedDuplicates=new Array(n)}function CT(t,e,r){var o,a,n;if(t!==null&&typeof t=="object")if(a=e.indexOf(t),a!==-1)r.indexOf(a)===-1&&r.push(a);else if(e.push(t),Array.isArray(t))for(a=0,n=t.length;a<n;a+=1)CT(t[a],e,r);else for(o=Object.keys(t),a=0,n=o.length;a<n;a+=1)CT(t[o[a]],e,r)}function GK(t,e){e=e||{};var r=new U6e(e);return r.noRefs||X6e(t,r),Yg(r,0,t,!0,!0)?r.dump+` | 40 | `+t.slice(u+1):p+=t.slice(a),p.slice(1)}function aqe(t){for(var e="",r,o,a,n=0;n<t.length;n++){if(r=t.charCodeAt(n),r>=55296&&r<=56319&&(o=t.charCodeAt(n+1),o>=56320&&o<=57343)){e+=kK((r-55296)*1024+o-56320+65536),n++;continue}a=wo[r],e+=!a&&Cy(r)?t[n]:a||kK(r)}return e}function lqe(t,e,r){var o="",a=t.tag,n,u;for(n=0,u=r.length;n<u;n+=1)zg(t,e,r[n],!1,!1)&&(n!==0&&(o+=","+(t.condenseFlow?"":" ")),o+=t.dump);t.tag=a,t.dump="["+o+"]"}function cqe(t,e,r,o){var a="",n=t.tag,u,A;for(u=0,A=r.length;u<A;u+=1)zg(t,e+1,r[u],!0,!0)&&((!o||u!==0)&&(a+=wT(t,e)),t.dump&&YI===t.dump.charCodeAt(0)?a+="-":a+="- ",a+=t.dump);t.tag=n,t.dump=a||"[]"}function uqe(t,e,r){var o="",a=t.tag,n=Object.keys(r),u,A,p,h,C;for(u=0,A=n.length;u<A;u+=1)C="",u!==0&&(C+=", "),t.condenseFlow&&(C+='"'),p=n[u],h=r[p],zg(t,e,p,!1,!1)&&(t.dump.length>1024&&(C+="? "),C+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),zg(t,e,h,!1,!1)&&(C+=t.dump,o+=C));t.tag=a,t.dump="{"+o+"}"}function Aqe(t,e,r,o){var a="",n=t.tag,u=Object.keys(r),A,p,h,C,w,v;if(t.sortKeys===!0)u.sort();else if(typeof t.sortKeys=="function")u.sort(t.sortKeys);else if(t.sortKeys)throw new VI("sortKeys must be a boolean or a function");for(A=0,p=u.length;A<p;A+=1)v="",(!o||A!==0)&&(v+=wT(t,e)),h=u[A],C=r[h],zg(t,e+1,h,!0,!0,!0)&&(w=t.tag!==null&&t.tag!=="?"||t.dump&&t.dump.length>1024,w&&(t.dump&&YI===t.dump.charCodeAt(0)?v+="?":v+="? "),v+=t.dump,w&&(v+=wT(t,e)),zg(t,e+1,C,!0,w)&&(t.dump&&YI===t.dump.charCodeAt(0)?v+=":":v+=": ",v+=t.dump,a+=v));t.tag=n,t.dump=a||"{}"}function OK(t,e,r){var o,a,n,u,A,p;for(a=r?t.explicitTypes:t.implicitTypes,n=0,u=a.length;n<u;n+=1)if(A=a[n],(A.instanceOf||A.predicate)&&(!A.instanceOf||typeof e=="object"&&e instanceof A.instanceOf)&&(!A.predicate||A.predicate(e))){if(t.tag=r?A.tag:"?",A.represent){if(p=t.styleMap[A.tag]||A.defaultStyle,MK.call(A.represent)==="[object Function]")o=A.represent(e,p);else if(UK.call(A.represent,p))o=A.represent[p](e,p);else throw new VI("!<"+A.tag+'> tag resolver accepts not "'+p+'" style');t.dump=o}return!0}return!1}function zg(t,e,r,o,a,n){t.tag=null,t.dump=r,OK(t,r,!1)||OK(t,r,!0);var u=MK.call(t.dump);o&&(o=t.flowLevel<0||t.flowLevel>e);var A=u==="[object Object]"||u==="[object Array]",p,h;if(A&&(p=t.duplicates.indexOf(r),h=p!==-1),(t.tag!==null&&t.tag!=="?"||h||t.indent!==2&&e>0)&&(a=!1),h&&t.usedDuplicates[p])t.dump="*ref_"+p;else{if(A&&h&&!t.usedDuplicates[p]&&(t.usedDuplicates[p]=!0),u==="[object Object]")o&&Object.keys(t.dump).length!==0?(Aqe(t,e,t.dump,a),h&&(t.dump="&ref_"+p+t.dump)):(uqe(t,e,t.dump),h&&(t.dump="&ref_"+p+" "+t.dump));else if(u==="[object Array]"){var C=t.noArrayIndent&&e>0?e-1:e;o&&t.dump.length!==0?(cqe(t,C,t.dump,a),h&&(t.dump="&ref_"+p+t.dump)):(lqe(t,C,t.dump),h&&(t.dump="&ref_"+p+" "+t.dump))}else if(u==="[object String]")t.tag!=="?"&&sqe(t,t.dump,e,n);else{if(t.skipInvalid)return!1;throw new VI("unacceptable kind of an object to dump "+u)}t.tag!==null&&t.tag!=="?"&&(t.dump="!<"+t.tag+"> "+t.dump)}return!0}function fqe(t,e){var r=[],o=[],a,n;for(BT(t,r,o),a=0,n=o.length;a<n;a+=1)e.duplicates.push(r[o[a]]);e.usedDuplicates=new Array(n)}function BT(t,e,r){var o,a,n;if(t!==null&&typeof t=="object")if(a=e.indexOf(t),a!==-1)r.indexOf(a)===-1&&r.push(a);else if(e.push(t),Array.isArray(t))for(a=0,n=t.length;a<n;a+=1)BT(t[a],e,r);else for(o=Object.keys(t),a=0,n=o.length;a<n;a+=1)BT(t[o[a]],e,r)}function ZK(t,e){e=e||{};var r=new eqe(e);return r.noRefs||fqe(t,r),zg(r,0,t,!0,!0)?r.dump+` |
41 | `:""}function Z6e(t,e){return GK(t,qI.extend({schema:C6e},e))}wT.exports.dump=GK;wT.exports.safeDump=Z6e});var KK=U((Hxt,Pi)=>{"use strict";var kD=wK(),YK=WK();function FD(t){return function(){throw new Error("Function "+t+" is deprecated and cannot be used.")}}Pi.exports.Type=as();Pi.exports.Schema=qg();Pi.exports.FAILSAFE_SCHEMA=vD();Pi.exports.JSON_SCHEMA=pT();Pi.exports.CORE_SCHEMA=hT();Pi.exports.DEFAULT_SAFE_SCHEMA=Ay();Pi.exports.DEFAULT_FULL_SCHEMA=UI();Pi.exports.load=kD.load;Pi.exports.loadAll=kD.loadAll;Pi.exports.safeLoad=kD.safeLoad;Pi.exports.safeLoadAll=kD.safeLoadAll;Pi.exports.dump=YK.dump;Pi.exports.safeDump=YK.safeDump;Pi.exports.YAMLException=cy();Pi.exports.MINIMAL_SCHEMA=vD();Pi.exports.SAFE_SCHEMA=Ay();Pi.exports.DEFAULT_SCHEMA=UI();Pi.exports.scan=FD("scan");Pi.exports.parse=FD("parse");Pi.exports.compose=FD("compose");Pi.exports.addConstructor=FD("addConstructor")});var VK=U((qxt,JK)=>{"use strict";var $6e=KK();JK.exports=$6e});var XK=U((jxt,zK)=>{"use strict";function eqe(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Kg(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Kg)}eqe(Kg,Error);Kg.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var C="",w;for(w=0;w<h.parts.length;w++)C+=h.parts[w]instanceof Array?n(h.parts[w][0])+"-"+n(h.parts[w][1]):n(h.parts[w]);return"["+(h.inverted?"^":"")+C+"]"},any:function(h){return"any character"},end:function(h){return"end of input"},other:function(h){return h.description}};function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(C){return"\\x0"+o(C)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(C){return"\\x"+o(C)})}function n(h){return h.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(C){return"\\x0"+o(C)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(C){return"\\x"+o(C)})}function u(h){return r[h.type](h)}function A(h){var C=new Array(h.length),w,v;for(w=0;w<h.length;w++)C[w]=u(h[w]);if(C.sort(),C.length>0){for(w=1,v=1;w<C.length;w++)C[w-1]!==C[w]&&(C[v]=C[w],v++);C.length=v}switch(C.length){case 1:return C[0];case 2:return C[0]+" or "+C[1];default:return C.slice(0,-1).join(", ")+", or "+C[C.length-1]}}function p(h){return h?'"'+a(h)+'"':"end of input"}return"Expected "+A(t)+" but "+p(e)+" found."};function tqe(t,e){e=e!==void 0?e:{};var r={},o={Start:yu},a=yu,n=function(ee){return[].concat(...ee)},u="-",A=Dn("-",!1),p=function(ee){return ee},h=function(ee){return Object.assign({},...ee)},C="#",w=Dn("#",!1),v=gc(),b=function(){return{}},E=":",R=Dn(":",!1),L=function(ee,we){return{[ee]:we}},_=",",J=Dn(",",!1),re=function(ee,we){return we},oe=function(ee,we,qe){return Object.assign({},...[ee].concat(we).map(Be=>({[Be]:qe})))},pe=function(ee){return ee},he=function(ee){return ee},ve=ta("correct indentation"),ge=" ",le=Dn(" ",!1),Pe=function(ee){return ee.length===sa*Ma},g=function(ee){return ee.length===(sa+1)*Ma},De=function(){return sa++,!0},Ee=function(){return sa--,!0},de=function(){return SA()},ne=ta("pseudostring"),Z=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,me=ui(["\r",` | 41 | `:""}function pqe(t,e){return ZK(t,KI.extend({schema:N6e},e))}DT.exports.dump=ZK;DT.exports.safeDump=pqe});var tV=U((obt,Pi)=>{"use strict";var _D=QK(),eV=$K();function HD(t){return function(){throw new Error("Function "+t+" is deprecated and cannot be used.")}}Pi.exports.Type=as();Pi.exports.Schema=Yg();Pi.exports.FAILSAFE_SCHEMA=RD();Pi.exports.JSON_SCHEMA=dT();Pi.exports.CORE_SCHEMA=mT();Pi.exports.DEFAULT_SAFE_SCHEMA=dy();Pi.exports.DEFAULT_FULL_SCHEMA=GI();Pi.exports.load=_D.load;Pi.exports.loadAll=_D.loadAll;Pi.exports.safeLoad=_D.safeLoad;Pi.exports.safeLoadAll=_D.safeLoadAll;Pi.exports.dump=eV.dump;Pi.exports.safeDump=eV.safeDump;Pi.exports.YAMLException=hy();Pi.exports.MINIMAL_SCHEMA=RD();Pi.exports.SAFE_SCHEMA=dy();Pi.exports.DEFAULT_SCHEMA=GI();Pi.exports.scan=HD("scan");Pi.exports.parse=HD("parse");Pi.exports.compose=HD("compose");Pi.exports.addConstructor=HD("addConstructor")});var nV=U((abt,rV)=>{"use strict";var hqe=tV();rV.exports=hqe});var sV=U((lbt,iV)=>{"use strict";function gqe(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Xg(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Xg)}gqe(Xg,Error);Xg.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var C="",w;for(w=0;w<h.parts.length;w++)C+=h.parts[w]instanceof Array?n(h.parts[w][0])+"-"+n(h.parts[w][1]):n(h.parts[w]);return"["+(h.inverted?"^":"")+C+"]"},any:function(h){return"any character"},end:function(h){return"end of input"},other:function(h){return h.description}};function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(C){return"\\x0"+o(C)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(C){return"\\x"+o(C)})}function n(h){return h.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(C){return"\\x0"+o(C)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(C){return"\\x"+o(C)})}function u(h){return r[h.type](h)}function A(h){var C=new Array(h.length),w,v;for(w=0;w<h.length;w++)C[w]=u(h[w]);if(C.sort(),C.length>0){for(w=1,v=1;w<C.length;w++)C[w-1]!==C[w]&&(C[v]=C[w],v++);C.length=v}switch(C.length){case 1:return C[0];case 2:return C[0]+" or "+C[1];default:return C.slice(0,-1).join(", ")+", or "+C[C.length-1]}}function p(h){return h?'"'+a(h)+'"':"end of input"}return"Expected "+A(t)+" but "+p(e)+" found."};function dqe(t,e){e=e!==void 0?e:{};var r={},o={Start:Eu},a=Eu,n=function(ee){return[].concat(...ee)},u="-",A=Dn("-",!1),p=function(ee){return ee},h=function(ee){return Object.assign({},...ee)},C="#",w=Dn("#",!1),v=Ec(),b=function(){return{}},E=":",R=Dn(":",!1),L=function(ee,we){return{[ee]:we}},_=",",V=Dn(",",!1),re=function(ee,we){return we},ae=function(ee,we,je){return Object.assign({},...[ee].concat(we).map(Be=>({[Be]:je})))},he=function(ee){return ee},pe=function(ee){return ee},De=na("correct indentation"),ge=" ",le=Dn(" ",!1),Pe=function(ee){return ee.length===aa*qa},g=function(ee){return ee.length===(aa+1)*qa},ve=function(){return aa++,!0},Ee=function(){return aa--,!0},de=function(){return bA()},ne=na("pseudostring"),Z=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,me=ui(["\r",` |
42 | `," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),be=/^[^\r\n\t ,\][{}:#"']/,ut=ui(["\r",` | 42 | `," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),be=/^[^\r\n\t ,\][{}:#"']/,ut=ui(["\r",` |
43 | `," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),H=function(){return SA().replace(/^ *| *$/g,"")},yt="--",Me=Dn("--",!1),Te=/^[a-zA-Z\/0-9]/,Qe=ui([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),Ue=/^[^\r\n\t :,]/,je=ui(["\r",` | 43 | `," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),H=function(){return bA().replace(/^ *| *$/g,"")},yt="--",Me=Dn("--",!1),Te=/^[a-zA-Z\/0-9]/,Qe=ui([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),_e=/^[^\r\n\t :,]/,qe=ui(["\r",` |
44 | `," "," ",":",","],!0,!1),At="null",Le=Dn("null",!1),x=function(){return null},I="true",P=Dn("true",!1),y=function(){return!0},F="false",z=Dn("false",!1),X=function(){return!1},$=ta("string"),ie='"',ke=Dn('"',!1),Ne=function(){return""},st=function(ee){return ee},ht=function(ee){return ee.join("")},Ut=/^[^"\\\0-\x1F\x7F]/,Xt=ui(['"',"\\",["\0",""],"\x7F"],!0,!1),Pt='\\"',tn=Dn('\\"',!1),Dr=function(){return'"'},fr="\\\\",Br=Dn("\\\\",!1),jr=function(){return"\\"},Hn="\\/",bs=Dn("\\/",!1),ki=function(){return"/"},gs="\\b",to=Dn("\\b",!1),Di=function(){return"\b"},Qs="\\f",ro=Dn("\\f",!1),uc=function(){return"\f"},hu="\\n",op=Dn("\\n",!1),ap=function(){return` | 44 | `," "," ",":",","],!0,!1),At="null",Oe=Dn("null",!1),x=function(){return null},I="true",P=Dn("true",!1),y=function(){return!0},F="false",z=Dn("false",!1),X=function(){return!1},$=na("string"),ie='"',ke=Dn('"',!1),Ne=function(){return""},st=function(ee){return ee},ht=function(ee){return ee.join("")},Ut=/^[^"\\\0-\x1F\x7F]/,Xt=ui(['"',"\\",["\0",""],"\x7F"],!0,!1),xt='\\"',tn=Dn('\\"',!1),Dr=function(){return'"'},fr="\\\\",Br=Dn("\\\\",!1),jr=function(){return"\\"},Hn="\\/",bs=Dn("\\/",!1),ki=function(){return"/"},gs="\\b",to=Dn("\\b",!1),Di=function(){return"\b"},Qs="\\f",ro=Dn("\\f",!1),hc=function(){return"\f"},gu="\\n",cp=Dn("\\n",!1),up=function(){return` |
45 | `},ks="\\r",Cn=Dn("\\r",!1),no=function(){return"\r"},Fs="\\t",dl=Dn("\\t",!1),ml=function(){return" "},io="\\u",_e=Dn("\\u",!1),Fn=function(ee,we,qe,Be){return String.fromCharCode(parseInt(`0x${ee}${we}${qe}${Be}`))},Fi=/^[0-9a-fA-F]/,Rn=ui([["0","9"],["a","f"],["A","F"]],!1,!1),Ui=ta("blank space"),Zt=/^[ \t]/,Ri=ui([" "," "],!1,!1),Zn=ta("white space"),La=/^[ \t\n\r]/,$t=ui([" "," ",` | 45 | `},ks="\\r",Cn=Dn("\\r",!1),no=function(){return"\r"},Fs="\\t",Cl=Dn("\\t",!1),Il=function(){return" "},io="\\u",Ue=Dn("\\u",!1),Fn=function(ee,we,je,Be){return String.fromCharCode(parseInt(`0x${ee}${we}${je}${Be}`))},Fi=/^[0-9a-fA-F]/,Rn=ui([["0","9"],["a","f"],["A","F"]],!1,!1),Ui=na("blank space"),Zt=/^[ \t]/,Ri=ui([" "," "],!1,!1),$n=na("white space"),Ua=/^[ \t\n\r]/,$t=ui([" "," ",` |
46 | `,"\r"],!1,!1),Ac=`\r | 46 | `,"\r"],!1,!1),gc=`\r |
47 | `,gu=Dn(`\r | 47 | `,du=Dn(`\r |
48 | `,!1),fc=` | 48 | `,!1),dc=` |
49 | `,yl=Dn(` | 49 | `,wl=Dn(` |
50 | `,!1),DA="\r",du=Dn("\r",!1),Ce=0,Rt=0,pc=[{line:1,column:1}],_i=0,mu=[],qt=0,El;if("startRule"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=o[e.startRule]}function SA(){return t.substring(Rt,Ce)}function lp(){return Lo(Rt,Ce)}function hc(ee,we){throw we=we!==void 0?we:Lo(Rt,Ce),Cl([ta(ee)],t.substring(Rt,Ce),we)}function PA(ee,we){throw we=we!==void 0?we:Lo(Rt,Ce),so(ee,we)}function Dn(ee,we){return{type:"literal",text:ee,ignoreCase:we}}function ui(ee,we,qe){return{type:"class",parts:ee,inverted:we,ignoreCase:qe}}function gc(){return{type:"any"}}function xA(){return{type:"end"}}function ta(ee){return{type:"other",description:ee}}function Hi(ee){var we=pc[ee],qe;if(we)return we;for(qe=ee-1;!pc[qe];)qe--;for(we=pc[qe],we={line:we.line,column:we.column};qe<ee;)t.charCodeAt(qe)===10?(we.line++,we.column=1):we.column++,qe++;return pc[ee]=we,we}function Lo(ee,we){var qe=Hi(ee),Be=Hi(we);return{start:{offset:ee,line:qe.line,column:qe.column},end:{offset:we,line:Be.line,column:Be.column}}}function $e(ee){Ce<_i||(Ce>_i&&(_i=Ce,mu=[]),mu.push(ee))}function so(ee,we){return new Kg(ee,null,null,we)}function Cl(ee,we,qe){return new Kg(Kg.buildMessage(ee,we),ee,we,qe)}function yu(){var ee;return ee=bA(),ee}function qi(){var ee,we,qe;for(ee=Ce,we=[],qe=Eu();qe!==r;)we.push(qe),qe=Eu();return we!==r&&(Rt=ee,we=n(we)),ee=we,ee}function Eu(){var ee,we,qe,Be,xe;return ee=Ce,we=ds(),we!==r?(t.charCodeAt(Ce)===45?(qe=u,Ce++):(qe=r,qt===0&&$e(A)),qe!==r?(Be=qn(),Be!==r?(xe=dc(),xe!==r?(Rt=ee,we=p(xe),ee=we):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r),ee}function bA(){var ee,we,qe;for(ee=Ce,we=[],qe=Oa();qe!==r;)we.push(qe),qe=Oa();return we!==r&&(Rt=ee,we=h(we)),ee=we,ee}function Oa(){var ee,we,qe,Be,xe,Je,vt,tr,Zr;if(ee=Ce,we=qn(),we===r&&(we=null),we!==r){if(qe=Ce,t.charCodeAt(Ce)===35?(Be=C,Ce++):(Be=r,qt===0&&$e(w)),Be!==r){if(xe=[],Je=Ce,vt=Ce,qt++,tr=mi(),qt--,tr===r?vt=void 0:(Ce=vt,vt=r),vt!==r?(t.length>Ce?(tr=t.charAt(Ce),Ce++):(tr=r,qt===0&&$e(v)),tr!==r?(vt=[vt,tr],Je=vt):(Ce=Je,Je=r)):(Ce=Je,Je=r),Je!==r)for(;Je!==r;)xe.push(Je),Je=Ce,vt=Ce,qt++,tr=mi(),qt--,tr===r?vt=void 0:(Ce=vt,vt=r),vt!==r?(t.length>Ce?(tr=t.charAt(Ce),Ce++):(tr=r,qt===0&&$e(v)),tr!==r?(vt=[vt,tr],Je=vt):(Ce=Je,Je=r)):(Ce=Je,Je=r);else xe=r;xe!==r?(Be=[Be,xe],qe=Be):(Ce=qe,qe=r)}else Ce=qe,qe=r;if(qe===r&&(qe=null),qe!==r){if(Be=[],xe=es(),xe!==r)for(;xe!==r;)Be.push(xe),xe=es();else Be=r;Be!==r?(Rt=ee,we=b(),ee=we):(Ce=ee,ee=r)}else Ce=ee,ee=r}else Ce=ee,ee=r;if(ee===r&&(ee=Ce,we=ds(),we!==r?(qe=ra(),qe!==r?(Be=qn(),Be===r&&(Be=null),Be!==r?(t.charCodeAt(Ce)===58?(xe=E,Ce++):(xe=r,qt===0&&$e(R)),xe!==r?(Je=qn(),Je===r&&(Je=null),Je!==r?(vt=dc(),vt!==r?(Rt=ee,we=L(qe,vt),ee=we):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r),ee===r&&(ee=Ce,we=ds(),we!==r?(qe=oo(),qe!==r?(Be=qn(),Be===r&&(Be=null),Be!==r?(t.charCodeAt(Ce)===58?(xe=E,Ce++):(xe=r,qt===0&&$e(R)),xe!==r?(Je=qn(),Je===r&&(Je=null),Je!==r?(vt=dc(),vt!==r?(Rt=ee,we=L(qe,vt),ee=we):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r),ee===r))){if(ee=Ce,we=ds(),we!==r)if(qe=oo(),qe!==r)if(Be=qn(),Be!==r)if(xe=na(),xe!==r){if(Je=[],vt=es(),vt!==r)for(;vt!==r;)Je.push(vt),vt=es();else Je=r;Je!==r?(Rt=ee,we=L(qe,xe),ee=we):(Ce=ee,ee=r)}else Ce=ee,ee=r;else Ce=ee,ee=r;else Ce=ee,ee=r;else Ce=ee,ee=r;if(ee===r)if(ee=Ce,we=ds(),we!==r)if(qe=oo(),qe!==r){if(Be=[],xe=Ce,Je=qn(),Je===r&&(Je=null),Je!==r?(t.charCodeAt(Ce)===44?(vt=_,Ce++):(vt=r,qt===0&&$e(J)),vt!==r?(tr=qn(),tr===r&&(tr=null),tr!==r?(Zr=oo(),Zr!==r?(Rt=xe,Je=re(qe,Zr),xe=Je):(Ce=xe,xe=r)):(Ce=xe,xe=r)):(Ce=xe,xe=r)):(Ce=xe,xe=r),xe!==r)for(;xe!==r;)Be.push(xe),xe=Ce,Je=qn(),Je===r&&(Je=null),Je!==r?(t.charCodeAt(Ce)===44?(vt=_,Ce++):(vt=r,qt===0&&$e(J)),vt!==r?(tr=qn(),tr===r&&(tr=null),tr!==r?(Zr=oo(),Zr!==r?(Rt=xe,Je=re(qe,Zr),xe=Je):(Ce=xe,xe=r)):(Ce=xe,xe=r)):(Ce=xe,xe=r)):(Ce=xe,xe=r);else Be=r;Be!==r?(xe=qn(),xe===r&&(xe=null),xe!==r?(t.charCodeAt(Ce)===58?(Je=E,Ce++):(Je=r,qt===0&&$e(R)),Je!==r?(vt=qn(),vt===r&&(vt=null),vt!==r?(tr=dc(),tr!==r?(Rt=ee,we=oe(qe,Be,tr),ee=we):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)}else Ce=ee,ee=r;else Ce=ee,ee=r}return ee}function dc(){var ee,we,qe,Be,xe,Je,vt;if(ee=Ce,we=Ce,qt++,qe=Ce,Be=mi(),Be!==r?(xe=Ot(),xe!==r?(t.charCodeAt(Ce)===45?(Je=u,Ce++):(Je=r,qt===0&&$e(A)),Je!==r?(vt=qn(),vt!==r?(Be=[Be,xe,Je,vt],qe=Be):(Ce=qe,qe=r)):(Ce=qe,qe=r)):(Ce=qe,qe=r)):(Ce=qe,qe=r),qt--,qe!==r?(Ce=we,we=void 0):we=r,we!==r?(qe=es(),qe!==r?(Be=Sn(),Be!==r?(xe=qi(),xe!==r?(Je=di(),Je!==r?(Rt=ee,we=pe(xe),ee=we):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r),ee===r&&(ee=Ce,we=mi(),we!==r?(qe=Sn(),qe!==r?(Be=bA(),Be!==r?(xe=di(),xe!==r?(Rt=ee,we=pe(Be),ee=we):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r),ee===r))if(ee=Ce,we=Rs(),we!==r){if(qe=[],Be=es(),Be!==r)for(;Be!==r;)qe.push(Be),Be=es();else qe=r;qe!==r?(Rt=ee,we=he(we),ee=we):(Ce=ee,ee=r)}else Ce=ee,ee=r;return ee}function ds(){var ee,we,qe;for(qt++,ee=Ce,we=[],t.charCodeAt(Ce)===32?(qe=ge,Ce++):(qe=r,qt===0&&$e(le));qe!==r;)we.push(qe),t.charCodeAt(Ce)===32?(qe=ge,Ce++):(qe=r,qt===0&&$e(le));return we!==r?(Rt=Ce,qe=Pe(we),qe?qe=void 0:qe=r,qe!==r?(we=[we,qe],ee=we):(Ce=ee,ee=r)):(Ce=ee,ee=r),qt--,ee===r&&(we=r,qt===0&&$e(ve)),ee}function Ot(){var ee,we,qe;for(ee=Ce,we=[],t.charCodeAt(Ce)===32?(qe=ge,Ce++):(qe=r,qt===0&&$e(le));qe!==r;)we.push(qe),t.charCodeAt(Ce)===32?(qe=ge,Ce++):(qe=r,qt===0&&$e(le));return we!==r?(Rt=Ce,qe=g(we),qe?qe=void 0:qe=r,qe!==r?(we=[we,qe],ee=we):(Ce=ee,ee=r)):(Ce=ee,ee=r),ee}function Sn(){var ee;return Rt=Ce,ee=De(),ee?ee=void 0:ee=r,ee}function di(){var ee;return Rt=Ce,ee=Ee(),ee?ee=void 0:ee=r,ee}function ra(){var ee;return ee=Ns(),ee===r&&(ee=ia()),ee}function oo(){var ee,we,qe;if(ee=Ns(),ee===r){if(ee=Ce,we=[],qe=Oo(),qe!==r)for(;qe!==r;)we.push(qe),qe=Oo();else we=r;we!==r&&(Rt=ee,we=de()),ee=we}return ee}function Rs(){var ee;return ee=Zi(),ee===r&&(ee=Ts(),ee===r&&(ee=Ns(),ee===r&&(ee=ia()))),ee}function na(){var ee;return ee=Zi(),ee===r&&(ee=Ns(),ee===r&&(ee=Oo())),ee}function ia(){var ee,we,qe,Be,xe,Je;if(qt++,ee=Ce,Z.test(t.charAt(Ce))?(we=t.charAt(Ce),Ce++):(we=r,qt===0&&$e(me)),we!==r){for(qe=[],Be=Ce,xe=qn(),xe===r&&(xe=null),xe!==r?(be.test(t.charAt(Ce))?(Je=t.charAt(Ce),Ce++):(Je=r,qt===0&&$e(ut)),Je!==r?(xe=[xe,Je],Be=xe):(Ce=Be,Be=r)):(Ce=Be,Be=r);Be!==r;)qe.push(Be),Be=Ce,xe=qn(),xe===r&&(xe=null),xe!==r?(be.test(t.charAt(Ce))?(Je=t.charAt(Ce),Ce++):(Je=r,qt===0&&$e(ut)),Je!==r?(xe=[xe,Je],Be=xe):(Ce=Be,Be=r)):(Ce=Be,Be=r);qe!==r?(Rt=ee,we=H(),ee=we):(Ce=ee,ee=r)}else Ce=ee,ee=r;return qt--,ee===r&&(we=r,qt===0&&$e(ne)),ee}function Oo(){var ee,we,qe,Be,xe;if(ee=Ce,t.substr(Ce,2)===yt?(we=yt,Ce+=2):(we=r,qt===0&&$e(Me)),we===r&&(we=null),we!==r)if(Te.test(t.charAt(Ce))?(qe=t.charAt(Ce),Ce++):(qe=r,qt===0&&$e(Qe)),qe!==r){for(Be=[],Ue.test(t.charAt(Ce))?(xe=t.charAt(Ce),Ce++):(xe=r,qt===0&&$e(je));xe!==r;)Be.push(xe),Ue.test(t.charAt(Ce))?(xe=t.charAt(Ce),Ce++):(xe=r,qt===0&&$e(je));Be!==r?(Rt=ee,we=H(),ee=we):(Ce=ee,ee=r)}else Ce=ee,ee=r;else Ce=ee,ee=r;return ee}function Zi(){var ee,we;return ee=Ce,t.substr(Ce,4)===At?(we=At,Ce+=4):(we=r,qt===0&&$e(Le)),we!==r&&(Rt=ee,we=x()),ee=we,ee}function Ts(){var ee,we;return ee=Ce,t.substr(Ce,4)===I?(we=I,Ce+=4):(we=r,qt===0&&$e(P)),we!==r&&(Rt=ee,we=y()),ee=we,ee===r&&(ee=Ce,t.substr(Ce,5)===F?(we=F,Ce+=5):(we=r,qt===0&&$e(z)),we!==r&&(Rt=ee,we=X()),ee=we),ee}function Ns(){var ee,we,qe,Be;return qt++,ee=Ce,t.charCodeAt(Ce)===34?(we=ie,Ce++):(we=r,qt===0&&$e(ke)),we!==r?(t.charCodeAt(Ce)===34?(qe=ie,Ce++):(qe=r,qt===0&&$e(ke)),qe!==r?(Rt=ee,we=Ne(),ee=we):(Ce=ee,ee=r)):(Ce=ee,ee=r),ee===r&&(ee=Ce,t.charCodeAt(Ce)===34?(we=ie,Ce++):(we=r,qt===0&&$e(ke)),we!==r?(qe=Ls(),qe!==r?(t.charCodeAt(Ce)===34?(Be=ie,Ce++):(Be=r,qt===0&&$e(ke)),Be!==r?(Rt=ee,we=st(qe),ee=we):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)),qt--,ee===r&&(we=r,qt===0&&$e($)),ee}function Ls(){var ee,we,qe;if(ee=Ce,we=[],qe=ao(),qe!==r)for(;qe!==r;)we.push(qe),qe=ao();else we=r;return we!==r&&(Rt=ee,we=ht(we)),ee=we,ee}function ao(){var ee,we,qe,Be,xe,Je;return Ut.test(t.charAt(Ce))?(ee=t.charAt(Ce),Ce++):(ee=r,qt===0&&$e(Xt)),ee===r&&(ee=Ce,t.substr(Ce,2)===Pt?(we=Pt,Ce+=2):(we=r,qt===0&&$e(tn)),we!==r&&(Rt=ee,we=Dr()),ee=we,ee===r&&(ee=Ce,t.substr(Ce,2)===fr?(we=fr,Ce+=2):(we=r,qt===0&&$e(Br)),we!==r&&(Rt=ee,we=jr()),ee=we,ee===r&&(ee=Ce,t.substr(Ce,2)===Hn?(we=Hn,Ce+=2):(we=r,qt===0&&$e(bs)),we!==r&&(Rt=ee,we=ki()),ee=we,ee===r&&(ee=Ce,t.substr(Ce,2)===gs?(we=gs,Ce+=2):(we=r,qt===0&&$e(to)),we!==r&&(Rt=ee,we=Di()),ee=we,ee===r&&(ee=Ce,t.substr(Ce,2)===Qs?(we=Qs,Ce+=2):(we=r,qt===0&&$e(ro)),we!==r&&(Rt=ee,we=uc()),ee=we,ee===r&&(ee=Ce,t.substr(Ce,2)===hu?(we=hu,Ce+=2):(we=r,qt===0&&$e(op)),we!==r&&(Rt=ee,we=ap()),ee=we,ee===r&&(ee=Ce,t.substr(Ce,2)===ks?(we=ks,Ce+=2):(we=r,qt===0&&$e(Cn)),we!==r&&(Rt=ee,we=no()),ee=we,ee===r&&(ee=Ce,t.substr(Ce,2)===Fs?(we=Fs,Ce+=2):(we=r,qt===0&&$e(dl)),we!==r&&(Rt=ee,we=ml()),ee=we,ee===r&&(ee=Ce,t.substr(Ce,2)===io?(we=io,Ce+=2):(we=r,qt===0&&$e(_e)),we!==r?(qe=Wn(),qe!==r?(Be=Wn(),Be!==r?(xe=Wn(),xe!==r?(Je=Wn(),Je!==r?(Rt=ee,we=Fn(qe,Be,xe,Je),ee=we):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)))))))))),ee}function Wn(){var ee;return Fi.test(t.charAt(Ce))?(ee=t.charAt(Ce),Ce++):(ee=r,qt===0&&$e(Rn)),ee}function qn(){var ee,we;if(qt++,ee=[],Zt.test(t.charAt(Ce))?(we=t.charAt(Ce),Ce++):(we=r,qt===0&&$e(Ri)),we!==r)for(;we!==r;)ee.push(we),Zt.test(t.charAt(Ce))?(we=t.charAt(Ce),Ce++):(we=r,qt===0&&$e(Ri));else ee=r;return qt--,ee===r&&(we=r,qt===0&&$e(Ui)),ee}function $i(){var ee,we;if(qt++,ee=[],La.test(t.charAt(Ce))?(we=t.charAt(Ce),Ce++):(we=r,qt===0&&$e($t)),we!==r)for(;we!==r;)ee.push(we),La.test(t.charAt(Ce))?(we=t.charAt(Ce),Ce++):(we=r,qt===0&&$e($t));else ee=r;return qt--,ee===r&&(we=r,qt===0&&$e(Zn)),ee}function es(){var ee,we,qe,Be,xe,Je;if(ee=Ce,we=mi(),we!==r){for(qe=[],Be=Ce,xe=qn(),xe===r&&(xe=null),xe!==r?(Je=mi(),Je!==r?(xe=[xe,Je],Be=xe):(Ce=Be,Be=r)):(Ce=Be,Be=r);Be!==r;)qe.push(Be),Be=Ce,xe=qn(),xe===r&&(xe=null),xe!==r?(Je=mi(),Je!==r?(xe=[xe,Je],Be=xe):(Ce=Be,Be=r)):(Ce=Be,Be=r);qe!==r?(we=[we,qe],ee=we):(Ce=ee,ee=r)}else Ce=ee,ee=r;return ee}function mi(){var ee;return t.substr(Ce,2)===Ac?(ee=Ac,Ce+=2):(ee=r,qt===0&&$e(gu)),ee===r&&(t.charCodeAt(Ce)===10?(ee=fc,Ce++):(ee=r,qt===0&&$e(yl)),ee===r&&(t.charCodeAt(Ce)===13?(ee=DA,Ce++):(ee=r,qt===0&&$e(du)))),ee}let Ma=2,sa=0;if(El=a(),El!==r&&Ce===t.length)return El;throw El!==r&&Ce<t.length&&$e(xA()),Cl(mu,_i<t.length?t.charAt(_i):null,_i<t.length?Lo(_i,_i+1):Lo(_i,_i))}zK.exports={SyntaxError:Kg,parse:tqe}});function $K(t){return t.match(rqe)?t:JSON.stringify(t)}function tJ(t){return typeof t>"u"?!0:typeof t=="object"&&t!==null?Object.keys(t).every(e=>tJ(t[e])):!1}function BT(t,e,r){if(t===null)return`null | 50 | `,!1),xA="\r",mu=Dn("\r",!1),Ce=0,Rt=0,mc=[{line:1,column:1}],_i=0,yu=[],qt=0,Bl;if("startRule"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=o[e.startRule]}function bA(){return t.substring(Rt,Ce)}function Ap(){return Mo(Rt,Ce)}function yc(ee,we){throw we=we!==void 0?we:Mo(Rt,Ce),vl([na(ee)],t.substring(Rt,Ce),we)}function QA(ee,we){throw we=we!==void 0?we:Mo(Rt,Ce),so(ee,we)}function Dn(ee,we){return{type:"literal",text:ee,ignoreCase:we}}function ui(ee,we,je){return{type:"class",parts:ee,inverted:we,ignoreCase:je}}function Ec(){return{type:"any"}}function kA(){return{type:"end"}}function na(ee){return{type:"other",description:ee}}function Hi(ee){var we=mc[ee],je;if(we)return we;for(je=ee-1;!mc[je];)je--;for(we=mc[je],we={line:we.line,column:we.column};je<ee;)t.charCodeAt(je)===10?(we.line++,we.column=1):we.column++,je++;return mc[ee]=we,we}function Mo(ee,we){var je=Hi(ee),Be=Hi(we);return{start:{offset:ee,line:je.line,column:je.column},end:{offset:we,line:Be.line,column:Be.column}}}function $e(ee){Ce<_i||(Ce>_i&&(_i=Ce,yu=[]),yu.push(ee))}function so(ee,we){return new Xg(ee,null,null,we)}function vl(ee,we,je){return new Xg(Xg.buildMessage(ee,we),ee,we,je)}function Eu(){var ee;return ee=FA(),ee}function qi(){var ee,we,je;for(ee=Ce,we=[],je=Cu();je!==r;)we.push(je),je=Cu();return we!==r&&(Rt=ee,we=n(we)),ee=we,ee}function Cu(){var ee,we,je,Be,xe;return ee=Ce,we=ds(),we!==r?(t.charCodeAt(Ce)===45?(je=u,Ce++):(je=r,qt===0&&$e(A)),je!==r?(Be=qn(),Be!==r?(xe=Cc(),xe!==r?(Rt=ee,we=p(xe),ee=we):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r),ee}function FA(){var ee,we,je;for(ee=Ce,we=[],je=Ha();je!==r;)we.push(je),je=Ha();return we!==r&&(Rt=ee,we=h(we)),ee=we,ee}function Ha(){var ee,we,je,Be,xe,Ve,vt,tr,Zr;if(ee=Ce,we=qn(),we===r&&(we=null),we!==r){if(je=Ce,t.charCodeAt(Ce)===35?(Be=C,Ce++):(Be=r,qt===0&&$e(w)),Be!==r){if(xe=[],Ve=Ce,vt=Ce,qt++,tr=mi(),qt--,tr===r?vt=void 0:(Ce=vt,vt=r),vt!==r?(t.length>Ce?(tr=t.charAt(Ce),Ce++):(tr=r,qt===0&&$e(v)),tr!==r?(vt=[vt,tr],Ve=vt):(Ce=Ve,Ve=r)):(Ce=Ve,Ve=r),Ve!==r)for(;Ve!==r;)xe.push(Ve),Ve=Ce,vt=Ce,qt++,tr=mi(),qt--,tr===r?vt=void 0:(Ce=vt,vt=r),vt!==r?(t.length>Ce?(tr=t.charAt(Ce),Ce++):(tr=r,qt===0&&$e(v)),tr!==r?(vt=[vt,tr],Ve=vt):(Ce=Ve,Ve=r)):(Ce=Ve,Ve=r);else xe=r;xe!==r?(Be=[Be,xe],je=Be):(Ce=je,je=r)}else Ce=je,je=r;if(je===r&&(je=null),je!==r){if(Be=[],xe=es(),xe!==r)for(;xe!==r;)Be.push(xe),xe=es();else Be=r;Be!==r?(Rt=ee,we=b(),ee=we):(Ce=ee,ee=r)}else Ce=ee,ee=r}else Ce=ee,ee=r;if(ee===r&&(ee=Ce,we=ds(),we!==r?(je=ia(),je!==r?(Be=qn(),Be===r&&(Be=null),Be!==r?(t.charCodeAt(Ce)===58?(xe=E,Ce++):(xe=r,qt===0&&$e(R)),xe!==r?(Ve=qn(),Ve===r&&(Ve=null),Ve!==r?(vt=Cc(),vt!==r?(Rt=ee,we=L(je,vt),ee=we):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r),ee===r&&(ee=Ce,we=ds(),we!==r?(je=oo(),je!==r?(Be=qn(),Be===r&&(Be=null),Be!==r?(t.charCodeAt(Ce)===58?(xe=E,Ce++):(xe=r,qt===0&&$e(R)),xe!==r?(Ve=qn(),Ve===r&&(Ve=null),Ve!==r?(vt=Cc(),vt!==r?(Rt=ee,we=L(je,vt),ee=we):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r),ee===r))){if(ee=Ce,we=ds(),we!==r)if(je=oo(),je!==r)if(Be=qn(),Be!==r)if(xe=sa(),xe!==r){if(Ve=[],vt=es(),vt!==r)for(;vt!==r;)Ve.push(vt),vt=es();else Ve=r;Ve!==r?(Rt=ee,we=L(je,xe),ee=we):(Ce=ee,ee=r)}else Ce=ee,ee=r;else Ce=ee,ee=r;else Ce=ee,ee=r;else Ce=ee,ee=r;if(ee===r)if(ee=Ce,we=ds(),we!==r)if(je=oo(),je!==r){if(Be=[],xe=Ce,Ve=qn(),Ve===r&&(Ve=null),Ve!==r?(t.charCodeAt(Ce)===44?(vt=_,Ce++):(vt=r,qt===0&&$e(V)),vt!==r?(tr=qn(),tr===r&&(tr=null),tr!==r?(Zr=oo(),Zr!==r?(Rt=xe,Ve=re(je,Zr),xe=Ve):(Ce=xe,xe=r)):(Ce=xe,xe=r)):(Ce=xe,xe=r)):(Ce=xe,xe=r),xe!==r)for(;xe!==r;)Be.push(xe),xe=Ce,Ve=qn(),Ve===r&&(Ve=null),Ve!==r?(t.charCodeAt(Ce)===44?(vt=_,Ce++):(vt=r,qt===0&&$e(V)),vt!==r?(tr=qn(),tr===r&&(tr=null),tr!==r?(Zr=oo(),Zr!==r?(Rt=xe,Ve=re(je,Zr),xe=Ve):(Ce=xe,xe=r)):(Ce=xe,xe=r)):(Ce=xe,xe=r)):(Ce=xe,xe=r);else Be=r;Be!==r?(xe=qn(),xe===r&&(xe=null),xe!==r?(t.charCodeAt(Ce)===58?(Ve=E,Ce++):(Ve=r,qt===0&&$e(R)),Ve!==r?(vt=qn(),vt===r&&(vt=null),vt!==r?(tr=Cc(),tr!==r?(Rt=ee,we=ae(je,Be,tr),ee=we):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)}else Ce=ee,ee=r;else Ce=ee,ee=r}return ee}function Cc(){var ee,we,je,Be,xe,Ve,vt;if(ee=Ce,we=Ce,qt++,je=Ce,Be=mi(),Be!==r?(xe=Ot(),xe!==r?(t.charCodeAt(Ce)===45?(Ve=u,Ce++):(Ve=r,qt===0&&$e(A)),Ve!==r?(vt=qn(),vt!==r?(Be=[Be,xe,Ve,vt],je=Be):(Ce=je,je=r)):(Ce=je,je=r)):(Ce=je,je=r)):(Ce=je,je=r),qt--,je!==r?(Ce=we,we=void 0):we=r,we!==r?(je=es(),je!==r?(Be=Sn(),Be!==r?(xe=qi(),xe!==r?(Ve=di(),Ve!==r?(Rt=ee,we=he(xe),ee=we):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r),ee===r&&(ee=Ce,we=mi(),we!==r?(je=Sn(),je!==r?(Be=FA(),Be!==r?(xe=di(),xe!==r?(Rt=ee,we=he(Be),ee=we):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r),ee===r))if(ee=Ce,we=Rs(),we!==r){if(je=[],Be=es(),Be!==r)for(;Be!==r;)je.push(Be),Be=es();else je=r;je!==r?(Rt=ee,we=pe(we),ee=we):(Ce=ee,ee=r)}else Ce=ee,ee=r;return ee}function ds(){var ee,we,je;for(qt++,ee=Ce,we=[],t.charCodeAt(Ce)===32?(je=ge,Ce++):(je=r,qt===0&&$e(le));je!==r;)we.push(je),t.charCodeAt(Ce)===32?(je=ge,Ce++):(je=r,qt===0&&$e(le));return we!==r?(Rt=Ce,je=Pe(we),je?je=void 0:je=r,je!==r?(we=[we,je],ee=we):(Ce=ee,ee=r)):(Ce=ee,ee=r),qt--,ee===r&&(we=r,qt===0&&$e(De)),ee}function Ot(){var ee,we,je;for(ee=Ce,we=[],t.charCodeAt(Ce)===32?(je=ge,Ce++):(je=r,qt===0&&$e(le));je!==r;)we.push(je),t.charCodeAt(Ce)===32?(je=ge,Ce++):(je=r,qt===0&&$e(le));return we!==r?(Rt=Ce,je=g(we),je?je=void 0:je=r,je!==r?(we=[we,je],ee=we):(Ce=ee,ee=r)):(Ce=ee,ee=r),ee}function Sn(){var ee;return Rt=Ce,ee=ve(),ee?ee=void 0:ee=r,ee}function di(){var ee;return Rt=Ce,ee=Ee(),ee?ee=void 0:ee=r,ee}function ia(){var ee;return ee=Ns(),ee===r&&(ee=oa()),ee}function oo(){var ee,we,je;if(ee=Ns(),ee===r){if(ee=Ce,we=[],je=Uo(),je!==r)for(;je!==r;)we.push(je),je=Uo();else we=r;we!==r&&(Rt=ee,we=de()),ee=we}return ee}function Rs(){var ee;return ee=Zi(),ee===r&&(ee=Ts(),ee===r&&(ee=Ns(),ee===r&&(ee=oa()))),ee}function sa(){var ee;return ee=Zi(),ee===r&&(ee=Ns(),ee===r&&(ee=Uo())),ee}function oa(){var ee,we,je,Be,xe,Ve;if(qt++,ee=Ce,Z.test(t.charAt(Ce))?(we=t.charAt(Ce),Ce++):(we=r,qt===0&&$e(me)),we!==r){for(je=[],Be=Ce,xe=qn(),xe===r&&(xe=null),xe!==r?(be.test(t.charAt(Ce))?(Ve=t.charAt(Ce),Ce++):(Ve=r,qt===0&&$e(ut)),Ve!==r?(xe=[xe,Ve],Be=xe):(Ce=Be,Be=r)):(Ce=Be,Be=r);Be!==r;)je.push(Be),Be=Ce,xe=qn(),xe===r&&(xe=null),xe!==r?(be.test(t.charAt(Ce))?(Ve=t.charAt(Ce),Ce++):(Ve=r,qt===0&&$e(ut)),Ve!==r?(xe=[xe,Ve],Be=xe):(Ce=Be,Be=r)):(Ce=Be,Be=r);je!==r?(Rt=ee,we=H(),ee=we):(Ce=ee,ee=r)}else Ce=ee,ee=r;return qt--,ee===r&&(we=r,qt===0&&$e(ne)),ee}function Uo(){var ee,we,je,Be,xe;if(ee=Ce,t.substr(Ce,2)===yt?(we=yt,Ce+=2):(we=r,qt===0&&$e(Me)),we===r&&(we=null),we!==r)if(Te.test(t.charAt(Ce))?(je=t.charAt(Ce),Ce++):(je=r,qt===0&&$e(Qe)),je!==r){for(Be=[],_e.test(t.charAt(Ce))?(xe=t.charAt(Ce),Ce++):(xe=r,qt===0&&$e(qe));xe!==r;)Be.push(xe),_e.test(t.charAt(Ce))?(xe=t.charAt(Ce),Ce++):(xe=r,qt===0&&$e(qe));Be!==r?(Rt=ee,we=H(),ee=we):(Ce=ee,ee=r)}else Ce=ee,ee=r;else Ce=ee,ee=r;return ee}function Zi(){var ee,we;return ee=Ce,t.substr(Ce,4)===At?(we=At,Ce+=4):(we=r,qt===0&&$e(Oe)),we!==r&&(Rt=ee,we=x()),ee=we,ee}function Ts(){var ee,we;return ee=Ce,t.substr(Ce,4)===I?(we=I,Ce+=4):(we=r,qt===0&&$e(P)),we!==r&&(Rt=ee,we=y()),ee=we,ee===r&&(ee=Ce,t.substr(Ce,5)===F?(we=F,Ce+=5):(we=r,qt===0&&$e(z)),we!==r&&(Rt=ee,we=X()),ee=we),ee}function Ns(){var ee,we,je,Be;return qt++,ee=Ce,t.charCodeAt(Ce)===34?(we=ie,Ce++):(we=r,qt===0&&$e(ke)),we!==r?(t.charCodeAt(Ce)===34?(je=ie,Ce++):(je=r,qt===0&&$e(ke)),je!==r?(Rt=ee,we=Ne(),ee=we):(Ce=ee,ee=r)):(Ce=ee,ee=r),ee===r&&(ee=Ce,t.charCodeAt(Ce)===34?(we=ie,Ce++):(we=r,qt===0&&$e(ke)),we!==r?(je=Ls(),je!==r?(t.charCodeAt(Ce)===34?(Be=ie,Ce++):(Be=r,qt===0&&$e(ke)),Be!==r?(Rt=ee,we=st(je),ee=we):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)),qt--,ee===r&&(we=r,qt===0&&$e($)),ee}function Ls(){var ee,we,je;if(ee=Ce,we=[],je=ao(),je!==r)for(;je!==r;)we.push(je),je=ao();else we=r;return we!==r&&(Rt=ee,we=ht(we)),ee=we,ee}function ao(){var ee,we,je,Be,xe,Ve;return Ut.test(t.charAt(Ce))?(ee=t.charAt(Ce),Ce++):(ee=r,qt===0&&$e(Xt)),ee===r&&(ee=Ce,t.substr(Ce,2)===xt?(we=xt,Ce+=2):(we=r,qt===0&&$e(tn)),we!==r&&(Rt=ee,we=Dr()),ee=we,ee===r&&(ee=Ce,t.substr(Ce,2)===fr?(we=fr,Ce+=2):(we=r,qt===0&&$e(Br)),we!==r&&(Rt=ee,we=jr()),ee=we,ee===r&&(ee=Ce,t.substr(Ce,2)===Hn?(we=Hn,Ce+=2):(we=r,qt===0&&$e(bs)),we!==r&&(Rt=ee,we=ki()),ee=we,ee===r&&(ee=Ce,t.substr(Ce,2)===gs?(we=gs,Ce+=2):(we=r,qt===0&&$e(to)),we!==r&&(Rt=ee,we=Di()),ee=we,ee===r&&(ee=Ce,t.substr(Ce,2)===Qs?(we=Qs,Ce+=2):(we=r,qt===0&&$e(ro)),we!==r&&(Rt=ee,we=hc()),ee=we,ee===r&&(ee=Ce,t.substr(Ce,2)===gu?(we=gu,Ce+=2):(we=r,qt===0&&$e(cp)),we!==r&&(Rt=ee,we=up()),ee=we,ee===r&&(ee=Ce,t.substr(Ce,2)===ks?(we=ks,Ce+=2):(we=r,qt===0&&$e(Cn)),we!==r&&(Rt=ee,we=no()),ee=we,ee===r&&(ee=Ce,t.substr(Ce,2)===Fs?(we=Fs,Ce+=2):(we=r,qt===0&&$e(Cl)),we!==r&&(Rt=ee,we=Il()),ee=we,ee===r&&(ee=Ce,t.substr(Ce,2)===io?(we=io,Ce+=2):(we=r,qt===0&&$e(Ue)),we!==r?(je=Yn(),je!==r?(Be=Yn(),Be!==r?(xe=Yn(),xe!==r?(Ve=Yn(),Ve!==r?(Rt=ee,we=Fn(je,Be,xe,Ve),ee=we):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)):(Ce=ee,ee=r)))))))))),ee}function Yn(){var ee;return Fi.test(t.charAt(Ce))?(ee=t.charAt(Ce),Ce++):(ee=r,qt===0&&$e(Rn)),ee}function qn(){var ee,we;if(qt++,ee=[],Zt.test(t.charAt(Ce))?(we=t.charAt(Ce),Ce++):(we=r,qt===0&&$e(Ri)),we!==r)for(;we!==r;)ee.push(we),Zt.test(t.charAt(Ce))?(we=t.charAt(Ce),Ce++):(we=r,qt===0&&$e(Ri));else ee=r;return qt--,ee===r&&(we=r,qt===0&&$e(Ui)),ee}function $i(){var ee,we;if(qt++,ee=[],Ua.test(t.charAt(Ce))?(we=t.charAt(Ce),Ce++):(we=r,qt===0&&$e($t)),we!==r)for(;we!==r;)ee.push(we),Ua.test(t.charAt(Ce))?(we=t.charAt(Ce),Ce++):(we=r,qt===0&&$e($t));else ee=r;return qt--,ee===r&&(we=r,qt===0&&$e($n)),ee}function es(){var ee,we,je,Be,xe,Ve;if(ee=Ce,we=mi(),we!==r){for(je=[],Be=Ce,xe=qn(),xe===r&&(xe=null),xe!==r?(Ve=mi(),Ve!==r?(xe=[xe,Ve],Be=xe):(Ce=Be,Be=r)):(Ce=Be,Be=r);Be!==r;)je.push(Be),Be=Ce,xe=qn(),xe===r&&(xe=null),xe!==r?(Ve=mi(),Ve!==r?(xe=[xe,Ve],Be=xe):(Ce=Be,Be=r)):(Ce=Be,Be=r);je!==r?(we=[we,je],ee=we):(Ce=ee,ee=r)}else Ce=ee,ee=r;return ee}function mi(){var ee;return t.substr(Ce,2)===gc?(ee=gc,Ce+=2):(ee=r,qt===0&&$e(du)),ee===r&&(t.charCodeAt(Ce)===10?(ee=dc,Ce++):(ee=r,qt===0&&$e(wl)),ee===r&&(t.charCodeAt(Ce)===13?(ee=xA,Ce++):(ee=r,qt===0&&$e(mu)))),ee}let qa=2,aa=0;if(Bl=a(),Bl!==r&&Ce===t.length)return Bl;throw Bl!==r&&Ce<t.length&&$e(kA()),vl(yu,_i<t.length?t.charAt(_i):null,_i<t.length?Mo(_i,_i+1):Mo(_i,_i))}iV.exports={SyntaxError:Xg,parse:dqe}});function aV(t){return t.match(mqe)?t:JSON.stringify(t)}function cV(t){return typeof t>"u"?!0:typeof t=="object"&&t!==null?Object.keys(t).every(e=>cV(t[e])):!1}function ST(t,e,r){if(t===null)return`null |
51 | `;if(typeof t=="number"||typeof t=="boolean")return`${t.toString()} | 51 | `;if(typeof t=="number"||typeof t=="boolean")return`${t.toString()} |
52 | `;if(typeof t=="string")return`${$K(t)} | 52 | `;if(typeof t=="string")return`${aV(t)} |
53 | `;if(Array.isArray(t)){if(t.length===0)return`[] | 53 | `;if(Array.isArray(t)){if(t.length===0)return`[] |
54 | `;let o=" ".repeat(e);return` | 54 | `;let o=" ".repeat(e);return` |
55 | ${t.map(n=>`${o}- ${BT(n,e+1,!1)}`).join("")}`}if(typeof t=="object"&&t){let[o,a]=t instanceof RD?[t.data,!1]:[t,!0],n=" ".repeat(e),u=Object.keys(o);a&&u.sort((p,h)=>{let C=ZK.indexOf(p),w=ZK.indexOf(h);return C===-1&&w===-1?p<h?-1:p>h?1:0:C!==-1&&w===-1?-1:C===-1&&w!==-1?1:C-w});let A=u.filter(p=>!tJ(o[p])).map((p,h)=>{let C=o[p],w=$K(p),v=BT(C,e+1,!0),b=h>0||r?n:"",E=w.length>1024?`? ${w} | 55 | ${t.map(n=>`${o}- ${ST(n,e+1,!1)}`).join("")}`}if(typeof t=="object"&&t){let[o,a]=t instanceof qD?[t.data,!1]:[t,!0],n=" ".repeat(e),u=Object.keys(o);a&&u.sort((p,h)=>{let C=oV.indexOf(p),w=oV.indexOf(h);return C===-1&&w===-1?p<h?-1:p>h?1:0:C!==-1&&w===-1?-1:C===-1&&w!==-1?1:C-w});let A=u.filter(p=>!cV(o[p])).map((p,h)=>{let C=o[p],w=aV(p),v=ST(C,e+1,!0),b=h>0||r?n:"",E=w.length>1024?`? ${w} |
56 | ${b}:`:`${w}:`,R=v.startsWith(` | 56 | ${b}:`:`${w}:`,R=v.startsWith(` |
57 | `)?v:` ${v}`;return`${b}${E}${R}`}).join(e===0?` | 57 | `)?v:` ${v}`;return`${b}${E}${R}`}).join(e===0?` |
58 | `:"")||` | 58 | `:"")||` |
59 | `;return r?` | 59 | `;return r?` |
60 | ${A}`:`${A}`}throw new Error(`Unsupported value type (${t})`)}function Ia(t){try{let e=BT(t,0,!1);return e!==` | 60 | ${A}`:`${A}`}throw new Error(`Unsupported value type (${t})`)}function Ba(t){try{let e=ST(t,0,!1);return e!==` |
61 | `?e:""}catch(e){throw e.location&&(e.message=e.message.replace(/(\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}function nqe(t){return t.endsWith(` | 61 | `?e:""}catch(e){throw e.location&&(e.message=e.message.replace(/(\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}function yqe(t){return t.endsWith(` |
62 | `)||(t+=` | 62 | `)||(t+=` |
63 | `),(0,eJ.parse)(t)}function sqe(t){if(iqe.test(t))return nqe(t);let e=(0,TD.safeLoad)(t,{schema:TD.FAILSAFE_SCHEMA,json:!0});if(e==null)return{};if(typeof e!="object")throw new Error(`Expected an indexed object, got a ${typeof e} instead. Does your file follow Yaml's rules?`);if(Array.isArray(e))throw new Error("Expected an indexed object, got an array instead. Does your file follow Yaml's rules?");return e}function Yi(t){return sqe(t)}var TD,eJ,rqe,ZK,RD,iqe,rJ=dt(()=>{TD=tt(VK()),eJ=tt(XK()),rqe=/^(?![-?:,\][{}#&*!|>'"%@` \t\r\n]).([ \t]*(?![,\][{}:# \t\r\n]).)*$/,ZK=["__metadata","version","resolution","dependencies","peerDependencies","dependenciesMeta","peerDependenciesMeta","binaries"],RD=class{constructor(e){this.data=e}};Ia.PreserveOrdering=RD;iqe=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i});var GI={};Yt(GI,{parseResolution:()=>ID,parseShell:()=>yD,parseSyml:()=>Yi,stringifyArgument:()=>cT,stringifyArgumentSegment:()=>uT,stringifyArithmeticExpression:()=>CD,stringifyCommand:()=>lT,stringifyCommandChain:()=>ly,stringifyCommandChainThen:()=>aT,stringifyCommandLine:()=>ED,stringifyCommandLineThen:()=>oT,stringifyEnvSegment:()=>mD,stringifyRedirectArgument:()=>OI,stringifyResolution:()=>wD,stringifyShell:()=>ay,stringifyShellLine:()=>ay,stringifySyml:()=>Ia,stringifyValueArgument:()=>Mg});var Ol=dt(()=>{tY();sY();rJ()});var iJ=U((Jxt,vT)=>{"use strict";var oqe=t=>{let e=!1,r=!1,o=!1;for(let a=0;a<t.length;a++){let n=t[a];e&&/[a-zA-Z]/.test(n)&&n.toUpperCase()===n?(t=t.slice(0,a)+"-"+t.slice(a),e=!1,o=r,r=!0,a++):r&&o&&/[a-zA-Z]/.test(n)&&n.toLowerCase()===n?(t=t.slice(0,a-1)+"-"+t.slice(a-1),o=r,r=!1,e=!0):(e=n.toLowerCase()===n&&n.toUpperCase()!==n,o=r,r=n.toUpperCase()===n&&n.toLowerCase()!==n)}return t},nJ=(t,e)=>{if(!(typeof t=="string"||Array.isArray(t)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let r=a=>e.pascalCase?a.charAt(0).toUpperCase()+a.slice(1):a;return Array.isArray(t)?t=t.map(a=>a.trim()).filter(a=>a.length).join("-"):t=t.trim(),t.length===0?"":t.length===1?e.pascalCase?t.toUpperCase():t.toLowerCase():(t!==t.toLowerCase()&&(t=oqe(t)),t=t.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(a,n)=>n.toUpperCase()).replace(/\d+(\w|$)/g,a=>a.toUpperCase()),r(t))};vT.exports=nJ;vT.exports.default=nJ});var sJ=U((Vxt,aqe)=>{aqe.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:"NOW_BUILDER"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"}]});var Jg=U(Za=>{"use strict";var aJ=sJ(),Wu=process.env;Object.defineProperty(Za,"_vendors",{value:aJ.map(function(t){return t.constant})});Za.name=null;Za.isPR=null;aJ.forEach(function(t){let r=(Array.isArray(t.env)?t.env:[t.env]).every(function(o){return oJ(o)});if(Za[t.constant]=r,r)switch(Za.name=t.name,typeof t.pr){case"string":Za.isPR=!!Wu[t.pr];break;case"object":"env"in t.pr?Za.isPR=t.pr.env in Wu&&Wu[t.pr.env]!==t.pr.ne:"any"in t.pr?Za.isPR=t.pr.any.some(function(o){return!!Wu[o]}):Za.isPR=oJ(t.pr);break;default:Za.isPR=null}});Za.isCI=!!(Wu.CI||Wu.CONTINUOUS_INTEGRATION||Wu.BUILD_NUMBER||Wu.RUN_ID||Za.name);function oJ(t){return typeof t=="string"?!!Wu[t]:Object.keys(t).every(function(e){return Wu[e]===t[e]})}});var DT,js,ST,ND,lJ,PT,xT,bT=dt(()=>{DT="",js="\0",ST=/^(-h|--help)(?:=([0-9]+))?$/,ND=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,lJ=/^-[a-zA-Z]{2,}$/,PT=/^([^=]+)=([\s\S]*)$/,xT=process.env.DEBUG_CLI==="1"});var ot,dy,LD,QT,OD=dt(()=>{bT();ot=class extends Error{constructor(e){super(e),this.clipanion={type:"usage"},this.name="UsageError"}},dy=class extends Error{constructor(e,r){if(super(),this.input=e,this.candidates=r,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(o=>o.reason!==null&&o.reason===r[0].reason)){let[{reason:o}]=this.candidates;this.message=`${o} | 63 | `),(0,lV.parse)(t)}function Cqe(t){if(Eqe.test(t))return yqe(t);let e=(0,jD.safeLoad)(t,{schema:jD.FAILSAFE_SCHEMA,json:!0});if(e==null)return{};if(typeof e!="object")throw new Error(`Expected an indexed object, got a ${typeof e} instead. Does your file follow Yaml's rules?`);if(Array.isArray(e))throw new Error("Expected an indexed object, got an array instead. Does your file follow Yaml's rules?");return e}function Yi(t){return Cqe(t)}var jD,lV,mqe,oV,qD,Eqe,uV=dt(()=>{jD=tt(nV()),lV=tt(sV()),mqe=/^(?![-?:,\][{}#&*!|>'"%@` \t\r\n]).([ \t]*(?![,\][{}:# \t\r\n]).)*$/,oV=["__metadata","version","resolution","dependencies","peerDependencies","dependenciesMeta","peerDependenciesMeta","binaries"],qD=class{constructor(e){this.data=e}};Ba.PreserveOrdering=qD;Eqe=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i});var JI={};Yt(JI,{parseResolution:()=>QD,parseShell:()=>PD,parseSyml:()=>Yi,stringifyArgument:()=>fT,stringifyArgumentSegment:()=>pT,stringifyArithmeticExpression:()=>bD,stringifyCommand:()=>AT,stringifyCommandChain:()=>py,stringifyCommandChainThen:()=>uT,stringifyCommandLine:()=>xD,stringifyCommandLineThen:()=>cT,stringifyEnvSegment:()=>SD,stringifyRedirectArgument:()=>qI,stringifyResolution:()=>kD,stringifyShell:()=>fy,stringifyShellLine:()=>fy,stringifySyml:()=>Ba,stringifyValueArgument:()=>qg});var Hl=dt(()=>{cY();pY();uV()});var fV=U((pbt,PT)=>{"use strict";var Iqe=t=>{let e=!1,r=!1,o=!1;for(let a=0;a<t.length;a++){let n=t[a];e&&/[a-zA-Z]/.test(n)&&n.toUpperCase()===n?(t=t.slice(0,a)+"-"+t.slice(a),e=!1,o=r,r=!0,a++):r&&o&&/[a-zA-Z]/.test(n)&&n.toLowerCase()===n?(t=t.slice(0,a-1)+"-"+t.slice(a-1),o=r,r=!1,e=!0):(e=n.toLowerCase()===n&&n.toUpperCase()!==n,o=r,r=n.toUpperCase()===n&&n.toLowerCase()!==n)}return t},AV=(t,e)=>{if(!(typeof t=="string"||Array.isArray(t)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let r=a=>e.pascalCase?a.charAt(0).toUpperCase()+a.slice(1):a;return Array.isArray(t)?t=t.map(a=>a.trim()).filter(a=>a.length).join("-"):t=t.trim(),t.length===0?"":t.length===1?e.pascalCase?t.toUpperCase():t.toLowerCase():(t!==t.toLowerCase()&&(t=Iqe(t)),t=t.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(a,n)=>n.toUpperCase()).replace(/\d+(\w|$)/g,a=>a.toUpperCase()),r(t))};PT.exports=AV;PT.exports.default=AV});var pV=U((hbt,wqe)=>{wqe.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:"NOW_BUILDER"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"}]});var Zg=U(tl=>{"use strict";var gV=pV(),Yu=process.env;Object.defineProperty(tl,"_vendors",{value:gV.map(function(t){return t.constant})});tl.name=null;tl.isPR=null;gV.forEach(function(t){let r=(Array.isArray(t.env)?t.env:[t.env]).every(function(o){return hV(o)});if(tl[t.constant]=r,r)switch(tl.name=t.name,typeof t.pr){case"string":tl.isPR=!!Yu[t.pr];break;case"object":"env"in t.pr?tl.isPR=t.pr.env in Yu&&Yu[t.pr.env]!==t.pr.ne:"any"in t.pr?tl.isPR=t.pr.any.some(function(o){return!!Yu[o]}):tl.isPR=hV(t.pr);break;default:tl.isPR=null}});tl.isCI=!!(Yu.CI||Yu.CONTINUOUS_INTEGRATION||Yu.BUILD_NUMBER||Yu.RUN_ID||tl.name);function hV(t){return typeof t=="string"?!!Yu[t]:Object.keys(t).every(function(e){return Yu[e]===t[e]})}});var xT,js,bT,GD,dV,QT,kT,FT=dt(()=>{xT="",js="\0",bT=/^(-h|--help)(?:=([0-9]+))?$/,GD=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,dV=/^-[a-zA-Z]{2,}$/,QT=/^([^=]+)=([\s\S]*)$/,kT=process.env.DEBUG_CLI==="1"});var ot,Iy,WD,RT,YD=dt(()=>{FT();ot=class extends Error{constructor(e){super(e),this.clipanion={type:"usage"},this.name="UsageError"}},Iy=class extends Error{constructor(e,r){if(super(),this.input=e,this.candidates=r,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(o=>o.reason!==null&&o.reason===r[0].reason)){let[{reason:o}]=this.candidates;this.message=`${o} |
64 | 64 | ||
65 | ${this.candidates.map(({usage:a})=>`$ ${a}`).join(` | 65 | ${this.candidates.map(({usage:a})=>`$ ${a}`).join(` |
66 | `)}`}else if(this.candidates.length===1){let[{usage:o}]=this.candidates;this.message=`Command not found; did you mean: | 66 | `)}`}else if(this.candidates.length===1){let[{usage:o}]=this.candidates;this.message=`Command not found; did you mean: |
67 | 67 | ||
68 | $ ${o} | 68 | $ ${o} |
69 | ${QT(e)}`}else this.message=`Command not found; did you mean one of: | 69 | ${RT(e)}`}else this.message=`Command not found; did you mean one of: |
70 | 70 | ||
71 | ${this.candidates.map(({usage:o},a)=>`${`${a}.`.padStart(4)} ${o}`).join(` | 71 | ${this.candidates.map(({usage:o},a)=>`${`${a}.`.padStart(4)} ${o}`).join(` |
72 | `)} | 72 | `)} |
73 | 73 | ||
74 | ${QT(e)}`}},LD=class extends Error{constructor(e,r){super(),this.input=e,this.usages=r,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: | 74 | ${RT(e)}`}},WD=class extends Error{constructor(e,r){super(),this.input=e,this.usages=r,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: |
75 | 75 | ||
76 | ${this.usages.map((o,a)=>`${`${a}.`.padStart(4)} ${o}`).join(` | 76 | ${this.usages.map((o,a)=>`${`${a}.`.padStart(4)} ${o}`).join(` |
77 | `)} | 77 | `)} |
78 | 78 | ||
79 | ${QT(e)}`}},QT=t=>`While running ${t.filter(e=>e!==js).map(e=>{let r=JSON.stringify(e);return e.match(/\s/)||e.length===0||r!==`"${e}"`?r:e}).join(" ")}`});function lqe(t){let e=t.split(` | 79 | ${RT(e)}`}},RT=t=>`While running ${t.filter(e=>e!==js).map(e=>{let r=JSON.stringify(e);return e.match(/\s/)||e.length===0||r!==`"${e}"`?r:e}).join(" ")}`});function Bqe(t){let e=t.split(` |
80 | `),r=e.filter(a=>a.match(/\S/)),o=r.length>0?r.reduce((a,n)=>Math.min(a,n.length-n.trimStart().length),Number.MAX_VALUE):0;return e.map(a=>a.slice(o).trimRight()).join(` | 80 | `),r=e.filter(a=>a.match(/\S/)),o=r.length>0?r.reduce((a,n)=>Math.min(a,n.length-n.trimStart().length),Number.MAX_VALUE):0;return e.map(a=>a.slice(o).trimRight()).join(` |
81 | `)}function Bo(t,{format:e,paragraphs:r}){return t=t.replace(/\r\n?/g,` | 81 | `)}function Bo(t,{format:e,paragraphs:r}){return t=t.replace(/\r\n?/g,` |
82 | `),t=lqe(t),t=t.replace(/^\n+|\n+$/g,""),t=t.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 | 82 | `),t=Bqe(t),t=t.replace(/^\n+|\n+$/g,""),t=t.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 |
83 | 83 | ||
84 | `),t=t.replace(/\n(\n)?\n*/g,(o,a)=>a||" "),r&&(t=t.split(/\n/).map(o=>{let a=o.match(/^\s*[*-][\t ]+(.*)/);if(!a)return o.match(/(.{1,80})(?: |$)/g).join(` | 84 | `),t=t.replace(/\n(\n)?\n*/g,(o,a)=>a||" "),r&&(t=t.split(/\n/).map(o=>{let a=o.match(/^\s*[*-][\t ]+(.*)/);if(!a)return o.match(/(.{1,80})(?: |$)/g).join(` |
85 | `);let n=o.length-o.trimStart().length;return a[1].match(new RegExp(`(.{1,${78-n}})(?: |$)`,"g")).map((u,A)=>" ".repeat(n)+(A===0?"- ":" ")+u).join(` | 85 | `);let n=o.length-o.trimStart().length;return a[1].match(new RegExp(`(.{1,${78-n}})(?: |$)`,"g")).map((u,A)=>" ".repeat(n)+(A===0?"- ":" ")+u).join(` |
86 | `)}).join(` | 86 | `)}).join(` |
87 | 87 | ||
88 | `)),t=t.replace(/(`+)((?:.|[\n])*?)\1/g,(o,a,n)=>e.code(a+n+a)),t=t.replace(/(\*\*)((?:.|[\n])*?)\1/g,(o,a,n)=>e.bold(a+n+a)),t?`${t} | 88 | `)),t=t.replace(/(`+)((?:.|[\n])*?)\1/g,(o,a,n)=>e.code(a+n+a)),t=t.replace(/(\*\*)((?:.|[\n])*?)\1/g,(o,a,n)=>e.bold(a+n+a)),t?`${t} |
89 | `:""}var kT,cJ,uJ,FT=dt(()=>{kT=Array(80).fill("\u2501");for(let t=0;t<=24;++t)kT[kT.length-t]=`\x1B[38;5;${232+t}m\u2501`;cJ={header:t=>`\x1B[1m\u2501\u2501\u2501 ${t}${t.length<80-5?` ${kT.slice(t.length+5).join("")}`:":"}\x1B[0m`,bold:t=>`\x1B[1m${t}\x1B[22m`,error:t=>`\x1B[31m\x1B[1m${t}\x1B[22m\x1B[39m`,code:t=>`\x1B[36m${t}\x1B[39m`},uJ={header:t=>t,bold:t=>t,error:t=>t,code:t=>t}});function jo(t){return{...t,[WI]:!0}}function Yu(t,e){return typeof t>"u"?[t,e]:typeof t=="object"&&t!==null&&!Array.isArray(t)?[void 0,t]:[t,e]}function MD(t,e=!1){let r=t.replace(/^\.: /,"");return e&&(r=r[0].toLowerCase()+r.slice(1)),r}function YI(t,e){return e.length===1?new ot(`${t}: ${MD(e[0],!0)}`):new ot(`${t}: | 89 | `:""}var TT,mV,yV,NT=dt(()=>{TT=Array(80).fill("\u2501");for(let t=0;t<=24;++t)TT[TT.length-t]=`\x1B[38;5;${232+t}m\u2501`;mV={header:t=>`\x1B[1m\u2501\u2501\u2501 ${t}${t.length<80-5?` ${TT.slice(t.length+5).join("")}`:":"}\x1B[0m`,bold:t=>`\x1B[1m${t}\x1B[22m`,error:t=>`\x1B[31m\x1B[1m${t}\x1B[22m\x1B[39m`,code:t=>`\x1B[36m${t}\x1B[39m`},yV={header:t=>t,bold:t=>t,error:t=>t,code:t=>t}});function Wo(t){return{...t,[zI]:!0}}function Ku(t,e){return typeof t>"u"?[t,e]:typeof t=="object"&&t!==null&&!Array.isArray(t)?[void 0,t]:[t,e]}function KD(t,e=!1){let r=t.replace(/^\.: /,"");return e&&(r=r[0].toLowerCase()+r.slice(1)),r}function XI(t,e){return e.length===1?new ot(`${t}: ${KD(e[0],!0)}`):new ot(`${t}: |
90 | ${e.map(r=>` | 90 | ${e.map(r=>` |
91 | - ${MD(r)}`).join("")}`)}function KI(t,e,r){if(typeof r>"u")return e;let o=[],a=[],n=A=>{let p=e;return e=A,n.bind(null,p)};if(!r(e,{errors:o,coercions:a,coercion:n}))throw YI(`Invalid value for ${t}`,o);for(let[,A]of a)A();return e}var WI,yf=dt(()=>{OD();WI=Symbol("clipanion/isOption")});var Go={};Yt(Go,{KeyRelationship:()=>Vg,applyCascade:()=>Xg,base64RegExp:()=>hJ,colorStringAlphaRegExp:()=>pJ,colorStringRegExp:()=>fJ,computeKey:()=>jp,getPrintable:()=>Ki,hasExactLength:()=>EJ,hasForbiddenKeys:()=>Lqe,hasKeyRelationship:()=>MT,hasMaxLength:()=>Iqe,hasMinLength:()=>Cqe,hasMutuallyExclusiveKeys:()=>Oqe,hasRequiredKeys:()=>Nqe,hasUniqueItems:()=>wqe,isArray:()=>pqe,isAtLeast:()=>LT,isAtMost:()=>Dqe,isBase64:()=>Rqe,isBoolean:()=>Aqe,isDate:()=>fqe,isDict:()=>gqe,isEnum:()=>Gs,isHexColor:()=>Fqe,isISO8601:()=>kqe,isInExclusiveRange:()=>Pqe,isInInclusiveRange:()=>Sqe,isInstanceOf:()=>mqe,isInteger:()=>OT,isJSON:()=>Tqe,isLiteral:()=>cqe,isLowerCase:()=>xqe,isNegative:()=>Bqe,isNullable:()=>Eqe,isNumber:()=>TT,isObject:()=>dqe,isOneOf:()=>NT,isOptional:()=>yqe,isPositive:()=>vqe,isString:()=>JI,isTuple:()=>hqe,isUUID4:()=>Qqe,isUnknown:()=>yJ,isUpperCase:()=>bqe,iso8601RegExp:()=>RT,makeCoercionFn:()=>zg,makeSetter:()=>mJ,makeTrait:()=>dJ,makeValidator:()=>Yr,matchesRegExp:()=>VI,plural:()=>UD,pushError:()=>xr,simpleKeyRegExp:()=>AJ,uuid4RegExp:()=>gJ});function Yr({test:t}){return dJ(t)()}function Ki(t){return t===null?"null":t===void 0?"undefined":t===""?"an empty string":JSON.stringify(t)}function jp(t,e){var r,o,a;return typeof e=="number"?`${(r=t==null?void 0:t.p)!==null&&r!==void 0?r:"."}[${e}]`:AJ.test(e)?`${(o=t==null?void 0:t.p)!==null&&o!==void 0?o:""}.${e}`:`${(a=t==null?void 0:t.p)!==null&&a!==void 0?a:"."}[${JSON.stringify(e)}]`}function zg(t,e){return r=>{let o=t[e];return t[e]=r,zg(t,e).bind(null,o)}}function mJ(t,e){return r=>{t[e]=r}}function UD(t,e,r){return t===1?e:r}function xr({errors:t,p:e}={},r){return t==null||t.push(`${e??"."}: ${r}`),!1}function cqe(t){return Yr({test:(e,r)=>e!==t?xr(r,`Expected a literal (got ${Ki(t)})`):!0})}function Gs(t){let e=Array.isArray(t)?t:Object.values(t),r=new Set(e);return Yr({test:(o,a)=>r.has(o)?!0:xr(a,`Expected a valid enumeration value (got ${Ki(o)})`)})}var AJ,fJ,pJ,hJ,gJ,RT,dJ,yJ,JI,uqe,Aqe,TT,fqe,pqe,hqe,gqe,dqe,mqe,NT,Xg,yqe,Eqe,Cqe,Iqe,EJ,wqe,Bqe,vqe,LT,Dqe,Sqe,Pqe,OT,VI,xqe,bqe,Qqe,kqe,Fqe,Rqe,Tqe,Nqe,Lqe,Oqe,Vg,Mqe,MT,$a=dt(()=>{AJ=/^[a-zA-Z_][a-zA-Z0-9_]*$/,fJ=/^#[0-9a-f]{6}$/i,pJ=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,hJ=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,gJ=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,RT=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/,dJ=t=>()=>t;yJ=()=>Yr({test:(t,e)=>!0});JI=()=>Yr({test:(t,e)=>typeof t!="string"?xr(e,`Expected a string (got ${Ki(t)})`):!0});uqe=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]),Aqe=()=>Yr({test:(t,e)=>{var r;if(typeof t!="boolean"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return xr(e,"Unbound coercion result");let o=uqe.get(t);if(typeof o<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,o)]),!0}return xr(e,`Expected a boolean (got ${Ki(t)})`)}return!0}}),TT=()=>Yr({test:(t,e)=>{var r;if(typeof t!="number"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return xr(e,"Unbound coercion result");let o;if(typeof t=="string"){let a;try{a=JSON.parse(t)}catch{}if(typeof a=="number")if(JSON.stringify(a)===t)o=a;else return xr(e,`Received a number that can't be safely represented by the runtime (${t})`)}if(typeof o<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,o)]),!0}return xr(e,`Expected a number (got ${Ki(t)})`)}return!0}}),fqe=()=>Yr({test:(t,e)=>{var r;if(!(t instanceof Date)){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return xr(e,"Unbound coercion result");let o;if(typeof t=="string"&&RT.test(t))o=new Date(t);else{let a;if(typeof t=="string"){let n;try{n=JSON.parse(t)}catch{}typeof n=="number"&&(a=n)}else typeof t=="number"&&(a=t);if(typeof a<"u")if(Number.isSafeInteger(a)||!Number.isSafeInteger(a*1e3))o=new Date(a*1e3);else return xr(e,`Received a timestamp that can't be safely represented by the runtime (${t})`)}if(typeof o<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,o)]),!0}return xr(e,`Expected a date (got ${Ki(t)})`)}return!0}}),pqe=(t,{delimiter:e}={})=>Yr({test:(r,o)=>{var a;if(typeof r=="string"&&typeof e<"u"&&typeof(o==null?void 0:o.coercions)<"u"){if(typeof(o==null?void 0:o.coercion)>"u")return xr(o,"Unbound coercion result");r=r.split(e),o.coercions.push([(a=o.p)!==null&&a!==void 0?a:".",o.coercion.bind(null,r)])}if(!Array.isArray(r))return xr(o,`Expected an array (got ${Ki(r)})`);let n=!0;for(let u=0,A=r.length;u<A&&(n=t(r[u],Object.assign(Object.assign({},o),{p:jp(o,u),coercion:zg(r,u)}))&&n,!(!n&&(o==null?void 0:o.errors)==null));++u);return n}}),hqe=(t,{delimiter:e}={})=>{let r=EJ(t.length);return Yr({test:(o,a)=>{var n;if(typeof o=="string"&&typeof e<"u"&&typeof(a==null?void 0:a.coercions)<"u"){if(typeof(a==null?void 0:a.coercion)>"u")return xr(a,"Unbound coercion result");o=o.split(e),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,o)])}if(!Array.isArray(o))return xr(a,`Expected a tuple (got ${Ki(o)})`);let u=r(o,Object.assign({},a));for(let A=0,p=o.length;A<p&&A<t.length&&(u=t[A](o[A],Object.assign(Object.assign({},a),{p:jp(a,A),coercion:zg(o,A)}))&&u,!(!u&&(a==null?void 0:a.errors)==null));++A);return u}})},gqe=(t,{keys:e=null}={})=>Yr({test:(r,o)=>{if(typeof r!="object"||r===null)return xr(o,`Expected an object (got ${Ki(r)})`);let a=Object.keys(r),n=!0;for(let u=0,A=a.length;u<A&&(n||(o==null?void 0:o.errors)!=null);++u){let p=a[u],h=r[p];if(p==="__proto__"||p==="constructor"){n=xr(Object.assign(Object.assign({},o),{p:jp(o,p)}),"Unsafe property name");continue}if(e!==null&&!e(p,o)){n=!1;continue}if(!t(h,Object.assign(Object.assign({},o),{p:jp(o,p),coercion:zg(r,p)}))){n=!1;continue}}return n}}),dqe=(t,{extra:e=null}={})=>{let r=Object.keys(t);return Yr({test:(o,a)=>{if(typeof o!="object"||o===null)return xr(a,`Expected an object (got ${Ki(o)})`);let n=new Set([...r,...Object.keys(o)]),u={},A=!0;for(let p of n){if(p==="constructor"||p==="__proto__")A=xr(Object.assign(Object.assign({},a),{p:jp(a,p)}),"Unsafe property name");else{let h=Object.prototype.hasOwnProperty.call(t,p)?t[p]:void 0,C=Object.prototype.hasOwnProperty.call(o,p)?o[p]:void 0;typeof h<"u"?A=h(C,Object.assign(Object.assign({},a),{p:jp(a,p),coercion:zg(o,p)}))&&A:e===null?A=xr(Object.assign(Object.assign({},a),{p:jp(a,p)}),`Extraneous property (got ${Ki(C)})`):Object.defineProperty(u,p,{enumerable:!0,get:()=>C,set:mJ(o,p)})}if(!A&&(a==null?void 0:a.errors)==null)break}return e!==null&&(A||(a==null?void 0:a.errors)!=null)&&(A=e(u,a)&&A),A}})},mqe=t=>Yr({test:(e,r)=>e instanceof t?!0:xr(r,`Expected an instance of ${t.name} (got ${Ki(e)})`)}),NT=(t,{exclusive:e=!1}={})=>Yr({test:(r,o)=>{var a,n,u;let A=[],p=typeof(o==null?void 0:o.errors)<"u"?[]:void 0;for(let h=0,C=t.length;h<C;++h){let w=typeof(o==null?void 0:o.errors)<"u"?[]:void 0,v=typeof(o==null?void 0:o.coercions)<"u"?[]:void 0;if(t[h](r,Object.assign(Object.assign({},o),{errors:w,coercions:v,p:`${(a=o==null?void 0:o.p)!==null&&a!==void 0?a:"."}#${h+1}`}))){if(A.push([`#${h+1}`,v]),!e)break}else p==null||p.push(w[0])}if(A.length===1){let[,h]=A[0];return typeof h<"u"&&((n=o==null?void 0:o.coercions)===null||n===void 0||n.push(...h)),!0}return A.length>1?xr(o,`Expected to match exactly a single predicate (matched ${A.join(", ")})`):(u=o==null?void 0:o.errors)===null||u===void 0||u.push(...p),!1}}),Xg=(t,e)=>Yr({test:(r,o)=>{var a,n;let u={value:r},A=typeof(o==null?void 0:o.coercions)<"u"?zg(u,"value"):void 0,p=typeof(o==null?void 0:o.coercions)<"u"?[]:void 0;if(!t(r,Object.assign(Object.assign({},o),{coercion:A,coercions:p})))return!1;let h=[];if(typeof p<"u")for(let[,C]of p)h.push(C());try{if(typeof(o==null?void 0:o.coercions)<"u"){if(u.value!==r){if(typeof(o==null?void 0:o.coercion)>"u")return xr(o,"Unbound coercion result");o.coercions.push([(a=o.p)!==null&&a!==void 0?a:".",o.coercion.bind(null,u.value)])}(n=o==null?void 0:o.coercions)===null||n===void 0||n.push(...p)}return e.every(C=>C(u.value,o))}finally{for(let C of h)C()}}}),yqe=t=>Yr({test:(e,r)=>typeof e>"u"?!0:t(e,r)}),Eqe=t=>Yr({test:(e,r)=>e===null?!0:t(e,r)}),Cqe=t=>Yr({test:(e,r)=>e.length>=t?!0:xr(r,`Expected to have a length of at least ${t} elements (got ${e.length})`)}),Iqe=t=>Yr({test:(e,r)=>e.length<=t?!0:xr(r,`Expected to have a length of at most ${t} elements (got ${e.length})`)}),EJ=t=>Yr({test:(e,r)=>e.length!==t?xr(r,`Expected to have a length of exactly ${t} elements (got ${e.length})`):!0}),wqe=({map:t}={})=>Yr({test:(e,r)=>{let o=new Set,a=new Set;for(let n=0,u=e.length;n<u;++n){let A=e[n],p=typeof t<"u"?t(A):A;if(o.has(p)){if(a.has(p))continue;xr(r,`Expected to contain unique elements; got a duplicate with ${Ki(e)}`),a.add(p)}else o.add(p)}return a.size===0}}),Bqe=()=>Yr({test:(t,e)=>t<=0?!0:xr(e,`Expected to be negative (got ${t})`)}),vqe=()=>Yr({test:(t,e)=>t>=0?!0:xr(e,`Expected to be positive (got ${t})`)}),LT=t=>Yr({test:(e,r)=>e>=t?!0:xr(r,`Expected to be at least ${t} (got ${e})`)}),Dqe=t=>Yr({test:(e,r)=>e<=t?!0:xr(r,`Expected to be at most ${t} (got ${e})`)}),Sqe=(t,e)=>Yr({test:(r,o)=>r>=t&&r<=e?!0:xr(o,`Expected to be in the [${t}; ${e}] range (got ${r})`)}),Pqe=(t,e)=>Yr({test:(r,o)=>r>=t&&r<e?!0:xr(o,`Expected to be in the [${t}; ${e}[ range (got ${r})`)}),OT=({unsafe:t=!1}={})=>Yr({test:(e,r)=>e!==Math.round(e)?xr(r,`Expected to be an integer (got ${e})`):Number.isSafeInteger(e)?!0:xr(r,`Expected to be a safe integer (got ${e})`)}),VI=t=>Yr({test:(e,r)=>t.test(e)?!0:xr(r,`Expected to match the pattern ${t.toString()} (got ${Ki(e)})`)}),xqe=()=>Yr({test:(t,e)=>t!==t.toLowerCase()?xr(e,`Expected to be all-lowercase (got ${t})`):!0}),bqe=()=>Yr({test:(t,e)=>t!==t.toUpperCase()?xr(e,`Expected to be all-uppercase (got ${t})`):!0}),Qqe=()=>Yr({test:(t,e)=>gJ.test(t)?!0:xr(e,`Expected to be a valid UUID v4 (got ${Ki(t)})`)}),kqe=()=>Yr({test:(t,e)=>RT.test(t)?!1:xr(e,`Expected to be a valid ISO 8601 date string (got ${Ki(t)})`)}),Fqe=({alpha:t=!1})=>Yr({test:(e,r)=>(t?fJ.test(e):pJ.test(e))?!0:xr(r,`Expected to be a valid hexadecimal color string (got ${Ki(e)})`)}),Rqe=()=>Yr({test:(t,e)=>hJ.test(t)?!0:xr(e,`Expected to be a valid base 64 string (got ${Ki(t)})`)}),Tqe=(t=yJ())=>Yr({test:(e,r)=>{let o;try{o=JSON.parse(e)}catch{return xr(r,`Expected to be a valid JSON string (got ${Ki(e)})`)}return t(o,r)}}),Nqe=t=>{let e=new Set(t);return Yr({test:(r,o)=>{let a=new Set(Object.keys(r)),n=[];for(let u of e)a.has(u)||n.push(u);return n.length>0?xr(o,`Missing required ${UD(n.length,"property","properties")} ${n.map(u=>`"${u}"`).join(", ")}`):!0}})},Lqe=t=>{let e=new Set(t);return Yr({test:(r,o)=>{let a=new Set(Object.keys(r)),n=[];for(let u of e)a.has(u)&&n.push(u);return n.length>0?xr(o,`Forbidden ${UD(n.length,"property","properties")} ${n.map(u=>`"${u}"`).join(", ")}`):!0}})},Oqe=t=>{let e=new Set(t);return Yr({test:(r,o)=>{let a=new Set(Object.keys(r)),n=[];for(let u of e)a.has(u)&&n.push(u);return n.length>1?xr(o,`Mutually exclusive properties ${n.map(u=>`"${u}"`).join(", ")}`):!0}})};(function(t){t.Forbids="Forbids",t.Requires="Requires"})(Vg||(Vg={}));Mqe={[Vg.Forbids]:{expect:!1,message:"forbids using"},[Vg.Requires]:{expect:!0,message:"requires using"}},MT=(t,e,r,{ignore:o=[]}={})=>{let a=new Set(o),n=new Set(r),u=Mqe[e];return Yr({test:(A,p)=>{let h=new Set(Object.keys(A));if(!h.has(t)||a.has(A[t]))return!0;let C=[];for(let w of n)(h.has(w)&&!a.has(A[w]))!==u.expect&&C.push(w);return C.length>=1?xr(p,`Property "${t}" ${u.message} ${UD(C.length,"property","properties")} ${C.map(w=>`"${w}"`).join(", ")}`):!0}})}});var it,Zg=dt(()=>{yf();it=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let r=this.constructor.schema;if(Array.isArray(r)){let{isDict:a,isUnknown:n,applyCascade:u}=await Promise.resolve().then(()=>($a(),Go)),A=u(a(n()),r),p=[],h=[];if(!A(this,{errors:p,coercions:h}))throw YI("Invalid option schema",p);for(let[,w]of h)w()}else if(r!=null)throw new Error("Invalid command schema");let o=await this.execute();return typeof o<"u"?o:0}};it.isOption=WI;it.Default=[]});function wa(t){xT&&console.log(t)}function IJ(){return{nodes:[Wo(),Wo(),Wo()]}}function Uqe(t){let e=IJ(),r=[],o=e.nodes.length;for(let a of t){r.push(o);for(let n=0;n<a.nodes.length;++n)vJ(n)||e.nodes.push(Jqe(a.nodes[n],o));o+=a.nodes.length-2}for(let a of r)my(e,0,a);return e}function Mc(t,e){return t.nodes.push(e),t.nodes.length-1}function _qe(t){let e=new Set,r=o=>{if(e.has(o))return;e.add(o);let a=t.nodes[o];for(let u of Object.values(a.statics))for(let{to:A}of u)r(A);for(let[,{to:u}]of a.dynamics)r(u);for(let{to:u}of a.shortcuts)r(u);let n=new Set(a.shortcuts.map(({to:u})=>u));for(;a.shortcuts.length>0;){let{to:u}=a.shortcuts.shift(),A=t.nodes[u];for(let[p,h]of Object.entries(A.statics)){let C=Object.prototype.hasOwnProperty.call(a.statics,p)?a.statics[p]:a.statics[p]=[];for(let w of h)C.some(({to:v})=>w.to===v)||C.push(w)}for(let[p,h]of A.dynamics)a.dynamics.some(([C,{to:w}])=>p===C&&h.to===w)||a.dynamics.push([p,h]);for(let p of A.shortcuts)n.has(p.to)||(a.shortcuts.push(p),n.add(p.to))}};r(0)}function Hqe(t,{prefix:e=""}={}){if(xT){wa(`${e}Nodes are:`);for(let r=0;r<t.nodes.length;++r)wa(`${e} ${r}: ${JSON.stringify(t.nodes[r])}`)}}function wJ(t,e,r=!1){wa(`Running a vm on ${JSON.stringify(e)}`);let o=[{node:0,state:{candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,options:[],path:[],positionals:[],remainder:null,selectedIndex:null}}];Hqe(t,{prefix:" "});let a=[DT,...e];for(let n=0;n<a.length;++n){let u=a[n];wa(` Processing ${JSON.stringify(u)}`);let A=[];for(let{node:p,state:h}of o){wa(` Current node is ${p}`);let C=t.nodes[p];if(p===2){A.push({node:p,state:h});continue}console.assert(C.shortcuts.length===0,"Shortcuts should have been eliminated by now");let w=Object.prototype.hasOwnProperty.call(C.statics,u);if(!r||n<a.length-1||w)if(w){let v=C.statics[u];for(let{to:b,reducer:E}of v)A.push({node:b,state:typeof E<"u"?_D(_T,E,h,u):h}),wa(` Static transition to ${b} found`)}else wa(" No static transition found");else{let v=!1;for(let b of Object.keys(C.statics))if(!!b.startsWith(u)){if(u===b)for(let{to:E,reducer:R}of C.statics[b])A.push({node:E,state:typeof R<"u"?_D(_T,R,h,u):h}),wa(` Static transition to ${E} found`);else for(let{to:E}of C.statics[b])A.push({node:E,state:{...h,remainder:b.slice(u.length)}}),wa(` Static transition to ${E} found (partial match)`);v=!0}v||wa(" No partial static transition found")}if(u!==js)for(let[v,{to:b,reducer:E}]of C.dynamics)_D(qD,v,h,u)&&(A.push({node:b,state:typeof E<"u"?_D(_T,E,h,u):h}),wa(` Dynamic transition to ${b} found (via ${v})`))}if(A.length===0&&u===js&&e.length===1)return[{node:0,state:CJ}];if(A.length===0)throw new dy(e,o.filter(({node:p})=>p!==2).map(({state:p})=>({usage:p.candidateUsage,reason:null})));if(A.every(({node:p})=>p===2))throw new dy(e,A.map(({state:p})=>({usage:p.candidateUsage,reason:p.errorMessage})));o=Wqe(A)}if(o.length>0){wa(" Results:");for(let n of o)wa(` - ${n.node} -> ${JSON.stringify(n.state)}`)}else wa(" No results");return o}function qqe(t,e){if(e.selectedIndex!==null)return!0;if(Object.prototype.hasOwnProperty.call(t.statics,js)){for(let{to:r}of t.statics[js])if(r===1)return!0}return!1}function jqe(t,e,r){let o=r&&e.length>0?[""]:[],a=wJ(t,e,r),n=[],u=new Set,A=(p,h,C=!0)=>{let w=[h];for(;w.length>0;){let b=w;w=[];for(let E of b){let R=t.nodes[E],L=Object.keys(R.statics);for(let _ of Object.keys(R.statics)){let J=L[0];for(let{to:re,reducer:oe}of R.statics[J])oe==="pushPath"&&(C||p.push(J),w.push(re))}}C=!1}let v=JSON.stringify(p);u.has(v)||(n.push(p),u.add(v))};for(let{node:p,state:h}of a){if(h.remainder!==null){A([h.remainder],p);continue}let C=t.nodes[p],w=qqe(C,h);for(let[v,b]of Object.entries(C.statics))(w&&v!==js||!v.startsWith("-")&&b.some(({reducer:E})=>E==="pushPath"))&&A([...o,v],p);if(!!w)for(let[v,{to:b}]of C.dynamics){if(b===2)continue;let E=Vqe(v,h);if(E!==null)for(let R of E)A([...o,R],p)}}return[...n].sort()}function Gqe(t,e){let r=wJ(t,[...e,js]);return Yqe(e,r.map(({state:o})=>o))}function Wqe(t){let e=0;for(let{state:r}of t)r.path.length>e&&(e=r.path.length);return t.filter(({state:r})=>r.path.length===e)}function Yqe(t,e){let r=e.filter(w=>w.selectedIndex!==null);if(r.length===0)throw new Error;let o=r.filter(w=>w.requiredOptions.every(v=>v.some(b=>w.options.find(E=>E.name===b))));if(o.length===0)throw new dy(t,r.map(w=>({usage:w.candidateUsage,reason:null})));let a=0;for(let w of o)w.path.length>a&&(a=w.path.length);let n=o.filter(w=>w.path.length===a),u=w=>w.positionals.filter(({extra:v})=>!v).length+w.options.length,A=n.map(w=>({state:w,positionalCount:u(w)})),p=0;for(let{positionalCount:w}of A)w>p&&(p=w);let h=A.filter(({positionalCount:w})=>w===p).map(({state:w})=>w),C=Kqe(h);if(C.length>1)throw new LD(t,C.map(w=>w.candidateUsage));return C[0]}function Kqe(t){let e=[],r=[];for(let o of t)o.selectedIndex===-1?r.push(o):e.push(o);return r.length>0&&e.push({...CJ,path:BJ(...r.map(o=>o.path)),options:r.reduce((o,a)=>o.concat(a.options),[])}),e}function BJ(t,e,...r){return e===void 0?Array.from(t):BJ(t.filter((o,a)=>o===e[a]),...r)}function Wo(){return{dynamics:[],shortcuts:[],statics:{}}}function vJ(t){return t===1||t===2}function UT(t,e=0){return{to:vJ(t.to)?t.to:t.to>2?t.to+e-2:t.to+e,reducer:t.reducer}}function Jqe(t,e=0){let r=Wo();for(let[o,a]of t.dynamics)r.dynamics.push([o,UT(a,e)]);for(let o of t.shortcuts)r.shortcuts.push(UT(o,e));for(let[o,a]of Object.entries(t.statics))r.statics[o]=a.map(n=>UT(n,e));return r}function Ws(t,e,r,o,a){t.nodes[e].dynamics.push([r,{to:o,reducer:a}])}function my(t,e,r,o){t.nodes[e].shortcuts.push({to:r,reducer:o})}function Ef(t,e,r,o,a){(Object.prototype.hasOwnProperty.call(t.nodes[e].statics,r)?t.nodes[e].statics[r]:t.nodes[e].statics[r]=[]).push({to:o,reducer:a})}function _D(t,e,r,o){if(Array.isArray(e)){let[a,...n]=e;return t[a](r,o,...n)}else return t[e](r,o)}function Vqe(t,e){let r=Array.isArray(t)?qD[t[0]]:qD[t];if(typeof r.suggest>"u")return null;let o=Array.isArray(t)?t.slice(1):[];return r.suggest(e,...o)}var CJ,qD,_T,el,HT,Ey,GD=dt(()=>{bT();OD();CJ={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:-1};qD={always:()=>!0,isOptionLike:(t,e)=>!t.ignoreOptions&&e!=="-"&&e.startsWith("-"),isNotOptionLike:(t,e)=>t.ignoreOptions||e==="-"||!e.startsWith("-"),isOption:(t,e,r,o)=>!t.ignoreOptions&&e===r,isBatchOption:(t,e,r)=>!t.ignoreOptions&&lJ.test(e)&&[...e.slice(1)].every(o=>r.includes(`-${o}`)),isBoundOption:(t,e,r,o)=>{let a=e.match(PT);return!t.ignoreOptions&&!!a&&ND.test(a[1])&&r.includes(a[1])&&o.filter(n=>n.names.includes(a[1])).every(n=>n.allowBinding)},isNegatedOption:(t,e,r)=>!t.ignoreOptions&&e===`--no-${r.slice(2)}`,isHelp:(t,e)=>!t.ignoreOptions&&ST.test(e),isUnsupportedOption:(t,e,r)=>!t.ignoreOptions&&e.startsWith("-")&&ND.test(e)&&!r.includes(e),isInvalidOption:(t,e)=>!t.ignoreOptions&&e.startsWith("-")&&!ND.test(e)};qD.isOption.suggest=(t,e,r=!0)=>r?null:[e];_T={setCandidateState:(t,e,r)=>({...t,...r}),setSelectedIndex:(t,e,r)=>({...t,selectedIndex:r}),pushBatch:(t,e)=>({...t,options:t.options.concat([...e.slice(1)].map(r=>({name:`-${r}`,value:!0})))}),pushBound:(t,e)=>{let[,r,o]=e.match(PT);return{...t,options:t.options.concat({name:r,value:o})}},pushPath:(t,e)=>({...t,path:t.path.concat(e)}),pushPositional:(t,e)=>({...t,positionals:t.positionals.concat({value:e,extra:!1})}),pushExtra:(t,e)=>({...t,positionals:t.positionals.concat({value:e,extra:!0})}),pushExtraNoLimits:(t,e)=>({...t,positionals:t.positionals.concat({value:e,extra:el})}),pushTrue:(t,e,r=e)=>({...t,options:t.options.concat({name:e,value:!0})}),pushFalse:(t,e,r=e)=>({...t,options:t.options.concat({name:r,value:!1})}),pushUndefined:(t,e)=>({...t,options:t.options.concat({name:e,value:void 0})}),pushStringValue:(t,e)=>{var r;let o={...t,options:[...t.options]},a=t.options[t.options.length-1];return a.value=((r=a.value)!==null&&r!==void 0?r:[]).concat([e]),o},setStringValue:(t,e)=>{let r={...t,options:[...t.options]},o=t.options[t.options.length-1];return o.value=e,r},inhibateOptions:t=>({...t,ignoreOptions:!0}),useHelp:(t,e,r)=>{let[,,o]=e.match(ST);return typeof o<"u"?{...t,options:[{name:"-c",value:String(r)},{name:"-i",value:o}]}:{...t,options:[{name:"-c",value:String(r)}]}},setError:(t,e,r)=>e===js?{...t,errorMessage:`${r}.`}:{...t,errorMessage:`${r} ("${e}").`},setOptionArityError:(t,e)=>{let r=t.options[t.options.length-1];return{...t,errorMessage:`Not enough arguments to option ${r.name}.`}}},el=Symbol(),HT=class{constructor(e,r){this.allOptionNames=[],this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=r}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:r=this.arity.trailing,extra:o=this.arity.extra,proxy:a=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:r,extra:o,proxy:a})}addPositional({name:e="arg",required:r=!0}={}){if(!r&&this.arity.extra===el)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!r&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!r&&this.arity.extra!==el?this.arity.extra.push(e):this.arity.extra!==el&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e="arg",required:r=0}={}){if(this.arity.extra===el)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let o=0;o<r;++o)this.addPositional({name:e});this.arity.extra=el}addProxy({required:e=0}={}){this.addRest({required:e}),this.arity.proxy=!0}addOption({names:e,description:r,arity:o=0,hidden:a=!1,required:n=!1,allowBinding:u=!0}){if(!u&&o>1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(o))throw new Error(`The arity must be an integer, got ${o}`);if(o<0)throw new Error(`The arity must be positive, got ${o}`);this.allOptionNames.push(...e),this.options.push({names:e,description:r,arity:o,hidden:a,required:n,allowBinding:u})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:r=!0}={}){let o=[this.cliOpts.binaryName],a=[];if(this.paths.length>0&&o.push(...this.paths[0]),e){for(let{names:u,arity:A,hidden:p,description:h,required:C}of this.options){if(p)continue;let w=[];for(let b=0;b<A;++b)w.push(` #${b}`);let v=`${u.join(",")}${w.join("")}`;!r&&h?a.push({definition:v,description:h,required:C}):o.push(C?`<${v}>`:`[${v}]`)}o.push(...this.arity.leading.map(u=>`<${u}>`)),this.arity.extra===el?o.push("..."):o.push(...this.arity.extra.map(u=>`[${u}]`)),o.push(...this.arity.trailing.map(u=>`<${u}>`))}return{usage:o.join(" "),options:a}}compile(){if(typeof this.context>"u")throw new Error("Assertion failed: No context attached");let e=IJ(),r=0,o=this.usage().usage,a=this.options.filter(A=>A.required).map(A=>A.names);r=Mc(e,Wo()),Ef(e,0,DT,r,["setCandidateState",{candidateUsage:o,requiredOptions:a}]);let n=this.arity.proxy?"always":"isNotOptionLike",u=this.paths.length>0?this.paths:[[]];for(let A of u){let p=r;if(A.length>0){let v=Mc(e,Wo());my(e,p,v),this.registerOptions(e,v),p=v}for(let v=0;v<A.length;++v){let b=Mc(e,Wo());Ef(e,p,A[v],b,"pushPath"),p=b}if(this.arity.leading.length>0||!this.arity.proxy){let v=Mc(e,Wo());Ws(e,p,"isHelp",v,["useHelp",this.cliIndex]),Ef(e,v,js,1,["setSelectedIndex",-1]),this.registerOptions(e,p)}this.arity.leading.length>0&&Ef(e,p,js,2,["setError","Not enough positional arguments"]);let h=p;for(let v=0;v<this.arity.leading.length;++v){let b=Mc(e,Wo());(!this.arity.proxy||v+1!==this.arity.leading.length)&&this.registerOptions(e,b),(this.arity.trailing.length>0||v+1!==this.arity.leading.length)&&Ef(e,b,js,2,["setError","Not enough positional arguments"]),Ws(e,h,"isNotOptionLike",b,"pushPositional"),h=b}let C=h;if(this.arity.extra===el||this.arity.extra.length>0){let v=Mc(e,Wo());if(my(e,h,v),this.arity.extra===el){let b=Mc(e,Wo());this.arity.proxy||this.registerOptions(e,b),Ws(e,h,n,b,"pushExtraNoLimits"),Ws(e,b,n,b,"pushExtraNoLimits"),my(e,b,v)}else for(let b=0;b<this.arity.extra.length;++b){let E=Mc(e,Wo());(!this.arity.proxy||b>0)&&this.registerOptions(e,E),Ws(e,C,n,E,"pushExtra"),my(e,E,v),C=E}C=v}this.arity.trailing.length>0&&Ef(e,C,js,2,["setError","Not enough positional arguments"]);let w=C;for(let v=0;v<this.arity.trailing.length;++v){let b=Mc(e,Wo());this.arity.proxy||this.registerOptions(e,b),v+1<this.arity.trailing.length&&Ef(e,b,js,2,["setError","Not enough positional arguments"]),Ws(e,w,"isNotOptionLike",b,"pushPositional"),w=b}Ws(e,w,n,2,["setError","Extraneous positional argument"]),Ef(e,w,js,1,["setSelectedIndex",this.cliIndex])}return{machine:e,context:this.context}}registerOptions(e,r){Ws(e,r,["isOption","--"],r,"inhibateOptions"),Ws(e,r,["isBatchOption",this.allOptionNames],r,"pushBatch"),Ws(e,r,["isBoundOption",this.allOptionNames,this.options],r,"pushBound"),Ws(e,r,["isUnsupportedOption",this.allOptionNames],2,["setError","Unsupported option name"]),Ws(e,r,["isInvalidOption"],2,["setError","Invalid option name"]);for(let o of this.options){let a=o.names.reduce((n,u)=>u.length>n.length?u:n,"");if(o.arity===0)for(let n of o.names)Ws(e,r,["isOption",n,o.hidden||n!==a],r,"pushTrue"),n.startsWith("--")&&!n.startsWith("--no-")&&Ws(e,r,["isNegatedOption",n],r,["pushFalse",n]);else{let n=Mc(e,Wo());for(let u of o.names)Ws(e,r,["isOption",u,o.hidden||u!==a],n,"pushUndefined");for(let u=0;u<o.arity;++u){let A=Mc(e,Wo());Ef(e,n,js,2,"setOptionArityError"),Ws(e,n,"isOptionLike",2,"setOptionArityError");let p=o.arity===1?"setStringValue":"pushStringValue";Ws(e,n,"isNotOptionLike",A,p),n=A}my(e,n,r)}}}},Ey=class{constructor({binaryName:e="..."}={}){this.builders=[],this.opts={binaryName:e}}static build(e,r={}){return new Ey(r).commands(e).compile()}getBuilderByIndex(e){if(!(e>=0&&e<this.builders.length))throw new Error(`Assertion failed: Out-of-bound command index (${e})`);return this.builders[e]}commands(e){for(let r of e)r(this.command());return this}command(){let e=new HT(this.builders.length,this.opts);return this.builders.push(e),e}compile(){let e=[],r=[];for(let a of this.builders){let{machine:n,context:u}=a.compile();e.push(n),r.push(u)}let o=Uqe(e);return _qe(o),{machine:o,contexts:r,process:a=>Gqe(o,a),suggest:(a,n)=>jqe(o,a,n)}}}});function SJ(){return WD.default&&"getColorDepth"in WD.default.WriteStream.prototype?WD.default.WriteStream.prototype.getColorDepth():process.env.FORCE_COLOR==="0"?1:process.env.FORCE_COLOR==="1"||typeof process.stdout<"u"&&process.stdout.isTTY?8:1}function PJ(t){let e=DJ;if(typeof e>"u"){if(t.stdout===process.stdout&&t.stderr===process.stderr)return null;let{AsyncLocalStorage:r}=Ie("async_hooks");e=DJ=new r;let o=process.stdout._write;process.stdout._write=function(n,u,A){let p=e.getStore();return typeof p>"u"?o.call(this,n,u,A):p.stdout.write(n,u,A)};let a=process.stderr._write;process.stderr._write=function(n,u,A){let p=e.getStore();return typeof p>"u"?a.call(this,n,u,A):p.stderr.write(n,u,A)}}return r=>e.run(t,r)}var WD,DJ,xJ=dt(()=>{WD=tt(Ie("tty"),1)});var Cy,bJ=dt(()=>{Zg();Cy=class extends it{constructor(e){super(),this.contexts=e,this.commands=[]}static from(e,r){let o=new Cy(r);o.path=e.path;for(let a of e.options)switch(a.name){case"-c":o.commands.push(Number(a.value));break;case"-i":o.index=Number(a.value);break}return o}async execute(){let e=this.commands;if(typeof this.index<"u"&&this.index>=0&&this.index<e.length&&(e=[e[this.index]]),e.length===0)this.context.stdout.write(this.cli.usage());else if(e.length===1)this.context.stdout.write(this.cli.usage(this.contexts[e[0]].commandClass,{detailed:!0}));else if(e.length>1){this.context.stdout.write(`Multiple commands match your selection: | 91 | - ${KD(r)}`).join("")}`)}function ZI(t,e,r){if(typeof r>"u")return e;let o=[],a=[],n=A=>{let p=e;return e=A,n.bind(null,p)};if(!r(e,{errors:o,coercions:a,coercion:n}))throw XI(`Invalid value for ${t}`,o);for(let[,A]of a)A();return e}var zI,If=dt(()=>{YD();zI=Symbol("clipanion/isOption")});var Yo={};Yt(Yo,{KeyRelationship:()=>$g,applyCascade:()=>td,base64RegExp:()=>wV,colorStringAlphaRegExp:()=>IV,colorStringRegExp:()=>CV,computeKey:()=>Yp,getPrintable:()=>Ki,hasExactLength:()=>PV,hasForbiddenKeys:()=>Xqe,hasKeyRelationship:()=>HT,hasMaxLength:()=>Lqe,hasMinLength:()=>Nqe,hasMutuallyExclusiveKeys:()=>Zqe,hasRequiredKeys:()=>zqe,hasUniqueItems:()=>Oqe,isArray:()=>xqe,isAtLeast:()=>UT,isAtMost:()=>_qe,isBase64:()=>Vqe,isBoolean:()=>Sqe,isDate:()=>Pqe,isDict:()=>Qqe,isEnum:()=>Gs,isHexColor:()=>Kqe,isISO8601:()=>Yqe,isInExclusiveRange:()=>qqe,isInInclusiveRange:()=>Hqe,isInstanceOf:()=>Fqe,isInteger:()=>_T,isJSON:()=>Jqe,isLiteral:()=>vqe,isLowerCase:()=>jqe,isNegative:()=>Mqe,isNullable:()=>Tqe,isNumber:()=>OT,isObject:()=>kqe,isOneOf:()=>MT,isOptional:()=>Rqe,isPositive:()=>Uqe,isString:()=>$I,isTuple:()=>bqe,isUUID4:()=>Wqe,isUnknown:()=>SV,isUpperCase:()=>Gqe,iso8601RegExp:()=>LT,makeCoercionFn:()=>ed,makeSetter:()=>DV,makeTrait:()=>vV,makeValidator:()=>Yr,matchesRegExp:()=>ew,plural:()=>VD,pushError:()=>xr,simpleKeyRegExp:()=>EV,uuid4RegExp:()=>BV});function Yr({test:t}){return vV(t)()}function Ki(t){return t===null?"null":t===void 0?"undefined":t===""?"an empty string":JSON.stringify(t)}function Yp(t,e){var r,o,a;return typeof e=="number"?`${(r=t==null?void 0:t.p)!==null&&r!==void 0?r:"."}[${e}]`:EV.test(e)?`${(o=t==null?void 0:t.p)!==null&&o!==void 0?o:""}.${e}`:`${(a=t==null?void 0:t.p)!==null&&a!==void 0?a:"."}[${JSON.stringify(e)}]`}function ed(t,e){return r=>{let o=t[e];return t[e]=r,ed(t,e).bind(null,o)}}function DV(t,e){return r=>{t[e]=r}}function VD(t,e,r){return t===1?e:r}function xr({errors:t,p:e}={},r){return t==null||t.push(`${e??"."}: ${r}`),!1}function vqe(t){return Yr({test:(e,r)=>e!==t?xr(r,`Expected a literal (got ${Ki(t)})`):!0})}function Gs(t){let e=Array.isArray(t)?t:Object.values(t),r=new Set(e);return Yr({test:(o,a)=>r.has(o)?!0:xr(a,`Expected a valid enumeration value (got ${Ki(o)})`)})}var EV,CV,IV,wV,BV,LT,vV,SV,$I,Dqe,Sqe,OT,Pqe,xqe,bqe,Qqe,kqe,Fqe,MT,td,Rqe,Tqe,Nqe,Lqe,PV,Oqe,Mqe,Uqe,UT,_qe,Hqe,qqe,_T,ew,jqe,Gqe,Wqe,Yqe,Kqe,Vqe,Jqe,zqe,Xqe,Zqe,$g,$qe,HT,rl=dt(()=>{EV=/^[a-zA-Z_][a-zA-Z0-9_]*$/,CV=/^#[0-9a-f]{6}$/i,IV=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,wV=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,BV=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,LT=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/,vV=t=>()=>t;SV=()=>Yr({test:(t,e)=>!0});$I=()=>Yr({test:(t,e)=>typeof t!="string"?xr(e,`Expected a string (got ${Ki(t)})`):!0});Dqe=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]),Sqe=()=>Yr({test:(t,e)=>{var r;if(typeof t!="boolean"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return xr(e,"Unbound coercion result");let o=Dqe.get(t);if(typeof o<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,o)]),!0}return xr(e,`Expected a boolean (got ${Ki(t)})`)}return!0}}),OT=()=>Yr({test:(t,e)=>{var r;if(typeof t!="number"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return xr(e,"Unbound coercion result");let o;if(typeof t=="string"){let a;try{a=JSON.parse(t)}catch{}if(typeof a=="number")if(JSON.stringify(a)===t)o=a;else return xr(e,`Received a number that can't be safely represented by the runtime (${t})`)}if(typeof o<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,o)]),!0}return xr(e,`Expected a number (got ${Ki(t)})`)}return!0}}),Pqe=()=>Yr({test:(t,e)=>{var r;if(!(t instanceof Date)){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return xr(e,"Unbound coercion result");let o;if(typeof t=="string"&<.test(t))o=new Date(t);else{let a;if(typeof t=="string"){let n;try{n=JSON.parse(t)}catch{}typeof n=="number"&&(a=n)}else typeof t=="number"&&(a=t);if(typeof a<"u")if(Number.isSafeInteger(a)||!Number.isSafeInteger(a*1e3))o=new Date(a*1e3);else return xr(e,`Received a timestamp that can't be safely represented by the runtime (${t})`)}if(typeof o<"u")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:".",e.coercion.bind(null,o)]),!0}return xr(e,`Expected a date (got ${Ki(t)})`)}return!0}}),xqe=(t,{delimiter:e}={})=>Yr({test:(r,o)=>{var a;if(typeof r=="string"&&typeof e<"u"&&typeof(o==null?void 0:o.coercions)<"u"){if(typeof(o==null?void 0:o.coercion)>"u")return xr(o,"Unbound coercion result");r=r.split(e),o.coercions.push([(a=o.p)!==null&&a!==void 0?a:".",o.coercion.bind(null,r)])}if(!Array.isArray(r))return xr(o,`Expected an array (got ${Ki(r)})`);let n=!0;for(let u=0,A=r.length;u<A&&(n=t(r[u],Object.assign(Object.assign({},o),{p:Yp(o,u),coercion:ed(r,u)}))&&n,!(!n&&(o==null?void 0:o.errors)==null));++u);return n}}),bqe=(t,{delimiter:e}={})=>{let r=PV(t.length);return Yr({test:(o,a)=>{var n;if(typeof o=="string"&&typeof e<"u"&&typeof(a==null?void 0:a.coercions)<"u"){if(typeof(a==null?void 0:a.coercion)>"u")return xr(a,"Unbound coercion result");o=o.split(e),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:".",a.coercion.bind(null,o)])}if(!Array.isArray(o))return xr(a,`Expected a tuple (got ${Ki(o)})`);let u=r(o,Object.assign({},a));for(let A=0,p=o.length;A<p&&A<t.length&&(u=t[A](o[A],Object.assign(Object.assign({},a),{p:Yp(a,A),coercion:ed(o,A)}))&&u,!(!u&&(a==null?void 0:a.errors)==null));++A);return u}})},Qqe=(t,{keys:e=null}={})=>Yr({test:(r,o)=>{if(typeof r!="object"||r===null)return xr(o,`Expected an object (got ${Ki(r)})`);let a=Object.keys(r),n=!0;for(let u=0,A=a.length;u<A&&(n||(o==null?void 0:o.errors)!=null);++u){let p=a[u],h=r[p];if(p==="__proto__"||p==="constructor"){n=xr(Object.assign(Object.assign({},o),{p:Yp(o,p)}),"Unsafe property name");continue}if(e!==null&&!e(p,o)){n=!1;continue}if(!t(h,Object.assign(Object.assign({},o),{p:Yp(o,p),coercion:ed(r,p)}))){n=!1;continue}}return n}}),kqe=(t,{extra:e=null}={})=>{let r=Object.keys(t);return Yr({test:(o,a)=>{if(typeof o!="object"||o===null)return xr(a,`Expected an object (got ${Ki(o)})`);let n=new Set([...r,...Object.keys(o)]),u={},A=!0;for(let p of n){if(p==="constructor"||p==="__proto__")A=xr(Object.assign(Object.assign({},a),{p:Yp(a,p)}),"Unsafe property name");else{let h=Object.prototype.hasOwnProperty.call(t,p)?t[p]:void 0,C=Object.prototype.hasOwnProperty.call(o,p)?o[p]:void 0;typeof h<"u"?A=h(C,Object.assign(Object.assign({},a),{p:Yp(a,p),coercion:ed(o,p)}))&&A:e===null?A=xr(Object.assign(Object.assign({},a),{p:Yp(a,p)}),`Extraneous property (got ${Ki(C)})`):Object.defineProperty(u,p,{enumerable:!0,get:()=>C,set:DV(o,p)})}if(!A&&(a==null?void 0:a.errors)==null)break}return e!==null&&(A||(a==null?void 0:a.errors)!=null)&&(A=e(u,a)&&A),A}})},Fqe=t=>Yr({test:(e,r)=>e instanceof t?!0:xr(r,`Expected an instance of ${t.name} (got ${Ki(e)})`)}),MT=(t,{exclusive:e=!1}={})=>Yr({test:(r,o)=>{var a,n,u;let A=[],p=typeof(o==null?void 0:o.errors)<"u"?[]:void 0;for(let h=0,C=t.length;h<C;++h){let w=typeof(o==null?void 0:o.errors)<"u"?[]:void 0,v=typeof(o==null?void 0:o.coercions)<"u"?[]:void 0;if(t[h](r,Object.assign(Object.assign({},o),{errors:w,coercions:v,p:`${(a=o==null?void 0:o.p)!==null&&a!==void 0?a:"."}#${h+1}`}))){if(A.push([`#${h+1}`,v]),!e)break}else p==null||p.push(w[0])}if(A.length===1){let[,h]=A[0];return typeof h<"u"&&((n=o==null?void 0:o.coercions)===null||n===void 0||n.push(...h)),!0}return A.length>1?xr(o,`Expected to match exactly a single predicate (matched ${A.join(", ")})`):(u=o==null?void 0:o.errors)===null||u===void 0||u.push(...p),!1}}),td=(t,e)=>Yr({test:(r,o)=>{var a,n;let u={value:r},A=typeof(o==null?void 0:o.coercions)<"u"?ed(u,"value"):void 0,p=typeof(o==null?void 0:o.coercions)<"u"?[]:void 0;if(!t(r,Object.assign(Object.assign({},o),{coercion:A,coercions:p})))return!1;let h=[];if(typeof p<"u")for(let[,C]of p)h.push(C());try{if(typeof(o==null?void 0:o.coercions)<"u"){if(u.value!==r){if(typeof(o==null?void 0:o.coercion)>"u")return xr(o,"Unbound coercion result");o.coercions.push([(a=o.p)!==null&&a!==void 0?a:".",o.coercion.bind(null,u.value)])}(n=o==null?void 0:o.coercions)===null||n===void 0||n.push(...p)}return e.every(C=>C(u.value,o))}finally{for(let C of h)C()}}}),Rqe=t=>Yr({test:(e,r)=>typeof e>"u"?!0:t(e,r)}),Tqe=t=>Yr({test:(e,r)=>e===null?!0:t(e,r)}),Nqe=t=>Yr({test:(e,r)=>e.length>=t?!0:xr(r,`Expected to have a length of at least ${t} elements (got ${e.length})`)}),Lqe=t=>Yr({test:(e,r)=>e.length<=t?!0:xr(r,`Expected to have a length of at most ${t} elements (got ${e.length})`)}),PV=t=>Yr({test:(e,r)=>e.length!==t?xr(r,`Expected to have a length of exactly ${t} elements (got ${e.length})`):!0}),Oqe=({map:t}={})=>Yr({test:(e,r)=>{let o=new Set,a=new Set;for(let n=0,u=e.length;n<u;++n){let A=e[n],p=typeof t<"u"?t(A):A;if(o.has(p)){if(a.has(p))continue;xr(r,`Expected to contain unique elements; got a duplicate with ${Ki(e)}`),a.add(p)}else o.add(p)}return a.size===0}}),Mqe=()=>Yr({test:(t,e)=>t<=0?!0:xr(e,`Expected to be negative (got ${t})`)}),Uqe=()=>Yr({test:(t,e)=>t>=0?!0:xr(e,`Expected to be positive (got ${t})`)}),UT=t=>Yr({test:(e,r)=>e>=t?!0:xr(r,`Expected to be at least ${t} (got ${e})`)}),_qe=t=>Yr({test:(e,r)=>e<=t?!0:xr(r,`Expected to be at most ${t} (got ${e})`)}),Hqe=(t,e)=>Yr({test:(r,o)=>r>=t&&r<=e?!0:xr(o,`Expected to be in the [${t}; ${e}] range (got ${r})`)}),qqe=(t,e)=>Yr({test:(r,o)=>r>=t&&r<e?!0:xr(o,`Expected to be in the [${t}; ${e}[ range (got ${r})`)}),_T=({unsafe:t=!1}={})=>Yr({test:(e,r)=>e!==Math.round(e)?xr(r,`Expected to be an integer (got ${e})`):Number.isSafeInteger(e)?!0:xr(r,`Expected to be a safe integer (got ${e})`)}),ew=t=>Yr({test:(e,r)=>t.test(e)?!0:xr(r,`Expected to match the pattern ${t.toString()} (got ${Ki(e)})`)}),jqe=()=>Yr({test:(t,e)=>t!==t.toLowerCase()?xr(e,`Expected to be all-lowercase (got ${t})`):!0}),Gqe=()=>Yr({test:(t,e)=>t!==t.toUpperCase()?xr(e,`Expected to be all-uppercase (got ${t})`):!0}),Wqe=()=>Yr({test:(t,e)=>BV.test(t)?!0:xr(e,`Expected to be a valid UUID v4 (got ${Ki(t)})`)}),Yqe=()=>Yr({test:(t,e)=>LT.test(t)?!1:xr(e,`Expected to be a valid ISO 8601 date string (got ${Ki(t)})`)}),Kqe=({alpha:t=!1})=>Yr({test:(e,r)=>(t?CV.test(e):IV.test(e))?!0:xr(r,`Expected to be a valid hexadecimal color string (got ${Ki(e)})`)}),Vqe=()=>Yr({test:(t,e)=>wV.test(t)?!0:xr(e,`Expected to be a valid base 64 string (got ${Ki(t)})`)}),Jqe=(t=SV())=>Yr({test:(e,r)=>{let o;try{o=JSON.parse(e)}catch{return xr(r,`Expected to be a valid JSON string (got ${Ki(e)})`)}return t(o,r)}}),zqe=t=>{let e=new Set(t);return Yr({test:(r,o)=>{let a=new Set(Object.keys(r)),n=[];for(let u of e)a.has(u)||n.push(u);return n.length>0?xr(o,`Missing required ${VD(n.length,"property","properties")} ${n.map(u=>`"${u}"`).join(", ")}`):!0}})},Xqe=t=>{let e=new Set(t);return Yr({test:(r,o)=>{let a=new Set(Object.keys(r)),n=[];for(let u of e)a.has(u)&&n.push(u);return n.length>0?xr(o,`Forbidden ${VD(n.length,"property","properties")} ${n.map(u=>`"${u}"`).join(", ")}`):!0}})},Zqe=t=>{let e=new Set(t);return Yr({test:(r,o)=>{let a=new Set(Object.keys(r)),n=[];for(let u of e)a.has(u)&&n.push(u);return n.length>1?xr(o,`Mutually exclusive properties ${n.map(u=>`"${u}"`).join(", ")}`):!0}})};(function(t){t.Forbids="Forbids",t.Requires="Requires"})($g||($g={}));$qe={[$g.Forbids]:{expect:!1,message:"forbids using"},[$g.Requires]:{expect:!0,message:"requires using"}},HT=(t,e,r,{ignore:o=[]}={})=>{let a=new Set(o),n=new Set(r),u=$qe[e];return Yr({test:(A,p)=>{let h=new Set(Object.keys(A));if(!h.has(t)||a.has(A[t]))return!0;let C=[];for(let w of n)(h.has(w)&&!a.has(A[w]))!==u.expect&&C.push(w);return C.length>=1?xr(p,`Property "${t}" ${u.message} ${VD(C.length,"property","properties")} ${C.map(w=>`"${w}"`).join(", ")}`):!0}})}});var it,rd=dt(()=>{If();it=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let r=this.constructor.schema;if(Array.isArray(r)){let{isDict:a,isUnknown:n,applyCascade:u}=await Promise.resolve().then(()=>(rl(),Yo)),A=u(a(n()),r),p=[],h=[];if(!A(this,{errors:p,coercions:h}))throw XI("Invalid option schema",p);for(let[,w]of h)w()}else if(r!=null)throw new Error("Invalid command schema");let o=await this.execute();return typeof o<"u"?o:0}};it.isOption=zI;it.Default=[]});function va(t){kT&&console.log(t)}function bV(){return{nodes:[Ko(),Ko(),Ko()]}}function eje(t){let e=bV(),r=[],o=e.nodes.length;for(let a of t){r.push(o);for(let n=0;n<a.nodes.length;++n)FV(n)||e.nodes.push(cje(a.nodes[n],o));o+=a.nodes.length-2}for(let a of r)wy(e,0,a);return e}function qc(t,e){return t.nodes.push(e),t.nodes.length-1}function tje(t){let e=new Set,r=o=>{if(e.has(o))return;e.add(o);let a=t.nodes[o];for(let u of Object.values(a.statics))for(let{to:A}of u)r(A);for(let[,{to:u}]of a.dynamics)r(u);for(let{to:u}of a.shortcuts)r(u);let n=new Set(a.shortcuts.map(({to:u})=>u));for(;a.shortcuts.length>0;){let{to:u}=a.shortcuts.shift(),A=t.nodes[u];for(let[p,h]of Object.entries(A.statics)){let C=Object.prototype.hasOwnProperty.call(a.statics,p)?a.statics[p]:a.statics[p]=[];for(let w of h)C.some(({to:v})=>w.to===v)||C.push(w)}for(let[p,h]of A.dynamics)a.dynamics.some(([C,{to:w}])=>p===C&&h.to===w)||a.dynamics.push([p,h]);for(let p of A.shortcuts)n.has(p.to)||(a.shortcuts.push(p),n.add(p.to))}};r(0)}function rje(t,{prefix:e=""}={}){if(kT){va(`${e}Nodes are:`);for(let r=0;r<t.nodes.length;++r)va(`${e} ${r}: ${JSON.stringify(t.nodes[r])}`)}}function QV(t,e,r=!1){va(`Running a vm on ${JSON.stringify(e)}`);let o=[{node:0,state:{candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,options:[],path:[],positionals:[],remainder:null,selectedIndex:null}}];rje(t,{prefix:" "});let a=[xT,...e];for(let n=0;n<a.length;++n){let u=a[n];va(` Processing ${JSON.stringify(u)}`);let A=[];for(let{node:p,state:h}of o){va(` Current node is ${p}`);let C=t.nodes[p];if(p===2){A.push({node:p,state:h});continue}console.assert(C.shortcuts.length===0,"Shortcuts should have been eliminated by now");let w=Object.prototype.hasOwnProperty.call(C.statics,u);if(!r||n<a.length-1||w)if(w){let v=C.statics[u];for(let{to:b,reducer:E}of v)A.push({node:b,state:typeof E<"u"?JD(jT,E,h,u):h}),va(` Static transition to ${b} found`)}else va(" No static transition found");else{let v=!1;for(let b of Object.keys(C.statics))if(!!b.startsWith(u)){if(u===b)for(let{to:E,reducer:R}of C.statics[b])A.push({node:E,state:typeof R<"u"?JD(jT,R,h,u):h}),va(` Static transition to ${E} found`);else for(let{to:E}of C.statics[b])A.push({node:E,state:{...h,remainder:b.slice(u.length)}}),va(` Static transition to ${E} found (partial match)`);v=!0}v||va(" No partial static transition found")}if(u!==js)for(let[v,{to:b,reducer:E}]of C.dynamics)JD(XD,v,h,u)&&(A.push({node:b,state:typeof E<"u"?JD(jT,E,h,u):h}),va(` Dynamic transition to ${b} found (via ${v})`))}if(A.length===0&&u===js&&e.length===1)return[{node:0,state:xV}];if(A.length===0)throw new Iy(e,o.filter(({node:p})=>p!==2).map(({state:p})=>({usage:p.candidateUsage,reason:null})));if(A.every(({node:p})=>p===2))throw new Iy(e,A.map(({state:p})=>({usage:p.candidateUsage,reason:p.errorMessage})));o=oje(A)}if(o.length>0){va(" Results:");for(let n of o)va(` - ${n.node} -> ${JSON.stringify(n.state)}`)}else va(" No results");return o}function nje(t,e){if(e.selectedIndex!==null)return!0;if(Object.prototype.hasOwnProperty.call(t.statics,js)){for(let{to:r}of t.statics[js])if(r===1)return!0}return!1}function ije(t,e,r){let o=r&&e.length>0?[""]:[],a=QV(t,e,r),n=[],u=new Set,A=(p,h,C=!0)=>{let w=[h];for(;w.length>0;){let b=w;w=[];for(let E of b){let R=t.nodes[E],L=Object.keys(R.statics);for(let _ of Object.keys(R.statics)){let V=L[0];for(let{to:re,reducer:ae}of R.statics[V])ae==="pushPath"&&(C||p.push(V),w.push(re))}}C=!1}let v=JSON.stringify(p);u.has(v)||(n.push(p),u.add(v))};for(let{node:p,state:h}of a){if(h.remainder!==null){A([h.remainder],p);continue}let C=t.nodes[p],w=nje(C,h);for(let[v,b]of Object.entries(C.statics))(w&&v!==js||!v.startsWith("-")&&b.some(({reducer:E})=>E==="pushPath"))&&A([...o,v],p);if(!!w)for(let[v,{to:b}]of C.dynamics){if(b===2)continue;let E=uje(v,h);if(E!==null)for(let R of E)A([...o,R],p)}}return[...n].sort()}function sje(t,e){let r=QV(t,[...e,js]);return aje(e,r.map(({state:o})=>o))}function oje(t){let e=0;for(let{state:r}of t)r.path.length>e&&(e=r.path.length);return t.filter(({state:r})=>r.path.length===e)}function aje(t,e){let r=e.filter(w=>w.selectedIndex!==null);if(r.length===0)throw new Error;let o=r.filter(w=>w.requiredOptions.every(v=>v.some(b=>w.options.find(E=>E.name===b))));if(o.length===0)throw new Iy(t,r.map(w=>({usage:w.candidateUsage,reason:null})));let a=0;for(let w of o)w.path.length>a&&(a=w.path.length);let n=o.filter(w=>w.path.length===a),u=w=>w.positionals.filter(({extra:v})=>!v).length+w.options.length,A=n.map(w=>({state:w,positionalCount:u(w)})),p=0;for(let{positionalCount:w}of A)w>p&&(p=w);let h=A.filter(({positionalCount:w})=>w===p).map(({state:w})=>w),C=lje(h);if(C.length>1)throw new WD(t,C.map(w=>w.candidateUsage));return C[0]}function lje(t){let e=[],r=[];for(let o of t)o.selectedIndex===-1?r.push(o):e.push(o);return r.length>0&&e.push({...xV,path:kV(...r.map(o=>o.path)),options:r.reduce((o,a)=>o.concat(a.options),[])}),e}function kV(t,e,...r){return e===void 0?Array.from(t):kV(t.filter((o,a)=>o===e[a]),...r)}function Ko(){return{dynamics:[],shortcuts:[],statics:{}}}function FV(t){return t===1||t===2}function qT(t,e=0){return{to:FV(t.to)?t.to:t.to>2?t.to+e-2:t.to+e,reducer:t.reducer}}function cje(t,e=0){let r=Ko();for(let[o,a]of t.dynamics)r.dynamics.push([o,qT(a,e)]);for(let o of t.shortcuts)r.shortcuts.push(qT(o,e));for(let[o,a]of Object.entries(t.statics))r.statics[o]=a.map(n=>qT(n,e));return r}function Ws(t,e,r,o,a){t.nodes[e].dynamics.push([r,{to:o,reducer:a}])}function wy(t,e,r,o){t.nodes[e].shortcuts.push({to:r,reducer:o})}function wf(t,e,r,o,a){(Object.prototype.hasOwnProperty.call(t.nodes[e].statics,r)?t.nodes[e].statics[r]:t.nodes[e].statics[r]=[]).push({to:o,reducer:a})}function JD(t,e,r,o){if(Array.isArray(e)){let[a,...n]=e;return t[a](r,o,...n)}else return t[e](r,o)}function uje(t,e){let r=Array.isArray(t)?XD[t[0]]:XD[t];if(typeof r.suggest>"u")return null;let o=Array.isArray(t)?t.slice(1):[];return r.suggest(e,...o)}var xV,XD,jT,nl,GT,vy,$D=dt(()=>{FT();YD();xV={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:-1};XD={always:()=>!0,isOptionLike:(t,e)=>!t.ignoreOptions&&e!=="-"&&e.startsWith("-"),isNotOptionLike:(t,e)=>t.ignoreOptions||e==="-"||!e.startsWith("-"),isOption:(t,e,r,o)=>!t.ignoreOptions&&e===r,isBatchOption:(t,e,r)=>!t.ignoreOptions&&dV.test(e)&&[...e.slice(1)].every(o=>r.includes(`-${o}`)),isBoundOption:(t,e,r,o)=>{let a=e.match(QT);return!t.ignoreOptions&&!!a&&GD.test(a[1])&&r.includes(a[1])&&o.filter(n=>n.names.includes(a[1])).every(n=>n.allowBinding)},isNegatedOption:(t,e,r)=>!t.ignoreOptions&&e===`--no-${r.slice(2)}`,isHelp:(t,e)=>!t.ignoreOptions&&bT.test(e),isUnsupportedOption:(t,e,r)=>!t.ignoreOptions&&e.startsWith("-")&&GD.test(e)&&!r.includes(e),isInvalidOption:(t,e)=>!t.ignoreOptions&&e.startsWith("-")&&!GD.test(e)};XD.isOption.suggest=(t,e,r=!0)=>r?null:[e];jT={setCandidateState:(t,e,r)=>({...t,...r}),setSelectedIndex:(t,e,r)=>({...t,selectedIndex:r}),pushBatch:(t,e)=>({...t,options:t.options.concat([...e.slice(1)].map(r=>({name:`-${r}`,value:!0})))}),pushBound:(t,e)=>{let[,r,o]=e.match(QT);return{...t,options:t.options.concat({name:r,value:o})}},pushPath:(t,e)=>({...t,path:t.path.concat(e)}),pushPositional:(t,e)=>({...t,positionals:t.positionals.concat({value:e,extra:!1})}),pushExtra:(t,e)=>({...t,positionals:t.positionals.concat({value:e,extra:!0})}),pushExtraNoLimits:(t,e)=>({...t,positionals:t.positionals.concat({value:e,extra:nl})}),pushTrue:(t,e,r=e)=>({...t,options:t.options.concat({name:e,value:!0})}),pushFalse:(t,e,r=e)=>({...t,options:t.options.concat({name:r,value:!1})}),pushUndefined:(t,e)=>({...t,options:t.options.concat({name:e,value:void 0})}),pushStringValue:(t,e)=>{var r;let o={...t,options:[...t.options]},a=t.options[t.options.length-1];return a.value=((r=a.value)!==null&&r!==void 0?r:[]).concat([e]),o},setStringValue:(t,e)=>{let r={...t,options:[...t.options]},o=t.options[t.options.length-1];return o.value=e,r},inhibateOptions:t=>({...t,ignoreOptions:!0}),useHelp:(t,e,r)=>{let[,,o]=e.match(bT);return typeof o<"u"?{...t,options:[{name:"-c",value:String(r)},{name:"-i",value:o}]}:{...t,options:[{name:"-c",value:String(r)}]}},setError:(t,e,r)=>e===js?{...t,errorMessage:`${r}.`}:{...t,errorMessage:`${r} ("${e}").`},setOptionArityError:(t,e)=>{let r=t.options[t.options.length-1];return{...t,errorMessage:`Not enough arguments to option ${r.name}.`}}},nl=Symbol(),GT=class{constructor(e,r){this.allOptionNames=[],this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=r}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:r=this.arity.trailing,extra:o=this.arity.extra,proxy:a=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:r,extra:o,proxy:a})}addPositional({name:e="arg",required:r=!0}={}){if(!r&&this.arity.extra===nl)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!r&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!r&&this.arity.extra!==nl?this.arity.extra.push(e):this.arity.extra!==nl&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e="arg",required:r=0}={}){if(this.arity.extra===nl)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let o=0;o<r;++o)this.addPositional({name:e});this.arity.extra=nl}addProxy({required:e=0}={}){this.addRest({required:e}),this.arity.proxy=!0}addOption({names:e,description:r,arity:o=0,hidden:a=!1,required:n=!1,allowBinding:u=!0}){if(!u&&o>1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(o))throw new Error(`The arity must be an integer, got ${o}`);if(o<0)throw new Error(`The arity must be positive, got ${o}`);this.allOptionNames.push(...e),this.options.push({names:e,description:r,arity:o,hidden:a,required:n,allowBinding:u})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:r=!0}={}){let o=[this.cliOpts.binaryName],a=[];if(this.paths.length>0&&o.push(...this.paths[0]),e){for(let{names:u,arity:A,hidden:p,description:h,required:C}of this.options){if(p)continue;let w=[];for(let b=0;b<A;++b)w.push(` #${b}`);let v=`${u.join(",")}${w.join("")}`;!r&&h?a.push({definition:v,description:h,required:C}):o.push(C?`<${v}>`:`[${v}]`)}o.push(...this.arity.leading.map(u=>`<${u}>`)),this.arity.extra===nl?o.push("..."):o.push(...this.arity.extra.map(u=>`[${u}]`)),o.push(...this.arity.trailing.map(u=>`<${u}>`))}return{usage:o.join(" "),options:a}}compile(){if(typeof this.context>"u")throw new Error("Assertion failed: No context attached");let e=bV(),r=0,o=this.usage().usage,a=this.options.filter(A=>A.required).map(A=>A.names);r=qc(e,Ko()),wf(e,0,xT,r,["setCandidateState",{candidateUsage:o,requiredOptions:a}]);let n=this.arity.proxy?"always":"isNotOptionLike",u=this.paths.length>0?this.paths:[[]];for(let A of u){let p=r;if(A.length>0){let v=qc(e,Ko());wy(e,p,v),this.registerOptions(e,v),p=v}for(let v=0;v<A.length;++v){let b=qc(e,Ko());wf(e,p,A[v],b,"pushPath"),p=b}if(this.arity.leading.length>0||!this.arity.proxy){let v=qc(e,Ko());Ws(e,p,"isHelp",v,["useHelp",this.cliIndex]),wf(e,v,js,1,["setSelectedIndex",-1]),this.registerOptions(e,p)}this.arity.leading.length>0&&wf(e,p,js,2,["setError","Not enough positional arguments"]);let h=p;for(let v=0;v<this.arity.leading.length;++v){let b=qc(e,Ko());(!this.arity.proxy||v+1!==this.arity.leading.length)&&this.registerOptions(e,b),(this.arity.trailing.length>0||v+1!==this.arity.leading.length)&&wf(e,b,js,2,["setError","Not enough positional arguments"]),Ws(e,h,"isNotOptionLike",b,"pushPositional"),h=b}let C=h;if(this.arity.extra===nl||this.arity.extra.length>0){let v=qc(e,Ko());if(wy(e,h,v),this.arity.extra===nl){let b=qc(e,Ko());this.arity.proxy||this.registerOptions(e,b),Ws(e,h,n,b,"pushExtraNoLimits"),Ws(e,b,n,b,"pushExtraNoLimits"),wy(e,b,v)}else for(let b=0;b<this.arity.extra.length;++b){let E=qc(e,Ko());(!this.arity.proxy||b>0)&&this.registerOptions(e,E),Ws(e,C,n,E,"pushExtra"),wy(e,E,v),C=E}C=v}this.arity.trailing.length>0&&wf(e,C,js,2,["setError","Not enough positional arguments"]);let w=C;for(let v=0;v<this.arity.trailing.length;++v){let b=qc(e,Ko());this.arity.proxy||this.registerOptions(e,b),v+1<this.arity.trailing.length&&wf(e,b,js,2,["setError","Not enough positional arguments"]),Ws(e,w,"isNotOptionLike",b,"pushPositional"),w=b}Ws(e,w,n,2,["setError","Extraneous positional argument"]),wf(e,w,js,1,["setSelectedIndex",this.cliIndex])}return{machine:e,context:this.context}}registerOptions(e,r){Ws(e,r,["isOption","--"],r,"inhibateOptions"),Ws(e,r,["isBatchOption",this.allOptionNames],r,"pushBatch"),Ws(e,r,["isBoundOption",this.allOptionNames,this.options],r,"pushBound"),Ws(e,r,["isUnsupportedOption",this.allOptionNames],2,["setError","Unsupported option name"]),Ws(e,r,["isInvalidOption"],2,["setError","Invalid option name"]);for(let o of this.options){let a=o.names.reduce((n,u)=>u.length>n.length?u:n,"");if(o.arity===0)for(let n of o.names)Ws(e,r,["isOption",n,o.hidden||n!==a],r,"pushTrue"),n.startsWith("--")&&!n.startsWith("--no-")&&Ws(e,r,["isNegatedOption",n],r,["pushFalse",n]);else{let n=qc(e,Ko());for(let u of o.names)Ws(e,r,["isOption",u,o.hidden||u!==a],n,"pushUndefined");for(let u=0;u<o.arity;++u){let A=qc(e,Ko());wf(e,n,js,2,"setOptionArityError"),Ws(e,n,"isOptionLike",2,"setOptionArityError");let p=o.arity===1?"setStringValue":"pushStringValue";Ws(e,n,"isNotOptionLike",A,p),n=A}wy(e,n,r)}}}},vy=class{constructor({binaryName:e="..."}={}){this.builders=[],this.opts={binaryName:e}}static build(e,r={}){return new vy(r).commands(e).compile()}getBuilderByIndex(e){if(!(e>=0&&e<this.builders.length))throw new Error(`Assertion failed: Out-of-bound command index (${e})`);return this.builders[e]}commands(e){for(let r of e)r(this.command());return this}command(){let e=new GT(this.builders.length,this.opts);return this.builders.push(e),e}compile(){let e=[],r=[];for(let a of this.builders){let{machine:n,context:u}=a.compile();e.push(n),r.push(u)}let o=eje(e);return tje(o),{machine:o,contexts:r,process:a=>sje(o,a),suggest:(a,n)=>ije(o,a,n)}}}});function TV(){return eS.default&&"getColorDepth"in eS.default.WriteStream.prototype?eS.default.WriteStream.prototype.getColorDepth():process.env.FORCE_COLOR==="0"?1:process.env.FORCE_COLOR==="1"||typeof process.stdout<"u"&&process.stdout.isTTY?8:1}function NV(t){let e=RV;if(typeof e>"u"){if(t.stdout===process.stdout&&t.stderr===process.stderr)return null;let{AsyncLocalStorage:r}=Ie("async_hooks");e=RV=new r;let o=process.stdout._write;process.stdout._write=function(n,u,A){let p=e.getStore();return typeof p>"u"?o.call(this,n,u,A):p.stdout.write(n,u,A)};let a=process.stderr._write;process.stderr._write=function(n,u,A){let p=e.getStore();return typeof p>"u"?a.call(this,n,u,A):p.stderr.write(n,u,A)}}return r=>e.run(t,r)}var eS,RV,LV=dt(()=>{eS=tt(Ie("tty"),1)});var Dy,OV=dt(()=>{rd();Dy=class extends it{constructor(e){super(),this.contexts=e,this.commands=[]}static from(e,r){let o=new Dy(r);o.path=e.path;for(let a of e.options)switch(a.name){case"-c":o.commands.push(Number(a.value));break;case"-i":o.index=Number(a.value);break}return o}async execute(){let e=this.commands;if(typeof this.index<"u"&&this.index>=0&&this.index<e.length&&(e=[e[this.index]]),e.length===0)this.context.stdout.write(this.cli.usage());else if(e.length===1)this.context.stdout.write(this.cli.usage(this.contexts[e[0]].commandClass,{detailed:!0}));else if(e.length>1){this.context.stdout.write(`Multiple commands match your selection: |
92 | `),this.context.stdout.write(` | 92 | `),this.context.stdout.write(` |
93 | `);let r=0;for(let o of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[o].commandClass,{prefix:`${r++}. `.padStart(5)}));this.context.stdout.write(` | 93 | `);let r=0;for(let o of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[o].commandClass,{prefix:`${r++}. `.padStart(5)}));this.context.stdout.write(` |
94 | `),this.context.stdout.write(`Run again with -h=<index> to see the longer details of any of those commands. | 94 | `),this.context.stdout.write(`Run again with -h=<index> to see the longer details of any of those commands. |
95 | `)}}}});async function FJ(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}=TJ(t);return vo.from(r,e).runExit(o,a)}async function RJ(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}=TJ(t);return vo.from(r,e).run(o,a)}function TJ(t){let e,r,o,a;switch(typeof process<"u"&&typeof process.argv<"u"&&(o=process.argv.slice(2)),t.length){case 1:r=t[0];break;case 2:t[0]&&t[0].prototype instanceof it||Array.isArray(t[0])?(r=t[0],Array.isArray(t[1])?o=t[1]:a=t[1]):(e=t[0],r=t[1]);break;case 3:Array.isArray(t[2])?(e=t[0],r=t[1],o=t[2]):t[0]&&t[0].prototype instanceof it||Array.isArray(t[0])?(r=t[0],o=t[1],a=t[2]):(e=t[0],r=t[1],a=t[2]);break;default:e=t[0],r=t[1],o=t[2],a=t[3];break}if(typeof o>"u")throw new Error("The argv parameter must be provided when running Clipanion outside of a Node context");return{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}}function kJ(t){return t()}var QJ,vo,NJ=dt(()=>{GD();FT();xJ();Zg();bJ();QJ=Symbol("clipanion/errorCommand");vo=class{constructor({binaryLabel:e,binaryName:r="...",binaryVersion:o,enableCapture:a=!1,enableColors:n}={}){this.registrations=new Map,this.builder=new Ey({binaryName:r}),this.binaryLabel=e,this.binaryName=r,this.binaryVersion=o,this.enableCapture=a,this.enableColors=n}static from(e,r={}){let o=new vo(r),a=Array.isArray(e)?e:[e];for(let n of a)o.register(n);return o}register(e){var r;let o=new Map,a=new e;for(let p in a){let h=a[p];typeof h=="object"&&h!==null&&h[it.isOption]&&o.set(p,h)}let n=this.builder.command(),u=n.cliIndex,A=(r=e.paths)!==null&&r!==void 0?r:a.paths;if(typeof A<"u")for(let p of A)n.addPath(p);this.registrations.set(e,{specs:o,builder:n,index:u});for(let[p,{definition:h}]of o.entries())h(n,p);n.setContext({commandClass:e})}process(e,r){let{contexts:o,process:a}=this.builder.compile(),n=a(e),u={...vo.defaultContext,...r};switch(n.selectedIndex){case-1:{let A=Cy.from(n,o);return A.context=u,A}default:{let{commandClass:A}=o[n.selectedIndex],p=this.registrations.get(A);if(typeof p>"u")throw new Error("Assertion failed: Expected the command class to have been registered.");let h=new A;h.context=u,h.path=n.path;try{for(let[C,{transformer:w}]of p.specs.entries())h[C]=w(p.builder,C,n,u);return h}catch(C){throw C[QJ]=h,C}}break}}async run(e,r){var o,a;let n,u={...vo.defaultContext,...r},A=(o=this.enableColors)!==null&&o!==void 0?o:u.colorDepth>1;if(!Array.isArray(e))n=e;else try{n=this.process(e,u)}catch(C){return u.stdout.write(this.error(C,{colored:A})),1}if(n.help)return u.stdout.write(this.usage(n,{colored:A,detailed:!0})),0;n.context=u,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),error:(C,w)=>this.error(C,w),format:C=>this.format(C),process:(C,w)=>this.process(C,{...u,...w}),run:(C,w)=>this.run(C,{...u,...w}),usage:(C,w)=>this.usage(C,w)};let p=this.enableCapture&&(a=PJ(u))!==null&&a!==void 0?a:kJ,h;try{h=await p(()=>n.validateAndExecute().catch(C=>n.catch(C).then(()=>0)))}catch(C){return u.stdout.write(this.error(C,{colored:A,command:n})),1}return h}async runExit(e,r){process.exitCode=await this.run(e,r)}suggest(e,r){let{suggest:o}=this.builder.compile();return o(e,r)}definitions({colored:e=!1}={}){let r=[];for(let[o,{index:a}]of this.registrations){if(typeof o.usage>"u")continue;let{usage:n}=this.getUsageByIndex(a,{detailed:!1}),{usage:u,options:A}=this.getUsageByIndex(a,{detailed:!0,inlineOptions:!1}),p=typeof o.usage.category<"u"?Bo(o.usage.category,{format:this.format(e),paragraphs:!1}):void 0,h=typeof o.usage.description<"u"?Bo(o.usage.description,{format:this.format(e),paragraphs:!1}):void 0,C=typeof o.usage.details<"u"?Bo(o.usage.details,{format:this.format(e),paragraphs:!0}):void 0,w=typeof o.usage.examples<"u"?o.usage.examples.map(([v,b])=>[Bo(v,{format:this.format(e),paragraphs:!1}),b.replace(/\$0/g,this.binaryName)]):void 0;r.push({path:n,usage:u,category:p,description:h,details:C,examples:w,options:A})}return r}usage(e=null,{colored:r,detailed:o=!1,prefix:a="$ "}={}){var n;if(e===null){for(let p of this.registrations.keys()){let h=p.paths,C=typeof p.usage<"u";if(!h||h.length===0||h.length===1&&h[0].length===0||((n=h==null?void 0:h.some(b=>b.length===0))!==null&&n!==void 0?n:!1))if(e){e=null;break}else e=p;else if(C){e=null;continue}}e&&(o=!0)}let u=e!==null&&e instanceof it?e.constructor:e,A="";if(u)if(o){let{description:p="",details:h="",examples:C=[]}=u.usage||{};p!==""&&(A+=Bo(p,{format:this.format(r),paragraphs:!1}).replace(/^./,b=>b.toUpperCase()),A+=` | 95 | `)}}}});async function _V(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}=qV(t);return vo.from(r,e).runExit(o,a)}async function HV(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}=qV(t);return vo.from(r,e).run(o,a)}function qV(t){let e,r,o,a;switch(typeof process<"u"&&typeof process.argv<"u"&&(o=process.argv.slice(2)),t.length){case 1:r=t[0];break;case 2:t[0]&&t[0].prototype instanceof it||Array.isArray(t[0])?(r=t[0],Array.isArray(t[1])?o=t[1]:a=t[1]):(e=t[0],r=t[1]);break;case 3:Array.isArray(t[2])?(e=t[0],r=t[1],o=t[2]):t[0]&&t[0].prototype instanceof it||Array.isArray(t[0])?(r=t[0],o=t[1],a=t[2]):(e=t[0],r=t[1],a=t[2]);break;default:e=t[0],r=t[1],o=t[2],a=t[3];break}if(typeof o>"u")throw new Error("The argv parameter must be provided when running Clipanion outside of a Node context");return{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:o,resolvedContext:a}}function UV(t){return t()}var MV,vo,jV=dt(()=>{$D();NT();LV();rd();OV();MV=Symbol("clipanion/errorCommand");vo=class{constructor({binaryLabel:e,binaryName:r="...",binaryVersion:o,enableCapture:a=!1,enableColors:n}={}){this.registrations=new Map,this.builder=new vy({binaryName:r}),this.binaryLabel=e,this.binaryName=r,this.binaryVersion=o,this.enableCapture=a,this.enableColors=n}static from(e,r={}){let o=new vo(r),a=Array.isArray(e)?e:[e];for(let n of a)o.register(n);return o}register(e){var r;let o=new Map,a=new e;for(let p in a){let h=a[p];typeof h=="object"&&h!==null&&h[it.isOption]&&o.set(p,h)}let n=this.builder.command(),u=n.cliIndex,A=(r=e.paths)!==null&&r!==void 0?r:a.paths;if(typeof A<"u")for(let p of A)n.addPath(p);this.registrations.set(e,{specs:o,builder:n,index:u});for(let[p,{definition:h}]of o.entries())h(n,p);n.setContext({commandClass:e})}process(e,r){let{contexts:o,process:a}=this.builder.compile(),n=a(e),u={...vo.defaultContext,...r};switch(n.selectedIndex){case-1:{let A=Dy.from(n,o);return A.context=u,A}default:{let{commandClass:A}=o[n.selectedIndex],p=this.registrations.get(A);if(typeof p>"u")throw new Error("Assertion failed: Expected the command class to have been registered.");let h=new A;h.context=u,h.path=n.path;try{for(let[C,{transformer:w}]of p.specs.entries())h[C]=w(p.builder,C,n,u);return h}catch(C){throw C[MV]=h,C}}break}}async run(e,r){var o,a;let n,u={...vo.defaultContext,...r},A=(o=this.enableColors)!==null&&o!==void 0?o:u.colorDepth>1;if(!Array.isArray(e))n=e;else try{n=this.process(e,u)}catch(C){return u.stdout.write(this.error(C,{colored:A})),1}if(n.help)return u.stdout.write(this.usage(n,{colored:A,detailed:!0})),0;n.context=u,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),error:(C,w)=>this.error(C,w),format:C=>this.format(C),process:(C,w)=>this.process(C,{...u,...w}),run:(C,w)=>this.run(C,{...u,...w}),usage:(C,w)=>this.usage(C,w)};let p=this.enableCapture&&(a=NV(u))!==null&&a!==void 0?a:UV,h;try{h=await p(()=>n.validateAndExecute().catch(C=>n.catch(C).then(()=>0)))}catch(C){return u.stdout.write(this.error(C,{colored:A,command:n})),1}return h}async runExit(e,r){process.exitCode=await this.run(e,r)}suggest(e,r){let{suggest:o}=this.builder.compile();return o(e,r)}definitions({colored:e=!1}={}){let r=[];for(let[o,{index:a}]of this.registrations){if(typeof o.usage>"u")continue;let{usage:n}=this.getUsageByIndex(a,{detailed:!1}),{usage:u,options:A}=this.getUsageByIndex(a,{detailed:!0,inlineOptions:!1}),p=typeof o.usage.category<"u"?Bo(o.usage.category,{format:this.format(e),paragraphs:!1}):void 0,h=typeof o.usage.description<"u"?Bo(o.usage.description,{format:this.format(e),paragraphs:!1}):void 0,C=typeof o.usage.details<"u"?Bo(o.usage.details,{format:this.format(e),paragraphs:!0}):void 0,w=typeof o.usage.examples<"u"?o.usage.examples.map(([v,b])=>[Bo(v,{format:this.format(e),paragraphs:!1}),b.replace(/\$0/g,this.binaryName)]):void 0;r.push({path:n,usage:u,category:p,description:h,details:C,examples:w,options:A})}return r}usage(e=null,{colored:r,detailed:o=!1,prefix:a="$ "}={}){var n;if(e===null){for(let p of this.registrations.keys()){let h=p.paths,C=typeof p.usage<"u";if(!h||h.length===0||h.length===1&&h[0].length===0||((n=h==null?void 0:h.some(b=>b.length===0))!==null&&n!==void 0?n:!1))if(e){e=null;break}else e=p;else if(C){e=null;continue}}e&&(o=!0)}let u=e!==null&&e instanceof it?e.constructor:e,A="";if(u)if(o){let{description:p="",details:h="",examples:C=[]}=u.usage||{};p!==""&&(A+=Bo(p,{format:this.format(r),paragraphs:!1}).replace(/^./,b=>b.toUpperCase()),A+=` |
96 | `),(h!==""||C.length>0)&&(A+=`${this.format(r).header("Usage")} | 96 | `),(h!==""||C.length>0)&&(A+=`${this.format(r).header("Usage")} |
97 | `,A+=` | 97 | `,A+=` |
98 | `);let{usage:w,options:v}=this.getUsageByRegistration(u,{inlineOptions:!1});if(A+=`${this.format(r).bold(a)}${w} | 98 | `);let{usage:w,options:v}=this.getUsageByRegistration(u,{inlineOptions:!1});if(A+=`${this.format(r).bold(a)}${w} |
@@ -118,29 +118,29 @@ ${e.map(r=>` | |||
118 | `;for(let{commandClass:R,usage:L}of b){let _=R.usage.description||"undocumented";A+=` | 118 | `;for(let{commandClass:R,usage:L}of b){let _=R.usage.description||"undocumented";A+=` |
119 | `,A+=` ${this.format(r).bold(L)} | 119 | `,A+=` ${this.format(r).bold(L)} |
120 | `,A+=` ${Bo(_,{format:this.format(r),paragraphs:!1})}`}}A+=` | 120 | `,A+=` ${Bo(_,{format:this.format(r),paragraphs:!1})}`}}A+=` |
121 | `,A+=Bo("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(r),paragraphs:!0})}return A}error(e,r){var o,{colored:a,command:n=(o=e[QJ])!==null&&o!==void 0?o:null}=r===void 0?{}:r;e instanceof Error||(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let u="",A=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");A==="Error"&&(A="Internal Error"),u+=`${this.format(a).error(A)}: ${e.message} | 121 | `,A+=Bo("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(r),paragraphs:!0})}return A}error(e,r){var o,{colored:a,command:n=(o=e[MV])!==null&&o!==void 0?o:null}=r===void 0?{}:r;e instanceof Error||(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let u="",A=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");A==="Error"&&(A="Internal Error"),u+=`${this.format(a).error(A)}: ${e.message} |
122 | `;let p=e.clipanion;return typeof p<"u"?p.type==="usage"&&(u+=` | 122 | `;let p=e.clipanion;return typeof p<"u"?p.type==="usage"&&(u+=` |
123 | `,u+=this.usage(n)):e.stack&&(u+=`${e.stack.replace(/^.*\n/,"")} | 123 | `,u+=this.usage(n)):e.stack&&(u+=`${e.stack.replace(/^.*\n/,"")} |
124 | `),u}format(e){var r;return((r=e??this.enableColors)!==null&&r!==void 0?r:vo.defaultContext.colorDepth>1)?cJ:uJ}getUsageByRegistration(e,r){let o=this.registrations.get(e);if(typeof o>"u")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(o.index,r)}getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}};vo.defaultContext={env:process.env,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:SJ()}});var zI,LJ=dt(()=>{Zg();zI=class extends it{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} | 124 | `),u}format(e){var r;return((r=e??this.enableColors)!==null&&r!==void 0?r:vo.defaultContext.colorDepth>1)?mV:yV}getUsageByRegistration(e,r){let o=this.registrations.get(e);if(typeof o>"u")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(o.index,r)}getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}};vo.defaultContext={env:process.env,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:TV()}});var tw,GV=dt(()=>{rd();tw=class extends it{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} |
125 | `)}};zI.paths=[["--clipanion=definitions"]]});var XI,OJ=dt(()=>{Zg();XI=class extends it{async execute(){this.context.stdout.write(this.cli.usage())}};XI.paths=[["-h"],["--help"]]});var ZI,MJ=dt(()=>{Zg();ZI=class extends it{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:"<unknown>"} | 125 | `)}};tw.paths=[["--clipanion=definitions"]]});var rw,WV=dt(()=>{rd();rw=class extends it{async execute(){this.context.stdout.write(this.cli.usage())}};rw.paths=[["-h"],["--help"]]});var nw,YV=dt(()=>{rd();nw=class extends it{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:"<unknown>"} |
126 | `)}};ZI.paths=[["-v"],["--version"]]});var qT={};Yt(qT,{DefinitionsCommand:()=>zI,HelpCommand:()=>XI,VersionCommand:()=>ZI});var UJ=dt(()=>{LJ();OJ();MJ()});function _J(t,e,r){let[o,a]=Yu(e,r??{}),{arity:n=1}=a,u=t.split(","),A=new Set(u);return jo({definition(p){p.addOption({names:u,arity:n,hidden:a==null?void 0:a.hidden,description:a==null?void 0:a.description,required:a.required})},transformer(p,h,C){let w=typeof o<"u"?[...o]:void 0;for(let{name:v,value:b}of C.options)!A.has(v)||(w=w??[],w.push(b));return w}})}var HJ=dt(()=>{yf()});function qJ(t,e,r){let[o,a]=Yu(e,r??{}),n=t.split(","),u=new Set(n);return jo({definition(A){A.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(A,p,h){let C=o;for(let{name:w,value:v}of h.options)!u.has(w)||(C=v);return C}})}var jJ=dt(()=>{yf()});function GJ(t,e,r){let[o,a]=Yu(e,r??{}),n=t.split(","),u=new Set(n);return jo({definition(A){A.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(A,p,h){let C=o;for(let{name:w,value:v}of h.options)!u.has(w)||(C??(C=0),v?C+=1:C=0);return C}})}var WJ=dt(()=>{yf()});function YJ(t={}){return jo({definition(e,r){var o;e.addProxy({name:(o=t.name)!==null&&o!==void 0?o:r,required:t.required})},transformer(e,r,o){return o.positionals.map(({value:a})=>a)}})}var KJ=dt(()=>{yf()});function JJ(t={}){return jo({definition(e,r){var o;e.addRest({name:(o=t.name)!==null&&o!==void 0?o:r,required:t.required})},transformer(e,r,o){let a=u=>{let A=o.positionals[u];return A.extra===el||A.extra===!1&&u<e.arity.leading.length},n=0;for(;n<o.positionals.length&&a(n);)n+=1;return o.positionals.splice(0,n).map(({value:u})=>u)}})}var VJ=dt(()=>{GD();yf()});function zqe(t,e,r){let[o,a]=Yu(e,r??{}),{arity:n=1}=a,u=t.split(","),A=new Set(u);return jo({definition(p){p.addOption({names:u,arity:a.tolerateBoolean?0:n,hidden:a.hidden,description:a.description,required:a.required})},transformer(p,h,C,w){let v,b=o;typeof a.env<"u"&&w.env[a.env]&&(v=a.env,b=w.env[a.env]);for(let{name:E,value:R}of C.options)!A.has(E)||(v=E,b=R);return typeof b=="string"?KI(v??h,b,a.validator):b}})}function Xqe(t={}){let{required:e=!0}=t;return jo({definition(r,o){var a;r.addPositional({name:(a=t.name)!==null&&a!==void 0?a:o,required:t.required})},transformer(r,o,a){var n;for(let u=0;u<a.positionals.length;++u){if(a.positionals[u].extra===el||e&&a.positionals[u].extra===!0||!e&&a.positionals[u].extra===!1)continue;let[A]=a.positionals.splice(u,1);return KI((n=t.name)!==null&&n!==void 0?n:o,A.value,t.validator)}}})}function zJ(t,...e){return typeof t=="string"?zqe(t,...e):Xqe(t)}var XJ=dt(()=>{GD();yf()});var fe={};Yt(fe,{Array:()=>_J,Boolean:()=>qJ,Counter:()=>GJ,Proxy:()=>YJ,Rest:()=>JJ,String:()=>zJ,applyValidator:()=>KI,cleanValidationError:()=>MD,formatError:()=>YI,isOptionSymbol:()=>WI,makeCommandOption:()=>jo,rerouteArguments:()=>Yu});var ZJ=dt(()=>{yf();HJ();jJ();WJ();KJ();VJ();XJ()});var $I={};Yt($I,{Builtins:()=>qT,Cli:()=>vo,Command:()=>it,Option:()=>fe,UsageError:()=>ot,formatMarkdownish:()=>Bo,run:()=>RJ,runExit:()=>FJ});var _t=dt(()=>{OD();FT();Zg();NJ();UJ();ZJ()});var eV=U((Xbt,$J)=>{"use strict";$J.exports=(t,...e)=>new Promise(r=>{r(t(...e))})});var $g=U((Zbt,jT)=>{"use strict";var Zqe=eV(),tV=t=>{if(t<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],r=0,o=()=>{r--,e.length>0&&e.shift()()},a=(A,p,...h)=>{r++;let C=Zqe(A,...h);p(C),C.then(o,o)},n=(A,p,...h)=>{r<t?a(A,p,...h):e.push(a.bind(null,A,p,...h))},u=(A,...p)=>new Promise(h=>n(A,h,...p));return Object.defineProperties(u,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length}}),u};jT.exports=tV;jT.exports.default=tV});function Ku(t){return`YN${t.toString(10).padStart(4,"0")}`}function YD(t){let e=Number(t.slice(2));if(typeof dr[e]>"u")throw new Error(`Unknown message name: "${t}"`);return e}var dr,KD=dt(()=>{dr=(_e=>(_e[_e.UNNAMED=0]="UNNAMED",_e[_e.EXCEPTION=1]="EXCEPTION",_e[_e.MISSING_PEER_DEPENDENCY=2]="MISSING_PEER_DEPENDENCY",_e[_e.CYCLIC_DEPENDENCIES=3]="CYCLIC_DEPENDENCIES",_e[_e.DISABLED_BUILD_SCRIPTS=4]="DISABLED_BUILD_SCRIPTS",_e[_e.BUILD_DISABLED=5]="BUILD_DISABLED",_e[_e.SOFT_LINK_BUILD=6]="SOFT_LINK_BUILD",_e[_e.MUST_BUILD=7]="MUST_BUILD",_e[_e.MUST_REBUILD=8]="MUST_REBUILD",_e[_e.BUILD_FAILED=9]="BUILD_FAILED",_e[_e.RESOLVER_NOT_FOUND=10]="RESOLVER_NOT_FOUND",_e[_e.FETCHER_NOT_FOUND=11]="FETCHER_NOT_FOUND",_e[_e.LINKER_NOT_FOUND=12]="LINKER_NOT_FOUND",_e[_e.FETCH_NOT_CACHED=13]="FETCH_NOT_CACHED",_e[_e.YARN_IMPORT_FAILED=14]="YARN_IMPORT_FAILED",_e[_e.REMOTE_INVALID=15]="REMOTE_INVALID",_e[_e.REMOTE_NOT_FOUND=16]="REMOTE_NOT_FOUND",_e[_e.RESOLUTION_PACK=17]="RESOLUTION_PACK",_e[_e.CACHE_CHECKSUM_MISMATCH=18]="CACHE_CHECKSUM_MISMATCH",_e[_e.UNUSED_CACHE_ENTRY=19]="UNUSED_CACHE_ENTRY",_e[_e.MISSING_LOCKFILE_ENTRY=20]="MISSING_LOCKFILE_ENTRY",_e[_e.WORKSPACE_NOT_FOUND=21]="WORKSPACE_NOT_FOUND",_e[_e.TOO_MANY_MATCHING_WORKSPACES=22]="TOO_MANY_MATCHING_WORKSPACES",_e[_e.CONSTRAINTS_MISSING_DEPENDENCY=23]="CONSTRAINTS_MISSING_DEPENDENCY",_e[_e.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]="CONSTRAINTS_INCOMPATIBLE_DEPENDENCY",_e[_e.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]="CONSTRAINTS_EXTRANEOUS_DEPENDENCY",_e[_e.CONSTRAINTS_INVALID_DEPENDENCY=26]="CONSTRAINTS_INVALID_DEPENDENCY",_e[_e.CANT_SUGGEST_RESOLUTIONS=27]="CANT_SUGGEST_RESOLUTIONS",_e[_e.FROZEN_LOCKFILE_EXCEPTION=28]="FROZEN_LOCKFILE_EXCEPTION",_e[_e.CROSS_DRIVE_VIRTUAL_LOCAL=29]="CROSS_DRIVE_VIRTUAL_LOCAL",_e[_e.FETCH_FAILED=30]="FETCH_FAILED",_e[_e.DANGEROUS_NODE_MODULES=31]="DANGEROUS_NODE_MODULES",_e[_e.NODE_GYP_INJECTED=32]="NODE_GYP_INJECTED",_e[_e.AUTHENTICATION_NOT_FOUND=33]="AUTHENTICATION_NOT_FOUND",_e[_e.INVALID_CONFIGURATION_KEY=34]="INVALID_CONFIGURATION_KEY",_e[_e.NETWORK_ERROR=35]="NETWORK_ERROR",_e[_e.LIFECYCLE_SCRIPT=36]="LIFECYCLE_SCRIPT",_e[_e.CONSTRAINTS_MISSING_FIELD=37]="CONSTRAINTS_MISSING_FIELD",_e[_e.CONSTRAINTS_INCOMPATIBLE_FIELD=38]="CONSTRAINTS_INCOMPATIBLE_FIELD",_e[_e.CONSTRAINTS_EXTRANEOUS_FIELD=39]="CONSTRAINTS_EXTRANEOUS_FIELD",_e[_e.CONSTRAINTS_INVALID_FIELD=40]="CONSTRAINTS_INVALID_FIELD",_e[_e.AUTHENTICATION_INVALID=41]="AUTHENTICATION_INVALID",_e[_e.PROLOG_UNKNOWN_ERROR=42]="PROLOG_UNKNOWN_ERROR",_e[_e.PROLOG_SYNTAX_ERROR=43]="PROLOG_SYNTAX_ERROR",_e[_e.PROLOG_EXISTENCE_ERROR=44]="PROLOG_EXISTENCE_ERROR",_e[_e.STACK_OVERFLOW_RESOLUTION=45]="STACK_OVERFLOW_RESOLUTION",_e[_e.AUTOMERGE_FAILED_TO_PARSE=46]="AUTOMERGE_FAILED_TO_PARSE",_e[_e.AUTOMERGE_IMMUTABLE=47]="AUTOMERGE_IMMUTABLE",_e[_e.AUTOMERGE_SUCCESS=48]="AUTOMERGE_SUCCESS",_e[_e.AUTOMERGE_REQUIRED=49]="AUTOMERGE_REQUIRED",_e[_e.DEPRECATED_CLI_SETTINGS=50]="DEPRECATED_CLI_SETTINGS",_e[_e.PLUGIN_NAME_NOT_FOUND=51]="PLUGIN_NAME_NOT_FOUND",_e[_e.INVALID_PLUGIN_REFERENCE=52]="INVALID_PLUGIN_REFERENCE",_e[_e.CONSTRAINTS_AMBIGUITY=53]="CONSTRAINTS_AMBIGUITY",_e[_e.CACHE_OUTSIDE_PROJECT=54]="CACHE_OUTSIDE_PROJECT",_e[_e.IMMUTABLE_INSTALL=55]="IMMUTABLE_INSTALL",_e[_e.IMMUTABLE_CACHE=56]="IMMUTABLE_CACHE",_e[_e.INVALID_MANIFEST=57]="INVALID_MANIFEST",_e[_e.PACKAGE_PREPARATION_FAILED=58]="PACKAGE_PREPARATION_FAILED",_e[_e.INVALID_RANGE_PEER_DEPENDENCY=59]="INVALID_RANGE_PEER_DEPENDENCY",_e[_e.INCOMPATIBLE_PEER_DEPENDENCY=60]="INCOMPATIBLE_PEER_DEPENDENCY",_e[_e.DEPRECATED_PACKAGE=61]="DEPRECATED_PACKAGE",_e[_e.INCOMPATIBLE_OS=62]="INCOMPATIBLE_OS",_e[_e.INCOMPATIBLE_CPU=63]="INCOMPATIBLE_CPU",_e[_e.FROZEN_ARTIFACT_EXCEPTION=64]="FROZEN_ARTIFACT_EXCEPTION",_e[_e.TELEMETRY_NOTICE=65]="TELEMETRY_NOTICE",_e[_e.PATCH_HUNK_FAILED=66]="PATCH_HUNK_FAILED",_e[_e.INVALID_CONFIGURATION_VALUE=67]="INVALID_CONFIGURATION_VALUE",_e[_e.UNUSED_PACKAGE_EXTENSION=68]="UNUSED_PACKAGE_EXTENSION",_e[_e.REDUNDANT_PACKAGE_EXTENSION=69]="REDUNDANT_PACKAGE_EXTENSION",_e[_e.AUTO_NM_SUCCESS=70]="AUTO_NM_SUCCESS",_e[_e.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]="NM_CANT_INSTALL_EXTERNAL_SOFT_LINK",_e[_e.NM_PRESERVE_SYMLINKS_REQUIRED=72]="NM_PRESERVE_SYMLINKS_REQUIRED",_e[_e.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]="UPDATE_LOCKFILE_ONLY_SKIP_LINK",_e[_e.NM_HARDLINKS_MODE_DOWNGRADED=74]="NM_HARDLINKS_MODE_DOWNGRADED",_e[_e.PROLOG_INSTANTIATION_ERROR=75]="PROLOG_INSTANTIATION_ERROR",_e[_e.INCOMPATIBLE_ARCHITECTURE=76]="INCOMPATIBLE_ARCHITECTURE",_e[_e.GHOST_ARCHITECTURE=77]="GHOST_ARCHITECTURE",_e[_e.RESOLUTION_MISMATCH=78]="RESOLUTION_MISMATCH",_e[_e.PROLOG_LIMIT_EXCEEDED=79]="PROLOG_LIMIT_EXCEEDED",_e[_e.NETWORK_DISABLED=80]="NETWORK_DISABLED",_e[_e.NETWORK_UNSAFE_HTTP=81]="NETWORK_UNSAFE_HTTP",_e[_e.RESOLUTION_FAILED=82]="RESOLUTION_FAILED",_e[_e.AUTOMERGE_GIT_ERROR=83]="AUTOMERGE_GIT_ERROR",_e[_e.CONSTRAINTS_CHECK_FAILED=84]="CONSTRAINTS_CHECK_FAILED",_e))(dr||{})});var ew=U((eQt,rV)=>{var $qe="2.0.0",eje=Number.MAX_SAFE_INTEGER||9007199254740991,tje=16;rV.exports={SEMVER_SPEC_VERSION:$qe,MAX_LENGTH:256,MAX_SAFE_INTEGER:eje,MAX_SAFE_COMPONENT_LENGTH:tje}});var tw=U((tQt,nV)=>{var rje=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};nV.exports=rje});var ed=U((Gp,iV)=>{var{MAX_SAFE_COMPONENT_LENGTH:GT}=ew(),nje=tw();Gp=iV.exports={};var ije=Gp.re=[],or=Gp.src=[],ar=Gp.t={},sje=0,Kr=(t,e,r)=>{let o=sje++;nje(t,o,e),ar[t]=o,or[o]=e,ije[o]=new RegExp(e,r?"g":void 0)};Kr("NUMERICIDENTIFIER","0|[1-9]\\d*");Kr("NUMERICIDENTIFIERLOOSE","[0-9]+");Kr("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");Kr("MAINVERSION",`(${or[ar.NUMERICIDENTIFIER]})\\.(${or[ar.NUMERICIDENTIFIER]})\\.(${or[ar.NUMERICIDENTIFIER]})`);Kr("MAINVERSIONLOOSE",`(${or[ar.NUMERICIDENTIFIERLOOSE]})\\.(${or[ar.NUMERICIDENTIFIERLOOSE]})\\.(${or[ar.NUMERICIDENTIFIERLOOSE]})`);Kr("PRERELEASEIDENTIFIER",`(?:${or[ar.NUMERICIDENTIFIER]}|${or[ar.NONNUMERICIDENTIFIER]})`);Kr("PRERELEASEIDENTIFIERLOOSE",`(?:${or[ar.NUMERICIDENTIFIERLOOSE]}|${or[ar.NONNUMERICIDENTIFIER]})`);Kr("PRERELEASE",`(?:-(${or[ar.PRERELEASEIDENTIFIER]}(?:\\.${or[ar.PRERELEASEIDENTIFIER]})*))`);Kr("PRERELEASELOOSE",`(?:-?(${or[ar.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${or[ar.PRERELEASEIDENTIFIERLOOSE]})*))`);Kr("BUILDIDENTIFIER","[0-9A-Za-z-]+");Kr("BUILD",`(?:\\+(${or[ar.BUILDIDENTIFIER]}(?:\\.${or[ar.BUILDIDENTIFIER]})*))`);Kr("FULLPLAIN",`v?${or[ar.MAINVERSION]}${or[ar.PRERELEASE]}?${or[ar.BUILD]}?`);Kr("FULL",`^${or[ar.FULLPLAIN]}$`);Kr("LOOSEPLAIN",`[v=\\s]*${or[ar.MAINVERSIONLOOSE]}${or[ar.PRERELEASELOOSE]}?${or[ar.BUILD]}?`);Kr("LOOSE",`^${or[ar.LOOSEPLAIN]}$`);Kr("GTLT","((?:<|>)?=?)");Kr("XRANGEIDENTIFIERLOOSE",`${or[ar.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);Kr("XRANGEIDENTIFIER",`${or[ar.NUMERICIDENTIFIER]}|x|X|\\*`);Kr("XRANGEPLAIN",`[v=\\s]*(${or[ar.XRANGEIDENTIFIER]})(?:\\.(${or[ar.XRANGEIDENTIFIER]})(?:\\.(${or[ar.XRANGEIDENTIFIER]})(?:${or[ar.PRERELEASE]})?${or[ar.BUILD]}?)?)?`);Kr("XRANGEPLAINLOOSE",`[v=\\s]*(${or[ar.XRANGEIDENTIFIERLOOSE]})(?:\\.(${or[ar.XRANGEIDENTIFIERLOOSE]})(?:\\.(${or[ar.XRANGEIDENTIFIERLOOSE]})(?:${or[ar.PRERELEASELOOSE]})?${or[ar.BUILD]}?)?)?`);Kr("XRANGE",`^${or[ar.GTLT]}\\s*${or[ar.XRANGEPLAIN]}$`);Kr("XRANGELOOSE",`^${or[ar.GTLT]}\\s*${or[ar.XRANGEPLAINLOOSE]}$`);Kr("COERCE",`(^|[^\\d])(\\d{1,${GT}})(?:\\.(\\d{1,${GT}}))?(?:\\.(\\d{1,${GT}}))?(?:$|[^\\d])`);Kr("COERCERTL",or[ar.COERCE],!0);Kr("LONETILDE","(?:~>?)");Kr("TILDETRIM",`(\\s*)${or[ar.LONETILDE]}\\s+`,!0);Gp.tildeTrimReplace="$1~";Kr("TILDE",`^${or[ar.LONETILDE]}${or[ar.XRANGEPLAIN]}$`);Kr("TILDELOOSE",`^${or[ar.LONETILDE]}${or[ar.XRANGEPLAINLOOSE]}$`);Kr("LONECARET","(?:\\^)");Kr("CARETTRIM",`(\\s*)${or[ar.LONECARET]}\\s+`,!0);Gp.caretTrimReplace="$1^";Kr("CARET",`^${or[ar.LONECARET]}${or[ar.XRANGEPLAIN]}$`);Kr("CARETLOOSE",`^${or[ar.LONECARET]}${or[ar.XRANGEPLAINLOOSE]}$`);Kr("COMPARATORLOOSE",`^${or[ar.GTLT]}\\s*(${or[ar.LOOSEPLAIN]})$|^$`);Kr("COMPARATOR",`^${or[ar.GTLT]}\\s*(${or[ar.FULLPLAIN]})$|^$`);Kr("COMPARATORTRIM",`(\\s*)${or[ar.GTLT]}\\s*(${or[ar.LOOSEPLAIN]}|${or[ar.XRANGEPLAIN]})`,!0);Gp.comparatorTrimReplace="$1$2$3";Kr("HYPHENRANGE",`^\\s*(${or[ar.XRANGEPLAIN]})\\s+-\\s+(${or[ar.XRANGEPLAIN]})\\s*$`);Kr("HYPHENRANGELOOSE",`^\\s*(${or[ar.XRANGEPLAINLOOSE]})\\s+-\\s+(${or[ar.XRANGEPLAINLOOSE]})\\s*$`);Kr("STAR","(<|>)?=?\\s*\\*");Kr("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");Kr("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var rw=U((rQt,sV)=>{var oje=["includePrerelease","loose","rtl"],aje=t=>t?typeof t!="object"?{loose:!0}:oje.filter(e=>t[e]).reduce((e,r)=>(e[r]=!0,e),{}):{};sV.exports=aje});var JD=U((nQt,lV)=>{var oV=/^[0-9]+$/,aV=(t,e)=>{let r=oV.test(t),o=oV.test(e);return r&&o&&(t=+t,e=+e),t===e?0:r&&!o?-1:o&&!r?1:t<e?-1:1},lje=(t,e)=>aV(e,t);lV.exports={compareIdentifiers:aV,rcompareIdentifiers:lje}});var Do=U((iQt,fV)=>{var VD=tw(),{MAX_LENGTH:cV,MAX_SAFE_INTEGER:zD}=ew(),{re:uV,t:AV}=ed(),cje=rw(),{compareIdentifiers:Iy}=JD(),tl=class{constructor(e,r){if(r=cje(r),e instanceof tl){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>cV)throw new TypeError(`version is longer than ${cV} characters`);VD("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let o=e.trim().match(r.loose?uV[AV.LOOSE]:uV[AV.FULL]);if(!o)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+o[1],this.minor=+o[2],this.patch=+o[3],this.major>zD||this.major<0)throw new TypeError("Invalid major version");if(this.minor>zD||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>zD||this.patch<0)throw new TypeError("Invalid patch version");o[4]?this.prerelease=o[4].split(".").map(a=>{if(/^[0-9]+$/.test(a)){let n=+a;if(n>=0&&n<zD)return n}return a}):this.prerelease=[],this.build=o[5]?o[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(VD("SemVer.compare",this.version,this.options,e),!(e instanceof tl)){if(typeof e=="string"&&e===this.version)return 0;e=new tl(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof tl||(e=new tl(e,this.options)),Iy(this.major,e.major)||Iy(this.minor,e.minor)||Iy(this.patch,e.patch)}comparePre(e){if(e instanceof tl||(e=new tl(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let r=0;do{let o=this.prerelease[r],a=e.prerelease[r];if(VD("prerelease compare",r,o,a),o===void 0&&a===void 0)return 0;if(a===void 0)return 1;if(o===void 0)return-1;if(o===a)continue;return Iy(o,a)}while(++r)}compareBuild(e){e instanceof tl||(e=new tl(e,this.options));let r=0;do{let o=this.build[r],a=e.build[r];if(VD("prerelease compare",r,o,a),o===void 0&&a===void 0)return 0;if(a===void 0)return 1;if(o===void 0)return-1;if(o===a)continue;return Iy(o,a)}while(++r)}inc(e,r){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r),this.inc("pre",r);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",r),this.inc("pre",r);break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":if(this.prerelease.length===0)this.prerelease=[0];else{let o=this.prerelease.length;for(;--o>=0;)typeof this.prerelease[o]=="number"&&(this.prerelease[o]++,o=-2);o===-1&&this.prerelease.push(0)}r&&(Iy(this.prerelease[0],r)===0?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};fV.exports=tl});var td=U((sQt,dV)=>{var{MAX_LENGTH:uje}=ew(),{re:pV,t:hV}=ed(),gV=Do(),Aje=rw(),fje=(t,e)=>{if(e=Aje(e),t instanceof gV)return t;if(typeof t!="string"||t.length>uje||!(e.loose?pV[hV.LOOSE]:pV[hV.FULL]).test(t))return null;try{return new gV(t,e)}catch{return null}};dV.exports=fje});var yV=U((oQt,mV)=>{var pje=td(),hje=(t,e)=>{let r=pje(t,e);return r?r.version:null};mV.exports=hje});var CV=U((aQt,EV)=>{var gje=td(),dje=(t,e)=>{let r=gje(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};EV.exports=dje});var BV=U((lQt,wV)=>{var IV=Do(),mje=(t,e,r,o)=>{typeof r=="string"&&(o=r,r=void 0);try{return new IV(t instanceof IV?t.version:t,r).inc(e,o).version}catch{return null}};wV.exports=mje});var Ml=U((cQt,DV)=>{var vV=Do(),yje=(t,e,r)=>new vV(t,r).compare(new vV(e,r));DV.exports=yje});var XD=U((uQt,SV)=>{var Eje=Ml(),Cje=(t,e,r)=>Eje(t,e,r)===0;SV.exports=Cje});var bV=U((AQt,xV)=>{var PV=td(),Ije=XD(),wje=(t,e)=>{if(Ije(t,e))return null;{let r=PV(t),o=PV(e),a=r.prerelease.length||o.prerelease.length,n=a?"pre":"",u=a?"prerelease":"";for(let A in r)if((A==="major"||A==="minor"||A==="patch")&&r[A]!==o[A])return n+A;return u}};xV.exports=wje});var kV=U((fQt,QV)=>{var Bje=Do(),vje=(t,e)=>new Bje(t,e).major;QV.exports=vje});var RV=U((pQt,FV)=>{var Dje=Do(),Sje=(t,e)=>new Dje(t,e).minor;FV.exports=Sje});var NV=U((hQt,TV)=>{var Pje=Do(),xje=(t,e)=>new Pje(t,e).patch;TV.exports=xje});var OV=U((gQt,LV)=>{var bje=td(),Qje=(t,e)=>{let r=bje(t,e);return r&&r.prerelease.length?r.prerelease:null};LV.exports=Qje});var UV=U((dQt,MV)=>{var kje=Ml(),Fje=(t,e,r)=>kje(e,t,r);MV.exports=Fje});var HV=U((mQt,_V)=>{var Rje=Ml(),Tje=(t,e)=>Rje(t,e,!0);_V.exports=Tje});var ZD=U((yQt,jV)=>{var qV=Do(),Nje=(t,e,r)=>{let o=new qV(t,r),a=new qV(e,r);return o.compare(a)||o.compareBuild(a)};jV.exports=Nje});var WV=U((EQt,GV)=>{var Lje=ZD(),Oje=(t,e)=>t.sort((r,o)=>Lje(r,o,e));GV.exports=Oje});var KV=U((CQt,YV)=>{var Mje=ZD(),Uje=(t,e)=>t.sort((r,o)=>Mje(o,r,e));YV.exports=Uje});var nw=U((IQt,JV)=>{var _je=Ml(),Hje=(t,e,r)=>_je(t,e,r)>0;JV.exports=Hje});var $D=U((wQt,VV)=>{var qje=Ml(),jje=(t,e,r)=>qje(t,e,r)<0;VV.exports=jje});var WT=U((BQt,zV)=>{var Gje=Ml(),Wje=(t,e,r)=>Gje(t,e,r)!==0;zV.exports=Wje});var eS=U((vQt,XV)=>{var Yje=Ml(),Kje=(t,e,r)=>Yje(t,e,r)>=0;XV.exports=Kje});var tS=U((DQt,ZV)=>{var Jje=Ml(),Vje=(t,e,r)=>Jje(t,e,r)<=0;ZV.exports=Vje});var YT=U((SQt,$V)=>{var zje=XD(),Xje=WT(),Zje=nw(),$je=eS(),e9e=$D(),t9e=tS(),r9e=(t,e,r,o)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return zje(t,r,o);case"!=":return Xje(t,r,o);case">":return Zje(t,r,o);case">=":return $je(t,r,o);case"<":return e9e(t,r,o);case"<=":return t9e(t,r,o);default:throw new TypeError(`Invalid operator: ${e}`)}};$V.exports=r9e});var tz=U((PQt,ez)=>{var n9e=Do(),i9e=td(),{re:rS,t:nS}=ed(),s9e=(t,e)=>{if(t instanceof n9e)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(rS[nS.COERCE]);else{let o;for(;(o=rS[nS.COERCERTL].exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||o.index+o[0].length!==r.index+r[0].length)&&(r=o),rS[nS.COERCERTL].lastIndex=o.index+o[1].length+o[2].length;rS[nS.COERCERTL].lastIndex=-1}return r===null?null:i9e(`${r[2]}.${r[3]||"0"}.${r[4]||"0"}`,e)};ez.exports=s9e});var nz=U((xQt,rz)=>{"use strict";rz.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var iS=U((bQt,iz)=>{"use strict";iz.exports=dn;dn.Node=rd;dn.create=dn;function dn(t){var e=this;if(e instanceof dn||(e=new dn),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(a){e.push(a)});else if(arguments.length>0)for(var r=0,o=arguments.length;r<o;r++)e.push(arguments[r]);return e}dn.prototype.removeNode=function(t){if(t.list!==this)throw new Error("removing node which does not belong to this list");var e=t.next,r=t.prev;return e&&(e.prev=r),r&&(r.next=e),t===this.head&&(this.head=e),t===this.tail&&(this.tail=r),t.list.length--,t.next=null,t.prev=null,t.list=null,e};dn.prototype.unshiftNode=function(t){if(t!==this.head){t.list&&t.list.removeNode(t);var e=this.head;t.list=this,t.next=e,e&&(e.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}};dn.prototype.pushNode=function(t){if(t!==this.tail){t.list&&t.list.removeNode(t);var e=this.tail;t.list=this,t.prev=e,e&&(e.next=t),this.tail=t,this.head||(this.head=t),this.length++}};dn.prototype.push=function(){for(var t=0,e=arguments.length;t<e;t++)a9e(this,arguments[t]);return this.length};dn.prototype.unshift=function(){for(var t=0,e=arguments.length;t<e;t++)l9e(this,arguments[t]);return this.length};dn.prototype.pop=function(){if(!!this.tail){var t=this.tail.value;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,t}};dn.prototype.shift=function(){if(!!this.head){var t=this.head.value;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,t}};dn.prototype.forEach=function(t,e){e=e||this;for(var r=this.head,o=0;r!==null;o++)t.call(e,r.value,o,this),r=r.next};dn.prototype.forEachReverse=function(t,e){e=e||this;for(var r=this.tail,o=this.length-1;r!==null;o--)t.call(e,r.value,o,this),r=r.prev};dn.prototype.get=function(t){for(var e=0,r=this.head;r!==null&&e<t;e++)r=r.next;if(e===t&&r!==null)return r.value};dn.prototype.getReverse=function(t){for(var e=0,r=this.tail;r!==null&&e<t;e++)r=r.prev;if(e===t&&r!==null)return r.value};dn.prototype.map=function(t,e){e=e||this;for(var r=new dn,o=this.head;o!==null;)r.push(t.call(e,o.value,this)),o=o.next;return r};dn.prototype.mapReverse=function(t,e){e=e||this;for(var r=new dn,o=this.tail;o!==null;)r.push(t.call(e,o.value,this)),o=o.prev;return r};dn.prototype.reduce=function(t,e){var r,o=this.head;if(arguments.length>1)r=e;else if(this.head)o=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var a=0;o!==null;a++)r=t(r,o.value,a),o=o.next;return r};dn.prototype.reduceReverse=function(t,e){var r,o=this.tail;if(arguments.length>1)r=e;else if(this.tail)o=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var a=this.length-1;o!==null;a--)r=t(r,o.value,a),o=o.prev;return r};dn.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};dn.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};dn.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new dn;if(e<t||e<0)return r;t<0&&(t=0),e>this.length&&(e=this.length);for(var o=0,a=this.head;a!==null&&o<t;o++)a=a.next;for(;a!==null&&o<e;o++,a=a.next)r.push(a.value);return r};dn.prototype.sliceReverse=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new dn;if(e<t||e<0)return r;t<0&&(t=0),e>this.length&&(e=this.length);for(var o=this.length,a=this.tail;a!==null&&o>e;o--)a=a.prev;for(;a!==null&&o>t;o--,a=a.prev)r.push(a.value);return r};dn.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var o=0,a=this.head;a!==null&&o<t;o++)a=a.next;for(var n=[],o=0;a&&o<e;o++)n.push(a.value),a=this.removeNode(a);a===null&&(a=this.tail),a!==this.head&&a!==this.tail&&(a=a.prev);for(var o=0;o<r.length;o++)a=o9e(this,a,r[o]);return n};dn.prototype.reverse=function(){for(var t=this.head,e=this.tail,r=t;r!==null;r=r.prev){var o=r.prev;r.prev=r.next,r.next=o}return this.head=e,this.tail=t,this};function o9e(t,e,r){var o=e===t.head?new rd(r,null,e,t):new rd(r,e,e.next,t);return o.next===null&&(t.tail=o),o.prev===null&&(t.head=o),t.length++,o}function a9e(t,e){t.tail=new rd(e,t.tail,null,t),t.head||(t.head=t.tail),t.length++}function l9e(t,e){t.head=new rd(e,null,t.head,t),t.tail||(t.tail=t.head),t.length++}function rd(t,e,r,o){if(!(this instanceof rd))return new rd(t,e,r,o);this.list=o,this.value=t,e?(e.next=this,this.prev=e):this.prev=null,r?(r.prev=this,this.next=r):this.next=null}try{nz()(dn)}catch{}});var cz=U((QQt,lz)=>{"use strict";var c9e=iS(),nd=Symbol("max"),If=Symbol("length"),wy=Symbol("lengthCalculator"),sw=Symbol("allowStale"),id=Symbol("maxAge"),Cf=Symbol("dispose"),sz=Symbol("noDisposeOnSet"),Ds=Symbol("lruList"),Uc=Symbol("cache"),az=Symbol("updateAgeOnGet"),KT=()=>1,VT=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let r=this[nd]=e.max||1/0,o=e.length||KT;if(this[wy]=typeof o!="function"?KT:o,this[sw]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[id]=e.maxAge||0,this[Cf]=e.dispose,this[sz]=e.noDisposeOnSet||!1,this[az]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[nd]=e||1/0,iw(this)}get max(){return this[nd]}set allowStale(e){this[sw]=!!e}get allowStale(){return this[sw]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[id]=e,iw(this)}get maxAge(){return this[id]}set lengthCalculator(e){typeof e!="function"&&(e=KT),e!==this[wy]&&(this[wy]=e,this[If]=0,this[Ds].forEach(r=>{r.length=this[wy](r.value,r.key),this[If]+=r.length})),iw(this)}get lengthCalculator(){return this[wy]}get length(){return this[If]}get itemCount(){return this[Ds].length}rforEach(e,r){r=r||this;for(let o=this[Ds].tail;o!==null;){let a=o.prev;oz(this,e,o,r),o=a}}forEach(e,r){r=r||this;for(let o=this[Ds].head;o!==null;){let a=o.next;oz(this,e,o,r),o=a}}keys(){return this[Ds].toArray().map(e=>e.key)}values(){return this[Ds].toArray().map(e=>e.value)}reset(){this[Cf]&&this[Ds]&&this[Ds].length&&this[Ds].forEach(e=>this[Cf](e.key,e.value)),this[Uc]=new Map,this[Ds]=new c9e,this[If]=0}dump(){return this[Ds].map(e=>sS(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[Ds]}set(e,r,o){if(o=o||this[id],o&&typeof o!="number")throw new TypeError("maxAge must be a number");let a=o?Date.now():0,n=this[wy](r,e);if(this[Uc].has(e)){if(n>this[nd])return By(this,this[Uc].get(e)),!1;let p=this[Uc].get(e).value;return this[Cf]&&(this[sz]||this[Cf](e,p.value)),p.now=a,p.maxAge=o,p.value=r,this[If]+=n-p.length,p.length=n,this.get(e),iw(this),!0}let u=new zT(e,r,n,a,o);return u.length>this[nd]?(this[Cf]&&this[Cf](e,r),!1):(this[If]+=u.length,this[Ds].unshift(u),this[Uc].set(e,this[Ds].head),iw(this),!0)}has(e){if(!this[Uc].has(e))return!1;let r=this[Uc].get(e).value;return!sS(this,r)}get(e){return JT(this,e,!0)}peek(e){return JT(this,e,!1)}pop(){let e=this[Ds].tail;return e?(By(this,e),e.value):null}del(e){By(this,this[Uc].get(e))}load(e){this.reset();let r=Date.now();for(let o=e.length-1;o>=0;o--){let a=e[o],n=a.e||0;if(n===0)this.set(a.k,a.v);else{let u=n-r;u>0&&this.set(a.k,a.v,u)}}}prune(){this[Uc].forEach((e,r)=>JT(this,r,!1))}},JT=(t,e,r)=>{let o=t[Uc].get(e);if(o){let a=o.value;if(sS(t,a)){if(By(t,o),!t[sw])return}else r&&(t[az]&&(o.value.now=Date.now()),t[Ds].unshiftNode(o));return a.value}},sS=(t,e)=>{if(!e||!e.maxAge&&!t[id])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[id]&&r>t[id]},iw=t=>{if(t[If]>t[nd])for(let e=t[Ds].tail;t[If]>t[nd]&&e!==null;){let r=e.prev;By(t,e),e=r}},By=(t,e)=>{if(e){let r=e.value;t[Cf]&&t[Cf](r.key,r.value),t[If]-=r.length,t[Uc].delete(r.key),t[Ds].removeNode(e)}},zT=class{constructor(e,r,o,a,n){this.key=e,this.value=r,this.length=o,this.now=a,this.maxAge=n||0}},oz=(t,e,r,o)=>{let a=r.value;sS(t,a)&&(By(t,r),t[sw]||(a=void 0)),a&&e.call(o,a.value,a.key,t)};lz.exports=VT});var Ul=U((kQt,pz)=>{var sd=class{constructor(e,r){if(r=A9e(r),e instanceof sd)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new sd(e.raw,r);if(e instanceof XT)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e,this.set=e.split("||").map(o=>this.parseRange(o.trim())).filter(o=>o.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let o=this.set[0];if(this.set=this.set.filter(a=>!Az(a[0])),this.set.length===0)this.set=[o];else if(this.set.length>1){for(let a of this.set)if(a.length===1&&d9e(a[0])){this.set=[a];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let o=`parseRange:${Object.keys(this.options).join(",")}:${e}`,a=uz.get(o);if(a)return a;let n=this.options.loose,u=n?va[Yo.HYPHENRANGELOOSE]:va[Yo.HYPHENRANGE];e=e.replace(u,S9e(this.options.includePrerelease)),wi("hyphen replace",e),e=e.replace(va[Yo.COMPARATORTRIM],p9e),wi("comparator trim",e),e=e.replace(va[Yo.TILDETRIM],h9e),e=e.replace(va[Yo.CARETTRIM],g9e),e=e.split(/\s+/).join(" ");let A=e.split(" ").map(w=>m9e(w,this.options)).join(" ").split(/\s+/).map(w=>D9e(w,this.options));n&&(A=A.filter(w=>(wi("loose invalid filter",w,this.options),!!w.match(va[Yo.COMPARATORLOOSE])))),wi("range list",A);let p=new Map,h=A.map(w=>new XT(w,this.options));for(let w of h){if(Az(w))return[w];p.set(w.value,w)}p.size>1&&p.has("")&&p.delete("");let C=[...p.values()];return uz.set(o,C),C}intersects(e,r){if(!(e instanceof sd))throw new TypeError("a Range is required");return this.set.some(o=>fz(o,r)&&e.set.some(a=>fz(a,r)&&o.every(n=>a.every(u=>n.intersects(u,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new f9e(e,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(P9e(this.set[r],e,this.options))return!0;return!1}};pz.exports=sd;var u9e=cz(),uz=new u9e({max:1e3}),A9e=rw(),XT=ow(),wi=tw(),f9e=Do(),{re:va,t:Yo,comparatorTrimReplace:p9e,tildeTrimReplace:h9e,caretTrimReplace:g9e}=ed(),Az=t=>t.value==="<0.0.0-0",d9e=t=>t.value==="",fz=(t,e)=>{let r=!0,o=t.slice(),a=o.pop();for(;r&&o.length;)r=o.every(n=>a.intersects(n,e)),a=o.pop();return r},m9e=(t,e)=>(wi("comp",t,e),t=C9e(t,e),wi("caret",t),t=y9e(t,e),wi("tildes",t),t=w9e(t,e),wi("xrange",t),t=v9e(t,e),wi("stars",t),t),Ko=t=>!t||t.toLowerCase()==="x"||t==="*",y9e=(t,e)=>t.trim().split(/\s+/).map(r=>E9e(r,e)).join(" "),E9e=(t,e)=>{let r=e.loose?va[Yo.TILDELOOSE]:va[Yo.TILDE];return t.replace(r,(o,a,n,u,A)=>{wi("tilde",t,o,a,n,u,A);let p;return Ko(a)?p="":Ko(n)?p=`>=${a}.0.0 <${+a+1}.0.0-0`:Ko(u)?p=`>=${a}.${n}.0 <${a}.${+n+1}.0-0`:A?(wi("replaceTilde pr",A),p=`>=${a}.${n}.${u}-${A} <${a}.${+n+1}.0-0`):p=`>=${a}.${n}.${u} <${a}.${+n+1}.0-0`,wi("tilde return",p),p})},C9e=(t,e)=>t.trim().split(/\s+/).map(r=>I9e(r,e)).join(" "),I9e=(t,e)=>{wi("caret",t,e);let r=e.loose?va[Yo.CARETLOOSE]:va[Yo.CARET],o=e.includePrerelease?"-0":"";return t.replace(r,(a,n,u,A,p)=>{wi("caret",t,a,n,u,A,p);let h;return Ko(n)?h="":Ko(u)?h=`>=${n}.0.0${o} <${+n+1}.0.0-0`:Ko(A)?n==="0"?h=`>=${n}.${u}.0${o} <${n}.${+u+1}.0-0`:h=`>=${n}.${u}.0${o} <${+n+1}.0.0-0`:p?(wi("replaceCaret pr",p),n==="0"?u==="0"?h=`>=${n}.${u}.${A}-${p} <${n}.${u}.${+A+1}-0`:h=`>=${n}.${u}.${A}-${p} <${n}.${+u+1}.0-0`:h=`>=${n}.${u}.${A}-${p} <${+n+1}.0.0-0`):(wi("no pr"),n==="0"?u==="0"?h=`>=${n}.${u}.${A}${o} <${n}.${u}.${+A+1}-0`:h=`>=${n}.${u}.${A}${o} <${n}.${+u+1}.0-0`:h=`>=${n}.${u}.${A} <${+n+1}.0.0-0`),wi("caret return",h),h})},w9e=(t,e)=>(wi("replaceXRanges",t,e),t.split(/\s+/).map(r=>B9e(r,e)).join(" ")),B9e=(t,e)=>{t=t.trim();let r=e.loose?va[Yo.XRANGELOOSE]:va[Yo.XRANGE];return t.replace(r,(o,a,n,u,A,p)=>{wi("xRange",t,o,a,n,u,A,p);let h=Ko(n),C=h||Ko(u),w=C||Ko(A),v=w;return a==="="&&v&&(a=""),p=e.includePrerelease?"-0":"",h?a===">"||a==="<"?o="<0.0.0-0":o="*":a&&v?(C&&(u=0),A=0,a===">"?(a=">=",C?(n=+n+1,u=0,A=0):(u=+u+1,A=0)):a==="<="&&(a="<",C?n=+n+1:u=+u+1),a==="<"&&(p="-0"),o=`${a+n}.${u}.${A}${p}`):C?o=`>=${n}.0.0${p} <${+n+1}.0.0-0`:w&&(o=`>=${n}.${u}.0${p} <${n}.${+u+1}.0-0`),wi("xRange return",o),o})},v9e=(t,e)=>(wi("replaceStars",t,e),t.trim().replace(va[Yo.STAR],"")),D9e=(t,e)=>(wi("replaceGTE0",t,e),t.trim().replace(va[e.includePrerelease?Yo.GTE0PRE:Yo.GTE0],"")),S9e=t=>(e,r,o,a,n,u,A,p,h,C,w,v,b)=>(Ko(o)?r="":Ko(a)?r=`>=${o}.0.0${t?"-0":""}`:Ko(n)?r=`>=${o}.${a}.0${t?"-0":""}`:u?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,Ko(h)?p="":Ko(C)?p=`<${+h+1}.0.0-0`:Ko(w)?p=`<${h}.${+C+1}.0-0`:v?p=`<=${h}.${C}.${w}-${v}`:t?p=`<${h}.${C}.${+w+1}-0`:p=`<=${p}`,`${r} ${p}`.trim()),P9e=(t,e,r)=>{for(let o=0;o<t.length;o++)if(!t[o].test(e))return!1;if(e.prerelease.length&&!r.includePrerelease){for(let o=0;o<t.length;o++)if(wi(t[o].semver),t[o].semver!==XT.ANY&&t[o].semver.prerelease.length>0){let a=t[o].semver;if(a.major===e.major&&a.minor===e.minor&&a.patch===e.patch)return!0}return!1}return!0}});var ow=U((FQt,yz)=>{var aw=Symbol("SemVer ANY"),vy=class{static get ANY(){return aw}constructor(e,r){if(r=x9e(r),e instanceof vy){if(e.loose===!!r.loose)return e;e=e.value}$T("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===aw?this.value="":this.value=this.operator+this.semver.version,$T("comp",this)}parse(e){let r=this.options.loose?hz[gz.COMPARATORLOOSE]:hz[gz.COMPARATOR],o=e.match(r);if(!o)throw new TypeError(`Invalid comparator: ${e}`);this.operator=o[1]!==void 0?o[1]:"",this.operator==="="&&(this.operator=""),o[2]?this.semver=new dz(o[2],this.options.loose):this.semver=aw}toString(){return this.value}test(e){if($T("Comparator.test",e,this.options.loose),this.semver===aw||e===aw)return!0;if(typeof e=="string")try{e=new dz(e,this.options)}catch{return!1}return ZT(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof vy))throw new TypeError("a Comparator is required");if((!r||typeof r!="object")&&(r={loose:!!r,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new mz(e.value,r).test(this.value);if(e.operator==="")return e.value===""?!0:new mz(this.value,r).test(e.semver);let o=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),a=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),n=this.semver.version===e.semver.version,u=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),A=ZT(this.semver,"<",e.semver,r)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),p=ZT(this.semver,">",e.semver,r)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return o||a||n&&u||A||p}};yz.exports=vy;var x9e=rw(),{re:hz,t:gz}=ed(),ZT=YT(),$T=tw(),dz=Do(),mz=Ul()});var lw=U((RQt,Ez)=>{var b9e=Ul(),Q9e=(t,e,r)=>{try{e=new b9e(e,r)}catch{return!1}return e.test(t)};Ez.exports=Q9e});var Iz=U((TQt,Cz)=>{var k9e=Ul(),F9e=(t,e)=>new k9e(t,e).set.map(r=>r.map(o=>o.value).join(" ").trim().split(" "));Cz.exports=F9e});var Bz=U((NQt,wz)=>{var R9e=Do(),T9e=Ul(),N9e=(t,e,r)=>{let o=null,a=null,n=null;try{n=new T9e(e,r)}catch{return null}return t.forEach(u=>{n.test(u)&&(!o||a.compare(u)===-1)&&(o=u,a=new R9e(o,r))}),o};wz.exports=N9e});var Dz=U((LQt,vz)=>{var L9e=Do(),O9e=Ul(),M9e=(t,e,r)=>{let o=null,a=null,n=null;try{n=new O9e(e,r)}catch{return null}return t.forEach(u=>{n.test(u)&&(!o||a.compare(u)===1)&&(o=u,a=new L9e(o,r))}),o};vz.exports=M9e});var xz=U((OQt,Pz)=>{var eN=Do(),U9e=Ul(),Sz=nw(),_9e=(t,e)=>{t=new U9e(t,e);let r=new eN("0.0.0");if(t.test(r)||(r=new eN("0.0.0-0"),t.test(r)))return r;r=null;for(let o=0;o<t.set.length;++o){let a=t.set[o],n=null;a.forEach(u=>{let A=new eN(u.semver.version);switch(u.operator){case">":A.prerelease.length===0?A.patch++:A.prerelease.push(0),A.raw=A.format();case"":case">=":(!n||Sz(A,n))&&(n=A);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${u.operator}`)}}),n&&(!r||Sz(r,n))&&(r=n)}return r&&t.test(r)?r:null};Pz.exports=_9e});var Qz=U((MQt,bz)=>{var H9e=Ul(),q9e=(t,e)=>{try{return new H9e(t,e).range||"*"}catch{return null}};bz.exports=q9e});var oS=U((UQt,Tz)=>{var j9e=Do(),Rz=ow(),{ANY:G9e}=Rz,W9e=Ul(),Y9e=lw(),kz=nw(),Fz=$D(),K9e=tS(),J9e=eS(),V9e=(t,e,r,o)=>{t=new j9e(t,o),e=new W9e(e,o);let a,n,u,A,p;switch(r){case">":a=kz,n=K9e,u=Fz,A=">",p=">=";break;case"<":a=Fz,n=J9e,u=kz,A="<",p="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Y9e(t,e,o))return!1;for(let h=0;h<e.set.length;++h){let C=e.set[h],w=null,v=null;if(C.forEach(b=>{b.semver===G9e&&(b=new Rz(">=0.0.0")),w=w||b,v=v||b,a(b.semver,w.semver,o)?w=b:u(b.semver,v.semver,o)&&(v=b)}),w.operator===A||w.operator===p||(!v.operator||v.operator===A)&&n(t,v.semver))return!1;if(v.operator===p&&u(t,v.semver))return!1}return!0};Tz.exports=V9e});var Lz=U((_Qt,Nz)=>{var z9e=oS(),X9e=(t,e,r)=>z9e(t,e,">",r);Nz.exports=X9e});var Mz=U((HQt,Oz)=>{var Z9e=oS(),$9e=(t,e,r)=>Z9e(t,e,"<",r);Oz.exports=$9e});var Hz=U((qQt,_z)=>{var Uz=Ul(),e5e=(t,e,r)=>(t=new Uz(t,r),e=new Uz(e,r),t.intersects(e));_z.exports=e5e});var jz=U((jQt,qz)=>{var t5e=lw(),r5e=Ml();qz.exports=(t,e,r)=>{let o=[],a=null,n=null,u=t.sort((C,w)=>r5e(C,w,r));for(let C of u)t5e(C,e,r)?(n=C,a||(a=C)):(n&&o.push([a,n]),n=null,a=null);a&&o.push([a,null]);let A=[];for(let[C,w]of o)C===w?A.push(C):!w&&C===u[0]?A.push("*"):w?C===u[0]?A.push(`<=${w}`):A.push(`${C} - ${w}`):A.push(`>=${C}`);let p=A.join(" || "),h=typeof e.raw=="string"?e.raw:String(e);return p.length<h.length?p:e}});var Jz=U((GQt,Kz)=>{var Gz=Ul(),aS=ow(),{ANY:tN}=aS,cw=lw(),rN=Ml(),n5e=(t,e,r={})=>{if(t===e)return!0;t=new Gz(t,r),e=new Gz(e,r);let o=!1;e:for(let a of t.set){for(let n of e.set){let u=i5e(a,n,r);if(o=o||u!==null,u)continue e}if(o)return!1}return!0},i5e=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===tN){if(e.length===1&&e[0].semver===tN)return!0;r.includePrerelease?t=[new aS(">=0.0.0-0")]:t=[new aS(">=0.0.0")]}if(e.length===1&&e[0].semver===tN){if(r.includePrerelease)return!0;e=[new aS(">=0.0.0")]}let o=new Set,a,n;for(let b of t)b.operator===">"||b.operator===">="?a=Wz(a,b,r):b.operator==="<"||b.operator==="<="?n=Yz(n,b,r):o.add(b.semver);if(o.size>1)return null;let u;if(a&&n){if(u=rN(a.semver,n.semver,r),u>0)return null;if(u===0&&(a.operator!==">="||n.operator!=="<="))return null}for(let b of o){if(a&&!cw(b,String(a),r)||n&&!cw(b,String(n),r))return null;for(let E of e)if(!cw(b,String(E),r))return!1;return!0}let A,p,h,C,w=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1,v=a&&!r.includePrerelease&&a.semver.prerelease.length?a.semver:!1;w&&w.prerelease.length===1&&n.operator==="<"&&w.prerelease[0]===0&&(w=!1);for(let b of e){if(C=C||b.operator===">"||b.operator===">=",h=h||b.operator==="<"||b.operator==="<=",a){if(v&&b.semver.prerelease&&b.semver.prerelease.length&&b.semver.major===v.major&&b.semver.minor===v.minor&&b.semver.patch===v.patch&&(v=!1),b.operator===">"||b.operator===">="){if(A=Wz(a,b,r),A===b&&A!==a)return!1}else if(a.operator===">="&&!cw(a.semver,String(b),r))return!1}if(n){if(w&&b.semver.prerelease&&b.semver.prerelease.length&&b.semver.major===w.major&&b.semver.minor===w.minor&&b.semver.patch===w.patch&&(w=!1),b.operator==="<"||b.operator==="<="){if(p=Yz(n,b,r),p===b&&p!==n)return!1}else if(n.operator==="<="&&!cw(n.semver,String(b),r))return!1}if(!b.operator&&(n||a)&&u!==0)return!1}return!(a&&h&&!n&&u!==0||n&&C&&!a&&u!==0||v||w)},Wz=(t,e,r)=>{if(!t)return e;let o=rN(t.semver,e.semver,r);return o>0?t:o<0||e.operator===">"&&t.operator===">="?e:t},Yz=(t,e,r)=>{if(!t)return e;let o=rN(t.semver,e.semver,r);return o<0?t:o>0||e.operator==="<"&&t.operator==="<="?e:t};Kz.exports=n5e});var ii=U((WQt,Vz)=>{var nN=ed();Vz.exports={re:nN.re,src:nN.src,tokens:nN.t,SEMVER_SPEC_VERSION:ew().SEMVER_SPEC_VERSION,SemVer:Do(),compareIdentifiers:JD().compareIdentifiers,rcompareIdentifiers:JD().rcompareIdentifiers,parse:td(),valid:yV(),clean:CV(),inc:BV(),diff:bV(),major:kV(),minor:RV(),patch:NV(),prerelease:OV(),compare:Ml(),rcompare:UV(),compareLoose:HV(),compareBuild:ZD(),sort:WV(),rsort:KV(),gt:nw(),lt:$D(),eq:XD(),neq:WT(),gte:eS(),lte:tS(),cmp:YT(),coerce:tz(),Comparator:ow(),Range:Ul(),satisfies:lw(),toComparators:Iz(),maxSatisfying:Bz(),minSatisfying:Dz(),minVersion:xz(),validRange:Qz(),outside:oS(),gtr:Lz(),ltr:Mz(),intersects:Hz(),simplifyRange:jz(),subset:Jz()}});var Xz=U((YQt,zz)=>{"use strict";function s5e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function od(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,od)}s5e(od,Error);od.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var C="",w;for(w=0;w<h.parts.length;w++)C+=h.parts[w]instanceof Array?n(h.parts[w][0])+"-"+n(h.parts[w][1]):n(h.parts[w]);return"["+(h.inverted?"^":"")+C+"]"},any:function(h){return"any character"},end:function(h){return"end of input"},other:function(h){return h.description}};function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(C){return"\\x0"+o(C)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(C){return"\\x"+o(C)})}function n(h){return h.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(C){return"\\x0"+o(C)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(C){return"\\x"+o(C)})}function u(h){return r[h.type](h)}function A(h){var C=new Array(h.length),w,v;for(w=0;w<h.length;w++)C[w]=u(h[w]);if(C.sort(),C.length>0){for(w=1,v=1;w<C.length;w++)C[w-1]!==C[w]&&(C[v]=C[w],v++);C.length=v}switch(C.length){case 1:return C[0];case 2:return C[0]+" or "+C[1];default:return C.slice(0,-1).join(", ")+", or "+C[C.length-1]}}function p(h){return h?'"'+a(h)+'"':"end of input"}return"Expected "+A(t)+" but "+p(e)+" found."};function o5e(t,e){e=e!==void 0?e:{};var r={},o={Expression:y},a=y,n="|",u=Me("|",!1),A="&",p=Me("&",!1),h="^",C=Me("^",!1),w=function($,ie){return!!ie.reduce((ke,Ne)=>{switch(Ne[1]){case"|":return ke|Ne[3];case"&":return ke&Ne[3];case"^":return ke^Ne[3]}},$)},v="!",b=Me("!",!1),E=function($){return!$},R="(",L=Me("(",!1),_=")",J=Me(")",!1),re=function($){return $},oe=/^[^ \t\n\r()!|&\^]/,pe=Te([" "," ",` | 126 | `)}};nw.paths=[["-v"],["--version"]]});var WT={};Yt(WT,{DefinitionsCommand:()=>tw,HelpCommand:()=>rw,VersionCommand:()=>nw});var KV=dt(()=>{GV();WV();YV()});function VV(t,e,r){let[o,a]=Ku(e,r??{}),{arity:n=1}=a,u=t.split(","),A=new Set(u);return Wo({definition(p){p.addOption({names:u,arity:n,hidden:a==null?void 0:a.hidden,description:a==null?void 0:a.description,required:a.required})},transformer(p,h,C){let w=typeof o<"u"?[...o]:void 0;for(let{name:v,value:b}of C.options)!A.has(v)||(w=w??[],w.push(b));return w}})}var JV=dt(()=>{If()});function zV(t,e,r){let[o,a]=Ku(e,r??{}),n=t.split(","),u=new Set(n);return Wo({definition(A){A.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(A,p,h){let C=o;for(let{name:w,value:v}of h.options)!u.has(w)||(C=v);return C}})}var XV=dt(()=>{If()});function ZV(t,e,r){let[o,a]=Ku(e,r??{}),n=t.split(","),u=new Set(n);return Wo({definition(A){A.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(A,p,h){let C=o;for(let{name:w,value:v}of h.options)!u.has(w)||(C??(C=0),v?C+=1:C=0);return C}})}var $V=dt(()=>{If()});function eJ(t={}){return Wo({definition(e,r){var o;e.addProxy({name:(o=t.name)!==null&&o!==void 0?o:r,required:t.required})},transformer(e,r,o){return o.positionals.map(({value:a})=>a)}})}var tJ=dt(()=>{If()});function rJ(t={}){return Wo({definition(e,r){var o;e.addRest({name:(o=t.name)!==null&&o!==void 0?o:r,required:t.required})},transformer(e,r,o){let a=u=>{let A=o.positionals[u];return A.extra===nl||A.extra===!1&&u<e.arity.leading.length},n=0;for(;n<o.positionals.length&&a(n);)n+=1;return o.positionals.splice(0,n).map(({value:u})=>u)}})}var nJ=dt(()=>{$D();If()});function Aje(t,e,r){let[o,a]=Ku(e,r??{}),{arity:n=1}=a,u=t.split(","),A=new Set(u);return Wo({definition(p){p.addOption({names:u,arity:a.tolerateBoolean?0:n,hidden:a.hidden,description:a.description,required:a.required})},transformer(p,h,C,w){let v,b=o;typeof a.env<"u"&&w.env[a.env]&&(v=a.env,b=w.env[a.env]);for(let{name:E,value:R}of C.options)!A.has(E)||(v=E,b=R);return typeof b=="string"?ZI(v??h,b,a.validator):b}})}function fje(t={}){let{required:e=!0}=t;return Wo({definition(r,o){var a;r.addPositional({name:(a=t.name)!==null&&a!==void 0?a:o,required:t.required})},transformer(r,o,a){var n;for(let u=0;u<a.positionals.length;++u){if(a.positionals[u].extra===nl||e&&a.positionals[u].extra===!0||!e&&a.positionals[u].extra===!1)continue;let[A]=a.positionals.splice(u,1);return ZI((n=t.name)!==null&&n!==void 0?n:o,A.value,t.validator)}}})}function iJ(t,...e){return typeof t=="string"?Aje(t,...e):fje(t)}var sJ=dt(()=>{$D();If()});var fe={};Yt(fe,{Array:()=>VV,Boolean:()=>zV,Counter:()=>ZV,Proxy:()=>eJ,Rest:()=>rJ,String:()=>iJ,applyValidator:()=>ZI,cleanValidationError:()=>KD,formatError:()=>XI,isOptionSymbol:()=>zI,makeCommandOption:()=>Wo,rerouteArguments:()=>Ku});var oJ=dt(()=>{If();JV();XV();$V();tJ();nJ();sJ()});var iw={};Yt(iw,{Builtins:()=>WT,Cli:()=>vo,Command:()=>it,Option:()=>fe,UsageError:()=>ot,formatMarkdownish:()=>Bo,run:()=>HV,runExit:()=>_V});var _t=dt(()=>{YD();NT();rd();jV();KV();oJ()});var lJ=U((dQt,aJ)=>{"use strict";aJ.exports=(t,...e)=>new Promise(r=>{r(t(...e))})});var nd=U((mQt,YT)=>{"use strict";var pje=lJ(),cJ=t=>{if(t<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],r=0,o=()=>{r--,e.length>0&&e.shift()()},a=(A,p,...h)=>{r++;let C=pje(A,...h);p(C),C.then(o,o)},n=(A,p,...h)=>{r<t?a(A,p,...h):e.push(a.bind(null,A,p,...h))},u=(A,...p)=>new Promise(h=>n(A,h,...p));return Object.defineProperties(u,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length}}),u};YT.exports=cJ;YT.exports.default=cJ});function Vu(t){return`YN${t.toString(10).padStart(4,"0")}`}function tS(t){let e=Number(t.slice(2));if(typeof dr[e]>"u")throw new Error(`Unknown message name: "${t}"`);return e}var dr,rS=dt(()=>{dr=(Ue=>(Ue[Ue.UNNAMED=0]="UNNAMED",Ue[Ue.EXCEPTION=1]="EXCEPTION",Ue[Ue.MISSING_PEER_DEPENDENCY=2]="MISSING_PEER_DEPENDENCY",Ue[Ue.CYCLIC_DEPENDENCIES=3]="CYCLIC_DEPENDENCIES",Ue[Ue.DISABLED_BUILD_SCRIPTS=4]="DISABLED_BUILD_SCRIPTS",Ue[Ue.BUILD_DISABLED=5]="BUILD_DISABLED",Ue[Ue.SOFT_LINK_BUILD=6]="SOFT_LINK_BUILD",Ue[Ue.MUST_BUILD=7]="MUST_BUILD",Ue[Ue.MUST_REBUILD=8]="MUST_REBUILD",Ue[Ue.BUILD_FAILED=9]="BUILD_FAILED",Ue[Ue.RESOLVER_NOT_FOUND=10]="RESOLVER_NOT_FOUND",Ue[Ue.FETCHER_NOT_FOUND=11]="FETCHER_NOT_FOUND",Ue[Ue.LINKER_NOT_FOUND=12]="LINKER_NOT_FOUND",Ue[Ue.FETCH_NOT_CACHED=13]="FETCH_NOT_CACHED",Ue[Ue.YARN_IMPORT_FAILED=14]="YARN_IMPORT_FAILED",Ue[Ue.REMOTE_INVALID=15]="REMOTE_INVALID",Ue[Ue.REMOTE_NOT_FOUND=16]="REMOTE_NOT_FOUND",Ue[Ue.RESOLUTION_PACK=17]="RESOLUTION_PACK",Ue[Ue.CACHE_CHECKSUM_MISMATCH=18]="CACHE_CHECKSUM_MISMATCH",Ue[Ue.UNUSED_CACHE_ENTRY=19]="UNUSED_CACHE_ENTRY",Ue[Ue.MISSING_LOCKFILE_ENTRY=20]="MISSING_LOCKFILE_ENTRY",Ue[Ue.WORKSPACE_NOT_FOUND=21]="WORKSPACE_NOT_FOUND",Ue[Ue.TOO_MANY_MATCHING_WORKSPACES=22]="TOO_MANY_MATCHING_WORKSPACES",Ue[Ue.CONSTRAINTS_MISSING_DEPENDENCY=23]="CONSTRAINTS_MISSING_DEPENDENCY",Ue[Ue.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]="CONSTRAINTS_INCOMPATIBLE_DEPENDENCY",Ue[Ue.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]="CONSTRAINTS_EXTRANEOUS_DEPENDENCY",Ue[Ue.CONSTRAINTS_INVALID_DEPENDENCY=26]="CONSTRAINTS_INVALID_DEPENDENCY",Ue[Ue.CANT_SUGGEST_RESOLUTIONS=27]="CANT_SUGGEST_RESOLUTIONS",Ue[Ue.FROZEN_LOCKFILE_EXCEPTION=28]="FROZEN_LOCKFILE_EXCEPTION",Ue[Ue.CROSS_DRIVE_VIRTUAL_LOCAL=29]="CROSS_DRIVE_VIRTUAL_LOCAL",Ue[Ue.FETCH_FAILED=30]="FETCH_FAILED",Ue[Ue.DANGEROUS_NODE_MODULES=31]="DANGEROUS_NODE_MODULES",Ue[Ue.NODE_GYP_INJECTED=32]="NODE_GYP_INJECTED",Ue[Ue.AUTHENTICATION_NOT_FOUND=33]="AUTHENTICATION_NOT_FOUND",Ue[Ue.INVALID_CONFIGURATION_KEY=34]="INVALID_CONFIGURATION_KEY",Ue[Ue.NETWORK_ERROR=35]="NETWORK_ERROR",Ue[Ue.LIFECYCLE_SCRIPT=36]="LIFECYCLE_SCRIPT",Ue[Ue.CONSTRAINTS_MISSING_FIELD=37]="CONSTRAINTS_MISSING_FIELD",Ue[Ue.CONSTRAINTS_INCOMPATIBLE_FIELD=38]="CONSTRAINTS_INCOMPATIBLE_FIELD",Ue[Ue.CONSTRAINTS_EXTRANEOUS_FIELD=39]="CONSTRAINTS_EXTRANEOUS_FIELD",Ue[Ue.CONSTRAINTS_INVALID_FIELD=40]="CONSTRAINTS_INVALID_FIELD",Ue[Ue.AUTHENTICATION_INVALID=41]="AUTHENTICATION_INVALID",Ue[Ue.PROLOG_UNKNOWN_ERROR=42]="PROLOG_UNKNOWN_ERROR",Ue[Ue.PROLOG_SYNTAX_ERROR=43]="PROLOG_SYNTAX_ERROR",Ue[Ue.PROLOG_EXISTENCE_ERROR=44]="PROLOG_EXISTENCE_ERROR",Ue[Ue.STACK_OVERFLOW_RESOLUTION=45]="STACK_OVERFLOW_RESOLUTION",Ue[Ue.AUTOMERGE_FAILED_TO_PARSE=46]="AUTOMERGE_FAILED_TO_PARSE",Ue[Ue.AUTOMERGE_IMMUTABLE=47]="AUTOMERGE_IMMUTABLE",Ue[Ue.AUTOMERGE_SUCCESS=48]="AUTOMERGE_SUCCESS",Ue[Ue.AUTOMERGE_REQUIRED=49]="AUTOMERGE_REQUIRED",Ue[Ue.DEPRECATED_CLI_SETTINGS=50]="DEPRECATED_CLI_SETTINGS",Ue[Ue.PLUGIN_NAME_NOT_FOUND=51]="PLUGIN_NAME_NOT_FOUND",Ue[Ue.INVALID_PLUGIN_REFERENCE=52]="INVALID_PLUGIN_REFERENCE",Ue[Ue.CONSTRAINTS_AMBIGUITY=53]="CONSTRAINTS_AMBIGUITY",Ue[Ue.CACHE_OUTSIDE_PROJECT=54]="CACHE_OUTSIDE_PROJECT",Ue[Ue.IMMUTABLE_INSTALL=55]="IMMUTABLE_INSTALL",Ue[Ue.IMMUTABLE_CACHE=56]="IMMUTABLE_CACHE",Ue[Ue.INVALID_MANIFEST=57]="INVALID_MANIFEST",Ue[Ue.PACKAGE_PREPARATION_FAILED=58]="PACKAGE_PREPARATION_FAILED",Ue[Ue.INVALID_RANGE_PEER_DEPENDENCY=59]="INVALID_RANGE_PEER_DEPENDENCY",Ue[Ue.INCOMPATIBLE_PEER_DEPENDENCY=60]="INCOMPATIBLE_PEER_DEPENDENCY",Ue[Ue.DEPRECATED_PACKAGE=61]="DEPRECATED_PACKAGE",Ue[Ue.INCOMPATIBLE_OS=62]="INCOMPATIBLE_OS",Ue[Ue.INCOMPATIBLE_CPU=63]="INCOMPATIBLE_CPU",Ue[Ue.FROZEN_ARTIFACT_EXCEPTION=64]="FROZEN_ARTIFACT_EXCEPTION",Ue[Ue.TELEMETRY_NOTICE=65]="TELEMETRY_NOTICE",Ue[Ue.PATCH_HUNK_FAILED=66]="PATCH_HUNK_FAILED",Ue[Ue.INVALID_CONFIGURATION_VALUE=67]="INVALID_CONFIGURATION_VALUE",Ue[Ue.UNUSED_PACKAGE_EXTENSION=68]="UNUSED_PACKAGE_EXTENSION",Ue[Ue.REDUNDANT_PACKAGE_EXTENSION=69]="REDUNDANT_PACKAGE_EXTENSION",Ue[Ue.AUTO_NM_SUCCESS=70]="AUTO_NM_SUCCESS",Ue[Ue.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]="NM_CANT_INSTALL_EXTERNAL_SOFT_LINK",Ue[Ue.NM_PRESERVE_SYMLINKS_REQUIRED=72]="NM_PRESERVE_SYMLINKS_REQUIRED",Ue[Ue.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]="UPDATE_LOCKFILE_ONLY_SKIP_LINK",Ue[Ue.NM_HARDLINKS_MODE_DOWNGRADED=74]="NM_HARDLINKS_MODE_DOWNGRADED",Ue[Ue.PROLOG_INSTANTIATION_ERROR=75]="PROLOG_INSTANTIATION_ERROR",Ue[Ue.INCOMPATIBLE_ARCHITECTURE=76]="INCOMPATIBLE_ARCHITECTURE",Ue[Ue.GHOST_ARCHITECTURE=77]="GHOST_ARCHITECTURE",Ue[Ue.RESOLUTION_MISMATCH=78]="RESOLUTION_MISMATCH",Ue[Ue.PROLOG_LIMIT_EXCEEDED=79]="PROLOG_LIMIT_EXCEEDED",Ue[Ue.NETWORK_DISABLED=80]="NETWORK_DISABLED",Ue[Ue.NETWORK_UNSAFE_HTTP=81]="NETWORK_UNSAFE_HTTP",Ue[Ue.RESOLUTION_FAILED=82]="RESOLUTION_FAILED",Ue[Ue.AUTOMERGE_GIT_ERROR=83]="AUTOMERGE_GIT_ERROR",Ue[Ue.CONSTRAINTS_CHECK_FAILED=84]="CONSTRAINTS_CHECK_FAILED",Ue))(dr||{})});var sw=U((EQt,uJ)=>{var hje="2.0.0",gje=Number.MAX_SAFE_INTEGER||9007199254740991,dje=16;uJ.exports={SEMVER_SPEC_VERSION:hje,MAX_LENGTH:256,MAX_SAFE_INTEGER:gje,MAX_SAFE_COMPONENT_LENGTH:dje}});var ow=U((CQt,AJ)=>{var mje=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};AJ.exports=mje});var id=U((Kp,fJ)=>{var{MAX_SAFE_COMPONENT_LENGTH:KT}=sw(),yje=ow();Kp=fJ.exports={};var Eje=Kp.re=[],or=Kp.src=[],ar=Kp.t={},Cje=0,Kr=(t,e,r)=>{let o=Cje++;yje(t,o,e),ar[t]=o,or[o]=e,Eje[o]=new RegExp(e,r?"g":void 0)};Kr("NUMERICIDENTIFIER","0|[1-9]\\d*");Kr("NUMERICIDENTIFIERLOOSE","[0-9]+");Kr("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");Kr("MAINVERSION",`(${or[ar.NUMERICIDENTIFIER]})\\.(${or[ar.NUMERICIDENTIFIER]})\\.(${or[ar.NUMERICIDENTIFIER]})`);Kr("MAINVERSIONLOOSE",`(${or[ar.NUMERICIDENTIFIERLOOSE]})\\.(${or[ar.NUMERICIDENTIFIERLOOSE]})\\.(${or[ar.NUMERICIDENTIFIERLOOSE]})`);Kr("PRERELEASEIDENTIFIER",`(?:${or[ar.NUMERICIDENTIFIER]}|${or[ar.NONNUMERICIDENTIFIER]})`);Kr("PRERELEASEIDENTIFIERLOOSE",`(?:${or[ar.NUMERICIDENTIFIERLOOSE]}|${or[ar.NONNUMERICIDENTIFIER]})`);Kr("PRERELEASE",`(?:-(${or[ar.PRERELEASEIDENTIFIER]}(?:\\.${or[ar.PRERELEASEIDENTIFIER]})*))`);Kr("PRERELEASELOOSE",`(?:-?(${or[ar.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${or[ar.PRERELEASEIDENTIFIERLOOSE]})*))`);Kr("BUILDIDENTIFIER","[0-9A-Za-z-]+");Kr("BUILD",`(?:\\+(${or[ar.BUILDIDENTIFIER]}(?:\\.${or[ar.BUILDIDENTIFIER]})*))`);Kr("FULLPLAIN",`v?${or[ar.MAINVERSION]}${or[ar.PRERELEASE]}?${or[ar.BUILD]}?`);Kr("FULL",`^${or[ar.FULLPLAIN]}$`);Kr("LOOSEPLAIN",`[v=\\s]*${or[ar.MAINVERSIONLOOSE]}${or[ar.PRERELEASELOOSE]}?${or[ar.BUILD]}?`);Kr("LOOSE",`^${or[ar.LOOSEPLAIN]}$`);Kr("GTLT","((?:<|>)?=?)");Kr("XRANGEIDENTIFIERLOOSE",`${or[ar.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);Kr("XRANGEIDENTIFIER",`${or[ar.NUMERICIDENTIFIER]}|x|X|\\*`);Kr("XRANGEPLAIN",`[v=\\s]*(${or[ar.XRANGEIDENTIFIER]})(?:\\.(${or[ar.XRANGEIDENTIFIER]})(?:\\.(${or[ar.XRANGEIDENTIFIER]})(?:${or[ar.PRERELEASE]})?${or[ar.BUILD]}?)?)?`);Kr("XRANGEPLAINLOOSE",`[v=\\s]*(${or[ar.XRANGEIDENTIFIERLOOSE]})(?:\\.(${or[ar.XRANGEIDENTIFIERLOOSE]})(?:\\.(${or[ar.XRANGEIDENTIFIERLOOSE]})(?:${or[ar.PRERELEASELOOSE]})?${or[ar.BUILD]}?)?)?`);Kr("XRANGE",`^${or[ar.GTLT]}\\s*${or[ar.XRANGEPLAIN]}$`);Kr("XRANGELOOSE",`^${or[ar.GTLT]}\\s*${or[ar.XRANGEPLAINLOOSE]}$`);Kr("COERCE",`(^|[^\\d])(\\d{1,${KT}})(?:\\.(\\d{1,${KT}}))?(?:\\.(\\d{1,${KT}}))?(?:$|[^\\d])`);Kr("COERCERTL",or[ar.COERCE],!0);Kr("LONETILDE","(?:~>?)");Kr("TILDETRIM",`(\\s*)${or[ar.LONETILDE]}\\s+`,!0);Kp.tildeTrimReplace="$1~";Kr("TILDE",`^${or[ar.LONETILDE]}${or[ar.XRANGEPLAIN]}$`);Kr("TILDELOOSE",`^${or[ar.LONETILDE]}${or[ar.XRANGEPLAINLOOSE]}$`);Kr("LONECARET","(?:\\^)");Kr("CARETTRIM",`(\\s*)${or[ar.LONECARET]}\\s+`,!0);Kp.caretTrimReplace="$1^";Kr("CARET",`^${or[ar.LONECARET]}${or[ar.XRANGEPLAIN]}$`);Kr("CARETLOOSE",`^${or[ar.LONECARET]}${or[ar.XRANGEPLAINLOOSE]}$`);Kr("COMPARATORLOOSE",`^${or[ar.GTLT]}\\s*(${or[ar.LOOSEPLAIN]})$|^$`);Kr("COMPARATOR",`^${or[ar.GTLT]}\\s*(${or[ar.FULLPLAIN]})$|^$`);Kr("COMPARATORTRIM",`(\\s*)${or[ar.GTLT]}\\s*(${or[ar.LOOSEPLAIN]}|${or[ar.XRANGEPLAIN]})`,!0);Kp.comparatorTrimReplace="$1$2$3";Kr("HYPHENRANGE",`^\\s*(${or[ar.XRANGEPLAIN]})\\s+-\\s+(${or[ar.XRANGEPLAIN]})\\s*$`);Kr("HYPHENRANGELOOSE",`^\\s*(${or[ar.XRANGEPLAINLOOSE]})\\s+-\\s+(${or[ar.XRANGEPLAINLOOSE]})\\s*$`);Kr("STAR","(<|>)?=?\\s*\\*");Kr("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");Kr("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var aw=U((IQt,pJ)=>{var Ije=["includePrerelease","loose","rtl"],wje=t=>t?typeof t!="object"?{loose:!0}:Ije.filter(e=>t[e]).reduce((e,r)=>(e[r]=!0,e),{}):{};pJ.exports=wje});var nS=U((wQt,dJ)=>{var hJ=/^[0-9]+$/,gJ=(t,e)=>{let r=hJ.test(t),o=hJ.test(e);return r&&o&&(t=+t,e=+e),t===e?0:r&&!o?-1:o&&!r?1:t<e?-1:1},Bje=(t,e)=>gJ(e,t);dJ.exports={compareIdentifiers:gJ,rcompareIdentifiers:Bje}});var Do=U((BQt,CJ)=>{var iS=ow(),{MAX_LENGTH:mJ,MAX_SAFE_INTEGER:sS}=sw(),{re:yJ,t:EJ}=id(),vje=aw(),{compareIdentifiers:Sy}=nS(),il=class{constructor(e,r){if(r=vje(r),e instanceof il){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>mJ)throw new TypeError(`version is longer than ${mJ} characters`);iS("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let o=e.trim().match(r.loose?yJ[EJ.LOOSE]:yJ[EJ.FULL]);if(!o)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+o[1],this.minor=+o[2],this.patch=+o[3],this.major>sS||this.major<0)throw new TypeError("Invalid major version");if(this.minor>sS||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>sS||this.patch<0)throw new TypeError("Invalid patch version");o[4]?this.prerelease=o[4].split(".").map(a=>{if(/^[0-9]+$/.test(a)){let n=+a;if(n>=0&&n<sS)return n}return a}):this.prerelease=[],this.build=o[5]?o[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(iS("SemVer.compare",this.version,this.options,e),!(e instanceof il)){if(typeof e=="string"&&e===this.version)return 0;e=new il(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof il||(e=new il(e,this.options)),Sy(this.major,e.major)||Sy(this.minor,e.minor)||Sy(this.patch,e.patch)}comparePre(e){if(e instanceof il||(e=new il(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let r=0;do{let o=this.prerelease[r],a=e.prerelease[r];if(iS("prerelease compare",r,o,a),o===void 0&&a===void 0)return 0;if(a===void 0)return 1;if(o===void 0)return-1;if(o===a)continue;return Sy(o,a)}while(++r)}compareBuild(e){e instanceof il||(e=new il(e,this.options));let r=0;do{let o=this.build[r],a=e.build[r];if(iS("prerelease compare",r,o,a),o===void 0&&a===void 0)return 0;if(a===void 0)return 1;if(o===void 0)return-1;if(o===a)continue;return Sy(o,a)}while(++r)}inc(e,r){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r),this.inc("pre",r);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",r),this.inc("pre",r);break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":if(this.prerelease.length===0)this.prerelease=[0];else{let o=this.prerelease.length;for(;--o>=0;)typeof this.prerelease[o]=="number"&&(this.prerelease[o]++,o=-2);o===-1&&this.prerelease.push(0)}r&&(Sy(this.prerelease[0],r)===0?isNaN(this.prerelease[1])&&(this.prerelease=[r,0]):this.prerelease=[r,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};CJ.exports=il});var sd=U((vQt,vJ)=>{var{MAX_LENGTH:Dje}=sw(),{re:IJ,t:wJ}=id(),BJ=Do(),Sje=aw(),Pje=(t,e)=>{if(e=Sje(e),t instanceof BJ)return t;if(typeof t!="string"||t.length>Dje||!(e.loose?IJ[wJ.LOOSE]:IJ[wJ.FULL]).test(t))return null;try{return new BJ(t,e)}catch{return null}};vJ.exports=Pje});var SJ=U((DQt,DJ)=>{var xje=sd(),bje=(t,e)=>{let r=xje(t,e);return r?r.version:null};DJ.exports=bje});var xJ=U((SQt,PJ)=>{var Qje=sd(),kje=(t,e)=>{let r=Qje(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};PJ.exports=kje});var kJ=U((PQt,QJ)=>{var bJ=Do(),Fje=(t,e,r,o)=>{typeof r=="string"&&(o=r,r=void 0);try{return new bJ(t instanceof bJ?t.version:t,r).inc(e,o).version}catch{return null}};QJ.exports=Fje});var ql=U((xQt,RJ)=>{var FJ=Do(),Rje=(t,e,r)=>new FJ(t,r).compare(new FJ(e,r));RJ.exports=Rje});var oS=U((bQt,TJ)=>{var Tje=ql(),Nje=(t,e,r)=>Tje(t,e,r)===0;TJ.exports=Nje});var OJ=U((QQt,LJ)=>{var NJ=sd(),Lje=oS(),Oje=(t,e)=>{if(Lje(t,e))return null;{let r=NJ(t),o=NJ(e),a=r.prerelease.length||o.prerelease.length,n=a?"pre":"",u=a?"prerelease":"";for(let A in r)if((A==="major"||A==="minor"||A==="patch")&&r[A]!==o[A])return n+A;return u}};LJ.exports=Oje});var UJ=U((kQt,MJ)=>{var Mje=Do(),Uje=(t,e)=>new Mje(t,e).major;MJ.exports=Uje});var HJ=U((FQt,_J)=>{var _je=Do(),Hje=(t,e)=>new _je(t,e).minor;_J.exports=Hje});var jJ=U((RQt,qJ)=>{var qje=Do(),jje=(t,e)=>new qje(t,e).patch;qJ.exports=jje});var WJ=U((TQt,GJ)=>{var Gje=sd(),Wje=(t,e)=>{let r=Gje(t,e);return r&&r.prerelease.length?r.prerelease:null};GJ.exports=Wje});var KJ=U((NQt,YJ)=>{var Yje=ql(),Kje=(t,e,r)=>Yje(e,t,r);YJ.exports=Kje});var JJ=U((LQt,VJ)=>{var Vje=ql(),Jje=(t,e)=>Vje(t,e,!0);VJ.exports=Jje});var aS=U((OQt,XJ)=>{var zJ=Do(),zje=(t,e,r)=>{let o=new zJ(t,r),a=new zJ(e,r);return o.compare(a)||o.compareBuild(a)};XJ.exports=zje});var $J=U((MQt,ZJ)=>{var Xje=aS(),Zje=(t,e)=>t.sort((r,o)=>Xje(r,o,e));ZJ.exports=Zje});var tz=U((UQt,ez)=>{var $je=aS(),eGe=(t,e)=>t.sort((r,o)=>$je(o,r,e));ez.exports=eGe});var lw=U((_Qt,rz)=>{var tGe=ql(),rGe=(t,e,r)=>tGe(t,e,r)>0;rz.exports=rGe});var lS=U((HQt,nz)=>{var nGe=ql(),iGe=(t,e,r)=>nGe(t,e,r)<0;nz.exports=iGe});var VT=U((qQt,iz)=>{var sGe=ql(),oGe=(t,e,r)=>sGe(t,e,r)!==0;iz.exports=oGe});var cS=U((jQt,sz)=>{var aGe=ql(),lGe=(t,e,r)=>aGe(t,e,r)>=0;sz.exports=lGe});var uS=U((GQt,oz)=>{var cGe=ql(),uGe=(t,e,r)=>cGe(t,e,r)<=0;oz.exports=uGe});var JT=U((WQt,az)=>{var AGe=oS(),fGe=VT(),pGe=lw(),hGe=cS(),gGe=lS(),dGe=uS(),mGe=(t,e,r,o)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return AGe(t,r,o);case"!=":return fGe(t,r,o);case">":return pGe(t,r,o);case">=":return hGe(t,r,o);case"<":return gGe(t,r,o);case"<=":return dGe(t,r,o);default:throw new TypeError(`Invalid operator: ${e}`)}};az.exports=mGe});var cz=U((YQt,lz)=>{var yGe=Do(),EGe=sd(),{re:AS,t:fS}=id(),CGe=(t,e)=>{if(t instanceof yGe)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(AS[fS.COERCE]);else{let o;for(;(o=AS[fS.COERCERTL].exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||o.index+o[0].length!==r.index+r[0].length)&&(r=o),AS[fS.COERCERTL].lastIndex=o.index+o[1].length+o[2].length;AS[fS.COERCERTL].lastIndex=-1}return r===null?null:EGe(`${r[2]}.${r[3]||"0"}.${r[4]||"0"}`,e)};lz.exports=CGe});var Az=U((KQt,uz)=>{"use strict";uz.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var pS=U((VQt,fz)=>{"use strict";fz.exports=dn;dn.Node=od;dn.create=dn;function dn(t){var e=this;if(e instanceof dn||(e=new dn),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach=="function")t.forEach(function(a){e.push(a)});else if(arguments.length>0)for(var r=0,o=arguments.length;r<o;r++)e.push(arguments[r]);return e}dn.prototype.removeNode=function(t){if(t.list!==this)throw new Error("removing node which does not belong to this list");var e=t.next,r=t.prev;return e&&(e.prev=r),r&&(r.next=e),t===this.head&&(this.head=e),t===this.tail&&(this.tail=r),t.list.length--,t.next=null,t.prev=null,t.list=null,e};dn.prototype.unshiftNode=function(t){if(t!==this.head){t.list&&t.list.removeNode(t);var e=this.head;t.list=this,t.next=e,e&&(e.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}};dn.prototype.pushNode=function(t){if(t!==this.tail){t.list&&t.list.removeNode(t);var e=this.tail;t.list=this,t.prev=e,e&&(e.next=t),this.tail=t,this.head||(this.head=t),this.length++}};dn.prototype.push=function(){for(var t=0,e=arguments.length;t<e;t++)wGe(this,arguments[t]);return this.length};dn.prototype.unshift=function(){for(var t=0,e=arguments.length;t<e;t++)BGe(this,arguments[t]);return this.length};dn.prototype.pop=function(){if(!!this.tail){var t=this.tail.value;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,t}};dn.prototype.shift=function(){if(!!this.head){var t=this.head.value;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,t}};dn.prototype.forEach=function(t,e){e=e||this;for(var r=this.head,o=0;r!==null;o++)t.call(e,r.value,o,this),r=r.next};dn.prototype.forEachReverse=function(t,e){e=e||this;for(var r=this.tail,o=this.length-1;r!==null;o--)t.call(e,r.value,o,this),r=r.prev};dn.prototype.get=function(t){for(var e=0,r=this.head;r!==null&&e<t;e++)r=r.next;if(e===t&&r!==null)return r.value};dn.prototype.getReverse=function(t){for(var e=0,r=this.tail;r!==null&&e<t;e++)r=r.prev;if(e===t&&r!==null)return r.value};dn.prototype.map=function(t,e){e=e||this;for(var r=new dn,o=this.head;o!==null;)r.push(t.call(e,o.value,this)),o=o.next;return r};dn.prototype.mapReverse=function(t,e){e=e||this;for(var r=new dn,o=this.tail;o!==null;)r.push(t.call(e,o.value,this)),o=o.prev;return r};dn.prototype.reduce=function(t,e){var r,o=this.head;if(arguments.length>1)r=e;else if(this.head)o=this.head.next,r=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var a=0;o!==null;a++)r=t(r,o.value,a),o=o.next;return r};dn.prototype.reduceReverse=function(t,e){var r,o=this.tail;if(arguments.length>1)r=e;else if(this.tail)o=this.tail.prev,r=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var a=this.length-1;o!==null;a--)r=t(r,o.value,a),o=o.prev;return r};dn.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};dn.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};dn.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new dn;if(e<t||e<0)return r;t<0&&(t=0),e>this.length&&(e=this.length);for(var o=0,a=this.head;a!==null&&o<t;o++)a=a.next;for(;a!==null&&o<e;o++,a=a.next)r.push(a.value);return r};dn.prototype.sliceReverse=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new dn;if(e<t||e<0)return r;t<0&&(t=0),e>this.length&&(e=this.length);for(var o=this.length,a=this.tail;a!==null&&o>e;o--)a=a.prev;for(;a!==null&&o>t;o--,a=a.prev)r.push(a.value);return r};dn.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var o=0,a=this.head;a!==null&&o<t;o++)a=a.next;for(var n=[],o=0;a&&o<e;o++)n.push(a.value),a=this.removeNode(a);a===null&&(a=this.tail),a!==this.head&&a!==this.tail&&(a=a.prev);for(var o=0;o<r.length;o++)a=IGe(this,a,r[o]);return n};dn.prototype.reverse=function(){for(var t=this.head,e=this.tail,r=t;r!==null;r=r.prev){var o=r.prev;r.prev=r.next,r.next=o}return this.head=e,this.tail=t,this};function IGe(t,e,r){var o=e===t.head?new od(r,null,e,t):new od(r,e,e.next,t);return o.next===null&&(t.tail=o),o.prev===null&&(t.head=o),t.length++,o}function wGe(t,e){t.tail=new od(e,t.tail,null,t),t.head||(t.head=t.tail),t.length++}function BGe(t,e){t.head=new od(e,null,t.head,t),t.tail||(t.tail=t.head),t.length++}function od(t,e,r,o){if(!(this instanceof od))return new od(t,e,r,o);this.list=o,this.value=t,e?(e.next=this,this.prev=e):this.prev=null,r?(r.prev=this,this.next=r):this.next=null}try{Az()(dn)}catch{}});var mz=U((JQt,dz)=>{"use strict";var vGe=pS(),ad=Symbol("max"),vf=Symbol("length"),Py=Symbol("lengthCalculator"),uw=Symbol("allowStale"),ld=Symbol("maxAge"),Bf=Symbol("dispose"),pz=Symbol("noDisposeOnSet"),Ds=Symbol("lruList"),jc=Symbol("cache"),gz=Symbol("updateAgeOnGet"),zT=()=>1,ZT=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let r=this[ad]=e.max||1/0,o=e.length||zT;if(this[Py]=typeof o!="function"?zT:o,this[uw]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[ld]=e.maxAge||0,this[Bf]=e.dispose,this[pz]=e.noDisposeOnSet||!1,this[gz]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[ad]=e||1/0,cw(this)}get max(){return this[ad]}set allowStale(e){this[uw]=!!e}get allowStale(){return this[uw]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[ld]=e,cw(this)}get maxAge(){return this[ld]}set lengthCalculator(e){typeof e!="function"&&(e=zT),e!==this[Py]&&(this[Py]=e,this[vf]=0,this[Ds].forEach(r=>{r.length=this[Py](r.value,r.key),this[vf]+=r.length})),cw(this)}get lengthCalculator(){return this[Py]}get length(){return this[vf]}get itemCount(){return this[Ds].length}rforEach(e,r){r=r||this;for(let o=this[Ds].tail;o!==null;){let a=o.prev;hz(this,e,o,r),o=a}}forEach(e,r){r=r||this;for(let o=this[Ds].head;o!==null;){let a=o.next;hz(this,e,o,r),o=a}}keys(){return this[Ds].toArray().map(e=>e.key)}values(){return this[Ds].toArray().map(e=>e.value)}reset(){this[Bf]&&this[Ds]&&this[Ds].length&&this[Ds].forEach(e=>this[Bf](e.key,e.value)),this[jc]=new Map,this[Ds]=new vGe,this[vf]=0}dump(){return this[Ds].map(e=>hS(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[Ds]}set(e,r,o){if(o=o||this[ld],o&&typeof o!="number")throw new TypeError("maxAge must be a number");let a=o?Date.now():0,n=this[Py](r,e);if(this[jc].has(e)){if(n>this[ad])return xy(this,this[jc].get(e)),!1;let p=this[jc].get(e).value;return this[Bf]&&(this[pz]||this[Bf](e,p.value)),p.now=a,p.maxAge=o,p.value=r,this[vf]+=n-p.length,p.length=n,this.get(e),cw(this),!0}let u=new $T(e,r,n,a,o);return u.length>this[ad]?(this[Bf]&&this[Bf](e,r),!1):(this[vf]+=u.length,this[Ds].unshift(u),this[jc].set(e,this[Ds].head),cw(this),!0)}has(e){if(!this[jc].has(e))return!1;let r=this[jc].get(e).value;return!hS(this,r)}get(e){return XT(this,e,!0)}peek(e){return XT(this,e,!1)}pop(){let e=this[Ds].tail;return e?(xy(this,e),e.value):null}del(e){xy(this,this[jc].get(e))}load(e){this.reset();let r=Date.now();for(let o=e.length-1;o>=0;o--){let a=e[o],n=a.e||0;if(n===0)this.set(a.k,a.v);else{let u=n-r;u>0&&this.set(a.k,a.v,u)}}}prune(){this[jc].forEach((e,r)=>XT(this,r,!1))}},XT=(t,e,r)=>{let o=t[jc].get(e);if(o){let a=o.value;if(hS(t,a)){if(xy(t,o),!t[uw])return}else r&&(t[gz]&&(o.value.now=Date.now()),t[Ds].unshiftNode(o));return a.value}},hS=(t,e)=>{if(!e||!e.maxAge&&!t[ld])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[ld]&&r>t[ld]},cw=t=>{if(t[vf]>t[ad])for(let e=t[Ds].tail;t[vf]>t[ad]&&e!==null;){let r=e.prev;xy(t,e),e=r}},xy=(t,e)=>{if(e){let r=e.value;t[Bf]&&t[Bf](r.key,r.value),t[vf]-=r.length,t[jc].delete(r.key),t[Ds].removeNode(e)}},$T=class{constructor(e,r,o,a,n){this.key=e,this.value=r,this.length=o,this.now=a,this.maxAge=n||0}},hz=(t,e,r,o)=>{let a=r.value;hS(t,a)&&(xy(t,r),t[uw]||(a=void 0)),a&&e.call(o,a.value,a.key,t)};dz.exports=ZT});var jl=U((zQt,Iz)=>{var cd=class{constructor(e,r){if(r=SGe(r),e instanceof cd)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new cd(e.raw,r);if(e instanceof eN)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e,this.set=e.split("||").map(o=>this.parseRange(o.trim())).filter(o=>o.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let o=this.set[0];if(this.set=this.set.filter(a=>!Ez(a[0])),this.set.length===0)this.set=[o];else if(this.set.length>1){for(let a of this.set)if(a.length===1&&kGe(a[0])){this.set=[a];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let o=`parseRange:${Object.keys(this.options).join(",")}:${e}`,a=yz.get(o);if(a)return a;let n=this.options.loose,u=n?Sa[Vo.HYPHENRANGELOOSE]:Sa[Vo.HYPHENRANGE];e=e.replace(u,HGe(this.options.includePrerelease)),wi("hyphen replace",e),e=e.replace(Sa[Vo.COMPARATORTRIM],xGe),wi("comparator trim",e),e=e.replace(Sa[Vo.TILDETRIM],bGe),e=e.replace(Sa[Vo.CARETTRIM],QGe),e=e.split(/\s+/).join(" ");let A=e.split(" ").map(w=>FGe(w,this.options)).join(" ").split(/\s+/).map(w=>_Ge(w,this.options));n&&(A=A.filter(w=>(wi("loose invalid filter",w,this.options),!!w.match(Sa[Vo.COMPARATORLOOSE])))),wi("range list",A);let p=new Map,h=A.map(w=>new eN(w,this.options));for(let w of h){if(Ez(w))return[w];p.set(w.value,w)}p.size>1&&p.has("")&&p.delete("");let C=[...p.values()];return yz.set(o,C),C}intersects(e,r){if(!(e instanceof cd))throw new TypeError("a Range is required");return this.set.some(o=>Cz(o,r)&&e.set.some(a=>Cz(a,r)&&o.every(n=>a.every(u=>n.intersects(u,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new PGe(e,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(qGe(this.set[r],e,this.options))return!0;return!1}};Iz.exports=cd;var DGe=mz(),yz=new DGe({max:1e3}),SGe=aw(),eN=Aw(),wi=ow(),PGe=Do(),{re:Sa,t:Vo,comparatorTrimReplace:xGe,tildeTrimReplace:bGe,caretTrimReplace:QGe}=id(),Ez=t=>t.value==="<0.0.0-0",kGe=t=>t.value==="",Cz=(t,e)=>{let r=!0,o=t.slice(),a=o.pop();for(;r&&o.length;)r=o.every(n=>a.intersects(n,e)),a=o.pop();return r},FGe=(t,e)=>(wi("comp",t,e),t=NGe(t,e),wi("caret",t),t=RGe(t,e),wi("tildes",t),t=OGe(t,e),wi("xrange",t),t=UGe(t,e),wi("stars",t),t),Jo=t=>!t||t.toLowerCase()==="x"||t==="*",RGe=(t,e)=>t.trim().split(/\s+/).map(r=>TGe(r,e)).join(" "),TGe=(t,e)=>{let r=e.loose?Sa[Vo.TILDELOOSE]:Sa[Vo.TILDE];return t.replace(r,(o,a,n,u,A)=>{wi("tilde",t,o,a,n,u,A);let p;return Jo(a)?p="":Jo(n)?p=`>=${a}.0.0 <${+a+1}.0.0-0`:Jo(u)?p=`>=${a}.${n}.0 <${a}.${+n+1}.0-0`:A?(wi("replaceTilde pr",A),p=`>=${a}.${n}.${u}-${A} <${a}.${+n+1}.0-0`):p=`>=${a}.${n}.${u} <${a}.${+n+1}.0-0`,wi("tilde return",p),p})},NGe=(t,e)=>t.trim().split(/\s+/).map(r=>LGe(r,e)).join(" "),LGe=(t,e)=>{wi("caret",t,e);let r=e.loose?Sa[Vo.CARETLOOSE]:Sa[Vo.CARET],o=e.includePrerelease?"-0":"";return t.replace(r,(a,n,u,A,p)=>{wi("caret",t,a,n,u,A,p);let h;return Jo(n)?h="":Jo(u)?h=`>=${n}.0.0${o} <${+n+1}.0.0-0`:Jo(A)?n==="0"?h=`>=${n}.${u}.0${o} <${n}.${+u+1}.0-0`:h=`>=${n}.${u}.0${o} <${+n+1}.0.0-0`:p?(wi("replaceCaret pr",p),n==="0"?u==="0"?h=`>=${n}.${u}.${A}-${p} <${n}.${u}.${+A+1}-0`:h=`>=${n}.${u}.${A}-${p} <${n}.${+u+1}.0-0`:h=`>=${n}.${u}.${A}-${p} <${+n+1}.0.0-0`):(wi("no pr"),n==="0"?u==="0"?h=`>=${n}.${u}.${A}${o} <${n}.${u}.${+A+1}-0`:h=`>=${n}.${u}.${A}${o} <${n}.${+u+1}.0-0`:h=`>=${n}.${u}.${A} <${+n+1}.0.0-0`),wi("caret return",h),h})},OGe=(t,e)=>(wi("replaceXRanges",t,e),t.split(/\s+/).map(r=>MGe(r,e)).join(" ")),MGe=(t,e)=>{t=t.trim();let r=e.loose?Sa[Vo.XRANGELOOSE]:Sa[Vo.XRANGE];return t.replace(r,(o,a,n,u,A,p)=>{wi("xRange",t,o,a,n,u,A,p);let h=Jo(n),C=h||Jo(u),w=C||Jo(A),v=w;return a==="="&&v&&(a=""),p=e.includePrerelease?"-0":"",h?a===">"||a==="<"?o="<0.0.0-0":o="*":a&&v?(C&&(u=0),A=0,a===">"?(a=">=",C?(n=+n+1,u=0,A=0):(u=+u+1,A=0)):a==="<="&&(a="<",C?n=+n+1:u=+u+1),a==="<"&&(p="-0"),o=`${a+n}.${u}.${A}${p}`):C?o=`>=${n}.0.0${p} <${+n+1}.0.0-0`:w&&(o=`>=${n}.${u}.0${p} <${n}.${+u+1}.0-0`),wi("xRange return",o),o})},UGe=(t,e)=>(wi("replaceStars",t,e),t.trim().replace(Sa[Vo.STAR],"")),_Ge=(t,e)=>(wi("replaceGTE0",t,e),t.trim().replace(Sa[e.includePrerelease?Vo.GTE0PRE:Vo.GTE0],"")),HGe=t=>(e,r,o,a,n,u,A,p,h,C,w,v,b)=>(Jo(o)?r="":Jo(a)?r=`>=${o}.0.0${t?"-0":""}`:Jo(n)?r=`>=${o}.${a}.0${t?"-0":""}`:u?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,Jo(h)?p="":Jo(C)?p=`<${+h+1}.0.0-0`:Jo(w)?p=`<${h}.${+C+1}.0-0`:v?p=`<=${h}.${C}.${w}-${v}`:t?p=`<${h}.${C}.${+w+1}-0`:p=`<=${p}`,`${r} ${p}`.trim()),qGe=(t,e,r)=>{for(let o=0;o<t.length;o++)if(!t[o].test(e))return!1;if(e.prerelease.length&&!r.includePrerelease){for(let o=0;o<t.length;o++)if(wi(t[o].semver),t[o].semver!==eN.ANY&&t[o].semver.prerelease.length>0){let a=t[o].semver;if(a.major===e.major&&a.minor===e.minor&&a.patch===e.patch)return!0}return!1}return!0}});var Aw=U((XQt,Sz)=>{var fw=Symbol("SemVer ANY"),by=class{static get ANY(){return fw}constructor(e,r){if(r=jGe(r),e instanceof by){if(e.loose===!!r.loose)return e;e=e.value}rN("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===fw?this.value="":this.value=this.operator+this.semver.version,rN("comp",this)}parse(e){let r=this.options.loose?wz[Bz.COMPARATORLOOSE]:wz[Bz.COMPARATOR],o=e.match(r);if(!o)throw new TypeError(`Invalid comparator: ${e}`);this.operator=o[1]!==void 0?o[1]:"",this.operator==="="&&(this.operator=""),o[2]?this.semver=new vz(o[2],this.options.loose):this.semver=fw}toString(){return this.value}test(e){if(rN("Comparator.test",e,this.options.loose),this.semver===fw||e===fw)return!0;if(typeof e=="string")try{e=new vz(e,this.options)}catch{return!1}return tN(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof by))throw new TypeError("a Comparator is required");if((!r||typeof r!="object")&&(r={loose:!!r,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new Dz(e.value,r).test(this.value);if(e.operator==="")return e.value===""?!0:new Dz(this.value,r).test(e.semver);let o=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),a=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),n=this.semver.version===e.semver.version,u=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),A=tN(this.semver,"<",e.semver,r)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),p=tN(this.semver,">",e.semver,r)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return o||a||n&&u||A||p}};Sz.exports=by;var jGe=aw(),{re:wz,t:Bz}=id(),tN=JT(),rN=ow(),vz=Do(),Dz=jl()});var pw=U((ZQt,Pz)=>{var GGe=jl(),WGe=(t,e,r)=>{try{e=new GGe(e,r)}catch{return!1}return e.test(t)};Pz.exports=WGe});var bz=U(($Qt,xz)=>{var YGe=jl(),KGe=(t,e)=>new YGe(t,e).set.map(r=>r.map(o=>o.value).join(" ").trim().split(" "));xz.exports=KGe});var kz=U((ekt,Qz)=>{var VGe=Do(),JGe=jl(),zGe=(t,e,r)=>{let o=null,a=null,n=null;try{n=new JGe(e,r)}catch{return null}return t.forEach(u=>{n.test(u)&&(!o||a.compare(u)===-1)&&(o=u,a=new VGe(o,r))}),o};Qz.exports=zGe});var Rz=U((tkt,Fz)=>{var XGe=Do(),ZGe=jl(),$Ge=(t,e,r)=>{let o=null,a=null,n=null;try{n=new ZGe(e,r)}catch{return null}return t.forEach(u=>{n.test(u)&&(!o||a.compare(u)===1)&&(o=u,a=new XGe(o,r))}),o};Fz.exports=$Ge});var Lz=U((rkt,Nz)=>{var nN=Do(),e9e=jl(),Tz=lw(),t9e=(t,e)=>{t=new e9e(t,e);let r=new nN("0.0.0");if(t.test(r)||(r=new nN("0.0.0-0"),t.test(r)))return r;r=null;for(let o=0;o<t.set.length;++o){let a=t.set[o],n=null;a.forEach(u=>{let A=new nN(u.semver.version);switch(u.operator){case">":A.prerelease.length===0?A.patch++:A.prerelease.push(0),A.raw=A.format();case"":case">=":(!n||Tz(A,n))&&(n=A);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${u.operator}`)}}),n&&(!r||Tz(r,n))&&(r=n)}return r&&t.test(r)?r:null};Nz.exports=t9e});var Mz=U((nkt,Oz)=>{var r9e=jl(),n9e=(t,e)=>{try{return new r9e(t,e).range||"*"}catch{return null}};Oz.exports=n9e});var gS=U((ikt,qz)=>{var i9e=Do(),Hz=Aw(),{ANY:s9e}=Hz,o9e=jl(),a9e=pw(),Uz=lw(),_z=lS(),l9e=uS(),c9e=cS(),u9e=(t,e,r,o)=>{t=new i9e(t,o),e=new o9e(e,o);let a,n,u,A,p;switch(r){case">":a=Uz,n=l9e,u=_z,A=">",p=">=";break;case"<":a=_z,n=c9e,u=Uz,A="<",p="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(a9e(t,e,o))return!1;for(let h=0;h<e.set.length;++h){let C=e.set[h],w=null,v=null;if(C.forEach(b=>{b.semver===s9e&&(b=new Hz(">=0.0.0")),w=w||b,v=v||b,a(b.semver,w.semver,o)?w=b:u(b.semver,v.semver,o)&&(v=b)}),w.operator===A||w.operator===p||(!v.operator||v.operator===A)&&n(t,v.semver))return!1;if(v.operator===p&&u(t,v.semver))return!1}return!0};qz.exports=u9e});var Gz=U((skt,jz)=>{var A9e=gS(),f9e=(t,e,r)=>A9e(t,e,">",r);jz.exports=f9e});var Yz=U((okt,Wz)=>{var p9e=gS(),h9e=(t,e,r)=>p9e(t,e,"<",r);Wz.exports=h9e});var Jz=U((akt,Vz)=>{var Kz=jl(),g9e=(t,e,r)=>(t=new Kz(t,r),e=new Kz(e,r),t.intersects(e));Vz.exports=g9e});var Xz=U((lkt,zz)=>{var d9e=pw(),m9e=ql();zz.exports=(t,e,r)=>{let o=[],a=null,n=null,u=t.sort((C,w)=>m9e(C,w,r));for(let C of u)d9e(C,e,r)?(n=C,a||(a=C)):(n&&o.push([a,n]),n=null,a=null);a&&o.push([a,null]);let A=[];for(let[C,w]of o)C===w?A.push(C):!w&&C===u[0]?A.push("*"):w?C===u[0]?A.push(`<=${w}`):A.push(`${C} - ${w}`):A.push(`>=${C}`);let p=A.join(" || "),h=typeof e.raw=="string"?e.raw:String(e);return p.length<h.length?p:e}});var rX=U((ckt,tX)=>{var Zz=jl(),dS=Aw(),{ANY:iN}=dS,hw=pw(),sN=ql(),y9e=(t,e,r={})=>{if(t===e)return!0;t=new Zz(t,r),e=new Zz(e,r);let o=!1;e:for(let a of t.set){for(let n of e.set){let u=E9e(a,n,r);if(o=o||u!==null,u)continue e}if(o)return!1}return!0},E9e=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===iN){if(e.length===1&&e[0].semver===iN)return!0;r.includePrerelease?t=[new dS(">=0.0.0-0")]:t=[new dS(">=0.0.0")]}if(e.length===1&&e[0].semver===iN){if(r.includePrerelease)return!0;e=[new dS(">=0.0.0")]}let o=new Set,a,n;for(let b of t)b.operator===">"||b.operator===">="?a=$z(a,b,r):b.operator==="<"||b.operator==="<="?n=eX(n,b,r):o.add(b.semver);if(o.size>1)return null;let u;if(a&&n){if(u=sN(a.semver,n.semver,r),u>0)return null;if(u===0&&(a.operator!==">="||n.operator!=="<="))return null}for(let b of o){if(a&&!hw(b,String(a),r)||n&&!hw(b,String(n),r))return null;for(let E of e)if(!hw(b,String(E),r))return!1;return!0}let A,p,h,C,w=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1,v=a&&!r.includePrerelease&&a.semver.prerelease.length?a.semver:!1;w&&w.prerelease.length===1&&n.operator==="<"&&w.prerelease[0]===0&&(w=!1);for(let b of e){if(C=C||b.operator===">"||b.operator===">=",h=h||b.operator==="<"||b.operator==="<=",a){if(v&&b.semver.prerelease&&b.semver.prerelease.length&&b.semver.major===v.major&&b.semver.minor===v.minor&&b.semver.patch===v.patch&&(v=!1),b.operator===">"||b.operator===">="){if(A=$z(a,b,r),A===b&&A!==a)return!1}else if(a.operator===">="&&!hw(a.semver,String(b),r))return!1}if(n){if(w&&b.semver.prerelease&&b.semver.prerelease.length&&b.semver.major===w.major&&b.semver.minor===w.minor&&b.semver.patch===w.patch&&(w=!1),b.operator==="<"||b.operator==="<="){if(p=eX(n,b,r),p===b&&p!==n)return!1}else if(n.operator==="<="&&!hw(n.semver,String(b),r))return!1}if(!b.operator&&(n||a)&&u!==0)return!1}return!(a&&h&&!n&&u!==0||n&&C&&!a&&u!==0||v||w)},$z=(t,e,r)=>{if(!t)return e;let o=sN(t.semver,e.semver,r);return o>0?t:o<0||e.operator===">"&&t.operator===">="?e:t},eX=(t,e,r)=>{if(!t)return e;let o=sN(t.semver,e.semver,r);return o<0?t:o>0||e.operator==="<"&&t.operator==="<="?e:t};tX.exports=y9e});var si=U((ukt,nX)=>{var oN=id();nX.exports={re:oN.re,src:oN.src,tokens:oN.t,SEMVER_SPEC_VERSION:sw().SEMVER_SPEC_VERSION,SemVer:Do(),compareIdentifiers:nS().compareIdentifiers,rcompareIdentifiers:nS().rcompareIdentifiers,parse:sd(),valid:SJ(),clean:xJ(),inc:kJ(),diff:OJ(),major:UJ(),minor:HJ(),patch:jJ(),prerelease:WJ(),compare:ql(),rcompare:KJ(),compareLoose:JJ(),compareBuild:aS(),sort:$J(),rsort:tz(),gt:lw(),lt:lS(),eq:oS(),neq:VT(),gte:cS(),lte:uS(),cmp:JT(),coerce:cz(),Comparator:Aw(),Range:jl(),satisfies:pw(),toComparators:bz(),maxSatisfying:kz(),minSatisfying:Rz(),minVersion:Lz(),validRange:Mz(),outside:gS(),gtr:Gz(),ltr:Yz(),intersects:Jz(),simplifyRange:Xz(),subset:rX()}});var sX=U((Akt,iX)=>{"use strict";function C9e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function ud(t,e,r,o){this.message=t,this.expected=e,this.found=r,this.location=o,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,ud)}C9e(ud,Error);ud.buildMessage=function(t,e){var r={literal:function(h){return'"'+a(h.text)+'"'},class:function(h){var C="",w;for(w=0;w<h.parts.length;w++)C+=h.parts[w]instanceof Array?n(h.parts[w][0])+"-"+n(h.parts[w][1]):n(h.parts[w]);return"["+(h.inverted?"^":"")+C+"]"},any:function(h){return"any character"},end:function(h){return"end of input"},other:function(h){return h.description}};function o(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(C){return"\\x0"+o(C)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(C){return"\\x"+o(C)})}function n(h){return h.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(C){return"\\x0"+o(C)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(C){return"\\x"+o(C)})}function u(h){return r[h.type](h)}function A(h){var C=new Array(h.length),w,v;for(w=0;w<h.length;w++)C[w]=u(h[w]);if(C.sort(),C.length>0){for(w=1,v=1;w<C.length;w++)C[w-1]!==C[w]&&(C[v]=C[w],v++);C.length=v}switch(C.length){case 1:return C[0];case 2:return C[0]+" or "+C[1];default:return C.slice(0,-1).join(", ")+", or "+C[C.length-1]}}function p(h){return h?'"'+a(h)+'"':"end of input"}return"Expected "+A(t)+" but "+p(e)+" found."};function I9e(t,e){e=e!==void 0?e:{};var r={},o={Expression:y},a=y,n="|",u=Me("|",!1),A="&",p=Me("&",!1),h="^",C=Me("^",!1),w=function($,ie){return!!ie.reduce((ke,Ne)=>{switch(Ne[1]){case"|":return ke|Ne[3];case"&":return ke&Ne[3];case"^":return ke^Ne[3]}},$)},v="!",b=Me("!",!1),E=function($){return!$},R="(",L=Me("(",!1),_=")",V=Me(")",!1),re=function($){return $},ae=/^[^ \t\n\r()!|&\^]/,he=Te([" "," ",` |
127 | `,"\r","(",")","!","|","&","^"],!0,!1),he=function($){return e.queryPattern.test($)},ve=function($){return e.checkFn($)},ge=je("whitespace"),le=/^[ \t\n\r]/,Pe=Te([" "," ",` | 127 | `,"\r","(",")","!","|","&","^"],!0,!1),pe=function($){return e.queryPattern.test($)},De=function($){return e.checkFn($)},ge=qe("whitespace"),le=/^[ \t\n\r]/,Pe=Te([" "," ",` |
128 | `,"\r"],!1,!1),g=0,De=0,Ee=[{line:1,column:1}],de=0,ne=[],Z=0,me;if("startRule"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=o[e.startRule]}function be(){return t.substring(De,g)}function ut(){return Le(De,g)}function H($,ie){throw ie=ie!==void 0?ie:Le(De,g),P([je($)],t.substring(De,g),ie)}function yt($,ie){throw ie=ie!==void 0?ie:Le(De,g),I($,ie)}function Me($,ie){return{type:"literal",text:$,ignoreCase:ie}}function Te($,ie,ke){return{type:"class",parts:$,inverted:ie,ignoreCase:ke}}function Qe(){return{type:"any"}}function Ue(){return{type:"end"}}function je($){return{type:"other",description:$}}function At($){var ie=Ee[$],ke;if(ie)return ie;for(ke=$-1;!Ee[ke];)ke--;for(ie=Ee[ke],ie={line:ie.line,column:ie.column};ke<$;)t.charCodeAt(ke)===10?(ie.line++,ie.column=1):ie.column++,ke++;return Ee[$]=ie,ie}function Le($,ie){var ke=At($),Ne=At(ie);return{start:{offset:$,line:ke.line,column:ke.column},end:{offset:ie,line:Ne.line,column:Ne.column}}}function x($){g<de||(g>de&&(de=g,ne=[]),ne.push($))}function I($,ie){return new od($,null,null,ie)}function P($,ie,ke){return new od(od.buildMessage($,ie),$,ie,ke)}function y(){var $,ie,ke,Ne,st,ht,Ut,Xt;if($=g,ie=F(),ie!==r){for(ke=[],Ne=g,st=X(),st!==r?(t.charCodeAt(g)===124?(ht=n,g++):(ht=r,Z===0&&x(u)),ht===r&&(t.charCodeAt(g)===38?(ht=A,g++):(ht=r,Z===0&&x(p)),ht===r&&(t.charCodeAt(g)===94?(ht=h,g++):(ht=r,Z===0&&x(C)))),ht!==r?(Ut=X(),Ut!==r?(Xt=F(),Xt!==r?(st=[st,ht,Ut,Xt],Ne=st):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r);Ne!==r;)ke.push(Ne),Ne=g,st=X(),st!==r?(t.charCodeAt(g)===124?(ht=n,g++):(ht=r,Z===0&&x(u)),ht===r&&(t.charCodeAt(g)===38?(ht=A,g++):(ht=r,Z===0&&x(p)),ht===r&&(t.charCodeAt(g)===94?(ht=h,g++):(ht=r,Z===0&&x(C)))),ht!==r?(Ut=X(),Ut!==r?(Xt=F(),Xt!==r?(st=[st,ht,Ut,Xt],Ne=st):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r);ke!==r?(De=$,ie=w(ie,ke),$=ie):(g=$,$=r)}else g=$,$=r;return $}function F(){var $,ie,ke,Ne,st,ht;return $=g,t.charCodeAt(g)===33?(ie=v,g++):(ie=r,Z===0&&x(b)),ie!==r?(ke=F(),ke!==r?(De=$,ie=E(ke),$=ie):(g=$,$=r)):(g=$,$=r),$===r&&($=g,t.charCodeAt(g)===40?(ie=R,g++):(ie=r,Z===0&&x(L)),ie!==r?(ke=X(),ke!==r?(Ne=y(),Ne!==r?(st=X(),st!==r?(t.charCodeAt(g)===41?(ht=_,g++):(ht=r,Z===0&&x(J)),ht!==r?(De=$,ie=re(Ne),$=ie):(g=$,$=r)):(g=$,$=r)):(g=$,$=r)):(g=$,$=r)):(g=$,$=r),$===r&&($=z())),$}function z(){var $,ie,ke,Ne,st;if($=g,ie=X(),ie!==r){if(ke=g,Ne=[],oe.test(t.charAt(g))?(st=t.charAt(g),g++):(st=r,Z===0&&x(pe)),st!==r)for(;st!==r;)Ne.push(st),oe.test(t.charAt(g))?(st=t.charAt(g),g++):(st=r,Z===0&&x(pe));else Ne=r;Ne!==r?ke=t.substring(ke,g):ke=Ne,ke!==r?(De=g,Ne=he(ke),Ne?Ne=void 0:Ne=r,Ne!==r?(De=$,ie=ve(ke),$=ie):(g=$,$=r)):(g=$,$=r)}else g=$,$=r;return $}function X(){var $,ie;for(Z++,$=[],le.test(t.charAt(g))?(ie=t.charAt(g),g++):(ie=r,Z===0&&x(Pe));ie!==r;)$.push(ie),le.test(t.charAt(g))?(ie=t.charAt(g),g++):(ie=r,Z===0&&x(Pe));return Z--,$===r&&(ie=r,Z===0&&x(ge)),$}if(me=a(),me!==r&&g===t.length)return me;throw me!==r&&g<t.length&&x(Ue()),P(ne,de<t.length?t.charAt(de):null,de<t.length?Le(de,de+1):Le(de,de))}zz.exports={SyntaxError:od,parse:o5e}});var Zz=U(lS=>{var{parse:a5e}=Xz();lS.makeParser=(t=/[a-z]+/)=>(e,r)=>a5e(e,{queryPattern:t,checkFn:r});lS.parse=lS.makeParser()});var eX=U((JQt,$z)=>{"use strict";$z.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var iN=U((VQt,rX)=>{var uw=eX(),tX={};for(let t of Object.keys(uw))tX[uw[t]]=t;var cr={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};rX.exports=cr;for(let t of Object.keys(cr)){if(!("channels"in cr[t]))throw new Error("missing channels property: "+t);if(!("labels"in cr[t]))throw new Error("missing channel labels property: "+t);if(cr[t].labels.length!==cr[t].channels)throw new Error("channel and label counts mismatch: "+t);let{channels:e,labels:r}=cr[t];delete cr[t].channels,delete cr[t].labels,Object.defineProperty(cr[t],"channels",{value:e}),Object.defineProperty(cr[t],"labels",{value:r})}cr.rgb.hsl=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(e,r,o),n=Math.max(e,r,o),u=n-a,A,p;n===a?A=0:e===n?A=(r-o)/u:r===n?A=2+(o-e)/u:o===n&&(A=4+(e-r)/u),A=Math.min(A*60,360),A<0&&(A+=360);let h=(a+n)/2;return n===a?p=0:h<=.5?p=u/(n+a):p=u/(2-n-a),[A,p*100,h*100]};cr.rgb.hsv=function(t){let e,r,o,a,n,u=t[0]/255,A=t[1]/255,p=t[2]/255,h=Math.max(u,A,p),C=h-Math.min(u,A,p),w=function(v){return(h-v)/6/C+1/2};return C===0?(a=0,n=0):(n=C/h,e=w(u),r=w(A),o=w(p),u===h?a=o-r:A===h?a=1/3+e-o:p===h&&(a=2/3+r-e),a<0?a+=1:a>1&&(a-=1)),[a*360,n*100,h*100]};cr.rgb.hwb=function(t){let e=t[0],r=t[1],o=t[2],a=cr.rgb.hsl(t)[0],n=1/255*Math.min(e,Math.min(r,o));return o=1-1/255*Math.max(e,Math.max(r,o)),[a,n*100,o*100]};cr.rgb.cmyk=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(1-e,1-r,1-o),n=(1-e-a)/(1-a)||0,u=(1-r-a)/(1-a)||0,A=(1-o-a)/(1-a)||0;return[n*100,u*100,A*100,a*100]};function l5e(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}cr.rgb.keyword=function(t){let e=tX[t];if(e)return e;let r=1/0,o;for(let a of Object.keys(uw)){let n=uw[a],u=l5e(t,n);u<r&&(r=u,o=a)}return o};cr.keyword.rgb=function(t){return uw[t]};cr.rgb.xyz=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255;e=e>.04045?((e+.055)/1.055)**2.4:e/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,o=o>.04045?((o+.055)/1.055)**2.4:o/12.92;let a=e*.4124+r*.3576+o*.1805,n=e*.2126+r*.7152+o*.0722,u=e*.0193+r*.1192+o*.9505;return[a*100,n*100,u*100]};cr.rgb.lab=function(t){let e=cr.rgb.xyz(t),r=e[0],o=e[1],a=e[2];r/=95.047,o/=100,a/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,o=o>.008856?o**(1/3):7.787*o+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;let n=116*o-16,u=500*(r-o),A=200*(o-a);return[n,u,A]};cr.hsl.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100,a,n,u;if(r===0)return u=o*255,[u,u,u];o<.5?a=o*(1+r):a=o+r-o*r;let A=2*o-a,p=[0,0,0];for(let h=0;h<3;h++)n=e+1/3*-(h-1),n<0&&n++,n>1&&n--,6*n<1?u=A+(a-A)*6*n:2*n<1?u=a:3*n<2?u=A+(a-A)*(2/3-n)*6:u=A,p[h]=u*255;return p};cr.hsl.hsv=function(t){let e=t[0],r=t[1]/100,o=t[2]/100,a=r,n=Math.max(o,.01);o*=2,r*=o<=1?o:2-o,a*=n<=1?n:2-n;let u=(o+r)/2,A=o===0?2*a/(n+a):2*r/(o+r);return[e,A*100,u*100]};cr.hsv.rgb=function(t){let e=t[0]/60,r=t[1]/100,o=t[2]/100,a=Math.floor(e)%6,n=e-Math.floor(e),u=255*o*(1-r),A=255*o*(1-r*n),p=255*o*(1-r*(1-n));switch(o*=255,a){case 0:return[o,p,u];case 1:return[A,o,u];case 2:return[u,o,p];case 3:return[u,A,o];case 4:return[p,u,o];case 5:return[o,u,A]}};cr.hsv.hsl=function(t){let e=t[0],r=t[1]/100,o=t[2]/100,a=Math.max(o,.01),n,u;u=(2-r)*o;let A=(2-r)*a;return n=r*a,n/=A<=1?A:2-A,n=n||0,u/=2,[e,n*100,u*100]};cr.hwb.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100,a=r+o,n;a>1&&(r/=a,o/=a);let u=Math.floor(6*e),A=1-o;n=6*e-u,(u&1)!==0&&(n=1-n);let p=r+n*(A-r),h,C,w;switch(u){default:case 6:case 0:h=A,C=p,w=r;break;case 1:h=p,C=A,w=r;break;case 2:h=r,C=A,w=p;break;case 3:h=r,C=p,w=A;break;case 4:h=p,C=r,w=A;break;case 5:h=A,C=r,w=p;break}return[h*255,C*255,w*255]};cr.cmyk.rgb=function(t){let e=t[0]/100,r=t[1]/100,o=t[2]/100,a=t[3]/100,n=1-Math.min(1,e*(1-a)+a),u=1-Math.min(1,r*(1-a)+a),A=1-Math.min(1,o*(1-a)+a);return[n*255,u*255,A*255]};cr.xyz.rgb=function(t){let e=t[0]/100,r=t[1]/100,o=t[2]/100,a,n,u;return a=e*3.2406+r*-1.5372+o*-.4986,n=e*-.9689+r*1.8758+o*.0415,u=e*.0557+r*-.204+o*1.057,a=a>.0031308?1.055*a**(1/2.4)-.055:a*12.92,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,u=u>.0031308?1.055*u**(1/2.4)-.055:u*12.92,a=Math.min(Math.max(0,a),1),n=Math.min(Math.max(0,n),1),u=Math.min(Math.max(0,u),1),[a*255,n*255,u*255]};cr.xyz.lab=function(t){let e=t[0],r=t[1],o=t[2];e/=95.047,r/=100,o/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,o=o>.008856?o**(1/3):7.787*o+16/116;let a=116*r-16,n=500*(e-r),u=200*(r-o);return[a,n,u]};cr.lab.xyz=function(t){let e=t[0],r=t[1],o=t[2],a,n,u;n=(e+16)/116,a=r/500+n,u=n-o/200;let A=n**3,p=a**3,h=u**3;return n=A>.008856?A:(n-16/116)/7.787,a=p>.008856?p:(a-16/116)/7.787,u=h>.008856?h:(u-16/116)/7.787,a*=95.047,n*=100,u*=108.883,[a,n,u]};cr.lab.lch=function(t){let e=t[0],r=t[1],o=t[2],a;a=Math.atan2(o,r)*360/2/Math.PI,a<0&&(a+=360);let u=Math.sqrt(r*r+o*o);return[e,u,a]};cr.lch.lab=function(t){let e=t[0],r=t[1],a=t[2]/360*2*Math.PI,n=r*Math.cos(a),u=r*Math.sin(a);return[e,n,u]};cr.rgb.ansi16=function(t,e=null){let[r,o,a]=t,n=e===null?cr.rgb.hsv(t)[2]:e;if(n=Math.round(n/50),n===0)return 30;let u=30+(Math.round(a/255)<<2|Math.round(o/255)<<1|Math.round(r/255));return n===2&&(u+=60),u};cr.hsv.ansi16=function(t){return cr.rgb.ansi16(cr.hsv.rgb(t),t[2])};cr.rgb.ansi256=function(t){let e=t[0],r=t[1],o=t[2];return e===r&&r===o?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(o/255*5)};cr.ansi16.rgb=function(t){let e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let r=(~~(t>50)+1)*.5,o=(e&1)*r*255,a=(e>>1&1)*r*255,n=(e>>2&1)*r*255;return[o,a,n]};cr.ansi256.rgb=function(t){if(t>=232){let n=(t-232)*10+8;return[n,n,n]}t-=16;let e,r=Math.floor(t/36)/5*255,o=Math.floor((e=t%36)/6)/5*255,a=e%6/5*255;return[r,o,a]};cr.rgb.hex=function(t){let r=(((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};cr.hex.rgb=function(t){let e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let r=e[0];e[0].length===3&&(r=r.split("").map(A=>A+A).join(""));let o=parseInt(r,16),a=o>>16&255,n=o>>8&255,u=o&255;return[a,n,u]};cr.rgb.hcg=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.max(Math.max(e,r),o),n=Math.min(Math.min(e,r),o),u=a-n,A,p;return u<1?A=n/(1-u):A=0,u<=0?p=0:a===e?p=(r-o)/u%6:a===r?p=2+(o-e)/u:p=4+(e-r)/u,p/=6,p%=1,[p*360,u*100,A*100]};cr.hsl.hcg=function(t){let e=t[1]/100,r=t[2]/100,o=r<.5?2*e*r:2*e*(1-r),a=0;return o<1&&(a=(r-.5*o)/(1-o)),[t[0],o*100,a*100]};cr.hsv.hcg=function(t){let e=t[1]/100,r=t[2]/100,o=e*r,a=0;return o<1&&(a=(r-o)/(1-o)),[t[0],o*100,a*100]};cr.hcg.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100;if(r===0)return[o*255,o*255,o*255];let a=[0,0,0],n=e%1*6,u=n%1,A=1-u,p=0;switch(Math.floor(n)){case 0:a[0]=1,a[1]=u,a[2]=0;break;case 1:a[0]=A,a[1]=1,a[2]=0;break;case 2:a[0]=0,a[1]=1,a[2]=u;break;case 3:a[0]=0,a[1]=A,a[2]=1;break;case 4:a[0]=u,a[1]=0,a[2]=1;break;default:a[0]=1,a[1]=0,a[2]=A}return p=(1-r)*o,[(r*a[0]+p)*255,(r*a[1]+p)*255,(r*a[2]+p)*255]};cr.hcg.hsv=function(t){let e=t[1]/100,r=t[2]/100,o=e+r*(1-e),a=0;return o>0&&(a=e/o),[t[0],a*100,o*100]};cr.hcg.hsl=function(t){let e=t[1]/100,o=t[2]/100*(1-e)+.5*e,a=0;return o>0&&o<.5?a=e/(2*o):o>=.5&&o<1&&(a=e/(2*(1-o))),[t[0],a*100,o*100]};cr.hcg.hwb=function(t){let e=t[1]/100,r=t[2]/100,o=e+r*(1-e);return[t[0],(o-e)*100,(1-o)*100]};cr.hwb.hcg=function(t){let e=t[1]/100,o=1-t[2]/100,a=o-e,n=0;return a<1&&(n=(o-a)/(1-a)),[t[0],a*100,n*100]};cr.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};cr.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};cr.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};cr.gray.hsl=function(t){return[0,0,t[0]]};cr.gray.hsv=cr.gray.hsl;cr.gray.hwb=function(t){return[0,100,t[0]]};cr.gray.cmyk=function(t){return[0,0,0,t[0]]};cr.gray.lab=function(t){return[t[0],0,0]};cr.gray.hex=function(t){let e=Math.round(t[0]/100*255)&255,o=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(o.length)+o};cr.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}});var iX=U((zQt,nX)=>{var cS=iN();function c5e(){let t={},e=Object.keys(cS);for(let r=e.length,o=0;o<r;o++)t[e[o]]={distance:-1,parent:null};return t}function u5e(t){let e=c5e(),r=[t];for(e[t].distance=0;r.length;){let o=r.pop(),a=Object.keys(cS[o]);for(let n=a.length,u=0;u<n;u++){let A=a[u],p=e[A];p.distance===-1&&(p.distance=e[o].distance+1,p.parent=o,r.unshift(A))}}return e}function A5e(t,e){return function(r){return e(t(r))}}function f5e(t,e){let r=[e[t].parent,t],o=cS[e[t].parent][t],a=e[t].parent;for(;e[a].parent;)r.unshift(e[a].parent),o=A5e(cS[e[a].parent][a],o),a=e[a].parent;return o.conversion=r,o}nX.exports=function(t){let e=u5e(t),r={},o=Object.keys(e);for(let a=o.length,n=0;n<a;n++){let u=o[n];e[u].parent!==null&&(r[u]=f5e(u,e))}return r}});var oX=U((XQt,sX)=>{var sN=iN(),p5e=iX(),Dy={},h5e=Object.keys(sN);function g5e(t){let e=function(...r){let o=r[0];return o==null?o:(o.length>1&&(r=o),t(r))};return"conversion"in t&&(e.conversion=t.conversion),e}function d5e(t){let e=function(...r){let o=r[0];if(o==null)return o;o.length>1&&(r=o);let a=t(r);if(typeof a=="object")for(let n=a.length,u=0;u<n;u++)a[u]=Math.round(a[u]);return a};return"conversion"in t&&(e.conversion=t.conversion),e}h5e.forEach(t=>{Dy[t]={},Object.defineProperty(Dy[t],"channels",{value:sN[t].channels}),Object.defineProperty(Dy[t],"labels",{value:sN[t].labels});let e=p5e(t);Object.keys(e).forEach(o=>{let a=e[o];Dy[t][o]=d5e(a),Dy[t][o].raw=g5e(a)})});sX.exports=Dy});var Aw=U((ZQt,AX)=>{"use strict";var aX=(t,e)=>(...r)=>`\x1B[${t(...r)+e}m`,lX=(t,e)=>(...r)=>{let o=t(...r);return`\x1B[${38+e};5;${o}m`},cX=(t,e)=>(...r)=>{let o=t(...r);return`\x1B[${38+e};2;${o[0]};${o[1]};${o[2]}m`},uS=t=>t,uX=(t,e,r)=>[t,e,r],Sy=(t,e,r)=>{Object.defineProperty(t,e,{get:()=>{let o=r();return Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0}),o},enumerable:!0,configurable:!0})},oN,Py=(t,e,r,o)=>{oN===void 0&&(oN=oX());let a=o?10:0,n={};for(let[u,A]of Object.entries(oN)){let p=u==="ansi16"?"ansi":u;u===e?n[p]=t(r,a):typeof A=="object"&&(n[p]=t(A[e],a))}return n};function m5e(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[r,o]of Object.entries(e)){for(let[a,n]of Object.entries(o))e[a]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},o[a]=e[a],t.set(n[0],n[1]);Object.defineProperty(e,r,{value:o,enumerable:!1})}return Object.defineProperty(e,"codes",{value:t,enumerable:!1}),e.color.close="\x1B[39m",e.bgColor.close="\x1B[49m",Sy(e.color,"ansi",()=>Py(aX,"ansi16",uS,!1)),Sy(e.color,"ansi256",()=>Py(lX,"ansi256",uS,!1)),Sy(e.color,"ansi16m",()=>Py(cX,"rgb",uX,!1)),Sy(e.bgColor,"ansi",()=>Py(aX,"ansi16",uS,!0)),Sy(e.bgColor,"ansi256",()=>Py(lX,"ansi256",uS,!0)),Sy(e.bgColor,"ansi16m",()=>Py(cX,"rgb",uX,!0)),e}Object.defineProperty(AX,"exports",{enumerable:!0,get:m5e})});var pX=U(($Qt,fX)=>{"use strict";fX.exports=(t,e=process.argv)=>{let r=t.startsWith("-")?"":t.length===1?"-":"--",o=e.indexOf(r+t),a=e.indexOf("--");return o!==-1&&(a===-1||o<a)}});var cN=U((ekt,gX)=>{"use strict";var y5e=Ie("os"),hX=Ie("tty"),_l=pX(),{env:ls}=process,Wp;_l("no-color")||_l("no-colors")||_l("color=false")||_l("color=never")?Wp=0:(_l("color")||_l("colors")||_l("color=true")||_l("color=always"))&&(Wp=1);"FORCE_COLOR"in ls&&(ls.FORCE_COLOR==="true"?Wp=1:ls.FORCE_COLOR==="false"?Wp=0:Wp=ls.FORCE_COLOR.length===0?1:Math.min(parseInt(ls.FORCE_COLOR,10),3));function aN(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function lN(t,e){if(Wp===0)return 0;if(_l("color=16m")||_l("color=full")||_l("color=truecolor"))return 3;if(_l("color=256"))return 2;if(t&&!e&&Wp===void 0)return 0;let r=Wp||0;if(ls.TERM==="dumb")return r;if(process.platform==="win32"){let o=y5e.release().split(".");return Number(o[0])>=10&&Number(o[2])>=10586?Number(o[2])>=14931?3:2:1}if("CI"in ls)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(o=>o in ls)||ls.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in ls)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(ls.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in ls)return 1;if(ls.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in ls){let o=parseInt((ls.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(ls.TERM_PROGRAM){case"iTerm.app":return o>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(ls.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(ls.TERM)||"COLORTERM"in ls?1:r}function E5e(t){let e=lN(t,t&&t.isTTY);return aN(e)}gX.exports={supportsColor:E5e,stdout:aN(lN(!0,hX.isatty(1))),stderr:aN(lN(!0,hX.isatty(2)))}});var mX=U((tkt,dX)=>{"use strict";var C5e=(t,e,r)=>{let o=t.indexOf(e);if(o===-1)return t;let a=e.length,n=0,u="";do u+=t.substr(n,o-n)+e+r,n=o+a,o=t.indexOf(e,n);while(o!==-1);return u+=t.substr(n),u},I5e=(t,e,r,o)=>{let a=0,n="";do{let u=t[o-1]==="\r";n+=t.substr(a,(u?o-1:o)-a)+e+(u?`\r | 128 | `,"\r"],!1,!1),g=0,ve=0,Ee=[{line:1,column:1}],de=0,ne=[],Z=0,me;if("startRule"in e){if(!(e.startRule in o))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');a=o[e.startRule]}function be(){return t.substring(ve,g)}function ut(){return Oe(ve,g)}function H($,ie){throw ie=ie!==void 0?ie:Oe(ve,g),P([qe($)],t.substring(ve,g),ie)}function yt($,ie){throw ie=ie!==void 0?ie:Oe(ve,g),I($,ie)}function Me($,ie){return{type:"literal",text:$,ignoreCase:ie}}function Te($,ie,ke){return{type:"class",parts:$,inverted:ie,ignoreCase:ke}}function Qe(){return{type:"any"}}function _e(){return{type:"end"}}function qe($){return{type:"other",description:$}}function At($){var ie=Ee[$],ke;if(ie)return ie;for(ke=$-1;!Ee[ke];)ke--;for(ie=Ee[ke],ie={line:ie.line,column:ie.column};ke<$;)t.charCodeAt(ke)===10?(ie.line++,ie.column=1):ie.column++,ke++;return Ee[$]=ie,ie}function Oe($,ie){var ke=At($),Ne=At(ie);return{start:{offset:$,line:ke.line,column:ke.column},end:{offset:ie,line:Ne.line,column:Ne.column}}}function x($){g<de||(g>de&&(de=g,ne=[]),ne.push($))}function I($,ie){return new ud($,null,null,ie)}function P($,ie,ke){return new ud(ud.buildMessage($,ie),$,ie,ke)}function y(){var $,ie,ke,Ne,st,ht,Ut,Xt;if($=g,ie=F(),ie!==r){for(ke=[],Ne=g,st=X(),st!==r?(t.charCodeAt(g)===124?(ht=n,g++):(ht=r,Z===0&&x(u)),ht===r&&(t.charCodeAt(g)===38?(ht=A,g++):(ht=r,Z===0&&x(p)),ht===r&&(t.charCodeAt(g)===94?(ht=h,g++):(ht=r,Z===0&&x(C)))),ht!==r?(Ut=X(),Ut!==r?(Xt=F(),Xt!==r?(st=[st,ht,Ut,Xt],Ne=st):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r);Ne!==r;)ke.push(Ne),Ne=g,st=X(),st!==r?(t.charCodeAt(g)===124?(ht=n,g++):(ht=r,Z===0&&x(u)),ht===r&&(t.charCodeAt(g)===38?(ht=A,g++):(ht=r,Z===0&&x(p)),ht===r&&(t.charCodeAt(g)===94?(ht=h,g++):(ht=r,Z===0&&x(C)))),ht!==r?(Ut=X(),Ut!==r?(Xt=F(),Xt!==r?(st=[st,ht,Ut,Xt],Ne=st):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r)):(g=Ne,Ne=r);ke!==r?(ve=$,ie=w(ie,ke),$=ie):(g=$,$=r)}else g=$,$=r;return $}function F(){var $,ie,ke,Ne,st,ht;return $=g,t.charCodeAt(g)===33?(ie=v,g++):(ie=r,Z===0&&x(b)),ie!==r?(ke=F(),ke!==r?(ve=$,ie=E(ke),$=ie):(g=$,$=r)):(g=$,$=r),$===r&&($=g,t.charCodeAt(g)===40?(ie=R,g++):(ie=r,Z===0&&x(L)),ie!==r?(ke=X(),ke!==r?(Ne=y(),Ne!==r?(st=X(),st!==r?(t.charCodeAt(g)===41?(ht=_,g++):(ht=r,Z===0&&x(V)),ht!==r?(ve=$,ie=re(Ne),$=ie):(g=$,$=r)):(g=$,$=r)):(g=$,$=r)):(g=$,$=r)):(g=$,$=r),$===r&&($=z())),$}function z(){var $,ie,ke,Ne,st;if($=g,ie=X(),ie!==r){if(ke=g,Ne=[],ae.test(t.charAt(g))?(st=t.charAt(g),g++):(st=r,Z===0&&x(he)),st!==r)for(;st!==r;)Ne.push(st),ae.test(t.charAt(g))?(st=t.charAt(g),g++):(st=r,Z===0&&x(he));else Ne=r;Ne!==r?ke=t.substring(ke,g):ke=Ne,ke!==r?(ve=g,Ne=pe(ke),Ne?Ne=void 0:Ne=r,Ne!==r?(ve=$,ie=De(ke),$=ie):(g=$,$=r)):(g=$,$=r)}else g=$,$=r;return $}function X(){var $,ie;for(Z++,$=[],le.test(t.charAt(g))?(ie=t.charAt(g),g++):(ie=r,Z===0&&x(Pe));ie!==r;)$.push(ie),le.test(t.charAt(g))?(ie=t.charAt(g),g++):(ie=r,Z===0&&x(Pe));return Z--,$===r&&(ie=r,Z===0&&x(ge)),$}if(me=a(),me!==r&&g===t.length)return me;throw me!==r&&g<t.length&&x(_e()),P(ne,de<t.length?t.charAt(de):null,de<t.length?Oe(de,de+1):Oe(de,de))}iX.exports={SyntaxError:ud,parse:I9e}});var oX=U(mS=>{var{parse:w9e}=sX();mS.makeParser=(t=/[a-z]+/)=>(e,r)=>w9e(e,{queryPattern:t,checkFn:r});mS.parse=mS.makeParser()});var lX=U((pkt,aX)=>{"use strict";aX.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var aN=U((hkt,uX)=>{var gw=lX(),cX={};for(let t of Object.keys(gw))cX[gw[t]]=t;var cr={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};uX.exports=cr;for(let t of Object.keys(cr)){if(!("channels"in cr[t]))throw new Error("missing channels property: "+t);if(!("labels"in cr[t]))throw new Error("missing channel labels property: "+t);if(cr[t].labels.length!==cr[t].channels)throw new Error("channel and label counts mismatch: "+t);let{channels:e,labels:r}=cr[t];delete cr[t].channels,delete cr[t].labels,Object.defineProperty(cr[t],"channels",{value:e}),Object.defineProperty(cr[t],"labels",{value:r})}cr.rgb.hsl=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(e,r,o),n=Math.max(e,r,o),u=n-a,A,p;n===a?A=0:e===n?A=(r-o)/u:r===n?A=2+(o-e)/u:o===n&&(A=4+(e-r)/u),A=Math.min(A*60,360),A<0&&(A+=360);let h=(a+n)/2;return n===a?p=0:h<=.5?p=u/(n+a):p=u/(2-n-a),[A,p*100,h*100]};cr.rgb.hsv=function(t){let e,r,o,a,n,u=t[0]/255,A=t[1]/255,p=t[2]/255,h=Math.max(u,A,p),C=h-Math.min(u,A,p),w=function(v){return(h-v)/6/C+1/2};return C===0?(a=0,n=0):(n=C/h,e=w(u),r=w(A),o=w(p),u===h?a=o-r:A===h?a=1/3+e-o:p===h&&(a=2/3+r-e),a<0?a+=1:a>1&&(a-=1)),[a*360,n*100,h*100]};cr.rgb.hwb=function(t){let e=t[0],r=t[1],o=t[2],a=cr.rgb.hsl(t)[0],n=1/255*Math.min(e,Math.min(r,o));return o=1-1/255*Math.max(e,Math.max(r,o)),[a,n*100,o*100]};cr.rgb.cmyk=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.min(1-e,1-r,1-o),n=(1-e-a)/(1-a)||0,u=(1-r-a)/(1-a)||0,A=(1-o-a)/(1-a)||0;return[n*100,u*100,A*100,a*100]};function B9e(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}cr.rgb.keyword=function(t){let e=cX[t];if(e)return e;let r=1/0,o;for(let a of Object.keys(gw)){let n=gw[a],u=B9e(t,n);u<r&&(r=u,o=a)}return o};cr.keyword.rgb=function(t){return gw[t]};cr.rgb.xyz=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255;e=e>.04045?((e+.055)/1.055)**2.4:e/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,o=o>.04045?((o+.055)/1.055)**2.4:o/12.92;let a=e*.4124+r*.3576+o*.1805,n=e*.2126+r*.7152+o*.0722,u=e*.0193+r*.1192+o*.9505;return[a*100,n*100,u*100]};cr.rgb.lab=function(t){let e=cr.rgb.xyz(t),r=e[0],o=e[1],a=e[2];r/=95.047,o/=100,a/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,o=o>.008856?o**(1/3):7.787*o+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;let n=116*o-16,u=500*(r-o),A=200*(o-a);return[n,u,A]};cr.hsl.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100,a,n,u;if(r===0)return u=o*255,[u,u,u];o<.5?a=o*(1+r):a=o+r-o*r;let A=2*o-a,p=[0,0,0];for(let h=0;h<3;h++)n=e+1/3*-(h-1),n<0&&n++,n>1&&n--,6*n<1?u=A+(a-A)*6*n:2*n<1?u=a:3*n<2?u=A+(a-A)*(2/3-n)*6:u=A,p[h]=u*255;return p};cr.hsl.hsv=function(t){let e=t[0],r=t[1]/100,o=t[2]/100,a=r,n=Math.max(o,.01);o*=2,r*=o<=1?o:2-o,a*=n<=1?n:2-n;let u=(o+r)/2,A=o===0?2*a/(n+a):2*r/(o+r);return[e,A*100,u*100]};cr.hsv.rgb=function(t){let e=t[0]/60,r=t[1]/100,o=t[2]/100,a=Math.floor(e)%6,n=e-Math.floor(e),u=255*o*(1-r),A=255*o*(1-r*n),p=255*o*(1-r*(1-n));switch(o*=255,a){case 0:return[o,p,u];case 1:return[A,o,u];case 2:return[u,o,p];case 3:return[u,A,o];case 4:return[p,u,o];case 5:return[o,u,A]}};cr.hsv.hsl=function(t){let e=t[0],r=t[1]/100,o=t[2]/100,a=Math.max(o,.01),n,u;u=(2-r)*o;let A=(2-r)*a;return n=r*a,n/=A<=1?A:2-A,n=n||0,u/=2,[e,n*100,u*100]};cr.hwb.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100,a=r+o,n;a>1&&(r/=a,o/=a);let u=Math.floor(6*e),A=1-o;n=6*e-u,(u&1)!==0&&(n=1-n);let p=r+n*(A-r),h,C,w;switch(u){default:case 6:case 0:h=A,C=p,w=r;break;case 1:h=p,C=A,w=r;break;case 2:h=r,C=A,w=p;break;case 3:h=r,C=p,w=A;break;case 4:h=p,C=r,w=A;break;case 5:h=A,C=r,w=p;break}return[h*255,C*255,w*255]};cr.cmyk.rgb=function(t){let e=t[0]/100,r=t[1]/100,o=t[2]/100,a=t[3]/100,n=1-Math.min(1,e*(1-a)+a),u=1-Math.min(1,r*(1-a)+a),A=1-Math.min(1,o*(1-a)+a);return[n*255,u*255,A*255]};cr.xyz.rgb=function(t){let e=t[0]/100,r=t[1]/100,o=t[2]/100,a,n,u;return a=e*3.2406+r*-1.5372+o*-.4986,n=e*-.9689+r*1.8758+o*.0415,u=e*.0557+r*-.204+o*1.057,a=a>.0031308?1.055*a**(1/2.4)-.055:a*12.92,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,u=u>.0031308?1.055*u**(1/2.4)-.055:u*12.92,a=Math.min(Math.max(0,a),1),n=Math.min(Math.max(0,n),1),u=Math.min(Math.max(0,u),1),[a*255,n*255,u*255]};cr.xyz.lab=function(t){let e=t[0],r=t[1],o=t[2];e/=95.047,r/=100,o/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,o=o>.008856?o**(1/3):7.787*o+16/116;let a=116*r-16,n=500*(e-r),u=200*(r-o);return[a,n,u]};cr.lab.xyz=function(t){let e=t[0],r=t[1],o=t[2],a,n,u;n=(e+16)/116,a=r/500+n,u=n-o/200;let A=n**3,p=a**3,h=u**3;return n=A>.008856?A:(n-16/116)/7.787,a=p>.008856?p:(a-16/116)/7.787,u=h>.008856?h:(u-16/116)/7.787,a*=95.047,n*=100,u*=108.883,[a,n,u]};cr.lab.lch=function(t){let e=t[0],r=t[1],o=t[2],a;a=Math.atan2(o,r)*360/2/Math.PI,a<0&&(a+=360);let u=Math.sqrt(r*r+o*o);return[e,u,a]};cr.lch.lab=function(t){let e=t[0],r=t[1],a=t[2]/360*2*Math.PI,n=r*Math.cos(a),u=r*Math.sin(a);return[e,n,u]};cr.rgb.ansi16=function(t,e=null){let[r,o,a]=t,n=e===null?cr.rgb.hsv(t)[2]:e;if(n=Math.round(n/50),n===0)return 30;let u=30+(Math.round(a/255)<<2|Math.round(o/255)<<1|Math.round(r/255));return n===2&&(u+=60),u};cr.hsv.ansi16=function(t){return cr.rgb.ansi16(cr.hsv.rgb(t),t[2])};cr.rgb.ansi256=function(t){let e=t[0],r=t[1],o=t[2];return e===r&&r===o?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(o/255*5)};cr.ansi16.rgb=function(t){let e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let r=(~~(t>50)+1)*.5,o=(e&1)*r*255,a=(e>>1&1)*r*255,n=(e>>2&1)*r*255;return[o,a,n]};cr.ansi256.rgb=function(t){if(t>=232){let n=(t-232)*10+8;return[n,n,n]}t-=16;let e,r=Math.floor(t/36)/5*255,o=Math.floor((e=t%36)/6)/5*255,a=e%6/5*255;return[r,o,a]};cr.rgb.hex=function(t){let r=(((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255)).toString(16).toUpperCase();return"000000".substring(r.length)+r};cr.hex.rgb=function(t){let e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let r=e[0];e[0].length===3&&(r=r.split("").map(A=>A+A).join(""));let o=parseInt(r,16),a=o>>16&255,n=o>>8&255,u=o&255;return[a,n,u]};cr.rgb.hcg=function(t){let e=t[0]/255,r=t[1]/255,o=t[2]/255,a=Math.max(Math.max(e,r),o),n=Math.min(Math.min(e,r),o),u=a-n,A,p;return u<1?A=n/(1-u):A=0,u<=0?p=0:a===e?p=(r-o)/u%6:a===r?p=2+(o-e)/u:p=4+(e-r)/u,p/=6,p%=1,[p*360,u*100,A*100]};cr.hsl.hcg=function(t){let e=t[1]/100,r=t[2]/100,o=r<.5?2*e*r:2*e*(1-r),a=0;return o<1&&(a=(r-.5*o)/(1-o)),[t[0],o*100,a*100]};cr.hsv.hcg=function(t){let e=t[1]/100,r=t[2]/100,o=e*r,a=0;return o<1&&(a=(r-o)/(1-o)),[t[0],o*100,a*100]};cr.hcg.rgb=function(t){let e=t[0]/360,r=t[1]/100,o=t[2]/100;if(r===0)return[o*255,o*255,o*255];let a=[0,0,0],n=e%1*6,u=n%1,A=1-u,p=0;switch(Math.floor(n)){case 0:a[0]=1,a[1]=u,a[2]=0;break;case 1:a[0]=A,a[1]=1,a[2]=0;break;case 2:a[0]=0,a[1]=1,a[2]=u;break;case 3:a[0]=0,a[1]=A,a[2]=1;break;case 4:a[0]=u,a[1]=0,a[2]=1;break;default:a[0]=1,a[1]=0,a[2]=A}return p=(1-r)*o,[(r*a[0]+p)*255,(r*a[1]+p)*255,(r*a[2]+p)*255]};cr.hcg.hsv=function(t){let e=t[1]/100,r=t[2]/100,o=e+r*(1-e),a=0;return o>0&&(a=e/o),[t[0],a*100,o*100]};cr.hcg.hsl=function(t){let e=t[1]/100,o=t[2]/100*(1-e)+.5*e,a=0;return o>0&&o<.5?a=e/(2*o):o>=.5&&o<1&&(a=e/(2*(1-o))),[t[0],a*100,o*100]};cr.hcg.hwb=function(t){let e=t[1]/100,r=t[2]/100,o=e+r*(1-e);return[t[0],(o-e)*100,(1-o)*100]};cr.hwb.hcg=function(t){let e=t[1]/100,o=1-t[2]/100,a=o-e,n=0;return a<1&&(n=(o-a)/(1-a)),[t[0],a*100,n*100]};cr.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};cr.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};cr.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};cr.gray.hsl=function(t){return[0,0,t[0]]};cr.gray.hsv=cr.gray.hsl;cr.gray.hwb=function(t){return[0,100,t[0]]};cr.gray.cmyk=function(t){return[0,0,0,t[0]]};cr.gray.lab=function(t){return[t[0],0,0]};cr.gray.hex=function(t){let e=Math.round(t[0]/100*255)&255,o=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(o.length)+o};cr.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}});var fX=U((gkt,AX)=>{var yS=aN();function v9e(){let t={},e=Object.keys(yS);for(let r=e.length,o=0;o<r;o++)t[e[o]]={distance:-1,parent:null};return t}function D9e(t){let e=v9e(),r=[t];for(e[t].distance=0;r.length;){let o=r.pop(),a=Object.keys(yS[o]);for(let n=a.length,u=0;u<n;u++){let A=a[u],p=e[A];p.distance===-1&&(p.distance=e[o].distance+1,p.parent=o,r.unshift(A))}}return e}function S9e(t,e){return function(r){return e(t(r))}}function P9e(t,e){let r=[e[t].parent,t],o=yS[e[t].parent][t],a=e[t].parent;for(;e[a].parent;)r.unshift(e[a].parent),o=S9e(yS[e[a].parent][a],o),a=e[a].parent;return o.conversion=r,o}AX.exports=function(t){let e=D9e(t),r={},o=Object.keys(e);for(let a=o.length,n=0;n<a;n++){let u=o[n];e[u].parent!==null&&(r[u]=P9e(u,e))}return r}});var hX=U((dkt,pX)=>{var lN=aN(),x9e=fX(),Qy={},b9e=Object.keys(lN);function Q9e(t){let e=function(...r){let o=r[0];return o==null?o:(o.length>1&&(r=o),t(r))};return"conversion"in t&&(e.conversion=t.conversion),e}function k9e(t){let e=function(...r){let o=r[0];if(o==null)return o;o.length>1&&(r=o);let a=t(r);if(typeof a=="object")for(let n=a.length,u=0;u<n;u++)a[u]=Math.round(a[u]);return a};return"conversion"in t&&(e.conversion=t.conversion),e}b9e.forEach(t=>{Qy[t]={},Object.defineProperty(Qy[t],"channels",{value:lN[t].channels}),Object.defineProperty(Qy[t],"labels",{value:lN[t].labels});let e=x9e(t);Object.keys(e).forEach(o=>{let a=e[o];Qy[t][o]=k9e(a),Qy[t][o].raw=Q9e(a)})});pX.exports=Qy});var dw=U((mkt,EX)=>{"use strict";var gX=(t,e)=>(...r)=>`\x1B[${t(...r)+e}m`,dX=(t,e)=>(...r)=>{let o=t(...r);return`\x1B[${38+e};5;${o}m`},mX=(t,e)=>(...r)=>{let o=t(...r);return`\x1B[${38+e};2;${o[0]};${o[1]};${o[2]}m`},ES=t=>t,yX=(t,e,r)=>[t,e,r],ky=(t,e,r)=>{Object.defineProperty(t,e,{get:()=>{let o=r();return Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0}),o},enumerable:!0,configurable:!0})},cN,Fy=(t,e,r,o)=>{cN===void 0&&(cN=hX());let a=o?10:0,n={};for(let[u,A]of Object.entries(cN)){let p=u==="ansi16"?"ansi":u;u===e?n[p]=t(r,a):typeof A=="object"&&(n[p]=t(A[e],a))}return n};function F9e(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[r,o]of Object.entries(e)){for(let[a,n]of Object.entries(o))e[a]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},o[a]=e[a],t.set(n[0],n[1]);Object.defineProperty(e,r,{value:o,enumerable:!1})}return Object.defineProperty(e,"codes",{value:t,enumerable:!1}),e.color.close="\x1B[39m",e.bgColor.close="\x1B[49m",ky(e.color,"ansi",()=>Fy(gX,"ansi16",ES,!1)),ky(e.color,"ansi256",()=>Fy(dX,"ansi256",ES,!1)),ky(e.color,"ansi16m",()=>Fy(mX,"rgb",yX,!1)),ky(e.bgColor,"ansi",()=>Fy(gX,"ansi16",ES,!0)),ky(e.bgColor,"ansi256",()=>Fy(dX,"ansi256",ES,!0)),ky(e.bgColor,"ansi16m",()=>Fy(mX,"rgb",yX,!0)),e}Object.defineProperty(EX,"exports",{enumerable:!0,get:F9e})});var IX=U((ykt,CX)=>{"use strict";CX.exports=(t,e=process.argv)=>{let r=t.startsWith("-")?"":t.length===1?"-":"--",o=e.indexOf(r+t),a=e.indexOf("--");return o!==-1&&(a===-1||o<a)}});var fN=U((Ekt,BX)=>{"use strict";var R9e=Ie("os"),wX=Ie("tty"),Gl=IX(),{env:ls}=process,Vp;Gl("no-color")||Gl("no-colors")||Gl("color=false")||Gl("color=never")?Vp=0:(Gl("color")||Gl("colors")||Gl("color=true")||Gl("color=always"))&&(Vp=1);"FORCE_COLOR"in ls&&(ls.FORCE_COLOR==="true"?Vp=1:ls.FORCE_COLOR==="false"?Vp=0:Vp=ls.FORCE_COLOR.length===0?1:Math.min(parseInt(ls.FORCE_COLOR,10),3));function uN(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function AN(t,e){if(Vp===0)return 0;if(Gl("color=16m")||Gl("color=full")||Gl("color=truecolor"))return 3;if(Gl("color=256"))return 2;if(t&&!e&&Vp===void 0)return 0;let r=Vp||0;if(ls.TERM==="dumb")return r;if(process.platform==="win32"){let o=R9e.release().split(".");return Number(o[0])>=10&&Number(o[2])>=10586?Number(o[2])>=14931?3:2:1}if("CI"in ls)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(o=>o in ls)||ls.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in ls)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(ls.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in ls)return 1;if(ls.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in ls){let o=parseInt((ls.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(ls.TERM_PROGRAM){case"iTerm.app":return o>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(ls.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(ls.TERM)||"COLORTERM"in ls?1:r}function T9e(t){let e=AN(t,t&&t.isTTY);return uN(e)}BX.exports={supportsColor:T9e,stdout:uN(AN(!0,wX.isatty(1))),stderr:uN(AN(!0,wX.isatty(2)))}});var DX=U((Ckt,vX)=>{"use strict";var N9e=(t,e,r)=>{let o=t.indexOf(e);if(o===-1)return t;let a=e.length,n=0,u="";do u+=t.substr(n,o-n)+e+r,n=o+a,o=t.indexOf(e,n);while(o!==-1);return u+=t.substr(n),u},L9e=(t,e,r,o)=>{let a=0,n="";do{let u=t[o-1]==="\r";n+=t.substr(a,(u?o-1:o)-a)+e+(u?`\r |
129 | `:` | 129 | `:` |
130 | `)+r,a=o+1,o=t.indexOf(` | 130 | `)+r,a=o+1,o=t.indexOf(` |
131 | `,a)}while(o!==-1);return n+=t.substr(a),n};dX.exports={stringReplaceAll:C5e,stringEncaseCRLFWithFirstIndex:I5e}});var wX=U((rkt,IX)=>{"use strict";var w5e=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,yX=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,B5e=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,v5e=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi,D5e=new Map([["n",` | 131 | `,a)}while(o!==-1);return n+=t.substr(a),n};vX.exports={stringReplaceAll:N9e,stringEncaseCRLFWithFirstIndex:L9e}});var QX=U((Ikt,bX)=>{"use strict";var O9e=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,SX=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,M9e=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,U9e=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi,_9e=new Map([["n",` |
132 | `],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function CX(t){let e=t[0]==="u",r=t[1]==="{";return e&&!r&&t.length===5||t[0]==="x"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):D5e.get(t)||t}function S5e(t,e){let r=[],o=e.trim().split(/\s*,\s*/g),a;for(let n of o){let u=Number(n);if(!Number.isNaN(u))r.push(u);else if(a=n.match(B5e))r.push(a[2].replace(v5e,(A,p,h)=>p?CX(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function P5e(t){yX.lastIndex=0;let e=[],r;for(;(r=yX.exec(t))!==null;){let o=r[1];if(r[2]){let a=S5e(o,r[2]);e.push([o].concat(a))}else e.push([o])}return e}function EX(t,e){let r={};for(let a of e)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let o=t;for(let[a,n]of Object.entries(r))if(!!Array.isArray(n)){if(!(a in o))throw new Error(`Unknown Chalk style: ${a}`);o=n.length>0?o[a](...n):o[a]}return o}IX.exports=(t,e)=>{let r=[],o=[],a=[];if(e.replace(w5e,(n,u,A,p,h,C)=>{if(u)a.push(CX(u));else if(p){let w=a.join("");a=[],o.push(r.length===0?w:EX(t,r)(w)),r.push({inverse:A,styles:P5e(p)})}else if(h){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");o.push(EX(t,r)(a.join(""))),a=[],r.pop()}else a.push(C)}),o.push(a.join("")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(n)}return o.join("")}});var gN=U((nkt,SX)=>{"use strict";var fw=Aw(),{stdout:AN,stderr:fN}=cN(),{stringReplaceAll:x5e,stringEncaseCRLFWithFirstIndex:b5e}=mX(),BX=["ansi","ansi","ansi256","ansi16m"],xy=Object.create(null),Q5e=(t,e={})=>{if(e.level>3||e.level<0)throw new Error("The `level` option should be an integer from 0 to 3");let r=AN?AN.level:0;t.level=e.level===void 0?r:e.level},pN=class{constructor(e){return vX(e)}},vX=t=>{let e={};return Q5e(e,t),e.template=(...r)=>R5e(e.template,...r),Object.setPrototypeOf(e,AS.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=pN,e.template};function AS(t){return vX(t)}for(let[t,e]of Object.entries(fw))xy[t]={get(){let r=fS(this,hN(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};xy.visible={get(){let t=fS(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:t}),t}};var DX=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let t of DX)xy[t]={get(){let{level:e}=this;return function(...r){let o=hN(fw.color[BX[e]][t](...r),fw.color.close,this._styler);return fS(this,o,this._isEmpty)}}};for(let t of DX){let e="bg"+t[0].toUpperCase()+t.slice(1);xy[e]={get(){let{level:r}=this;return function(...o){let a=hN(fw.bgColor[BX[r]][t](...o),fw.bgColor.close,this._styler);return fS(this,a,this._isEmpty)}}}}var k5e=Object.defineProperties(()=>{},{...xy,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),hN=(t,e,r)=>{let o,a;return r===void 0?(o=t,a=e):(o=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:o,closeAll:a,parent:r}},fS=(t,e,r)=>{let o=(...a)=>F5e(o,a.length===1?""+a[0]:a.join(" "));return o.__proto__=k5e,o._generator=t,o._styler=e,o._isEmpty=r,o},F5e=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?"":e;let r=t._styler;if(r===void 0)return e;let{openAll:o,closeAll:a}=r;if(e.indexOf("\x1B")!==-1)for(;r!==void 0;)e=x5e(e,r.close,r.open),r=r.parent;let n=e.indexOf(` | 132 | `],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function xX(t){let e=t[0]==="u",r=t[1]==="{";return e&&!r&&t.length===5||t[0]==="x"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):_9e.get(t)||t}function H9e(t,e){let r=[],o=e.trim().split(/\s*,\s*/g),a;for(let n of o){let u=Number(n);if(!Number.isNaN(u))r.push(u);else if(a=n.match(M9e))r.push(a[2].replace(U9e,(A,p,h)=>p?xX(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function q9e(t){SX.lastIndex=0;let e=[],r;for(;(r=SX.exec(t))!==null;){let o=r[1];if(r[2]){let a=H9e(o,r[2]);e.push([o].concat(a))}else e.push([o])}return e}function PX(t,e){let r={};for(let a of e)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let o=t;for(let[a,n]of Object.entries(r))if(!!Array.isArray(n)){if(!(a in o))throw new Error(`Unknown Chalk style: ${a}`);o=n.length>0?o[a](...n):o[a]}return o}bX.exports=(t,e)=>{let r=[],o=[],a=[];if(e.replace(O9e,(n,u,A,p,h,C)=>{if(u)a.push(xX(u));else if(p){let w=a.join("");a=[],o.push(r.length===0?w:PX(t,r)(w)),r.push({inverse:A,styles:q9e(p)})}else if(h){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");o.push(PX(t,r)(a.join(""))),a=[],r.pop()}else a.push(C)}),o.push(a.join("")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(n)}return o.join("")}});var yN=U((wkt,TX)=>{"use strict";var mw=dw(),{stdout:hN,stderr:gN}=fN(),{stringReplaceAll:j9e,stringEncaseCRLFWithFirstIndex:G9e}=DX(),kX=["ansi","ansi","ansi256","ansi16m"],Ry=Object.create(null),W9e=(t,e={})=>{if(e.level>3||e.level<0)throw new Error("The `level` option should be an integer from 0 to 3");let r=hN?hN.level:0;t.level=e.level===void 0?r:e.level},dN=class{constructor(e){return FX(e)}},FX=t=>{let e={};return W9e(e,t),e.template=(...r)=>V9e(e.template,...r),Object.setPrototypeOf(e,CS.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=dN,e.template};function CS(t){return FX(t)}for(let[t,e]of Object.entries(mw))Ry[t]={get(){let r=IS(this,mN(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};Ry.visible={get(){let t=IS(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:t}),t}};var RX=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let t of RX)Ry[t]={get(){let{level:e}=this;return function(...r){let o=mN(mw.color[kX[e]][t](...r),mw.color.close,this._styler);return IS(this,o,this._isEmpty)}}};for(let t of RX){let e="bg"+t[0].toUpperCase()+t.slice(1);Ry[e]={get(){let{level:r}=this;return function(...o){let a=mN(mw.bgColor[kX[r]][t](...o),mw.bgColor.close,this._styler);return IS(this,a,this._isEmpty)}}}}var Y9e=Object.defineProperties(()=>{},{...Ry,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),mN=(t,e,r)=>{let o,a;return r===void 0?(o=t,a=e):(o=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:o,closeAll:a,parent:r}},IS=(t,e,r)=>{let o=(...a)=>K9e(o,a.length===1?""+a[0]:a.join(" "));return o.__proto__=Y9e,o._generator=t,o._styler=e,o._isEmpty=r,o},K9e=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?"":e;let r=t._styler;if(r===void 0)return e;let{openAll:o,closeAll:a}=r;if(e.indexOf("\x1B")!==-1)for(;r!==void 0;)e=j9e(e,r.close,r.open),r=r.parent;let n=e.indexOf(` |
133 | `);return n!==-1&&(e=b5e(e,a,o,n)),o+e+a},uN,R5e=(t,...e)=>{let[r]=e;if(!Array.isArray(r))return e.join(" ");let o=e.slice(1),a=[r.raw[0]];for(let n=1;n<r.length;n++)a.push(String(o[n-1]).replace(/[{}\\]/g,"\\$&"),String(r.raw[n]));return uN===void 0&&(uN=wX()),uN(t,a.join(""))};Object.defineProperties(AS.prototype,xy);var pw=AS();pw.supportsColor=AN;pw.stderr=AS({level:fN?fN.level:0});pw.stderr.supportsColor=fN;pw.Level={None:0,Basic:1,Ansi256:2,TrueColor:3,0:"None",1:"Basic",2:"Ansi256",3:"TrueColor"};SX.exports=pw});var pS=U(Hl=>{"use strict";Hl.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;Hl.find=(t,e)=>t.nodes.find(r=>r.type===e);Hl.exceedsLimit=(t,e,r=1,o)=>o===!1||!Hl.isInteger(t)||!Hl.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=o;Hl.escapeNode=(t,e=0,r)=>{let o=t.nodes[e];!o||(r&&o.type===r||o.type==="open"||o.type==="close")&&o.escaped!==!0&&(o.value="\\"+o.value,o.escaped=!0)};Hl.encloseBrace=t=>t.type!=="brace"?!1:t.commas>>0+t.ranges>>0===0?(t.invalid=!0,!0):!1;Hl.isInvalidBrace=t=>t.type!=="brace"?!1:t.invalid===!0||t.dollar?!0:t.commas>>0+t.ranges>>0===0||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;Hl.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;Hl.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);Hl.flatten=(...t)=>{let e=[],r=o=>{for(let a=0;a<o.length;a++){let n=o[a];Array.isArray(n)?r(n,e):n!==void 0&&e.push(n)}return e};return r(t),e}});var hS=U((skt,xX)=>{"use strict";var PX=pS();xX.exports=(t,e={})=>{let r=(o,a={})=>{let n=e.escapeInvalid&&PX.isInvalidBrace(a),u=o.invalid===!0&&e.escapeInvalid===!0,A="";if(o.value)return(n||u)&&PX.isOpenOrClose(o)?"\\"+o.value:o.value;if(o.value)return o.value;if(o.nodes)for(let p of o.nodes)A+=r(p);return A};return r(t)}});var QX=U((okt,bX)=>{"use strict";bX.exports=function(t){return typeof t=="number"?t-t===0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var UX=U((akt,MX)=>{"use strict";var kX=QX(),ad=(t,e,r)=>{if(kX(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(kX(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let o={relaxZeros:!0,...r};typeof o.strictZeros=="boolean"&&(o.relaxZeros=o.strictZeros===!1);let a=String(o.relaxZeros),n=String(o.shorthand),u=String(o.capture),A=String(o.wrap),p=t+":"+e+"="+a+n+u+A;if(ad.cache.hasOwnProperty(p))return ad.cache[p].result;let h=Math.min(t,e),C=Math.max(t,e);if(Math.abs(h-C)===1){let R=t+"|"+e;return o.capture?`(${R})`:o.wrap===!1?R:`(?:${R})`}let w=OX(t)||OX(e),v={min:t,max:e,a:h,b:C},b=[],E=[];if(w&&(v.isPadded=w,v.maxLen=String(v.max).length),h<0){let R=C<0?Math.abs(C):1;E=FX(R,Math.abs(h),v,o),h=v.a=0}return C>=0&&(b=FX(h,C,v,o)),v.negatives=E,v.positives=b,v.result=T5e(E,b,o),o.capture===!0?v.result=`(${v.result})`:o.wrap!==!1&&b.length+E.length>1&&(v.result=`(?:${v.result})`),ad.cache[p]=v,v.result};function T5e(t,e,r){let o=dN(t,e,"-",!1,r)||[],a=dN(e,t,"",!1,r)||[],n=dN(t,e,"-?",!0,r)||[];return o.concat(n).concat(a).join("|")}function N5e(t,e){let r=1,o=1,a=TX(t,r),n=new Set([e]);for(;t<=a&&a<=e;)n.add(a),r+=1,a=TX(t,r);for(a=NX(e+1,o)-1;t<a&&a<=e;)n.add(a),o+=1,a=NX(e+1,o)-1;return n=[...n],n.sort(M5e),n}function L5e(t,e,r){if(t===e)return{pattern:t,count:[],digits:0};let o=O5e(t,e),a=o.length,n="",u=0;for(let A=0;A<a;A++){let[p,h]=o[A];p===h?n+=p:p!=="0"||h!=="9"?n+=U5e(p,h,r):u++}return u&&(n+=r.shorthand===!0?"\\d":"[0-9]"),{pattern:n,count:[u],digits:a}}function FX(t,e,r,o){let a=N5e(t,e),n=[],u=t,A;for(let p=0;p<a.length;p++){let h=a[p],C=L5e(String(u),String(h),o),w="";if(!r.isPadded&&A&&A.pattern===C.pattern){A.count.length>1&&A.count.pop(),A.count.push(C.count[0]),A.string=A.pattern+LX(A.count),u=h+1;continue}r.isPadded&&(w=_5e(h,r,o)),C.string=w+C.pattern+LX(C.count),n.push(C),u=h+1,A=C}return n}function dN(t,e,r,o,a){let n=[];for(let u of t){let{string:A}=u;!o&&!RX(e,"string",A)&&n.push(r+A),o&&RX(e,"string",A)&&n.push(r+A)}return n}function O5e(t,e){let r=[];for(let o=0;o<t.length;o++)r.push([t[o],e[o]]);return r}function M5e(t,e){return t>e?1:e>t?-1:0}function RX(t,e,r){return t.some(o=>o[e]===r)}function TX(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function NX(t,e){return t-t%Math.pow(10,e)}function LX(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function U5e(t,e,r){return`[${t}${e-t===1?"":"-"}${e}]`}function OX(t){return/^-?(0+)\d/.test(t)}function _5e(t,e,r){if(!e.isPadded)return t;let o=Math.abs(e.maxLen-String(t).length),a=r.relaxZeros!==!1;switch(o){case 0:return"";case 1:return a?"0?":"0";case 2:return a?"0{0,2}":"00";default:return a?`0{0,${o}}`:`0{${o}}`}}ad.cache={};ad.clearCache=()=>ad.cache={};MX.exports=ad});var EN=U((lkt,KX)=>{"use strict";var H5e=Ie("util"),qX=UX(),_X=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),q5e=t=>e=>t===!0?Number(e):String(e),mN=t=>typeof t=="number"||typeof t=="string"&&t!=="",hw=t=>Number.isInteger(+t),yN=t=>{let e=`${t}`,r=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++r]==="0";);return r>0},j5e=(t,e,r)=>typeof t=="string"||typeof e=="string"?!0:r.stringify===!0,G5e=(t,e,r)=>{if(e>0){let o=t[0]==="-"?"-":"";o&&(t=t.slice(1)),t=o+t.padStart(o?e-1:e,"0")}return r===!1?String(t):t},HX=(t,e)=>{let r=t[0]==="-"?"-":"";for(r&&(t=t.slice(1),e--);t.length<e;)t="0"+t;return r?"-"+t:t},W5e=(t,e)=>{t.negatives.sort((u,A)=>u<A?-1:u>A?1:0),t.positives.sort((u,A)=>u<A?-1:u>A?1:0);let r=e.capture?"":"?:",o="",a="",n;return t.positives.length&&(o=t.positives.join("|")),t.negatives.length&&(a=`-(${r}${t.negatives.join("|")})`),o&&a?n=`${o}|${a}`:n=o||a,e.wrap?`(${r}${n})`:n},jX=(t,e,r,o)=>{if(r)return qX(t,e,{wrap:!1,...o});let a=String.fromCharCode(t);if(t===e)return a;let n=String.fromCharCode(e);return`[${a}-${n}]`},GX=(t,e,r)=>{if(Array.isArray(t)){let o=r.wrap===!0,a=r.capture?"":"?:";return o?`(${a}${t.join("|")})`:t.join("|")}return qX(t,e,r)},WX=(...t)=>new RangeError("Invalid range arguments: "+H5e.inspect(...t)),YX=(t,e,r)=>{if(r.strictRanges===!0)throw WX([t,e]);return[]},Y5e=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},K5e=(t,e,r=1,o={})=>{let a=Number(t),n=Number(e);if(!Number.isInteger(a)||!Number.isInteger(n)){if(o.strictRanges===!0)throw WX([t,e]);return[]}a===0&&(a=0),n===0&&(n=0);let u=a>n,A=String(t),p=String(e),h=String(r);r=Math.max(Math.abs(r),1);let C=yN(A)||yN(p)||yN(h),w=C?Math.max(A.length,p.length,h.length):0,v=C===!1&&j5e(t,e,o)===!1,b=o.transform||q5e(v);if(o.toRegex&&r===1)return jX(HX(t,w),HX(e,w),!0,o);let E={negatives:[],positives:[]},R=J=>E[J<0?"negatives":"positives"].push(Math.abs(J)),L=[],_=0;for(;u?a>=n:a<=n;)o.toRegex===!0&&r>1?R(a):L.push(G5e(b(a,_),w,v)),a=u?a-r:a+r,_++;return o.toRegex===!0?r>1?W5e(E,o):GX(L,null,{wrap:!1,...o}):L},J5e=(t,e,r=1,o={})=>{if(!hw(t)&&t.length>1||!hw(e)&&e.length>1)return YX(t,e,o);let a=o.transform||(v=>String.fromCharCode(v)),n=`${t}`.charCodeAt(0),u=`${e}`.charCodeAt(0),A=n>u,p=Math.min(n,u),h=Math.max(n,u);if(o.toRegex&&r===1)return jX(p,h,!1,o);let C=[],w=0;for(;A?n>=u:n<=u;)C.push(a(n,w)),n=A?n-r:n+r,w++;return o.toRegex===!0?GX(C,null,{wrap:!1,options:o}):C},gS=(t,e,r,o={})=>{if(e==null&&mN(t))return[t];if(!mN(t)||!mN(e))return YX(t,e,o);if(typeof r=="function")return gS(t,e,1,{transform:r});if(_X(r))return gS(t,e,0,r);let a={...o};return a.capture===!0&&(a.wrap=!0),r=r||a.step||1,hw(r)?hw(t)&&hw(e)?K5e(t,e,r,a):J5e(t,e,Math.max(Math.abs(r),1),a):r!=null&&!_X(r)?Y5e(r,a):gS(t,e,1,r)};KX.exports=gS});var zX=U((ckt,VX)=>{"use strict";var V5e=EN(),JX=pS(),z5e=(t,e={})=>{let r=(o,a={})=>{let n=JX.isInvalidBrace(a),u=o.invalid===!0&&e.escapeInvalid===!0,A=n===!0||u===!0,p=e.escapeInvalid===!0?"\\":"",h="";if(o.isOpen===!0||o.isClose===!0)return p+o.value;if(o.type==="open")return A?p+o.value:"(";if(o.type==="close")return A?p+o.value:")";if(o.type==="comma")return o.prev.type==="comma"?"":A?o.value:"|";if(o.value)return o.value;if(o.nodes&&o.ranges>0){let C=JX.reduce(o.nodes),w=V5e(...C,{...e,wrap:!1,toRegex:!0});if(w.length!==0)return C.length>1&&w.length>1?`(${w})`:w}if(o.nodes)for(let C of o.nodes)h+=r(C,o);return h};return r(t)};VX.exports=z5e});var $X=U((ukt,ZX)=>{"use strict";var X5e=EN(),XX=hS(),by=pS(),ld=(t="",e="",r=!1)=>{let o=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?by.flatten(e).map(a=>`{${a}}`):e;for(let a of t)if(Array.isArray(a))for(let n of a)o.push(ld(n,e,r));else for(let n of e)r===!0&&typeof n=="string"&&(n=`{${n}}`),o.push(Array.isArray(n)?ld(a,n,r):a+n);return by.flatten(o)},Z5e=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,o=(a,n={})=>{a.queue=[];let u=n,A=n.queue;for(;u.type!=="brace"&&u.type!=="root"&&u.parent;)u=u.parent,A=u.queue;if(a.invalid||a.dollar){A.push(ld(A.pop(),XX(a,e)));return}if(a.type==="brace"&&a.invalid!==!0&&a.nodes.length===2){A.push(ld(A.pop(),["{}"]));return}if(a.nodes&&a.ranges>0){let w=by.reduce(a.nodes);if(by.exceedsLimit(...w,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let v=X5e(...w,e);v.length===0&&(v=XX(a,e)),A.push(ld(A.pop(),v)),a.nodes=[];return}let p=by.encloseBrace(a),h=a.queue,C=a;for(;C.type!=="brace"&&C.type!=="root"&&C.parent;)C=C.parent,h=C.queue;for(let w=0;w<a.nodes.length;w++){let v=a.nodes[w];if(v.type==="comma"&&a.type==="brace"){w===1&&h.push(""),h.push("");continue}if(v.type==="close"){A.push(ld(A.pop(),h,p));continue}if(v.value&&v.type!=="open"){h.push(ld(h.pop(),v.value));continue}v.nodes&&o(v,a)}return h};return by.flatten(o(t))};ZX.exports=Z5e});var tZ=U((Akt,eZ)=>{"use strict";eZ.exports={MAX_LENGTH:1024*64,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:` | 133 | `);return n!==-1&&(e=G9e(e,a,o,n)),o+e+a},pN,V9e=(t,...e)=>{let[r]=e;if(!Array.isArray(r))return e.join(" ");let o=e.slice(1),a=[r.raw[0]];for(let n=1;n<r.length;n++)a.push(String(o[n-1]).replace(/[{}\\]/g,"\\$&"),String(r.raw[n]));return pN===void 0&&(pN=QX()),pN(t,a.join(""))};Object.defineProperties(CS.prototype,Ry);var yw=CS();yw.supportsColor=hN;yw.stderr=CS({level:gN?gN.level:0});yw.stderr.supportsColor=gN;yw.Level={None:0,Basic:1,Ansi256:2,TrueColor:3,0:"None",1:"Basic",2:"Ansi256",3:"TrueColor"};TX.exports=yw});var wS=U(Wl=>{"use strict";Wl.isInteger=t=>typeof t=="number"?Number.isInteger(t):typeof t=="string"&&t.trim()!==""?Number.isInteger(Number(t)):!1;Wl.find=(t,e)=>t.nodes.find(r=>r.type===e);Wl.exceedsLimit=(t,e,r=1,o)=>o===!1||!Wl.isInteger(t)||!Wl.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=o;Wl.escapeNode=(t,e=0,r)=>{let o=t.nodes[e];!o||(r&&o.type===r||o.type==="open"||o.type==="close")&&o.escaped!==!0&&(o.value="\\"+o.value,o.escaped=!0)};Wl.encloseBrace=t=>t.type!=="brace"?!1:t.commas>>0+t.ranges>>0===0?(t.invalid=!0,!0):!1;Wl.isInvalidBrace=t=>t.type!=="brace"?!1:t.invalid===!0||t.dollar?!0:t.commas>>0+t.ranges>>0===0||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;Wl.isOpenOrClose=t=>t.type==="open"||t.type==="close"?!0:t.open===!0||t.close===!0;Wl.reduce=t=>t.reduce((e,r)=>(r.type==="text"&&e.push(r.value),r.type==="range"&&(r.type="text"),e),[]);Wl.flatten=(...t)=>{let e=[],r=o=>{for(let a=0;a<o.length;a++){let n=o[a];Array.isArray(n)?r(n,e):n!==void 0&&e.push(n)}return e};return r(t),e}});var BS=U((vkt,LX)=>{"use strict";var NX=wS();LX.exports=(t,e={})=>{let r=(o,a={})=>{let n=e.escapeInvalid&&NX.isInvalidBrace(a),u=o.invalid===!0&&e.escapeInvalid===!0,A="";if(o.value)return(n||u)&&NX.isOpenOrClose(o)?"\\"+o.value:o.value;if(o.value)return o.value;if(o.nodes)for(let p of o.nodes)A+=r(p);return A};return r(t)}});var MX=U((Dkt,OX)=>{"use strict";OX.exports=function(t){return typeof t=="number"?t-t===0:typeof t=="string"&&t.trim()!==""?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var KX=U((Skt,YX)=>{"use strict";var UX=MX(),Ad=(t,e,r)=>{if(UX(t)===!1)throw new TypeError("toRegexRange: expected the first argument to be a number");if(e===void 0||t===e)return String(t);if(UX(e)===!1)throw new TypeError("toRegexRange: expected the second argument to be a number.");let o={relaxZeros:!0,...r};typeof o.strictZeros=="boolean"&&(o.relaxZeros=o.strictZeros===!1);let a=String(o.relaxZeros),n=String(o.shorthand),u=String(o.capture),A=String(o.wrap),p=t+":"+e+"="+a+n+u+A;if(Ad.cache.hasOwnProperty(p))return Ad.cache[p].result;let h=Math.min(t,e),C=Math.max(t,e);if(Math.abs(h-C)===1){let R=t+"|"+e;return o.capture?`(${R})`:o.wrap===!1?R:`(?:${R})`}let w=WX(t)||WX(e),v={min:t,max:e,a:h,b:C},b=[],E=[];if(w&&(v.isPadded=w,v.maxLen=String(v.max).length),h<0){let R=C<0?Math.abs(C):1;E=_X(R,Math.abs(h),v,o),h=v.a=0}return C>=0&&(b=_X(h,C,v,o)),v.negatives=E,v.positives=b,v.result=J9e(E,b,o),o.capture===!0?v.result=`(${v.result})`:o.wrap!==!1&&b.length+E.length>1&&(v.result=`(?:${v.result})`),Ad.cache[p]=v,v.result};function J9e(t,e,r){let o=EN(t,e,"-",!1,r)||[],a=EN(e,t,"",!1,r)||[],n=EN(t,e,"-?",!0,r)||[];return o.concat(n).concat(a).join("|")}function z9e(t,e){let r=1,o=1,a=qX(t,r),n=new Set([e]);for(;t<=a&&a<=e;)n.add(a),r+=1,a=qX(t,r);for(a=jX(e+1,o)-1;t<a&&a<=e;)n.add(a),o+=1,a=jX(e+1,o)-1;return n=[...n],n.sort($9e),n}function X9e(t,e,r){if(t===e)return{pattern:t,count:[],digits:0};let o=Z9e(t,e),a=o.length,n="",u=0;for(let A=0;A<a;A++){let[p,h]=o[A];p===h?n+=p:p!=="0"||h!=="9"?n+=e5e(p,h,r):u++}return u&&(n+=r.shorthand===!0?"\\d":"[0-9]"),{pattern:n,count:[u],digits:a}}function _X(t,e,r,o){let a=z9e(t,e),n=[],u=t,A;for(let p=0;p<a.length;p++){let h=a[p],C=X9e(String(u),String(h),o),w="";if(!r.isPadded&&A&&A.pattern===C.pattern){A.count.length>1&&A.count.pop(),A.count.push(C.count[0]),A.string=A.pattern+GX(A.count),u=h+1;continue}r.isPadded&&(w=t5e(h,r,o)),C.string=w+C.pattern+GX(C.count),n.push(C),u=h+1,A=C}return n}function EN(t,e,r,o,a){let n=[];for(let u of t){let{string:A}=u;!o&&!HX(e,"string",A)&&n.push(r+A),o&&HX(e,"string",A)&&n.push(r+A)}return n}function Z9e(t,e){let r=[];for(let o=0;o<t.length;o++)r.push([t[o],e[o]]);return r}function $9e(t,e){return t>e?1:e>t?-1:0}function HX(t,e,r){return t.some(o=>o[e]===r)}function qX(t,e){return Number(String(t).slice(0,-e)+"9".repeat(e))}function jX(t,e){return t-t%Math.pow(10,e)}function GX(t){let[e=0,r=""]=t;return r||e>1?`{${e+(r?","+r:"")}}`:""}function e5e(t,e,r){return`[${t}${e-t===1?"":"-"}${e}]`}function WX(t){return/^-?(0+)\d/.test(t)}function t5e(t,e,r){if(!e.isPadded)return t;let o=Math.abs(e.maxLen-String(t).length),a=r.relaxZeros!==!1;switch(o){case 0:return"";case 1:return a?"0?":"0";case 2:return a?"0{0,2}":"00";default:return a?`0{0,${o}}`:`0{${o}}`}}Ad.cache={};Ad.clearCache=()=>Ad.cache={};YX.exports=Ad});var wN=U((Pkt,tZ)=>{"use strict";var r5e=Ie("util"),zX=KX(),VX=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),n5e=t=>e=>t===!0?Number(e):String(e),CN=t=>typeof t=="number"||typeof t=="string"&&t!=="",Ew=t=>Number.isInteger(+t),IN=t=>{let e=`${t}`,r=-1;if(e[0]==="-"&&(e=e.slice(1)),e==="0")return!1;for(;e[++r]==="0";);return r>0},i5e=(t,e,r)=>typeof t=="string"||typeof e=="string"?!0:r.stringify===!0,s5e=(t,e,r)=>{if(e>0){let o=t[0]==="-"?"-":"";o&&(t=t.slice(1)),t=o+t.padStart(o?e-1:e,"0")}return r===!1?String(t):t},JX=(t,e)=>{let r=t[0]==="-"?"-":"";for(r&&(t=t.slice(1),e--);t.length<e;)t="0"+t;return r?"-"+t:t},o5e=(t,e)=>{t.negatives.sort((u,A)=>u<A?-1:u>A?1:0),t.positives.sort((u,A)=>u<A?-1:u>A?1:0);let r=e.capture?"":"?:",o="",a="",n;return t.positives.length&&(o=t.positives.join("|")),t.negatives.length&&(a=`-(${r}${t.negatives.join("|")})`),o&&a?n=`${o}|${a}`:n=o||a,e.wrap?`(${r}${n})`:n},XX=(t,e,r,o)=>{if(r)return zX(t,e,{wrap:!1,...o});let a=String.fromCharCode(t);if(t===e)return a;let n=String.fromCharCode(e);return`[${a}-${n}]`},ZX=(t,e,r)=>{if(Array.isArray(t)){let o=r.wrap===!0,a=r.capture?"":"?:";return o?`(${a}${t.join("|")})`:t.join("|")}return zX(t,e,r)},$X=(...t)=>new RangeError("Invalid range arguments: "+r5e.inspect(...t)),eZ=(t,e,r)=>{if(r.strictRanges===!0)throw $X([t,e]);return[]},a5e=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step "${t}" to be a number`);return[]},l5e=(t,e,r=1,o={})=>{let a=Number(t),n=Number(e);if(!Number.isInteger(a)||!Number.isInteger(n)){if(o.strictRanges===!0)throw $X([t,e]);return[]}a===0&&(a=0),n===0&&(n=0);let u=a>n,A=String(t),p=String(e),h=String(r);r=Math.max(Math.abs(r),1);let C=IN(A)||IN(p)||IN(h),w=C?Math.max(A.length,p.length,h.length):0,v=C===!1&&i5e(t,e,o)===!1,b=o.transform||n5e(v);if(o.toRegex&&r===1)return XX(JX(t,w),JX(e,w),!0,o);let E={negatives:[],positives:[]},R=V=>E[V<0?"negatives":"positives"].push(Math.abs(V)),L=[],_=0;for(;u?a>=n:a<=n;)o.toRegex===!0&&r>1?R(a):L.push(s5e(b(a,_),w,v)),a=u?a-r:a+r,_++;return o.toRegex===!0?r>1?o5e(E,o):ZX(L,null,{wrap:!1,...o}):L},c5e=(t,e,r=1,o={})=>{if(!Ew(t)&&t.length>1||!Ew(e)&&e.length>1)return eZ(t,e,o);let a=o.transform||(v=>String.fromCharCode(v)),n=`${t}`.charCodeAt(0),u=`${e}`.charCodeAt(0),A=n>u,p=Math.min(n,u),h=Math.max(n,u);if(o.toRegex&&r===1)return XX(p,h,!1,o);let C=[],w=0;for(;A?n>=u:n<=u;)C.push(a(n,w)),n=A?n-r:n+r,w++;return o.toRegex===!0?ZX(C,null,{wrap:!1,options:o}):C},vS=(t,e,r,o={})=>{if(e==null&&CN(t))return[t];if(!CN(t)||!CN(e))return eZ(t,e,o);if(typeof r=="function")return vS(t,e,1,{transform:r});if(VX(r))return vS(t,e,0,r);let a={...o};return a.capture===!0&&(a.wrap=!0),r=r||a.step||1,Ew(r)?Ew(t)&&Ew(e)?l5e(t,e,r,a):c5e(t,e,Math.max(Math.abs(r),1),a):r!=null&&!VX(r)?a5e(r,a):vS(t,e,1,r)};tZ.exports=vS});var iZ=U((xkt,nZ)=>{"use strict";var u5e=wN(),rZ=wS(),A5e=(t,e={})=>{let r=(o,a={})=>{let n=rZ.isInvalidBrace(a),u=o.invalid===!0&&e.escapeInvalid===!0,A=n===!0||u===!0,p=e.escapeInvalid===!0?"\\":"",h="";if(o.isOpen===!0||o.isClose===!0)return p+o.value;if(o.type==="open")return A?p+o.value:"(";if(o.type==="close")return A?p+o.value:")";if(o.type==="comma")return o.prev.type==="comma"?"":A?o.value:"|";if(o.value)return o.value;if(o.nodes&&o.ranges>0){let C=rZ.reduce(o.nodes),w=u5e(...C,{...e,wrap:!1,toRegex:!0});if(w.length!==0)return C.length>1&&w.length>1?`(${w})`:w}if(o.nodes)for(let C of o.nodes)h+=r(C,o);return h};return r(t)};nZ.exports=A5e});var aZ=U((bkt,oZ)=>{"use strict";var f5e=wN(),sZ=BS(),Ty=wS(),fd=(t="",e="",r=!1)=>{let o=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?Ty.flatten(e).map(a=>`{${a}}`):e;for(let a of t)if(Array.isArray(a))for(let n of a)o.push(fd(n,e,r));else for(let n of e)r===!0&&typeof n=="string"&&(n=`{${n}}`),o.push(Array.isArray(n)?fd(a,n,r):a+n);return Ty.flatten(o)},p5e=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,o=(a,n={})=>{a.queue=[];let u=n,A=n.queue;for(;u.type!=="brace"&&u.type!=="root"&&u.parent;)u=u.parent,A=u.queue;if(a.invalid||a.dollar){A.push(fd(A.pop(),sZ(a,e)));return}if(a.type==="brace"&&a.invalid!==!0&&a.nodes.length===2){A.push(fd(A.pop(),["{}"]));return}if(a.nodes&&a.ranges>0){let w=Ty.reduce(a.nodes);if(Ty.exceedsLimit(...w,e.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let v=f5e(...w,e);v.length===0&&(v=sZ(a,e)),A.push(fd(A.pop(),v)),a.nodes=[];return}let p=Ty.encloseBrace(a),h=a.queue,C=a;for(;C.type!=="brace"&&C.type!=="root"&&C.parent;)C=C.parent,h=C.queue;for(let w=0;w<a.nodes.length;w++){let v=a.nodes[w];if(v.type==="comma"&&a.type==="brace"){w===1&&h.push(""),h.push("");continue}if(v.type==="close"){A.push(fd(A.pop(),h,p));continue}if(v.value&&v.type!=="open"){h.push(fd(h.pop(),v.value));continue}v.nodes&&o(v,a)}return h};return Ty.flatten(o(t))};oZ.exports=p5e});var cZ=U((Qkt,lZ)=>{"use strict";lZ.exports={MAX_LENGTH:1024*64,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:` |
134 | `,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var oZ=U((fkt,sZ)=>{"use strict";var $5e=hS(),{MAX_LENGTH:rZ,CHAR_BACKSLASH:CN,CHAR_BACKTICK:eGe,CHAR_COMMA:tGe,CHAR_DOT:rGe,CHAR_LEFT_PARENTHESES:nGe,CHAR_RIGHT_PARENTHESES:iGe,CHAR_LEFT_CURLY_BRACE:sGe,CHAR_RIGHT_CURLY_BRACE:oGe,CHAR_LEFT_SQUARE_BRACKET:nZ,CHAR_RIGHT_SQUARE_BRACKET:iZ,CHAR_DOUBLE_QUOTE:aGe,CHAR_SINGLE_QUOTE:lGe,CHAR_NO_BREAK_SPACE:cGe,CHAR_ZERO_WIDTH_NOBREAK_SPACE:uGe}=tZ(),AGe=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},o=typeof r.maxLength=="number"?Math.min(rZ,r.maxLength):rZ;if(t.length>o)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${o})`);let a={type:"root",input:t,nodes:[]},n=[a],u=a,A=a,p=0,h=t.length,C=0,w=0,v,b={},E=()=>t[C++],R=L=>{if(L.type==="text"&&A.type==="dot"&&(A.type="text"),A&&A.type==="text"&&L.type==="text"){A.value+=L.value;return}return u.nodes.push(L),L.parent=u,L.prev=A,A=L,L};for(R({type:"bos"});C<h;)if(u=n[n.length-1],v=E(),!(v===uGe||v===cGe)){if(v===CN){R({type:"text",value:(e.keepEscaping?v:"")+E()});continue}if(v===iZ){R({type:"text",value:"\\"+v});continue}if(v===nZ){p++;let L=!0,_;for(;C<h&&(_=E());){if(v+=_,_===nZ){p++;continue}if(_===CN){v+=E();continue}if(_===iZ&&(p--,p===0))break}R({type:"text",value:v});continue}if(v===nGe){u=R({type:"paren",nodes:[]}),n.push(u),R({type:"text",value:v});continue}if(v===iGe){if(u.type!=="paren"){R({type:"text",value:v});continue}u=n.pop(),R({type:"text",value:v}),u=n[n.length-1];continue}if(v===aGe||v===lGe||v===eGe){let L=v,_;for(e.keepQuotes!==!0&&(v="");C<h&&(_=E());){if(_===CN){v+=_+E();continue}if(_===L){e.keepQuotes===!0&&(v+=_);break}v+=_}R({type:"text",value:v});continue}if(v===sGe){w++;let _={type:"brace",open:!0,close:!1,dollar:A.value&&A.value.slice(-1)==="$"||u.dollar===!0,depth:w,commas:0,ranges:0,nodes:[]};u=R(_),n.push(u),R({type:"open",value:v});continue}if(v===oGe){if(u.type!=="brace"){R({type:"text",value:v});continue}let L="close";u=n.pop(),u.close=!0,R({type:L,value:v}),w--,u=n[n.length-1];continue}if(v===tGe&&w>0){if(u.ranges>0){u.ranges=0;let L=u.nodes.shift();u.nodes=[L,{type:"text",value:$5e(u)}]}R({type:"comma",value:v}),u.commas++;continue}if(v===rGe&&w>0&&u.commas===0){let L=u.nodes;if(w===0||L.length===0){R({type:"text",value:v});continue}if(A.type==="dot"){if(u.range=[],A.value+=v,A.type="range",u.nodes.length!==3&&u.nodes.length!==5){u.invalid=!0,u.ranges=0,A.type="text";continue}u.ranges++,u.args=[];continue}if(A.type==="range"){L.pop();let _=L[L.length-1];_.value+=A.value+v,A=_,u.ranges--;continue}R({type:"dot",value:v});continue}R({type:"text",value:v})}do if(u=n.pop(),u.type!=="root"){u.nodes.forEach(J=>{J.nodes||(J.type==="open"&&(J.isOpen=!0),J.type==="close"&&(J.isClose=!0),J.nodes||(J.type="text"),J.invalid=!0)});let L=n[n.length-1],_=L.nodes.indexOf(u);L.nodes.splice(_,1,...u.nodes)}while(n.length>0);return R({type:"eos"}),a};sZ.exports=AGe});var cZ=U((pkt,lZ)=>{"use strict";var aZ=hS(),fGe=zX(),pGe=$X(),hGe=oZ(),rl=(t,e={})=>{let r=[];if(Array.isArray(t))for(let o of t){let a=rl.create(o,e);Array.isArray(a)?r.push(...a):r.push(a)}else r=[].concat(rl.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};rl.parse=(t,e={})=>hGe(t,e);rl.stringify=(t,e={})=>aZ(typeof t=="string"?rl.parse(t,e):t,e);rl.compile=(t,e={})=>(typeof t=="string"&&(t=rl.parse(t,e)),fGe(t,e));rl.expand=(t,e={})=>{typeof t=="string"&&(t=rl.parse(t,e));let r=pGe(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};rl.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?rl.compile(t,e):rl.expand(t,e);lZ.exports=rl});var gw=U((hkt,hZ)=>{"use strict";var gGe=Ie("path"),Ju="\\\\/",uZ=`[^${Ju}]`,wf="\\.",dGe="\\+",mGe="\\?",dS="\\/",yGe="(?=.)",AZ="[^/]",IN=`(?:${dS}|$)`,fZ=`(?:^|${dS})`,wN=`${wf}{1,2}${IN}`,EGe=`(?!${wf})`,CGe=`(?!${fZ}${wN})`,IGe=`(?!${wf}{0,1}${IN})`,wGe=`(?!${wN})`,BGe=`[^.${dS}]`,vGe=`${AZ}*?`,pZ={DOT_LITERAL:wf,PLUS_LITERAL:dGe,QMARK_LITERAL:mGe,SLASH_LITERAL:dS,ONE_CHAR:yGe,QMARK:AZ,END_ANCHOR:IN,DOTS_SLASH:wN,NO_DOT:EGe,NO_DOTS:CGe,NO_DOT_SLASH:IGe,NO_DOTS_SLASH:wGe,QMARK_NO_DOT:BGe,STAR:vGe,START_ANCHOR:fZ},DGe={...pZ,SLASH_LITERAL:`[${Ju}]`,QMARK:uZ,STAR:`${uZ}*?`,DOTS_SLASH:`${wf}{1,2}(?:[${Ju}]|$)`,NO_DOT:`(?!${wf})`,NO_DOTS:`(?!(?:^|[${Ju}])${wf}{1,2}(?:[${Ju}]|$))`,NO_DOT_SLASH:`(?!${wf}{0,1}(?:[${Ju}]|$))`,NO_DOTS_SLASH:`(?!${wf}{1,2}(?:[${Ju}]|$))`,QMARK_NO_DOT:`[^.${Ju}]`,START_ANCHOR:`(?:^|[${Ju}])`,END_ANCHOR:`(?:[${Ju}]|$)`},SGe={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};hZ.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:SGe,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:gGe.sep,extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(t){return t===!0?DGe:pZ}}});var dw=U(Da=>{"use strict";var PGe=Ie("path"),xGe=process.platform==="win32",{REGEX_BACKSLASH:bGe,REGEX_REMOVE_BACKSLASH:QGe,REGEX_SPECIAL_CHARS:kGe,REGEX_SPECIAL_CHARS_GLOBAL:FGe}=gw();Da.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);Da.hasRegexChars=t=>kGe.test(t);Da.isRegexChar=t=>t.length===1&&Da.hasRegexChars(t);Da.escapeRegex=t=>t.replace(FGe,"\\$1");Da.toPosixSlashes=t=>t.replace(bGe,"/");Da.removeBackslashes=t=>t.replace(QGe,e=>e==="\\"?"":e);Da.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};Da.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:xGe===!0||PGe.sep==="\\";Da.escapeLast=(t,e,r)=>{let o=t.lastIndexOf(e,r);return o===-1?t:t[o-1]==="\\"?Da.escapeLast(t,e,o-1):`${t.slice(0,o)}\\${t.slice(o)}`};Da.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};Da.wrapOutput=(t,e={},r={})=>{let o=r.contains?"":"^",a=r.contains?"":"$",n=`${o}(?:${t})${a}`;return e.negated===!0&&(n=`(?:^(?!${n}).*$)`),n}});var wZ=U((dkt,IZ)=>{"use strict";var gZ=dw(),{CHAR_ASTERISK:BN,CHAR_AT:RGe,CHAR_BACKWARD_SLASH:mw,CHAR_COMMA:TGe,CHAR_DOT:vN,CHAR_EXCLAMATION_MARK:DN,CHAR_FORWARD_SLASH:CZ,CHAR_LEFT_CURLY_BRACE:SN,CHAR_LEFT_PARENTHESES:PN,CHAR_LEFT_SQUARE_BRACKET:NGe,CHAR_PLUS:LGe,CHAR_QUESTION_MARK:dZ,CHAR_RIGHT_CURLY_BRACE:OGe,CHAR_RIGHT_PARENTHESES:mZ,CHAR_RIGHT_SQUARE_BRACKET:MGe}=gw(),yZ=t=>t===CZ||t===mw,EZ=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},UGe=(t,e)=>{let r=e||{},o=t.length-1,a=r.parts===!0||r.scanToEnd===!0,n=[],u=[],A=[],p=t,h=-1,C=0,w=0,v=!1,b=!1,E=!1,R=!1,L=!1,_=!1,J=!1,re=!1,oe=!1,pe=!1,he=0,ve,ge,le={value:"",depth:0,isGlob:!1},Pe=()=>h>=o,g=()=>p.charCodeAt(h+1),De=()=>(ve=ge,p.charCodeAt(++h));for(;h<o;){ge=De();let me;if(ge===mw){J=le.backslashes=!0,ge=De(),ge===SN&&(_=!0);continue}if(_===!0||ge===SN){for(he++;Pe()!==!0&&(ge=De());){if(ge===mw){J=le.backslashes=!0,De();continue}if(ge===SN){he++;continue}if(_!==!0&&ge===vN&&(ge=De())===vN){if(v=le.isBrace=!0,E=le.isGlob=!0,pe=!0,a===!0)continue;break}if(_!==!0&&ge===TGe){if(v=le.isBrace=!0,E=le.isGlob=!0,pe=!0,a===!0)continue;break}if(ge===OGe&&(he--,he===0)){_=!1,v=le.isBrace=!0,pe=!0;break}}if(a===!0)continue;break}if(ge===CZ){if(n.push(h),u.push(le),le={value:"",depth:0,isGlob:!1},pe===!0)continue;if(ve===vN&&h===C+1){C+=2;continue}w=h+1;continue}if(r.noext!==!0&&(ge===LGe||ge===RGe||ge===BN||ge===dZ||ge===DN)===!0&&g()===PN){if(E=le.isGlob=!0,R=le.isExtglob=!0,pe=!0,ge===DN&&h===C&&(oe=!0),a===!0){for(;Pe()!==!0&&(ge=De());){if(ge===mw){J=le.backslashes=!0,ge=De();continue}if(ge===mZ){E=le.isGlob=!0,pe=!0;break}}continue}break}if(ge===BN){if(ve===BN&&(L=le.isGlobstar=!0),E=le.isGlob=!0,pe=!0,a===!0)continue;break}if(ge===dZ){if(E=le.isGlob=!0,pe=!0,a===!0)continue;break}if(ge===NGe){for(;Pe()!==!0&&(me=De());){if(me===mw){J=le.backslashes=!0,De();continue}if(me===MGe){b=le.isBracket=!0,E=le.isGlob=!0,pe=!0;break}}if(a===!0)continue;break}if(r.nonegate!==!0&&ge===DN&&h===C){re=le.negated=!0,C++;continue}if(r.noparen!==!0&&ge===PN){if(E=le.isGlob=!0,a===!0){for(;Pe()!==!0&&(ge=De());){if(ge===PN){J=le.backslashes=!0,ge=De();continue}if(ge===mZ){pe=!0;break}}continue}break}if(E===!0){if(pe=!0,a===!0)continue;break}}r.noext===!0&&(R=!1,E=!1);let Ee=p,de="",ne="";C>0&&(de=p.slice(0,C),p=p.slice(C),w-=C),Ee&&E===!0&&w>0?(Ee=p.slice(0,w),ne=p.slice(w)):E===!0?(Ee="",ne=p):Ee=p,Ee&&Ee!==""&&Ee!=="/"&&Ee!==p&&yZ(Ee.charCodeAt(Ee.length-1))&&(Ee=Ee.slice(0,-1)),r.unescape===!0&&(ne&&(ne=gZ.removeBackslashes(ne)),Ee&&J===!0&&(Ee=gZ.removeBackslashes(Ee)));let Z={prefix:de,input:t,start:C,base:Ee,glob:ne,isBrace:v,isBracket:b,isGlob:E,isExtglob:R,isGlobstar:L,negated:re,negatedExtglob:oe};if(r.tokens===!0&&(Z.maxDepth=0,yZ(ge)||u.push(le),Z.tokens=u),r.parts===!0||r.tokens===!0){let me;for(let be=0;be<n.length;be++){let ut=me?me+1:C,H=n[be],yt=t.slice(ut,H);r.tokens&&(be===0&&C!==0?(u[be].isPrefix=!0,u[be].value=de):u[be].value=yt,EZ(u[be]),Z.maxDepth+=u[be].depth),(be!==0||yt!=="")&&A.push(yt),me=H}if(me&&me+1<t.length){let be=t.slice(me+1);A.push(be),r.tokens&&(u[u.length-1].value=be,EZ(u[u.length-1]),Z.maxDepth+=u[u.length-1].depth)}Z.slashes=n,Z.parts=A}return Z};IZ.exports=UGe});var DZ=U((mkt,vZ)=>{"use strict";var mS=gw(),nl=dw(),{MAX_LENGTH:yS,POSIX_REGEX_SOURCE:_Ge,REGEX_NON_SPECIAL_CHARS:HGe,REGEX_SPECIAL_CHARS_BACKREF:qGe,REPLACEMENTS:BZ}=mS,jGe=(t,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...t,e);t.sort();let r=`[${t.join("-")}]`;try{new RegExp(r)}catch{return t.map(a=>nl.escapeRegex(a)).join("..")}return r},Qy=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,xN=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=BZ[t]||t;let r={...e},o=typeof r.maxLength=="number"?Math.min(yS,r.maxLength):yS,a=t.length;if(a>o)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${o}`);let n={type:"bos",value:"",output:r.prepend||""},u=[n],A=r.capture?"":"?:",p=nl.isWindows(e),h=mS.globChars(p),C=mS.extglobChars(h),{DOT_LITERAL:w,PLUS_LITERAL:v,SLASH_LITERAL:b,ONE_CHAR:E,DOTS_SLASH:R,NO_DOT:L,NO_DOT_SLASH:_,NO_DOTS_SLASH:J,QMARK:re,QMARK_NO_DOT:oe,STAR:pe,START_ANCHOR:he}=h,ve=x=>`(${A}(?:(?!${he}${x.dot?R:w}).)*?)`,ge=r.dot?"":L,le=r.dot?re:oe,Pe=r.bash===!0?ve(r):pe;r.capture&&(Pe=`(${Pe})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let g={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:u};t=nl.removePrefix(t,g),a=t.length;let De=[],Ee=[],de=[],ne=n,Z,me=()=>g.index===a-1,be=g.peek=(x=1)=>t[g.index+x],ut=g.advance=()=>t[++g.index]||"",H=()=>t.slice(g.index+1),yt=(x="",I=0)=>{g.consumed+=x,g.index+=I},Me=x=>{g.output+=x.output!=null?x.output:x.value,yt(x.value)},Te=()=>{let x=1;for(;be()==="!"&&(be(2)!=="("||be(3)==="?");)ut(),g.start++,x++;return x%2===0?!1:(g.negated=!0,g.start++,!0)},Qe=x=>{g[x]++,de.push(x)},Ue=x=>{g[x]--,de.pop()},je=x=>{if(ne.type==="globstar"){let I=g.braces>0&&(x.type==="comma"||x.type==="brace"),P=x.extglob===!0||De.length&&(x.type==="pipe"||x.type==="paren");x.type!=="slash"&&x.type!=="paren"&&!I&&!P&&(g.output=g.output.slice(0,-ne.output.length),ne.type="star",ne.value="*",ne.output=Pe,g.output+=ne.output)}if(De.length&&x.type!=="paren"&&(De[De.length-1].inner+=x.value),(x.value||x.output)&&Me(x),ne&&ne.type==="text"&&x.type==="text"){ne.value+=x.value,ne.output=(ne.output||"")+x.value;return}x.prev=ne,u.push(x),ne=x},At=(x,I)=>{let P={...C[I],conditions:1,inner:""};P.prev=ne,P.parens=g.parens,P.output=g.output;let y=(r.capture?"(":"")+P.open;Qe("parens"),je({type:x,value:I,output:g.output?"":E}),je({type:"paren",extglob:!0,value:ut(),output:y}),De.push(P)},Le=x=>{let I=x.close+(r.capture?")":""),P;if(x.type==="negate"){let y=Pe;if(x.inner&&x.inner.length>1&&x.inner.includes("/")&&(y=ve(r)),(y!==Pe||me()||/^\)+$/.test(H()))&&(I=x.close=`)$))${y}`),x.inner.includes("*")&&(P=H())&&/^\.[^\\/.]+$/.test(P)){let F=xN(P,{...e,fastpaths:!1}).output;I=x.close=`)${F})${y})`}x.prev.type==="bos"&&(g.negatedExtglob=!0)}je({type:"paren",extglob:!0,value:Z,output:I}),Ue("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let x=!1,I=t.replace(qGe,(P,y,F,z,X,$)=>z==="\\"?(x=!0,P):z==="?"?y?y+z+(X?re.repeat(X.length):""):$===0?le+(X?re.repeat(X.length):""):re.repeat(F.length):z==="."?w.repeat(F.length):z==="*"?y?y+z+(X?Pe:""):Pe:y?P:`\\${P}`);return x===!0&&(r.unescape===!0?I=I.replace(/\\/g,""):I=I.replace(/\\+/g,P=>P.length%2===0?"\\\\":P?"\\":"")),I===t&&r.contains===!0?(g.output=t,g):(g.output=nl.wrapOutput(I,g,e),g)}for(;!me();){if(Z=ut(),Z==="\0")continue;if(Z==="\\"){let P=be();if(P==="/"&&r.bash!==!0||P==="."||P===";")continue;if(!P){Z+="\\",je({type:"text",value:Z});continue}let y=/^\\+/.exec(H()),F=0;if(y&&y[0].length>2&&(F=y[0].length,g.index+=F,F%2!==0&&(Z+="\\")),r.unescape===!0?Z=ut():Z+=ut(),g.brackets===0){je({type:"text",value:Z});continue}}if(g.brackets>0&&(Z!=="]"||ne.value==="["||ne.value==="[^")){if(r.posix!==!1&&Z===":"){let P=ne.value.slice(1);if(P.includes("[")&&(ne.posix=!0,P.includes(":"))){let y=ne.value.lastIndexOf("["),F=ne.value.slice(0,y),z=ne.value.slice(y+2),X=_Ge[z];if(X){ne.value=F+X,g.backtrack=!0,ut(),!n.output&&u.indexOf(ne)===1&&(n.output=E);continue}}}(Z==="["&&be()!==":"||Z==="-"&&be()==="]")&&(Z=`\\${Z}`),Z==="]"&&(ne.value==="["||ne.value==="[^")&&(Z=`\\${Z}`),r.posix===!0&&Z==="!"&&ne.value==="["&&(Z="^"),ne.value+=Z,Me({value:Z});continue}if(g.quotes===1&&Z!=='"'){Z=nl.escapeRegex(Z),ne.value+=Z,Me({value:Z});continue}if(Z==='"'){g.quotes=g.quotes===1?0:1,r.keepQuotes===!0&&je({type:"text",value:Z});continue}if(Z==="("){Qe("parens"),je({type:"paren",value:Z});continue}if(Z===")"){if(g.parens===0&&r.strictBrackets===!0)throw new SyntaxError(Qy("opening","("));let P=De[De.length-1];if(P&&g.parens===P.parens+1){Le(De.pop());continue}je({type:"paren",value:Z,output:g.parens?")":"\\)"}),Ue("parens");continue}if(Z==="["){if(r.nobracket===!0||!H().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(Qy("closing","]"));Z=`\\${Z}`}else Qe("brackets");je({type:"bracket",value:Z});continue}if(Z==="]"){if(r.nobracket===!0||ne&&ne.type==="bracket"&&ne.value.length===1){je({type:"text",value:Z,output:`\\${Z}`});continue}if(g.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(Qy("opening","["));je({type:"text",value:Z,output:`\\${Z}`});continue}Ue("brackets");let P=ne.value.slice(1);if(ne.posix!==!0&&P[0]==="^"&&!P.includes("/")&&(Z=`/${Z}`),ne.value+=Z,Me({value:Z}),r.literalBrackets===!1||nl.hasRegexChars(P))continue;let y=nl.escapeRegex(ne.value);if(g.output=g.output.slice(0,-ne.value.length),r.literalBrackets===!0){g.output+=y,ne.value=y;continue}ne.value=`(${A}${y}|${ne.value})`,g.output+=ne.value;continue}if(Z==="{"&&r.nobrace!==!0){Qe("braces");let P={type:"brace",value:Z,output:"(",outputIndex:g.output.length,tokensIndex:g.tokens.length};Ee.push(P),je(P);continue}if(Z==="}"){let P=Ee[Ee.length-1];if(r.nobrace===!0||!P){je({type:"text",value:Z,output:Z});continue}let y=")";if(P.dots===!0){let F=u.slice(),z=[];for(let X=F.length-1;X>=0&&(u.pop(),F[X].type!=="brace");X--)F[X].type!=="dots"&&z.unshift(F[X].value);y=jGe(z,r),g.backtrack=!0}if(P.comma!==!0&&P.dots!==!0){let F=g.output.slice(0,P.outputIndex),z=g.tokens.slice(P.tokensIndex);P.value=P.output="\\{",Z=y="\\}",g.output=F;for(let X of z)g.output+=X.output||X.value}je({type:"brace",value:Z,output:y}),Ue("braces"),Ee.pop();continue}if(Z==="|"){De.length>0&&De[De.length-1].conditions++,je({type:"text",value:Z});continue}if(Z===","){let P=Z,y=Ee[Ee.length-1];y&&de[de.length-1]==="braces"&&(y.comma=!0,P="|"),je({type:"comma",value:Z,output:P});continue}if(Z==="/"){if(ne.type==="dot"&&g.index===g.start+1){g.start=g.index+1,g.consumed="",g.output="",u.pop(),ne=n;continue}je({type:"slash",value:Z,output:b});continue}if(Z==="."){if(g.braces>0&&ne.type==="dot"){ne.value==="."&&(ne.output=w);let P=Ee[Ee.length-1];ne.type="dots",ne.output+=Z,ne.value+=Z,P.dots=!0;continue}if(g.braces+g.parens===0&&ne.type!=="bos"&&ne.type!=="slash"){je({type:"text",value:Z,output:w});continue}je({type:"dot",value:Z,output:w});continue}if(Z==="?"){if(!(ne&&ne.value==="(")&&r.noextglob!==!0&&be()==="("&&be(2)!=="?"){At("qmark",Z);continue}if(ne&&ne.type==="paren"){let y=be(),F=Z;if(y==="<"&&!nl.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(ne.value==="("&&!/[!=<:]/.test(y)||y==="<"&&!/<([!=]|\w+>)/.test(H()))&&(F=`\\${Z}`),je({type:"text",value:Z,output:F});continue}if(r.dot!==!0&&(ne.type==="slash"||ne.type==="bos")){je({type:"qmark",value:Z,output:oe});continue}je({type:"qmark",value:Z,output:re});continue}if(Z==="!"){if(r.noextglob!==!0&&be()==="("&&(be(2)!=="?"||!/[!=<:]/.test(be(3)))){At("negate",Z);continue}if(r.nonegate!==!0&&g.index===0){Te();continue}}if(Z==="+"){if(r.noextglob!==!0&&be()==="("&&be(2)!=="?"){At("plus",Z);continue}if(ne&&ne.value==="("||r.regex===!1){je({type:"plus",value:Z,output:v});continue}if(ne&&(ne.type==="bracket"||ne.type==="paren"||ne.type==="brace")||g.parens>0){je({type:"plus",value:Z});continue}je({type:"plus",value:v});continue}if(Z==="@"){if(r.noextglob!==!0&&be()==="("&&be(2)!=="?"){je({type:"at",extglob:!0,value:Z,output:""});continue}je({type:"text",value:Z});continue}if(Z!=="*"){(Z==="$"||Z==="^")&&(Z=`\\${Z}`);let P=HGe.exec(H());P&&(Z+=P[0],g.index+=P[0].length),je({type:"text",value:Z});continue}if(ne&&(ne.type==="globstar"||ne.star===!0)){ne.type="star",ne.star=!0,ne.value+=Z,ne.output=Pe,g.backtrack=!0,g.globstar=!0,yt(Z);continue}let x=H();if(r.noextglob!==!0&&/^\([^?]/.test(x)){At("star",Z);continue}if(ne.type==="star"){if(r.noglobstar===!0){yt(Z);continue}let P=ne.prev,y=P.prev,F=P.type==="slash"||P.type==="bos",z=y&&(y.type==="star"||y.type==="globstar");if(r.bash===!0&&(!F||x[0]&&x[0]!=="/")){je({type:"star",value:Z,output:""});continue}let X=g.braces>0&&(P.type==="comma"||P.type==="brace"),$=De.length&&(P.type==="pipe"||P.type==="paren");if(!F&&P.type!=="paren"&&!X&&!$){je({type:"star",value:Z,output:""});continue}for(;x.slice(0,3)==="/**";){let ie=t[g.index+4];if(ie&&ie!=="/")break;x=x.slice(3),yt("/**",3)}if(P.type==="bos"&&me()){ne.type="globstar",ne.value+=Z,ne.output=ve(r),g.output=ne.output,g.globstar=!0,yt(Z);continue}if(P.type==="slash"&&P.prev.type!=="bos"&&!z&&me()){g.output=g.output.slice(0,-(P.output+ne.output).length),P.output=`(?:${P.output}`,ne.type="globstar",ne.output=ve(r)+(r.strictSlashes?")":"|$)"),ne.value+=Z,g.globstar=!0,g.output+=P.output+ne.output,yt(Z);continue}if(P.type==="slash"&&P.prev.type!=="bos"&&x[0]==="/"){let ie=x[1]!==void 0?"|$":"";g.output=g.output.slice(0,-(P.output+ne.output).length),P.output=`(?:${P.output}`,ne.type="globstar",ne.output=`${ve(r)}${b}|${b}${ie})`,ne.value+=Z,g.output+=P.output+ne.output,g.globstar=!0,yt(Z+ut()),je({type:"slash",value:"/",output:""});continue}if(P.type==="bos"&&x[0]==="/"){ne.type="globstar",ne.value+=Z,ne.output=`(?:^|${b}|${ve(r)}${b})`,g.output=ne.output,g.globstar=!0,yt(Z+ut()),je({type:"slash",value:"/",output:""});continue}g.output=g.output.slice(0,-ne.output.length),ne.type="globstar",ne.output=ve(r),ne.value+=Z,g.output+=ne.output,g.globstar=!0,yt(Z);continue}let I={type:"star",value:Z,output:Pe};if(r.bash===!0){I.output=".*?",(ne.type==="bos"||ne.type==="slash")&&(I.output=ge+I.output),je(I);continue}if(ne&&(ne.type==="bracket"||ne.type==="paren")&&r.regex===!0){I.output=Z,je(I);continue}(g.index===g.start||ne.type==="slash"||ne.type==="dot")&&(ne.type==="dot"?(g.output+=_,ne.output+=_):r.dot===!0?(g.output+=J,ne.output+=J):(g.output+=ge,ne.output+=ge),be()!=="*"&&(g.output+=E,ne.output+=E)),je(I)}for(;g.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(Qy("closing","]"));g.output=nl.escapeLast(g.output,"["),Ue("brackets")}for(;g.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(Qy("closing",")"));g.output=nl.escapeLast(g.output,"("),Ue("parens")}for(;g.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(Qy("closing","}"));g.output=nl.escapeLast(g.output,"{"),Ue("braces")}if(r.strictSlashes!==!0&&(ne.type==="star"||ne.type==="bracket")&&je({type:"maybe_slash",value:"",output:`${b}?`}),g.backtrack===!0){g.output="";for(let x of g.tokens)g.output+=x.output!=null?x.output:x.value,x.suffix&&(g.output+=x.suffix)}return g};xN.fastpaths=(t,e)=>{let r={...e},o=typeof r.maxLength=="number"?Math.min(yS,r.maxLength):yS,a=t.length;if(a>o)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${o}`);t=BZ[t]||t;let n=nl.isWindows(e),{DOT_LITERAL:u,SLASH_LITERAL:A,ONE_CHAR:p,DOTS_SLASH:h,NO_DOT:C,NO_DOTS:w,NO_DOTS_SLASH:v,STAR:b,START_ANCHOR:E}=mS.globChars(n),R=r.dot?w:C,L=r.dot?v:C,_=r.capture?"":"?:",J={negated:!1,prefix:""},re=r.bash===!0?".*?":b;r.capture&&(re=`(${re})`);let oe=ge=>ge.noglobstar===!0?re:`(${_}(?:(?!${E}${ge.dot?h:u}).)*?)`,pe=ge=>{switch(ge){case"*":return`${R}${p}${re}`;case".*":return`${u}${p}${re}`;case"*.*":return`${R}${re}${u}${p}${re}`;case"*/*":return`${R}${re}${A}${p}${L}${re}`;case"**":return R+oe(r);case"**/*":return`(?:${R}${oe(r)}${A})?${L}${p}${re}`;case"**/*.*":return`(?:${R}${oe(r)}${A})?${L}${re}${u}${p}${re}`;case"**/.*":return`(?:${R}${oe(r)}${A})?${u}${p}${re}`;default:{let le=/^(.*?)\.(\w+)$/.exec(ge);if(!le)return;let Pe=pe(le[1]);return Pe?Pe+u+le[2]:void 0}}},he=nl.removePrefix(t,J),ve=pe(he);return ve&&r.strictSlashes!==!0&&(ve+=`${A}?`),ve};vZ.exports=xN});var PZ=U((ykt,SZ)=>{"use strict";var GGe=Ie("path"),WGe=wZ(),bN=DZ(),QN=dw(),YGe=gw(),KGe=t=>t&&typeof t=="object"&&!Array.isArray(t),Oi=(t,e,r=!1)=>{if(Array.isArray(t)){let C=t.map(v=>Oi(v,e,r));return v=>{for(let b of C){let E=b(v);if(E)return E}return!1}}let o=KGe(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!o)throw new TypeError("Expected pattern to be a non-empty string");let a=e||{},n=QN.isWindows(e),u=o?Oi.compileRe(t,e):Oi.makeRe(t,e,!1,!0),A=u.state;delete u.state;let p=()=>!1;if(a.ignore){let C={...e,ignore:null,onMatch:null,onResult:null};p=Oi(a.ignore,C,r)}let h=(C,w=!1)=>{let{isMatch:v,match:b,output:E}=Oi.test(C,u,e,{glob:t,posix:n}),R={glob:t,state:A,regex:u,posix:n,input:C,output:E,match:b,isMatch:v};return typeof a.onResult=="function"&&a.onResult(R),v===!1?(R.isMatch=!1,w?R:!1):p(C)?(typeof a.onIgnore=="function"&&a.onIgnore(R),R.isMatch=!1,w?R:!1):(typeof a.onMatch=="function"&&a.onMatch(R),w?R:!0)};return r&&(h.state=A),h};Oi.test=(t,e,r,{glob:o,posix:a}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};let n=r||{},u=n.format||(a?QN.toPosixSlashes:null),A=t===o,p=A&&u?u(t):t;return A===!1&&(p=u?u(t):t,A=p===o),(A===!1||n.capture===!0)&&(n.matchBase===!0||n.basename===!0?A=Oi.matchBase(t,e,r,a):A=e.exec(p)),{isMatch:Boolean(A),match:A,output:p}};Oi.matchBase=(t,e,r,o=QN.isWindows(r))=>(e instanceof RegExp?e:Oi.makeRe(e,r)).test(GGe.basename(t));Oi.isMatch=(t,e,r)=>Oi(e,r)(t);Oi.parse=(t,e)=>Array.isArray(t)?t.map(r=>Oi.parse(r,e)):bN(t,{...e,fastpaths:!1});Oi.scan=(t,e)=>WGe(t,e);Oi.compileRe=(t,e,r=!1,o=!1)=>{if(r===!0)return t.output;let a=e||{},n=a.contains?"":"^",u=a.contains?"":"$",A=`${n}(?:${t.output})${u}`;t&&t.negated===!0&&(A=`^(?!${A}).*$`);let p=Oi.toRegex(A,e);return o===!0&&(p.state=t),p};Oi.makeRe=(t,e={},r=!1,o=!1)=>{if(!t||typeof t!="string")throw new TypeError("Expected a non-empty string");let a={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(t[0]==="."||t[0]==="*")&&(a.output=bN.fastpaths(t,e)),a.output||(a=bN(t,e)),Oi.compileRe(a,e,r,o)};Oi.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};Oi.constants=YGe;SZ.exports=Oi});var bZ=U((Ekt,xZ)=>{"use strict";xZ.exports=PZ()});var Jo=U((Ckt,RZ)=>{"use strict";var kZ=Ie("util"),FZ=cZ(),Vu=bZ(),kN=dw(),QZ=t=>t===""||t==="./",hi=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let o=new Set,a=new Set,n=new Set,u=0,A=C=>{n.add(C.output),r&&r.onResult&&r.onResult(C)};for(let C=0;C<e.length;C++){let w=Vu(String(e[C]),{...r,onResult:A},!0),v=w.state.negated||w.state.negatedExtglob;v&&u++;for(let b of t){let E=w(b,!0);!(v?!E.isMatch:E.isMatch)||(v?o.add(E.output):(o.delete(E.output),a.add(E.output)))}}let h=(u===e.length?[...n]:[...a]).filter(C=>!o.has(C));if(r&&h.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(C=>C.replace(/\\/g,"")):e}return h};hi.match=hi;hi.matcher=(t,e)=>Vu(t,e);hi.isMatch=(t,e,r)=>Vu(e,r)(t);hi.any=hi.isMatch;hi.not=(t,e,r={})=>{e=[].concat(e).map(String);let o=new Set,a=[],n=A=>{r.onResult&&r.onResult(A),a.push(A.output)},u=new Set(hi(t,e,{...r,onResult:n}));for(let A of a)u.has(A)||o.add(A);return[...o]};hi.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${kZ.inspect(t)}"`);if(Array.isArray(e))return e.some(o=>hi.contains(t,o,r));if(typeof e=="string"){if(QZ(t)||QZ(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return hi.isMatch(t,e,{...r,contains:!0})};hi.matchKeys=(t,e,r)=>{if(!kN.isObject(t))throw new TypeError("Expected the first argument to be an object");let o=hi(Object.keys(t),e,r),a={};for(let n of o)a[n]=t[n];return a};hi.some=(t,e,r)=>{let o=[].concat(t);for(let a of[].concat(e)){let n=Vu(String(a),r);if(o.some(u=>n(u)))return!0}return!1};hi.every=(t,e,r)=>{let o=[].concat(t);for(let a of[].concat(e)){let n=Vu(String(a),r);if(!o.every(u=>n(u)))return!1}return!0};hi.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${kZ.inspect(t)}"`);return[].concat(e).every(o=>Vu(o,r)(t))};hi.capture=(t,e,r)=>{let o=kN.isWindows(r),n=Vu.makeRe(String(t),{...r,capture:!0}).exec(o?kN.toPosixSlashes(e):e);if(n)return n.slice(1).map(u=>u===void 0?"":u)};hi.makeRe=(...t)=>Vu.makeRe(...t);hi.scan=(...t)=>Vu.scan(...t);hi.parse=(t,e)=>{let r=[];for(let o of[].concat(t||[]))for(let a of FZ(String(o),e))r.push(Vu.parse(a,e));return r};hi.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!/\{.*\}/.test(t)?[t]:FZ(t,e)};hi.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return hi.braces(t,{...e,expand:!0})};RZ.exports=hi});var NZ=U((Ikt,TZ)=>{"use strict";TZ.exports=({onlyFirst:t=!1}={})=>{let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,t?void 0:"g")}});var ES=U((wkt,LZ)=>{"use strict";var JGe=NZ();LZ.exports=t=>typeof t=="string"?t.replace(JGe(),""):t});var MZ=U((Bkt,OZ)=>{function VGe(){this.__data__=[],this.size=0}OZ.exports=VGe});var ky=U((vkt,UZ)=>{function zGe(t,e){return t===e||t!==t&&e!==e}UZ.exports=zGe});var yw=U((Dkt,_Z)=>{var XGe=ky();function ZGe(t,e){for(var r=t.length;r--;)if(XGe(t[r][0],e))return r;return-1}_Z.exports=ZGe});var qZ=U((Skt,HZ)=>{var $Ge=yw(),e7e=Array.prototype,t7e=e7e.splice;function r7e(t){var e=this.__data__,r=$Ge(e,t);if(r<0)return!1;var o=e.length-1;return r==o?e.pop():t7e.call(e,r,1),--this.size,!0}HZ.exports=r7e});var GZ=U((Pkt,jZ)=>{var n7e=yw();function i7e(t){var e=this.__data__,r=n7e(e,t);return r<0?void 0:e[r][1]}jZ.exports=i7e});var YZ=U((xkt,WZ)=>{var s7e=yw();function o7e(t){return s7e(this.__data__,t)>-1}WZ.exports=o7e});var JZ=U((bkt,KZ)=>{var a7e=yw();function l7e(t,e){var r=this.__data__,o=a7e(r,t);return o<0?(++this.size,r.push([t,e])):r[o][1]=e,this}KZ.exports=l7e});var Ew=U((Qkt,VZ)=>{var c7e=MZ(),u7e=qZ(),A7e=GZ(),f7e=YZ(),p7e=JZ();function Fy(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}Fy.prototype.clear=c7e;Fy.prototype.delete=u7e;Fy.prototype.get=A7e;Fy.prototype.has=f7e;Fy.prototype.set=p7e;VZ.exports=Fy});var XZ=U((kkt,zZ)=>{var h7e=Ew();function g7e(){this.__data__=new h7e,this.size=0}zZ.exports=g7e});var $Z=U((Fkt,ZZ)=>{function d7e(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}ZZ.exports=d7e});var t$=U((Rkt,e$)=>{function m7e(t){return this.__data__.get(t)}e$.exports=m7e});var n$=U((Tkt,r$)=>{function y7e(t){return this.__data__.has(t)}r$.exports=y7e});var FN=U((Nkt,i$)=>{var E7e=typeof global=="object"&&global&&global.Object===Object&&global;i$.exports=E7e});var ql=U((Lkt,s$)=>{var C7e=FN(),I7e=typeof self=="object"&&self&&self.Object===Object&&self,w7e=C7e||I7e||Function("return this")();s$.exports=w7e});var cd=U((Okt,o$)=>{var B7e=ql(),v7e=B7e.Symbol;o$.exports=v7e});var u$=U((Mkt,c$)=>{var a$=cd(),l$=Object.prototype,D7e=l$.hasOwnProperty,S7e=l$.toString,Cw=a$?a$.toStringTag:void 0;function P7e(t){var e=D7e.call(t,Cw),r=t[Cw];try{t[Cw]=void 0;var o=!0}catch{}var a=S7e.call(t);return o&&(e?t[Cw]=r:delete t[Cw]),a}c$.exports=P7e});var f$=U((Ukt,A$)=>{var x7e=Object.prototype,b7e=x7e.toString;function Q7e(t){return b7e.call(t)}A$.exports=Q7e});var ud=U((_kt,g$)=>{var p$=cd(),k7e=u$(),F7e=f$(),R7e="[object Null]",T7e="[object Undefined]",h$=p$?p$.toStringTag:void 0;function N7e(t){return t==null?t===void 0?T7e:R7e:h$&&h$ in Object(t)?k7e(t):F7e(t)}g$.exports=N7e});var il=U((Hkt,d$)=>{function L7e(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}d$.exports=L7e});var CS=U((qkt,m$)=>{var O7e=ud(),M7e=il(),U7e="[object AsyncFunction]",_7e="[object Function]",H7e="[object GeneratorFunction]",q7e="[object Proxy]";function j7e(t){if(!M7e(t))return!1;var e=O7e(t);return e==_7e||e==H7e||e==U7e||e==q7e}m$.exports=j7e});var E$=U((jkt,y$)=>{var G7e=ql(),W7e=G7e["__core-js_shared__"];y$.exports=W7e});var w$=U((Gkt,I$)=>{var RN=E$(),C$=function(){var t=/[^.]+$/.exec(RN&&RN.keys&&RN.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function Y7e(t){return!!C$&&C$ in t}I$.exports=Y7e});var TN=U((Wkt,B$)=>{var K7e=Function.prototype,J7e=K7e.toString;function V7e(t){if(t!=null){try{return J7e.call(t)}catch{}try{return t+""}catch{}}return""}B$.exports=V7e});var D$=U((Ykt,v$)=>{var z7e=CS(),X7e=w$(),Z7e=il(),$7e=TN(),eWe=/[\\^$.*+?()[\]{}|]/g,tWe=/^\[object .+?Constructor\]$/,rWe=Function.prototype,nWe=Object.prototype,iWe=rWe.toString,sWe=nWe.hasOwnProperty,oWe=RegExp("^"+iWe.call(sWe).replace(eWe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function aWe(t){if(!Z7e(t)||X7e(t))return!1;var e=z7e(t)?oWe:tWe;return e.test($7e(t))}v$.exports=aWe});var P$=U((Kkt,S$)=>{function lWe(t,e){return t==null?void 0:t[e]}S$.exports=lWe});var Yp=U((Jkt,x$)=>{var cWe=D$(),uWe=P$();function AWe(t,e){var r=uWe(t,e);return cWe(r)?r:void 0}x$.exports=AWe});var IS=U((Vkt,b$)=>{var fWe=Yp(),pWe=ql(),hWe=fWe(pWe,"Map");b$.exports=hWe});var Iw=U((zkt,Q$)=>{var gWe=Yp(),dWe=gWe(Object,"create");Q$.exports=dWe});var R$=U((Xkt,F$)=>{var k$=Iw();function mWe(){this.__data__=k$?k$(null):{},this.size=0}F$.exports=mWe});var N$=U((Zkt,T$)=>{function yWe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}T$.exports=yWe});var O$=U(($kt,L$)=>{var EWe=Iw(),CWe="__lodash_hash_undefined__",IWe=Object.prototype,wWe=IWe.hasOwnProperty;function BWe(t){var e=this.__data__;if(EWe){var r=e[t];return r===CWe?void 0:r}return wWe.call(e,t)?e[t]:void 0}L$.exports=BWe});var U$=U((eFt,M$)=>{var vWe=Iw(),DWe=Object.prototype,SWe=DWe.hasOwnProperty;function PWe(t){var e=this.__data__;return vWe?e[t]!==void 0:SWe.call(e,t)}M$.exports=PWe});var H$=U((tFt,_$)=>{var xWe=Iw(),bWe="__lodash_hash_undefined__";function QWe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=xWe&&e===void 0?bWe:e,this}_$.exports=QWe});var j$=U((rFt,q$)=>{var kWe=R$(),FWe=N$(),RWe=O$(),TWe=U$(),NWe=H$();function Ry(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}Ry.prototype.clear=kWe;Ry.prototype.delete=FWe;Ry.prototype.get=RWe;Ry.prototype.has=TWe;Ry.prototype.set=NWe;q$.exports=Ry});var Y$=U((nFt,W$)=>{var G$=j$(),LWe=Ew(),OWe=IS();function MWe(){this.size=0,this.__data__={hash:new G$,map:new(OWe||LWe),string:new G$}}W$.exports=MWe});var J$=U((iFt,K$)=>{function UWe(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}K$.exports=UWe});var ww=U((sFt,V$)=>{var _We=J$();function HWe(t,e){var r=t.__data__;return _We(e)?r[typeof e=="string"?"string":"hash"]:r.map}V$.exports=HWe});var X$=U((oFt,z$)=>{var qWe=ww();function jWe(t){var e=qWe(this,t).delete(t);return this.size-=e?1:0,e}z$.exports=jWe});var $$=U((aFt,Z$)=>{var GWe=ww();function WWe(t){return GWe(this,t).get(t)}Z$.exports=WWe});var tee=U((lFt,eee)=>{var YWe=ww();function KWe(t){return YWe(this,t).has(t)}eee.exports=KWe});var nee=U((cFt,ree)=>{var JWe=ww();function VWe(t,e){var r=JWe(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this}ree.exports=VWe});var wS=U((uFt,iee)=>{var zWe=Y$(),XWe=X$(),ZWe=$$(),$We=tee(),eYe=nee();function Ty(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}Ty.prototype.clear=zWe;Ty.prototype.delete=XWe;Ty.prototype.get=ZWe;Ty.prototype.has=$We;Ty.prototype.set=eYe;iee.exports=Ty});var oee=U((AFt,see)=>{var tYe=Ew(),rYe=IS(),nYe=wS(),iYe=200;function sYe(t,e){var r=this.__data__;if(r instanceof tYe){var o=r.__data__;if(!rYe||o.length<iYe-1)return o.push([t,e]),this.size=++r.size,this;r=this.__data__=new nYe(o)}return r.set(t,e),this.size=r.size,this}see.exports=sYe});var BS=U((fFt,aee)=>{var oYe=Ew(),aYe=XZ(),lYe=$Z(),cYe=t$(),uYe=n$(),AYe=oee();function Ny(t){var e=this.__data__=new oYe(t);this.size=e.size}Ny.prototype.clear=aYe;Ny.prototype.delete=lYe;Ny.prototype.get=cYe;Ny.prototype.has=uYe;Ny.prototype.set=AYe;aee.exports=Ny});var cee=U((pFt,lee)=>{var fYe="__lodash_hash_undefined__";function pYe(t){return this.__data__.set(t,fYe),this}lee.exports=pYe});var Aee=U((hFt,uee)=>{function hYe(t){return this.__data__.has(t)}uee.exports=hYe});var pee=U((gFt,fee)=>{var gYe=wS(),dYe=cee(),mYe=Aee();function vS(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new gYe;++e<r;)this.add(t[e])}vS.prototype.add=vS.prototype.push=dYe;vS.prototype.has=mYe;fee.exports=vS});var gee=U((dFt,hee)=>{function yYe(t,e){for(var r=-1,o=t==null?0:t.length;++r<o;)if(e(t[r],r,t))return!0;return!1}hee.exports=yYe});var mee=U((mFt,dee)=>{function EYe(t,e){return t.has(e)}dee.exports=EYe});var NN=U((yFt,yee)=>{var CYe=pee(),IYe=gee(),wYe=mee(),BYe=1,vYe=2;function DYe(t,e,r,o,a,n){var u=r&BYe,A=t.length,p=e.length;if(A!=p&&!(u&&p>A))return!1;var h=n.get(t),C=n.get(e);if(h&&C)return h==e&&C==t;var w=-1,v=!0,b=r&vYe?new CYe:void 0;for(n.set(t,e),n.set(e,t);++w<A;){var E=t[w],R=e[w];if(o)var L=u?o(R,E,w,e,t,n):o(E,R,w,t,e,n);if(L!==void 0){if(L)continue;v=!1;break}if(b){if(!IYe(e,function(_,J){if(!wYe(b,J)&&(E===_||a(E,_,r,o,n)))return b.push(J)})){v=!1;break}}else if(!(E===R||a(E,R,r,o,n))){v=!1;break}}return n.delete(t),n.delete(e),v}yee.exports=DYe});var LN=U((EFt,Eee)=>{var SYe=ql(),PYe=SYe.Uint8Array;Eee.exports=PYe});var Iee=U((CFt,Cee)=>{function xYe(t){var e=-1,r=Array(t.size);return t.forEach(function(o,a){r[++e]=[a,o]}),r}Cee.exports=xYe});var Bee=U((IFt,wee)=>{function bYe(t){var e=-1,r=Array(t.size);return t.forEach(function(o){r[++e]=o}),r}wee.exports=bYe});var xee=U((wFt,Pee)=>{var vee=cd(),Dee=LN(),QYe=ky(),kYe=NN(),FYe=Iee(),RYe=Bee(),TYe=1,NYe=2,LYe="[object Boolean]",OYe="[object Date]",MYe="[object Error]",UYe="[object Map]",_Ye="[object Number]",HYe="[object RegExp]",qYe="[object Set]",jYe="[object String]",GYe="[object Symbol]",WYe="[object ArrayBuffer]",YYe="[object DataView]",See=vee?vee.prototype:void 0,ON=See?See.valueOf:void 0;function KYe(t,e,r,o,a,n,u){switch(r){case YYe:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case WYe:return!(t.byteLength!=e.byteLength||!n(new Dee(t),new Dee(e)));case LYe:case OYe:case _Ye:return QYe(+t,+e);case MYe:return t.name==e.name&&t.message==e.message;case HYe:case jYe:return t==e+"";case UYe:var A=FYe;case qYe:var p=o&TYe;if(A||(A=RYe),t.size!=e.size&&!p)return!1;var h=u.get(t);if(h)return h==e;o|=NYe,u.set(t,e);var C=kYe(A(t),A(e),o,a,n,u);return u.delete(t),C;case GYe:if(ON)return ON.call(t)==ON.call(e)}return!1}Pee.exports=KYe});var DS=U((BFt,bee)=>{function JYe(t,e){for(var r=-1,o=e.length,a=t.length;++r<o;)t[a+r]=e[r];return t}bee.exports=JYe});var jl=U((vFt,Qee)=>{var VYe=Array.isArray;Qee.exports=VYe});var MN=U((DFt,kee)=>{var zYe=DS(),XYe=jl();function ZYe(t,e,r){var o=e(t);return XYe(t)?o:zYe(o,r(t))}kee.exports=ZYe});var Ree=U((SFt,Fee)=>{function $Ye(t,e){for(var r=-1,o=t==null?0:t.length,a=0,n=[];++r<o;){var u=t[r];e(u,r,t)&&(n[a++]=u)}return n}Fee.exports=$Ye});var UN=U((PFt,Tee)=>{function eKe(){return[]}Tee.exports=eKe});var SS=U((xFt,Lee)=>{var tKe=Ree(),rKe=UN(),nKe=Object.prototype,iKe=nKe.propertyIsEnumerable,Nee=Object.getOwnPropertySymbols,sKe=Nee?function(t){return t==null?[]:(t=Object(t),tKe(Nee(t),function(e){return iKe.call(t,e)}))}:rKe;Lee.exports=sKe});var Mee=U((bFt,Oee)=>{function oKe(t,e){for(var r=-1,o=Array(t);++r<t;)o[r]=e(r);return o}Oee.exports=oKe});var zu=U((QFt,Uee)=>{function aKe(t){return t!=null&&typeof t=="object"}Uee.exports=aKe});var Hee=U((kFt,_ee)=>{var lKe=ud(),cKe=zu(),uKe="[object Arguments]";function AKe(t){return cKe(t)&&lKe(t)==uKe}_ee.exports=AKe});var Bw=U((FFt,Gee)=>{var qee=Hee(),fKe=zu(),jee=Object.prototype,pKe=jee.hasOwnProperty,hKe=jee.propertyIsEnumerable,gKe=qee(function(){return arguments}())?qee:function(t){return fKe(t)&&pKe.call(t,"callee")&&!hKe.call(t,"callee")};Gee.exports=gKe});var Yee=U((RFt,Wee)=>{function dKe(){return!1}Wee.exports=dKe});var Dw=U((vw,Ly)=>{var mKe=ql(),yKe=Yee(),Vee=typeof vw=="object"&&vw&&!vw.nodeType&&vw,Kee=Vee&&typeof Ly=="object"&&Ly&&!Ly.nodeType&&Ly,EKe=Kee&&Kee.exports===Vee,Jee=EKe?mKe.Buffer:void 0,CKe=Jee?Jee.isBuffer:void 0,IKe=CKe||yKe;Ly.exports=IKe});var Sw=U((TFt,zee)=>{var wKe=9007199254740991,BKe=/^(?:0|[1-9]\d*)$/;function vKe(t,e){var r=typeof t;return e=e??wKe,!!e&&(r=="number"||r!="symbol"&&BKe.test(t))&&t>-1&&t%1==0&&t<e}zee.exports=vKe});var PS=U((NFt,Xee)=>{var DKe=9007199254740991;function SKe(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=DKe}Xee.exports=SKe});var $ee=U((LFt,Zee)=>{var PKe=ud(),xKe=PS(),bKe=zu(),QKe="[object Arguments]",kKe="[object Array]",FKe="[object Boolean]",RKe="[object Date]",TKe="[object Error]",NKe="[object Function]",LKe="[object Map]",OKe="[object Number]",MKe="[object Object]",UKe="[object RegExp]",_Ke="[object Set]",HKe="[object String]",qKe="[object WeakMap]",jKe="[object ArrayBuffer]",GKe="[object DataView]",WKe="[object Float32Array]",YKe="[object Float64Array]",KKe="[object Int8Array]",JKe="[object Int16Array]",VKe="[object Int32Array]",zKe="[object Uint8Array]",XKe="[object Uint8ClampedArray]",ZKe="[object Uint16Array]",$Ke="[object Uint32Array]",si={};si[WKe]=si[YKe]=si[KKe]=si[JKe]=si[VKe]=si[zKe]=si[XKe]=si[ZKe]=si[$Ke]=!0;si[QKe]=si[kKe]=si[jKe]=si[FKe]=si[GKe]=si[RKe]=si[TKe]=si[NKe]=si[LKe]=si[OKe]=si[MKe]=si[UKe]=si[_Ke]=si[HKe]=si[qKe]=!1;function eJe(t){return bKe(t)&&xKe(t.length)&&!!si[PKe(t)]}Zee.exports=eJe});var xS=U((OFt,ete)=>{function tJe(t){return function(e){return t(e)}}ete.exports=tJe});var bS=U((Pw,Oy)=>{var rJe=FN(),tte=typeof Pw=="object"&&Pw&&!Pw.nodeType&&Pw,xw=tte&&typeof Oy=="object"&&Oy&&!Oy.nodeType&&Oy,nJe=xw&&xw.exports===tte,_N=nJe&&rJe.process,iJe=function(){try{var t=xw&&xw.require&&xw.require("util").types;return t||_N&&_N.binding&&_N.binding("util")}catch{}}();Oy.exports=iJe});var QS=U((MFt,ite)=>{var sJe=$ee(),oJe=xS(),rte=bS(),nte=rte&&rte.isTypedArray,aJe=nte?oJe(nte):sJe;ite.exports=aJe});var HN=U((UFt,ste)=>{var lJe=Mee(),cJe=Bw(),uJe=jl(),AJe=Dw(),fJe=Sw(),pJe=QS(),hJe=Object.prototype,gJe=hJe.hasOwnProperty;function dJe(t,e){var r=uJe(t),o=!r&&cJe(t),a=!r&&!o&&AJe(t),n=!r&&!o&&!a&&pJe(t),u=r||o||a||n,A=u?lJe(t.length,String):[],p=A.length;for(var h in t)(e||gJe.call(t,h))&&!(u&&(h=="length"||a&&(h=="offset"||h=="parent")||n&&(h=="buffer"||h=="byteLength"||h=="byteOffset")||fJe(h,p)))&&A.push(h);return A}ste.exports=dJe});var kS=U((_Ft,ote)=>{var mJe=Object.prototype;function yJe(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||mJe;return t===r}ote.exports=yJe});var qN=U((HFt,ate)=>{function EJe(t,e){return function(r){return t(e(r))}}ate.exports=EJe});var cte=U((qFt,lte)=>{var CJe=qN(),IJe=CJe(Object.keys,Object);lte.exports=IJe});var Ate=U((jFt,ute)=>{var wJe=kS(),BJe=cte(),vJe=Object.prototype,DJe=vJe.hasOwnProperty;function SJe(t){if(!wJe(t))return BJe(t);var e=[];for(var r in Object(t))DJe.call(t,r)&&r!="constructor"&&e.push(r);return e}ute.exports=SJe});var bw=U((GFt,fte)=>{var PJe=CS(),xJe=PS();function bJe(t){return t!=null&&xJe(t.length)&&!PJe(t)}fte.exports=bJe});var RS=U((WFt,pte)=>{var QJe=HN(),kJe=Ate(),FJe=bw();function RJe(t){return FJe(t)?QJe(t):kJe(t)}pte.exports=RJe});var jN=U((YFt,hte)=>{var TJe=MN(),NJe=SS(),LJe=RS();function OJe(t){return TJe(t,LJe,NJe)}hte.exports=OJe});var mte=U((KFt,dte)=>{var gte=jN(),MJe=1,UJe=Object.prototype,_Je=UJe.hasOwnProperty;function HJe(t,e,r,o,a,n){var u=r&MJe,A=gte(t),p=A.length,h=gte(e),C=h.length;if(p!=C&&!u)return!1;for(var w=p;w--;){var v=A[w];if(!(u?v in e:_Je.call(e,v)))return!1}var b=n.get(t),E=n.get(e);if(b&&E)return b==e&&E==t;var R=!0;n.set(t,e),n.set(e,t);for(var L=u;++w<p;){v=A[w];var _=t[v],J=e[v];if(o)var re=u?o(J,_,v,e,t,n):o(_,J,v,t,e,n);if(!(re===void 0?_===J||a(_,J,r,o,n):re)){R=!1;break}L||(L=v=="constructor")}if(R&&!L){var oe=t.constructor,pe=e.constructor;oe!=pe&&"constructor"in t&&"constructor"in e&&!(typeof oe=="function"&&oe instanceof oe&&typeof pe=="function"&&pe instanceof pe)&&(R=!1)}return n.delete(t),n.delete(e),R}dte.exports=HJe});var Ete=U((JFt,yte)=>{var qJe=Yp(),jJe=ql(),GJe=qJe(jJe,"DataView");yte.exports=GJe});var Ite=U((VFt,Cte)=>{var WJe=Yp(),YJe=ql(),KJe=WJe(YJe,"Promise");Cte.exports=KJe});var Bte=U((zFt,wte)=>{var JJe=Yp(),VJe=ql(),zJe=JJe(VJe,"Set");wte.exports=zJe});var Dte=U((XFt,vte)=>{var XJe=Yp(),ZJe=ql(),$Je=XJe(ZJe,"WeakMap");vte.exports=$Je});var Qw=U((ZFt,Fte)=>{var GN=Ete(),WN=IS(),YN=Ite(),KN=Bte(),JN=Dte(),kte=ud(),My=TN(),Ste="[object Map]",eVe="[object Object]",Pte="[object Promise]",xte="[object Set]",bte="[object WeakMap]",Qte="[object DataView]",tVe=My(GN),rVe=My(WN),nVe=My(YN),iVe=My(KN),sVe=My(JN),Ad=kte;(GN&&Ad(new GN(new ArrayBuffer(1)))!=Qte||WN&&Ad(new WN)!=Ste||YN&&Ad(YN.resolve())!=Pte||KN&&Ad(new KN)!=xte||JN&&Ad(new JN)!=bte)&&(Ad=function(t){var e=kte(t),r=e==eVe?t.constructor:void 0,o=r?My(r):"";if(o)switch(o){case tVe:return Qte;case rVe:return Ste;case nVe:return Pte;case iVe:return xte;case sVe:return bte}return e});Fte.exports=Ad});var _te=U(($Ft,Ute)=>{var VN=BS(),oVe=NN(),aVe=xee(),lVe=mte(),Rte=Qw(),Tte=jl(),Nte=Dw(),cVe=QS(),uVe=1,Lte="[object Arguments]",Ote="[object Array]",TS="[object Object]",AVe=Object.prototype,Mte=AVe.hasOwnProperty;function fVe(t,e,r,o,a,n){var u=Tte(t),A=Tte(e),p=u?Ote:Rte(t),h=A?Ote:Rte(e);p=p==Lte?TS:p,h=h==Lte?TS:h;var C=p==TS,w=h==TS,v=p==h;if(v&&Nte(t)){if(!Nte(e))return!1;u=!0,C=!1}if(v&&!C)return n||(n=new VN),u||cVe(t)?oVe(t,e,r,o,a,n):aVe(t,e,p,r,o,a,n);if(!(r&uVe)){var b=C&&Mte.call(t,"__wrapped__"),E=w&&Mte.call(e,"__wrapped__");if(b||E){var R=b?t.value():t,L=E?e.value():e;return n||(n=new VN),a(R,L,r,o,n)}}return v?(n||(n=new VN),lVe(t,e,r,o,a,n)):!1}Ute.exports=fVe});var Gte=U((eRt,jte)=>{var pVe=_te(),Hte=zu();function qte(t,e,r,o,a){return t===e?!0:t==null||e==null||!Hte(t)&&!Hte(e)?t!==t&&e!==e:pVe(t,e,r,o,qte,a)}jte.exports=qte});var Yte=U((tRt,Wte)=>{var hVe=Gte();function gVe(t,e){return hVe(t,e)}Wte.exports=gVe});var zN=U((rRt,Kte)=>{var dVe=Yp(),mVe=function(){try{var t=dVe(Object,"defineProperty");return t({},"",{}),t}catch{}}();Kte.exports=mVe});var NS=U((nRt,Vte)=>{var Jte=zN();function yVe(t,e,r){e=="__proto__"&&Jte?Jte(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}Vte.exports=yVe});var XN=U((iRt,zte)=>{var EVe=NS(),CVe=ky();function IVe(t,e,r){(r!==void 0&&!CVe(t[e],r)||r===void 0&&!(e in t))&&EVe(t,e,r)}zte.exports=IVe});var Zte=U((sRt,Xte)=>{function wVe(t){return function(e,r,o){for(var a=-1,n=Object(e),u=o(e),A=u.length;A--;){var p=u[t?A:++a];if(r(n[p],p,n)===!1)break}return e}}Xte.exports=wVe});var ere=U((oRt,$te)=>{var BVe=Zte(),vVe=BVe();$te.exports=vVe});var ZN=U((kw,Uy)=>{var DVe=ql(),ire=typeof kw=="object"&&kw&&!kw.nodeType&&kw,tre=ire&&typeof Uy=="object"&&Uy&&!Uy.nodeType&&Uy,SVe=tre&&tre.exports===ire,rre=SVe?DVe.Buffer:void 0,nre=rre?rre.allocUnsafe:void 0;function PVe(t,e){if(e)return t.slice();var r=t.length,o=nre?nre(r):new t.constructor(r);return t.copy(o),o}Uy.exports=PVe});var LS=U((aRt,ore)=>{var sre=LN();function xVe(t){var e=new t.constructor(t.byteLength);return new sre(e).set(new sre(t)),e}ore.exports=xVe});var $N=U((lRt,are)=>{var bVe=LS();function QVe(t,e){var r=e?bVe(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}are.exports=QVe});var OS=U((cRt,lre)=>{function kVe(t,e){var r=-1,o=t.length;for(e||(e=Array(o));++r<o;)e[r]=t[r];return e}lre.exports=kVe});var Are=U((uRt,ure)=>{var FVe=il(),cre=Object.create,RVe=function(){function t(){}return function(e){if(!FVe(e))return{};if(cre)return cre(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();ure.exports=RVe});var MS=U((ARt,fre)=>{var TVe=qN(),NVe=TVe(Object.getPrototypeOf,Object);fre.exports=NVe});var eL=U((fRt,pre)=>{var LVe=Are(),OVe=MS(),MVe=kS();function UVe(t){return typeof t.constructor=="function"&&!MVe(t)?LVe(OVe(t)):{}}pre.exports=UVe});var gre=U((pRt,hre)=>{var _Ve=bw(),HVe=zu();function qVe(t){return HVe(t)&&_Ve(t)}hre.exports=qVe});var tL=U((hRt,mre)=>{var jVe=ud(),GVe=MS(),WVe=zu(),YVe="[object Object]",KVe=Function.prototype,JVe=Object.prototype,dre=KVe.toString,VVe=JVe.hasOwnProperty,zVe=dre.call(Object);function XVe(t){if(!WVe(t)||jVe(t)!=YVe)return!1;var e=GVe(t);if(e===null)return!0;var r=VVe.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&dre.call(r)==zVe}mre.exports=XVe});var rL=U((gRt,yre)=>{function ZVe(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}yre.exports=ZVe});var US=U((dRt,Ere)=>{var $Ve=NS(),eze=ky(),tze=Object.prototype,rze=tze.hasOwnProperty;function nze(t,e,r){var o=t[e];(!(rze.call(t,e)&&eze(o,r))||r===void 0&&!(e in t))&&$Ve(t,e,r)}Ere.exports=nze});var fd=U((mRt,Cre)=>{var ize=US(),sze=NS();function oze(t,e,r,o){var a=!r;r||(r={});for(var n=-1,u=e.length;++n<u;){var A=e[n],p=o?o(r[A],t[A],A,r,t):void 0;p===void 0&&(p=t[A]),a?sze(r,A,p):ize(r,A,p)}return r}Cre.exports=oze});var wre=U((yRt,Ire)=>{function aze(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}Ire.exports=aze});var vre=U((ERt,Bre)=>{var lze=il(),cze=kS(),uze=wre(),Aze=Object.prototype,fze=Aze.hasOwnProperty;function pze(t){if(!lze(t))return uze(t);var e=cze(t),r=[];for(var o in t)o=="constructor"&&(e||!fze.call(t,o))||r.push(o);return r}Bre.exports=pze});var _y=U((CRt,Dre)=>{var hze=HN(),gze=vre(),dze=bw();function mze(t){return dze(t)?hze(t,!0):gze(t)}Dre.exports=mze});var Pre=U((IRt,Sre)=>{var yze=fd(),Eze=_y();function Cze(t){return yze(t,Eze(t))}Sre.exports=Cze});var Rre=U((wRt,Fre)=>{var xre=XN(),Ize=ZN(),wze=$N(),Bze=OS(),vze=eL(),bre=Bw(),Qre=jl(),Dze=gre(),Sze=Dw(),Pze=CS(),xze=il(),bze=tL(),Qze=QS(),kre=rL(),kze=Pre();function Fze(t,e,r,o,a,n,u){var A=kre(t,r),p=kre(e,r),h=u.get(p);if(h){xre(t,r,h);return}var C=n?n(A,p,r+"",t,e,u):void 0,w=C===void 0;if(w){var v=Qre(p),b=!v&&Sze(p),E=!v&&!b&&Qze(p);C=p,v||b||E?Qre(A)?C=A:Dze(A)?C=Bze(A):b?(w=!1,C=Ize(p,!0)):E?(w=!1,C=wze(p,!0)):C=[]:bze(p)||bre(p)?(C=A,bre(A)?C=kze(A):(!xze(A)||Pze(A))&&(C=vze(p))):w=!1}w&&(u.set(p,C),a(C,p,o,n,u),u.delete(p)),xre(t,r,C)}Fre.exports=Fze});var Lre=U((BRt,Nre)=>{var Rze=BS(),Tze=XN(),Nze=ere(),Lze=Rre(),Oze=il(),Mze=_y(),Uze=rL();function Tre(t,e,r,o,a){t!==e&&Nze(e,function(n,u){if(a||(a=new Rze),Oze(n))Lze(t,e,u,r,Tre,o,a);else{var A=o?o(Uze(t,u),n,u+"",t,e,a):void 0;A===void 0&&(A=n),Tze(t,u,A)}},Mze)}Nre.exports=Tre});var nL=U((vRt,Ore)=>{function _ze(t){return t}Ore.exports=_ze});var Ure=U((DRt,Mre)=>{function Hze(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}Mre.exports=Hze});var iL=U((SRt,Hre)=>{var qze=Ure(),_re=Math.max;function jze(t,e,r){return e=_re(e===void 0?t.length-1:e,0),function(){for(var o=arguments,a=-1,n=_re(o.length-e,0),u=Array(n);++a<n;)u[a]=o[e+a];a=-1;for(var A=Array(e+1);++a<e;)A[a]=o[a];return A[e]=r(u),qze(t,this,A)}}Hre.exports=jze});var jre=U((PRt,qre)=>{function Gze(t){return function(){return t}}qre.exports=Gze});var Yre=U((xRt,Wre)=>{var Wze=jre(),Gre=zN(),Yze=nL(),Kze=Gre?function(t,e){return Gre(t,"toString",{configurable:!0,enumerable:!1,value:Wze(e),writable:!0})}:Yze;Wre.exports=Kze});var Jre=U((bRt,Kre)=>{var Jze=800,Vze=16,zze=Date.now;function Xze(t){var e=0,r=0;return function(){var o=zze(),a=Vze-(o-r);if(r=o,a>0){if(++e>=Jze)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}Kre.exports=Xze});var sL=U((QRt,Vre)=>{var Zze=Yre(),$ze=Jre(),eXe=$ze(Zze);Vre.exports=eXe});var Xre=U((kRt,zre)=>{var tXe=nL(),rXe=iL(),nXe=sL();function iXe(t,e){return nXe(rXe(t,e,tXe),t+"")}zre.exports=iXe});var $re=U((FRt,Zre)=>{var sXe=ky(),oXe=bw(),aXe=Sw(),lXe=il();function cXe(t,e,r){if(!lXe(r))return!1;var o=typeof e;return(o=="number"?oXe(r)&&aXe(e,r.length):o=="string"&&e in r)?sXe(r[e],t):!1}Zre.exports=cXe});var tne=U((RRt,ene)=>{var uXe=Xre(),AXe=$re();function fXe(t){return uXe(function(e,r){var o=-1,a=r.length,n=a>1?r[a-1]:void 0,u=a>2?r[2]:void 0;for(n=t.length>3&&typeof n=="function"?(a--,n):void 0,u&&AXe(r[0],r[1],u)&&(n=a<3?void 0:n,a=1),e=Object(e);++o<a;){var A=r[o];A&&t(e,A,o,n)}return e})}ene.exports=fXe});var nne=U((TRt,rne)=>{var pXe=Lre(),hXe=tne(),gXe=hXe(function(t,e,r,o){pXe(t,e,r,o)});rne.exports=gXe});var Ye={};Yt(Ye,{AsyncActions:()=>lL,BufferStream:()=>aL,CachingStrategy:()=>gne,DefaultStream:()=>cL,allSettledSafe:()=>_c,assertNever:()=>AL,bufferStream:()=>Gy,buildIgnorePattern:()=>wXe,convertMapsToIndexableObjects:()=>_S,dynamicRequire:()=>Kp,escapeRegExp:()=>mXe,getArrayWithDefault:()=>Hy,getFactoryWithDefault:()=>Bf,getMapWithDefault:()=>qy,getSetWithDefault:()=>pd,isIndexableObject:()=>oL,isPathLike:()=>BXe,isTaggedYarnVersion:()=>dXe,makeDeferred:()=>fne,mapAndFilter:()=>Xu,mapAndFind:()=>Rw,mergeIntoTarget:()=>mne,overrideType:()=>yXe,parseBoolean:()=>Tw,parseOptionalBoolean:()=>dne,prettifyAsyncErrors:()=>jy,prettifySyncErrors:()=>fL,releaseAfterUseAsync:()=>CXe,replaceEnvVariables:()=>pL,sortMap:()=>Sa,toMerged:()=>vXe,tryParseOptionalBoolean:()=>hL,validateEnum:()=>EXe});function dXe(t){return!!(cne.default.valid(t)&&t.match(/^[^-]+(-rc\.[0-9]+)?$/))}function mXe(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function yXe(t){}function AL(t){throw new Error(`Assertion failed: Unexpected object '${t}'`)}function EXe(t,e){let r=Object.values(t);if(!r.includes(e))throw new ot(`Invalid value for enumeration: ${JSON.stringify(e)} (expected one of ${r.map(o=>JSON.stringify(o)).join(", ")})`);return e}function Xu(t,e){let r=[];for(let o of t){let a=e(o);a!==une&&r.push(a)}return r}function Rw(t,e){for(let r of t){let o=e(r);if(o!==Ane)return o}}function oL(t){return typeof t=="object"&&t!==null}async function _c(t){let e=await Promise.allSettled(t),r=[];for(let o of e){if(o.status==="rejected")throw o.reason;r.push(o.value)}return r}function _S(t){if(t instanceof Map&&(t=Object.fromEntries(t)),oL(t))for(let e of Object.keys(t)){let r=t[e];oL(r)&&(t[e]=_S(r))}return t}function Bf(t,e,r){let o=t.get(e);return typeof o>"u"&&t.set(e,o=r()),o}function Hy(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=[]),r}function pd(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=new Set),r}function qy(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=new Map),r}async function CXe(t,e){if(e==null)return await t();try{return await t()}finally{await e()}}async function jy(t,e){try{return await t()}catch(r){throw r.message=e(r.message),r}}function fL(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}async function Gy(t){return await new Promise((e,r)=>{let o=[];t.on("error",a=>{r(a)}),t.on("data",a=>{o.push(a)}),t.on("end",()=>{e(Buffer.concat(o))})})}function fne(){let t,e;return{promise:new Promise((o,a)=>{t=o,e=a}),resolve:t,reject:e}}function pne(t){return Fw(Ae.fromPortablePath(t))}function hne(path){let physicalPath=Ae.fromPortablePath(path),currentCacheEntry=Fw.cache[physicalPath];delete Fw.cache[physicalPath];let result;try{result=pne(physicalPath);let freshCacheEntry=Fw.cache[physicalPath],dynamicModule=eval("module"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{Fw.cache[physicalPath]=currentCacheEntry}return result}function IXe(t){let e=ine.get(t),r=ae.statSync(t);if((e==null?void 0:e.mtime)===r.mtimeMs)return e.instance;let o=hne(t);return ine.set(t,{mtime:r.mtimeMs,instance:o}),o}function Kp(t,{cachingStrategy:e=2}={}){switch(e){case 0:return hne(t);case 1:return IXe(t);case 2:return pne(t);default:throw new Error("Unsupported caching strategy")}}function Sa(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let o=[];for(let n of e)o.push(r.map(u=>n(u)));let a=r.map((n,u)=>u);return a.sort((n,u)=>{for(let A of o){let p=A[n]<A[u]?-1:A[n]>A[u]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function wXe(t){return t.length===0?null:t.map(e=>`(${ane.default.makeRe(e,{windows:!1,dot:!0}).source})`).join("|")}function pL(t,{env:e}){let r=/\${(?<variableName>[\d\w_]+)(?<colon>:)?(?:-(?<fallback>[^}]*))?}/g;return t.replace(r,(...o)=>{let{variableName:a,colon:n,fallback:u}=o[o.length-1],A=Object.prototype.hasOwnProperty.call(e,a),p=e[a];if(p||A&&!n)return p;if(u!=null)return u;throw new ot(`Environment variable not found (${a})`)})}function Tw(t){switch(t){case"true":case"1":case 1:case!0:return!0;case"false":case"0":case 0:case!1:return!1;default:throw new Error(`Couldn't parse "${t}" as a boolean`)}}function dne(t){return typeof t>"u"?t:Tw(t)}function hL(t){try{return dne(t)}catch{return null}}function BXe(t){return!!(Ae.isAbsolute(t)||t.match(/^(\.{1,2}|~)\//))}function mne(t,...e){let r=u=>({value:u}),o=r(t),a=e.map(u=>r(u)),{value:n}=(0,one.default)(o,...a,(u,A)=>{if(Array.isArray(u)&&Array.isArray(A)){for(let p of A)u.find(h=>(0,sne.default)(h,p))||u.push(p);return u}});return n}function vXe(...t){return mne({},...t)}var sne,one,ane,lne,cne,uL,une,Ane,aL,lL,cL,Fw,ine,gne,Gl=dt(()=>{bt();_t();sne=tt(Yte()),one=tt(nne()),ane=tt(Jo()),lne=tt($g()),cne=tt(ii()),uL=Ie("stream");une=Symbol();Xu.skip=une;Ane=Symbol();Rw.skip=Ane;aL=class extends uL.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(r,o,a){if(o!=="buffer"||!Buffer.isBuffer(r))throw new Error("Assertion failed: BufferStream only accept buffers");this.chunks.push(r),a(null,null)}_flush(r){r(null,Buffer.concat(this.chunks))}};lL=class{constructor(e){this.deferred=new Map;this.promises=new Map;this.limit=(0,lne.default)(e)}set(e,r){let o=this.deferred.get(e);typeof o>"u"&&this.deferred.set(e,o=fne());let a=this.limit(()=>r());return this.promises.set(e,a),a.then(()=>{this.promises.get(e)===a&&o.resolve()},n=>{this.promises.get(e)===a&&o.reject(n)}),o.promise}reduce(e,r){let o=this.promises.get(e)??Promise.resolve();this.set(e,()=>r(o))}async wait(){await Promise.all(this.promises.values())}},cL=class extends uL.Transform{constructor(r=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=r}_transform(r,o,a){if(o!=="buffer"||!Buffer.isBuffer(r))throw new Error("Assertion failed: DefaultStream only accept buffers");this.active=!1,a(null,r)}_flush(r){this.active&&this.ifEmpty.length>0?r(null,this.ifEmpty):r(null)}},Fw=eval("require");ine=new Map;gne=(o=>(o[o.NoCache=0]="NoCache",o[o.FsTime=1]="FsTime",o[o.Node=2]="Node",o))(gne||{})});var Wy,gL,dL,yne=dt(()=>{Wy=(r=>(r.HARD="HARD",r.SOFT="SOFT",r))(Wy||{}),gL=(o=>(o.Dependency="Dependency",o.PeerDependency="PeerDependency",o.PeerDependencyMeta="PeerDependencyMeta",o))(gL||{}),dL=(o=>(o.Inactive="inactive",o.Redundant="redundant",o.Active="active",o))(dL||{})});var ye={};Yt(ye,{LogLevel:()=>GS,Style:()=>yL,Type:()=>Bt,addLogFilterSupport:()=>Ow,applyColor:()=>Pa,applyHyperlink:()=>Yy,applyStyle:()=>jS,json:()=>hd,jsonOrPretty:()=>PXe,mark:()=>wL,pretty:()=>Kt,prettyField:()=>Zu,prettyList:()=>IL,supportsColor:()=>qS,supportsHyperlinks:()=>CL,tuple:()=>Hc});function Hc(t,e){return[e,t]}function jS(t,e,r){return t.get("enableColors")&&r&2&&(e=Lw.default.bold(e)),e}function Pa(t,e,r){if(!t.get("enableColors"))return e;let o=DXe.get(r);if(o===null)return e;let a=typeof o>"u"?r:EL.level>=3?o[0]:o[1],n=typeof a=="number"?mL.ansi256(a):a.startsWith("#")?mL.hex(a):mL[a];if(typeof n!="function")throw new Error(`Invalid format type ${a}`);return n(e)}function Yy(t,e,r){return t.get("enableHyperlinks")?SXe?`\x1B]8;;${r}\x1B\\${e}\x1B]8;;\x1B\\`:`\x1B]8;;${r}\x07${e}\x1B]8;;\x07`:e}function Kt(t,e,r){if(e===null)return Pa(t,"null",Bt.NULL);if(Object.prototype.hasOwnProperty.call(HS,r))return HS[r].pretty(t,e);if(typeof e!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return Pa(t,e,r)}function IL(t,e,r,{separator:o=", "}={}){return[...e].map(a=>Kt(t,a,r)).join(o)}function hd(t,e){if(t===null)return null;if(Object.prototype.hasOwnProperty.call(HS,e))return HS[e].json(t);if(typeof t!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof t}`);return t}function PXe(t,e,[r,o]){return t?hd(r,o):Kt(e,r,o)}function wL(t){return{Check:Pa(t,"\u2713","green"),Cross:Pa(t,"\u2718","red"),Question:Pa(t,"?","cyan")}}function Zu(t,{label:e,value:[r,o]}){return`${Kt(t,e,Bt.CODE)}: ${Kt(t,r,o)}`}function Ow(t,{configuration:e}){let r=e.get("logFilters"),o=new Map,a=new Map,n=[];for(let w of r){let v=w.get("level");if(typeof v>"u")continue;let b=w.get("code");typeof b<"u"&&o.set(b,v);let E=w.get("text");typeof E<"u"&&a.set(E,v);let R=w.get("pattern");typeof R<"u"&&n.push([Ene.default.matcher(R,{contains:!0}),v])}n.reverse();let u=(w,v,b)=>{if(w===null||w===0)return b;let E=a.size>0||n.length>0?(0,Cne.default)(v):v;if(a.size>0){let R=a.get(E);if(typeof R<"u")return R??b}if(n.length>0){for(let[R,L]of n)if(R(E))return L??b}if(o.size>0){let R=o.get(Ku(w));if(typeof R<"u")return R??b}return b},A=t.reportInfo,p=t.reportWarning,h=t.reportError,C=function(w,v,b,E){switch(u(v,b,E)){case"info":A.call(w,v,b);break;case"warning":p.call(w,v??0,b);break;case"error":h.call(w,v??0,b);break}};t.reportInfo=function(...w){return C(this,...w,"info")},t.reportWarning=function(...w){return C(this,...w,"warning")},t.reportError=function(...w){return C(this,...w,"error")}}var Lw,Nw,Ene,Cne,Ine,Bt,yL,EL,qS,CL,mL,DXe,sl,HS,SXe,GS,Yl=dt(()=>{bt();Lw=tt(gN()),Nw=tt(Jg());_t();Ene=tt(Jo()),Cne=tt(ES()),Ine=Ie("util");KD();Ks();Bt={NO_HINT:"NO_HINT",NULL:"NULL",SCOPE:"SCOPE",NAME:"NAME",RANGE:"RANGE",REFERENCE:"REFERENCE",NUMBER:"NUMBER",PATH:"PATH",URL:"URL",ADDED:"ADDED",REMOVED:"REMOVED",CODE:"CODE",INSPECT:"INSPECT",DURATION:"DURATION",SIZE:"SIZE",IDENT:"IDENT",DESCRIPTOR:"DESCRIPTOR",LOCATOR:"LOCATOR",RESOLUTION:"RESOLUTION",DEPENDENT:"DEPENDENT",PACKAGE_EXTENSION:"PACKAGE_EXTENSION",SETTING:"SETTING",MARKDOWN:"MARKDOWN"},yL=(e=>(e[e.BOLD=2]="BOLD",e))(yL||{}),EL=Nw.default.GITHUB_ACTIONS?{level:2}:Lw.default.supportsColor?{level:Lw.default.supportsColor.level}:{level:0},qS=EL.level!==0,CL=qS&&!Nw.default.GITHUB_ACTIONS&&!Nw.default.CIRCLE&&!Nw.default.GITLAB,mL=new Lw.default.Instance(EL),DXe=new Map([[Bt.NO_HINT,null],[Bt.NULL,["#a853b5",129]],[Bt.SCOPE,["#d75f00",166]],[Bt.NAME,["#d7875f",173]],[Bt.RANGE,["#00afaf",37]],[Bt.REFERENCE,["#87afff",111]],[Bt.NUMBER,["#ffd700",220]],[Bt.PATH,["#d75fd7",170]],[Bt.URL,["#d75fd7",170]],[Bt.ADDED,["#5faf00",70]],[Bt.REMOVED,["#d70000",160]],[Bt.CODE,["#87afff",111]],[Bt.SIZE,["#ffd700",220]]]),sl=t=>t,HS={[Bt.INSPECT]:sl({pretty:(t,e)=>(0,Ine.inspect)(e,{depth:1/0,colors:t.get("enableColors"),compact:!0,breakLength:1/0}),json:t=>t}),[Bt.NUMBER]:sl({pretty:(t,e)=>Pa(t,`${e}`,Bt.NUMBER),json:t=>t}),[Bt.IDENT]:sl({pretty:(t,e)=>cs(t,e),json:t=>nn(t)}),[Bt.LOCATOR]:sl({pretty:(t,e)=>kr(t,e),json:t=>Wl(t)}),[Bt.DESCRIPTOR]:sl({pretty:(t,e)=>Ln(t,e),json:t=>xa(t)}),[Bt.RESOLUTION]:sl({pretty:(t,{descriptor:e,locator:r})=>Mw(t,e,r),json:({descriptor:t,locator:e})=>({descriptor:xa(t),locator:e!==null?Wl(e):null})}),[Bt.DEPENDENT]:sl({pretty:(t,{locator:e,descriptor:r})=>BL(t,e,r),json:({locator:t,descriptor:e})=>({locator:Wl(t),descriptor:xa(e)})}),[Bt.PACKAGE_EXTENSION]:sl({pretty:(t,e)=>{switch(e.type){case"Dependency":return`${cs(t,e.parentDescriptor)} \u27A4 ${Pa(t,"dependencies",Bt.CODE)} \u27A4 ${cs(t,e.descriptor)}`;case"PeerDependency":return`${cs(t,e.parentDescriptor)} \u27A4 ${Pa(t,"peerDependencies",Bt.CODE)} \u27A4 ${cs(t,e.descriptor)}`;case"PeerDependencyMeta":return`${cs(t,e.parentDescriptor)} \u27A4 ${Pa(t,"peerDependenciesMeta",Bt.CODE)} \u27A4 ${cs(t,Ys(e.selector))} \u27A4 ${Pa(t,e.key,Bt.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:t=>{switch(t.type){case"Dependency":return`${nn(t.parentDescriptor)} > ${nn(t.descriptor)}`;case"PeerDependency":return`${nn(t.parentDescriptor)} >> ${nn(t.descriptor)}`;case"PeerDependencyMeta":return`${nn(t.parentDescriptor)} >> ${t.selector} / ${t.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}}}),[Bt.SETTING]:sl({pretty:(t,e)=>(t.get(e),Yy(t,Pa(t,e,Bt.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:t=>t}),[Bt.DURATION]:sl({pretty:(t,e)=>{if(e>1e3*60){let r=Math.floor(e/1e3/60),o=Math.ceil((e-r*60*1e3)/1e3);return o===0?`${r}m`:`${r}m ${o}s`}else{let r=Math.floor(e/1e3),o=e-r*1e3;return o===0?`${r}s`:`${r}s ${o}ms`}},json:t=>t}),[Bt.SIZE]:sl({pretty:(t,e)=>{let r=["KB","MB","GB","TB"],o=r.length;for(;o>1&&e<1024**o;)o-=1;let a=1024**o,n=Math.floor(e*100/a)/100;return Pa(t,`${n} ${r[o-1]}`,Bt.NUMBER)},json:t=>t}),[Bt.PATH]:sl({pretty:(t,e)=>Pa(t,Ae.fromPortablePath(e),Bt.PATH),json:t=>Ae.fromPortablePath(t)}),[Bt.MARKDOWN]:sl({pretty:(t,{text:e,format:r,paragraphs:o})=>Bo(e,{format:r,paragraphs:o}),json:({text:t})=>t})};SXe=!!process.env.KONSOLE_VERSION;GS=(a=>(a.Error="error",a.Warning="warning",a.Info="info",a.Discard="discard",a))(GS||{})});var Bne=U((WRt,wne)=>{"use strict";wne.exports=(...t)=>[...new Set([].concat(...t))]});var vL=U((YRt,Sne)=>{"use strict";var xXe=Ie("stream"),vne=xXe.PassThrough,bXe=Array.prototype.slice;Sne.exports=QXe;function QXe(){let t=[],e=bXe.call(arguments),r=!1,o=e[e.length-1];o&&!Array.isArray(o)&&o.pipe==null?e.pop():o={};let a=o.end!==!1,n=o.pipeError===!0;o.objectMode==null&&(o.objectMode=!0),o.highWaterMark==null&&(o.highWaterMark=64*1024);let u=vne(o);function A(){for(let C=0,w=arguments.length;C<w;C++)t.push(Dne(arguments[C],o));return p(),this}function p(){if(r)return;r=!0;let C=t.shift();if(!C){process.nextTick(h);return}Array.isArray(C)||(C=[C]);let w=C.length+1;function v(){--w>0||(r=!1,p())}function b(E){function R(){E.removeListener("merge2UnpipeEnd",R),E.removeListener("end",R),n&&E.removeListener("error",L),v()}function L(_){u.emit("error",_)}if(E._readableState.endEmitted)return v();E.on("merge2UnpipeEnd",R),E.on("end",R),n&&E.on("error",L),E.pipe(u,{end:!1}),E.resume()}for(let E=0;E<C.length;E++)b(C[E]);v()}function h(){r=!1,u.emit("queueDrain"),a&&u.end()}return u.setMaxListeners(0),u.add=A,u.on("unpipe",function(C){C.emit("merge2UnpipeEnd")}),e.length&&A.apply(null,e),u}function Dne(t,e){if(Array.isArray(t))for(let r=0,o=t.length;r<o;r++)t[r]=Dne(t[r],e);else{if(!t._readableState&&t.pipe&&(t=t.pipe(vne(e))),!t._readableState||!t.pause||!t.pipe)throw new Error("Only readable stream can be merged.");t.pause()}return t}});var Pne=U(Ky=>{"use strict";Object.defineProperty(Ky,"__esModule",{value:!0});Ky.splitWhen=Ky.flatten=void 0;function kXe(t){return t.reduce((e,r)=>[].concat(e,r),[])}Ky.flatten=kXe;function FXe(t,e){let r=[[]],o=0;for(let a of t)e(a)?(o++,r[o]=[]):r[o].push(a);return r}Ky.splitWhen=FXe});var xne=U(WS=>{"use strict";Object.defineProperty(WS,"__esModule",{value:!0});WS.isEnoentCodeError=void 0;function RXe(t){return t.code==="ENOENT"}WS.isEnoentCodeError=RXe});var bne=U(YS=>{"use strict";Object.defineProperty(YS,"__esModule",{value:!0});YS.createDirentFromStats=void 0;var DL=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function TXe(t,e){return new DL(t,e)}YS.createDirentFromStats=TXe});var Qne=U($u=>{"use strict";Object.defineProperty($u,"__esModule",{value:!0});$u.removeLeadingDotSegment=$u.escape=$u.makeAbsolute=$u.unixify=void 0;var NXe=Ie("path"),LXe=2,OXe=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g;function MXe(t){return t.replace(/\\/g,"/")}$u.unixify=MXe;function UXe(t,e){return NXe.resolve(t,e)}$u.makeAbsolute=UXe;function _Xe(t){return t.replace(OXe,"\\$2")}$u.escape=_Xe;function HXe(t){if(t.charAt(0)==="."){let e=t.charAt(1);if(e==="/"||e==="\\")return t.slice(LXe)}return t}$u.removeLeadingDotSegment=HXe});var Fne=U((XRt,kne)=>{kne.exports=function(e){if(typeof e!="string"||e==="")return!1;for(var r;r=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(r[2])return!0;e=e.slice(r.index+r[0].length)}return!1}});var Nne=U((ZRt,Tne)=>{var qXe=Fne(),Rne={"{":"}","(":")","[":"]"},jXe=function(t){if(t[0]==="!")return!0;for(var e=0,r=-2,o=-2,a=-2,n=-2,u=-2;e<t.length;){if(t[e]==="*"||t[e+1]==="?"&&/[\].+)]/.test(t[e])||o!==-1&&t[e]==="["&&t[e+1]!=="]"&&(o<e&&(o=t.indexOf("]",e)),o>e&&(u===-1||u>o||(u=t.indexOf("\\",e),u===-1||u>o)))||a!==-1&&t[e]==="{"&&t[e+1]!=="}"&&(a=t.indexOf("}",e),a>e&&(u=t.indexOf("\\",e),u===-1||u>a))||n!==-1&&t[e]==="("&&t[e+1]==="?"&&/[:!=]/.test(t[e+2])&&t[e+3]!==")"&&(n=t.indexOf(")",e),n>e&&(u=t.indexOf("\\",e),u===-1||u>n))||r!==-1&&t[e]==="("&&t[e+1]!=="|"&&(r<e&&(r=t.indexOf("|",e)),r!==-1&&t[r+1]!==")"&&(n=t.indexOf(")",r),n>r&&(u=t.indexOf("\\",r),u===-1||u>n))))return!0;if(t[e]==="\\"){var A=t[e+1];e+=2;var p=Rne[A];if(p){var h=t.indexOf(p,e);h!==-1&&(e=h+1)}if(t[e]==="!")return!0}else e++}return!1},GXe=function(t){if(t[0]==="!")return!0;for(var e=0;e<t.length;){if(/[*?{}()[\]]/.test(t[e]))return!0;if(t[e]==="\\"){var r=t[e+1];e+=2;var o=Rne[r];if(o){var a=t.indexOf(o,e);a!==-1&&(e=a+1)}if(t[e]==="!")return!0}else e++}return!1};Tne.exports=function(e,r){if(typeof e!="string"||e==="")return!1;if(qXe(e))return!0;var o=jXe;return r&&r.strict===!1&&(o=GXe),o(e)}});var One=U(($Rt,Lne)=>{"use strict";var WXe=Nne(),YXe=Ie("path").posix.dirname,KXe=Ie("os").platform()==="win32",SL="/",JXe=/\\/g,VXe=/[\{\[].*[\}\]]$/,zXe=/(^|[^\\])([\{\[]|\([^\)]+$)/,XXe=/\\([\!\*\?\|\[\]\(\)\{\}])/g;Lne.exports=function(e,r){var o=Object.assign({flipBackslashes:!0},r);o.flipBackslashes&&KXe&&e.indexOf(SL)<0&&(e=e.replace(JXe,SL)),VXe.test(e)&&(e+=SL),e+="a";do e=YXe(e);while(WXe(e)||zXe.test(e));return e.replace(XXe,"$1")}});var Wne=U(Or=>{"use strict";Object.defineProperty(Or,"__esModule",{value:!0});Or.matchAny=Or.convertPatternsToRe=Or.makeRe=Or.getPatternParts=Or.expandBraceExpansion=Or.expandPatternsWithBraceExpansion=Or.isAffectDepthOfReadingPattern=Or.endsWithSlashGlobStar=Or.hasGlobStar=Or.getBaseDirectory=Or.isPatternRelatedToParentDirectory=Or.getPatternsOutsideCurrentDirectory=Or.getPatternsInsideCurrentDirectory=Or.getPositivePatterns=Or.getNegativePatterns=Or.isPositivePattern=Or.isNegativePattern=Or.convertToNegativePattern=Or.convertToPositivePattern=Or.isDynamicPattern=Or.isStaticPattern=void 0;var ZXe=Ie("path"),$Xe=One(),PL=Jo(),Mne="**",eZe="\\",tZe=/[*?]|^!/,rZe=/\[[^[]*]/,nZe=/(?:^|[^!*+?@])\([^(]*\|[^|]*\)/,iZe=/[!*+?@]\([^(]*\)/,sZe=/,|\.\./;function Une(t,e={}){return!_ne(t,e)}Or.isStaticPattern=Une;function _ne(t,e={}){return t===""?!1:!!(e.caseSensitiveMatch===!1||t.includes(eZe)||tZe.test(t)||rZe.test(t)||nZe.test(t)||e.extglob!==!1&&iZe.test(t)||e.braceExpansion!==!1&&oZe(t))}Or.isDynamicPattern=_ne;function oZe(t){let e=t.indexOf("{");if(e===-1)return!1;let r=t.indexOf("}",e+1);if(r===-1)return!1;let o=t.slice(e,r);return sZe.test(o)}function aZe(t){return KS(t)?t.slice(1):t}Or.convertToPositivePattern=aZe;function lZe(t){return"!"+t}Or.convertToNegativePattern=lZe;function KS(t){return t.startsWith("!")&&t[1]!=="("}Or.isNegativePattern=KS;function Hne(t){return!KS(t)}Or.isPositivePattern=Hne;function cZe(t){return t.filter(KS)}Or.getNegativePatterns=cZe;function uZe(t){return t.filter(Hne)}Or.getPositivePatterns=uZe;function AZe(t){return t.filter(e=>!xL(e))}Or.getPatternsInsideCurrentDirectory=AZe;function fZe(t){return t.filter(xL)}Or.getPatternsOutsideCurrentDirectory=fZe;function xL(t){return t.startsWith("..")||t.startsWith("./..")}Or.isPatternRelatedToParentDirectory=xL;function pZe(t){return $Xe(t,{flipBackslashes:!1})}Or.getBaseDirectory=pZe;function hZe(t){return t.includes(Mne)}Or.hasGlobStar=hZe;function qne(t){return t.endsWith("/"+Mne)}Or.endsWithSlashGlobStar=qne;function gZe(t){let e=ZXe.basename(t);return qne(t)||Une(e)}Or.isAffectDepthOfReadingPattern=gZe;function dZe(t){return t.reduce((e,r)=>e.concat(jne(r)),[])}Or.expandPatternsWithBraceExpansion=dZe;function jne(t){return PL.braces(t,{expand:!0,nodupes:!0})}Or.expandBraceExpansion=jne;function mZe(t,e){let{parts:r}=PL.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return r.length===0&&(r=[t]),r[0].startsWith("/")&&(r[0]=r[0].slice(1),r.unshift("")),r}Or.getPatternParts=mZe;function Gne(t,e){return PL.makeRe(t,e)}Or.makeRe=Gne;function yZe(t,e){return t.map(r=>Gne(r,e))}Or.convertPatternsToRe=yZe;function EZe(t,e){return e.some(r=>r.test(t))}Or.matchAny=EZe});var Kne=U(JS=>{"use strict";Object.defineProperty(JS,"__esModule",{value:!0});JS.merge=void 0;var CZe=vL();function IZe(t){let e=CZe(t);return t.forEach(r=>{r.once("error",o=>e.emit("error",o))}),e.once("close",()=>Yne(t)),e.once("end",()=>Yne(t)),e}JS.merge=IZe;function Yne(t){t.forEach(e=>e.emit("close"))}});var Jne=U(Jy=>{"use strict";Object.defineProperty(Jy,"__esModule",{value:!0});Jy.isEmpty=Jy.isString=void 0;function wZe(t){return typeof t=="string"}Jy.isString=wZe;function BZe(t){return t===""}Jy.isEmpty=BZe});var vf=U(So=>{"use strict";Object.defineProperty(So,"__esModule",{value:!0});So.string=So.stream=So.pattern=So.path=So.fs=So.errno=So.array=void 0;var vZe=Pne();So.array=vZe;var DZe=xne();So.errno=DZe;var SZe=bne();So.fs=SZe;var PZe=Qne();So.path=PZe;var xZe=Wne();So.pattern=xZe;var bZe=Kne();So.stream=bZe;var QZe=Jne();So.string=QZe});var Xne=U(Po=>{"use strict";Object.defineProperty(Po,"__esModule",{value:!0});Po.convertPatternGroupToTask=Po.convertPatternGroupsToTasks=Po.groupPatternsByBaseDirectory=Po.getNegativePatternsAsPositive=Po.getPositivePatterns=Po.convertPatternsToTasks=Po.generate=void 0;var Df=vf();function kZe(t,e){let r=Vne(t),o=zne(t,e.ignore),a=r.filter(p=>Df.pattern.isStaticPattern(p,e)),n=r.filter(p=>Df.pattern.isDynamicPattern(p,e)),u=bL(a,o,!1),A=bL(n,o,!0);return u.concat(A)}Po.generate=kZe;function bL(t,e,r){let o=[],a=Df.pattern.getPatternsOutsideCurrentDirectory(t),n=Df.pattern.getPatternsInsideCurrentDirectory(t),u=QL(a),A=QL(n);return o.push(...kL(u,e,r)),"."in A?o.push(FL(".",n,e,r)):o.push(...kL(A,e,r)),o}Po.convertPatternsToTasks=bL;function Vne(t){return Df.pattern.getPositivePatterns(t)}Po.getPositivePatterns=Vne;function zne(t,e){return Df.pattern.getNegativePatterns(t).concat(e).map(Df.pattern.convertToPositivePattern)}Po.getNegativePatternsAsPositive=zne;function QL(t){let e={};return t.reduce((r,o)=>{let a=Df.pattern.getBaseDirectory(o);return a in r?r[a].push(o):r[a]=[o],r},e)}Po.groupPatternsByBaseDirectory=QL;function kL(t,e,r){return Object.keys(t).map(o=>FL(o,t[o],e,r))}Po.convertPatternGroupsToTasks=kL;function FL(t,e,r,o){return{dynamic:o,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(Df.pattern.convertToNegativePattern))}}Po.convertPatternGroupToTask=FL});var $ne=U(Vy=>{"use strict";Object.defineProperty(Vy,"__esModule",{value:!0});Vy.removeDuplicateSlashes=Vy.transform=void 0;var FZe=/(?!^)\/{2,}/g;function RZe(t){return t.map(e=>Zne(e))}Vy.transform=RZe;function Zne(t){return t.replace(FZe,"/")}Vy.removeDuplicateSlashes=Zne});var tie=U(VS=>{"use strict";Object.defineProperty(VS,"__esModule",{value:!0});VS.read=void 0;function TZe(t,e,r){e.fs.lstat(t,(o,a)=>{if(o!==null){eie(r,o);return}if(!a.isSymbolicLink()||!e.followSymbolicLink){RL(r,a);return}e.fs.stat(t,(n,u)=>{if(n!==null){if(e.throwErrorOnBrokenSymbolicLink){eie(r,n);return}RL(r,a);return}e.markSymbolicLink&&(u.isSymbolicLink=()=>!0),RL(r,u)})})}VS.read=TZe;function eie(t,e){t(e)}function RL(t,e){t(null,e)}});var rie=U(zS=>{"use strict";Object.defineProperty(zS,"__esModule",{value:!0});zS.read=void 0;function NZe(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let o=e.fs.statSync(t);return e.markSymbolicLink&&(o.isSymbolicLink=()=>!0),o}catch(o){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw o}}zS.read=NZe});var nie=U(Jp=>{"use strict";Object.defineProperty(Jp,"__esModule",{value:!0});Jp.createFileSystemAdapter=Jp.FILE_SYSTEM_ADAPTER=void 0;var XS=Ie("fs");Jp.FILE_SYSTEM_ADAPTER={lstat:XS.lstat,stat:XS.stat,lstatSync:XS.lstatSync,statSync:XS.statSync};function LZe(t){return t===void 0?Jp.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},Jp.FILE_SYSTEM_ADAPTER),t)}Jp.createFileSystemAdapter=LZe});var iie=U(NL=>{"use strict";Object.defineProperty(NL,"__esModule",{value:!0});var OZe=nie(),TL=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=OZe.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,r){return e??r}};NL.default=TL});var gd=U(Vp=>{"use strict";Object.defineProperty(Vp,"__esModule",{value:!0});Vp.statSync=Vp.stat=Vp.Settings=void 0;var sie=tie(),MZe=rie(),LL=iie();Vp.Settings=LL.default;function UZe(t,e,r){if(typeof e=="function"){sie.read(t,OL(),e);return}sie.read(t,OL(e),r)}Vp.stat=UZe;function _Ze(t,e){let r=OL(e);return MZe.read(t,r)}Vp.statSync=_Ze;function OL(t={}){return t instanceof LL.default?t:new LL.default(t)}});var aie=U((ATt,oie)=>{oie.exports=HZe;function HZe(t,e){var r,o,a,n=!0;Array.isArray(t)?(r=[],o=t.length):(a=Object.keys(t),r={},o=a.length);function u(p){function h(){e&&e(p,r),e=null}n?process.nextTick(h):h()}function A(p,h,C){r[p]=C,(--o===0||h)&&u(h)}o?a?a.forEach(function(p){t[p](function(h,C){A(p,h,C)})}):t.forEach(function(p,h){p(function(C,w){A(h,C,w)})}):u(null),n=!1}});var ML=U($S=>{"use strict";Object.defineProperty($S,"__esModule",{value:!0});$S.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var ZS=process.versions.node.split(".");if(ZS[0]===void 0||ZS[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var lie=Number.parseInt(ZS[0],10),qZe=Number.parseInt(ZS[1],10),cie=10,jZe=10,GZe=lie>cie,WZe=lie===cie&&qZe>=jZe;$S.IS_SUPPORT_READDIR_WITH_FILE_TYPES=GZe||WZe});var uie=U(eP=>{"use strict";Object.defineProperty(eP,"__esModule",{value:!0});eP.createDirentFromStats=void 0;var UL=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function YZe(t,e){return new UL(t,e)}eP.createDirentFromStats=YZe});var _L=U(tP=>{"use strict";Object.defineProperty(tP,"__esModule",{value:!0});tP.fs=void 0;var KZe=uie();tP.fs=KZe});var HL=U(rP=>{"use strict";Object.defineProperty(rP,"__esModule",{value:!0});rP.joinPathSegments=void 0;function JZe(t,e,r){return t.endsWith(r)?t+e:t+r+e}rP.joinPathSegments=JZe});var die=U(zp=>{"use strict";Object.defineProperty(zp,"__esModule",{value:!0});zp.readdir=zp.readdirWithFileTypes=zp.read=void 0;var VZe=gd(),Aie=aie(),zZe=ML(),fie=_L(),pie=HL();function XZe(t,e,r){if(!e.stats&&zZe.IS_SUPPORT_READDIR_WITH_FILE_TYPES){hie(t,e,r);return}gie(t,e,r)}zp.read=XZe;function hie(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(o,a)=>{if(o!==null){nP(r,o);return}let n=a.map(A=>({dirent:A,name:A.name,path:pie.joinPathSegments(t,A.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){qL(r,n);return}let u=n.map(A=>ZZe(A,e));Aie(u,(A,p)=>{if(A!==null){nP(r,A);return}qL(r,p)})})}zp.readdirWithFileTypes=hie;function ZZe(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(o,a)=>{if(o!==null){if(e.throwErrorOnBrokenSymbolicLink){r(o);return}r(null,t);return}t.dirent=fie.fs.createDirentFromStats(t.name,a),r(null,t)})}}function gie(t,e,r){e.fs.readdir(t,(o,a)=>{if(o!==null){nP(r,o);return}let n=a.map(u=>{let A=pie.joinPathSegments(t,u,e.pathSegmentSeparator);return p=>{VZe.stat(A,e.fsStatSettings,(h,C)=>{if(h!==null){p(h);return}let w={name:u,path:A,dirent:fie.fs.createDirentFromStats(u,C)};e.stats&&(w.stats=C),p(null,w)})}});Aie(n,(u,A)=>{if(u!==null){nP(r,u);return}qL(r,A)})})}zp.readdir=gie;function nP(t,e){t(e)}function qL(t,e){t(null,e)}});var Iie=U(Xp=>{"use strict";Object.defineProperty(Xp,"__esModule",{value:!0});Xp.readdir=Xp.readdirWithFileTypes=Xp.read=void 0;var $Ze=gd(),e$e=ML(),mie=_L(),yie=HL();function t$e(t,e){return!e.stats&&e$e.IS_SUPPORT_READDIR_WITH_FILE_TYPES?Eie(t,e):Cie(t,e)}Xp.read=t$e;function Eie(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(o=>{let a={dirent:o,name:o.name,path:yie.joinPathSegments(t,o.name,e.pathSegmentSeparator)};if(a.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let n=e.fs.statSync(a.path);a.dirent=mie.fs.createDirentFromStats(a.name,n)}catch(n){if(e.throwErrorOnBrokenSymbolicLink)throw n}return a})}Xp.readdirWithFileTypes=Eie;function Cie(t,e){return e.fs.readdirSync(t).map(o=>{let a=yie.joinPathSegments(t,o,e.pathSegmentSeparator),n=$Ze.statSync(a,e.fsStatSettings),u={name:o,path:a,dirent:mie.fs.createDirentFromStats(o,n)};return e.stats&&(u.stats=n),u})}Xp.readdir=Cie});var wie=U(Zp=>{"use strict";Object.defineProperty(Zp,"__esModule",{value:!0});Zp.createFileSystemAdapter=Zp.FILE_SYSTEM_ADAPTER=void 0;var zy=Ie("fs");Zp.FILE_SYSTEM_ADAPTER={lstat:zy.lstat,stat:zy.stat,lstatSync:zy.lstatSync,statSync:zy.statSync,readdir:zy.readdir,readdirSync:zy.readdirSync};function r$e(t){return t===void 0?Zp.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},Zp.FILE_SYSTEM_ADAPTER),t)}Zp.createFileSystemAdapter=r$e});var Bie=U(WL=>{"use strict";Object.defineProperty(WL,"__esModule",{value:!0});var n$e=Ie("path"),i$e=gd(),s$e=wie(),jL=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=s$e.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,n$e.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new i$e.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};WL.default=jL});var iP=U($p=>{"use strict";Object.defineProperty($p,"__esModule",{value:!0});$p.Settings=$p.scandirSync=$p.scandir=void 0;var vie=die(),o$e=Iie(),YL=Bie();$p.Settings=YL.default;function a$e(t,e,r){if(typeof e=="function"){vie.read(t,KL(),e);return}vie.read(t,KL(e),r)}$p.scandir=a$e;function l$e(t,e){let r=KL(e);return o$e.read(t,r)}$p.scandirSync=l$e;function KL(t={}){return t instanceof YL.default?t:new YL.default(t)}});var Sie=U((ITt,Die)=>{"use strict";function c$e(t){var e=new t,r=e;function o(){var n=e;return n.next?e=n.next:(e=new t,r=e),n.next=null,n}function a(n){r.next=n,r=n}return{get:o,release:a}}Die.exports=c$e});var xie=U((wTt,JL)=>{"use strict";var u$e=Sie();function Pie(t,e,r){if(typeof t=="function"&&(r=e,e=t,t=null),r<1)throw new Error("fastqueue concurrency must be greater than 1");var o=u$e(A$e),a=null,n=null,u=0,A=null,p={push:R,drain:Kl,saturated:Kl,pause:C,paused:!1,concurrency:r,running:h,resume:b,idle:E,length:w,getQueue:v,unshift:L,empty:Kl,kill:J,killAndDrain:re,error:oe};return p;function h(){return u}function C(){p.paused=!0}function w(){for(var pe=a,he=0;pe;)pe=pe.next,he++;return he}function v(){for(var pe=a,he=[];pe;)he.push(pe.value),pe=pe.next;return he}function b(){if(!!p.paused){p.paused=!1;for(var pe=0;pe<p.concurrency;pe++)u++,_()}}function E(){return u===0&&p.length()===0}function R(pe,he){var ve=o.get();ve.context=t,ve.release=_,ve.value=pe,ve.callback=he||Kl,ve.errorHandler=A,u===p.concurrency||p.paused?n?(n.next=ve,n=ve):(a=ve,n=ve,p.saturated()):(u++,e.call(t,ve.value,ve.worked))}function L(pe,he){var ve=o.get();ve.context=t,ve.release=_,ve.value=pe,ve.callback=he||Kl,u===p.concurrency||p.paused?a?(ve.next=a,a=ve):(a=ve,n=ve,p.saturated()):(u++,e.call(t,ve.value,ve.worked))}function _(pe){pe&&o.release(pe);var he=a;he?p.paused?u--:(n===a&&(n=null),a=he.next,he.next=null,e.call(t,he.value,he.worked),n===null&&p.empty()):--u===0&&p.drain()}function J(){a=null,n=null,p.drain=Kl}function re(){a=null,n=null,p.drain(),p.drain=Kl}function oe(pe){A=pe}}function Kl(){}function A$e(){this.value=null,this.callback=Kl,this.next=null,this.release=Kl,this.context=null,this.errorHandler=null;var t=this;this.worked=function(r,o){var a=t.callback,n=t.errorHandler,u=t.value;t.value=null,t.callback=Kl,t.errorHandler&&n(r,u),a.call(t.context,r,o),t.release(t)}}function f$e(t,e,r){typeof t=="function"&&(r=e,e=t,t=null);function o(C,w){e.call(this,C).then(function(v){w(null,v)},w)}var a=Pie(t,o,r),n=a.push,u=a.unshift;return a.push=A,a.unshift=p,a.drained=h,a;function A(C){var w=new Promise(function(v,b){n(C,function(E,R){if(E){b(E);return}v(R)})});return w.catch(Kl),w}function p(C){var w=new Promise(function(v,b){u(C,function(E,R){if(E){b(E);return}v(R)})});return w.catch(Kl),w}function h(){var C=a.drain,w=new Promise(function(v){a.drain=function(){C(),v()}});return w}}JL.exports=Pie;JL.exports.promise=f$e});var sP=U(eA=>{"use strict";Object.defineProperty(eA,"__esModule",{value:!0});eA.joinPathSegments=eA.replacePathSegmentSeparator=eA.isAppliedFilter=eA.isFatalError=void 0;function p$e(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}eA.isFatalError=p$e;function h$e(t,e){return t===null||t(e)}eA.isAppliedFilter=h$e;function g$e(t,e){return t.split(/[/\\]/).join(e)}eA.replacePathSegmentSeparator=g$e;function d$e(t,e,r){return t===""?e:t.endsWith(r)?t+e:t+r+e}eA.joinPathSegments=d$e});var XL=U(zL=>{"use strict";Object.defineProperty(zL,"__esModule",{value:!0});var m$e=sP(),VL=class{constructor(e,r){this._root=e,this._settings=r,this._root=m$e.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};zL.default=VL});var eO=U($L=>{"use strict";Object.defineProperty($L,"__esModule",{value:!0});var y$e=Ie("events"),E$e=iP(),C$e=xie(),oP=sP(),I$e=XL(),ZL=class extends I$e.default{constructor(e,r){super(e,r),this._settings=r,this._scandir=E$e.scandir,this._emitter=new y$e.EventEmitter,this._queue=C$e(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on("entry",e)}onError(e){this._emitter.once("error",e)}onEnd(e){this._emitter.once("end",e)}_pushToQueue(e,r){let o={directory:e,base:r};this._queue.push(o,a=>{a!==null&&this._handleError(a)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(o,a)=>{if(o!==null){r(o,void 0);return}for(let n of a)this._handleEntry(n,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!oP.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",e))}_handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let o=e.path;r!==void 0&&(e.path=oP.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),oP.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&oP.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(o,e.path)}_emitEntry(e){this._emitter.emit("entry",e)}};$L.default=ZL});var bie=U(rO=>{"use strict";Object.defineProperty(rO,"__esModule",{value:!0});var w$e=eO(),tO=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new w$e.default(this._root,this._settings),this._storage=new Set}read(e){this._reader.onError(r=>{B$e(e,r)}),this._reader.onEntry(r=>{this._storage.add(r)}),this._reader.onEnd(()=>{v$e(e,[...this._storage])}),this._reader.read()}};rO.default=tO;function B$e(t,e){t(e)}function v$e(t,e){t(null,e)}});var Qie=U(iO=>{"use strict";Object.defineProperty(iO,"__esModule",{value:!0});var D$e=Ie("stream"),S$e=eO(),nO=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new S$e.default(this._root,this._settings),this._stream=new D$e.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};iO.default=nO});var kie=U(oO=>{"use strict";Object.defineProperty(oO,"__esModule",{value:!0});var P$e=iP(),aP=sP(),x$e=XL(),sO=class extends x$e.default{constructor(){super(...arguments),this._scandir=P$e.scandirSync,this._storage=new Set,this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),[...this._storage]}_pushToQueue(e,r){this._queue.add({directory:e,base:r})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,r){try{let o=this._scandir(e,this._settings.fsScandirSettings);for(let a of o)this._handleEntry(a,r)}catch(o){this._handleError(o)}}_handleError(e){if(!!aP.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let o=e.path;r!==void 0&&(e.path=aP.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),aP.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&aP.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(o,e.path)}_pushToStorage(e){this._storage.add(e)}};oO.default=sO});var Fie=U(lO=>{"use strict";Object.defineProperty(lO,"__esModule",{value:!0});var b$e=kie(),aO=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new b$e.default(this._root,this._settings)}read(){return this._reader.read()}};lO.default=aO});var Rie=U(uO=>{"use strict";Object.defineProperty(uO,"__esModule",{value:!0});var Q$e=Ie("path"),k$e=iP(),cO=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,Q$e.sep),this.fsScandirSettings=new k$e.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};uO.default=cO});var cP=U(tA=>{"use strict";Object.defineProperty(tA,"__esModule",{value:!0});tA.Settings=tA.walkStream=tA.walkSync=tA.walk=void 0;var Tie=bie(),F$e=Qie(),R$e=Fie(),AO=Rie();tA.Settings=AO.default;function T$e(t,e,r){if(typeof e=="function"){new Tie.default(t,lP()).read(e);return}new Tie.default(t,lP(e)).read(r)}tA.walk=T$e;function N$e(t,e){let r=lP(e);return new R$e.default(t,r).read()}tA.walkSync=N$e;function L$e(t,e){let r=lP(e);return new F$e.default(t,r).read()}tA.walkStream=L$e;function lP(t={}){return t instanceof AO.default?t:new AO.default(t)}});var uP=U(pO=>{"use strict";Object.defineProperty(pO,"__esModule",{value:!0});var O$e=Ie("path"),M$e=gd(),Nie=vf(),fO=class{constructor(e){this._settings=e,this._fsStatSettings=new M$e.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return O$e.resolve(this._settings.cwd,e)}_makeEntry(e,r){let o={name:r,path:r,dirent:Nie.fs.createDirentFromStats(r,e)};return this._settings.stats&&(o.stats=e),o}_isFatalError(e){return!Nie.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};pO.default=fO});var dO=U(gO=>{"use strict";Object.defineProperty(gO,"__esModule",{value:!0});var U$e=Ie("stream"),_$e=gd(),H$e=cP(),q$e=uP(),hO=class extends q$e.default{constructor(){super(...arguments),this._walkStream=H$e.walkStream,this._stat=_$e.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let o=e.map(this._getFullEntryPath,this),a=new U$e.PassThrough({objectMode:!0});a._write=(n,u,A)=>this._getEntry(o[n],e[n],r).then(p=>{p!==null&&r.entryFilter(p)&&a.push(p),n===o.length-1&&a.end(),A()}).catch(A);for(let n=0;n<o.length;n++)a.write(n);return a}_getEntry(e,r,o){return this._getStat(e).then(a=>this._makeEntry(a,r)).catch(a=>{if(o.errorFilter(a))return null;throw a})}_getStat(e){return new Promise((r,o)=>{this._stat(e,this._fsStatSettings,(a,n)=>a===null?r(n):o(a))})}};gO.default=hO});var Lie=U(yO=>{"use strict";Object.defineProperty(yO,"__esModule",{value:!0});var j$e=cP(),G$e=uP(),W$e=dO(),mO=class extends G$e.default{constructor(){super(...arguments),this._walkAsync=j$e.walk,this._readerStream=new W$e.default(this._settings)}dynamic(e,r){return new Promise((o,a)=>{this._walkAsync(e,r,(n,u)=>{n===null?o(u):a(n)})})}async static(e,r){let o=[],a=this._readerStream.static(e,r);return new Promise((n,u)=>{a.once("error",u),a.on("data",A=>o.push(A)),a.once("end",()=>n(o))})}};yO.default=mO});var Oie=U(CO=>{"use strict";Object.defineProperty(CO,"__esModule",{value:!0});var Xy=vf(),EO=class{constructor(e,r,o){this._patterns=e,this._settings=r,this._micromatchOptions=o,this._storage=[],this._fillStorage()}_fillStorage(){let e=Xy.pattern.expandPatternsWithBraceExpansion(this._patterns);for(let r of e){let o=this._getPatternSegments(r),a=this._splitSegmentsIntoSections(o);this._storage.push({complete:a.length<=1,pattern:r,segments:o,sections:a})}}_getPatternSegments(e){return Xy.pattern.getPatternParts(e,this._micromatchOptions).map(o=>Xy.pattern.isDynamicPattern(o,this._settings)?{dynamic:!0,pattern:o,patternRe:Xy.pattern.makeRe(o,this._micromatchOptions)}:{dynamic:!1,pattern:o})}_splitSegmentsIntoSections(e){return Xy.array.splitWhen(e,r=>r.dynamic&&Xy.pattern.hasGlobStar(r.pattern))}};CO.default=EO});var Mie=U(wO=>{"use strict";Object.defineProperty(wO,"__esModule",{value:!0});var Y$e=Oie(),IO=class extends Y$e.default{match(e){let r=e.split("/"),o=r.length,a=this._storage.filter(n=>!n.complete||n.segments.length>o);for(let n of a){let u=n.sections[0];if(!n.complete&&o>u.length||r.every((p,h)=>{let C=n.segments[h];return!!(C.dynamic&&C.patternRe.test(p)||!C.dynamic&&C.pattern===p)}))return!0}return!1}};wO.default=IO});var Uie=U(vO=>{"use strict";Object.defineProperty(vO,"__esModule",{value:!0});var AP=vf(),K$e=Mie(),BO=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,o){let a=this._getMatcher(r),n=this._getNegativePatternsRe(o);return u=>this._filter(e,u,a,n)}_getMatcher(e){return new K$e.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter(AP.pattern.isAffectDepthOfReadingPattern);return AP.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,o,a){if(this._isSkippedByDeep(e,r.path)||this._isSkippedSymbolicLink(r))return!1;let n=AP.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(n,o)?!1:this._isSkippedByNegativePatterns(n,a)}_isSkippedByDeep(e,r){return this._settings.deep===1/0?!1:this._getEntryLevel(e,r)>=this._settings.deep}_getEntryLevel(e,r){let o=r.split("/").length;if(e==="")return o;let a=e.split("/").length;return o-a}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!AP.pattern.matchAny(e,r)}};vO.default=BO});var _ie=U(SO=>{"use strict";Object.defineProperty(SO,"__esModule",{value:!0});var dd=vf(),DO=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let o=dd.pattern.convertPatternsToRe(e,this._micromatchOptions),a=dd.pattern.convertPatternsToRe(r,this._micromatchOptions);return n=>this._filter(n,o,a)}_filter(e,r,o){if(this._settings.unique&&this._isDuplicateEntry(e)||this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(e.path,o))return!1;let a=this._settings.baseNameMatch?e.name:e.path,n=e.dirent.isDirectory(),u=this._isMatchToPatterns(a,r,n)&&!this._isMatchToPatterns(e.path,o,n);return this._settings.unique&&u&&this._createIndexRecord(e),u}_isDuplicateEntry(e){return this.index.has(e.path)}_createIndexRecord(e){this.index.set(e.path,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,r){if(!this._settings.absolute)return!1;let o=dd.path.makeAbsolute(this._settings.cwd,e);return dd.pattern.matchAny(o,r)}_isMatchToPatterns(e,r,o){let a=dd.path.removeLeadingDotSegment(e),n=dd.pattern.matchAny(a,r);return!n&&o?dd.pattern.matchAny(a+"/",r):n}};SO.default=DO});var Hie=U(xO=>{"use strict";Object.defineProperty(xO,"__esModule",{value:!0});var J$e=vf(),PO=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return J$e.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};xO.default=PO});var jie=U(QO=>{"use strict";Object.defineProperty(QO,"__esModule",{value:!0});var qie=vf(),bO=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=qie.path.makeAbsolute(this._settings.cwd,r),r=qie.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+="/"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};QO.default=bO});var fP=U(FO=>{"use strict";Object.defineProperty(FO,"__esModule",{value:!0});var V$e=Ie("path"),z$e=Uie(),X$e=_ie(),Z$e=Hie(),$$e=jie(),kO=class{constructor(e){this._settings=e,this.errorFilter=new Z$e.default(this._settings),this.entryFilter=new X$e.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new z$e.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new $$e.default(this._settings)}_getRootDirectory(e){return V$e.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let r=e.base==="."?"":e.base;return{basePath:r,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};FO.default=kO});var Gie=U(TO=>{"use strict";Object.defineProperty(TO,"__esModule",{value:!0});var eet=Lie(),tet=fP(),RO=class extends tet.default{constructor(){super(...arguments),this._reader=new eet.default(this._settings)}async read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e);return(await this.api(r,e,o)).map(n=>o.transform(n))}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};TO.default=RO});var Wie=U(LO=>{"use strict";Object.defineProperty(LO,"__esModule",{value:!0});var ret=Ie("stream"),net=dO(),iet=fP(),NO=class extends iet.default{constructor(){super(...arguments),this._reader=new net.default(this._settings)}read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e),a=this.api(r,e,o),n=new ret.Readable({objectMode:!0,read:()=>{}});return a.once("error",u=>n.emit("error",u)).on("data",u=>n.emit("data",o.transform(u))).once("end",()=>n.emit("end")),n.once("close",()=>a.destroy()),n}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};LO.default=NO});var Yie=U(MO=>{"use strict";Object.defineProperty(MO,"__esModule",{value:!0});var set=gd(),oet=cP(),aet=uP(),OO=class extends aet.default{constructor(){super(...arguments),this._walkSync=oet.walkSync,this._statSync=set.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let o=[];for(let a of e){let n=this._getFullEntryPath(a),u=this._getEntry(n,a,r);u===null||!r.entryFilter(u)||o.push(u)}return o}_getEntry(e,r,o){try{let a=this._getStat(e);return this._makeEntry(a,r)}catch(a){if(o.errorFilter(a))return null;throw a}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};MO.default=OO});var Kie=U(_O=>{"use strict";Object.defineProperty(_O,"__esModule",{value:!0});var cet=Yie(),uet=fP(),UO=class extends uet.default{constructor(){super(...arguments),this._reader=new cet.default(this._settings)}read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e);return this.api(r,e,o).map(o.transform)}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};_O.default=UO});var Jie=U($y=>{"use strict";Object.defineProperty($y,"__esModule",{value:!0});$y.DEFAULT_FILE_SYSTEM_ADAPTER=void 0;var Zy=Ie("fs"),Aet=Ie("os"),fet=Math.max(Aet.cpus().length,1);$y.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:Zy.lstat,lstatSync:Zy.lstatSync,stat:Zy.stat,statSync:Zy.statSync,readdir:Zy.readdir,readdirSync:Zy.readdirSync};var HO=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,fet),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},$y.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};$y.default=HO});var pP=U((KTt,Xie)=>{"use strict";var Vie=Xne(),zie=$ne(),pet=Gie(),het=Wie(),get=Kie(),qO=Jie(),md=vf();async function jO(t,e){eE(t);let r=GO(t,pet.default,e),o=await Promise.all(r);return md.array.flatten(o)}(function(t){function e(u,A){eE(u);let p=GO(u,get.default,A);return md.array.flatten(p)}t.sync=e;function r(u,A){eE(u);let p=GO(u,het.default,A);return md.stream.merge(p)}t.stream=r;function o(u,A){eE(u);let p=zie.transform([].concat(u)),h=new qO.default(A);return Vie.generate(p,h)}t.generateTasks=o;function a(u,A){eE(u);let p=new qO.default(A);return md.pattern.isDynamicPattern(u,p)}t.isDynamicPattern=a;function n(u){return eE(u),md.path.escape(u)}t.escapePath=n})(jO||(jO={}));function GO(t,e,r){let o=zie.transform([].concat(t)),a=new qO.default(r),n=Vie.generate(o,a),u=new e(a);return n.map(u.read,u)}function eE(t){if(![].concat(t).every(o=>md.string.isString(o)&&!md.string.isEmpty(o)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}Xie.exports=jO});var $ie=U(yd=>{"use strict";var{promisify:det}=Ie("util"),Zie=Ie("fs");async function WO(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return(await det(Zie[t])(r))[e]()}catch(o){if(o.code==="ENOENT")return!1;throw o}}function YO(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return Zie[t](r)[e]()}catch(o){if(o.code==="ENOENT")return!1;throw o}}yd.isFile=WO.bind(null,"stat","isFile");yd.isDirectory=WO.bind(null,"stat","isDirectory");yd.isSymlink=WO.bind(null,"lstat","isSymbolicLink");yd.isFileSync=YO.bind(null,"statSync","isFile");yd.isDirectorySync=YO.bind(null,"statSync","isDirectory");yd.isSymlinkSync=YO.bind(null,"lstatSync","isSymbolicLink")});var ise=U((VTt,KO)=>{"use strict";var Ed=Ie("path"),ese=$ie(),tse=t=>t.length>1?`{${t.join(",")}}`:t[0],rse=(t,e)=>{let r=t[0]==="!"?t.slice(1):t;return Ed.isAbsolute(r)?r:Ed.join(e,r)},met=(t,e)=>Ed.extname(t)?`**/${t}`:`**/${t}.${tse(e)}`,nse=(t,e)=>{if(e.files&&!Array.isArray(e.files))throw new TypeError(`Expected \`files\` to be of type \`Array\` but received type \`${typeof e.files}\``);if(e.extensions&&!Array.isArray(e.extensions))throw new TypeError(`Expected \`extensions\` to be of type \`Array\` but received type \`${typeof e.extensions}\``);return e.files&&e.extensions?e.files.map(r=>Ed.posix.join(t,met(r,e.extensions))):e.files?e.files.map(r=>Ed.posix.join(t,`**/${r}`)):e.extensions?[Ed.posix.join(t,`**/*.${tse(e.extensions)}`)]:[Ed.posix.join(t,"**")]};KO.exports=async(t,e)=>{if(e={cwd:process.cwd(),...e},typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let r=await Promise.all([].concat(t).map(async o=>await ese.isDirectory(rse(o,e.cwd))?nse(o,e):o));return[].concat.apply([],r)};KO.exports.sync=(t,e)=>{if(e={cwd:process.cwd(),...e},typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let r=[].concat(t).map(o=>ese.isDirectorySync(rse(o,e.cwd))?nse(o,e):o);return[].concat.apply([],r)}});var pse=U((zTt,fse)=>{function sse(t){return Array.isArray(t)?t:[t]}var cse="",ose=" ",JO="\\",yet=/^\s+$/,Eet=/^\\!/,Cet=/^\\#/,Iet=/\r?\n/g,wet=/^\.*\/|^\.+$/,VO="/",ase=typeof Symbol<"u"?Symbol.for("node-ignore"):"node-ignore",Bet=(t,e,r)=>Object.defineProperty(t,e,{value:r}),vet=/([0-z])-([0-z])/g,use=()=>!1,Det=t=>t.replace(vet,(e,r,o)=>r.charCodeAt(0)<=o.charCodeAt(0)?e:cse),Pet=t=>{let{length:e}=t;return t.slice(0,e-e%2)},xet=[[/\\?\s+$/,t=>t.indexOf("\\")===0?ose:cse],[/\\\s/g,()=>ose],[/[\\$.|*+(){^]/g,t=>`\\${t}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(t,e,r)=>e+6<r.length?"(?:\\/[^\\/]+)*":"\\/.+"],[/(^|[^\\]+)\\\*(?=.+)/g,(t,e)=>`${e}[^\\/]*`],[/\\\\\\(?=[$.|*+(){^])/g,()=>JO],[/\\\\/g,()=>JO],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(t,e,r,o,a)=>e===JO?`\\[${r}${Pet(o)}${a}`:a==="]"&&o.length%2===0?`[${Det(r)}${o}]`:"[]"],[/(?:[^*])$/,t=>/\/$/.test(t)?`${t}$`:`${t}(?=$|\\/$)`],[/(\^|\\\/)?\\\*$/,(t,e)=>`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`]],lse=Object.create(null),bet=(t,e)=>{let r=lse[t];return r||(r=xet.reduce((o,a)=>o.replace(a[0],a[1].bind(t)),t),lse[t]=r),e?new RegExp(r,"i"):new RegExp(r)},ZO=t=>typeof t=="string",Qet=t=>t&&ZO(t)&&!yet.test(t)&&t.indexOf("#")!==0,ket=t=>t.split(Iet),zO=class{constructor(e,r,o,a){this.origin=e,this.pattern=r,this.negative=o,this.regex=a}},Fet=(t,e)=>{let r=t,o=!1;t.indexOf("!")===0&&(o=!0,t=t.substr(1)),t=t.replace(Eet,"!").replace(Cet,"#");let a=bet(t,e);return new zO(r,t,o,a)},Ret=(t,e)=>{throw new e(t)},Sf=(t,e,r)=>ZO(t)?t?Sf.isNotRelative(t)?r(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:r("path must not be empty",TypeError):r(`path must be a string, but got \`${e}\``,TypeError),Ase=t=>wet.test(t);Sf.isNotRelative=Ase;Sf.convert=t=>t;var XO=class{constructor({ignorecase:e=!0,ignoreCase:r=e,allowRelativePaths:o=!1}={}){Bet(this,ase,!0),this._rules=[],this._ignoreCase=r,this._allowRelativePaths=o,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}_addPattern(e){if(e&&e[ase]){this._rules=this._rules.concat(e._rules),this._added=!0;return}if(Qet(e)){let r=Fet(e,this._ignoreCase);this._added=!0,this._rules.push(r)}}add(e){return this._added=!1,sse(ZO(e)?ket(e):e).forEach(this._addPattern,this),this._added&&this._initCache(),this}addPattern(e){return this.add(e)}_testOne(e,r){let o=!1,a=!1;return this._rules.forEach(n=>{let{negative:u}=n;if(a===u&&o!==a||u&&!o&&!a&&!r)return;n.regex.test(e)&&(o=!u,a=u)}),{ignored:o,unignored:a}}_test(e,r,o,a){let n=e&&Sf.convert(e);return Sf(n,e,this._allowRelativePaths?use:Ret),this._t(n,r,o,a)}_t(e,r,o,a){if(e in r)return r[e];if(a||(a=e.split(VO)),a.pop(),!a.length)return r[e]=this._testOne(e,o);let n=this._t(a.join(VO)+VO,r,o,a);return r[e]=n.ignored?n:this._testOne(e,o)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return sse(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},hP=t=>new XO(t),Tet=t=>Sf(t&&Sf.convert(t),t,use);hP.isPathValid=Tet;hP.default=hP;fse.exports=hP;if(typeof process<"u"&&(process.env&&process.env.IGNORE_TEST_WIN32||process.platform==="win32")){let t=r=>/^\\\\\?\\/.test(r)||/["<>|\u0000-\u001F]+/u.test(r)?r:r.replace(/\\/g,"/");Sf.convert=t;let e=/^[a-z]:\//i;Sf.isNotRelative=r=>e.test(r)||Ase(r)}});var gse=U((XTt,hse)=>{"use strict";hse.exports=t=>{let e=/^\\\\\?\\/.test(t),r=/[^\u0000-\u0080]+/.test(t);return e||r?t:t.replace(/\\/g,"/")}});var wse=U((ZTt,$O)=>{"use strict";var{promisify:Net}=Ie("util"),dse=Ie("fs"),Pf=Ie("path"),mse=pP(),Let=pse(),Uw=gse(),yse=["**/node_modules/**","**/flow-typed/**","**/coverage/**","**/.git"],Oet=Net(dse.readFile),Met=t=>e=>e.startsWith("!")?"!"+Pf.posix.join(t,e.slice(1)):Pf.posix.join(t,e),Uet=(t,e)=>{let r=Uw(Pf.relative(e.cwd,Pf.dirname(e.fileName)));return t.split(/\r?\n/).filter(Boolean).filter(o=>!o.startsWith("#")).map(Met(r))},Ese=t=>{let e=Let();for(let r of t)e.add(Uet(r.content,{cwd:r.cwd,fileName:r.filePath}));return e},_et=(t,e)=>{if(t=Uw(t),Pf.isAbsolute(e)){if(Uw(e).startsWith(t))return e;throw new Error(`Path ${e} is not in cwd ${t}`)}return Pf.join(t,e)},Cse=(t,e)=>r=>t.ignores(Uw(Pf.relative(e,_et(e,r.path||r)))),Het=async(t,e)=>{let r=Pf.join(e,t),o=await Oet(r,"utf8");return{cwd:e,filePath:r,content:o}},qet=(t,e)=>{let r=Pf.join(e,t),o=dse.readFileSync(r,"utf8");return{cwd:e,filePath:r,content:o}},Ise=({ignore:t=[],cwd:e=Uw(process.cwd())}={})=>({ignore:t,cwd:e});$O.exports=async t=>{t=Ise(t);let e=await mse("**/.gitignore",{ignore:yse.concat(t.ignore),cwd:t.cwd}),r=await Promise.all(e.map(a=>Het(a,t.cwd))),o=Ese(r);return Cse(o,t.cwd)};$O.exports.sync=t=>{t=Ise(t);let r=mse.sync("**/.gitignore",{ignore:yse.concat(t.ignore),cwd:t.cwd}).map(a=>qet(a,t.cwd)),o=Ese(r);return Cse(o,t.cwd)}});var vse=U(($Tt,Bse)=>{"use strict";var{Transform:jet}=Ie("stream"),gP=class extends jet{constructor(){super({objectMode:!0})}},eM=class extends gP{constructor(e){super(),this._filter=e}_transform(e,r,o){this._filter(e)&&this.push(e),o()}},tM=class extends gP{constructor(){super(),this._pushed=new Set}_transform(e,r,o){this._pushed.has(e)||(this.push(e),this._pushed.add(e)),o()}};Bse.exports={FilterStream:eM,UniqueStream:tM}});var sM=U((eNt,Cd)=>{"use strict";var Sse=Ie("fs"),dP=Bne(),Get=vL(),mP=pP(),yP=ise(),rM=wse(),{FilterStream:Wet,UniqueStream:Yet}=vse(),Pse=()=>!1,Dse=t=>t[0]==="!",Ket=t=>{if(!t.every(e=>typeof e=="string"))throw new TypeError("Patterns must be a string or an array of strings")},Jet=(t={})=>{if(!t.cwd)return;let e;try{e=Sse.statSync(t.cwd)}catch{return}if(!e.isDirectory())throw new Error("The `cwd` option must be a path to a directory")},Vet=t=>t.stats instanceof Sse.Stats?t.path:t,EP=(t,e)=>{t=dP([].concat(t)),Ket(t),Jet(e);let r=[];e={ignore:[],expandDirectories:!0,...e};for(let[o,a]of t.entries()){if(Dse(a))continue;let n=t.slice(o).filter(A=>Dse(A)).map(A=>A.slice(1)),u={...e,ignore:e.ignore.concat(n)};r.push({pattern:a,options:u})}return r},zet=(t,e)=>{let r={};return t.options.cwd&&(r.cwd=t.options.cwd),Array.isArray(t.options.expandDirectories)?r={...r,files:t.options.expandDirectories}:typeof t.options.expandDirectories=="object"&&(r={...r,...t.options.expandDirectories}),e(t.pattern,r)},nM=(t,e)=>t.options.expandDirectories?zet(t,e):[t.pattern],xse=t=>t&&t.gitignore?rM.sync({cwd:t.cwd,ignore:t.ignore}):Pse,iM=t=>e=>{let{options:r}=t;return r.ignore&&Array.isArray(r.ignore)&&r.expandDirectories&&(r.ignore=yP.sync(r.ignore)),{pattern:e,options:r}};Cd.exports=async(t,e)=>{let r=EP(t,e),o=async()=>e&&e.gitignore?rM({cwd:e.cwd,ignore:e.ignore}):Pse,a=async()=>{let p=await Promise.all(r.map(async h=>{let C=await nM(h,yP);return Promise.all(C.map(iM(h)))}));return dP(...p)},[n,u]=await Promise.all([o(),a()]),A=await Promise.all(u.map(p=>mP(p.pattern,p.options)));return dP(...A).filter(p=>!n(Vet(p)))};Cd.exports.sync=(t,e)=>{let r=EP(t,e),o=[];for(let u of r){let A=nM(u,yP.sync).map(iM(u));o.push(...A)}let a=xse(e),n=[];for(let u of o)n=dP(n,mP.sync(u.pattern,u.options));return n.filter(u=>!a(u))};Cd.exports.stream=(t,e)=>{let r=EP(t,e),o=[];for(let A of r){let p=nM(A,yP.sync).map(iM(A));o.push(...p)}let a=xse(e),n=new Wet(A=>!a(A)),u=new Yet;return Get(o.map(A=>mP.stream(A.pattern,A.options))).pipe(n).pipe(u)};Cd.exports.generateGlobTasks=EP;Cd.exports.hasMagic=(t,e)=>[].concat(t).some(r=>mP.isDynamicPattern(r,e));Cd.exports.gitignore=rM});var bn={};Yt(bn,{checksumFile:()=>IP,checksumPattern:()=>wP,makeHash:()=>Js});function Js(...t){let e=(0,CP.createHash)("sha512"),r="";for(let o of t)typeof o=="string"?r+=o:o&&(r&&(e.update(r),r=""),e.update(o));return r&&e.update(r),e.digest("hex")}async function IP(t,{baseFs:e,algorithm:r}={baseFs:ae,algorithm:"sha512"}){let o=await e.openPromise(t,"r");try{let n=Buffer.allocUnsafeSlow(65536),u=(0,CP.createHash)(r),A=0;for(;(A=await e.readPromise(o,n,0,65536))!==0;)u.update(A===65536?n:n.slice(0,A));return u.digest("hex")}finally{await e.closePromise(o)}}async function wP(t,{cwd:e}){let o=(await(0,oM.default)(t,{cwd:Ae.fromPortablePath(e),expandDirectories:!1,onlyDirectories:!0,unique:!0})).map(A=>`${A}/**/*`),a=await(0,oM.default)([t,...o],{cwd:Ae.fromPortablePath(e),expandDirectories:!1,onlyFiles:!1,unique:!0});a.sort();let n=await Promise.all(a.map(async A=>{let p=[Buffer.from(A)],h=Ae.toPortablePath(A),C=await ae.lstatPromise(h);return C.isSymbolicLink()?p.push(Buffer.from(await ae.readlinkPromise(h))):C.isFile()&&p.push(await ae.readFilePromise(h)),p.join("\0")})),u=(0,CP.createHash)("sha512");for(let A of n)u.update(A);return u.digest("hex")}var CP,oM,e0=dt(()=>{bt();CP=Ie("crypto"),oM=tt(sM())});var Y={};Yt(Y,{areDescriptorsEqual:()=>Rse,areIdentsEqual:()=>Gw,areLocatorsEqual:()=>Ww,areVirtualPackagesEquivalent:()=>stt,bindDescriptor:()=>ntt,bindLocator:()=>itt,convertDescriptorToLocator:()=>BP,convertLocatorToDescriptor:()=>lM,convertPackageToLocator:()=>ett,convertToIdent:()=>$et,convertToManifestRange:()=>ctt,copyPackage:()=>Hw,devirtualizeDescriptor:()=>qw,devirtualizeLocator:()=>jw,ensureDevirtualizedDescriptor:()=>ttt,ensureDevirtualizedLocator:()=>rtt,getIdentVendorPath:()=>pM,isPackageCompatible:()=>xP,isVirtualDescriptor:()=>xf,isVirtualLocator:()=>qc,makeDescriptor:()=>mn,makeIdent:()=>rA,makeLocator:()=>us,makeRange:()=>DP,parseDescriptor:()=>t0,parseFileStyleRange:()=>att,parseIdent:()=>Ys,parseLocator:()=>bf,parseRange:()=>Id,prettyDependent:()=>BL,prettyDescriptor:()=>Ln,prettyIdent:()=>cs,prettyLocator:()=>kr,prettyLocatorNoColors:()=>fM,prettyRange:()=>PP,prettyReference:()=>Kw,prettyResolution:()=>Mw,prettyWorkspace:()=>Jw,renamePackage:()=>cM,slugifyIdent:()=>aM,slugifyLocator:()=>rE,sortDescriptors:()=>nE,stringifyDescriptor:()=>xa,stringifyIdent:()=>nn,stringifyLocator:()=>Wl,tryParseDescriptor:()=>Yw,tryParseIdent:()=>Tse,tryParseLocator:()=>vP,tryParseRange:()=>ott,virtualizeDescriptor:()=>uM,virtualizePackage:()=>AM});function rA(t,e){if(t!=null&&t.startsWith("@"))throw new Error("Invalid scope: don't prefix it with '@'");return{identHash:Js(t,e),scope:t,name:e}}function mn(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:Js(t.identHash,e),range:e}}function us(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:Js(t.identHash,e),reference:e}}function $et(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}function BP(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.descriptorHash,reference:t.range}}function lM(t){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:t.locatorHash,range:t.reference}}function ett(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference}}function cM(t,e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference,version:t.version,languageName:t.languageName,linkType:t.linkType,conditions:t.conditions,dependencies:new Map(t.dependencies),peerDependencies:new Map(t.peerDependencies),dependenciesMeta:new Map(t.dependenciesMeta),peerDependenciesMeta:new Map(t.peerDependenciesMeta),bin:new Map(t.bin)}}function Hw(t){return cM(t,t)}function uM(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return mn(t,`virtual:${e}#${t.range}`)}function AM(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return cM(t,us(t,`virtual:${e}#${t.reference}`))}function xf(t){return t.range.startsWith(_w)}function qc(t){return t.reference.startsWith(_w)}function qw(t){if(!xf(t))throw new Error("Not a virtual descriptor");return mn(t,t.range.replace(/^[^#]*#/,""))}function jw(t){if(!qc(t))throw new Error("Not a virtual descriptor");return us(t,t.reference.replace(/^[^#]*#/,""))}function ttt(t){return xf(t)?mn(t,t.range.replace(/^[^#]*#/,"")):t}function rtt(t){return qc(t)?us(t,t.reference.replace(/^[^#]*#/,"")):t}function ntt(t,e){return t.range.includes("::")?t:mn(t,`${t.range}::${tE.default.stringify(e)}`)}function itt(t,e){return t.reference.includes("::")?t:us(t,`${t.reference}::${tE.default.stringify(e)}`)}function Gw(t,e){return t.identHash===e.identHash}function Rse(t,e){return t.descriptorHash===e.descriptorHash}function Ww(t,e){return t.locatorHash===e.locatorHash}function stt(t,e){if(!qc(t))throw new Error("Invalid package type");if(!qc(e))throw new Error("Invalid package type");if(!Gw(t,e)||t.dependencies.size!==e.dependencies.size)return!1;for(let r of t.dependencies.values()){let o=e.dependencies.get(r.identHash);if(!o||!Rse(r,o))return!1}return!0}function Ys(t){let e=Tse(t);if(!e)throw new Error(`Invalid ident (${t})`);return e}function Tse(t){let e=t.match(/^(?:@([^/]+?)\/)?([^@/]+)$/);if(!e)return null;let[,r,o]=e;return rA(typeof r<"u"?r:null,o)}function t0(t,e=!1){let r=Yw(t,e);if(!r)throw new Error(`Invalid descriptor (${t})`);return r}function Yw(t,e=!1){let r=e?t.match(/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))$/):t.match(/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))?$/);if(!r)return null;let[,o,a,n]=r;if(n==="unknown")throw new Error(`Invalid range (${t})`);let u=typeof o<"u"?o:null,A=typeof n<"u"?n:"unknown";return mn(rA(u,a),A)}function bf(t,e=!1){let r=vP(t,e);if(!r)throw new Error(`Invalid locator (${t})`);return r}function vP(t,e=!1){let r=e?t.match(/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))$/):t.match(/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))?$/);if(!r)return null;let[,o,a,n]=r;if(n==="unknown")throw new Error(`Invalid reference (${t})`);let u=typeof o<"u"?o:null,A=typeof n<"u"?n:"unknown";return us(rA(u,a),A)}function Id(t,e){let r=t.match(/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/);if(r===null)throw new Error(`Invalid range (${t})`);let o=typeof r[1]<"u"?r[1]:null;if(typeof(e==null?void 0:e.requireProtocol)=="string"&&o!==e.requireProtocol)throw new Error(`Invalid protocol (${o})`);if((e==null?void 0:e.requireProtocol)&&o===null)throw new Error(`Missing protocol (${o})`);let a=typeof r[3]<"u"?decodeURIComponent(r[2]):null;if((e==null?void 0:e.requireSource)&&a===null)throw new Error(`Missing source (${t})`);let n=typeof r[3]<"u"?decodeURIComponent(r[3]):decodeURIComponent(r[2]),u=e!=null&&e.parseSelector?tE.default.parse(n):n,A=typeof r[4]<"u"?tE.default.parse(r[4]):null;return{protocol:o,source:a,selector:u,params:A}}function ott(t,e){try{return Id(t,e)}catch{return null}}function att(t,{protocol:e}){let{selector:r,params:o}=Id(t,{requireProtocol:e,requireBindings:!0});if(typeof o.locator!="string")throw new Error(`Assertion failed: Invalid bindings for ${t}`);return{parentLocator:bf(o.locator,!0),path:r}}function bse(t){return t=t.replace(/%/g,"%25"),t=t.replace(/:/g,"%3A"),t=t.replace(/#/g,"%23"),t}function ltt(t){return t===null?!1:Object.entries(t).length>0}function DP({protocol:t,source:e,selector:r,params:o}){let a="";return t!==null&&(a+=`${t}`),e!==null&&(a+=`${bse(e)}#`),a+=bse(r),ltt(o)&&(a+=`::${tE.default.stringify(o)}`),a}function ctt(t){let{params:e,protocol:r,source:o,selector:a}=Id(t);for(let n in e)n.startsWith("__")&&delete e[n];return DP({protocol:r,source:o,params:e,selector:a})}function nn(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}function xa(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.name}@${t.range}`}function Wl(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${t.name}@${t.reference}`}function aM(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}function rE(t){let{protocol:e,selector:r}=Id(t.reference),o=e!==null?e.replace(/:$/,""):"exotic",a=Qse.default.valid(r),n=a!==null?`${o}-${a}`:`${o}`,u=10,A=t.scope?`${aM(t)}-${n}-${t.locatorHash.slice(0,u)}`:`${aM(t)}-${n}-${t.locatorHash.slice(0,u)}`;return Li(A)}function cs(t,e){return e.scope?`${Kt(t,`@${e.scope}/`,Bt.SCOPE)}${Kt(t,e.name,Bt.NAME)}`:`${Kt(t,e.name,Bt.NAME)}`}function SP(t){if(t.startsWith(_w)){let e=SP(t.substring(t.indexOf("#")+1)),r=t.substring(_w.length,_w.length+Xet);return`${e} [${r}]`}else return t.replace(/\?.*/,"?[...]")}function PP(t,e){return`${Kt(t,SP(e),Bt.RANGE)}`}function Ln(t,e){return`${cs(t,e)}${Kt(t,"@",Bt.RANGE)}${PP(t,e.range)}`}function Kw(t,e){return`${Kt(t,SP(e),Bt.REFERENCE)}`}function kr(t,e){return`${cs(t,e)}${Kt(t,"@",Bt.REFERENCE)}${Kw(t,e.reference)}`}function fM(t){return`${nn(t)}@${SP(t.reference)}`}function nE(t){return Sa(t,[e=>nn(e),e=>e.range])}function Jw(t,e){return cs(t,e.locator)}function Mw(t,e,r){let o=xf(e)?qw(e):e;return r===null?`${Ln(t,o)} \u2192 ${wL(t).Cross}`:o.identHash===r.identHash?`${Ln(t,o)} \u2192 ${Kw(t,r.reference)}`:`${Ln(t,o)} \u2192 ${kr(t,r)}`}function BL(t,e,r){return r===null?`${kr(t,e)}`:`${kr(t,e)} (via ${PP(t,r.range)})`}function pM(t){return`node_modules/${nn(t)}`}function xP(t,e){return t.conditions?Zet(t.conditions,r=>{let[,o,a]=r.match(Fse),n=e[o];return n?n.includes(a):!0}):!0}var tE,Qse,kse,_w,Xet,Fse,Zet,Ks=dt(()=>{bt();tE=tt(Ie("querystring")),Qse=tt(ii()),kse=tt(Zz());Yl();e0();Gl();Ks();_w="virtual:",Xet=5,Fse=/(os|cpu|libc)=([a-z0-9_-]+)/,Zet=(0,kse.makeParser)(Fse)});var Nse,Lse=dt(()=>{Ks();Nse={hooks:{reduceDependency:(t,e,r,o,{resolver:a,resolveOptions:n})=>{for(let{pattern:u,reference:A}of e.topLevelWorkspace.manifest.resolutions){if(u.from&&(u.from.fullName!==nn(r)||e.configuration.normalizeLocator(us(Ys(u.from.fullName),u.from.description??r.reference)).locatorHash!==r.locatorHash)||u.descriptor.fullName!==nn(t)||e.configuration.normalizeDependency(mn(bf(u.descriptor.fullName),u.descriptor.description??t.range)).descriptorHash!==t.descriptorHash)continue;return a.bindDescriptor(e.configuration.normalizeDependency(mn(t,A)),e.topLevelWorkspace.anchoredLocator,n)}return t},validateProject:async(t,e)=>{for(let r of t.workspaces){let o=Jw(t.configuration,r);await t.configuration.triggerHook(a=>a.validateWorkspace,r,{reportWarning:(a,n)=>e.reportWarning(a,`${o}: ${n}`),reportError:(a,n)=>e.reportError(a,`${o}: ${n}`)})}},validateWorkspace:async(t,e)=>{let{manifest:r}=t;r.resolutions.length&&t.cwd!==t.project.cwd&&r.errors.push(new Error("Resolutions field will be ignored"));for(let o of r.errors)e.reportWarning(57,o.message)}}}});var Vw,oi,wd=dt(()=>{Vw=class{supportsDescriptor(e,r){return!!(e.range.startsWith(Vw.protocol)||r.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,r){return!!e.reference.startsWith(Vw.protocol)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){return[o.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let o=r.project.getWorkspaceByCwd(e.reference.slice(Vw.protocol.length));return{...e,version:o.manifest.version||"0.0.0",languageName:"unknown",linkType:"SOFT",conditions:null,dependencies:r.project.configuration.normalizeDependencyMap(new Map([...o.manifest.dependencies,...o.manifest.devDependencies])),peerDependencies:new Map([...o.manifest.peerDependencies]),dependenciesMeta:o.manifest.dependenciesMeta,peerDependenciesMeta:o.manifest.peerDependenciesMeta,bin:o.manifest.bin}}},oi=Vw;oi.protocol="workspace:"});var Tr={};Yt(Tr,{SemVer:()=>Use.SemVer,clean:()=>Att,satisfiesWithPrereleases:()=>Bd,validRange:()=>jc});function Bd(t,e,r=!1){if(!t)return!1;let o=`${e}${r}`,a=Ose.get(o);if(typeof a>"u")try{a=new bP.default.Range(e,{includePrerelease:!0,loose:r})}catch{return!1}finally{Ose.set(o,a||null)}else if(a===null)return!1;let n;try{n=new bP.default.SemVer(t,a)}catch{return!1}return a.test(n)?!0:(n.prerelease&&(n.prerelease=[]),a.set.some(u=>{for(let A of u)A.semver.prerelease&&(A.semver.prerelease=[]);return u.every(A=>A.test(n))}))}function jc(t){if(t.indexOf(":")!==-1)return null;let e=Mse.get(t);if(typeof e<"u")return e;try{e=new bP.default.Range(t)}catch{e=null}return Mse.set(t,e),e}function Att(t){let e=utt.exec(t);return e?e[1]:null}var bP,Use,Ose,Mse,utt,r0=dt(()=>{bP=tt(ii()),Use=tt(ii()),Ose=new Map;Mse=new Map;utt=/^(?:[\sv=]*?)((0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)(?:\s*)$/});function _se(t){let e=t.match(/^[ \t]+/m);return e?e[0]:" "}function Hse(t){return t.charCodeAt(0)===65279?t.slice(1):t}function Vo(t){return t.replace(/\\/g,"/")}function QP(t,{yamlCompatibilityMode:e}){return e?hL(t):typeof t>"u"||typeof t=="boolean"?t:null}function qse(t,e){let r=e.search(/[^!]/);if(r===-1)return"invalid";let o=r%2===0?"":"!",a=e.slice(r);return`${o}${t}=${a}`}function hM(t,e){return e.length===1?qse(t,e[0]):`(${e.map(r=>qse(t,r)).join(" | ")})`}var jse,iE,Nt,sE=dt(()=>{bt();Ol();jse=tt(ii());wd();Gl();r0();Ks();iE=class{constructor(){this.indent=" ";this.name=null;this.version=null;this.os=null;this.cpu=null;this.libc=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static async tryFind(e,{baseFs:r=new xn}={}){let o=V.join(e,"package.json");try{return await iE.fromFile(o,{baseFs:r})}catch(a){if(a.code==="ENOENT")return null;throw a}}static async find(e,{baseFs:r}={}){let o=await iE.tryFind(e,{baseFs:r});if(o===null)throw new Error("Manifest not found");return o}static async fromFile(e,{baseFs:r=new xn}={}){let o=new iE;return await o.loadFile(e,{baseFs:r}),o}static fromText(e){let r=new iE;return r.loadFromText(e),r}loadFromText(e){let r;try{r=JSON.parse(Hse(e)||"{}")}catch(o){throw o.message+=` (when parsing ${e})`,o}this.load(r),this.indent=_se(e)}async loadFile(e,{baseFs:r=new xn}){let o=await r.readFilePromise(e,"utf8"),a;try{a=JSON.parse(Hse(o)||"{}")}catch(n){throw n.message+=` (when parsing ${e})`,n}this.load(a),this.indent=_se(o)}load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!="object"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let o=[];if(this.name=null,typeof e.name=="string")try{this.name=Ys(e.name)}catch{o.push(new Error("Parsing failed for the 'name' field"))}if(typeof e.version=="string"?this.version=e.version:this.version=null,Array.isArray(e.os)){let n=[];this.os=n;for(let u of e.os)typeof u!="string"?o.push(new Error("Parsing failed for the 'os' field")):n.push(u)}else this.os=null;if(Array.isArray(e.cpu)){let n=[];this.cpu=n;for(let u of e.cpu)typeof u!="string"?o.push(new Error("Parsing failed for the 'cpu' field")):n.push(u)}else this.cpu=null;if(Array.isArray(e.libc)){let n=[];this.libc=n;for(let u of e.libc)typeof u!="string"?o.push(new Error("Parsing failed for the 'libc' field")):n.push(u)}else this.libc=null;if(typeof e.type=="string"?this.type=e.type:this.type=null,typeof e.packageManager=="string"?this.packageManager=e.packageManager:this.packageManager=null,typeof e.private=="boolean"?this.private=e.private:this.private=!1,typeof e.license=="string"?this.license=e.license:this.license=null,typeof e.languageName=="string"?this.languageName=e.languageName:this.languageName=null,typeof e.main=="string"?this.main=Vo(e.main):this.main=null,typeof e.module=="string"?this.module=Vo(e.module):this.module=null,e.browser!=null)if(typeof e.browser=="string")this.browser=Vo(e.browser);else{this.browser=new Map;for(let[n,u]of Object.entries(e.browser))this.browser.set(Vo(n),typeof u=="string"?Vo(u):u)}else this.browser=null;if(this.bin=new Map,typeof e.bin=="string")this.name!==null?this.bin.set(this.name.name,Vo(e.bin)):o.push(new Error("String bin field, but no attached package name"));else if(typeof e.bin=="object"&&e.bin!==null)for(let[n,u]of Object.entries(e.bin)){if(typeof u!="string"){o.push(new Error(`Invalid bin definition for '${n}'`));continue}let A=Ys(n);this.bin.set(A.name,Vo(u))}if(this.scripts=new Map,typeof e.scripts=="object"&&e.scripts!==null)for(let[n,u]of Object.entries(e.scripts)){if(typeof u!="string"){o.push(new Error(`Invalid script definition for '${n}'`));continue}this.scripts.set(n,u)}if(this.dependencies=new Map,typeof e.dependencies=="object"&&e.dependencies!==null)for(let[n,u]of Object.entries(e.dependencies)){if(typeof u!="string"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let A;try{A=Ys(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=mn(A,u);this.dependencies.set(p.identHash,p)}if(this.devDependencies=new Map,typeof e.devDependencies=="object"&&e.devDependencies!==null)for(let[n,u]of Object.entries(e.devDependencies)){if(typeof u!="string"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let A;try{A=Ys(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=mn(A,u);this.devDependencies.set(p.identHash,p)}if(this.peerDependencies=new Map,typeof e.peerDependencies=="object"&&e.peerDependencies!==null)for(let[n,u]of Object.entries(e.peerDependencies)){let A;try{A=Ys(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}(typeof u!="string"||!u.startsWith(oi.protocol)&&!jc(u))&&(o.push(new Error(`Invalid dependency range for '${n}'`)),u="*");let p=mn(A,u);this.peerDependencies.set(p.identHash,p)}typeof e.workspaces=="object"&&e.workspaces!==null&&e.workspaces.nohoist&&o.push(new Error("'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead"));let a=Array.isArray(e.workspaces)?e.workspaces:typeof e.workspaces=="object"&&e.workspaces!==null&&Array.isArray(e.workspaces.packages)?e.workspaces.packages:[];this.workspaceDefinitions=[];for(let n of a){if(typeof n!="string"){o.push(new Error(`Invalid workspace definition for '${n}'`));continue}this.workspaceDefinitions.push({pattern:n})}if(this.dependenciesMeta=new Map,typeof e.dependenciesMeta=="object"&&e.dependenciesMeta!==null)for(let[n,u]of Object.entries(e.dependenciesMeta)){if(typeof u!="object"||u===null){o.push(new Error(`Invalid meta field for '${n}`));continue}let A=t0(n),p=this.ensureDependencyMeta(A),h=QP(u.built,{yamlCompatibilityMode:r});if(h===null){o.push(new Error(`Invalid built meta field for '${n}'`));continue}let C=QP(u.optional,{yamlCompatibilityMode:r});if(C===null){o.push(new Error(`Invalid optional meta field for '${n}'`));continue}let w=QP(u.unplugged,{yamlCompatibilityMode:r});if(w===null){o.push(new Error(`Invalid unplugged meta field for '${n}'`));continue}Object.assign(p,{built:h,optional:C,unplugged:w})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta=="object"&&e.peerDependenciesMeta!==null)for(let[n,u]of Object.entries(e.peerDependenciesMeta)){if(typeof u!="object"||u===null){o.push(new Error(`Invalid meta field for '${n}'`));continue}let A=t0(n),p=this.ensurePeerDependencyMeta(A),h=QP(u.optional,{yamlCompatibilityMode:r});if(h===null){o.push(new Error(`Invalid optional meta field for '${n}'`));continue}Object.assign(p,{optional:h})}if(this.resolutions=[],typeof e.resolutions=="object"&&e.resolutions!==null)for(let[n,u]of Object.entries(e.resolutions)){if(typeof u!="string"){o.push(new Error(`Invalid resolution entry for '${n}'`));continue}try{this.resolutions.push({pattern:ID(n),reference:u})}catch(A){o.push(A);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let n of e.files){if(typeof n!="string"){o.push(new Error(`Invalid files entry for '${n}'`));continue}this.files.add(n)}}else this.files=null;if(typeof e.publishConfig=="object"&&e.publishConfig!==null){if(this.publishConfig={},typeof e.publishConfig.access=="string"&&(this.publishConfig.access=e.publishConfig.access),typeof e.publishConfig.main=="string"&&(this.publishConfig.main=Vo(e.publishConfig.main)),typeof e.publishConfig.module=="string"&&(this.publishConfig.module=Vo(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser=="string")this.publishConfig.browser=Vo(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[n,u]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set(Vo(n),typeof u=="string"?Vo(u):u)}if(typeof e.publishConfig.registry=="string"&&(this.publishConfig.registry=e.publishConfig.registry),typeof e.publishConfig.bin=="string")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,Vo(e.publishConfig.bin)]]):o.push(new Error("String bin field, but no attached package name"));else if(typeof e.publishConfig.bin=="object"&&e.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[n,u]of Object.entries(e.publishConfig.bin)){if(typeof u!="string"){o.push(new Error(`Invalid bin definition for '${n}'`));continue}this.publishConfig.bin.set(n,Vo(u))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let n of e.publishConfig.executableFiles){if(typeof n!="string"){o.push(new Error("Invalid executable file definition"));continue}this.publishConfig.executableFiles.add(Vo(n))}}}else this.publishConfig=null;if(typeof e.installConfig=="object"&&e.installConfig!==null){this.installConfig={};for(let n of Object.keys(e.installConfig))n==="hoistingLimits"?typeof e.installConfig.hoistingLimits=="string"?this.installConfig.hoistingLimits=e.installConfig.hoistingLimits:o.push(new Error("Invalid hoisting limits definition")):n=="selfReferences"?typeof e.installConfig.selfReferences=="boolean"?this.installConfig.selfReferences=e.installConfig.selfReferences:o.push(new Error("Invalid selfReferences definition, must be a boolean value")):o.push(new Error(`Unrecognized installConfig key: ${n}`))}else this.installConfig=null;if(typeof e.optionalDependencies=="object"&&e.optionalDependencies!==null)for(let[n,u]of Object.entries(e.optionalDependencies)){if(typeof u!="string"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let A;try{A=Ys(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=mn(A,u);this.dependencies.set(p.identHash,p);let h=mn(A,"unknown"),C=this.ensureDependencyMeta(h);Object.assign(C,{optional:!0})}typeof e.preferUnplugged=="boolean"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=o}getForScope(e){switch(e){case"dependencies":return this.dependencies;case"devDependencies":return this.devDependencies;case"peerDependencies":return this.peerDependencies;default:throw new Error(`Unsupported value ("${e}")`)}}hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||this.peerDependencies.has(e.identHash))}hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.devDependencies.has(e.identHash))}hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDependency(e))}getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(hM("os",this.os)),this.cpu&&this.cpu.length>0&&e.push(hM("cpu",this.cpu)),this.libc&&this.libc.length>0&&e.push(hM("libc",this.libc)),e.length>0?e.join(" & "):null}ensureDependencyMeta(e){if(e.range!=="unknown"&&!jse.default.valid(e.range))throw new Error(`Invalid meta field range for '${xa(e)}'`);let r=nn(e),o=e.range!=="unknown"?e.range:null,a=this.dependenciesMeta.get(r);a||this.dependenciesMeta.set(r,a=new Map);let n=a.get(o);return n||a.set(o,n={}),n}ensurePeerDependencyMeta(e){if(e.range!=="unknown")throw new Error(`Invalid meta field range for '${xa(e)}'`);let r=nn(e),o=this.peerDependenciesMeta.get(r);return o||this.peerDependenciesMeta.set(r,o={}),o}setRawField(e,r,{after:o=[]}={}){let a=new Set(o.filter(n=>Object.prototype.hasOwnProperty.call(this.raw,n)));if(a.size===0||Object.prototype.hasOwnProperty.call(this.raw,e))this.raw[e]=r;else{let n=this.raw,u=this.raw={},A=!1;for(let p of Object.keys(n))u[p]=n[p],A||(a.delete(p),a.size===0&&(u[e]=r,A=!0))}}exportTo(e,{compatibilityMode:r=!0}={}){if(Object.assign(e,this.raw),this.name!==null?e.name=nn(this.name):delete e.name,this.version!==null?e.version=this.version:delete e.version,this.os!==null?e.os=this.os:delete e.os,this.cpu!==null?e.cpu=this.cpu:delete e.cpu,this.type!==null?e.type=this.type:delete e.type,this.packageManager!==null?e.packageManager=this.packageManager:delete e.packageManager,this.private?e.private=!0:delete e.private,this.license!==null?e.license=this.license:delete e.license,this.languageName!==null?e.languageName=this.languageName:delete e.languageName,this.main!==null?e.main=this.main:delete e.main,this.module!==null?e.module=this.module:delete e.module,this.browser!==null){let n=this.browser;typeof n=="string"?e.browser=n:n instanceof Map&&(e.browser=Object.assign({},...Array.from(n.keys()).sort().map(u=>({[u]:n.get(u)}))))}else delete e.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?e.bin=this.bin.get(this.name.name):this.bin.size>0?e.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(n=>({[n]:this.bin.get(n)}))):delete e.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?e.workspaces={...this.raw.workspaces,packages:this.workspaceDefinitions.map(({pattern:n})=>n)}:e.workspaces=this.workspaceDefinitions.map(({pattern:n})=>n):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?e.workspaces=this.raw.workspaces:delete e.workspaces;let o=[],a=[];for(let n of this.dependencies.values()){let u=this.dependenciesMeta.get(nn(n)),A=!1;if(r&&u){let p=u.get(null);p&&p.optional&&(A=!0)}A?a.push(n):o.push(n)}o.length>0?e.dependencies=Object.assign({},...nE(o).map(n=>({[nn(n)]:n.range}))):delete e.dependencies,a.length>0?e.optionalDependencies=Object.assign({},...nE(a).map(n=>({[nn(n)]:n.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...nE(this.devDependencies.values()).map(n=>({[nn(n)]:n.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...nE(this.peerDependencies.values()).map(n=>({[nn(n)]:n.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[n,u]of Sa(this.dependenciesMeta.entries(),([A,p])=>A))for(let[A,p]of Sa(u.entries(),([h,C])=>h!==null?`0${h}`:"1")){let h=A!==null?xa(mn(Ys(n),A)):n,C={...p};r&&A===null&&delete C.optional,Object.keys(C).length!==0&&(e.dependenciesMeta[h]=C)}if(Object.keys(e.dependenciesMeta).length===0&&delete e.dependenciesMeta,this.peerDependenciesMeta.size>0?e.peerDependenciesMeta=Object.assign({},...Sa(this.peerDependenciesMeta.entries(),([n,u])=>n).map(([n,u])=>({[n]:u}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:n,reference:u})=>({[wD(n)]:u}))):delete e.resolutions,this.files!==null?e.files=Array.from(this.files):delete e.files,this.preferUnplugged!==null?e.preferUnplugged=this.preferUnplugged:delete e.preferUnplugged,this.scripts!==null&&this.scripts.size>0){e.scripts??(e.scripts={});for(let n of Object.keys(e.scripts))this.scripts.has(n)||delete e.scripts[n];for(let[n,u]of this.scripts.entries())e.scripts[n]=u}else delete e.scripts;return e}},Nt=iE;Nt.fileName="package.json",Nt.allDependencies=["dependencies","devDependencies","peerDependencies"],Nt.hardDependencies=["dependencies","devDependencies"]});var Wse=U((mNt,Gse)=>{var ftt=ql(),ptt=function(){return ftt.Date.now()};Gse.exports=ptt});var Kse=U((yNt,Yse)=>{var htt=/\s/;function gtt(t){for(var e=t.length;e--&&htt.test(t.charAt(e)););return e}Yse.exports=gtt});var Vse=U((ENt,Jse)=>{var dtt=Kse(),mtt=/^\s+/;function ytt(t){return t&&t.slice(0,dtt(t)+1).replace(mtt,"")}Jse.exports=ytt});var oE=U((CNt,zse)=>{var Ett=ud(),Ctt=zu(),Itt="[object Symbol]";function wtt(t){return typeof t=="symbol"||Ctt(t)&&Ett(t)==Itt}zse.exports=wtt});var eoe=U((INt,$se)=>{var Btt=Vse(),Xse=il(),vtt=oE(),Zse=0/0,Dtt=/^[-+]0x[0-9a-f]+$/i,Stt=/^0b[01]+$/i,Ptt=/^0o[0-7]+$/i,xtt=parseInt;function btt(t){if(typeof t=="number")return t;if(vtt(t))return Zse;if(Xse(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=Xse(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=Btt(t);var r=Stt.test(t);return r||Ptt.test(t)?xtt(t.slice(2),r?2:8):Dtt.test(t)?Zse:+t}$se.exports=btt});var noe=U((wNt,roe)=>{var Qtt=il(),gM=Wse(),toe=eoe(),ktt="Expected a function",Ftt=Math.max,Rtt=Math.min;function Ttt(t,e,r){var o,a,n,u,A,p,h=0,C=!1,w=!1,v=!0;if(typeof t!="function")throw new TypeError(ktt);e=toe(e)||0,Qtt(r)&&(C=!!r.leading,w="maxWait"in r,n=w?Ftt(toe(r.maxWait)||0,e):n,v="trailing"in r?!!r.trailing:v);function b(he){var ve=o,ge=a;return o=a=void 0,h=he,u=t.apply(ge,ve),u}function E(he){return h=he,A=setTimeout(_,e),C?b(he):u}function R(he){var ve=he-p,ge=he-h,le=e-ve;return w?Rtt(le,n-ge):le}function L(he){var ve=he-p,ge=he-h;return p===void 0||ve>=e||ve<0||w&&ge>=n}function _(){var he=gM();if(L(he))return J(he);A=setTimeout(_,R(he))}function J(he){return A=void 0,v&&o?b(he):(o=a=void 0,u)}function re(){A!==void 0&&clearTimeout(A),h=0,o=p=a=A=void 0}function oe(){return A===void 0?u:J(gM())}function pe(){var he=gM(),ve=L(he);if(o=arguments,a=this,p=he,ve){if(A===void 0)return E(p);if(w)return clearTimeout(A),A=setTimeout(_,e),b(p)}return A===void 0&&(A=setTimeout(_,e)),u}return pe.cancel=re,pe.flush=oe,pe}roe.exports=Ttt});var dM=U((BNt,ioe)=>{var Ntt=noe(),Ltt=il(),Ott="Expected a function";function Mtt(t,e,r){var o=!0,a=!0;if(typeof t!="function")throw new TypeError(Ott);return Ltt(r)&&(o="leading"in r?!!r.leading:o,a="trailing"in r?!!r.trailing:a),Ntt(t,e,{leading:o,maxWait:e,trailing:a})}ioe.exports=Mtt});function _tt(t){return typeof t.reportCode<"u"}var soe,ooe,aoe,Utt,Jt,Vs,Jl=dt(()=>{soe=tt(dM()),ooe=Ie("stream"),aoe=Ie("string_decoder"),Utt=15,Jt=class extends Error{constructor(r,o,a){super(o);this.reportExtra=a;this.reportCode=r}};Vs=class{constructor(){this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}static progressViaCounter(e){let r=0,o,a=new Promise(p=>{o=p}),n=p=>{let h=o;a=new Promise(C=>{o=C}),r=p,h()},u=(p=0)=>{n(r+1)},A=async function*(){for(;r<e;)await a,yield{progress:r/e}}();return{[Symbol.asyncIterator](){return A},hasProgress:!0,hasTitle:!1,set:n,tick:u}}static progressViaTitle(){let e,r,o=new Promise(u=>{r=u}),a=(0,soe.default)(u=>{let A=r;o=new Promise(p=>{r=p}),e=u,A()},1e3/Utt),n=async function*(){for(;;)await o,yield{title:e}}();return{[Symbol.asyncIterator](){return n},hasProgress:!1,hasTitle:!0,setTitle:a}}async startProgressPromise(e,r){let o=this.reportProgress(e);try{return await r(e)}finally{o.stop()}}startProgressSync(e,r){let o=this.reportProgress(e);try{return r(e)}finally{o.stop()}}reportInfoOnce(e,r,o){var n;let a=o&&o.key?o.key:r;this.reportedInfos.has(a)||(this.reportedInfos.add(a),this.reportInfo(e,r),(n=o==null?void 0:o.reportExtra)==null||n.call(o,this))}reportWarningOnce(e,r,o){var n;let a=o&&o.key?o.key:r;this.reportedWarnings.has(a)||(this.reportedWarnings.add(a),this.reportWarning(e,r),(n=o==null?void 0:o.reportExtra)==null||n.call(o,this))}reportErrorOnce(e,r,o){var n;let a=o&&o.key?o.key:r;this.reportedErrors.has(a)||(this.reportedErrors.add(a),this.reportError(e,r),(n=o==null?void 0:o.reportExtra)==null||n.call(o,this))}reportExceptionOnce(e){_tt(e)?this.reportErrorOnce(e.reportCode,e.message,{key:e,reportExtra:e.reportExtra}):this.reportErrorOnce(1,e.stack||e.message,{key:e})}createStreamReporter(e=null){let r=new ooe.PassThrough,o=new aoe.StringDecoder,a="";return r.on("data",n=>{let u=o.write(n),A;do if(A=u.indexOf(` | 134 | `,CHAR_NO_BREAK_SPACE:"\xA0",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:" ",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\uFEFF"}});var hZ=U((kkt,pZ)=>{"use strict";var h5e=BS(),{MAX_LENGTH:uZ,CHAR_BACKSLASH:BN,CHAR_BACKTICK:g5e,CHAR_COMMA:d5e,CHAR_DOT:m5e,CHAR_LEFT_PARENTHESES:y5e,CHAR_RIGHT_PARENTHESES:E5e,CHAR_LEFT_CURLY_BRACE:C5e,CHAR_RIGHT_CURLY_BRACE:I5e,CHAR_LEFT_SQUARE_BRACKET:AZ,CHAR_RIGHT_SQUARE_BRACKET:fZ,CHAR_DOUBLE_QUOTE:w5e,CHAR_SINGLE_QUOTE:B5e,CHAR_NO_BREAK_SPACE:v5e,CHAR_ZERO_WIDTH_NOBREAK_SPACE:D5e}=cZ(),S5e=(t,e={})=>{if(typeof t!="string")throw new TypeError("Expected a string");let r=e||{},o=typeof r.maxLength=="number"?Math.min(uZ,r.maxLength):uZ;if(t.length>o)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${o})`);let a={type:"root",input:t,nodes:[]},n=[a],u=a,A=a,p=0,h=t.length,C=0,w=0,v,b={},E=()=>t[C++],R=L=>{if(L.type==="text"&&A.type==="dot"&&(A.type="text"),A&&A.type==="text"&&L.type==="text"){A.value+=L.value;return}return u.nodes.push(L),L.parent=u,L.prev=A,A=L,L};for(R({type:"bos"});C<h;)if(u=n[n.length-1],v=E(),!(v===D5e||v===v5e)){if(v===BN){R({type:"text",value:(e.keepEscaping?v:"")+E()});continue}if(v===fZ){R({type:"text",value:"\\"+v});continue}if(v===AZ){p++;let L=!0,_;for(;C<h&&(_=E());){if(v+=_,_===AZ){p++;continue}if(_===BN){v+=E();continue}if(_===fZ&&(p--,p===0))break}R({type:"text",value:v});continue}if(v===y5e){u=R({type:"paren",nodes:[]}),n.push(u),R({type:"text",value:v});continue}if(v===E5e){if(u.type!=="paren"){R({type:"text",value:v});continue}u=n.pop(),R({type:"text",value:v}),u=n[n.length-1];continue}if(v===w5e||v===B5e||v===g5e){let L=v,_;for(e.keepQuotes!==!0&&(v="");C<h&&(_=E());){if(_===BN){v+=_+E();continue}if(_===L){e.keepQuotes===!0&&(v+=_);break}v+=_}R({type:"text",value:v});continue}if(v===C5e){w++;let _={type:"brace",open:!0,close:!1,dollar:A.value&&A.value.slice(-1)==="$"||u.dollar===!0,depth:w,commas:0,ranges:0,nodes:[]};u=R(_),n.push(u),R({type:"open",value:v});continue}if(v===I5e){if(u.type!=="brace"){R({type:"text",value:v});continue}let L="close";u=n.pop(),u.close=!0,R({type:L,value:v}),w--,u=n[n.length-1];continue}if(v===d5e&&w>0){if(u.ranges>0){u.ranges=0;let L=u.nodes.shift();u.nodes=[L,{type:"text",value:h5e(u)}]}R({type:"comma",value:v}),u.commas++;continue}if(v===m5e&&w>0&&u.commas===0){let L=u.nodes;if(w===0||L.length===0){R({type:"text",value:v});continue}if(A.type==="dot"){if(u.range=[],A.value+=v,A.type="range",u.nodes.length!==3&&u.nodes.length!==5){u.invalid=!0,u.ranges=0,A.type="text";continue}u.ranges++,u.args=[];continue}if(A.type==="range"){L.pop();let _=L[L.length-1];_.value+=A.value+v,A=_,u.ranges--;continue}R({type:"dot",value:v});continue}R({type:"text",value:v})}do if(u=n.pop(),u.type!=="root"){u.nodes.forEach(V=>{V.nodes||(V.type==="open"&&(V.isOpen=!0),V.type==="close"&&(V.isClose=!0),V.nodes||(V.type="text"),V.invalid=!0)});let L=n[n.length-1],_=L.nodes.indexOf(u);L.nodes.splice(_,1,...u.nodes)}while(n.length>0);return R({type:"eos"}),a};pZ.exports=S5e});var mZ=U((Fkt,dZ)=>{"use strict";var gZ=BS(),P5e=iZ(),x5e=aZ(),b5e=hZ(),sl=(t,e={})=>{let r=[];if(Array.isArray(t))for(let o of t){let a=sl.create(o,e);Array.isArray(a)?r.push(...a):r.push(a)}else r=[].concat(sl.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};sl.parse=(t,e={})=>b5e(t,e);sl.stringify=(t,e={})=>gZ(typeof t=="string"?sl.parse(t,e):t,e);sl.compile=(t,e={})=>(typeof t=="string"&&(t=sl.parse(t,e)),P5e(t,e));sl.expand=(t,e={})=>{typeof t=="string"&&(t=sl.parse(t,e));let r=x5e(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};sl.create=(t,e={})=>t===""||t.length<3?[t]:e.expand!==!0?sl.compile(t,e):sl.expand(t,e);dZ.exports=sl});var Cw=U((Rkt,wZ)=>{"use strict";var Q5e=Ie("path"),Ju="\\\\/",yZ=`[^${Ju}]`,Df="\\.",k5e="\\+",F5e="\\?",DS="\\/",R5e="(?=.)",EZ="[^/]",vN=`(?:${DS}|$)`,CZ=`(?:^|${DS})`,DN=`${Df}{1,2}${vN}`,T5e=`(?!${Df})`,N5e=`(?!${CZ}${DN})`,L5e=`(?!${Df}{0,1}${vN})`,O5e=`(?!${DN})`,M5e=`[^.${DS}]`,U5e=`${EZ}*?`,IZ={DOT_LITERAL:Df,PLUS_LITERAL:k5e,QMARK_LITERAL:F5e,SLASH_LITERAL:DS,ONE_CHAR:R5e,QMARK:EZ,END_ANCHOR:vN,DOTS_SLASH:DN,NO_DOT:T5e,NO_DOTS:N5e,NO_DOT_SLASH:L5e,NO_DOTS_SLASH:O5e,QMARK_NO_DOT:M5e,STAR:U5e,START_ANCHOR:CZ},_5e={...IZ,SLASH_LITERAL:`[${Ju}]`,QMARK:yZ,STAR:`${yZ}*?`,DOTS_SLASH:`${Df}{1,2}(?:[${Ju}]|$)`,NO_DOT:`(?!${Df})`,NO_DOTS:`(?!(?:^|[${Ju}])${Df}{1,2}(?:[${Ju}]|$))`,NO_DOT_SLASH:`(?!${Df}{0,1}(?:[${Ju}]|$))`,NO_DOTS_SLASH:`(?!${Df}{1,2}(?:[${Ju}]|$))`,QMARK_NO_DOT:`[^.${Ju}]`,START_ANCHOR:`(?:^|[${Ju}])`,END_ANCHOR:`(?:[${Ju}]|$)`},H5e={alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"};wZ.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:H5e,REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:Q5e.sep,extglobChars(t){return{"!":{type:"negate",open:"(?:(?!(?:",close:`))${t.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}},globChars(t){return t===!0?_5e:IZ}}});var Iw=U(Pa=>{"use strict";var q5e=Ie("path"),j5e=process.platform==="win32",{REGEX_BACKSLASH:G5e,REGEX_REMOVE_BACKSLASH:W5e,REGEX_SPECIAL_CHARS:Y5e,REGEX_SPECIAL_CHARS_GLOBAL:K5e}=Cw();Pa.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);Pa.hasRegexChars=t=>Y5e.test(t);Pa.isRegexChar=t=>t.length===1&&Pa.hasRegexChars(t);Pa.escapeRegex=t=>t.replace(K5e,"\\$1");Pa.toPosixSlashes=t=>t.replace(G5e,"/");Pa.removeBackslashes=t=>t.replace(W5e,e=>e==="\\"?"":e);Pa.supportsLookbehinds=()=>{let t=process.version.slice(1).split(".").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};Pa.isWindows=t=>t&&typeof t.windows=="boolean"?t.windows:j5e===!0||q5e.sep==="\\";Pa.escapeLast=(t,e,r)=>{let o=t.lastIndexOf(e,r);return o===-1?t:t[o-1]==="\\"?Pa.escapeLast(t,e,o-1):`${t.slice(0,o)}\\${t.slice(o)}`};Pa.removePrefix=(t,e={})=>{let r=t;return r.startsWith("./")&&(r=r.slice(2),e.prefix="./"),r};Pa.wrapOutput=(t,e={},r={})=>{let o=r.contains?"":"^",a=r.contains?"":"$",n=`${o}(?:${t})${a}`;return e.negated===!0&&(n=`(?:^(?!${n}).*$)`),n}});var QZ=U((Nkt,bZ)=>{"use strict";var BZ=Iw(),{CHAR_ASTERISK:SN,CHAR_AT:V5e,CHAR_BACKWARD_SLASH:ww,CHAR_COMMA:J5e,CHAR_DOT:PN,CHAR_EXCLAMATION_MARK:xN,CHAR_FORWARD_SLASH:xZ,CHAR_LEFT_CURLY_BRACE:bN,CHAR_LEFT_PARENTHESES:QN,CHAR_LEFT_SQUARE_BRACKET:z5e,CHAR_PLUS:X5e,CHAR_QUESTION_MARK:vZ,CHAR_RIGHT_CURLY_BRACE:Z5e,CHAR_RIGHT_PARENTHESES:DZ,CHAR_RIGHT_SQUARE_BRACKET:$5e}=Cw(),SZ=t=>t===xZ||t===ww,PZ=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},e7e=(t,e)=>{let r=e||{},o=t.length-1,a=r.parts===!0||r.scanToEnd===!0,n=[],u=[],A=[],p=t,h=-1,C=0,w=0,v=!1,b=!1,E=!1,R=!1,L=!1,_=!1,V=!1,re=!1,ae=!1,he=!1,pe=0,De,ge,le={value:"",depth:0,isGlob:!1},Pe=()=>h>=o,g=()=>p.charCodeAt(h+1),ve=()=>(De=ge,p.charCodeAt(++h));for(;h<o;){ge=ve();let me;if(ge===ww){V=le.backslashes=!0,ge=ve(),ge===bN&&(_=!0);continue}if(_===!0||ge===bN){for(pe++;Pe()!==!0&&(ge=ve());){if(ge===ww){V=le.backslashes=!0,ve();continue}if(ge===bN){pe++;continue}if(_!==!0&&ge===PN&&(ge=ve())===PN){if(v=le.isBrace=!0,E=le.isGlob=!0,he=!0,a===!0)continue;break}if(_!==!0&&ge===J5e){if(v=le.isBrace=!0,E=le.isGlob=!0,he=!0,a===!0)continue;break}if(ge===Z5e&&(pe--,pe===0)){_=!1,v=le.isBrace=!0,he=!0;break}}if(a===!0)continue;break}if(ge===xZ){if(n.push(h),u.push(le),le={value:"",depth:0,isGlob:!1},he===!0)continue;if(De===PN&&h===C+1){C+=2;continue}w=h+1;continue}if(r.noext!==!0&&(ge===X5e||ge===V5e||ge===SN||ge===vZ||ge===xN)===!0&&g()===QN){if(E=le.isGlob=!0,R=le.isExtglob=!0,he=!0,ge===xN&&h===C&&(ae=!0),a===!0){for(;Pe()!==!0&&(ge=ve());){if(ge===ww){V=le.backslashes=!0,ge=ve();continue}if(ge===DZ){E=le.isGlob=!0,he=!0;break}}continue}break}if(ge===SN){if(De===SN&&(L=le.isGlobstar=!0),E=le.isGlob=!0,he=!0,a===!0)continue;break}if(ge===vZ){if(E=le.isGlob=!0,he=!0,a===!0)continue;break}if(ge===z5e){for(;Pe()!==!0&&(me=ve());){if(me===ww){V=le.backslashes=!0,ve();continue}if(me===$5e){b=le.isBracket=!0,E=le.isGlob=!0,he=!0;break}}if(a===!0)continue;break}if(r.nonegate!==!0&&ge===xN&&h===C){re=le.negated=!0,C++;continue}if(r.noparen!==!0&&ge===QN){if(E=le.isGlob=!0,a===!0){for(;Pe()!==!0&&(ge=ve());){if(ge===QN){V=le.backslashes=!0,ge=ve();continue}if(ge===DZ){he=!0;break}}continue}break}if(E===!0){if(he=!0,a===!0)continue;break}}r.noext===!0&&(R=!1,E=!1);let Ee=p,de="",ne="";C>0&&(de=p.slice(0,C),p=p.slice(C),w-=C),Ee&&E===!0&&w>0?(Ee=p.slice(0,w),ne=p.slice(w)):E===!0?(Ee="",ne=p):Ee=p,Ee&&Ee!==""&&Ee!=="/"&&Ee!==p&&SZ(Ee.charCodeAt(Ee.length-1))&&(Ee=Ee.slice(0,-1)),r.unescape===!0&&(ne&&(ne=BZ.removeBackslashes(ne)),Ee&&V===!0&&(Ee=BZ.removeBackslashes(Ee)));let Z={prefix:de,input:t,start:C,base:Ee,glob:ne,isBrace:v,isBracket:b,isGlob:E,isExtglob:R,isGlobstar:L,negated:re,negatedExtglob:ae};if(r.tokens===!0&&(Z.maxDepth=0,SZ(ge)||u.push(le),Z.tokens=u),r.parts===!0||r.tokens===!0){let me;for(let be=0;be<n.length;be++){let ut=me?me+1:C,H=n[be],yt=t.slice(ut,H);r.tokens&&(be===0&&C!==0?(u[be].isPrefix=!0,u[be].value=de):u[be].value=yt,PZ(u[be]),Z.maxDepth+=u[be].depth),(be!==0||yt!=="")&&A.push(yt),me=H}if(me&&me+1<t.length){let be=t.slice(me+1);A.push(be),r.tokens&&(u[u.length-1].value=be,PZ(u[u.length-1]),Z.maxDepth+=u[u.length-1].depth)}Z.slashes=n,Z.parts=A}return Z};bZ.exports=e7e});var RZ=U((Lkt,FZ)=>{"use strict";var SS=Cw(),ol=Iw(),{MAX_LENGTH:PS,POSIX_REGEX_SOURCE:t7e,REGEX_NON_SPECIAL_CHARS:r7e,REGEX_SPECIAL_CHARS_BACKREF:n7e,REPLACEMENTS:kZ}=SS,i7e=(t,e)=>{if(typeof e.expandRange=="function")return e.expandRange(...t,e);t.sort();let r=`[${t.join("-")}]`;try{new RegExp(r)}catch{return t.map(a=>ol.escapeRegex(a)).join("..")}return r},Ny=(t,e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`,kN=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");t=kZ[t]||t;let r={...e},o=typeof r.maxLength=="number"?Math.min(PS,r.maxLength):PS,a=t.length;if(a>o)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${o}`);let n={type:"bos",value:"",output:r.prepend||""},u=[n],A=r.capture?"":"?:",p=ol.isWindows(e),h=SS.globChars(p),C=SS.extglobChars(h),{DOT_LITERAL:w,PLUS_LITERAL:v,SLASH_LITERAL:b,ONE_CHAR:E,DOTS_SLASH:R,NO_DOT:L,NO_DOT_SLASH:_,NO_DOTS_SLASH:V,QMARK:re,QMARK_NO_DOT:ae,STAR:he,START_ANCHOR:pe}=h,De=x=>`(${A}(?:(?!${pe}${x.dot?R:w}).)*?)`,ge=r.dot?"":L,le=r.dot?re:ae,Pe=r.bash===!0?De(r):he;r.capture&&(Pe=`(${Pe})`),typeof r.noext=="boolean"&&(r.noextglob=r.noext);let g={input:t,index:-1,start:0,dot:r.dot===!0,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:u};t=ol.removePrefix(t,g),a=t.length;let ve=[],Ee=[],de=[],ne=n,Z,me=()=>g.index===a-1,be=g.peek=(x=1)=>t[g.index+x],ut=g.advance=()=>t[++g.index]||"",H=()=>t.slice(g.index+1),yt=(x="",I=0)=>{g.consumed+=x,g.index+=I},Me=x=>{g.output+=x.output!=null?x.output:x.value,yt(x.value)},Te=()=>{let x=1;for(;be()==="!"&&(be(2)!=="("||be(3)==="?");)ut(),g.start++,x++;return x%2===0?!1:(g.negated=!0,g.start++,!0)},Qe=x=>{g[x]++,de.push(x)},_e=x=>{g[x]--,de.pop()},qe=x=>{if(ne.type==="globstar"){let I=g.braces>0&&(x.type==="comma"||x.type==="brace"),P=x.extglob===!0||ve.length&&(x.type==="pipe"||x.type==="paren");x.type!=="slash"&&x.type!=="paren"&&!I&&!P&&(g.output=g.output.slice(0,-ne.output.length),ne.type="star",ne.value="*",ne.output=Pe,g.output+=ne.output)}if(ve.length&&x.type!=="paren"&&(ve[ve.length-1].inner+=x.value),(x.value||x.output)&&Me(x),ne&&ne.type==="text"&&x.type==="text"){ne.value+=x.value,ne.output=(ne.output||"")+x.value;return}x.prev=ne,u.push(x),ne=x},At=(x,I)=>{let P={...C[I],conditions:1,inner:""};P.prev=ne,P.parens=g.parens,P.output=g.output;let y=(r.capture?"(":"")+P.open;Qe("parens"),qe({type:x,value:I,output:g.output?"":E}),qe({type:"paren",extglob:!0,value:ut(),output:y}),ve.push(P)},Oe=x=>{let I=x.close+(r.capture?")":""),P;if(x.type==="negate"){let y=Pe;if(x.inner&&x.inner.length>1&&x.inner.includes("/")&&(y=De(r)),(y!==Pe||me()||/^\)+$/.test(H()))&&(I=x.close=`)$))${y}`),x.inner.includes("*")&&(P=H())&&/^\.[^\\/.]+$/.test(P)){let F=kN(P,{...e,fastpaths:!1}).output;I=x.close=`)${F})${y})`}x.prev.type==="bos"&&(g.negatedExtglob=!0)}qe({type:"paren",extglob:!0,value:Z,output:I}),_e("parens")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\]{}"])/.test(t)){let x=!1,I=t.replace(n7e,(P,y,F,z,X,$)=>z==="\\"?(x=!0,P):z==="?"?y?y+z+(X?re.repeat(X.length):""):$===0?le+(X?re.repeat(X.length):""):re.repeat(F.length):z==="."?w.repeat(F.length):z==="*"?y?y+z+(X?Pe:""):Pe:y?P:`\\${P}`);return x===!0&&(r.unescape===!0?I=I.replace(/\\/g,""):I=I.replace(/\\+/g,P=>P.length%2===0?"\\\\":P?"\\":"")),I===t&&r.contains===!0?(g.output=t,g):(g.output=ol.wrapOutput(I,g,e),g)}for(;!me();){if(Z=ut(),Z==="\0")continue;if(Z==="\\"){let P=be();if(P==="/"&&r.bash!==!0||P==="."||P===";")continue;if(!P){Z+="\\",qe({type:"text",value:Z});continue}let y=/^\\+/.exec(H()),F=0;if(y&&y[0].length>2&&(F=y[0].length,g.index+=F,F%2!==0&&(Z+="\\")),r.unescape===!0?Z=ut():Z+=ut(),g.brackets===0){qe({type:"text",value:Z});continue}}if(g.brackets>0&&(Z!=="]"||ne.value==="["||ne.value==="[^")){if(r.posix!==!1&&Z===":"){let P=ne.value.slice(1);if(P.includes("[")&&(ne.posix=!0,P.includes(":"))){let y=ne.value.lastIndexOf("["),F=ne.value.slice(0,y),z=ne.value.slice(y+2),X=t7e[z];if(X){ne.value=F+X,g.backtrack=!0,ut(),!n.output&&u.indexOf(ne)===1&&(n.output=E);continue}}}(Z==="["&&be()!==":"||Z==="-"&&be()==="]")&&(Z=`\\${Z}`),Z==="]"&&(ne.value==="["||ne.value==="[^")&&(Z=`\\${Z}`),r.posix===!0&&Z==="!"&&ne.value==="["&&(Z="^"),ne.value+=Z,Me({value:Z});continue}if(g.quotes===1&&Z!=='"'){Z=ol.escapeRegex(Z),ne.value+=Z,Me({value:Z});continue}if(Z==='"'){g.quotes=g.quotes===1?0:1,r.keepQuotes===!0&&qe({type:"text",value:Z});continue}if(Z==="("){Qe("parens"),qe({type:"paren",value:Z});continue}if(Z===")"){if(g.parens===0&&r.strictBrackets===!0)throw new SyntaxError(Ny("opening","("));let P=ve[ve.length-1];if(P&&g.parens===P.parens+1){Oe(ve.pop());continue}qe({type:"paren",value:Z,output:g.parens?")":"\\)"}),_e("parens");continue}if(Z==="["){if(r.nobracket===!0||!H().includes("]")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(Ny("closing","]"));Z=`\\${Z}`}else Qe("brackets");qe({type:"bracket",value:Z});continue}if(Z==="]"){if(r.nobracket===!0||ne&&ne.type==="bracket"&&ne.value.length===1){qe({type:"text",value:Z,output:`\\${Z}`});continue}if(g.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(Ny("opening","["));qe({type:"text",value:Z,output:`\\${Z}`});continue}_e("brackets");let P=ne.value.slice(1);if(ne.posix!==!0&&P[0]==="^"&&!P.includes("/")&&(Z=`/${Z}`),ne.value+=Z,Me({value:Z}),r.literalBrackets===!1||ol.hasRegexChars(P))continue;let y=ol.escapeRegex(ne.value);if(g.output=g.output.slice(0,-ne.value.length),r.literalBrackets===!0){g.output+=y,ne.value=y;continue}ne.value=`(${A}${y}|${ne.value})`,g.output+=ne.value;continue}if(Z==="{"&&r.nobrace!==!0){Qe("braces");let P={type:"brace",value:Z,output:"(",outputIndex:g.output.length,tokensIndex:g.tokens.length};Ee.push(P),qe(P);continue}if(Z==="}"){let P=Ee[Ee.length-1];if(r.nobrace===!0||!P){qe({type:"text",value:Z,output:Z});continue}let y=")";if(P.dots===!0){let F=u.slice(),z=[];for(let X=F.length-1;X>=0&&(u.pop(),F[X].type!=="brace");X--)F[X].type!=="dots"&&z.unshift(F[X].value);y=i7e(z,r),g.backtrack=!0}if(P.comma!==!0&&P.dots!==!0){let F=g.output.slice(0,P.outputIndex),z=g.tokens.slice(P.tokensIndex);P.value=P.output="\\{",Z=y="\\}",g.output=F;for(let X of z)g.output+=X.output||X.value}qe({type:"brace",value:Z,output:y}),_e("braces"),Ee.pop();continue}if(Z==="|"){ve.length>0&&ve[ve.length-1].conditions++,qe({type:"text",value:Z});continue}if(Z===","){let P=Z,y=Ee[Ee.length-1];y&&de[de.length-1]==="braces"&&(y.comma=!0,P="|"),qe({type:"comma",value:Z,output:P});continue}if(Z==="/"){if(ne.type==="dot"&&g.index===g.start+1){g.start=g.index+1,g.consumed="",g.output="",u.pop(),ne=n;continue}qe({type:"slash",value:Z,output:b});continue}if(Z==="."){if(g.braces>0&&ne.type==="dot"){ne.value==="."&&(ne.output=w);let P=Ee[Ee.length-1];ne.type="dots",ne.output+=Z,ne.value+=Z,P.dots=!0;continue}if(g.braces+g.parens===0&&ne.type!=="bos"&&ne.type!=="slash"){qe({type:"text",value:Z,output:w});continue}qe({type:"dot",value:Z,output:w});continue}if(Z==="?"){if(!(ne&&ne.value==="(")&&r.noextglob!==!0&&be()==="("&&be(2)!=="?"){At("qmark",Z);continue}if(ne&&ne.type==="paren"){let y=be(),F=Z;if(y==="<"&&!ol.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");(ne.value==="("&&!/[!=<:]/.test(y)||y==="<"&&!/<([!=]|\w+>)/.test(H()))&&(F=`\\${Z}`),qe({type:"text",value:Z,output:F});continue}if(r.dot!==!0&&(ne.type==="slash"||ne.type==="bos")){qe({type:"qmark",value:Z,output:ae});continue}qe({type:"qmark",value:Z,output:re});continue}if(Z==="!"){if(r.noextglob!==!0&&be()==="("&&(be(2)!=="?"||!/[!=<:]/.test(be(3)))){At("negate",Z);continue}if(r.nonegate!==!0&&g.index===0){Te();continue}}if(Z==="+"){if(r.noextglob!==!0&&be()==="("&&be(2)!=="?"){At("plus",Z);continue}if(ne&&ne.value==="("||r.regex===!1){qe({type:"plus",value:Z,output:v});continue}if(ne&&(ne.type==="bracket"||ne.type==="paren"||ne.type==="brace")||g.parens>0){qe({type:"plus",value:Z});continue}qe({type:"plus",value:v});continue}if(Z==="@"){if(r.noextglob!==!0&&be()==="("&&be(2)!=="?"){qe({type:"at",extglob:!0,value:Z,output:""});continue}qe({type:"text",value:Z});continue}if(Z!=="*"){(Z==="$"||Z==="^")&&(Z=`\\${Z}`);let P=r7e.exec(H());P&&(Z+=P[0],g.index+=P[0].length),qe({type:"text",value:Z});continue}if(ne&&(ne.type==="globstar"||ne.star===!0)){ne.type="star",ne.star=!0,ne.value+=Z,ne.output=Pe,g.backtrack=!0,g.globstar=!0,yt(Z);continue}let x=H();if(r.noextglob!==!0&&/^\([^?]/.test(x)){At("star",Z);continue}if(ne.type==="star"){if(r.noglobstar===!0){yt(Z);continue}let P=ne.prev,y=P.prev,F=P.type==="slash"||P.type==="bos",z=y&&(y.type==="star"||y.type==="globstar");if(r.bash===!0&&(!F||x[0]&&x[0]!=="/")){qe({type:"star",value:Z,output:""});continue}let X=g.braces>0&&(P.type==="comma"||P.type==="brace"),$=ve.length&&(P.type==="pipe"||P.type==="paren");if(!F&&P.type!=="paren"&&!X&&!$){qe({type:"star",value:Z,output:""});continue}for(;x.slice(0,3)==="/**";){let ie=t[g.index+4];if(ie&&ie!=="/")break;x=x.slice(3),yt("/**",3)}if(P.type==="bos"&&me()){ne.type="globstar",ne.value+=Z,ne.output=De(r),g.output=ne.output,g.globstar=!0,yt(Z);continue}if(P.type==="slash"&&P.prev.type!=="bos"&&!z&&me()){g.output=g.output.slice(0,-(P.output+ne.output).length),P.output=`(?:${P.output}`,ne.type="globstar",ne.output=De(r)+(r.strictSlashes?")":"|$)"),ne.value+=Z,g.globstar=!0,g.output+=P.output+ne.output,yt(Z);continue}if(P.type==="slash"&&P.prev.type!=="bos"&&x[0]==="/"){let ie=x[1]!==void 0?"|$":"";g.output=g.output.slice(0,-(P.output+ne.output).length),P.output=`(?:${P.output}`,ne.type="globstar",ne.output=`${De(r)}${b}|${b}${ie})`,ne.value+=Z,g.output+=P.output+ne.output,g.globstar=!0,yt(Z+ut()),qe({type:"slash",value:"/",output:""});continue}if(P.type==="bos"&&x[0]==="/"){ne.type="globstar",ne.value+=Z,ne.output=`(?:^|${b}|${De(r)}${b})`,g.output=ne.output,g.globstar=!0,yt(Z+ut()),qe({type:"slash",value:"/",output:""});continue}g.output=g.output.slice(0,-ne.output.length),ne.type="globstar",ne.output=De(r),ne.value+=Z,g.output+=ne.output,g.globstar=!0,yt(Z);continue}let I={type:"star",value:Z,output:Pe};if(r.bash===!0){I.output=".*?",(ne.type==="bos"||ne.type==="slash")&&(I.output=ge+I.output),qe(I);continue}if(ne&&(ne.type==="bracket"||ne.type==="paren")&&r.regex===!0){I.output=Z,qe(I);continue}(g.index===g.start||ne.type==="slash"||ne.type==="dot")&&(ne.type==="dot"?(g.output+=_,ne.output+=_):r.dot===!0?(g.output+=V,ne.output+=V):(g.output+=ge,ne.output+=ge),be()!=="*"&&(g.output+=E,ne.output+=E)),qe(I)}for(;g.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(Ny("closing","]"));g.output=ol.escapeLast(g.output,"["),_e("brackets")}for(;g.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(Ny("closing",")"));g.output=ol.escapeLast(g.output,"("),_e("parens")}for(;g.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(Ny("closing","}"));g.output=ol.escapeLast(g.output,"{"),_e("braces")}if(r.strictSlashes!==!0&&(ne.type==="star"||ne.type==="bracket")&&qe({type:"maybe_slash",value:"",output:`${b}?`}),g.backtrack===!0){g.output="";for(let x of g.tokens)g.output+=x.output!=null?x.output:x.value,x.suffix&&(g.output+=x.suffix)}return g};kN.fastpaths=(t,e)=>{let r={...e},o=typeof r.maxLength=="number"?Math.min(PS,r.maxLength):PS,a=t.length;if(a>o)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${o}`);t=kZ[t]||t;let n=ol.isWindows(e),{DOT_LITERAL:u,SLASH_LITERAL:A,ONE_CHAR:p,DOTS_SLASH:h,NO_DOT:C,NO_DOTS:w,NO_DOTS_SLASH:v,STAR:b,START_ANCHOR:E}=SS.globChars(n),R=r.dot?w:C,L=r.dot?v:C,_=r.capture?"":"?:",V={negated:!1,prefix:""},re=r.bash===!0?".*?":b;r.capture&&(re=`(${re})`);let ae=ge=>ge.noglobstar===!0?re:`(${_}(?:(?!${E}${ge.dot?h:u}).)*?)`,he=ge=>{switch(ge){case"*":return`${R}${p}${re}`;case".*":return`${u}${p}${re}`;case"*.*":return`${R}${re}${u}${p}${re}`;case"*/*":return`${R}${re}${A}${p}${L}${re}`;case"**":return R+ae(r);case"**/*":return`(?:${R}${ae(r)}${A})?${L}${p}${re}`;case"**/*.*":return`(?:${R}${ae(r)}${A})?${L}${re}${u}${p}${re}`;case"**/.*":return`(?:${R}${ae(r)}${A})?${u}${p}${re}`;default:{let le=/^(.*?)\.(\w+)$/.exec(ge);if(!le)return;let Pe=he(le[1]);return Pe?Pe+u+le[2]:void 0}}},pe=ol.removePrefix(t,V),De=he(pe);return De&&r.strictSlashes!==!0&&(De+=`${A}?`),De};FZ.exports=kN});var NZ=U((Okt,TZ)=>{"use strict";var s7e=Ie("path"),o7e=QZ(),FN=RZ(),RN=Iw(),a7e=Cw(),l7e=t=>t&&typeof t=="object"&&!Array.isArray(t),Oi=(t,e,r=!1)=>{if(Array.isArray(t)){let C=t.map(v=>Oi(v,e,r));return v=>{for(let b of C){let E=b(v);if(E)return E}return!1}}let o=l7e(t)&&t.tokens&&t.input;if(t===""||typeof t!="string"&&!o)throw new TypeError("Expected pattern to be a non-empty string");let a=e||{},n=RN.isWindows(e),u=o?Oi.compileRe(t,e):Oi.makeRe(t,e,!1,!0),A=u.state;delete u.state;let p=()=>!1;if(a.ignore){let C={...e,ignore:null,onMatch:null,onResult:null};p=Oi(a.ignore,C,r)}let h=(C,w=!1)=>{let{isMatch:v,match:b,output:E}=Oi.test(C,u,e,{glob:t,posix:n}),R={glob:t,state:A,regex:u,posix:n,input:C,output:E,match:b,isMatch:v};return typeof a.onResult=="function"&&a.onResult(R),v===!1?(R.isMatch=!1,w?R:!1):p(C)?(typeof a.onIgnore=="function"&&a.onIgnore(R),R.isMatch=!1,w?R:!1):(typeof a.onMatch=="function"&&a.onMatch(R),w?R:!0)};return r&&(h.state=A),h};Oi.test=(t,e,r,{glob:o,posix:a}={})=>{if(typeof t!="string")throw new TypeError("Expected input to be a string");if(t==="")return{isMatch:!1,output:""};let n=r||{},u=n.format||(a?RN.toPosixSlashes:null),A=t===o,p=A&&u?u(t):t;return A===!1&&(p=u?u(t):t,A=p===o),(A===!1||n.capture===!0)&&(n.matchBase===!0||n.basename===!0?A=Oi.matchBase(t,e,r,a):A=e.exec(p)),{isMatch:Boolean(A),match:A,output:p}};Oi.matchBase=(t,e,r,o=RN.isWindows(r))=>(e instanceof RegExp?e:Oi.makeRe(e,r)).test(s7e.basename(t));Oi.isMatch=(t,e,r)=>Oi(e,r)(t);Oi.parse=(t,e)=>Array.isArray(t)?t.map(r=>Oi.parse(r,e)):FN(t,{...e,fastpaths:!1});Oi.scan=(t,e)=>o7e(t,e);Oi.compileRe=(t,e,r=!1,o=!1)=>{if(r===!0)return t.output;let a=e||{},n=a.contains?"":"^",u=a.contains?"":"$",A=`${n}(?:${t.output})${u}`;t&&t.negated===!0&&(A=`^(?!${A}).*$`);let p=Oi.toRegex(A,e);return o===!0&&(p.state=t),p};Oi.makeRe=(t,e={},r=!1,o=!1)=>{if(!t||typeof t!="string")throw new TypeError("Expected a non-empty string");let a={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(t[0]==="."||t[0]==="*")&&(a.output=FN.fastpaths(t,e)),a.output||(a=FN(t,e)),Oi.compileRe(a,e,r,o)};Oi.toRegex=(t,e)=>{try{let r=e||{};return new RegExp(t,r.flags||(r.nocase?"i":""))}catch(r){if(e&&e.debug===!0)throw r;return/$^/}};Oi.constants=a7e;TZ.exports=Oi});var OZ=U((Mkt,LZ)=>{"use strict";LZ.exports=NZ()});var zo=U((Ukt,HZ)=>{"use strict";var UZ=Ie("util"),_Z=mZ(),zu=OZ(),TN=Iw(),MZ=t=>t===""||t==="./",hi=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let o=new Set,a=new Set,n=new Set,u=0,A=C=>{n.add(C.output),r&&r.onResult&&r.onResult(C)};for(let C=0;C<e.length;C++){let w=zu(String(e[C]),{...r,onResult:A},!0),v=w.state.negated||w.state.negatedExtglob;v&&u++;for(let b of t){let E=w(b,!0);!(v?!E.isMatch:E.isMatch)||(v?o.add(E.output):(o.delete(E.output),a.add(E.output)))}}let h=(u===e.length?[...n]:[...a]).filter(C=>!o.has(C));if(r&&h.length===0){if(r.failglob===!0)throw new Error(`No matches found for "${e.join(", ")}"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(C=>C.replace(/\\/g,"")):e}return h};hi.match=hi;hi.matcher=(t,e)=>zu(t,e);hi.isMatch=(t,e,r)=>zu(e,r)(t);hi.any=hi.isMatch;hi.not=(t,e,r={})=>{e=[].concat(e).map(String);let o=new Set,a=[],n=A=>{r.onResult&&r.onResult(A),a.push(A.output)},u=new Set(hi(t,e,{...r,onResult:n}));for(let A of a)u.has(A)||o.add(A);return[...o]};hi.contains=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${UZ.inspect(t)}"`);if(Array.isArray(e))return e.some(o=>hi.contains(t,o,r));if(typeof e=="string"){if(MZ(t)||MZ(e))return!1;if(t.includes(e)||t.startsWith("./")&&t.slice(2).includes(e))return!0}return hi.isMatch(t,e,{...r,contains:!0})};hi.matchKeys=(t,e,r)=>{if(!TN.isObject(t))throw new TypeError("Expected the first argument to be an object");let o=hi(Object.keys(t),e,r),a={};for(let n of o)a[n]=t[n];return a};hi.some=(t,e,r)=>{let o=[].concat(t);for(let a of[].concat(e)){let n=zu(String(a),r);if(o.some(u=>n(u)))return!0}return!1};hi.every=(t,e,r)=>{let o=[].concat(t);for(let a of[].concat(e)){let n=zu(String(a),r);if(!o.every(u=>n(u)))return!1}return!0};hi.all=(t,e,r)=>{if(typeof t!="string")throw new TypeError(`Expected a string: "${UZ.inspect(t)}"`);return[].concat(e).every(o=>zu(o,r)(t))};hi.capture=(t,e,r)=>{let o=TN.isWindows(r),n=zu.makeRe(String(t),{...r,capture:!0}).exec(o?TN.toPosixSlashes(e):e);if(n)return n.slice(1).map(u=>u===void 0?"":u)};hi.makeRe=(...t)=>zu.makeRe(...t);hi.scan=(...t)=>zu.scan(...t);hi.parse=(t,e)=>{let r=[];for(let o of[].concat(t||[]))for(let a of _Z(String(o),e))r.push(zu.parse(a,e));return r};hi.braces=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return e&&e.nobrace===!0||!/\{.*\}/.test(t)?[t]:_Z(t,e)};hi.braceExpand=(t,e)=>{if(typeof t!="string")throw new TypeError("Expected a string");return hi.braces(t,{...e,expand:!0})};HZ.exports=hi});var jZ=U((_kt,qZ)=>{"use strict";qZ.exports=({onlyFirst:t=!1}={})=>{let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,t?void 0:"g")}});var xS=U((Hkt,GZ)=>{"use strict";var c7e=jZ();GZ.exports=t=>typeof t=="string"?t.replace(c7e(),""):t});var YZ=U((qkt,WZ)=>{function u7e(){this.__data__=[],this.size=0}WZ.exports=u7e});var Ly=U((jkt,KZ)=>{function A7e(t,e){return t===e||t!==t&&e!==e}KZ.exports=A7e});var Bw=U((Gkt,VZ)=>{var f7e=Ly();function p7e(t,e){for(var r=t.length;r--;)if(f7e(t[r][0],e))return r;return-1}VZ.exports=p7e});var zZ=U((Wkt,JZ)=>{var h7e=Bw(),g7e=Array.prototype,d7e=g7e.splice;function m7e(t){var e=this.__data__,r=h7e(e,t);if(r<0)return!1;var o=e.length-1;return r==o?e.pop():d7e.call(e,r,1),--this.size,!0}JZ.exports=m7e});var ZZ=U((Ykt,XZ)=>{var y7e=Bw();function E7e(t){var e=this.__data__,r=y7e(e,t);return r<0?void 0:e[r][1]}XZ.exports=E7e});var e$=U((Kkt,$Z)=>{var C7e=Bw();function I7e(t){return C7e(this.__data__,t)>-1}$Z.exports=I7e});var r$=U((Vkt,t$)=>{var w7e=Bw();function B7e(t,e){var r=this.__data__,o=w7e(r,t);return o<0?(++this.size,r.push([t,e])):r[o][1]=e,this}t$.exports=B7e});var vw=U((Jkt,n$)=>{var v7e=YZ(),D7e=zZ(),S7e=ZZ(),P7e=e$(),x7e=r$();function Oy(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}Oy.prototype.clear=v7e;Oy.prototype.delete=D7e;Oy.prototype.get=S7e;Oy.prototype.has=P7e;Oy.prototype.set=x7e;n$.exports=Oy});var s$=U((zkt,i$)=>{var b7e=vw();function Q7e(){this.__data__=new b7e,this.size=0}i$.exports=Q7e});var a$=U((Xkt,o$)=>{function k7e(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}o$.exports=k7e});var c$=U((Zkt,l$)=>{function F7e(t){return this.__data__.get(t)}l$.exports=F7e});var A$=U(($kt,u$)=>{function R7e(t){return this.__data__.has(t)}u$.exports=R7e});var NN=U((eFt,f$)=>{var T7e=typeof global=="object"&&global&&global.Object===Object&&global;f$.exports=T7e});var Yl=U((tFt,p$)=>{var N7e=NN(),L7e=typeof self=="object"&&self&&self.Object===Object&&self,O7e=N7e||L7e||Function("return this")();p$.exports=O7e});var pd=U((rFt,h$)=>{var M7e=Yl(),U7e=M7e.Symbol;h$.exports=U7e});var y$=U((nFt,m$)=>{var g$=pd(),d$=Object.prototype,_7e=d$.hasOwnProperty,H7e=d$.toString,Dw=g$?g$.toStringTag:void 0;function q7e(t){var e=_7e.call(t,Dw),r=t[Dw];try{t[Dw]=void 0;var o=!0}catch{}var a=H7e.call(t);return o&&(e?t[Dw]=r:delete t[Dw]),a}m$.exports=q7e});var C$=U((iFt,E$)=>{var j7e=Object.prototype,G7e=j7e.toString;function W7e(t){return G7e.call(t)}E$.exports=W7e});var hd=U((sFt,B$)=>{var I$=pd(),Y7e=y$(),K7e=C$(),V7e="[object Null]",J7e="[object Undefined]",w$=I$?I$.toStringTag:void 0;function z7e(t){return t==null?t===void 0?J7e:V7e:w$&&w$ in Object(t)?Y7e(t):K7e(t)}B$.exports=z7e});var al=U((oFt,v$)=>{function X7e(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}v$.exports=X7e});var bS=U((aFt,D$)=>{var Z7e=hd(),$7e=al(),eWe="[object AsyncFunction]",tWe="[object Function]",rWe="[object GeneratorFunction]",nWe="[object Proxy]";function iWe(t){if(!$7e(t))return!1;var e=Z7e(t);return e==tWe||e==rWe||e==eWe||e==nWe}D$.exports=iWe});var P$=U((lFt,S$)=>{var sWe=Yl(),oWe=sWe["__core-js_shared__"];S$.exports=oWe});var Q$=U((cFt,b$)=>{var LN=P$(),x$=function(){var t=/[^.]+$/.exec(LN&&LN.keys&&LN.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();function aWe(t){return!!x$&&x$ in t}b$.exports=aWe});var ON=U((uFt,k$)=>{var lWe=Function.prototype,cWe=lWe.toString;function uWe(t){if(t!=null){try{return cWe.call(t)}catch{}try{return t+""}catch{}}return""}k$.exports=uWe});var R$=U((AFt,F$)=>{var AWe=bS(),fWe=Q$(),pWe=al(),hWe=ON(),gWe=/[\\^$.*+?()[\]{}|]/g,dWe=/^\[object .+?Constructor\]$/,mWe=Function.prototype,yWe=Object.prototype,EWe=mWe.toString,CWe=yWe.hasOwnProperty,IWe=RegExp("^"+EWe.call(CWe).replace(gWe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function wWe(t){if(!pWe(t)||fWe(t))return!1;var e=AWe(t)?IWe:dWe;return e.test(hWe(t))}F$.exports=wWe});var N$=U((fFt,T$)=>{function BWe(t,e){return t==null?void 0:t[e]}T$.exports=BWe});var Jp=U((pFt,L$)=>{var vWe=R$(),DWe=N$();function SWe(t,e){var r=DWe(t,e);return vWe(r)?r:void 0}L$.exports=SWe});var QS=U((hFt,O$)=>{var PWe=Jp(),xWe=Yl(),bWe=PWe(xWe,"Map");O$.exports=bWe});var Sw=U((gFt,M$)=>{var QWe=Jp(),kWe=QWe(Object,"create");M$.exports=kWe});var H$=U((dFt,_$)=>{var U$=Sw();function FWe(){this.__data__=U$?U$(null):{},this.size=0}_$.exports=FWe});var j$=U((mFt,q$)=>{function RWe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}q$.exports=RWe});var W$=U((yFt,G$)=>{var TWe=Sw(),NWe="__lodash_hash_undefined__",LWe=Object.prototype,OWe=LWe.hasOwnProperty;function MWe(t){var e=this.__data__;if(TWe){var r=e[t];return r===NWe?void 0:r}return OWe.call(e,t)?e[t]:void 0}G$.exports=MWe});var K$=U((EFt,Y$)=>{var UWe=Sw(),_We=Object.prototype,HWe=_We.hasOwnProperty;function qWe(t){var e=this.__data__;return UWe?e[t]!==void 0:HWe.call(e,t)}Y$.exports=qWe});var J$=U((CFt,V$)=>{var jWe=Sw(),GWe="__lodash_hash_undefined__";function WWe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=jWe&&e===void 0?GWe:e,this}V$.exports=WWe});var X$=U((IFt,z$)=>{var YWe=H$(),KWe=j$(),VWe=W$(),JWe=K$(),zWe=J$();function My(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}My.prototype.clear=YWe;My.prototype.delete=KWe;My.prototype.get=VWe;My.prototype.has=JWe;My.prototype.set=zWe;z$.exports=My});var eee=U((wFt,$$)=>{var Z$=X$(),XWe=vw(),ZWe=QS();function $We(){this.size=0,this.__data__={hash:new Z$,map:new(ZWe||XWe),string:new Z$}}$$.exports=$We});var ree=U((BFt,tee)=>{function eYe(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}tee.exports=eYe});var Pw=U((vFt,nee)=>{var tYe=ree();function rYe(t,e){var r=t.__data__;return tYe(e)?r[typeof e=="string"?"string":"hash"]:r.map}nee.exports=rYe});var see=U((DFt,iee)=>{var nYe=Pw();function iYe(t){var e=nYe(this,t).delete(t);return this.size-=e?1:0,e}iee.exports=iYe});var aee=U((SFt,oee)=>{var sYe=Pw();function oYe(t){return sYe(this,t).get(t)}oee.exports=oYe});var cee=U((PFt,lee)=>{var aYe=Pw();function lYe(t){return aYe(this,t).has(t)}lee.exports=lYe});var Aee=U((xFt,uee)=>{var cYe=Pw();function uYe(t,e){var r=cYe(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this}uee.exports=uYe});var kS=U((bFt,fee)=>{var AYe=eee(),fYe=see(),pYe=aee(),hYe=cee(),gYe=Aee();function Uy(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}Uy.prototype.clear=AYe;Uy.prototype.delete=fYe;Uy.prototype.get=pYe;Uy.prototype.has=hYe;Uy.prototype.set=gYe;fee.exports=Uy});var hee=U((QFt,pee)=>{var dYe=vw(),mYe=QS(),yYe=kS(),EYe=200;function CYe(t,e){var r=this.__data__;if(r instanceof dYe){var o=r.__data__;if(!mYe||o.length<EYe-1)return o.push([t,e]),this.size=++r.size,this;r=this.__data__=new yYe(o)}return r.set(t,e),this.size=r.size,this}pee.exports=CYe});var RS=U((kFt,gee)=>{var IYe=vw(),wYe=s$(),BYe=a$(),vYe=c$(),DYe=A$(),SYe=hee();function _y(t){var e=this.__data__=new IYe(t);this.size=e.size}_y.prototype.clear=wYe;_y.prototype.delete=BYe;_y.prototype.get=vYe;_y.prototype.has=DYe;_y.prototype.set=SYe;gee.exports=_y});var mee=U((FFt,dee)=>{var PYe="__lodash_hash_undefined__";function xYe(t){return this.__data__.set(t,PYe),this}dee.exports=xYe});var Eee=U((RFt,yee)=>{function bYe(t){return this.__data__.has(t)}yee.exports=bYe});var Iee=U((TFt,Cee)=>{var QYe=kS(),kYe=mee(),FYe=Eee();function TS(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new QYe;++e<r;)this.add(t[e])}TS.prototype.add=TS.prototype.push=kYe;TS.prototype.has=FYe;Cee.exports=TS});var Bee=U((NFt,wee)=>{function RYe(t,e){for(var r=-1,o=t==null?0:t.length;++r<o;)if(e(t[r],r,t))return!0;return!1}wee.exports=RYe});var Dee=U((LFt,vee)=>{function TYe(t,e){return t.has(e)}vee.exports=TYe});var MN=U((OFt,See)=>{var NYe=Iee(),LYe=Bee(),OYe=Dee(),MYe=1,UYe=2;function _Ye(t,e,r,o,a,n){var u=r&MYe,A=t.length,p=e.length;if(A!=p&&!(u&&p>A))return!1;var h=n.get(t),C=n.get(e);if(h&&C)return h==e&&C==t;var w=-1,v=!0,b=r&UYe?new NYe:void 0;for(n.set(t,e),n.set(e,t);++w<A;){var E=t[w],R=e[w];if(o)var L=u?o(R,E,w,e,t,n):o(E,R,w,t,e,n);if(L!==void 0){if(L)continue;v=!1;break}if(b){if(!LYe(e,function(_,V){if(!OYe(b,V)&&(E===_||a(E,_,r,o,n)))return b.push(V)})){v=!1;break}}else if(!(E===R||a(E,R,r,o,n))){v=!1;break}}return n.delete(t),n.delete(e),v}See.exports=_Ye});var UN=U((MFt,Pee)=>{var HYe=Yl(),qYe=HYe.Uint8Array;Pee.exports=qYe});var bee=U((UFt,xee)=>{function jYe(t){var e=-1,r=Array(t.size);return t.forEach(function(o,a){r[++e]=[a,o]}),r}xee.exports=jYe});var kee=U((_Ft,Qee)=>{function GYe(t){var e=-1,r=Array(t.size);return t.forEach(function(o){r[++e]=o}),r}Qee.exports=GYe});var Lee=U((HFt,Nee)=>{var Fee=pd(),Ree=UN(),WYe=Ly(),YYe=MN(),KYe=bee(),VYe=kee(),JYe=1,zYe=2,XYe="[object Boolean]",ZYe="[object Date]",$Ye="[object Error]",eKe="[object Map]",tKe="[object Number]",rKe="[object RegExp]",nKe="[object Set]",iKe="[object String]",sKe="[object Symbol]",oKe="[object ArrayBuffer]",aKe="[object DataView]",Tee=Fee?Fee.prototype:void 0,_N=Tee?Tee.valueOf:void 0;function lKe(t,e,r,o,a,n,u){switch(r){case aKe:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case oKe:return!(t.byteLength!=e.byteLength||!n(new Ree(t),new Ree(e)));case XYe:case ZYe:case tKe:return WYe(+t,+e);case $Ye:return t.name==e.name&&t.message==e.message;case rKe:case iKe:return t==e+"";case eKe:var A=KYe;case nKe:var p=o&JYe;if(A||(A=VYe),t.size!=e.size&&!p)return!1;var h=u.get(t);if(h)return h==e;o|=zYe,u.set(t,e);var C=YYe(A(t),A(e),o,a,n,u);return u.delete(t),C;case sKe:if(_N)return _N.call(t)==_N.call(e)}return!1}Nee.exports=lKe});var NS=U((qFt,Oee)=>{function cKe(t,e){for(var r=-1,o=e.length,a=t.length;++r<o;)t[a+r]=e[r];return t}Oee.exports=cKe});var Kl=U((jFt,Mee)=>{var uKe=Array.isArray;Mee.exports=uKe});var HN=U((GFt,Uee)=>{var AKe=NS(),fKe=Kl();function pKe(t,e,r){var o=e(t);return fKe(t)?o:AKe(o,r(t))}Uee.exports=pKe});var Hee=U((WFt,_ee)=>{function hKe(t,e){for(var r=-1,o=t==null?0:t.length,a=0,n=[];++r<o;){var u=t[r];e(u,r,t)&&(n[a++]=u)}return n}_ee.exports=hKe});var qN=U((YFt,qee)=>{function gKe(){return[]}qee.exports=gKe});var LS=U((KFt,Gee)=>{var dKe=Hee(),mKe=qN(),yKe=Object.prototype,EKe=yKe.propertyIsEnumerable,jee=Object.getOwnPropertySymbols,CKe=jee?function(t){return t==null?[]:(t=Object(t),dKe(jee(t),function(e){return EKe.call(t,e)}))}:mKe;Gee.exports=CKe});var Yee=U((VFt,Wee)=>{function IKe(t,e){for(var r=-1,o=Array(t);++r<t;)o[r]=e(r);return o}Wee.exports=IKe});var Xu=U((JFt,Kee)=>{function wKe(t){return t!=null&&typeof t=="object"}Kee.exports=wKe});var Jee=U((zFt,Vee)=>{var BKe=hd(),vKe=Xu(),DKe="[object Arguments]";function SKe(t){return vKe(t)&&BKe(t)==DKe}Vee.exports=SKe});var xw=U((XFt,Zee)=>{var zee=Jee(),PKe=Xu(),Xee=Object.prototype,xKe=Xee.hasOwnProperty,bKe=Xee.propertyIsEnumerable,QKe=zee(function(){return arguments}())?zee:function(t){return PKe(t)&&xKe.call(t,"callee")&&!bKe.call(t,"callee")};Zee.exports=QKe});var ete=U((ZFt,$ee)=>{function kKe(){return!1}$ee.exports=kKe});var Qw=U((bw,Hy)=>{var FKe=Yl(),RKe=ete(),nte=typeof bw=="object"&&bw&&!bw.nodeType&&bw,tte=nte&&typeof Hy=="object"&&Hy&&!Hy.nodeType&&Hy,TKe=tte&&tte.exports===nte,rte=TKe?FKe.Buffer:void 0,NKe=rte?rte.isBuffer:void 0,LKe=NKe||RKe;Hy.exports=LKe});var kw=U(($Ft,ite)=>{var OKe=9007199254740991,MKe=/^(?:0|[1-9]\d*)$/;function UKe(t,e){var r=typeof t;return e=e??OKe,!!e&&(r=="number"||r!="symbol"&&MKe.test(t))&&t>-1&&t%1==0&&t<e}ite.exports=UKe});var OS=U((eRt,ste)=>{var _Ke=9007199254740991;function HKe(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=_Ke}ste.exports=HKe});var ate=U((tRt,ote)=>{var qKe=hd(),jKe=OS(),GKe=Xu(),WKe="[object Arguments]",YKe="[object Array]",KKe="[object Boolean]",VKe="[object Date]",JKe="[object Error]",zKe="[object Function]",XKe="[object Map]",ZKe="[object Number]",$Ke="[object Object]",eVe="[object RegExp]",tVe="[object Set]",rVe="[object String]",nVe="[object WeakMap]",iVe="[object ArrayBuffer]",sVe="[object DataView]",oVe="[object Float32Array]",aVe="[object Float64Array]",lVe="[object Int8Array]",cVe="[object Int16Array]",uVe="[object Int32Array]",AVe="[object Uint8Array]",fVe="[object Uint8ClampedArray]",pVe="[object Uint16Array]",hVe="[object Uint32Array]",oi={};oi[oVe]=oi[aVe]=oi[lVe]=oi[cVe]=oi[uVe]=oi[AVe]=oi[fVe]=oi[pVe]=oi[hVe]=!0;oi[WKe]=oi[YKe]=oi[iVe]=oi[KKe]=oi[sVe]=oi[VKe]=oi[JKe]=oi[zKe]=oi[XKe]=oi[ZKe]=oi[$Ke]=oi[eVe]=oi[tVe]=oi[rVe]=oi[nVe]=!1;function gVe(t){return GKe(t)&&jKe(t.length)&&!!oi[qKe(t)]}ote.exports=gVe});var MS=U((rRt,lte)=>{function dVe(t){return function(e){return t(e)}}lte.exports=dVe});var US=U((Fw,qy)=>{var mVe=NN(),cte=typeof Fw=="object"&&Fw&&!Fw.nodeType&&Fw,Rw=cte&&typeof qy=="object"&&qy&&!qy.nodeType&&qy,yVe=Rw&&Rw.exports===cte,jN=yVe&&mVe.process,EVe=function(){try{var t=Rw&&Rw.require&&Rw.require("util").types;return t||jN&&jN.binding&&jN.binding("util")}catch{}}();qy.exports=EVe});var _S=U((nRt,fte)=>{var CVe=ate(),IVe=MS(),ute=US(),Ate=ute&&ute.isTypedArray,wVe=Ate?IVe(Ate):CVe;fte.exports=wVe});var GN=U((iRt,pte)=>{var BVe=Yee(),vVe=xw(),DVe=Kl(),SVe=Qw(),PVe=kw(),xVe=_S(),bVe=Object.prototype,QVe=bVe.hasOwnProperty;function kVe(t,e){var r=DVe(t),o=!r&&vVe(t),a=!r&&!o&&SVe(t),n=!r&&!o&&!a&&xVe(t),u=r||o||a||n,A=u?BVe(t.length,String):[],p=A.length;for(var h in t)(e||QVe.call(t,h))&&!(u&&(h=="length"||a&&(h=="offset"||h=="parent")||n&&(h=="buffer"||h=="byteLength"||h=="byteOffset")||PVe(h,p)))&&A.push(h);return A}pte.exports=kVe});var HS=U((sRt,hte)=>{var FVe=Object.prototype;function RVe(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||FVe;return t===r}hte.exports=RVe});var WN=U((oRt,gte)=>{function TVe(t,e){return function(r){return t(e(r))}}gte.exports=TVe});var mte=U((aRt,dte)=>{var NVe=WN(),LVe=NVe(Object.keys,Object);dte.exports=LVe});var Ete=U((lRt,yte)=>{var OVe=HS(),MVe=mte(),UVe=Object.prototype,_Ve=UVe.hasOwnProperty;function HVe(t){if(!OVe(t))return MVe(t);var e=[];for(var r in Object(t))_Ve.call(t,r)&&r!="constructor"&&e.push(r);return e}yte.exports=HVe});var Tw=U((cRt,Cte)=>{var qVe=bS(),jVe=OS();function GVe(t){return t!=null&&jVe(t.length)&&!qVe(t)}Cte.exports=GVe});var qS=U((uRt,Ite)=>{var WVe=GN(),YVe=Ete(),KVe=Tw();function VVe(t){return KVe(t)?WVe(t):YVe(t)}Ite.exports=VVe});var YN=U((ARt,wte)=>{var JVe=HN(),zVe=LS(),XVe=qS();function ZVe(t){return JVe(t,XVe,zVe)}wte.exports=ZVe});var Dte=U((fRt,vte)=>{var Bte=YN(),$Ve=1,eJe=Object.prototype,tJe=eJe.hasOwnProperty;function rJe(t,e,r,o,a,n){var u=r&$Ve,A=Bte(t),p=A.length,h=Bte(e),C=h.length;if(p!=C&&!u)return!1;for(var w=p;w--;){var v=A[w];if(!(u?v in e:tJe.call(e,v)))return!1}var b=n.get(t),E=n.get(e);if(b&&E)return b==e&&E==t;var R=!0;n.set(t,e),n.set(e,t);for(var L=u;++w<p;){v=A[w];var _=t[v],V=e[v];if(o)var re=u?o(V,_,v,e,t,n):o(_,V,v,t,e,n);if(!(re===void 0?_===V||a(_,V,r,o,n):re)){R=!1;break}L||(L=v=="constructor")}if(R&&!L){var ae=t.constructor,he=e.constructor;ae!=he&&"constructor"in t&&"constructor"in e&&!(typeof ae=="function"&&ae instanceof ae&&typeof he=="function"&&he instanceof he)&&(R=!1)}return n.delete(t),n.delete(e),R}vte.exports=rJe});var Pte=U((pRt,Ste)=>{var nJe=Jp(),iJe=Yl(),sJe=nJe(iJe,"DataView");Ste.exports=sJe});var bte=U((hRt,xte)=>{var oJe=Jp(),aJe=Yl(),lJe=oJe(aJe,"Promise");xte.exports=lJe});var kte=U((gRt,Qte)=>{var cJe=Jp(),uJe=Yl(),AJe=cJe(uJe,"Set");Qte.exports=AJe});var Rte=U((dRt,Fte)=>{var fJe=Jp(),pJe=Yl(),hJe=fJe(pJe,"WeakMap");Fte.exports=hJe});var Nw=U((mRt,_te)=>{var KN=Pte(),VN=QS(),JN=bte(),zN=kte(),XN=Rte(),Ute=hd(),jy=ON(),Tte="[object Map]",gJe="[object Object]",Nte="[object Promise]",Lte="[object Set]",Ote="[object WeakMap]",Mte="[object DataView]",dJe=jy(KN),mJe=jy(VN),yJe=jy(JN),EJe=jy(zN),CJe=jy(XN),gd=Ute;(KN&&gd(new KN(new ArrayBuffer(1)))!=Mte||VN&&gd(new VN)!=Tte||JN&&gd(JN.resolve())!=Nte||zN&&gd(new zN)!=Lte||XN&&gd(new XN)!=Ote)&&(gd=function(t){var e=Ute(t),r=e==gJe?t.constructor:void 0,o=r?jy(r):"";if(o)switch(o){case dJe:return Mte;case mJe:return Tte;case yJe:return Nte;case EJe:return Lte;case CJe:return Ote}return e});_te.exports=gd});var Vte=U((yRt,Kte)=>{var ZN=RS(),IJe=MN(),wJe=Lee(),BJe=Dte(),Hte=Nw(),qte=Kl(),jte=Qw(),vJe=_S(),DJe=1,Gte="[object Arguments]",Wte="[object Array]",jS="[object Object]",SJe=Object.prototype,Yte=SJe.hasOwnProperty;function PJe(t,e,r,o,a,n){var u=qte(t),A=qte(e),p=u?Wte:Hte(t),h=A?Wte:Hte(e);p=p==Gte?jS:p,h=h==Gte?jS:h;var C=p==jS,w=h==jS,v=p==h;if(v&&jte(t)){if(!jte(e))return!1;u=!0,C=!1}if(v&&!C)return n||(n=new ZN),u||vJe(t)?IJe(t,e,r,o,a,n):wJe(t,e,p,r,o,a,n);if(!(r&DJe)){var b=C&&Yte.call(t,"__wrapped__"),E=w&&Yte.call(e,"__wrapped__");if(b||E){var R=b?t.value():t,L=E?e.value():e;return n||(n=new ZN),a(R,L,r,o,n)}}return v?(n||(n=new ZN),BJe(t,e,r,o,a,n)):!1}Kte.exports=PJe});var Zte=U((ERt,Xte)=>{var xJe=Vte(),Jte=Xu();function zte(t,e,r,o,a){return t===e?!0:t==null||e==null||!Jte(t)&&!Jte(e)?t!==t&&e!==e:xJe(t,e,r,o,zte,a)}Xte.exports=zte});var ere=U((CRt,$te)=>{var bJe=Zte();function QJe(t,e){return bJe(t,e)}$te.exports=QJe});var $N=U((IRt,tre)=>{var kJe=Jp(),FJe=function(){try{var t=kJe(Object,"defineProperty");return t({},"",{}),t}catch{}}();tre.exports=FJe});var GS=U((wRt,nre)=>{var rre=$N();function RJe(t,e,r){e=="__proto__"&&rre?rre(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}nre.exports=RJe});var eL=U((BRt,ire)=>{var TJe=GS(),NJe=Ly();function LJe(t,e,r){(r!==void 0&&!NJe(t[e],r)||r===void 0&&!(e in t))&&TJe(t,e,r)}ire.exports=LJe});var ore=U((vRt,sre)=>{function OJe(t){return function(e,r,o){for(var a=-1,n=Object(e),u=o(e),A=u.length;A--;){var p=u[t?A:++a];if(r(n[p],p,n)===!1)break}return e}}sre.exports=OJe});var lre=U((DRt,are)=>{var MJe=ore(),UJe=MJe();are.exports=UJe});var tL=U((Lw,Gy)=>{var _Je=Yl(),fre=typeof Lw=="object"&&Lw&&!Lw.nodeType&&Lw,cre=fre&&typeof Gy=="object"&&Gy&&!Gy.nodeType&&Gy,HJe=cre&&cre.exports===fre,ure=HJe?_Je.Buffer:void 0,Are=ure?ure.allocUnsafe:void 0;function qJe(t,e){if(e)return t.slice();var r=t.length,o=Are?Are(r):new t.constructor(r);return t.copy(o),o}Gy.exports=qJe});var WS=U((SRt,hre)=>{var pre=UN();function jJe(t){var e=new t.constructor(t.byteLength);return new pre(e).set(new pre(t)),e}hre.exports=jJe});var rL=U((PRt,gre)=>{var GJe=WS();function WJe(t,e){var r=e?GJe(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}gre.exports=WJe});var YS=U((xRt,dre)=>{function YJe(t,e){var r=-1,o=t.length;for(e||(e=Array(o));++r<o;)e[r]=t[r];return e}dre.exports=YJe});var Ere=U((bRt,yre)=>{var KJe=al(),mre=Object.create,VJe=function(){function t(){}return function(e){if(!KJe(e))return{};if(mre)return mre(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();yre.exports=VJe});var KS=U((QRt,Cre)=>{var JJe=WN(),zJe=JJe(Object.getPrototypeOf,Object);Cre.exports=zJe});var nL=U((kRt,Ire)=>{var XJe=Ere(),ZJe=KS(),$Je=HS();function eze(t){return typeof t.constructor=="function"&&!$Je(t)?XJe(ZJe(t)):{}}Ire.exports=eze});var Bre=U((FRt,wre)=>{var tze=Tw(),rze=Xu();function nze(t){return rze(t)&&tze(t)}wre.exports=nze});var iL=U((RRt,Dre)=>{var ize=hd(),sze=KS(),oze=Xu(),aze="[object Object]",lze=Function.prototype,cze=Object.prototype,vre=lze.toString,uze=cze.hasOwnProperty,Aze=vre.call(Object);function fze(t){if(!oze(t)||ize(t)!=aze)return!1;var e=sze(t);if(e===null)return!0;var r=uze.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&vre.call(r)==Aze}Dre.exports=fze});var sL=U((TRt,Sre)=>{function pze(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}Sre.exports=pze});var VS=U((NRt,Pre)=>{var hze=GS(),gze=Ly(),dze=Object.prototype,mze=dze.hasOwnProperty;function yze(t,e,r){var o=t[e];(!(mze.call(t,e)&&gze(o,r))||r===void 0&&!(e in t))&&hze(t,e,r)}Pre.exports=yze});var dd=U((LRt,xre)=>{var Eze=VS(),Cze=GS();function Ize(t,e,r,o){var a=!r;r||(r={});for(var n=-1,u=e.length;++n<u;){var A=e[n],p=o?o(r[A],t[A],A,r,t):void 0;p===void 0&&(p=t[A]),a?Cze(r,A,p):Eze(r,A,p)}return r}xre.exports=Ize});var Qre=U((ORt,bre)=>{function wze(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}bre.exports=wze});var Fre=U((MRt,kre)=>{var Bze=al(),vze=HS(),Dze=Qre(),Sze=Object.prototype,Pze=Sze.hasOwnProperty;function xze(t){if(!Bze(t))return Dze(t);var e=vze(t),r=[];for(var o in t)o=="constructor"&&(e||!Pze.call(t,o))||r.push(o);return r}kre.exports=xze});var Wy=U((URt,Rre)=>{var bze=GN(),Qze=Fre(),kze=Tw();function Fze(t){return kze(t)?bze(t,!0):Qze(t)}Rre.exports=Fze});var Nre=U((_Rt,Tre)=>{var Rze=dd(),Tze=Wy();function Nze(t){return Rze(t,Tze(t))}Tre.exports=Nze});var Hre=U((HRt,_re)=>{var Lre=eL(),Lze=tL(),Oze=rL(),Mze=YS(),Uze=nL(),Ore=xw(),Mre=Kl(),_ze=Bre(),Hze=Qw(),qze=bS(),jze=al(),Gze=iL(),Wze=_S(),Ure=sL(),Yze=Nre();function Kze(t,e,r,o,a,n,u){var A=Ure(t,r),p=Ure(e,r),h=u.get(p);if(h){Lre(t,r,h);return}var C=n?n(A,p,r+"",t,e,u):void 0,w=C===void 0;if(w){var v=Mre(p),b=!v&&Hze(p),E=!v&&!b&&Wze(p);C=p,v||b||E?Mre(A)?C=A:_ze(A)?C=Mze(A):b?(w=!1,C=Lze(p,!0)):E?(w=!1,C=Oze(p,!0)):C=[]:Gze(p)||Ore(p)?(C=A,Ore(A)?C=Yze(A):(!jze(A)||qze(A))&&(C=Uze(p))):w=!1}w&&(u.set(p,C),a(C,p,o,n,u),u.delete(p)),Lre(t,r,C)}_re.exports=Kze});var Gre=U((qRt,jre)=>{var Vze=RS(),Jze=eL(),zze=lre(),Xze=Hre(),Zze=al(),$ze=Wy(),eXe=sL();function qre(t,e,r,o,a){t!==e&&zze(e,function(n,u){if(a||(a=new Vze),Zze(n))Xze(t,e,u,r,qre,o,a);else{var A=o?o(eXe(t,u),n,u+"",t,e,a):void 0;A===void 0&&(A=n),Jze(t,u,A)}},$ze)}jre.exports=qre});var oL=U((jRt,Wre)=>{function tXe(t){return t}Wre.exports=tXe});var Kre=U((GRt,Yre)=>{function rXe(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}Yre.exports=rXe});var aL=U((WRt,Jre)=>{var nXe=Kre(),Vre=Math.max;function iXe(t,e,r){return e=Vre(e===void 0?t.length-1:e,0),function(){for(var o=arguments,a=-1,n=Vre(o.length-e,0),u=Array(n);++a<n;)u[a]=o[e+a];a=-1;for(var A=Array(e+1);++a<e;)A[a]=o[a];return A[e]=r(u),nXe(t,this,A)}}Jre.exports=iXe});var Xre=U((YRt,zre)=>{function sXe(t){return function(){return t}}zre.exports=sXe});var ene=U((KRt,$re)=>{var oXe=Xre(),Zre=$N(),aXe=oL(),lXe=Zre?function(t,e){return Zre(t,"toString",{configurable:!0,enumerable:!1,value:oXe(e),writable:!0})}:aXe;$re.exports=lXe});var rne=U((VRt,tne)=>{var cXe=800,uXe=16,AXe=Date.now;function fXe(t){var e=0,r=0;return function(){var o=AXe(),a=uXe-(o-r);if(r=o,a>0){if(++e>=cXe)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}tne.exports=fXe});var lL=U((JRt,nne)=>{var pXe=ene(),hXe=rne(),gXe=hXe(pXe);nne.exports=gXe});var sne=U((zRt,ine)=>{var dXe=oL(),mXe=aL(),yXe=lL();function EXe(t,e){return yXe(mXe(t,e,dXe),t+"")}ine.exports=EXe});var ane=U((XRt,one)=>{var CXe=Ly(),IXe=Tw(),wXe=kw(),BXe=al();function vXe(t,e,r){if(!BXe(r))return!1;var o=typeof e;return(o=="number"?IXe(r)&&wXe(e,r.length):o=="string"&&e in r)?CXe(r[e],t):!1}one.exports=vXe});var cne=U((ZRt,lne)=>{var DXe=sne(),SXe=ane();function PXe(t){return DXe(function(e,r){var o=-1,a=r.length,n=a>1?r[a-1]:void 0,u=a>2?r[2]:void 0;for(n=t.length>3&&typeof n=="function"?(a--,n):void 0,u&&SXe(r[0],r[1],u)&&(n=a<3?void 0:n,a=1),e=Object(e);++o<a;){var A=r[o];A&&t(e,A,o,n)}return e})}lne.exports=PXe});var Ane=U(($Rt,une)=>{var xXe=Gre(),bXe=cne(),QXe=bXe(function(t,e,r,o){xXe(t,e,r,o)});une.exports=QXe});var We={};Yt(We,{AsyncActions:()=>AL,BufferStream:()=>uL,CachingStrategy:()=>Bne,DefaultStream:()=>fL,allSettledSafe:()=>Gc,assertNever:()=>hL,bufferStream:()=>Jy,buildIgnorePattern:()=>OXe,convertMapsToIndexableObjects:()=>JS,dynamicRequire:()=>zp,escapeRegExp:()=>FXe,getArrayWithDefault:()=>Yy,getFactoryWithDefault:()=>Sf,getMapWithDefault:()=>Ky,getSetWithDefault:()=>md,isIndexableObject:()=>cL,isPathLike:()=>MXe,isTaggedYarnVersion:()=>kXe,makeDeferred:()=>Cne,mapAndFilter:()=>Zu,mapAndFind:()=>Mw,mergeIntoTarget:()=>Dne,overrideType:()=>RXe,parseBoolean:()=>Uw,parseOptionalBoolean:()=>vne,prettifyAsyncErrors:()=>Vy,prettifySyncErrors:()=>gL,releaseAfterUseAsync:()=>NXe,replaceEnvVariables:()=>dL,sortMap:()=>xa,toMerged:()=>UXe,tryParseOptionalBoolean:()=>mL,validateEnum:()=>TXe});function kXe(t){return!!(mne.default.valid(t)&&t.match(/^[^-]+(-rc\.[0-9]+)?$/))}function FXe(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function RXe(t){}function hL(t){throw new Error(`Assertion failed: Unexpected object '${t}'`)}function TXe(t,e){let r=Object.values(t);if(!r.includes(e))throw new ot(`Invalid value for enumeration: ${JSON.stringify(e)} (expected one of ${r.map(o=>JSON.stringify(o)).join(", ")})`);return e}function Zu(t,e){let r=[];for(let o of t){let a=e(o);a!==yne&&r.push(a)}return r}function Mw(t,e){for(let r of t){let o=e(r);if(o!==Ene)return o}}function cL(t){return typeof t=="object"&&t!==null}async function Gc(t){let e=await Promise.allSettled(t),r=[];for(let o of e){if(o.status==="rejected")throw o.reason;r.push(o.value)}return r}function JS(t){if(t instanceof Map&&(t=Object.fromEntries(t)),cL(t))for(let e of Object.keys(t)){let r=t[e];cL(r)&&(t[e]=JS(r))}return t}function Sf(t,e,r){let o=t.get(e);return typeof o>"u"&&t.set(e,o=r()),o}function Yy(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=[]),r}function md(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=new Set),r}function Ky(t,e){let r=t.get(e);return typeof r>"u"&&t.set(e,r=new Map),r}async function NXe(t,e){if(e==null)return await t();try{return await t()}finally{await e()}}async function Vy(t,e){try{return await t()}catch(r){throw r.message=e(r.message),r}}function gL(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}async function Jy(t){return await new Promise((e,r)=>{let o=[];t.on("error",a=>{r(a)}),t.on("data",a=>{o.push(a)}),t.on("end",()=>{e(Buffer.concat(o))})})}function Cne(){let t,e;return{promise:new Promise((o,a)=>{t=o,e=a}),resolve:t,reject:e}}function Ine(t){return Ow(ue.fromPortablePath(t))}function wne(path){let physicalPath=ue.fromPortablePath(path),currentCacheEntry=Ow.cache[physicalPath];delete Ow.cache[physicalPath];let result;try{result=Ine(physicalPath);let freshCacheEntry=Ow.cache[physicalPath],dynamicModule=eval("module"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{Ow.cache[physicalPath]=currentCacheEntry}return result}function LXe(t){let e=fne.get(t),r=oe.statSync(t);if((e==null?void 0:e.mtime)===r.mtimeMs)return e.instance;let o=wne(t);return fne.set(t,{mtime:r.mtimeMs,instance:o}),o}function zp(t,{cachingStrategy:e=2}={}){switch(e){case 0:return wne(t);case 1:return LXe(t);case 2:return Ine(t);default:throw new Error("Unsupported caching strategy")}}function xa(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let o=[];for(let n of e)o.push(r.map(u=>n(u)));let a=r.map((n,u)=>u);return a.sort((n,u)=>{for(let A of o){let p=A[n]<A[u]?-1:A[n]>A[u]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function OXe(t){return t.length===0?null:t.map(e=>`(${gne.default.makeRe(e,{windows:!1,dot:!0}).source})`).join("|")}function dL(t,{env:e}){let r=/\${(?<variableName>[\d\w_]+)(?<colon>:)?(?:-(?<fallback>[^}]*))?}/g;return t.replace(r,(...o)=>{let{variableName:a,colon:n,fallback:u}=o[o.length-1],A=Object.prototype.hasOwnProperty.call(e,a),p=e[a];if(p||A&&!n)return p;if(u!=null)return u;throw new ot(`Environment variable not found (${a})`)})}function Uw(t){switch(t){case"true":case"1":case 1:case!0:return!0;case"false":case"0":case 0:case!1:return!1;default:throw new Error(`Couldn't parse "${t}" as a boolean`)}}function vne(t){return typeof t>"u"?t:Uw(t)}function mL(t){try{return vne(t)}catch{return null}}function MXe(t){return!!(ue.isAbsolute(t)||t.match(/^(\.{1,2}|~)\//))}function Dne(t,...e){let r=u=>({value:u}),o=r(t),a=e.map(u=>r(u)),{value:n}=(0,hne.default)(o,...a,(u,A)=>{if(Array.isArray(u)&&Array.isArray(A)){for(let p of A)u.find(h=>(0,pne.default)(h,p))||u.push(p);return u}});return n}function UXe(...t){return Dne({},...t)}var pne,hne,gne,dne,mne,pL,yne,Ene,uL,AL,fL,Ow,fne,Bne,Vl=dt(()=>{St();_t();pne=tt(ere()),hne=tt(Ane()),gne=tt(zo()),dne=tt(nd()),mne=tt(si()),pL=Ie("stream");yne=Symbol();Zu.skip=yne;Ene=Symbol();Mw.skip=Ene;uL=class extends pL.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(r,o,a){if(o!=="buffer"||!Buffer.isBuffer(r))throw new Error("Assertion failed: BufferStream only accept buffers");this.chunks.push(r),a(null,null)}_flush(r){r(null,Buffer.concat(this.chunks))}};AL=class{constructor(e){this.deferred=new Map;this.promises=new Map;this.limit=(0,dne.default)(e)}set(e,r){let o=this.deferred.get(e);typeof o>"u"&&this.deferred.set(e,o=Cne());let a=this.limit(()=>r());return this.promises.set(e,a),a.then(()=>{this.promises.get(e)===a&&o.resolve()},n=>{this.promises.get(e)===a&&o.reject(n)}),o.promise}reduce(e,r){let o=this.promises.get(e)??Promise.resolve();this.set(e,()=>r(o))}async wait(){await Promise.all(this.promises.values())}},fL=class extends pL.Transform{constructor(r=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=r}_transform(r,o,a){if(o!=="buffer"||!Buffer.isBuffer(r))throw new Error("Assertion failed: DefaultStream only accept buffers");this.active=!1,a(null,r)}_flush(r){this.active&&this.ifEmpty.length>0?r(null,this.ifEmpty):r(null)}},Ow=eval("require");fne=new Map;Bne=(o=>(o[o.NoCache=0]="NoCache",o[o.FsTime=1]="FsTime",o[o.Node=2]="Node",o))(Bne||{})});var zy,yL,EL,Sne=dt(()=>{zy=(r=>(r.HARD="HARD",r.SOFT="SOFT",r))(zy||{}),yL=(o=>(o.Dependency="Dependency",o.PeerDependency="PeerDependency",o.PeerDependencyMeta="PeerDependencyMeta",o))(yL||{}),EL=(o=>(o.Inactive="inactive",o.Redundant="redundant",o.Active="active",o))(EL||{})});var ye={};Yt(ye,{LogLevel:()=>$S,Style:()=>IL,Type:()=>Bt,addLogFilterSupport:()=>qw,applyColor:()=>ba,applyHyperlink:()=>Xy,applyStyle:()=>ZS,json:()=>yd,jsonOrPretty:()=>qXe,mark:()=>DL,pretty:()=>Kt,prettyField:()=>$u,prettyList:()=>vL,supportsColor:()=>XS,supportsHyperlinks:()=>BL,tuple:()=>Wc});function Wc(t,e){return[e,t]}function ZS(t,e,r){return t.get("enableColors")&&r&2&&(e=Hw.default.bold(e)),e}function ba(t,e,r){if(!t.get("enableColors"))return e;let o=_Xe.get(r);if(o===null)return e;let a=typeof o>"u"?r:wL.level>=3?o[0]:o[1],n=typeof a=="number"?CL.ansi256(a):a.startsWith("#")?CL.hex(a):CL[a];if(typeof n!="function")throw new Error(`Invalid format type ${a}`);return n(e)}function Xy(t,e,r){return t.get("enableHyperlinks")?HXe?`\x1B]8;;${r}\x1B\\${e}\x1B]8;;\x1B\\`:`\x1B]8;;${r}\x07${e}\x1B]8;;\x07`:e}function Kt(t,e,r){if(e===null)return ba(t,"null",Bt.NULL);if(Object.prototype.hasOwnProperty.call(zS,r))return zS[r].pretty(t,e);if(typeof e!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return ba(t,e,r)}function vL(t,e,r,{separator:o=", "}={}){return[...e].map(a=>Kt(t,a,r)).join(o)}function yd(t,e){if(t===null)return null;if(Object.prototype.hasOwnProperty.call(zS,e))return zS[e].json(t);if(typeof t!="string")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof t}`);return t}function qXe(t,e,[r,o]){return t?yd(r,o):Kt(e,r,o)}function DL(t){return{Check:ba(t,"\u2713","green"),Cross:ba(t,"\u2718","red"),Question:ba(t,"?","cyan")}}function $u(t,{label:e,value:[r,o]}){return`${Kt(t,e,Bt.CODE)}: ${Kt(t,r,o)}`}function qw(t,{configuration:e}){let r=e.get("logFilters"),o=new Map,a=new Map,n=[];for(let w of r){let v=w.get("level");if(typeof v>"u")continue;let b=w.get("code");typeof b<"u"&&o.set(b,v);let E=w.get("text");typeof E<"u"&&a.set(E,v);let R=w.get("pattern");typeof R<"u"&&n.push([Pne.default.matcher(R,{contains:!0}),v])}n.reverse();let u=(w,v,b)=>{if(w===null||w===0)return b;let E=a.size>0||n.length>0?(0,xne.default)(v):v;if(a.size>0){let R=a.get(E);if(typeof R<"u")return R??b}if(n.length>0){for(let[R,L]of n)if(R(E))return L??b}if(o.size>0){let R=o.get(Vu(w));if(typeof R<"u")return R??b}return b},A=t.reportInfo,p=t.reportWarning,h=t.reportError,C=function(w,v,b,E){switch(u(v,b,E)){case"info":A.call(w,v,b);break;case"warning":p.call(w,v??0,b);break;case"error":h.call(w,v??0,b);break}};t.reportInfo=function(...w){return C(this,...w,"info")},t.reportWarning=function(...w){return C(this,...w,"warning")},t.reportError=function(...w){return C(this,...w,"error")}}var Hw,_w,Pne,xne,bne,Bt,IL,wL,XS,BL,CL,_Xe,ll,zS,HXe,$S,zl=dt(()=>{St();Hw=tt(yN()),_w=tt(Zg());_t();Pne=tt(zo()),xne=tt(xS()),bne=Ie("util");rS();Ks();Bt={NO_HINT:"NO_HINT",NULL:"NULL",SCOPE:"SCOPE",NAME:"NAME",RANGE:"RANGE",REFERENCE:"REFERENCE",NUMBER:"NUMBER",PATH:"PATH",URL:"URL",ADDED:"ADDED",REMOVED:"REMOVED",CODE:"CODE",INSPECT:"INSPECT",DURATION:"DURATION",SIZE:"SIZE",IDENT:"IDENT",DESCRIPTOR:"DESCRIPTOR",LOCATOR:"LOCATOR",RESOLUTION:"RESOLUTION",DEPENDENT:"DEPENDENT",PACKAGE_EXTENSION:"PACKAGE_EXTENSION",SETTING:"SETTING",MARKDOWN:"MARKDOWN"},IL=(e=>(e[e.BOLD=2]="BOLD",e))(IL||{}),wL=_w.default.GITHUB_ACTIONS?{level:2}:Hw.default.supportsColor?{level:Hw.default.supportsColor.level}:{level:0},XS=wL.level!==0,BL=XS&&!_w.default.GITHUB_ACTIONS&&!_w.default.CIRCLE&&!_w.default.GITLAB,CL=new Hw.default.Instance(wL),_Xe=new Map([[Bt.NO_HINT,null],[Bt.NULL,["#a853b5",129]],[Bt.SCOPE,["#d75f00",166]],[Bt.NAME,["#d7875f",173]],[Bt.RANGE,["#00afaf",37]],[Bt.REFERENCE,["#87afff",111]],[Bt.NUMBER,["#ffd700",220]],[Bt.PATH,["#d75fd7",170]],[Bt.URL,["#d75fd7",170]],[Bt.ADDED,["#5faf00",70]],[Bt.REMOVED,["#d70000",160]],[Bt.CODE,["#87afff",111]],[Bt.SIZE,["#ffd700",220]]]),ll=t=>t,zS={[Bt.INSPECT]:ll({pretty:(t,e)=>(0,bne.inspect)(e,{depth:1/0,colors:t.get("enableColors"),compact:!0,breakLength:1/0}),json:t=>t}),[Bt.NUMBER]:ll({pretty:(t,e)=>ba(t,`${e}`,Bt.NUMBER),json:t=>t}),[Bt.IDENT]:ll({pretty:(t,e)=>cs(t,e),json:t=>nn(t)}),[Bt.LOCATOR]:ll({pretty:(t,e)=>kr(t,e),json:t=>Jl(t)}),[Bt.DESCRIPTOR]:ll({pretty:(t,e)=>Ln(t,e),json:t=>Qa(t)}),[Bt.RESOLUTION]:ll({pretty:(t,{descriptor:e,locator:r})=>jw(t,e,r),json:({descriptor:t,locator:e})=>({descriptor:Qa(t),locator:e!==null?Jl(e):null})}),[Bt.DEPENDENT]:ll({pretty:(t,{locator:e,descriptor:r})=>SL(t,e,r),json:({locator:t,descriptor:e})=>({locator:Jl(t),descriptor:Qa(e)})}),[Bt.PACKAGE_EXTENSION]:ll({pretty:(t,e)=>{switch(e.type){case"Dependency":return`${cs(t,e.parentDescriptor)} \u27A4 ${ba(t,"dependencies",Bt.CODE)} \u27A4 ${cs(t,e.descriptor)}`;case"PeerDependency":return`${cs(t,e.parentDescriptor)} \u27A4 ${ba(t,"peerDependencies",Bt.CODE)} \u27A4 ${cs(t,e.descriptor)}`;case"PeerDependencyMeta":return`${cs(t,e.parentDescriptor)} \u27A4 ${ba(t,"peerDependenciesMeta",Bt.CODE)} \u27A4 ${cs(t,Ys(e.selector))} \u27A4 ${ba(t,e.key,Bt.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:t=>{switch(t.type){case"Dependency":return`${nn(t.parentDescriptor)} > ${nn(t.descriptor)}`;case"PeerDependency":return`${nn(t.parentDescriptor)} >> ${nn(t.descriptor)}`;case"PeerDependencyMeta":return`${nn(t.parentDescriptor)} >> ${t.selector} / ${t.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}}}),[Bt.SETTING]:ll({pretty:(t,e)=>(t.get(e),Xy(t,ba(t,e,Bt.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:t=>t}),[Bt.DURATION]:ll({pretty:(t,e)=>{if(e>1e3*60){let r=Math.floor(e/1e3/60),o=Math.ceil((e-r*60*1e3)/1e3);return o===0?`${r}m`:`${r}m ${o}s`}else{let r=Math.floor(e/1e3),o=e-r*1e3;return o===0?`${r}s`:`${r}s ${o}ms`}},json:t=>t}),[Bt.SIZE]:ll({pretty:(t,e)=>{let r=["KB","MB","GB","TB"],o=r.length;for(;o>1&&e<1024**o;)o-=1;let a=1024**o,n=Math.floor(e*100/a)/100;return ba(t,`${n} ${r[o-1]}`,Bt.NUMBER)},json:t=>t}),[Bt.PATH]:ll({pretty:(t,e)=>ba(t,ue.fromPortablePath(e),Bt.PATH),json:t=>ue.fromPortablePath(t)}),[Bt.MARKDOWN]:ll({pretty:(t,{text:e,format:r,paragraphs:o})=>Bo(e,{format:r,paragraphs:o}),json:({text:t})=>t})};HXe=!!process.env.KONSOLE_VERSION;$S=(a=>(a.Error="error",a.Warning="warning",a.Info="info",a.Discard="discard",a))($S||{})});var kne=U((uTt,Qne)=>{"use strict";Qne.exports=(...t)=>[...new Set([].concat(...t))]});var PL=U((ATt,Tne)=>{"use strict";var jXe=Ie("stream"),Fne=jXe.PassThrough,GXe=Array.prototype.slice;Tne.exports=WXe;function WXe(){let t=[],e=GXe.call(arguments),r=!1,o=e[e.length-1];o&&!Array.isArray(o)&&o.pipe==null?e.pop():o={};let a=o.end!==!1,n=o.pipeError===!0;o.objectMode==null&&(o.objectMode=!0),o.highWaterMark==null&&(o.highWaterMark=64*1024);let u=Fne(o);function A(){for(let C=0,w=arguments.length;C<w;C++)t.push(Rne(arguments[C],o));return p(),this}function p(){if(r)return;r=!0;let C=t.shift();if(!C){process.nextTick(h);return}Array.isArray(C)||(C=[C]);let w=C.length+1;function v(){--w>0||(r=!1,p())}function b(E){function R(){E.removeListener("merge2UnpipeEnd",R),E.removeListener("end",R),n&&E.removeListener("error",L),v()}function L(_){u.emit("error",_)}if(E._readableState.endEmitted)return v();E.on("merge2UnpipeEnd",R),E.on("end",R),n&&E.on("error",L),E.pipe(u,{end:!1}),E.resume()}for(let E=0;E<C.length;E++)b(C[E]);v()}function h(){r=!1,u.emit("queueDrain"),a&&u.end()}return u.setMaxListeners(0),u.add=A,u.on("unpipe",function(C){C.emit("merge2UnpipeEnd")}),e.length&&A.apply(null,e),u}function Rne(t,e){if(Array.isArray(t))for(let r=0,o=t.length;r<o;r++)t[r]=Rne(t[r],e);else{if(!t._readableState&&t.pipe&&(t=t.pipe(Fne(e))),!t._readableState||!t.pause||!t.pipe)throw new Error("Only readable stream can be merged.");t.pause()}return t}});var Nne=U(Zy=>{"use strict";Object.defineProperty(Zy,"__esModule",{value:!0});Zy.splitWhen=Zy.flatten=void 0;function YXe(t){return t.reduce((e,r)=>[].concat(e,r),[])}Zy.flatten=YXe;function KXe(t,e){let r=[[]],o=0;for(let a of t)e(a)?(o++,r[o]=[]):r[o].push(a);return r}Zy.splitWhen=KXe});var Lne=U(eP=>{"use strict";Object.defineProperty(eP,"__esModule",{value:!0});eP.isEnoentCodeError=void 0;function VXe(t){return t.code==="ENOENT"}eP.isEnoentCodeError=VXe});var One=U(tP=>{"use strict";Object.defineProperty(tP,"__esModule",{value:!0});tP.createDirentFromStats=void 0;var xL=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function JXe(t,e){return new xL(t,e)}tP.createDirentFromStats=JXe});var Mne=U(eA=>{"use strict";Object.defineProperty(eA,"__esModule",{value:!0});eA.removeLeadingDotSegment=eA.escape=eA.makeAbsolute=eA.unixify=void 0;var zXe=Ie("path"),XXe=2,ZXe=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g;function $Xe(t){return t.replace(/\\/g,"/")}eA.unixify=$Xe;function eZe(t,e){return zXe.resolve(t,e)}eA.makeAbsolute=eZe;function tZe(t){return t.replace(ZXe,"\\$2")}eA.escape=tZe;function rZe(t){if(t.charAt(0)==="."){let e=t.charAt(1);if(e==="/"||e==="\\")return t.slice(XXe)}return t}eA.removeLeadingDotSegment=rZe});var _ne=U((dTt,Une)=>{Une.exports=function(e){if(typeof e!="string"||e==="")return!1;for(var r;r=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(r[2])return!0;e=e.slice(r.index+r[0].length)}return!1}});var jne=U((mTt,qne)=>{var nZe=_ne(),Hne={"{":"}","(":")","[":"]"},iZe=function(t){if(t[0]==="!")return!0;for(var e=0,r=-2,o=-2,a=-2,n=-2,u=-2;e<t.length;){if(t[e]==="*"||t[e+1]==="?"&&/[\].+)]/.test(t[e])||o!==-1&&t[e]==="["&&t[e+1]!=="]"&&(o<e&&(o=t.indexOf("]",e)),o>e&&(u===-1||u>o||(u=t.indexOf("\\",e),u===-1||u>o)))||a!==-1&&t[e]==="{"&&t[e+1]!=="}"&&(a=t.indexOf("}",e),a>e&&(u=t.indexOf("\\",e),u===-1||u>a))||n!==-1&&t[e]==="("&&t[e+1]==="?"&&/[:!=]/.test(t[e+2])&&t[e+3]!==")"&&(n=t.indexOf(")",e),n>e&&(u=t.indexOf("\\",e),u===-1||u>n))||r!==-1&&t[e]==="("&&t[e+1]!=="|"&&(r<e&&(r=t.indexOf("|",e)),r!==-1&&t[r+1]!==")"&&(n=t.indexOf(")",r),n>r&&(u=t.indexOf("\\",r),u===-1||u>n))))return!0;if(t[e]==="\\"){var A=t[e+1];e+=2;var p=Hne[A];if(p){var h=t.indexOf(p,e);h!==-1&&(e=h+1)}if(t[e]==="!")return!0}else e++}return!1},sZe=function(t){if(t[0]==="!")return!0;for(var e=0;e<t.length;){if(/[*?{}()[\]]/.test(t[e]))return!0;if(t[e]==="\\"){var r=t[e+1];e+=2;var o=Hne[r];if(o){var a=t.indexOf(o,e);a!==-1&&(e=a+1)}if(t[e]==="!")return!0}else e++}return!1};qne.exports=function(e,r){if(typeof e!="string"||e==="")return!1;if(nZe(e))return!0;var o=iZe;return r&&r.strict===!1&&(o=sZe),o(e)}});var Wne=U((yTt,Gne)=>{"use strict";var oZe=jne(),aZe=Ie("path").posix.dirname,lZe=Ie("os").platform()==="win32",bL="/",cZe=/\\/g,uZe=/[\{\[].*[\}\]]$/,AZe=/(^|[^\\])([\{\[]|\([^\)]+$)/,fZe=/\\([\!\*\?\|\[\]\(\)\{\}])/g;Gne.exports=function(e,r){var o=Object.assign({flipBackslashes:!0},r);o.flipBackslashes&&lZe&&e.indexOf(bL)<0&&(e=e.replace(cZe,bL)),uZe.test(e)&&(e+=bL),e+="a";do e=aZe(e);while(oZe(e)||AZe.test(e));return e.replace(fZe,"$1")}});var $ne=U(Or=>{"use strict";Object.defineProperty(Or,"__esModule",{value:!0});Or.matchAny=Or.convertPatternsToRe=Or.makeRe=Or.getPatternParts=Or.expandBraceExpansion=Or.expandPatternsWithBraceExpansion=Or.isAffectDepthOfReadingPattern=Or.endsWithSlashGlobStar=Or.hasGlobStar=Or.getBaseDirectory=Or.isPatternRelatedToParentDirectory=Or.getPatternsOutsideCurrentDirectory=Or.getPatternsInsideCurrentDirectory=Or.getPositivePatterns=Or.getNegativePatterns=Or.isPositivePattern=Or.isNegativePattern=Or.convertToNegativePattern=Or.convertToPositivePattern=Or.isDynamicPattern=Or.isStaticPattern=void 0;var pZe=Ie("path"),hZe=Wne(),QL=zo(),Yne="**",gZe="\\",dZe=/[*?]|^!/,mZe=/\[[^[]*]/,yZe=/(?:^|[^!*+?@])\([^(]*\|[^|]*\)/,EZe=/[!*+?@]\([^(]*\)/,CZe=/,|\.\./;function Kne(t,e={}){return!Vne(t,e)}Or.isStaticPattern=Kne;function Vne(t,e={}){return t===""?!1:!!(e.caseSensitiveMatch===!1||t.includes(gZe)||dZe.test(t)||mZe.test(t)||yZe.test(t)||e.extglob!==!1&&EZe.test(t)||e.braceExpansion!==!1&&IZe(t))}Or.isDynamicPattern=Vne;function IZe(t){let e=t.indexOf("{");if(e===-1)return!1;let r=t.indexOf("}",e+1);if(r===-1)return!1;let o=t.slice(e,r);return CZe.test(o)}function wZe(t){return rP(t)?t.slice(1):t}Or.convertToPositivePattern=wZe;function BZe(t){return"!"+t}Or.convertToNegativePattern=BZe;function rP(t){return t.startsWith("!")&&t[1]!=="("}Or.isNegativePattern=rP;function Jne(t){return!rP(t)}Or.isPositivePattern=Jne;function vZe(t){return t.filter(rP)}Or.getNegativePatterns=vZe;function DZe(t){return t.filter(Jne)}Or.getPositivePatterns=DZe;function SZe(t){return t.filter(e=>!kL(e))}Or.getPatternsInsideCurrentDirectory=SZe;function PZe(t){return t.filter(kL)}Or.getPatternsOutsideCurrentDirectory=PZe;function kL(t){return t.startsWith("..")||t.startsWith("./..")}Or.isPatternRelatedToParentDirectory=kL;function xZe(t){return hZe(t,{flipBackslashes:!1})}Or.getBaseDirectory=xZe;function bZe(t){return t.includes(Yne)}Or.hasGlobStar=bZe;function zne(t){return t.endsWith("/"+Yne)}Or.endsWithSlashGlobStar=zne;function QZe(t){let e=pZe.basename(t);return zne(t)||Kne(e)}Or.isAffectDepthOfReadingPattern=QZe;function kZe(t){return t.reduce((e,r)=>e.concat(Xne(r)),[])}Or.expandPatternsWithBraceExpansion=kZe;function Xne(t){return QL.braces(t,{expand:!0,nodupes:!0})}Or.expandBraceExpansion=Xne;function FZe(t,e){let{parts:r}=QL.scan(t,Object.assign(Object.assign({},e),{parts:!0}));return r.length===0&&(r=[t]),r[0].startsWith("/")&&(r[0]=r[0].slice(1),r.unshift("")),r}Or.getPatternParts=FZe;function Zne(t,e){return QL.makeRe(t,e)}Or.makeRe=Zne;function RZe(t,e){return t.map(r=>Zne(r,e))}Or.convertPatternsToRe=RZe;function TZe(t,e){return e.some(r=>r.test(t))}Or.matchAny=TZe});var tie=U(nP=>{"use strict";Object.defineProperty(nP,"__esModule",{value:!0});nP.merge=void 0;var NZe=PL();function LZe(t){let e=NZe(t);return t.forEach(r=>{r.once("error",o=>e.emit("error",o))}),e.once("close",()=>eie(t)),e.once("end",()=>eie(t)),e}nP.merge=LZe;function eie(t){t.forEach(e=>e.emit("close"))}});var rie=U($y=>{"use strict";Object.defineProperty($y,"__esModule",{value:!0});$y.isEmpty=$y.isString=void 0;function OZe(t){return typeof t=="string"}$y.isString=OZe;function MZe(t){return t===""}$y.isEmpty=MZe});var Pf=U(So=>{"use strict";Object.defineProperty(So,"__esModule",{value:!0});So.string=So.stream=So.pattern=So.path=So.fs=So.errno=So.array=void 0;var UZe=Nne();So.array=UZe;var _Ze=Lne();So.errno=_Ze;var HZe=One();So.fs=HZe;var qZe=Mne();So.path=qZe;var jZe=$ne();So.pattern=jZe;var GZe=tie();So.stream=GZe;var WZe=rie();So.string=WZe});var sie=U(Po=>{"use strict";Object.defineProperty(Po,"__esModule",{value:!0});Po.convertPatternGroupToTask=Po.convertPatternGroupsToTasks=Po.groupPatternsByBaseDirectory=Po.getNegativePatternsAsPositive=Po.getPositivePatterns=Po.convertPatternsToTasks=Po.generate=void 0;var xf=Pf();function YZe(t,e){let r=nie(t),o=iie(t,e.ignore),a=r.filter(p=>xf.pattern.isStaticPattern(p,e)),n=r.filter(p=>xf.pattern.isDynamicPattern(p,e)),u=FL(a,o,!1),A=FL(n,o,!0);return u.concat(A)}Po.generate=YZe;function FL(t,e,r){let o=[],a=xf.pattern.getPatternsOutsideCurrentDirectory(t),n=xf.pattern.getPatternsInsideCurrentDirectory(t),u=RL(a),A=RL(n);return o.push(...TL(u,e,r)),"."in A?o.push(NL(".",n,e,r)):o.push(...TL(A,e,r)),o}Po.convertPatternsToTasks=FL;function nie(t){return xf.pattern.getPositivePatterns(t)}Po.getPositivePatterns=nie;function iie(t,e){return xf.pattern.getNegativePatterns(t).concat(e).map(xf.pattern.convertToPositivePattern)}Po.getNegativePatternsAsPositive=iie;function RL(t){let e={};return t.reduce((r,o)=>{let a=xf.pattern.getBaseDirectory(o);return a in r?r[a].push(o):r[a]=[o],r},e)}Po.groupPatternsByBaseDirectory=RL;function TL(t,e,r){return Object.keys(t).map(o=>NL(o,t[o],e,r))}Po.convertPatternGroupsToTasks=TL;function NL(t,e,r,o){return{dynamic:o,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(xf.pattern.convertToNegativePattern))}}Po.convertPatternGroupToTask=NL});var aie=U(eE=>{"use strict";Object.defineProperty(eE,"__esModule",{value:!0});eE.removeDuplicateSlashes=eE.transform=void 0;var KZe=/(?!^)\/{2,}/g;function VZe(t){return t.map(e=>oie(e))}eE.transform=VZe;function oie(t){return t.replace(KZe,"/")}eE.removeDuplicateSlashes=oie});var cie=U(iP=>{"use strict";Object.defineProperty(iP,"__esModule",{value:!0});iP.read=void 0;function JZe(t,e,r){e.fs.lstat(t,(o,a)=>{if(o!==null){lie(r,o);return}if(!a.isSymbolicLink()||!e.followSymbolicLink){LL(r,a);return}e.fs.stat(t,(n,u)=>{if(n!==null){if(e.throwErrorOnBrokenSymbolicLink){lie(r,n);return}LL(r,a);return}e.markSymbolicLink&&(u.isSymbolicLink=()=>!0),LL(r,u)})})}iP.read=JZe;function lie(t,e){t(e)}function LL(t,e){t(null,e)}});var uie=U(sP=>{"use strict";Object.defineProperty(sP,"__esModule",{value:!0});sP.read=void 0;function zZe(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let o=e.fs.statSync(t);return e.markSymbolicLink&&(o.isSymbolicLink=()=>!0),o}catch(o){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw o}}sP.read=zZe});var Aie=U(Xp=>{"use strict";Object.defineProperty(Xp,"__esModule",{value:!0});Xp.createFileSystemAdapter=Xp.FILE_SYSTEM_ADAPTER=void 0;var oP=Ie("fs");Xp.FILE_SYSTEM_ADAPTER={lstat:oP.lstat,stat:oP.stat,lstatSync:oP.lstatSync,statSync:oP.statSync};function XZe(t){return t===void 0?Xp.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},Xp.FILE_SYSTEM_ADAPTER),t)}Xp.createFileSystemAdapter=XZe});var fie=U(ML=>{"use strict";Object.defineProperty(ML,"__esModule",{value:!0});var ZZe=Aie(),OL=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=ZZe.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,r){return e??r}};ML.default=OL});var Ed=U(Zp=>{"use strict";Object.defineProperty(Zp,"__esModule",{value:!0});Zp.statSync=Zp.stat=Zp.Settings=void 0;var pie=cie(),$Ze=uie(),UL=fie();Zp.Settings=UL.default;function e$e(t,e,r){if(typeof e=="function"){pie.read(t,_L(),e);return}pie.read(t,_L(e),r)}Zp.stat=e$e;function t$e(t,e){let r=_L(e);return $Ze.read(t,r)}Zp.statSync=t$e;function _L(t={}){return t instanceof UL.default?t:new UL.default(t)}});var gie=U((QTt,hie)=>{hie.exports=r$e;function r$e(t,e){var r,o,a,n=!0;Array.isArray(t)?(r=[],o=t.length):(a=Object.keys(t),r={},o=a.length);function u(p){function h(){e&&e(p,r),e=null}n?process.nextTick(h):h()}function A(p,h,C){r[p]=C,(--o===0||h)&&u(h)}o?a?a.forEach(function(p){t[p](function(h,C){A(p,h,C)})}):t.forEach(function(p,h){p(function(C,w){A(h,C,w)})}):u(null),n=!1}});var HL=U(lP=>{"use strict";Object.defineProperty(lP,"__esModule",{value:!0});lP.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var aP=process.versions.node.split(".");if(aP[0]===void 0||aP[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var die=Number.parseInt(aP[0],10),n$e=Number.parseInt(aP[1],10),mie=10,i$e=10,s$e=die>mie,o$e=die===mie&&n$e>=i$e;lP.IS_SUPPORT_READDIR_WITH_FILE_TYPES=s$e||o$e});var yie=U(cP=>{"use strict";Object.defineProperty(cP,"__esModule",{value:!0});cP.createDirentFromStats=void 0;var qL=class{constructor(e,r){this.name=e,this.isBlockDevice=r.isBlockDevice.bind(r),this.isCharacterDevice=r.isCharacterDevice.bind(r),this.isDirectory=r.isDirectory.bind(r),this.isFIFO=r.isFIFO.bind(r),this.isFile=r.isFile.bind(r),this.isSocket=r.isSocket.bind(r),this.isSymbolicLink=r.isSymbolicLink.bind(r)}};function a$e(t,e){return new qL(t,e)}cP.createDirentFromStats=a$e});var jL=U(uP=>{"use strict";Object.defineProperty(uP,"__esModule",{value:!0});uP.fs=void 0;var l$e=yie();uP.fs=l$e});var WL=U(AP=>{"use strict";Object.defineProperty(AP,"__esModule",{value:!0});AP.joinPathSegments=void 0;function c$e(t,e,r){return t.endsWith(r)?t+e:t+r+e}AP.joinPathSegments=c$e});var vie=U($p=>{"use strict";Object.defineProperty($p,"__esModule",{value:!0});$p.readdir=$p.readdirWithFileTypes=$p.read=void 0;var u$e=Ed(),Eie=gie(),A$e=HL(),Cie=jL(),Iie=WL();function f$e(t,e,r){if(!e.stats&&A$e.IS_SUPPORT_READDIR_WITH_FILE_TYPES){wie(t,e,r);return}Bie(t,e,r)}$p.read=f$e;function wie(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(o,a)=>{if(o!==null){fP(r,o);return}let n=a.map(A=>({dirent:A,name:A.name,path:Iie.joinPathSegments(t,A.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){YL(r,n);return}let u=n.map(A=>p$e(A,e));Eie(u,(A,p)=>{if(A!==null){fP(r,A);return}YL(r,p)})})}$p.readdirWithFileTypes=wie;function p$e(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(o,a)=>{if(o!==null){if(e.throwErrorOnBrokenSymbolicLink){r(o);return}r(null,t);return}t.dirent=Cie.fs.createDirentFromStats(t.name,a),r(null,t)})}}function Bie(t,e,r){e.fs.readdir(t,(o,a)=>{if(o!==null){fP(r,o);return}let n=a.map(u=>{let A=Iie.joinPathSegments(t,u,e.pathSegmentSeparator);return p=>{u$e.stat(A,e.fsStatSettings,(h,C)=>{if(h!==null){p(h);return}let w={name:u,path:A,dirent:Cie.fs.createDirentFromStats(u,C)};e.stats&&(w.stats=C),p(null,w)})}});Eie(n,(u,A)=>{if(u!==null){fP(r,u);return}YL(r,A)})})}$p.readdir=Bie;function fP(t,e){t(e)}function YL(t,e){t(null,e)}});var bie=U(e0=>{"use strict";Object.defineProperty(e0,"__esModule",{value:!0});e0.readdir=e0.readdirWithFileTypes=e0.read=void 0;var h$e=Ed(),g$e=HL(),Die=jL(),Sie=WL();function d$e(t,e){return!e.stats&&g$e.IS_SUPPORT_READDIR_WITH_FILE_TYPES?Pie(t,e):xie(t,e)}e0.read=d$e;function Pie(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(o=>{let a={dirent:o,name:o.name,path:Sie.joinPathSegments(t,o.name,e.pathSegmentSeparator)};if(a.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let n=e.fs.statSync(a.path);a.dirent=Die.fs.createDirentFromStats(a.name,n)}catch(n){if(e.throwErrorOnBrokenSymbolicLink)throw n}return a})}e0.readdirWithFileTypes=Pie;function xie(t,e){return e.fs.readdirSync(t).map(o=>{let a=Sie.joinPathSegments(t,o,e.pathSegmentSeparator),n=h$e.statSync(a,e.fsStatSettings),u={name:o,path:a,dirent:Die.fs.createDirentFromStats(o,n)};return e.stats&&(u.stats=n),u})}e0.readdir=xie});var Qie=U(t0=>{"use strict";Object.defineProperty(t0,"__esModule",{value:!0});t0.createFileSystemAdapter=t0.FILE_SYSTEM_ADAPTER=void 0;var tE=Ie("fs");t0.FILE_SYSTEM_ADAPTER={lstat:tE.lstat,stat:tE.stat,lstatSync:tE.lstatSync,statSync:tE.statSync,readdir:tE.readdir,readdirSync:tE.readdirSync};function m$e(t){return t===void 0?t0.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},t0.FILE_SYSTEM_ADAPTER),t)}t0.createFileSystemAdapter=m$e});var kie=U(VL=>{"use strict";Object.defineProperty(VL,"__esModule",{value:!0});var y$e=Ie("path"),E$e=Ed(),C$e=Qie(),KL=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=C$e.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,y$e.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new E$e.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};VL.default=KL});var pP=U(r0=>{"use strict";Object.defineProperty(r0,"__esModule",{value:!0});r0.Settings=r0.scandirSync=r0.scandir=void 0;var Fie=vie(),I$e=bie(),JL=kie();r0.Settings=JL.default;function w$e(t,e,r){if(typeof e=="function"){Fie.read(t,zL(),e);return}Fie.read(t,zL(e),r)}r0.scandir=w$e;function B$e(t,e){let r=zL(e);return I$e.read(t,r)}r0.scandirSync=B$e;function zL(t={}){return t instanceof JL.default?t:new JL.default(t)}});var Tie=U((_Tt,Rie)=>{"use strict";function v$e(t){var e=new t,r=e;function o(){var n=e;return n.next?e=n.next:(e=new t,r=e),n.next=null,n}function a(n){r.next=n,r=n}return{get:o,release:a}}Rie.exports=v$e});var Lie=U((HTt,XL)=>{"use strict";var D$e=Tie();function Nie(t,e,r){if(typeof t=="function"&&(r=e,e=t,t=null),r<1)throw new Error("fastqueue concurrency must be greater than 1");var o=D$e(S$e),a=null,n=null,u=0,A=null,p={push:R,drain:Xl,saturated:Xl,pause:C,paused:!1,concurrency:r,running:h,resume:b,idle:E,length:w,getQueue:v,unshift:L,empty:Xl,kill:V,killAndDrain:re,error:ae};return p;function h(){return u}function C(){p.paused=!0}function w(){for(var he=a,pe=0;he;)he=he.next,pe++;return pe}function v(){for(var he=a,pe=[];he;)pe.push(he.value),he=he.next;return pe}function b(){if(!!p.paused){p.paused=!1;for(var he=0;he<p.concurrency;he++)u++,_()}}function E(){return u===0&&p.length()===0}function R(he,pe){var De=o.get();De.context=t,De.release=_,De.value=he,De.callback=pe||Xl,De.errorHandler=A,u===p.concurrency||p.paused?n?(n.next=De,n=De):(a=De,n=De,p.saturated()):(u++,e.call(t,De.value,De.worked))}function L(he,pe){var De=o.get();De.context=t,De.release=_,De.value=he,De.callback=pe||Xl,u===p.concurrency||p.paused?a?(De.next=a,a=De):(a=De,n=De,p.saturated()):(u++,e.call(t,De.value,De.worked))}function _(he){he&&o.release(he);var pe=a;pe?p.paused?u--:(n===a&&(n=null),a=pe.next,pe.next=null,e.call(t,pe.value,pe.worked),n===null&&p.empty()):--u===0&&p.drain()}function V(){a=null,n=null,p.drain=Xl}function re(){a=null,n=null,p.drain(),p.drain=Xl}function ae(he){A=he}}function Xl(){}function S$e(){this.value=null,this.callback=Xl,this.next=null,this.release=Xl,this.context=null,this.errorHandler=null;var t=this;this.worked=function(r,o){var a=t.callback,n=t.errorHandler,u=t.value;t.value=null,t.callback=Xl,t.errorHandler&&n(r,u),a.call(t.context,r,o),t.release(t)}}function P$e(t,e,r){typeof t=="function"&&(r=e,e=t,t=null);function o(C,w){e.call(this,C).then(function(v){w(null,v)},w)}var a=Nie(t,o,r),n=a.push,u=a.unshift;return a.push=A,a.unshift=p,a.drained=h,a;function A(C){var w=new Promise(function(v,b){n(C,function(E,R){if(E){b(E);return}v(R)})});return w.catch(Xl),w}function p(C){var w=new Promise(function(v,b){u(C,function(E,R){if(E){b(E);return}v(R)})});return w.catch(Xl),w}function h(){var C=a.drain,w=new Promise(function(v){a.drain=function(){C(),v()}});return w}}XL.exports=Nie;XL.exports.promise=P$e});var hP=U(tA=>{"use strict";Object.defineProperty(tA,"__esModule",{value:!0});tA.joinPathSegments=tA.replacePathSegmentSeparator=tA.isAppliedFilter=tA.isFatalError=void 0;function x$e(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}tA.isFatalError=x$e;function b$e(t,e){return t===null||t(e)}tA.isAppliedFilter=b$e;function Q$e(t,e){return t.split(/[/\\]/).join(e)}tA.replacePathSegmentSeparator=Q$e;function k$e(t,e,r){return t===""?e:t.endsWith(r)?t+e:t+r+e}tA.joinPathSegments=k$e});var eO=U($L=>{"use strict";Object.defineProperty($L,"__esModule",{value:!0});var F$e=hP(),ZL=class{constructor(e,r){this._root=e,this._settings=r,this._root=F$e.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};$L.default=ZL});var nO=U(rO=>{"use strict";Object.defineProperty(rO,"__esModule",{value:!0});var R$e=Ie("events"),T$e=pP(),N$e=Lie(),gP=hP(),L$e=eO(),tO=class extends L$e.default{constructor(e,r){super(e,r),this._settings=r,this._scandir=T$e.scandir,this._emitter=new R$e.EventEmitter,this._queue=N$e(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on("entry",e)}onError(e){this._emitter.once("error",e)}onEnd(e){this._emitter.once("end",e)}_pushToQueue(e,r){let o={directory:e,base:r};this._queue.push(o,a=>{a!==null&&this._handleError(a)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(o,a)=>{if(o!==null){r(o,void 0);return}for(let n of a)this._handleEntry(n,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!gP.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",e))}_handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let o=e.path;r!==void 0&&(e.path=gP.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),gP.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&gP.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(o,e.path)}_emitEntry(e){this._emitter.emit("entry",e)}};rO.default=tO});var Oie=U(sO=>{"use strict";Object.defineProperty(sO,"__esModule",{value:!0});var O$e=nO(),iO=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new O$e.default(this._root,this._settings),this._storage=new Set}read(e){this._reader.onError(r=>{M$e(e,r)}),this._reader.onEntry(r=>{this._storage.add(r)}),this._reader.onEnd(()=>{U$e(e,[...this._storage])}),this._reader.read()}};sO.default=iO;function M$e(t,e){t(e)}function U$e(t,e){t(null,e)}});var Mie=U(aO=>{"use strict";Object.defineProperty(aO,"__esModule",{value:!0});var _$e=Ie("stream"),H$e=nO(),oO=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new H$e.default(this._root,this._settings),this._stream=new _$e.Readable({objectMode:!0,read:()=>{},destroy:()=>{this._reader.isDestroyed||this._reader.destroy()}})}read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}};aO.default=oO});var Uie=U(cO=>{"use strict";Object.defineProperty(cO,"__esModule",{value:!0});var q$e=pP(),dP=hP(),j$e=eO(),lO=class extends j$e.default{constructor(){super(...arguments),this._scandir=q$e.scandirSync,this._storage=new Set,this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),[...this._storage]}_pushToQueue(e,r){this._queue.add({directory:e,base:r})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,r){try{let o=this._scandir(e,this._settings.fsScandirSettings);for(let a of o)this._handleEntry(a,r)}catch(o){this._handleError(o)}}_handleError(e){if(!!dP.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let o=e.path;r!==void 0&&(e.path=dP.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),dP.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&dP.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(o,e.path)}_pushToStorage(e){this._storage.add(e)}};cO.default=lO});var _ie=U(AO=>{"use strict";Object.defineProperty(AO,"__esModule",{value:!0});var G$e=Uie(),uO=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new G$e.default(this._root,this._settings)}read(){return this._reader.read()}};AO.default=uO});var Hie=U(pO=>{"use strict";Object.defineProperty(pO,"__esModule",{value:!0});var W$e=Ie("path"),Y$e=pP(),fO=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,Number.POSITIVE_INFINITY),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,W$e.sep),this.fsScandirSettings=new Y$e.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};pO.default=fO});var yP=U(rA=>{"use strict";Object.defineProperty(rA,"__esModule",{value:!0});rA.Settings=rA.walkStream=rA.walkSync=rA.walk=void 0;var qie=Oie(),K$e=Mie(),V$e=_ie(),hO=Hie();rA.Settings=hO.default;function J$e(t,e,r){if(typeof e=="function"){new qie.default(t,mP()).read(e);return}new qie.default(t,mP(e)).read(r)}rA.walk=J$e;function z$e(t,e){let r=mP(e);return new V$e.default(t,r).read()}rA.walkSync=z$e;function X$e(t,e){let r=mP(e);return new K$e.default(t,r).read()}rA.walkStream=X$e;function mP(t={}){return t instanceof hO.default?t:new hO.default(t)}});var EP=U(dO=>{"use strict";Object.defineProperty(dO,"__esModule",{value:!0});var Z$e=Ie("path"),$$e=Ed(),jie=Pf(),gO=class{constructor(e){this._settings=e,this._fsStatSettings=new $$e.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return Z$e.resolve(this._settings.cwd,e)}_makeEntry(e,r){let o={name:r,path:r,dirent:jie.fs.createDirentFromStats(r,e)};return this._settings.stats&&(o.stats=e),o}_isFatalError(e){return!jie.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};dO.default=gO});var EO=U(yO=>{"use strict";Object.defineProperty(yO,"__esModule",{value:!0});var eet=Ie("stream"),tet=Ed(),ret=yP(),net=EP(),mO=class extends net.default{constructor(){super(...arguments),this._walkStream=ret.walkStream,this._stat=tet.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let o=e.map(this._getFullEntryPath,this),a=new eet.PassThrough({objectMode:!0});a._write=(n,u,A)=>this._getEntry(o[n],e[n],r).then(p=>{p!==null&&r.entryFilter(p)&&a.push(p),n===o.length-1&&a.end(),A()}).catch(A);for(let n=0;n<o.length;n++)a.write(n);return a}_getEntry(e,r,o){return this._getStat(e).then(a=>this._makeEntry(a,r)).catch(a=>{if(o.errorFilter(a))return null;throw a})}_getStat(e){return new Promise((r,o)=>{this._stat(e,this._fsStatSettings,(a,n)=>a===null?r(n):o(a))})}};yO.default=mO});var Gie=U(IO=>{"use strict";Object.defineProperty(IO,"__esModule",{value:!0});var iet=yP(),set=EP(),oet=EO(),CO=class extends set.default{constructor(){super(...arguments),this._walkAsync=iet.walk,this._readerStream=new oet.default(this._settings)}dynamic(e,r){return new Promise((o,a)=>{this._walkAsync(e,r,(n,u)=>{n===null?o(u):a(n)})})}async static(e,r){let o=[],a=this._readerStream.static(e,r);return new Promise((n,u)=>{a.once("error",u),a.on("data",A=>o.push(A)),a.once("end",()=>n(o))})}};IO.default=CO});var Wie=U(BO=>{"use strict";Object.defineProperty(BO,"__esModule",{value:!0});var rE=Pf(),wO=class{constructor(e,r,o){this._patterns=e,this._settings=r,this._micromatchOptions=o,this._storage=[],this._fillStorage()}_fillStorage(){let e=rE.pattern.expandPatternsWithBraceExpansion(this._patterns);for(let r of e){let o=this._getPatternSegments(r),a=this._splitSegmentsIntoSections(o);this._storage.push({complete:a.length<=1,pattern:r,segments:o,sections:a})}}_getPatternSegments(e){return rE.pattern.getPatternParts(e,this._micromatchOptions).map(o=>rE.pattern.isDynamicPattern(o,this._settings)?{dynamic:!0,pattern:o,patternRe:rE.pattern.makeRe(o,this._micromatchOptions)}:{dynamic:!1,pattern:o})}_splitSegmentsIntoSections(e){return rE.array.splitWhen(e,r=>r.dynamic&&rE.pattern.hasGlobStar(r.pattern))}};BO.default=wO});var Yie=U(DO=>{"use strict";Object.defineProperty(DO,"__esModule",{value:!0});var aet=Wie(),vO=class extends aet.default{match(e){let r=e.split("/"),o=r.length,a=this._storage.filter(n=>!n.complete||n.segments.length>o);for(let n of a){let u=n.sections[0];if(!n.complete&&o>u.length||r.every((p,h)=>{let C=n.segments[h];return!!(C.dynamic&&C.patternRe.test(p)||!C.dynamic&&C.pattern===p)}))return!0}return!1}};DO.default=vO});var Kie=U(PO=>{"use strict";Object.defineProperty(PO,"__esModule",{value:!0});var CP=Pf(),cet=Yie(),SO=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,o){let a=this._getMatcher(r),n=this._getNegativePatternsRe(o);return u=>this._filter(e,u,a,n)}_getMatcher(e){return new cet.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter(CP.pattern.isAffectDepthOfReadingPattern);return CP.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,o,a){if(this._isSkippedByDeep(e,r.path)||this._isSkippedSymbolicLink(r))return!1;let n=CP.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(n,o)?!1:this._isSkippedByNegativePatterns(n,a)}_isSkippedByDeep(e,r){return this._settings.deep===1/0?!1:this._getEntryLevel(e,r)>=this._settings.deep}_getEntryLevel(e,r){let o=r.split("/").length;if(e==="")return o;let a=e.split("/").length;return o-a}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!CP.pattern.matchAny(e,r)}};PO.default=SO});var Vie=U(bO=>{"use strict";Object.defineProperty(bO,"__esModule",{value:!0});var Cd=Pf(),xO=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let o=Cd.pattern.convertPatternsToRe(e,this._micromatchOptions),a=Cd.pattern.convertPatternsToRe(r,this._micromatchOptions);return n=>this._filter(n,o,a)}_filter(e,r,o){if(this._settings.unique&&this._isDuplicateEntry(e)||this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(e.path,o))return!1;let a=this._settings.baseNameMatch?e.name:e.path,n=e.dirent.isDirectory(),u=this._isMatchToPatterns(a,r,n)&&!this._isMatchToPatterns(e.path,o,n);return this._settings.unique&&u&&this._createIndexRecord(e),u}_isDuplicateEntry(e){return this.index.has(e.path)}_createIndexRecord(e){this.index.set(e.path,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,r){if(!this._settings.absolute)return!1;let o=Cd.path.makeAbsolute(this._settings.cwd,e);return Cd.pattern.matchAny(o,r)}_isMatchToPatterns(e,r,o){let a=Cd.path.removeLeadingDotSegment(e),n=Cd.pattern.matchAny(a,r);return!n&&o?Cd.pattern.matchAny(a+"/",r):n}};bO.default=xO});var Jie=U(kO=>{"use strict";Object.defineProperty(kO,"__esModule",{value:!0});var uet=Pf(),QO=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return uet.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};kO.default=QO});var Xie=U(RO=>{"use strict";Object.defineProperty(RO,"__esModule",{value:!0});var zie=Pf(),FO=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=zie.path.makeAbsolute(this._settings.cwd,r),r=zie.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+="/"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};RO.default=FO});var IP=U(NO=>{"use strict";Object.defineProperty(NO,"__esModule",{value:!0});var Aet=Ie("path"),fet=Kie(),pet=Vie(),het=Jie(),get=Xie(),TO=class{constructor(e){this._settings=e,this.errorFilter=new het.default(this._settings),this.entryFilter=new pet.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new fet.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new get.default(this._settings)}_getRootDirectory(e){return Aet.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){let r=e.base==="."?"":e.base;return{basePath:r,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(r,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}};NO.default=TO});var Zie=U(OO=>{"use strict";Object.defineProperty(OO,"__esModule",{value:!0});var det=Gie(),met=IP(),LO=class extends met.default{constructor(){super(...arguments),this._reader=new det.default(this._settings)}async read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e);return(await this.api(r,e,o)).map(n=>o.transform(n))}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};OO.default=LO});var $ie=U(UO=>{"use strict";Object.defineProperty(UO,"__esModule",{value:!0});var yet=Ie("stream"),Eet=EO(),Cet=IP(),MO=class extends Cet.default{constructor(){super(...arguments),this._reader=new Eet.default(this._settings)}read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e),a=this.api(r,e,o),n=new yet.Readable({objectMode:!0,read:()=>{}});return a.once("error",u=>n.emit("error",u)).on("data",u=>n.emit("data",o.transform(u))).once("end",()=>n.emit("end")),n.once("close",()=>a.destroy()),n}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};UO.default=MO});var ese=U(HO=>{"use strict";Object.defineProperty(HO,"__esModule",{value:!0});var Iet=Ed(),wet=yP(),Bet=EP(),_O=class extends Bet.default{constructor(){super(...arguments),this._walkSync=wet.walkSync,this._statSync=Iet.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let o=[];for(let a of e){let n=this._getFullEntryPath(a),u=this._getEntry(n,a,r);u===null||!r.entryFilter(u)||o.push(u)}return o}_getEntry(e,r,o){try{let a=this._getStat(e);return this._makeEntry(a,r)}catch(a){if(o.errorFilter(a))return null;throw a}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};HO.default=_O});var tse=U(jO=>{"use strict";Object.defineProperty(jO,"__esModule",{value:!0});var vet=ese(),Det=IP(),qO=class extends Det.default{constructor(){super(...arguments),this._reader=new vet.default(this._settings)}read(e){let r=this._getRootDirectory(e),o=this._getReaderOptions(e);return this.api(r,e,o).map(o.transform)}api(e,r,o){return r.dynamic?this._reader.dynamic(e,o):this._reader.static(r.patterns,o)}};jO.default=qO});var rse=U(iE=>{"use strict";Object.defineProperty(iE,"__esModule",{value:!0});iE.DEFAULT_FILE_SYSTEM_ADAPTER=void 0;var nE=Ie("fs"),Pet=Ie("os"),xet=Math.max(Pet.cpus().length,1);iE.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:nE.lstat,lstatSync:nE.lstatSync,stat:nE.stat,statSync:nE.statSync,readdir:nE.readdir,readdirSync:nE.readdirSync};var GO=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,xet),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},iE.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};iE.default=GO});var wP=U((fNt,sse)=>{"use strict";var nse=sie(),ise=aie(),bet=Zie(),Qet=$ie(),ket=tse(),WO=rse(),Id=Pf();async function YO(t,e){sE(t);let r=KO(t,bet.default,e),o=await Promise.all(r);return Id.array.flatten(o)}(function(t){function e(u,A){sE(u);let p=KO(u,ket.default,A);return Id.array.flatten(p)}t.sync=e;function r(u,A){sE(u);let p=KO(u,Qet.default,A);return Id.stream.merge(p)}t.stream=r;function o(u,A){sE(u);let p=ise.transform([].concat(u)),h=new WO.default(A);return nse.generate(p,h)}t.generateTasks=o;function a(u,A){sE(u);let p=new WO.default(A);return Id.pattern.isDynamicPattern(u,p)}t.isDynamicPattern=a;function n(u){return sE(u),Id.path.escape(u)}t.escapePath=n})(YO||(YO={}));function KO(t,e,r){let o=ise.transform([].concat(t)),a=new WO.default(r),n=nse.generate(o,a),u=new e(a);return n.map(u.read,u)}function sE(t){if(![].concat(t).every(o=>Id.string.isString(o)&&!Id.string.isEmpty(o)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}sse.exports=YO});var ase=U(wd=>{"use strict";var{promisify:Fet}=Ie("util"),ose=Ie("fs");async function VO(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return(await Fet(ose[t])(r))[e]()}catch(o){if(o.code==="ENOENT")return!1;throw o}}function JO(t,e,r){if(typeof r!="string")throw new TypeError(`Expected a string, got ${typeof r}`);try{return ose[t](r)[e]()}catch(o){if(o.code==="ENOENT")return!1;throw o}}wd.isFile=VO.bind(null,"stat","isFile");wd.isDirectory=VO.bind(null,"stat","isDirectory");wd.isSymlink=VO.bind(null,"lstat","isSymbolicLink");wd.isFileSync=JO.bind(null,"statSync","isFile");wd.isDirectorySync=JO.bind(null,"statSync","isDirectory");wd.isSymlinkSync=JO.bind(null,"lstatSync","isSymbolicLink")});var fse=U((hNt,zO)=>{"use strict";var Bd=Ie("path"),lse=ase(),cse=t=>t.length>1?`{${t.join(",")}}`:t[0],use=(t,e)=>{let r=t[0]==="!"?t.slice(1):t;return Bd.isAbsolute(r)?r:Bd.join(e,r)},Ret=(t,e)=>Bd.extname(t)?`**/${t}`:`**/${t}.${cse(e)}`,Ase=(t,e)=>{if(e.files&&!Array.isArray(e.files))throw new TypeError(`Expected \`files\` to be of type \`Array\` but received type \`${typeof e.files}\``);if(e.extensions&&!Array.isArray(e.extensions))throw new TypeError(`Expected \`extensions\` to be of type \`Array\` but received type \`${typeof e.extensions}\``);return e.files&&e.extensions?e.files.map(r=>Bd.posix.join(t,Ret(r,e.extensions))):e.files?e.files.map(r=>Bd.posix.join(t,`**/${r}`)):e.extensions?[Bd.posix.join(t,`**/*.${cse(e.extensions)}`)]:[Bd.posix.join(t,"**")]};zO.exports=async(t,e)=>{if(e={cwd:process.cwd(),...e},typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let r=await Promise.all([].concat(t).map(async o=>await lse.isDirectory(use(o,e.cwd))?Ase(o,e):o));return[].concat.apply([],r)};zO.exports.sync=(t,e)=>{if(e={cwd:process.cwd(),...e},typeof e.cwd!="string")throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof e.cwd}\``);let r=[].concat(t).map(o=>lse.isDirectorySync(use(o,e.cwd))?Ase(o,e):o);return[].concat.apply([],r)}});var Ise=U((gNt,Cse)=>{function pse(t){return Array.isArray(t)?t:[t]}var mse="",hse=" ",XO="\\",Tet=/^\s+$/,Net=/^\\!/,Let=/^\\#/,Oet=/\r?\n/g,Met=/^\.*\/|^\.+$/,ZO="/",gse=typeof Symbol<"u"?Symbol.for("node-ignore"):"node-ignore",Uet=(t,e,r)=>Object.defineProperty(t,e,{value:r}),_et=/([0-z])-([0-z])/g,yse=()=>!1,Het=t=>t.replace(_et,(e,r,o)=>r.charCodeAt(0)<=o.charCodeAt(0)?e:mse),qet=t=>{let{length:e}=t;return t.slice(0,e-e%2)},jet=[[/\\?\s+$/,t=>t.indexOf("\\")===0?hse:mse],[/\\\s/g,()=>hse],[/[\\$.|*+(){^]/g,t=>`\\${t}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(t,e,r)=>e+6<r.length?"(?:\\/[^\\/]+)*":"\\/.+"],[/(^|[^\\]+)\\\*(?=.+)/g,(t,e)=>`${e}[^\\/]*`],[/\\\\\\(?=[$.|*+(){^])/g,()=>XO],[/\\\\/g,()=>XO],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(t,e,r,o,a)=>e===XO?`\\[${r}${qet(o)}${a}`:a==="]"&&o.length%2===0?`[${Het(r)}${o}]`:"[]"],[/(?:[^*])$/,t=>/\/$/.test(t)?`${t}$`:`${t}(?=$|\\/$)`],[/(\^|\\\/)?\\\*$/,(t,e)=>`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`]],dse=Object.create(null),Get=(t,e)=>{let r=dse[t];return r||(r=jet.reduce((o,a)=>o.replace(a[0],a[1].bind(t)),t),dse[t]=r),e?new RegExp(r,"i"):new RegExp(r)},tM=t=>typeof t=="string",Wet=t=>t&&tM(t)&&!Tet.test(t)&&t.indexOf("#")!==0,Yet=t=>t.split(Oet),$O=class{constructor(e,r,o,a){this.origin=e,this.pattern=r,this.negative=o,this.regex=a}},Ket=(t,e)=>{let r=t,o=!1;t.indexOf("!")===0&&(o=!0,t=t.substr(1)),t=t.replace(Net,"!").replace(Let,"#");let a=Get(t,e);return new $O(r,t,o,a)},Vet=(t,e)=>{throw new e(t)},bf=(t,e,r)=>tM(t)?t?bf.isNotRelative(t)?r(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:r("path must not be empty",TypeError):r(`path must be a string, but got \`${e}\``,TypeError),Ese=t=>Met.test(t);bf.isNotRelative=Ese;bf.convert=t=>t;var eM=class{constructor({ignorecase:e=!0,ignoreCase:r=e,allowRelativePaths:o=!1}={}){Uet(this,gse,!0),this._rules=[],this._ignoreCase=r,this._allowRelativePaths=o,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}_addPattern(e){if(e&&e[gse]){this._rules=this._rules.concat(e._rules),this._added=!0;return}if(Wet(e)){let r=Ket(e,this._ignoreCase);this._added=!0,this._rules.push(r)}}add(e){return this._added=!1,pse(tM(e)?Yet(e):e).forEach(this._addPattern,this),this._added&&this._initCache(),this}addPattern(e){return this.add(e)}_testOne(e,r){let o=!1,a=!1;return this._rules.forEach(n=>{let{negative:u}=n;if(a===u&&o!==a||u&&!o&&!a&&!r)return;n.regex.test(e)&&(o=!u,a=u)}),{ignored:o,unignored:a}}_test(e,r,o,a){let n=e&&bf.convert(e);return bf(n,e,this._allowRelativePaths?yse:Vet),this._t(n,r,o,a)}_t(e,r,o,a){if(e in r)return r[e];if(a||(a=e.split(ZO)),a.pop(),!a.length)return r[e]=this._testOne(e,o);let n=this._t(a.join(ZO)+ZO,r,o,a);return r[e]=n.ignored?n:this._testOne(e,o)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return pse(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},BP=t=>new eM(t),Jet=t=>bf(t&&bf.convert(t),t,yse);BP.isPathValid=Jet;BP.default=BP;Cse.exports=BP;if(typeof process<"u"&&(process.env&&process.env.IGNORE_TEST_WIN32||process.platform==="win32")){let t=r=>/^\\\\\?\\/.test(r)||/["<>|\u0000-\u001F]+/u.test(r)?r:r.replace(/\\/g,"/");bf.convert=t;let e=/^[a-z]:\//i;bf.isNotRelative=r=>e.test(r)||Ese(r)}});var Bse=U((dNt,wse)=>{"use strict";wse.exports=t=>{let e=/^\\\\\?\\/.test(t),r=/[^\u0000-\u0080]+/.test(t);return e||r?t:t.replace(/\\/g,"/")}});var Qse=U((mNt,rM)=>{"use strict";var{promisify:zet}=Ie("util"),vse=Ie("fs"),Qf=Ie("path"),Dse=wP(),Xet=Ise(),Gw=Bse(),Sse=["**/node_modules/**","**/flow-typed/**","**/coverage/**","**/.git"],Zet=zet(vse.readFile),$et=t=>e=>e.startsWith("!")?"!"+Qf.posix.join(t,e.slice(1)):Qf.posix.join(t,e),ett=(t,e)=>{let r=Gw(Qf.relative(e.cwd,Qf.dirname(e.fileName)));return t.split(/\r?\n/).filter(Boolean).filter(o=>!o.startsWith("#")).map($et(r))},Pse=t=>{let e=Xet();for(let r of t)e.add(ett(r.content,{cwd:r.cwd,fileName:r.filePath}));return e},ttt=(t,e)=>{if(t=Gw(t),Qf.isAbsolute(e)){if(Gw(e).startsWith(t))return e;throw new Error(`Path ${e} is not in cwd ${t}`)}return Qf.join(t,e)},xse=(t,e)=>r=>t.ignores(Gw(Qf.relative(e,ttt(e,r.path||r)))),rtt=async(t,e)=>{let r=Qf.join(e,t),o=await Zet(r,"utf8");return{cwd:e,filePath:r,content:o}},ntt=(t,e)=>{let r=Qf.join(e,t),o=vse.readFileSync(r,"utf8");return{cwd:e,filePath:r,content:o}},bse=({ignore:t=[],cwd:e=Gw(process.cwd())}={})=>({ignore:t,cwd:e});rM.exports=async t=>{t=bse(t);let e=await Dse("**/.gitignore",{ignore:Sse.concat(t.ignore),cwd:t.cwd}),r=await Promise.all(e.map(a=>rtt(a,t.cwd))),o=Pse(r);return xse(o,t.cwd)};rM.exports.sync=t=>{t=bse(t);let r=Dse.sync("**/.gitignore",{ignore:Sse.concat(t.ignore),cwd:t.cwd}).map(a=>ntt(a,t.cwd)),o=Pse(r);return xse(o,t.cwd)}});var Fse=U((yNt,kse)=>{"use strict";var{Transform:itt}=Ie("stream"),vP=class extends itt{constructor(){super({objectMode:!0})}},nM=class extends vP{constructor(e){super(),this._filter=e}_transform(e,r,o){this._filter(e)&&this.push(e),o()}},iM=class extends vP{constructor(){super(),this._pushed=new Set}_transform(e,r,o){this._pushed.has(e)||(this.push(e),this._pushed.add(e)),o()}};kse.exports={FilterStream:nM,UniqueStream:iM}});var lM=U((ENt,vd)=>{"use strict";var Tse=Ie("fs"),DP=kne(),stt=PL(),SP=wP(),PP=fse(),sM=Qse(),{FilterStream:ott,UniqueStream:att}=Fse(),Nse=()=>!1,Rse=t=>t[0]==="!",ltt=t=>{if(!t.every(e=>typeof e=="string"))throw new TypeError("Patterns must be a string or an array of strings")},ctt=(t={})=>{if(!t.cwd)return;let e;try{e=Tse.statSync(t.cwd)}catch{return}if(!e.isDirectory())throw new Error("The `cwd` option must be a path to a directory")},utt=t=>t.stats instanceof Tse.Stats?t.path:t,xP=(t,e)=>{t=DP([].concat(t)),ltt(t),ctt(e);let r=[];e={ignore:[],expandDirectories:!0,...e};for(let[o,a]of t.entries()){if(Rse(a))continue;let n=t.slice(o).filter(A=>Rse(A)).map(A=>A.slice(1)),u={...e,ignore:e.ignore.concat(n)};r.push({pattern:a,options:u})}return r},Att=(t,e)=>{let r={};return t.options.cwd&&(r.cwd=t.options.cwd),Array.isArray(t.options.expandDirectories)?r={...r,files:t.options.expandDirectories}:typeof t.options.expandDirectories=="object"&&(r={...r,...t.options.expandDirectories}),e(t.pattern,r)},oM=(t,e)=>t.options.expandDirectories?Att(t,e):[t.pattern],Lse=t=>t&&t.gitignore?sM.sync({cwd:t.cwd,ignore:t.ignore}):Nse,aM=t=>e=>{let{options:r}=t;return r.ignore&&Array.isArray(r.ignore)&&r.expandDirectories&&(r.ignore=PP.sync(r.ignore)),{pattern:e,options:r}};vd.exports=async(t,e)=>{let r=xP(t,e),o=async()=>e&&e.gitignore?sM({cwd:e.cwd,ignore:e.ignore}):Nse,a=async()=>{let p=await Promise.all(r.map(async h=>{let C=await oM(h,PP);return Promise.all(C.map(aM(h)))}));return DP(...p)},[n,u]=await Promise.all([o(),a()]),A=await Promise.all(u.map(p=>SP(p.pattern,p.options)));return DP(...A).filter(p=>!n(utt(p)))};vd.exports.sync=(t,e)=>{let r=xP(t,e),o=[];for(let u of r){let A=oM(u,PP.sync).map(aM(u));o.push(...A)}let a=Lse(e),n=[];for(let u of o)n=DP(n,SP.sync(u.pattern,u.options));return n.filter(u=>!a(u))};vd.exports.stream=(t,e)=>{let r=xP(t,e),o=[];for(let A of r){let p=oM(A,PP.sync).map(aM(A));o.push(...p)}let a=Lse(e),n=new ott(A=>!a(A)),u=new att;return stt(o.map(A=>SP.stream(A.pattern,A.options))).pipe(n).pipe(u)};vd.exports.generateGlobTasks=xP;vd.exports.hasMagic=(t,e)=>[].concat(t).some(r=>SP.isDynamicPattern(r,e));vd.exports.gitignore=sM});var bn={};Yt(bn,{checksumFile:()=>QP,checksumPattern:()=>kP,makeHash:()=>Vs});function Vs(...t){let e=(0,bP.createHash)("sha512"),r="";for(let o of t)typeof o=="string"?r+=o:o&&(r&&(e.update(r),r=""),e.update(o));return r&&e.update(r),e.digest("hex")}async function QP(t,{baseFs:e,algorithm:r}={baseFs:oe,algorithm:"sha512"}){let o=await e.openPromise(t,"r");try{let n=Buffer.allocUnsafeSlow(65536),u=(0,bP.createHash)(r),A=0;for(;(A=await e.readPromise(o,n,0,65536))!==0;)u.update(A===65536?n:n.slice(0,A));return u.digest("hex")}finally{await e.closePromise(o)}}async function kP(t,{cwd:e}){let o=(await(0,cM.default)(t,{cwd:ue.fromPortablePath(e),expandDirectories:!1,onlyDirectories:!0,unique:!0})).map(A=>`${A}/**/*`),a=await(0,cM.default)([t,...o],{cwd:ue.fromPortablePath(e),expandDirectories:!1,onlyFiles:!1,unique:!0});a.sort();let n=await Promise.all(a.map(async A=>{let p=[Buffer.from(A)],h=ue.toPortablePath(A),C=await oe.lstatPromise(h);return C.isSymbolicLink()?p.push(Buffer.from(await oe.readlinkPromise(h))):C.isFile()&&p.push(await oe.readFilePromise(h)),p.join("\0")})),u=(0,bP.createHash)("sha512");for(let A of n)u.update(A);return u.digest("hex")}var bP,cM,n0=dt(()=>{St();bP=Ie("crypto"),cM=tt(lM())});var Y={};Yt(Y,{areDescriptorsEqual:()=>Hse,areIdentsEqual:()=>Jw,areLocatorsEqual:()=>zw,areVirtualPackagesEquivalent:()=>Ctt,bindDescriptor:()=>ytt,bindLocator:()=>Ett,convertDescriptorToLocator:()=>FP,convertLocatorToDescriptor:()=>AM,convertPackageToLocator:()=>gtt,convertToIdent:()=>htt,convertToManifestRange:()=>vtt,copyPackage:()=>Yw,devirtualizeDescriptor:()=>Kw,devirtualizeLocator:()=>Vw,ensureDevirtualizedDescriptor:()=>dtt,ensureDevirtualizedLocator:()=>mtt,getIdentVendorPath:()=>dM,isPackageCompatible:()=>OP,isVirtualDescriptor:()=>kf,isVirtualLocator:()=>Yc,makeDescriptor:()=>mn,makeIdent:()=>nA,makeLocator:()=>us,makeRange:()=>TP,parseDescriptor:()=>i0,parseFileStyleRange:()=>wtt,parseIdent:()=>Ys,parseLocator:()=>Ff,parseRange:()=>Dd,prettyDependent:()=>SL,prettyDescriptor:()=>Ln,prettyIdent:()=>cs,prettyLocator:()=>kr,prettyLocatorNoColors:()=>gM,prettyRange:()=>LP,prettyReference:()=>Zw,prettyResolution:()=>jw,prettyWorkspace:()=>$w,renamePackage:()=>fM,slugifyIdent:()=>uM,slugifyLocator:()=>aE,sortDescriptors:()=>lE,stringifyDescriptor:()=>Qa,stringifyIdent:()=>nn,stringifyLocator:()=>Jl,tryParseDescriptor:()=>Xw,tryParseIdent:()=>qse,tryParseLocator:()=>RP,tryParseRange:()=>Itt,virtualizeDescriptor:()=>pM,virtualizePackage:()=>hM});function nA(t,e){if(t!=null&&t.startsWith("@"))throw new Error("Invalid scope: don't prefix it with '@'");return{identHash:Vs(t,e),scope:t,name:e}}function mn(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:Vs(t.identHash,e),range:e}}function us(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:Vs(t.identHash,e),reference:e}}function htt(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}function FP(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.descriptorHash,reference:t.range}}function AM(t){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:t.locatorHash,range:t.reference}}function gtt(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference}}function fM(t,e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference,version:t.version,languageName:t.languageName,linkType:t.linkType,conditions:t.conditions,dependencies:new Map(t.dependencies),peerDependencies:new Map(t.peerDependencies),dependenciesMeta:new Map(t.dependenciesMeta),peerDependenciesMeta:new Map(t.peerDependenciesMeta),bin:new Map(t.bin)}}function Yw(t){return fM(t,t)}function pM(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return mn(t,`virtual:${e}#${t.range}`)}function hM(t,e){if(e.includes("#"))throw new Error("Invalid entropy");return fM(t,us(t,`virtual:${e}#${t.reference}`))}function kf(t){return t.range.startsWith(Ww)}function Yc(t){return t.reference.startsWith(Ww)}function Kw(t){if(!kf(t))throw new Error("Not a virtual descriptor");return mn(t,t.range.replace(/^[^#]*#/,""))}function Vw(t){if(!Yc(t))throw new Error("Not a virtual descriptor");return us(t,t.reference.replace(/^[^#]*#/,""))}function dtt(t){return kf(t)?mn(t,t.range.replace(/^[^#]*#/,"")):t}function mtt(t){return Yc(t)?us(t,t.reference.replace(/^[^#]*#/,"")):t}function ytt(t,e){return t.range.includes("::")?t:mn(t,`${t.range}::${oE.default.stringify(e)}`)}function Ett(t,e){return t.reference.includes("::")?t:us(t,`${t.reference}::${oE.default.stringify(e)}`)}function Jw(t,e){return t.identHash===e.identHash}function Hse(t,e){return t.descriptorHash===e.descriptorHash}function zw(t,e){return t.locatorHash===e.locatorHash}function Ctt(t,e){if(!Yc(t))throw new Error("Invalid package type");if(!Yc(e))throw new Error("Invalid package type");if(!Jw(t,e)||t.dependencies.size!==e.dependencies.size)return!1;for(let r of t.dependencies.values()){let o=e.dependencies.get(r.identHash);if(!o||!Hse(r,o))return!1}return!0}function Ys(t){let e=qse(t);if(!e)throw new Error(`Invalid ident (${t})`);return e}function qse(t){let e=t.match(/^(?:@([^/]+?)\/)?([^@/]+)$/);if(!e)return null;let[,r,o]=e;return nA(typeof r<"u"?r:null,o)}function i0(t,e=!1){let r=Xw(t,e);if(!r)throw new Error(`Invalid descriptor (${t})`);return r}function Xw(t,e=!1){let r=e?t.match(/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))$/):t.match(/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))?$/);if(!r)return null;let[,o,a,n]=r;if(n==="unknown")throw new Error(`Invalid range (${t})`);let u=typeof o<"u"?o:null,A=typeof n<"u"?n:"unknown";return mn(nA(u,a),A)}function Ff(t,e=!1){let r=RP(t,e);if(!r)throw new Error(`Invalid locator (${t})`);return r}function RP(t,e=!1){let r=e?t.match(/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))$/):t.match(/^(?:@([^/]+?)\/)?([^@/]+?)(?:@(.+))?$/);if(!r)return null;let[,o,a,n]=r;if(n==="unknown")throw new Error(`Invalid reference (${t})`);let u=typeof o<"u"?o:null,A=typeof n<"u"?n:"unknown";return us(nA(u,a),A)}function Dd(t,e){let r=t.match(/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/);if(r===null)throw new Error(`Invalid range (${t})`);let o=typeof r[1]<"u"?r[1]:null;if(typeof(e==null?void 0:e.requireProtocol)=="string"&&o!==e.requireProtocol)throw new Error(`Invalid protocol (${o})`);if((e==null?void 0:e.requireProtocol)&&o===null)throw new Error(`Missing protocol (${o})`);let a=typeof r[3]<"u"?decodeURIComponent(r[2]):null;if((e==null?void 0:e.requireSource)&&a===null)throw new Error(`Missing source (${t})`);let n=typeof r[3]<"u"?decodeURIComponent(r[3]):decodeURIComponent(r[2]),u=e!=null&&e.parseSelector?oE.default.parse(n):n,A=typeof r[4]<"u"?oE.default.parse(r[4]):null;return{protocol:o,source:a,selector:u,params:A}}function Itt(t,e){try{return Dd(t,e)}catch{return null}}function wtt(t,{protocol:e}){let{selector:r,params:o}=Dd(t,{requireProtocol:e,requireBindings:!0});if(typeof o.locator!="string")throw new Error(`Assertion failed: Invalid bindings for ${t}`);return{parentLocator:Ff(o.locator,!0),path:r}}function Ose(t){return t=t.replace(/%/g,"%25"),t=t.replace(/:/g,"%3A"),t=t.replace(/#/g,"%23"),t}function Btt(t){return t===null?!1:Object.entries(t).length>0}function TP({protocol:t,source:e,selector:r,params:o}){let a="";return t!==null&&(a+=`${t}`),e!==null&&(a+=`${Ose(e)}#`),a+=Ose(r),Btt(o)&&(a+=`::${oE.default.stringify(o)}`),a}function vtt(t){let{params:e,protocol:r,source:o,selector:a}=Dd(t);for(let n in e)n.startsWith("__")&&delete e[n];return TP({protocol:r,source:o,params:e,selector:a})}function nn(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}function Qa(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.name}@${t.range}`}function Jl(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${t.name}@${t.reference}`}function uM(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}function aE(t){let{protocol:e,selector:r}=Dd(t.reference),o=e!==null?e.replace(/:$/,""):"exotic",a=Mse.default.valid(r),n=a!==null?`${o}-${a}`:`${o}`,u=10,A=t.scope?`${uM(t)}-${n}-${t.locatorHash.slice(0,u)}`:`${uM(t)}-${n}-${t.locatorHash.slice(0,u)}`;return Li(A)}function cs(t,e){return e.scope?`${Kt(t,`@${e.scope}/`,Bt.SCOPE)}${Kt(t,e.name,Bt.NAME)}`:`${Kt(t,e.name,Bt.NAME)}`}function NP(t){if(t.startsWith(Ww)){let e=NP(t.substring(t.indexOf("#")+1)),r=t.substring(Ww.length,Ww.length+ftt);return`${e} [${r}]`}else return t.replace(/\?.*/,"?[...]")}function LP(t,e){return`${Kt(t,NP(e),Bt.RANGE)}`}function Ln(t,e){return`${cs(t,e)}${Kt(t,"@",Bt.RANGE)}${LP(t,e.range)}`}function Zw(t,e){return`${Kt(t,NP(e),Bt.REFERENCE)}`}function kr(t,e){return`${cs(t,e)}${Kt(t,"@",Bt.REFERENCE)}${Zw(t,e.reference)}`}function gM(t){return`${nn(t)}@${NP(t.reference)}`}function lE(t){return xa(t,[e=>nn(e),e=>e.range])}function $w(t,e){return cs(t,e.locator)}function jw(t,e,r){let o=kf(e)?Kw(e):e;return r===null?`${Ln(t,o)} \u2192 ${DL(t).Cross}`:o.identHash===r.identHash?`${Ln(t,o)} \u2192 ${Zw(t,r.reference)}`:`${Ln(t,o)} \u2192 ${kr(t,r)}`}function SL(t,e,r){return r===null?`${kr(t,e)}`:`${kr(t,e)} (via ${LP(t,r.range)})`}function dM(t){return`node_modules/${nn(t)}`}function OP(t,e){return t.conditions?ptt(t.conditions,r=>{let[,o,a]=r.match(_se),n=e[o];return n?n.includes(a):!0}):!0}var oE,Mse,Use,Ww,ftt,_se,ptt,Ks=dt(()=>{St();oE=tt(Ie("querystring")),Mse=tt(si()),Use=tt(oX());zl();n0();Vl();Ks();Ww="virtual:",ftt=5,_se=/(os|cpu|libc)=([a-z0-9_-]+)/,ptt=(0,Use.makeParser)(_se)});var jse,Gse=dt(()=>{Ks();jse={hooks:{reduceDependency:(t,e,r,o,{resolver:a,resolveOptions:n})=>{for(let{pattern:u,reference:A}of e.topLevelWorkspace.manifest.resolutions){if(u.from&&(u.from.fullName!==nn(r)||e.configuration.normalizeLocator(us(Ys(u.from.fullName),u.from.description??r.reference)).locatorHash!==r.locatorHash)||u.descriptor.fullName!==nn(t)||e.configuration.normalizeDependency(mn(Ff(u.descriptor.fullName),u.descriptor.description??t.range)).descriptorHash!==t.descriptorHash)continue;return a.bindDescriptor(e.configuration.normalizeDependency(mn(t,A)),e.topLevelWorkspace.anchoredLocator,n)}return t},validateProject:async(t,e)=>{for(let r of t.workspaces){let o=$w(t.configuration,r);await t.configuration.triggerHook(a=>a.validateWorkspace,r,{reportWarning:(a,n)=>e.reportWarning(a,`${o}: ${n}`),reportError:(a,n)=>e.reportError(a,`${o}: ${n}`)})}},validateWorkspace:async(t,e)=>{let{manifest:r}=t;r.resolutions.length&&t.cwd!==t.project.cwd&&r.errors.push(new Error("Resolutions field will be ignored"));for(let o of r.errors)e.reportWarning(57,o.message)}}}});var e1,Gn,Sd=dt(()=>{e1=class{supportsDescriptor(e,r){return!!(e.range.startsWith(e1.protocol)||r.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,r){return!!e.reference.startsWith(e1.protocol)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){return[o.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let o=r.project.getWorkspaceByCwd(e.reference.slice(e1.protocol.length));return{...e,version:o.manifest.version||"0.0.0",languageName:"unknown",linkType:"SOFT",conditions:null,dependencies:r.project.configuration.normalizeDependencyMap(new Map([...o.manifest.dependencies,...o.manifest.devDependencies])),peerDependencies:new Map([...o.manifest.peerDependencies]),dependenciesMeta:o.manifest.dependenciesMeta,peerDependenciesMeta:o.manifest.peerDependenciesMeta,bin:o.manifest.bin}}},Gn=e1;Gn.protocol="workspace:"});var Tr={};Yt(Tr,{SemVer:()=>Kse.SemVer,clean:()=>Stt,satisfiesWithPrereleases:()=>Pd,validRange:()=>cl});function Pd(t,e,r=!1){if(!t)return!1;let o=`${e}${r}`,a=Wse.get(o);if(typeof a>"u")try{a=new MP.default.Range(e,{includePrerelease:!0,loose:r})}catch{return!1}finally{Wse.set(o,a||null)}else if(a===null)return!1;let n;try{n=new MP.default.SemVer(t,a)}catch{return!1}return a.test(n)?!0:(n.prerelease&&(n.prerelease=[]),a.set.some(u=>{for(let A of u)A.semver.prerelease&&(A.semver.prerelease=[]);return u.every(A=>A.test(n))}))}function cl(t){if(t.indexOf(":")!==-1)return null;let e=Yse.get(t);if(typeof e<"u")return e;try{e=new MP.default.Range(t)}catch{e=null}return Yse.set(t,e),e}function Stt(t){let e=Dtt.exec(t);return e?e[1]:null}var MP,Kse,Wse,Yse,Dtt,s0=dt(()=>{MP=tt(si()),Kse=tt(si()),Wse=new Map;Yse=new Map;Dtt=/^(?:[\sv=]*?)((0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)(?:\s*)$/});function Vse(t){let e=t.match(/^[ \t]+/m);return e?e[0]:" "}function Jse(t){return t.charCodeAt(0)===65279?t.slice(1):t}function Xo(t){return t.replace(/\\/g,"/")}function UP(t,{yamlCompatibilityMode:e}){return e?mL(t):typeof t>"u"||typeof t=="boolean"?t:null}function zse(t,e){let r=e.search(/[^!]/);if(r===-1)return"invalid";let o=r%2===0?"":"!",a=e.slice(r);return`${o}${t}=${a}`}function mM(t,e){return e.length===1?zse(t,e[0]):`(${e.map(r=>zse(t,r)).join(" | ")})`}var Xse,cE,Nt,uE=dt(()=>{St();Hl();Xse=tt(si());Sd();Vl();s0();Ks();cE=class{constructor(){this.indent=" ";this.name=null;this.version=null;this.os=null;this.cpu=null;this.libc=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static async tryFind(e,{baseFs:r=new xn}={}){let o=J.join(e,"package.json");try{return await cE.fromFile(o,{baseFs:r})}catch(a){if(a.code==="ENOENT")return null;throw a}}static async find(e,{baseFs:r}={}){let o=await cE.tryFind(e,{baseFs:r});if(o===null)throw new Error("Manifest not found");return o}static async fromFile(e,{baseFs:r=new xn}={}){let o=new cE;return await o.loadFile(e,{baseFs:r}),o}static fromText(e){let r=new cE;return r.loadFromText(e),r}loadFromText(e){let r;try{r=JSON.parse(Jse(e)||"{}")}catch(o){throw o.message+=` (when parsing ${e})`,o}this.load(r),this.indent=Vse(e)}async loadFile(e,{baseFs:r=new xn}){let o=await r.readFilePromise(e,"utf8"),a;try{a=JSON.parse(Jse(o)||"{}")}catch(n){throw n.message+=` (when parsing ${e})`,n}this.load(a),this.indent=Vse(o)}load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!="object"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let o=[];if(this.name=null,typeof e.name=="string")try{this.name=Ys(e.name)}catch{o.push(new Error("Parsing failed for the 'name' field"))}if(typeof e.version=="string"?this.version=e.version:this.version=null,Array.isArray(e.os)){let n=[];this.os=n;for(let u of e.os)typeof u!="string"?o.push(new Error("Parsing failed for the 'os' field")):n.push(u)}else this.os=null;if(Array.isArray(e.cpu)){let n=[];this.cpu=n;for(let u of e.cpu)typeof u!="string"?o.push(new Error("Parsing failed for the 'cpu' field")):n.push(u)}else this.cpu=null;if(Array.isArray(e.libc)){let n=[];this.libc=n;for(let u of e.libc)typeof u!="string"?o.push(new Error("Parsing failed for the 'libc' field")):n.push(u)}else this.libc=null;if(typeof e.type=="string"?this.type=e.type:this.type=null,typeof e.packageManager=="string"?this.packageManager=e.packageManager:this.packageManager=null,typeof e.private=="boolean"?this.private=e.private:this.private=!1,typeof e.license=="string"?this.license=e.license:this.license=null,typeof e.languageName=="string"?this.languageName=e.languageName:this.languageName=null,typeof e.main=="string"?this.main=Xo(e.main):this.main=null,typeof e.module=="string"?this.module=Xo(e.module):this.module=null,e.browser!=null)if(typeof e.browser=="string")this.browser=Xo(e.browser);else{this.browser=new Map;for(let[n,u]of Object.entries(e.browser))this.browser.set(Xo(n),typeof u=="string"?Xo(u):u)}else this.browser=null;if(this.bin=new Map,typeof e.bin=="string")this.name!==null?this.bin.set(this.name.name,Xo(e.bin)):o.push(new Error("String bin field, but no attached package name"));else if(typeof e.bin=="object"&&e.bin!==null)for(let[n,u]of Object.entries(e.bin)){if(typeof u!="string"){o.push(new Error(`Invalid bin definition for '${n}'`));continue}let A=Ys(n);this.bin.set(A.name,Xo(u))}if(this.scripts=new Map,typeof e.scripts=="object"&&e.scripts!==null)for(let[n,u]of Object.entries(e.scripts)){if(typeof u!="string"){o.push(new Error(`Invalid script definition for '${n}'`));continue}this.scripts.set(n,u)}if(this.dependencies=new Map,typeof e.dependencies=="object"&&e.dependencies!==null)for(let[n,u]of Object.entries(e.dependencies)){if(typeof u!="string"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let A;try{A=Ys(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=mn(A,u);this.dependencies.set(p.identHash,p)}if(this.devDependencies=new Map,typeof e.devDependencies=="object"&&e.devDependencies!==null)for(let[n,u]of Object.entries(e.devDependencies)){if(typeof u!="string"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let A;try{A=Ys(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=mn(A,u);this.devDependencies.set(p.identHash,p)}if(this.peerDependencies=new Map,typeof e.peerDependencies=="object"&&e.peerDependencies!==null)for(let[n,u]of Object.entries(e.peerDependencies)){let A;try{A=Ys(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}(typeof u!="string"||!u.startsWith(Gn.protocol)&&!cl(u))&&(o.push(new Error(`Invalid dependency range for '${n}'`)),u="*");let p=mn(A,u);this.peerDependencies.set(p.identHash,p)}typeof e.workspaces=="object"&&e.workspaces!==null&&e.workspaces.nohoist&&o.push(new Error("'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead"));let a=Array.isArray(e.workspaces)?e.workspaces:typeof e.workspaces=="object"&&e.workspaces!==null&&Array.isArray(e.workspaces.packages)?e.workspaces.packages:[];this.workspaceDefinitions=[];for(let n of a){if(typeof n!="string"){o.push(new Error(`Invalid workspace definition for '${n}'`));continue}this.workspaceDefinitions.push({pattern:n})}if(this.dependenciesMeta=new Map,typeof e.dependenciesMeta=="object"&&e.dependenciesMeta!==null)for(let[n,u]of Object.entries(e.dependenciesMeta)){if(typeof u!="object"||u===null){o.push(new Error(`Invalid meta field for '${n}`));continue}let A=i0(n),p=this.ensureDependencyMeta(A),h=UP(u.built,{yamlCompatibilityMode:r});if(h===null){o.push(new Error(`Invalid built meta field for '${n}'`));continue}let C=UP(u.optional,{yamlCompatibilityMode:r});if(C===null){o.push(new Error(`Invalid optional meta field for '${n}'`));continue}let w=UP(u.unplugged,{yamlCompatibilityMode:r});if(w===null){o.push(new Error(`Invalid unplugged meta field for '${n}'`));continue}Object.assign(p,{built:h,optional:C,unplugged:w})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta=="object"&&e.peerDependenciesMeta!==null)for(let[n,u]of Object.entries(e.peerDependenciesMeta)){if(typeof u!="object"||u===null){o.push(new Error(`Invalid meta field for '${n}'`));continue}let A=i0(n),p=this.ensurePeerDependencyMeta(A),h=UP(u.optional,{yamlCompatibilityMode:r});if(h===null){o.push(new Error(`Invalid optional meta field for '${n}'`));continue}Object.assign(p,{optional:h})}if(this.resolutions=[],typeof e.resolutions=="object"&&e.resolutions!==null)for(let[n,u]of Object.entries(e.resolutions)){if(typeof u!="string"){o.push(new Error(`Invalid resolution entry for '${n}'`));continue}try{this.resolutions.push({pattern:QD(n),reference:u})}catch(A){o.push(A);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let n of e.files){if(typeof n!="string"){o.push(new Error(`Invalid files entry for '${n}'`));continue}this.files.add(n)}}else this.files=null;if(typeof e.publishConfig=="object"&&e.publishConfig!==null){if(this.publishConfig={},typeof e.publishConfig.access=="string"&&(this.publishConfig.access=e.publishConfig.access),typeof e.publishConfig.main=="string"&&(this.publishConfig.main=Xo(e.publishConfig.main)),typeof e.publishConfig.module=="string"&&(this.publishConfig.module=Xo(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser=="string")this.publishConfig.browser=Xo(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[n,u]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set(Xo(n),typeof u=="string"?Xo(u):u)}if(typeof e.publishConfig.registry=="string"&&(this.publishConfig.registry=e.publishConfig.registry),typeof e.publishConfig.bin=="string")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,Xo(e.publishConfig.bin)]]):o.push(new Error("String bin field, but no attached package name"));else if(typeof e.publishConfig.bin=="object"&&e.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[n,u]of Object.entries(e.publishConfig.bin)){if(typeof u!="string"){o.push(new Error(`Invalid bin definition for '${n}'`));continue}this.publishConfig.bin.set(n,Xo(u))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let n of e.publishConfig.executableFiles){if(typeof n!="string"){o.push(new Error("Invalid executable file definition"));continue}this.publishConfig.executableFiles.add(Xo(n))}}}else this.publishConfig=null;if(typeof e.installConfig=="object"&&e.installConfig!==null){this.installConfig={};for(let n of Object.keys(e.installConfig))n==="hoistingLimits"?typeof e.installConfig.hoistingLimits=="string"?this.installConfig.hoistingLimits=e.installConfig.hoistingLimits:o.push(new Error("Invalid hoisting limits definition")):n=="selfReferences"?typeof e.installConfig.selfReferences=="boolean"?this.installConfig.selfReferences=e.installConfig.selfReferences:o.push(new Error("Invalid selfReferences definition, must be a boolean value")):o.push(new Error(`Unrecognized installConfig key: ${n}`))}else this.installConfig=null;if(typeof e.optionalDependencies=="object"&&e.optionalDependencies!==null)for(let[n,u]of Object.entries(e.optionalDependencies)){if(typeof u!="string"){o.push(new Error(`Invalid dependency range for '${n}'`));continue}let A;try{A=Ys(n)}catch{o.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=mn(A,u);this.dependencies.set(p.identHash,p);let h=mn(A,"unknown"),C=this.ensureDependencyMeta(h);Object.assign(C,{optional:!0})}typeof e.preferUnplugged=="boolean"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=o}getForScope(e){switch(e){case"dependencies":return this.dependencies;case"devDependencies":return this.devDependencies;case"peerDependencies":return this.peerDependencies;default:throw new Error(`Unsupported value ("${e}")`)}}hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||this.peerDependencies.has(e.identHash))}hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.devDependencies.has(e.identHash))}hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDependency(e))}getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(mM("os",this.os)),this.cpu&&this.cpu.length>0&&e.push(mM("cpu",this.cpu)),this.libc&&this.libc.length>0&&e.push(mM("libc",this.libc)),e.length>0?e.join(" & "):null}ensureDependencyMeta(e){if(e.range!=="unknown"&&!Xse.default.valid(e.range))throw new Error(`Invalid meta field range for '${Qa(e)}'`);let r=nn(e),o=e.range!=="unknown"?e.range:null,a=this.dependenciesMeta.get(r);a||this.dependenciesMeta.set(r,a=new Map);let n=a.get(o);return n||a.set(o,n={}),n}ensurePeerDependencyMeta(e){if(e.range!=="unknown")throw new Error(`Invalid meta field range for '${Qa(e)}'`);let r=nn(e),o=this.peerDependenciesMeta.get(r);return o||this.peerDependenciesMeta.set(r,o={}),o}setRawField(e,r,{after:o=[]}={}){let a=new Set(o.filter(n=>Object.prototype.hasOwnProperty.call(this.raw,n)));if(a.size===0||Object.prototype.hasOwnProperty.call(this.raw,e))this.raw[e]=r;else{let n=this.raw,u=this.raw={},A=!1;for(let p of Object.keys(n))u[p]=n[p],A||(a.delete(p),a.size===0&&(u[e]=r,A=!0))}}exportTo(e,{compatibilityMode:r=!0}={}){if(Object.assign(e,this.raw),this.name!==null?e.name=nn(this.name):delete e.name,this.version!==null?e.version=this.version:delete e.version,this.os!==null?e.os=this.os:delete e.os,this.cpu!==null?e.cpu=this.cpu:delete e.cpu,this.type!==null?e.type=this.type:delete e.type,this.packageManager!==null?e.packageManager=this.packageManager:delete e.packageManager,this.private?e.private=!0:delete e.private,this.license!==null?e.license=this.license:delete e.license,this.languageName!==null?e.languageName=this.languageName:delete e.languageName,this.main!==null?e.main=this.main:delete e.main,this.module!==null?e.module=this.module:delete e.module,this.browser!==null){let n=this.browser;typeof n=="string"?e.browser=n:n instanceof Map&&(e.browser=Object.assign({},...Array.from(n.keys()).sort().map(u=>({[u]:n.get(u)}))))}else delete e.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?e.bin=this.bin.get(this.name.name):this.bin.size>0?e.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(n=>({[n]:this.bin.get(n)}))):delete e.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?e.workspaces={...this.raw.workspaces,packages:this.workspaceDefinitions.map(({pattern:n})=>n)}:e.workspaces=this.workspaceDefinitions.map(({pattern:n})=>n):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?e.workspaces=this.raw.workspaces:delete e.workspaces;let o=[],a=[];for(let n of this.dependencies.values()){let u=this.dependenciesMeta.get(nn(n)),A=!1;if(r&&u){let p=u.get(null);p&&p.optional&&(A=!0)}A?a.push(n):o.push(n)}o.length>0?e.dependencies=Object.assign({},...lE(o).map(n=>({[nn(n)]:n.range}))):delete e.dependencies,a.length>0?e.optionalDependencies=Object.assign({},...lE(a).map(n=>({[nn(n)]:n.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...lE(this.devDependencies.values()).map(n=>({[nn(n)]:n.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...lE(this.peerDependencies.values()).map(n=>({[nn(n)]:n.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[n,u]of xa(this.dependenciesMeta.entries(),([A,p])=>A))for(let[A,p]of xa(u.entries(),([h,C])=>h!==null?`0${h}`:"1")){let h=A!==null?Qa(mn(Ys(n),A)):n,C={...p};r&&A===null&&delete C.optional,Object.keys(C).length!==0&&(e.dependenciesMeta[h]=C)}if(Object.keys(e.dependenciesMeta).length===0&&delete e.dependenciesMeta,this.peerDependenciesMeta.size>0?e.peerDependenciesMeta=Object.assign({},...xa(this.peerDependenciesMeta.entries(),([n,u])=>n).map(([n,u])=>({[n]:u}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:n,reference:u})=>({[kD(n)]:u}))):delete e.resolutions,this.files!==null?e.files=Array.from(this.files):delete e.files,this.preferUnplugged!==null?e.preferUnplugged=this.preferUnplugged:delete e.preferUnplugged,this.scripts!==null&&this.scripts.size>0){e.scripts??(e.scripts={});for(let n of Object.keys(e.scripts))this.scripts.has(n)||delete e.scripts[n];for(let[n,u]of this.scripts.entries())e.scripts[n]=u}else delete e.scripts;return e}},Nt=cE;Nt.fileName="package.json",Nt.allDependencies=["dependencies","devDependencies","peerDependencies"],Nt.hardDependencies=["dependencies","devDependencies"]});var $se=U((LNt,Zse)=>{var Ptt=Yl(),xtt=function(){return Ptt.Date.now()};Zse.exports=xtt});var toe=U((ONt,eoe)=>{var btt=/\s/;function Qtt(t){for(var e=t.length;e--&&btt.test(t.charAt(e)););return e}eoe.exports=Qtt});var noe=U((MNt,roe)=>{var ktt=toe(),Ftt=/^\s+/;function Rtt(t){return t&&t.slice(0,ktt(t)+1).replace(Ftt,"")}roe.exports=Rtt});var AE=U((UNt,ioe)=>{var Ttt=hd(),Ntt=Xu(),Ltt="[object Symbol]";function Ott(t){return typeof t=="symbol"||Ntt(t)&&Ttt(t)==Ltt}ioe.exports=Ott});var loe=U((_Nt,aoe)=>{var Mtt=noe(),soe=al(),Utt=AE(),ooe=0/0,_tt=/^[-+]0x[0-9a-f]+$/i,Htt=/^0b[01]+$/i,qtt=/^0o[0-7]+$/i,jtt=parseInt;function Gtt(t){if(typeof t=="number")return t;if(Utt(t))return ooe;if(soe(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=soe(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=Mtt(t);var r=Htt.test(t);return r||qtt.test(t)?jtt(t.slice(2),r?2:8):_tt.test(t)?ooe:+t}aoe.exports=Gtt});var Aoe=U((HNt,uoe)=>{var Wtt=al(),yM=$se(),coe=loe(),Ytt="Expected a function",Ktt=Math.max,Vtt=Math.min;function Jtt(t,e,r){var o,a,n,u,A,p,h=0,C=!1,w=!1,v=!0;if(typeof t!="function")throw new TypeError(Ytt);e=coe(e)||0,Wtt(r)&&(C=!!r.leading,w="maxWait"in r,n=w?Ktt(coe(r.maxWait)||0,e):n,v="trailing"in r?!!r.trailing:v);function b(pe){var De=o,ge=a;return o=a=void 0,h=pe,u=t.apply(ge,De),u}function E(pe){return h=pe,A=setTimeout(_,e),C?b(pe):u}function R(pe){var De=pe-p,ge=pe-h,le=e-De;return w?Vtt(le,n-ge):le}function L(pe){var De=pe-p,ge=pe-h;return p===void 0||De>=e||De<0||w&&ge>=n}function _(){var pe=yM();if(L(pe))return V(pe);A=setTimeout(_,R(pe))}function V(pe){return A=void 0,v&&o?b(pe):(o=a=void 0,u)}function re(){A!==void 0&&clearTimeout(A),h=0,o=p=a=A=void 0}function ae(){return A===void 0?u:V(yM())}function he(){var pe=yM(),De=L(pe);if(o=arguments,a=this,p=pe,De){if(A===void 0)return E(p);if(w)return clearTimeout(A),A=setTimeout(_,e),b(p)}return A===void 0&&(A=setTimeout(_,e)),u}return he.cancel=re,he.flush=ae,he}uoe.exports=Jtt});var EM=U((qNt,foe)=>{var ztt=Aoe(),Xtt=al(),Ztt="Expected a function";function $tt(t,e,r){var o=!0,a=!0;if(typeof t!="function")throw new TypeError(Ztt);return Xtt(r)&&(o="leading"in r?!!r.leading:o,a="trailing"in r?!!r.trailing:a),ztt(t,e,{leading:o,maxWait:e,trailing:a})}foe.exports=$tt});function trt(t){return typeof t.reportCode<"u"}var poe,hoe,goe,ert,Vt,Js,Zl=dt(()=>{poe=tt(EM()),hoe=Ie("stream"),goe=Ie("string_decoder"),ert=15,Vt=class extends Error{constructor(r,o,a){super(o);this.reportExtra=a;this.reportCode=r}};Js=class{constructor(){this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}static progressViaCounter(e){let r=0,o,a=new Promise(p=>{o=p}),n=p=>{let h=o;a=new Promise(C=>{o=C}),r=p,h()},u=(p=0)=>{n(r+1)},A=async function*(){for(;r<e;)await a,yield{progress:r/e}}();return{[Symbol.asyncIterator](){return A},hasProgress:!0,hasTitle:!1,set:n,tick:u}}static progressViaTitle(){let e,r,o=new Promise(u=>{r=u}),a=(0,poe.default)(u=>{let A=r;o=new Promise(p=>{r=p}),e=u,A()},1e3/ert),n=async function*(){for(;;)await o,yield{title:e}}();return{[Symbol.asyncIterator](){return n},hasProgress:!1,hasTitle:!0,setTitle:a}}async startProgressPromise(e,r){let o=this.reportProgress(e);try{return await r(e)}finally{o.stop()}}startProgressSync(e,r){let o=this.reportProgress(e);try{return r(e)}finally{o.stop()}}reportInfoOnce(e,r,o){var n;let a=o&&o.key?o.key:r;this.reportedInfos.has(a)||(this.reportedInfos.add(a),this.reportInfo(e,r),(n=o==null?void 0:o.reportExtra)==null||n.call(o,this))}reportWarningOnce(e,r,o){var n;let a=o&&o.key?o.key:r;this.reportedWarnings.has(a)||(this.reportedWarnings.add(a),this.reportWarning(e,r),(n=o==null?void 0:o.reportExtra)==null||n.call(o,this))}reportErrorOnce(e,r,o){var n;let a=o&&o.key?o.key:r;this.reportedErrors.has(a)||(this.reportedErrors.add(a),this.reportError(e,r),(n=o==null?void 0:o.reportExtra)==null||n.call(o,this))}reportExceptionOnce(e){trt(e)?this.reportErrorOnce(e.reportCode,e.message,{key:e,reportExtra:e.reportExtra}):this.reportErrorOnce(1,e.stack||e.message,{key:e})}createStreamReporter(e=null){let r=new hoe.PassThrough,o=new goe.StringDecoder,a="";return r.on("data",n=>{let u=o.write(n),A;do if(A=u.indexOf(` |
135 | `),A!==-1){let p=a+u.substring(0,A);u=u.substring(A+1),a="",e!==null?this.reportInfo(null,`${e} ${p}`):this.reportInfo(null,p)}while(A!==-1);a+=u}),r.on("end",()=>{let n=o.end();n!==""&&(e!==null?this.reportInfo(null,`${e} ${n}`):this.reportInfo(null,n))}),r}}});var aE,mM=dt(()=>{Jl();Ks();aE=class{constructor(e){this.fetchers=e}supports(e,r){return!!this.tryFetcher(e,r)}getLocalPath(e,r){return this.getFetcher(e,r).getLocalPath(e,r)}async fetch(e,r){return await this.getFetcher(e,r).fetch(e,r)}tryFetcher(e,r){let o=this.fetchers.find(a=>a.supports(e,r));return o||null}getFetcher(e,r){let o=this.fetchers.find(a=>a.supports(e,r));if(!o)throw new Jt(11,`${kr(r.project.configuration,e)} isn't supported by any available fetcher`);return o}}});var vd,yM=dt(()=>{Ks();vd=class{constructor(e){this.resolvers=e.filter(r=>r)}supportsDescriptor(e,r){return!!this.tryResolverByDescriptor(e,r)}supportsLocator(e,r){return!!this.tryResolverByLocator(e,r)}shouldPersistResolution(e,r){return this.getResolverByLocator(e,r).shouldPersistResolution(e,r)}bindDescriptor(e,r,o){return this.getResolverByDescriptor(e,o).bindDescriptor(e,r,o)}getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r).getResolutionDependencies(e,r)}async getCandidates(e,r,o){return await this.getResolverByDescriptor(e,o).getCandidates(e,r,o)}async getSatisfying(e,r,o,a){return this.getResolverByDescriptor(e,a).getSatisfying(e,r,o,a)}async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e,r)}tryResolverByDescriptor(e,r){let o=this.resolvers.find(a=>a.supportsDescriptor(e,r));return o||null}getResolverByDescriptor(e,r){let o=this.resolvers.find(a=>a.supportsDescriptor(e,r));if(!o)throw new Error(`${Ln(r.project.configuration,e)} isn't supported by any available resolver`);return o}tryResolverByLocator(e,r){let o=this.resolvers.find(a=>a.supportsLocator(e,r));return o||null}getResolverByLocator(e,r){let o=this.resolvers.find(a=>a.supportsLocator(e,r));if(!o)throw new Error(`${kr(r.project.configuration,e)} isn't supported by any available resolver`);return o}}});var lE,EM=dt(()=>{bt();Ks();lE=class{supports(e){return!!e.reference.startsWith("virtual:")}getLocalPath(e,r){let o=e.reference.indexOf("#");if(o===-1)throw new Error("Invalid virtual package reference");let a=e.reference.slice(o+1),n=us(e,a);return r.fetcher.getLocalPath(n,r)}async fetch(e,r){let o=e.reference.indexOf("#");if(o===-1)throw new Error("Invalid virtual package reference");let a=e.reference.slice(o+1),n=us(e,a),u=await r.fetcher.fetch(n,r);return await this.ensureVirtualLink(e,u,r)}getLocatorFilename(e){return rE(e)}async ensureVirtualLink(e,r,o){let a=r.packageFs.getRealPath(),n=o.project.configuration.get("virtualFolder"),u=this.getLocatorFilename(e),A=pi.makeVirtualPath(n,u,a),p=new qu(A,{baseFs:r.packageFs,pathUtils:V});return{...r,packageFs:p}}}});var cE,zw,loe=dt(()=>{cE=class{static isVirtualDescriptor(e){return!!e.range.startsWith(cE.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(cE.protocol)}supportsDescriptor(e,r){return cE.isVirtualDescriptor(e)}supportsLocator(e,r){return cE.isVirtualLocator(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){throw new Error('Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported')}getResolutionDependencies(e,r){throw new Error('Assertion failed: calling "getResolutionDependencies" on a virtual descriptor is unsupported')}async getCandidates(e,r,o){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(e,r,o,a){throw new Error('Assertion failed: calling "getSatisfying" on a virtual descriptor is unsupported')}async resolve(e,r){throw new Error('Assertion failed: calling "resolve" on a virtual locator is unsupported')}},zw=cE;zw.protocol="virtual:"});var uE,CM=dt(()=>{bt();wd();uE=class{supports(e){return!!e.reference.startsWith(oi.protocol)}getLocalPath(e,r){return this.getWorkspace(e,r).cwd}async fetch(e,r){let o=this.getWorkspace(e,r).cwd;return{packageFs:new An(o),prefixPath:wt.dot,localPath:o}}getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(oi.protocol.length))}}});function Xw(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function coe(t){return typeof t>"u"?3:Xw(t)?0:Array.isArray(t)?1:2}function BM(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function qtt(t){return Xw(t)&&BM(t,"onConflict")&&typeof t.onConflict=="string"}function jtt(t){if(typeof t>"u")return{onConflict:"default",value:t};if(!qtt(t))return{onConflict:"default",value:t};if(BM(t,"value"))return t;let{onConflict:e,...r}=t;return{onConflict:e,value:r}}function uoe(t,e){let r=Xw(t)&&BM(t,e)?t[e]:void 0;return jtt(r)}function AE(t,e){return[t,e,Aoe]}function vM(t){return Array.isArray(t)?t[2]===Aoe:!1}function IM(t,e){if(Xw(t)){let r={};for(let o of Object.keys(t))r[o]=IM(t[o],e);return AE(e,r)}return Array.isArray(t)?AE(e,t.map(r=>IM(r,e))):AE(e,t)}function wM(t,e,r,o,a){let n,u=[],A=a,p=0;for(let C=a-1;C>=o;--C){let[w,v]=t[C],{onConflict:b,value:E}=uoe(v,r),R=coe(E);if(R!==3){if(n??(n=R),R!==n||b==="hardReset"){p=A;break}if(R===2)return AE(w,E);if(u.unshift([w,E]),b==="reset"){p=C;break}b==="extend"&&C===o&&(o=0),A=C}}if(typeof n>"u")return null;let h=u.map(([C])=>C).join(", ");switch(n){case 1:return AE(h,new Array().concat(...u.map(([C,w])=>w.map(v=>IM(v,C)))));case 0:{let C=Object.assign({},...u.map(([,R])=>R)),w=Object.keys(C),v={},b=t.map(([R,L])=>[R,uoe(L,r).value]),E=Htt(b,([R,L])=>{let _=coe(L);return _!==0&&_!==3});if(E!==-1){let R=b.slice(E+1);for(let L of w)v[L]=wM(R,e,L,0,R.length)}else for(let R of w)v[R]=wM(b,e,R,p,b.length);return AE(h,v)}default:throw new Error("Assertion failed: Non-extendable value type")}}function foe(t){return wM(t.map(([e,r])=>[e,{["."]:r}]),[],".",0,t.length)}function Zw(t){return vM(t)?t[1]:t}function kP(t){let e=vM(t)?t[1]:t;if(Array.isArray(e))return e.map(r=>kP(r));if(Xw(e)){let r={};for(let[o,a]of Object.entries(e))r[o]=kP(a);return r}return e}function DM(t){return vM(t)?t[0]:null}var Htt,Aoe,poe=dt(()=>{Htt=(t,e,r)=>{let o=[...t];return o.reverse(),o.findIndex(e,r)};Aoe=Symbol()});var FP={};Yt(FP,{getDefaultGlobalFolder:()=>PM,getHomeFolder:()=>fE,isFolderInside:()=>xM});function PM(){if(process.platform==="win32"){let t=Ae.toPortablePath(process.env.LOCALAPPDATA||Ae.join((0,SM.homedir)(),"AppData","Local"));return V.resolve(t,"Yarn/Berry")}if(process.env.XDG_DATA_HOME){let t=Ae.toPortablePath(process.env.XDG_DATA_HOME);return V.resolve(t,"yarn/berry")}return V.resolve(fE(),".yarn/berry")}function fE(){return Ae.toPortablePath((0,SM.homedir)()||"/usr/local/share")}function xM(t,e){let r=V.relative(e,t);return r&&!r.startsWith("..")&&!V.isAbsolute(r)}var SM,RP=dt(()=>{bt();SM=Ie("os")});var moe=U(pE=>{"use strict";var LNt=Ie("net"),Wtt=Ie("tls"),bM=Ie("http"),hoe=Ie("https"),Ytt=Ie("events"),ONt=Ie("assert"),Ktt=Ie("util");pE.httpOverHttp=Jtt;pE.httpsOverHttp=Vtt;pE.httpOverHttps=ztt;pE.httpsOverHttps=Xtt;function Jtt(t){var e=new Qf(t);return e.request=bM.request,e}function Vtt(t){var e=new Qf(t);return e.request=bM.request,e.createSocket=goe,e.defaultPort=443,e}function ztt(t){var e=new Qf(t);return e.request=hoe.request,e}function Xtt(t){var e=new Qf(t);return e.request=hoe.request,e.createSocket=goe,e.defaultPort=443,e}function Qf(t){var e=this;e.options=t||{},e.proxyOptions=e.options.proxy||{},e.maxSockets=e.options.maxSockets||bM.Agent.defaultMaxSockets,e.requests=[],e.sockets=[],e.on("free",function(o,a,n,u){for(var A=doe(a,n,u),p=0,h=e.requests.length;p<h;++p){var C=e.requests[p];if(C.host===A.host&&C.port===A.port){e.requests.splice(p,1),C.request.onSocket(o);return}}o.destroy(),e.removeSocket(o)})}Ktt.inherits(Qf,Ytt.EventEmitter);Qf.prototype.addRequest=function(e,r,o,a){var n=this,u=QM({request:e},n.options,doe(r,o,a));if(n.sockets.length>=this.maxSockets){n.requests.push(u);return}n.createSocket(u,function(A){A.on("free",p),A.on("close",h),A.on("agentRemove",h),e.onSocket(A);function p(){n.emit("free",A,u)}function h(C){n.removeSocket(A),A.removeListener("free",p),A.removeListener("close",h),A.removeListener("agentRemove",h)}})};Qf.prototype.createSocket=function(e,r){var o=this,a={};o.sockets.push(a);var n=QM({},o.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:!1,headers:{host:e.host+":"+e.port}});e.localAddress&&(n.localAddress=e.localAddress),n.proxyAuth&&(n.headers=n.headers||{},n.headers["Proxy-Authorization"]="Basic "+new Buffer(n.proxyAuth).toString("base64")),n0("making CONNECT request");var u=o.request(n);u.useChunkedEncodingByDefault=!1,u.once("response",A),u.once("upgrade",p),u.once("connect",h),u.once("error",C),u.end();function A(w){w.upgrade=!0}function p(w,v,b){process.nextTick(function(){h(w,v,b)})}function h(w,v,b){if(u.removeAllListeners(),v.removeAllListeners(),w.statusCode!==200){n0("tunneling socket could not be established, statusCode=%d",w.statusCode),v.destroy();var E=new Error("tunneling socket could not be established, statusCode="+w.statusCode);E.code="ECONNRESET",e.request.emit("error",E),o.removeSocket(a);return}if(b.length>0){n0("got illegal response body from proxy"),v.destroy();var E=new Error("got illegal response body from proxy");E.code="ECONNRESET",e.request.emit("error",E),o.removeSocket(a);return}return n0("tunneling connection has established"),o.sockets[o.sockets.indexOf(a)]=v,r(v)}function C(w){u.removeAllListeners(),n0(`tunneling socket could not be established, cause=%s | 135 | `),A!==-1){let p=a+u.substring(0,A);u=u.substring(A+1),a="",e!==null?this.reportInfo(null,`${e} ${p}`):this.reportInfo(null,p)}while(A!==-1);a+=u}),r.on("end",()=>{let n=o.end();n!==""&&(e!==null?this.reportInfo(null,`${e} ${n}`):this.reportInfo(null,n))}),r}}});var fE,CM=dt(()=>{Zl();Ks();fE=class{constructor(e){this.fetchers=e}supports(e,r){return!!this.tryFetcher(e,r)}getLocalPath(e,r){return this.getFetcher(e,r).getLocalPath(e,r)}async fetch(e,r){return await this.getFetcher(e,r).fetch(e,r)}tryFetcher(e,r){let o=this.fetchers.find(a=>a.supports(e,r));return o||null}getFetcher(e,r){let o=this.fetchers.find(a=>a.supports(e,r));if(!o)throw new Vt(11,`${kr(r.project.configuration,e)} isn't supported by any available fetcher`);return o}}});var xd,IM=dt(()=>{Ks();xd=class{constructor(e){this.resolvers=e.filter(r=>r)}supportsDescriptor(e,r){return!!this.tryResolverByDescriptor(e,r)}supportsLocator(e,r){return!!this.tryResolverByLocator(e,r)}shouldPersistResolution(e,r){return this.getResolverByLocator(e,r).shouldPersistResolution(e,r)}bindDescriptor(e,r,o){return this.getResolverByDescriptor(e,o).bindDescriptor(e,r,o)}getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r).getResolutionDependencies(e,r)}async getCandidates(e,r,o){return await this.getResolverByDescriptor(e,o).getCandidates(e,r,o)}async getSatisfying(e,r,o,a){return this.getResolverByDescriptor(e,a).getSatisfying(e,r,o,a)}async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e,r)}tryResolverByDescriptor(e,r){let o=this.resolvers.find(a=>a.supportsDescriptor(e,r));return o||null}getResolverByDescriptor(e,r){let o=this.resolvers.find(a=>a.supportsDescriptor(e,r));if(!o)throw new Error(`${Ln(r.project.configuration,e)} isn't supported by any available resolver`);return o}tryResolverByLocator(e,r){let o=this.resolvers.find(a=>a.supportsLocator(e,r));return o||null}getResolverByLocator(e,r){let o=this.resolvers.find(a=>a.supportsLocator(e,r));if(!o)throw new Error(`${kr(r.project.configuration,e)} isn't supported by any available resolver`);return o}}});var pE,wM=dt(()=>{St();Ks();pE=class{supports(e){return!!e.reference.startsWith("virtual:")}getLocalPath(e,r){let o=e.reference.indexOf("#");if(o===-1)throw new Error("Invalid virtual package reference");let a=e.reference.slice(o+1),n=us(e,a);return r.fetcher.getLocalPath(n,r)}async fetch(e,r){let o=e.reference.indexOf("#");if(o===-1)throw new Error("Invalid virtual package reference");let a=e.reference.slice(o+1),n=us(e,a),u=await r.fetcher.fetch(n,r);return await this.ensureVirtualLink(e,u,r)}getLocatorFilename(e){return aE(e)}async ensureVirtualLink(e,r,o){let a=r.packageFs.getRealPath(),n=o.project.configuration.get("virtualFolder"),u=this.getLocatorFilename(e),A=pi.makeVirtualPath(n,u,a),p=new ju(A,{baseFs:r.packageFs,pathUtils:J});return{...r,packageFs:p}}}});var hE,t1,doe=dt(()=>{hE=class{static isVirtualDescriptor(e){return!!e.range.startsWith(hE.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(hE.protocol)}supportsDescriptor(e,r){return hE.isVirtualDescriptor(e)}supportsLocator(e,r){return hE.isVirtualLocator(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){throw new Error('Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported')}getResolutionDependencies(e,r){throw new Error('Assertion failed: calling "getResolutionDependencies" on a virtual descriptor is unsupported')}async getCandidates(e,r,o){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(e,r,o,a){throw new Error('Assertion failed: calling "getSatisfying" on a virtual descriptor is unsupported')}async resolve(e,r){throw new Error('Assertion failed: calling "resolve" on a virtual locator is unsupported')}},t1=hE;t1.protocol="virtual:"});var gE,BM=dt(()=>{St();Sd();gE=class{supports(e){return!!e.reference.startsWith(Gn.protocol)}getLocalPath(e,r){return this.getWorkspace(e,r).cwd}async fetch(e,r){let o=this.getWorkspace(e,r).cwd;return{packageFs:new An(o),prefixPath:wt.dot,localPath:o}}getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(Gn.protocol.length))}}});function r1(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function moe(t){return typeof t>"u"?3:r1(t)?0:Array.isArray(t)?1:2}function SM(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function nrt(t){return r1(t)&&SM(t,"onConflict")&&typeof t.onConflict=="string"}function irt(t){if(typeof t>"u")return{onConflict:"default",value:t};if(!nrt(t))return{onConflict:"default",value:t};if(SM(t,"value"))return t;let{onConflict:e,...r}=t;return{onConflict:e,value:r}}function yoe(t,e){let r=r1(t)&&SM(t,e)?t[e]:void 0;return irt(r)}function dE(t,e){return[t,e,Eoe]}function PM(t){return Array.isArray(t)?t[2]===Eoe:!1}function vM(t,e){if(r1(t)){let r={};for(let o of Object.keys(t))r[o]=vM(t[o],e);return dE(e,r)}return Array.isArray(t)?dE(e,t.map(r=>vM(r,e))):dE(e,t)}function DM(t,e,r,o,a){let n,u=[],A=a,p=0;for(let C=a-1;C>=o;--C){let[w,v]=t[C],{onConflict:b,value:E}=yoe(v,r),R=moe(E);if(R!==3){if(n??(n=R),R!==n||b==="hardReset"){p=A;break}if(R===2)return dE(w,E);if(u.unshift([w,E]),b==="reset"){p=C;break}b==="extend"&&C===o&&(o=0),A=C}}if(typeof n>"u")return null;let h=u.map(([C])=>C).join(", ");switch(n){case 1:return dE(h,new Array().concat(...u.map(([C,w])=>w.map(v=>vM(v,C)))));case 0:{let C=Object.assign({},...u.map(([,R])=>R)),w=Object.keys(C),v={},b=t.map(([R,L])=>[R,yoe(L,r).value]),E=rrt(b,([R,L])=>{let _=moe(L);return _!==0&&_!==3});if(E!==-1){let R=b.slice(E+1);for(let L of w)v[L]=DM(R,e,L,0,R.length)}else for(let R of w)v[R]=DM(b,e,R,p,b.length);return dE(h,v)}default:throw new Error("Assertion failed: Non-extendable value type")}}function Coe(t){return DM(t.map(([e,r])=>[e,{["."]:r}]),[],".",0,t.length)}function n1(t){return PM(t)?t[1]:t}function _P(t){let e=PM(t)?t[1]:t;if(Array.isArray(e))return e.map(r=>_P(r));if(r1(e)){let r={};for(let[o,a]of Object.entries(e))r[o]=_P(a);return r}return e}function xM(t){return PM(t)?t[0]:null}var rrt,Eoe,Ioe=dt(()=>{rrt=(t,e,r)=>{let o=[...t];return o.reverse(),o.findIndex(e,r)};Eoe=Symbol()});var HP={};Yt(HP,{getDefaultGlobalFolder:()=>QM,getHomeFolder:()=>mE,isFolderInside:()=>kM});function QM(){if(process.platform==="win32"){let t=ue.toPortablePath(process.env.LOCALAPPDATA||ue.join((0,bM.homedir)(),"AppData","Local"));return J.resolve(t,"Yarn/Berry")}if(process.env.XDG_DATA_HOME){let t=ue.toPortablePath(process.env.XDG_DATA_HOME);return J.resolve(t,"yarn/berry")}return J.resolve(mE(),".yarn/berry")}function mE(){return ue.toPortablePath((0,bM.homedir)()||"/usr/local/share")}function kM(t,e){let r=J.relative(e,t);return r&&!r.startsWith("..")&&!J.isAbsolute(r)}var bM,qP=dt(()=>{St();bM=Ie("os")});var Doe=U(yE=>{"use strict";var tLt=Ie("net"),ort=Ie("tls"),FM=Ie("http"),woe=Ie("https"),art=Ie("events"),rLt=Ie("assert"),lrt=Ie("util");yE.httpOverHttp=crt;yE.httpsOverHttp=urt;yE.httpOverHttps=Art;yE.httpsOverHttps=frt;function crt(t){var e=new Rf(t);return e.request=FM.request,e}function urt(t){var e=new Rf(t);return e.request=FM.request,e.createSocket=Boe,e.defaultPort=443,e}function Art(t){var e=new Rf(t);return e.request=woe.request,e}function frt(t){var e=new Rf(t);return e.request=woe.request,e.createSocket=Boe,e.defaultPort=443,e}function Rf(t){var e=this;e.options=t||{},e.proxyOptions=e.options.proxy||{},e.maxSockets=e.options.maxSockets||FM.Agent.defaultMaxSockets,e.requests=[],e.sockets=[],e.on("free",function(o,a,n,u){for(var A=voe(a,n,u),p=0,h=e.requests.length;p<h;++p){var C=e.requests[p];if(C.host===A.host&&C.port===A.port){e.requests.splice(p,1),C.request.onSocket(o);return}}o.destroy(),e.removeSocket(o)})}lrt.inherits(Rf,art.EventEmitter);Rf.prototype.addRequest=function(e,r,o,a){var n=this,u=RM({request:e},n.options,voe(r,o,a));if(n.sockets.length>=this.maxSockets){n.requests.push(u);return}n.createSocket(u,function(A){A.on("free",p),A.on("close",h),A.on("agentRemove",h),e.onSocket(A);function p(){n.emit("free",A,u)}function h(C){n.removeSocket(A),A.removeListener("free",p),A.removeListener("close",h),A.removeListener("agentRemove",h)}})};Rf.prototype.createSocket=function(e,r){var o=this,a={};o.sockets.push(a);var n=RM({},o.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:!1,headers:{host:e.host+":"+e.port}});e.localAddress&&(n.localAddress=e.localAddress),n.proxyAuth&&(n.headers=n.headers||{},n.headers["Proxy-Authorization"]="Basic "+new Buffer(n.proxyAuth).toString("base64")),o0("making CONNECT request");var u=o.request(n);u.useChunkedEncodingByDefault=!1,u.once("response",A),u.once("upgrade",p),u.once("connect",h),u.once("error",C),u.end();function A(w){w.upgrade=!0}function p(w,v,b){process.nextTick(function(){h(w,v,b)})}function h(w,v,b){if(u.removeAllListeners(),v.removeAllListeners(),w.statusCode!==200){o0("tunneling socket could not be established, statusCode=%d",w.statusCode),v.destroy();var E=new Error("tunneling socket could not be established, statusCode="+w.statusCode);E.code="ECONNRESET",e.request.emit("error",E),o.removeSocket(a);return}if(b.length>0){o0("got illegal response body from proxy"),v.destroy();var E=new Error("got illegal response body from proxy");E.code="ECONNRESET",e.request.emit("error",E),o.removeSocket(a);return}return o0("tunneling connection has established"),o.sockets[o.sockets.indexOf(a)]=v,r(v)}function C(w){u.removeAllListeners(),o0(`tunneling socket could not be established, cause=%s |
136 | `,w.message,w.stack);var v=new Error("tunneling socket could not be established, cause="+w.message);v.code="ECONNRESET",e.request.emit("error",v),o.removeSocket(a)}};Qf.prototype.removeSocket=function(e){var r=this.sockets.indexOf(e);if(r!==-1){this.sockets.splice(r,1);var o=this.requests.shift();o&&this.createSocket(o,function(a){o.request.onSocket(a)})}};function goe(t,e){var r=this;Qf.prototype.createSocket.call(r,t,function(o){var a=t.request.getHeader("host"),n=QM({},r.options,{socket:o,servername:a?a.replace(/:.*$/,""):t.host}),u=Wtt.connect(0,n);r.sockets[r.sockets.indexOf(o)]=u,e(u)})}function doe(t,e,r){return typeof t=="string"?{host:t,port:e,localAddress:r}:t}function QM(t){for(var e=1,r=arguments.length;e<r;++e){var o=arguments[e];if(typeof o=="object")for(var a=Object.keys(o),n=0,u=a.length;n<u;++n){var A=a[n];o[A]!==void 0&&(t[A]=o[A])}}return t}var n0;process.env.NODE_DEBUG&&/\btunnel\b/.test(process.env.NODE_DEBUG)?n0=function(){var t=Array.prototype.slice.call(arguments);typeof t[0]=="string"?t[0]="TUNNEL: "+t[0]:t.unshift("TUNNEL:"),console.error.apply(console,t)}:n0=function(){};pE.debug=n0});var Eoe=U((UNt,yoe)=>{yoe.exports=moe()});var Ff=U((kf,TP)=>{"use strict";Object.defineProperty(kf,"__esModule",{value:!0});var Coe=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function Ztt(t){return Coe.includes(t)}var $tt=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","FormData","URLSearchParams","HTMLElement",...Coe];function ert(t){return $tt.includes(t)}var trt=["null","undefined","string","number","bigint","boolean","symbol"];function rrt(t){return trt.includes(t)}function hE(t){return e=>typeof e===t}var{toString:Ioe}=Object.prototype,$w=t=>{let e=Ioe.call(t).slice(8,-1);if(/HTML\w+Element/.test(e)&&Fe.domElement(t))return"HTMLElement";if(ert(e))return e},Jn=t=>e=>$w(e)===t;function Fe(t){if(t===null)return"null";switch(typeof t){case"undefined":return"undefined";case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"function":return"Function";case"bigint":return"bigint";case"symbol":return"symbol";default:}if(Fe.observable(t))return"Observable";if(Fe.array(t))return"Array";if(Fe.buffer(t))return"Buffer";let e=$w(t);if(e)return e;if(t instanceof String||t instanceof Boolean||t instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}Fe.undefined=hE("undefined");Fe.string=hE("string");var nrt=hE("number");Fe.number=t=>nrt(t)&&!Fe.nan(t);Fe.bigint=hE("bigint");Fe.function_=hE("function");Fe.null_=t=>t===null;Fe.class_=t=>Fe.function_(t)&&t.toString().startsWith("class ");Fe.boolean=t=>t===!0||t===!1;Fe.symbol=hE("symbol");Fe.numericString=t=>Fe.string(t)&&!Fe.emptyStringOrWhitespace(t)&&!Number.isNaN(Number(t));Fe.array=(t,e)=>Array.isArray(t)?Fe.function_(e)?t.every(e):!0:!1;Fe.buffer=t=>{var e,r,o,a;return(a=(o=(r=(e=t)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.isBuffer)===null||o===void 0?void 0:o.call(r,t))!==null&&a!==void 0?a:!1};Fe.nullOrUndefined=t=>Fe.null_(t)||Fe.undefined(t);Fe.object=t=>!Fe.null_(t)&&(typeof t=="object"||Fe.function_(t));Fe.iterable=t=>{var e;return Fe.function_((e=t)===null||e===void 0?void 0:e[Symbol.iterator])};Fe.asyncIterable=t=>{var e;return Fe.function_((e=t)===null||e===void 0?void 0:e[Symbol.asyncIterator])};Fe.generator=t=>Fe.iterable(t)&&Fe.function_(t.next)&&Fe.function_(t.throw);Fe.asyncGenerator=t=>Fe.asyncIterable(t)&&Fe.function_(t.next)&&Fe.function_(t.throw);Fe.nativePromise=t=>Jn("Promise")(t);var irt=t=>{var e,r;return Fe.function_((e=t)===null||e===void 0?void 0:e.then)&&Fe.function_((r=t)===null||r===void 0?void 0:r.catch)};Fe.promise=t=>Fe.nativePromise(t)||irt(t);Fe.generatorFunction=Jn("GeneratorFunction");Fe.asyncGeneratorFunction=t=>$w(t)==="AsyncGeneratorFunction";Fe.asyncFunction=t=>$w(t)==="AsyncFunction";Fe.boundFunction=t=>Fe.function_(t)&&!t.hasOwnProperty("prototype");Fe.regExp=Jn("RegExp");Fe.date=Jn("Date");Fe.error=Jn("Error");Fe.map=t=>Jn("Map")(t);Fe.set=t=>Jn("Set")(t);Fe.weakMap=t=>Jn("WeakMap")(t);Fe.weakSet=t=>Jn("WeakSet")(t);Fe.int8Array=Jn("Int8Array");Fe.uint8Array=Jn("Uint8Array");Fe.uint8ClampedArray=Jn("Uint8ClampedArray");Fe.int16Array=Jn("Int16Array");Fe.uint16Array=Jn("Uint16Array");Fe.int32Array=Jn("Int32Array");Fe.uint32Array=Jn("Uint32Array");Fe.float32Array=Jn("Float32Array");Fe.float64Array=Jn("Float64Array");Fe.bigInt64Array=Jn("BigInt64Array");Fe.bigUint64Array=Jn("BigUint64Array");Fe.arrayBuffer=Jn("ArrayBuffer");Fe.sharedArrayBuffer=Jn("SharedArrayBuffer");Fe.dataView=Jn("DataView");Fe.directInstanceOf=(t,e)=>Object.getPrototypeOf(t)===e.prototype;Fe.urlInstance=t=>Jn("URL")(t);Fe.urlString=t=>{if(!Fe.string(t))return!1;try{return new URL(t),!0}catch{return!1}};Fe.truthy=t=>Boolean(t);Fe.falsy=t=>!t;Fe.nan=t=>Number.isNaN(t);Fe.primitive=t=>Fe.null_(t)||rrt(typeof t);Fe.integer=t=>Number.isInteger(t);Fe.safeInteger=t=>Number.isSafeInteger(t);Fe.plainObject=t=>{if(Ioe.call(t)!=="[object Object]")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};Fe.typedArray=t=>Ztt($w(t));var srt=t=>Fe.safeInteger(t)&&t>=0;Fe.arrayLike=t=>!Fe.nullOrUndefined(t)&&!Fe.function_(t)&&srt(t.length);Fe.inRange=(t,e)=>{if(Fe.number(e))return t>=Math.min(0,e)&&t<=Math.max(e,0);if(Fe.array(e)&&e.length===2)return t>=Math.min(...e)&&t<=Math.max(...e);throw new TypeError(`Invalid range: ${JSON.stringify(e)}`)};var ort=1,art=["innerHTML","ownerDocument","style","attributes","nodeValue"];Fe.domElement=t=>Fe.object(t)&&t.nodeType===ort&&Fe.string(t.nodeName)&&!Fe.plainObject(t)&&art.every(e=>e in t);Fe.observable=t=>{var e,r,o,a;return t?t===((r=(e=t)[Symbol.observable])===null||r===void 0?void 0:r.call(e))||t===((a=(o=t)["@@observable"])===null||a===void 0?void 0:a.call(o)):!1};Fe.nodeStream=t=>Fe.object(t)&&Fe.function_(t.pipe)&&!Fe.observable(t);Fe.infinite=t=>t===1/0||t===-1/0;var woe=t=>e=>Fe.integer(e)&&Math.abs(e%2)===t;Fe.evenInteger=woe(0);Fe.oddInteger=woe(1);Fe.emptyArray=t=>Fe.array(t)&&t.length===0;Fe.nonEmptyArray=t=>Fe.array(t)&&t.length>0;Fe.emptyString=t=>Fe.string(t)&&t.length===0;Fe.nonEmptyString=t=>Fe.string(t)&&t.length>0;var lrt=t=>Fe.string(t)&&!/\S/.test(t);Fe.emptyStringOrWhitespace=t=>Fe.emptyString(t)||lrt(t);Fe.emptyObject=t=>Fe.object(t)&&!Fe.map(t)&&!Fe.set(t)&&Object.keys(t).length===0;Fe.nonEmptyObject=t=>Fe.object(t)&&!Fe.map(t)&&!Fe.set(t)&&Object.keys(t).length>0;Fe.emptySet=t=>Fe.set(t)&&t.size===0;Fe.nonEmptySet=t=>Fe.set(t)&&t.size>0;Fe.emptyMap=t=>Fe.map(t)&&t.size===0;Fe.nonEmptyMap=t=>Fe.map(t)&&t.size>0;Fe.propertyKey=t=>Fe.any([Fe.string,Fe.number,Fe.symbol],t);Fe.formData=t=>Jn("FormData")(t);Fe.urlSearchParams=t=>Jn("URLSearchParams")(t);var Boe=(t,e,r)=>{if(!Fe.function_(e))throw new TypeError(`Invalid predicate: ${JSON.stringify(e)}`);if(r.length===0)throw new TypeError("Invalid number of values");return t.call(r,e)};Fe.any=(t,...e)=>(Fe.array(t)?t:[t]).some(o=>Boe(Array.prototype.some,o,e));Fe.all=(t,...e)=>Boe(Array.prototype.every,t,e);var Mt=(t,e,r,o={})=>{if(!t){let{multipleValues:a}=o,n=a?`received values of types ${[...new Set(r.map(u=>`\`${Fe(u)}\``))].join(", ")}`:`received value of type \`${Fe(r)}\``;throw new TypeError(`Expected value which is \`${e}\`, ${n}.`)}};kf.assert={undefined:t=>Mt(Fe.undefined(t),"undefined",t),string:t=>Mt(Fe.string(t),"string",t),number:t=>Mt(Fe.number(t),"number",t),bigint:t=>Mt(Fe.bigint(t),"bigint",t),function_:t=>Mt(Fe.function_(t),"Function",t),null_:t=>Mt(Fe.null_(t),"null",t),class_:t=>Mt(Fe.class_(t),"Class",t),boolean:t=>Mt(Fe.boolean(t),"boolean",t),symbol:t=>Mt(Fe.symbol(t),"symbol",t),numericString:t=>Mt(Fe.numericString(t),"string with a number",t),array:(t,e)=>{Mt(Fe.array(t),"Array",t),e&&t.forEach(e)},buffer:t=>Mt(Fe.buffer(t),"Buffer",t),nullOrUndefined:t=>Mt(Fe.nullOrUndefined(t),"null or undefined",t),object:t=>Mt(Fe.object(t),"Object",t),iterable:t=>Mt(Fe.iterable(t),"Iterable",t),asyncIterable:t=>Mt(Fe.asyncIterable(t),"AsyncIterable",t),generator:t=>Mt(Fe.generator(t),"Generator",t),asyncGenerator:t=>Mt(Fe.asyncGenerator(t),"AsyncGenerator",t),nativePromise:t=>Mt(Fe.nativePromise(t),"native Promise",t),promise:t=>Mt(Fe.promise(t),"Promise",t),generatorFunction:t=>Mt(Fe.generatorFunction(t),"GeneratorFunction",t),asyncGeneratorFunction:t=>Mt(Fe.asyncGeneratorFunction(t),"AsyncGeneratorFunction",t),asyncFunction:t=>Mt(Fe.asyncFunction(t),"AsyncFunction",t),boundFunction:t=>Mt(Fe.boundFunction(t),"Function",t),regExp:t=>Mt(Fe.regExp(t),"RegExp",t),date:t=>Mt(Fe.date(t),"Date",t),error:t=>Mt(Fe.error(t),"Error",t),map:t=>Mt(Fe.map(t),"Map",t),set:t=>Mt(Fe.set(t),"Set",t),weakMap:t=>Mt(Fe.weakMap(t),"WeakMap",t),weakSet:t=>Mt(Fe.weakSet(t),"WeakSet",t),int8Array:t=>Mt(Fe.int8Array(t),"Int8Array",t),uint8Array:t=>Mt(Fe.uint8Array(t),"Uint8Array",t),uint8ClampedArray:t=>Mt(Fe.uint8ClampedArray(t),"Uint8ClampedArray",t),int16Array:t=>Mt(Fe.int16Array(t),"Int16Array",t),uint16Array:t=>Mt(Fe.uint16Array(t),"Uint16Array",t),int32Array:t=>Mt(Fe.int32Array(t),"Int32Array",t),uint32Array:t=>Mt(Fe.uint32Array(t),"Uint32Array",t),float32Array:t=>Mt(Fe.float32Array(t),"Float32Array",t),float64Array:t=>Mt(Fe.float64Array(t),"Float64Array",t),bigInt64Array:t=>Mt(Fe.bigInt64Array(t),"BigInt64Array",t),bigUint64Array:t=>Mt(Fe.bigUint64Array(t),"BigUint64Array",t),arrayBuffer:t=>Mt(Fe.arrayBuffer(t),"ArrayBuffer",t),sharedArrayBuffer:t=>Mt(Fe.sharedArrayBuffer(t),"SharedArrayBuffer",t),dataView:t=>Mt(Fe.dataView(t),"DataView",t),urlInstance:t=>Mt(Fe.urlInstance(t),"URL",t),urlString:t=>Mt(Fe.urlString(t),"string with a URL",t),truthy:t=>Mt(Fe.truthy(t),"truthy",t),falsy:t=>Mt(Fe.falsy(t),"falsy",t),nan:t=>Mt(Fe.nan(t),"NaN",t),primitive:t=>Mt(Fe.primitive(t),"primitive",t),integer:t=>Mt(Fe.integer(t),"integer",t),safeInteger:t=>Mt(Fe.safeInteger(t),"integer",t),plainObject:t=>Mt(Fe.plainObject(t),"plain object",t),typedArray:t=>Mt(Fe.typedArray(t),"TypedArray",t),arrayLike:t=>Mt(Fe.arrayLike(t),"array-like",t),domElement:t=>Mt(Fe.domElement(t),"HTMLElement",t),observable:t=>Mt(Fe.observable(t),"Observable",t),nodeStream:t=>Mt(Fe.nodeStream(t),"Node.js Stream",t),infinite:t=>Mt(Fe.infinite(t),"infinite number",t),emptyArray:t=>Mt(Fe.emptyArray(t),"empty array",t),nonEmptyArray:t=>Mt(Fe.nonEmptyArray(t),"non-empty array",t),emptyString:t=>Mt(Fe.emptyString(t),"empty string",t),nonEmptyString:t=>Mt(Fe.nonEmptyString(t),"non-empty string",t),emptyStringOrWhitespace:t=>Mt(Fe.emptyStringOrWhitespace(t),"empty string or whitespace",t),emptyObject:t=>Mt(Fe.emptyObject(t),"empty object",t),nonEmptyObject:t=>Mt(Fe.nonEmptyObject(t),"non-empty object",t),emptySet:t=>Mt(Fe.emptySet(t),"empty set",t),nonEmptySet:t=>Mt(Fe.nonEmptySet(t),"non-empty set",t),emptyMap:t=>Mt(Fe.emptyMap(t),"empty map",t),nonEmptyMap:t=>Mt(Fe.nonEmptyMap(t),"non-empty map",t),propertyKey:t=>Mt(Fe.propertyKey(t),"PropertyKey",t),formData:t=>Mt(Fe.formData(t),"FormData",t),urlSearchParams:t=>Mt(Fe.urlSearchParams(t),"URLSearchParams",t),evenInteger:t=>Mt(Fe.evenInteger(t),"even integer",t),oddInteger:t=>Mt(Fe.oddInteger(t),"odd integer",t),directInstanceOf:(t,e)=>Mt(Fe.directInstanceOf(t,e),"T",t),inRange:(t,e)=>Mt(Fe.inRange(t,e),"in range",t),any:(t,...e)=>Mt(Fe.any(t,...e),"predicate returns truthy for any value",e,{multipleValues:!0}),all:(t,...e)=>Mt(Fe.all(t,...e),"predicate returns truthy for all values",e,{multipleValues:!0})};Object.defineProperties(Fe,{class:{value:Fe.class_},function:{value:Fe.function_},null:{value:Fe.null_}});Object.defineProperties(kf.assert,{class:{value:kf.assert.class_},function:{value:kf.assert.function_},null:{value:kf.assert.null_}});kf.default=Fe;TP.exports=Fe;TP.exports.default=Fe;TP.exports.assert=kf.assert});var voe=U((_Nt,kM)=>{"use strict";var NP=class extends Error{constructor(e){super(e||"Promise was canceled"),this.name="CancelError"}get isCanceled(){return!0}},gE=class{static fn(e){return(...r)=>new gE((o,a,n)=>{r.push(n),e(...r).then(o,a)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,o)=>{this._reject=o;let a=A=>{this._isPending=!1,r(A)},n=A=>{this._isPending=!1,o(A)},u=A=>{if(!this._isPending)throw new Error("The `onCancel` handler was attached after the promise settled.");this._cancelHandlers.push(A)};return Object.defineProperties(u,{shouldReject:{get:()=>this._rejectOnCancel,set:A=>{this._rejectOnCancel=A}}}),e(a,n,u)})}then(e,r){return this._promise.then(e,r)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let r of this._cancelHandlers)r()}catch(r){this._reject(r)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new NP(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(gE.prototype,Promise.prototype);kM.exports=gE;kM.exports.CancelError=NP});var Doe=U((RM,TM)=>{"use strict";Object.defineProperty(RM,"__esModule",{value:!0});var crt=Ie("tls"),FM=(t,e)=>{let r;typeof e=="function"?r={connect:e}:r=e;let o=typeof r.connect=="function",a=typeof r.secureConnect=="function",n=typeof r.close=="function",u=()=>{o&&r.connect(),t instanceof crt.TLSSocket&&a&&(t.authorized?r.secureConnect():t.authorizationError||t.once("secureConnect",r.secureConnect)),n&&t.once("close",r.close)};t.writable&&!t.connecting?u():t.connecting?t.once("connect",u):t.destroyed&&n&&r.close(t._hadError)};RM.default=FM;TM.exports=FM;TM.exports.default=FM});var Soe=U((LM,OM)=>{"use strict";Object.defineProperty(LM,"__esModule",{value:!0});var urt=Doe(),Art=Number(process.versions.node.split(".")[0]),NM=t=>{let e={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};t.timings=e;let r=u=>{let A=u.emit.bind(u);u.emit=(p,...h)=>(p==="error"&&(e.error=Date.now(),e.phases.total=e.error-e.start,u.emit=A),A(p,...h))};r(t),t.prependOnceListener("abort",()=>{e.abort=Date.now(),(!e.response||Art>=13)&&(e.phases.total=Date.now()-e.start)});let o=u=>{e.socket=Date.now(),e.phases.wait=e.socket-e.start;let A=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};u.prependOnceListener("lookup",A),urt.default(u,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(u.removeListener("lookup",A),e.lookup=e.connect,e.phases.dns=e.lookup-e.socket),e.phases.tcp=e.connect-e.lookup},secureConnect:()=>{e.secureConnect=Date.now(),e.phases.tls=e.secureConnect-e.connect}})};t.socket?o(t.socket):t.prependOnceListener("socket",o);let a=()=>{var u;e.upload=Date.now(),e.phases.request=e.upload-(u=e.secureConnect,u??e.connect)};return(()=>typeof t.writableFinished=="boolean"?t.writableFinished:t.finished&&t.outputSize===0&&(!t.socket||t.socket.writableLength===0))()?a():t.prependOnceListener("finish",a),t.prependOnceListener("response",u=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,u.timings=e,r(u),u.prependOnceListener("end",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start})}),e};LM.default=NM;OM.exports=NM;OM.exports.default=NM});var Roe=U((HNt,_M)=>{"use strict";var{V4MAPPED:frt,ADDRCONFIG:prt,ALL:Foe,promises:{Resolver:Poe},lookup:hrt}=Ie("dns"),{promisify:MM}=Ie("util"),grt=Ie("os"),dE=Symbol("cacheableLookupCreateConnection"),UM=Symbol("cacheableLookupInstance"),xoe=Symbol("expires"),drt=typeof Foe=="number",boe=t=>{if(!(t&&typeof t.createConnection=="function"))throw new Error("Expected an Agent instance as the first argument")},mrt=t=>{for(let e of t)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},Qoe=()=>{let t=!1,e=!1;for(let r of Object.values(grt.networkInterfaces()))for(let o of r)if(!o.internal&&(o.family==="IPv6"?e=!0:t=!0,t&&e))return{has4:t,has6:e};return{has4:t,has6:e}},yrt=t=>Symbol.iterator in t,koe={ttl:!0},Ert={all:!0},LP=class{constructor({cache:e=new Map,maxTtl:r=1/0,fallbackDuration:o=3600,errorTtl:a=.15,resolver:n=new Poe,lookup:u=hrt}={}){if(this.maxTtl=r,this.errorTtl=a,this._cache=e,this._resolver=n,this._dnsLookup=MM(u),this._resolver instanceof Poe?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=MM(this._resolver.resolve4.bind(this._resolver)),this._resolve6=MM(this._resolver.resolve6.bind(this._resolver))),this._iface=Qoe(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,o<1)this._fallback=!1;else{this._fallback=!0;let A=setInterval(()=>{this._hostnamesToFallback.clear()},o*1e3);A.unref&&A.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(e){this.clear(),this._resolver.setServers(e)}get servers(){return this._resolver.getServers()}lookup(e,r,o){if(typeof r=="function"?(o=r,r={}):typeof r=="number"&&(r={family:r}),!o)throw new Error("Callback must be a function.");this.lookupAsync(e,r).then(a=>{r.all?o(null,a):o(null,a.address,a.family,a.expires,a.ttl)},o)}async lookupAsync(e,r={}){typeof r=="number"&&(r={family:r});let o=await this.query(e);if(r.family===6){let a=o.filter(n=>n.family===6);r.hints&frt&&(drt&&r.hints&Foe||a.length===0)?mrt(o):o=a}else r.family===4&&(o=o.filter(a=>a.family===4));if(r.hints&prt){let{_iface:a}=this;o=o.filter(n=>n.family===6?a.has6:a.has4)}if(o.length===0){let a=new Error(`cacheableLookup ENOTFOUND ${e}`);throw a.code="ENOTFOUND",a.hostname=e,a}return r.all?o:o[0]}async query(e){let r=await this._cache.get(e);if(!r){let o=this._pending[e];if(o)r=await o;else{let a=this.queryAndCache(e);this._pending[e]=a,r=await a}}return r=r.map(o=>({...o})),r}async _resolve(e){let r=async h=>{try{return await h}catch(C){if(C.code==="ENODATA"||C.code==="ENOTFOUND")return[];throw C}},[o,a]=await Promise.all([this._resolve4(e,koe),this._resolve6(e,koe)].map(h=>r(h))),n=0,u=0,A=0,p=Date.now();for(let h of o)h.family=4,h.expires=p+h.ttl*1e3,n=Math.max(n,h.ttl);for(let h of a)h.family=6,h.expires=p+h.ttl*1e3,u=Math.max(u,h.ttl);return o.length>0?a.length>0?A=Math.min(n,u):A=n:A=u,{entries:[...o,...a],cacheTtl:A}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch{return{entries:[],cacheTtl:0}}}async _set(e,r,o){if(this.maxTtl>0&&o>0){o=Math.min(o,this.maxTtl)*1e3,r[xoe]=Date.now()+o;try{await this._cache.set(e,r,o)}catch(a){this.lookupAsync=async()=>{let n=new Error("Cache Error. Please recreate the CacheableLookup instance.");throw n.cause=a,n}}yrt(this._cache)&&this._tick(o)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,Ert);try{let r=await this._resolve(e);r.entries.length===0&&this._fallback&&(r=await this._lookup(e),r.entries.length!==0&&this._hostnamesToFallback.add(e));let o=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(e,r.entries,o),delete this._pending[e],r.entries}catch(r){throw delete this._pending[e],r}}_tick(e){let r=this._nextRemovalTime;(!r||e<r)&&(clearTimeout(this._removalTimeout),this._nextRemovalTime=e,this._removalTimeout=setTimeout(()=>{this._nextRemovalTime=!1;let o=1/0,a=Date.now();for(let[n,u]of this._cache){let A=u[xoe];a>=A?this._cache.delete(n):A<o&&(o=A)}o!==1/0&&this._tick(o-a)},e),this._removalTimeout.unref&&this._removalTimeout.unref())}install(e){if(boe(e),dE in e)throw new Error("CacheableLookup has been already installed");e[dE]=e.createConnection,e[UM]=this,e.createConnection=(r,o)=>("lookup"in r||(r.lookup=this.lookup),e[dE](r,o))}uninstall(e){if(boe(e),e[dE]){if(e[UM]!==this)throw new Error("The agent is not owned by this CacheableLookup instance");e.createConnection=e[dE],delete e[dE],delete e[UM]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=Qoe(),(e.has4&&!this._iface.has4||e.has6&&!this._iface.has6)&&this._cache.clear()}clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}};_M.exports=LP;_M.exports.default=LP});var Loe=U((qNt,HM)=>{"use strict";var Crt=typeof URL>"u"?Ie("url").URL:URL,Irt="text/plain",wrt="us-ascii",Toe=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),Brt=(t,{stripHash:e})=>{let r=t.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${t}`);let o=r[1].split(";"),a=r[2],n=e?"":r[3],u=!1;o[o.length-1]==="base64"&&(o.pop(),u=!0);let A=(o.shift()||"").toLowerCase(),h=[...o.map(C=>{let[w,v=""]=C.split("=").map(b=>b.trim());return w==="charset"&&(v=v.toLowerCase(),v===wrt)?"":`${w}${v?`=${v}`:""}`}).filter(Boolean)];return u&&h.push("base64"),(h.length!==0||A&&A!==Irt)&&h.unshift(A),`data:${h.join(";")},${u?a.trim():a}${n?`#${n}`:""}`},Noe=(t,e)=>{if(e={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},Reflect.has(e,"normalizeHttps"))throw new Error("options.normalizeHttps is renamed to options.forceHttp");if(Reflect.has(e,"normalizeHttp"))throw new Error("options.normalizeHttp is renamed to options.forceHttps");if(Reflect.has(e,"stripFragment"))throw new Error("options.stripFragment is renamed to options.stripHash");if(t=t.trim(),/^data:/i.test(t))return Brt(t,e);let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let a=new Crt(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&a.protocol==="https:"&&(a.protocol="http:"),e.forceHttps&&a.protocol==="http:"&&(a.protocol="https:"),e.stripAuthentication&&(a.username="",a.password=""),e.stripHash&&(a.hash=""),a.pathname&&(a.pathname=a.pathname.replace(/((?!:).|^)\/{2,}/g,(n,u)=>/^(?!\/)/g.test(u)?`${u}/`:"/")),a.pathname&&(a.pathname=decodeURI(a.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let n=a.pathname.split("/"),u=n[n.length-1];Toe(u,e.removeDirectoryIndex)&&(n=n.slice(0,n.length-1),a.pathname=n.slice(1).join("/")+"/")}if(a.hostname&&(a.hostname=a.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let n of[...a.searchParams.keys()])Toe(n,e.removeQueryParameters)&&a.searchParams.delete(n);return e.sortQueryParameters&&a.searchParams.sort(),e.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\/$/,"")),t=a.toString(),(e.removeTrailingSlash||a.pathname==="/")&&a.hash===""&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t};HM.exports=Noe;HM.exports.default=Noe});var Uoe=U((jNt,Moe)=>{Moe.exports=Ooe;function Ooe(t,e){if(t&&e)return Ooe(t)(e);if(typeof t!="function")throw new TypeError("need wrapper function");return Object.keys(t).forEach(function(o){r[o]=t[o]}),r;function r(){for(var o=new Array(arguments.length),a=0;a<o.length;a++)o[a]=arguments[a];var n=t.apply(this,o),u=o[o.length-1];return typeof n=="function"&&n!==u&&Object.keys(u).forEach(function(A){n[A]=u[A]}),n}}});var jM=U((GNt,qM)=>{var _oe=Uoe();qM.exports=_oe(OP);qM.exports.strict=_oe(Hoe);OP.proto=OP(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return OP(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return Hoe(this)},configurable:!0})});function OP(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function Hoe(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||"Function wrapped with `once`";return e.onceError=r+" shouldn't be called more than once",e.called=!1,e}});var GM=U((WNt,joe)=>{var vrt=jM(),Drt=function(){},Srt=function(t){return t.setHeader&&typeof t.abort=="function"},Prt=function(t){return t.stdio&&Array.isArray(t.stdio)&&t.stdio.length===3},qoe=function(t,e,r){if(typeof e=="function")return qoe(t,null,e);e||(e={}),r=vrt(r||Drt);var o=t._writableState,a=t._readableState,n=e.readable||e.readable!==!1&&t.readable,u=e.writable||e.writable!==!1&&t.writable,A=function(){t.writable||p()},p=function(){u=!1,n||r.call(t)},h=function(){n=!1,u||r.call(t)},C=function(E){r.call(t,E?new Error("exited with error code: "+E):null)},w=function(E){r.call(t,E)},v=function(){if(n&&!(a&&a.ended))return r.call(t,new Error("premature close"));if(u&&!(o&&o.ended))return r.call(t,new Error("premature close"))},b=function(){t.req.on("finish",p)};return Srt(t)?(t.on("complete",p),t.on("abort",v),t.req?b():t.on("request",b)):u&&!o&&(t.on("end",A),t.on("close",A)),Prt(t)&&t.on("exit",C),t.on("end",h),t.on("finish",p),e.error!==!1&&t.on("error",w),t.on("close",v),function(){t.removeListener("complete",p),t.removeListener("abort",v),t.removeListener("request",b),t.req&&t.req.removeListener("finish",p),t.removeListener("end",A),t.removeListener("close",A),t.removeListener("finish",p),t.removeListener("exit",C),t.removeListener("end",h),t.removeListener("error",w),t.removeListener("close",v)}};joe.exports=qoe});var Yoe=U((YNt,Woe)=>{var xrt=jM(),brt=GM(),WM=Ie("fs"),e1=function(){},Qrt=/^v?\.0/.test(process.version),MP=function(t){return typeof t=="function"},krt=function(t){return!Qrt||!WM?!1:(t instanceof(WM.ReadStream||e1)||t instanceof(WM.WriteStream||e1))&&MP(t.close)},Frt=function(t){return t.setHeader&&MP(t.abort)},Rrt=function(t,e,r,o){o=xrt(o);var a=!1;t.on("close",function(){a=!0}),brt(t,{readable:e,writable:r},function(u){if(u)return o(u);a=!0,o()});var n=!1;return function(u){if(!a&&!n){if(n=!0,krt(t))return t.close(e1);if(Frt(t))return t.abort();if(MP(t.destroy))return t.destroy();o(u||new Error("stream was destroyed"))}}},Goe=function(t){t()},Trt=function(t,e){return t.pipe(e)},Nrt=function(){var t=Array.prototype.slice.call(arguments),e=MP(t[t.length-1]||e1)&&t.pop()||e1;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error("pump requires two streams per minimum");var r,o=t.map(function(a,n){var u=n<t.length-1,A=n>0;return Rrt(a,u,A,function(p){r||(r=p),p&&o.forEach(Goe),!u&&(o.forEach(Goe),e(r))})});return t.reduce(Trt)};Woe.exports=Nrt});var Joe=U((KNt,Koe)=>{"use strict";var{PassThrough:Lrt}=Ie("stream");Koe.exports=t=>{t={...t};let{array:e}=t,{encoding:r}=t,o=r==="buffer",a=!1;e?a=!(r||o):r=r||"utf8",o&&(r=null);let n=new Lrt({objectMode:a});r&&n.setEncoding(r);let u=0,A=[];return n.on("data",p=>{A.push(p),a?u=A.length:u+=p.length}),n.getBufferedValue=()=>e?A:o?Buffer.concat(A,u):A.join(""),n.getBufferedLength=()=>u,n}});var Voe=U((JNt,mE)=>{"use strict";var Ort=Yoe(),Mrt=Joe(),UP=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function _P(t,e){if(!t)return Promise.reject(new Error("Expected a stream"));e={maxBuffer:1/0,...e};let{maxBuffer:r}=e,o;return await new Promise((a,n)=>{let u=A=>{A&&(A.bufferedData=o.getBufferedValue()),n(A)};o=Ort(t,Mrt(e),A=>{if(A){u(A);return}a()}),o.on("data",()=>{o.getBufferedLength()>r&&u(new UP)})}),o.getBufferedValue()}mE.exports=_P;mE.exports.default=_P;mE.exports.buffer=(t,e)=>_P(t,{...e,encoding:"buffer"});mE.exports.array=(t,e)=>_P(t,{...e,array:!0});mE.exports.MaxBufferError=UP});var Xoe=U((zNt,zoe)=>{"use strict";var Urt=new Set([200,203,204,206,300,301,404,405,410,414,501]),_rt=new Set([200,203,204,300,301,302,303,307,308,404,405,410,414,501]),Hrt=new Set([500,502,503,504]),qrt={date:!0,connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},jrt={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function Dd(t){let e=parseInt(t,10);return isFinite(e)?e:0}function Grt(t){return t?Hrt.has(t.status):!0}function YM(t){let e={};if(!t)return e;let r=t.trim().split(/\s*,\s*/);for(let o of r){let[a,n]=o.split(/\s*=\s*/,2);e[a]=n===void 0?!0:n.replace(/^"|"$/g,"")}return e}function Wrt(t){let e=[];for(let r in t){let o=t[r];e.push(o===!0?r:r+"="+o)}if(!!e.length)return e.join(", ")}zoe.exports=class{constructor(e,r,{shared:o,cacheHeuristic:a,immutableMinTimeToLive:n,ignoreCargoCult:u,_fromObject:A}={}){if(A){this._fromObject(A);return}if(!r||!r.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=o!==!1,this._cacheHeuristic=a!==void 0?a:.1,this._immutableMinTtl=n!==void 0?n:24*3600*1e3,this._status="status"in r?r.status:200,this._resHeaders=r.headers,this._rescc=YM(r.headers["cache-control"]),this._method="method"in e?e.method:"GET",this._url=e.url,this._host=e.headers.host,this._noAuthorization=!e.headers.authorization,this._reqHeaders=r.headers.vary?e.headers:null,this._reqcc=YM(e.headers["cache-control"]),u&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":Wrt(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),r.headers["cache-control"]==null&&/no-cache/.test(r.headers.pragma)&&(this._rescc["no-cache"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||this._method==="HEAD"||this._method==="POST"&&this._hasExplicitExpiration())&&_rt.has(this._status)&&!this._rescc["no-store"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc["max-age"]||this._isShared&&this._rescc["s-maxage"]||this._rescc.public||Urt.has(this._status)))}_hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires}_assertRequestHasHeaders(e){if(!e||!e.headers)throw Error("Request headers missing")}satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let r=YM(e.headers["cache-control"]);return r["no-cache"]||/no-cache/.test(e.headers.pragma)||r["max-age"]&&this.age()>r["max-age"]||r["min-fresh"]&&this.timeToLive()<1e3*r["min-fresh"]||this.stale()&&!(r["max-stale"]&&!this._rescc["must-revalidate"]&&(r["max-stale"]===!0||r["max-stale"]>this.age()-this.maxAge()))?!1:this._requestMatches(e,!1)}_requestMatches(e,r){return(!this._url||this._url===e.url)&&this._host===e.headers.host&&(!e.method||this._method===e.method||r&&e.method==="HEAD")&&this._varyMatches(e)}_allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]}_varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary==="*")return!1;let r=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/);for(let o of r)if(e.headers[o]!==this._reqHeaders[o])return!1;return!0}_copyWithoutHopByHopHeaders(e){let r={};for(let o in e)qrt[o]||(r[o]=e[o]);if(e.connection){let o=e.connection.trim().split(/\s*,\s*/);for(let a of o)delete r[a]}if(r.warning){let o=r.warning.split(/,/).filter(a=>!/^\s*1[0-9][0-9]/.test(a));o.length?r.warning=o.join(",").trim():delete r.warning}return r}responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeaders),r=this.age();return r>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(e.warning=(e.warning?`${e.warning}, `:"")+'113 - "rfc7234 5.5.4"'),e.age=`${Math.round(r)}`,e.date=new Date(this.now()).toUTCString(),e}date(){let e=Date.parse(this._resHeaders.date);return isFinite(e)?e:this._responseTime}age(){let e=this._ageValue(),r=(this.now()-this._responseTime)/1e3;return e+r}_ageValue(){return Dd(this._resHeaders.age)}maxAge(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary==="*")return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return Dd(this._rescc["s-maxage"])}if(this._rescc["max-age"])return Dd(this._rescc["max-age"]);let e=this._rescc.immutable?this._immutableMinTtl:0,r=this.date();if(this._resHeaders.expires){let o=Date.parse(this._resHeaders.expires);return Number.isNaN(o)||o<r?0:Math.max(e,(o-r)/1e3)}if(this._resHeaders["last-modified"]){let o=Date.parse(this._resHeaders["last-modified"]);if(isFinite(o)&&r>o)return Math.max(e,(r-o)/1e3*this._cacheHeuristic)}return e}timeToLive(){let e=this.maxAge()-this.age(),r=e+Dd(this._rescc["stale-if-error"]),o=e+Dd(this._rescc["stale-while-revalidate"]);return Math.max(0,e,r,o)*1e3}stale(){return this.maxAge()<=this.age()}_useStaleIfError(){return this.maxAge()+Dd(this._rescc["stale-if-error"])>this.age()}useStaleWhileRevalidate(){return this.maxAge()+Dd(this._rescc["stale-while-revalidate"])>this.age()}static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}_fromObject(e){if(this._responseTime)throw Error("Reinitialized");if(!e||e.v!==1)throw Error("Invalid serialization");this._responseTime=e.t,this._isShared=e.sh,this._cacheHeuristic=e.ch,this._immutableMinTtl=e.imm!==void 0?e.imm:24*3600*1e3,this._status=e.st,this._resHeaders=e.resh,this._rescc=e.rescc,this._method=e.m,this._url=e.u,this._host=e.h,this._noAuthorization=e.a,this._reqHeaders=e.reqh,this._reqcc=e.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(e){this._assertRequestHasHeaders(e);let r=this._copyWithoutHopByHopHeaders(e.headers);if(delete r["if-range"],!this._requestMatches(e,!0)||!this.storable())return delete r["if-none-match"],delete r["if-modified-since"],r;if(this._resHeaders.etag&&(r["if-none-match"]=r["if-none-match"]?`${r["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),r["accept-ranges"]||r["if-match"]||r["if-unmodified-since"]||this._method&&this._method!="GET"){if(delete r["if-modified-since"],r["if-none-match"]){let a=r["if-none-match"].split(/,/).filter(n=>!/^\s*W\//.test(n));a.length?r["if-none-match"]=a.join(",").trim():delete r["if-none-match"]}}else this._resHeaders["last-modified"]&&!r["if-modified-since"]&&(r["if-modified-since"]=this._resHeaders["last-modified"]);return r}revalidatedPolicy(e,r){if(this._assertRequestHasHeaders(e),this._useStaleIfError()&&Grt(r))return{modified:!1,matches:!1,policy:this};if(!r||!r.headers)throw Error("Response headers missing");let o=!1;if(r.status!==void 0&&r.status!=304?o=!1:r.headers.etag&&!/^\s*W\//.test(r.headers.etag)?o=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?o=this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?o=this._resHeaders["last-modified"]===r.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!r.headers.etag&&!r.headers["last-modified"]&&(o=!0),!o)return{policy:new this.constructor(e,r),modified:r.status!=304,matches:!1};let a={};for(let u in this._resHeaders)a[u]=u in r.headers&&!jrt[u]?r.headers[u]:this._resHeaders[u];let n=Object.assign({},r,{status:this._status,method:this._method,headers:a});return{policy:new this.constructor(e,n,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl}),modified:!1,matches:!0}}}});var HP=U((XNt,Zoe)=>{"use strict";Zoe.exports=t=>{let e={};for(let[r,o]of Object.entries(t))e[r.toLowerCase()]=o;return e}});var eae=U((ZNt,$oe)=>{"use strict";var Yrt=Ie("stream").Readable,Krt=HP(),KM=class extends Yrt{constructor(e,r,o,a){if(typeof e!="number")throw new TypeError("Argument `statusCode` should be a number");if(typeof r!="object")throw new TypeError("Argument `headers` should be an object");if(!(o instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if(typeof a!="string")throw new TypeError("Argument `url` should be a string");super(),this.statusCode=e,this.headers=Krt(r),this.body=o,this.url=a}_read(){this.push(this.body),this.push(null)}};$oe.exports=KM});var rae=U(($Nt,tae)=>{"use strict";var Jrt=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];tae.exports=(t,e)=>{let r=new Set(Object.keys(t).concat(Jrt));for(let o of r)o in e||(e[o]=typeof t[o]=="function"?t[o].bind(t):t[o])}});var iae=U((eLt,nae)=>{"use strict";var Vrt=Ie("stream").PassThrough,zrt=rae(),Xrt=t=>{if(!(t&&t.pipe))throw new TypeError("Parameter `response` must be a response stream.");let e=new Vrt;return zrt(t,e),t.pipe(e)};nae.exports=Xrt});var sae=U(JM=>{JM.stringify=function t(e){if(typeof e>"u")return e;if(e&&Buffer.isBuffer(e))return JSON.stringify(":base64:"+e.toString("base64"));if(e&&e.toJSON&&(e=e.toJSON()),e&&typeof e=="object"){var r="",o=Array.isArray(e);r=o?"[":"{";var a=!0;for(var n in e){var u=typeof e[n]=="function"||!o&&typeof e[n]>"u";Object.hasOwnProperty.call(e,n)&&!u&&(a||(r+=","),a=!1,o?e[n]==null?r+="null":r+=t(e[n]):e[n]!==void 0&&(r+=t(n)+":"+t(e[n])))}return r+=o?"]":"}",r}else return typeof e=="string"?JSON.stringify(/^:/.test(e)?":"+e:e):typeof e>"u"?"null":JSON.stringify(e)};JM.parse=function(t){return JSON.parse(t,function(e,r){return typeof r=="string"?/^:base64:/.test(r)?Buffer.from(r.substring(8),"base64"):/^:/.test(r)?r.substring(1):r:r})}});var lae=U((rLt,aae)=>{"use strict";var Zrt=Ie("events"),oae=sae(),$rt=t=>{let e={redis:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql"};if(t.adapter||t.uri){let r=t.adapter||/^[^:]*/.exec(t.uri)[0];return new(Ie(e[r]))(t)}return new Map},VM=class extends Zrt{constructor(e,r){if(super(),this.opts=Object.assign({namespace:"keyv",serialize:oae.stringify,deserialize:oae.parse},typeof e=="string"?{uri:e}:e,r),!this.opts.store){let o=Object.assign({},this.opts);this.opts.store=$rt(o)}typeof this.opts.store.on=="function"&&this.opts.store.on("error",o=>this.emit("error",o)),this.opts.store.namespace=this.opts.namespace}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}get(e,r){e=this._getKeyPrefix(e);let{store:o}=this.opts;return Promise.resolve().then(()=>o.get(e)).then(a=>typeof a=="string"?this.opts.deserialize(a):a).then(a=>{if(a!==void 0){if(typeof a.expires=="number"&&Date.now()>a.expires){this.delete(e);return}return r&&r.raw?a:a.value}})}set(e,r,o){e=this._getKeyPrefix(e),typeof o>"u"&&(o=this.opts.ttl),o===0&&(o=void 0);let{store:a}=this.opts;return Promise.resolve().then(()=>{let n=typeof o=="number"?Date.now()+o:null;return r={value:r,expires:n},this.opts.serialize(r)}).then(n=>a.set(e,n,o)).then(()=>!0)}delete(e){e=this._getKeyPrefix(e);let{store:r}=this.opts;return Promise.resolve().then(()=>r.delete(e))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}};aae.exports=VM});var Aae=U((iLt,uae)=>{"use strict";var ent=Ie("events"),qP=Ie("url"),tnt=Loe(),rnt=Voe(),zM=Xoe(),cae=eae(),nnt=HP(),int=iae(),snt=lae(),Gc=class{constructor(e,r){if(typeof e!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new snt({uri:typeof r=="string"&&r,store:typeof r!="string"&&r,namespace:"cacheable-request"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(r,o)=>{let a;if(typeof r=="string")a=XM(qP.parse(r)),r={};else if(r instanceof qP.URL)a=XM(qP.parse(r.toString())),r={};else{let[w,...v]=(r.path||"").split("?"),b=v.length>0?`?${v.join("?")}`:"";a=XM({...r,pathname:w,search:b})}r={headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1,...r,...ont(a)},r.headers=nnt(r.headers);let n=new ent,u=tnt(qP.format(a),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),A=`${r.method}:${u}`,p=!1,h=!1,C=w=>{h=!0;let v=!1,b,E=new Promise(L=>{b=()=>{v||(v=!0,L())}}),R=L=>{if(p&&!w.forceRefresh){L.status=L.statusCode;let J=zM.fromObject(p.cachePolicy).revalidatedPolicy(w,L);if(!J.modified){let re=J.policy.responseHeaders();L=new cae(p.statusCode,re,p.body,p.url),L.cachePolicy=J.policy,L.fromCache=!0}}L.fromCache||(L.cachePolicy=new zM(w,L,w),L.fromCache=!1);let _;w.cache&&L.cachePolicy.storable()?(_=int(L),(async()=>{try{let J=rnt.buffer(L);if(await Promise.race([E,new Promise(he=>L.once("end",he))]),v)return;let re=await J,oe={cachePolicy:L.cachePolicy.toObject(),url:L.url,statusCode:L.fromCache?p.statusCode:L.statusCode,body:re},pe=w.strictTtl?L.cachePolicy.timeToLive():void 0;w.maxTtl&&(pe=pe?Math.min(pe,w.maxTtl):w.maxTtl),await this.cache.set(A,oe,pe)}catch(J){n.emit("error",new Gc.CacheError(J))}})()):w.cache&&p&&(async()=>{try{await this.cache.delete(A)}catch(J){n.emit("error",new Gc.CacheError(J))}})(),n.emit("response",_||L),typeof o=="function"&&o(_||L)};try{let L=e(w,R);L.once("error",b),L.once("abort",b),n.emit("request",L)}catch(L){n.emit("error",new Gc.RequestError(L))}};return(async()=>{let w=async b=>{await Promise.resolve();let E=b.cache?await this.cache.get(A):void 0;if(typeof E>"u")return C(b);let R=zM.fromObject(E.cachePolicy);if(R.satisfiesWithoutRevalidation(b)&&!b.forceRefresh){let L=R.responseHeaders(),_=new cae(E.statusCode,L,E.body,E.url);_.cachePolicy=R,_.fromCache=!0,n.emit("response",_),typeof o=="function"&&o(_)}else p=E,b.headers=R.revalidationHeaders(b),C(b)},v=b=>n.emit("error",new Gc.CacheError(b));this.cache.once("error",v),n.on("response",()=>this.cache.removeListener("error",v));try{await w(r)}catch(b){r.automaticFailover&&!h&&C(r),n.emit("error",new Gc.CacheError(b))}})(),n}}};function ont(t){let e={...t};return e.path=`${t.pathname||"/"}${t.search||""}`,delete e.pathname,delete e.search,e}function XM(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostname||t.host||"localhost",port:t.port,pathname:t.pathname,search:t.search}}Gc.RequestError=class extends Error{constructor(t){super(t.message),this.name="RequestError",Object.assign(this,t)}};Gc.CacheError=class extends Error{constructor(t){super(t.message),this.name="CacheError",Object.assign(this,t)}};uae.exports=Gc});var pae=U((aLt,fae)=>{"use strict";var ant=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];fae.exports=(t,e)=>{if(e._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");let r=new Set(Object.keys(t).concat(ant)),o={};for(let a of r)a in e||(o[a]={get(){let n=t[a];return typeof n=="function"?n.bind(t):n},set(n){t[a]=n},enumerable:!0,configurable:!1});return Object.defineProperties(e,o),t.once("aborted",()=>{e.destroy(),e.emit("aborted")}),t.once("close",()=>{t.complete&&e.readable?e.once("end",()=>{e.emit("close")}):e.emit("close")}),e}});var gae=U((lLt,hae)=>{"use strict";var{Transform:lnt,PassThrough:cnt}=Ie("stream"),ZM=Ie("zlib"),unt=pae();hae.exports=t=>{let e=(t.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(e))return t;let r=e==="br";if(r&&typeof ZM.createBrotliDecompress!="function")return t.destroy(new Error("Brotli is not supported on Node.js < 12")),t;let o=!0,a=new lnt({transform(A,p,h){o=!1,h(null,A)},flush(A){A()}}),n=new cnt({autoDestroy:!1,destroy(A,p){t.destroy(),p(A)}}),u=r?ZM.createBrotliDecompress():ZM.createUnzip();return u.once("error",A=>{if(o&&!t.readable){n.end();return}n.destroy(A)}),unt(t,n),t.pipe(a).pipe(u).pipe(n),n}});var e4=U((cLt,dae)=>{"use strict";var $M=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){if(this.cache.set(e,r),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction=="function")for(let[o,a]of this.oldCache.entries())this.onEviction(o,a);this.oldCache=this.cache,this.cache=new Map}}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||e++;return Math.min(this._size+e,this.maxSize)}};dae.exports=$M});var r4=U((uLt,Cae)=>{"use strict";var Ant=Ie("events"),fnt=Ie("tls"),pnt=Ie("http2"),hnt=e4(),zo=Symbol("currentStreamsCount"),mae=Symbol("request"),Vl=Symbol("cachedOriginSet"),yE=Symbol("gracefullyClosing"),gnt=["maxDeflateDynamicTableSize","maxSessionMemory","maxHeaderListPairs","maxOutstandingPings","maxReservedRemoteStreams","maxSendHeaderBlockLength","paddingStrategy","localAddress","path","rejectUnauthorized","minDHSize","ca","cert","clientCertEngine","ciphers","key","pfx","servername","minVersion","maxVersion","secureProtocol","crl","honorCipherOrder","ecdhCurve","dhparam","secureOptions","sessionIdContext"],dnt=(t,e,r)=>{let o=0,a=t.length;for(;o<a;){let n=o+a>>>1;r(t[n],e)?o=n+1:a=n}return o},mnt=(t,e)=>t.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,t4=(t,e)=>{for(let r of t)r[Vl].length<e[Vl].length&&r[Vl].every(o=>e[Vl].includes(o))&&r[zo]+e[zo]<=e.remoteSettings.maxConcurrentStreams&&Eae(r)},ynt=(t,e)=>{for(let r of t)e[Vl].length<r[Vl].length&&e[Vl].every(o=>r[Vl].includes(o))&&e[zo]+r[zo]<=r.remoteSettings.maxConcurrentStreams&&Eae(e)},yae=({agent:t,isFree:e})=>{let r={};for(let o in t.sessions){let n=t.sessions[o].filter(u=>{let A=u[nA.kCurrentStreamsCount]<u.remoteSettings.maxConcurrentStreams;return e?A:!A});n.length!==0&&(r[o]=n)}return r},Eae=t=>{t[yE]=!0,t[zo]===0&&t.close()},nA=class extends Ant{constructor({timeout:e=6e4,maxSessions:r=1/0,maxFreeSessions:o=10,maxCachedTlsSessions:a=100}={}){super(),this.sessions={},this.queue={},this.timeout=e,this.maxSessions=r,this.maxFreeSessions=o,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new hnt({maxSize:a})}static normalizeOrigin(e,r){return typeof e=="string"&&(e=new URL(e)),r&&e.hostname!==r&&(e.hostname=r),e.origin}normalizeOptions(e){let r="";if(e)for(let o of gnt)e[o]&&(r+=`:${e[o]}`);return r}_tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e]))return;let o=this.queue[e][r];this._sessionsCount<this.maxSessions&&!o.completed&&(o.completed=!0,o())}getSession(e,r,o){return new Promise((a,n)=>{Array.isArray(o)?(o=[...o],a()):o=[{resolve:a,reject:n}];let u=this.normalizeOptions(r),A=nA.normalizeOrigin(e,r&&r.servername);if(A===void 0){for(let{reject:C}of o)C(new TypeError("The `origin` argument needs to be a string or an URL object"));return}if(u in this.sessions){let C=this.sessions[u],w=-1,v=-1,b;for(let E of C){let R=E.remoteSettings.maxConcurrentStreams;if(R<w)break;if(E[Vl].includes(A)){let L=E[zo];if(L>=R||E[yE]||E.destroyed)continue;b||(w=R),L>v&&(b=E,v=L)}}if(b){if(o.length!==1){for(let{reject:E}of o){let R=new Error(`Expected the length of listeners to be 1, got ${o.length}. | 136 | `,w.message,w.stack);var v=new Error("tunneling socket could not be established, cause="+w.message);v.code="ECONNRESET",e.request.emit("error",v),o.removeSocket(a)}};Rf.prototype.removeSocket=function(e){var r=this.sockets.indexOf(e);if(r!==-1){this.sockets.splice(r,1);var o=this.requests.shift();o&&this.createSocket(o,function(a){o.request.onSocket(a)})}};function Boe(t,e){var r=this;Rf.prototype.createSocket.call(r,t,function(o){var a=t.request.getHeader("host"),n=RM({},r.options,{socket:o,servername:a?a.replace(/:.*$/,""):t.host}),u=ort.connect(0,n);r.sockets[r.sockets.indexOf(o)]=u,e(u)})}function voe(t,e,r){return typeof t=="string"?{host:t,port:e,localAddress:r}:t}function RM(t){for(var e=1,r=arguments.length;e<r;++e){var o=arguments[e];if(typeof o=="object")for(var a=Object.keys(o),n=0,u=a.length;n<u;++n){var A=a[n];o[A]!==void 0&&(t[A]=o[A])}}return t}var o0;process.env.NODE_DEBUG&&/\btunnel\b/.test(process.env.NODE_DEBUG)?o0=function(){var t=Array.prototype.slice.call(arguments);typeof t[0]=="string"?t[0]="TUNNEL: "+t[0]:t.unshift("TUNNEL:"),console.error.apply(console,t)}:o0=function(){};yE.debug=o0});var Poe=U((iLt,Soe)=>{Soe.exports=Doe()});var Nf=U((Tf,jP)=>{"use strict";Object.defineProperty(Tf,"__esModule",{value:!0});var xoe=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];function prt(t){return xoe.includes(t)}var hrt=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","FormData","URLSearchParams","HTMLElement",...xoe];function grt(t){return hrt.includes(t)}var drt=["null","undefined","string","number","bigint","boolean","symbol"];function mrt(t){return drt.includes(t)}function EE(t){return e=>typeof e===t}var{toString:boe}=Object.prototype,i1=t=>{let e=boe.call(t).slice(8,-1);if(/HTML\w+Element/.test(e)&&Fe.domElement(t))return"HTMLElement";if(grt(e))return e},Jn=t=>e=>i1(e)===t;function Fe(t){if(t===null)return"null";switch(typeof t){case"undefined":return"undefined";case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"function":return"Function";case"bigint":return"bigint";case"symbol":return"symbol";default:}if(Fe.observable(t))return"Observable";if(Fe.array(t))return"Array";if(Fe.buffer(t))return"Buffer";let e=i1(t);if(e)return e;if(t instanceof String||t instanceof Boolean||t instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}Fe.undefined=EE("undefined");Fe.string=EE("string");var yrt=EE("number");Fe.number=t=>yrt(t)&&!Fe.nan(t);Fe.bigint=EE("bigint");Fe.function_=EE("function");Fe.null_=t=>t===null;Fe.class_=t=>Fe.function_(t)&&t.toString().startsWith("class ");Fe.boolean=t=>t===!0||t===!1;Fe.symbol=EE("symbol");Fe.numericString=t=>Fe.string(t)&&!Fe.emptyStringOrWhitespace(t)&&!Number.isNaN(Number(t));Fe.array=(t,e)=>Array.isArray(t)?Fe.function_(e)?t.every(e):!0:!1;Fe.buffer=t=>{var e,r,o,a;return(a=(o=(r=(e=t)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.isBuffer)===null||o===void 0?void 0:o.call(r,t))!==null&&a!==void 0?a:!1};Fe.nullOrUndefined=t=>Fe.null_(t)||Fe.undefined(t);Fe.object=t=>!Fe.null_(t)&&(typeof t=="object"||Fe.function_(t));Fe.iterable=t=>{var e;return Fe.function_((e=t)===null||e===void 0?void 0:e[Symbol.iterator])};Fe.asyncIterable=t=>{var e;return Fe.function_((e=t)===null||e===void 0?void 0:e[Symbol.asyncIterator])};Fe.generator=t=>Fe.iterable(t)&&Fe.function_(t.next)&&Fe.function_(t.throw);Fe.asyncGenerator=t=>Fe.asyncIterable(t)&&Fe.function_(t.next)&&Fe.function_(t.throw);Fe.nativePromise=t=>Jn("Promise")(t);var Ert=t=>{var e,r;return Fe.function_((e=t)===null||e===void 0?void 0:e.then)&&Fe.function_((r=t)===null||r===void 0?void 0:r.catch)};Fe.promise=t=>Fe.nativePromise(t)||Ert(t);Fe.generatorFunction=Jn("GeneratorFunction");Fe.asyncGeneratorFunction=t=>i1(t)==="AsyncGeneratorFunction";Fe.asyncFunction=t=>i1(t)==="AsyncFunction";Fe.boundFunction=t=>Fe.function_(t)&&!t.hasOwnProperty("prototype");Fe.regExp=Jn("RegExp");Fe.date=Jn("Date");Fe.error=Jn("Error");Fe.map=t=>Jn("Map")(t);Fe.set=t=>Jn("Set")(t);Fe.weakMap=t=>Jn("WeakMap")(t);Fe.weakSet=t=>Jn("WeakSet")(t);Fe.int8Array=Jn("Int8Array");Fe.uint8Array=Jn("Uint8Array");Fe.uint8ClampedArray=Jn("Uint8ClampedArray");Fe.int16Array=Jn("Int16Array");Fe.uint16Array=Jn("Uint16Array");Fe.int32Array=Jn("Int32Array");Fe.uint32Array=Jn("Uint32Array");Fe.float32Array=Jn("Float32Array");Fe.float64Array=Jn("Float64Array");Fe.bigInt64Array=Jn("BigInt64Array");Fe.bigUint64Array=Jn("BigUint64Array");Fe.arrayBuffer=Jn("ArrayBuffer");Fe.sharedArrayBuffer=Jn("SharedArrayBuffer");Fe.dataView=Jn("DataView");Fe.directInstanceOf=(t,e)=>Object.getPrototypeOf(t)===e.prototype;Fe.urlInstance=t=>Jn("URL")(t);Fe.urlString=t=>{if(!Fe.string(t))return!1;try{return new URL(t),!0}catch{return!1}};Fe.truthy=t=>Boolean(t);Fe.falsy=t=>!t;Fe.nan=t=>Number.isNaN(t);Fe.primitive=t=>Fe.null_(t)||mrt(typeof t);Fe.integer=t=>Number.isInteger(t);Fe.safeInteger=t=>Number.isSafeInteger(t);Fe.plainObject=t=>{if(boe.call(t)!=="[object Object]")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};Fe.typedArray=t=>prt(i1(t));var Crt=t=>Fe.safeInteger(t)&&t>=0;Fe.arrayLike=t=>!Fe.nullOrUndefined(t)&&!Fe.function_(t)&&Crt(t.length);Fe.inRange=(t,e)=>{if(Fe.number(e))return t>=Math.min(0,e)&&t<=Math.max(e,0);if(Fe.array(e)&&e.length===2)return t>=Math.min(...e)&&t<=Math.max(...e);throw new TypeError(`Invalid range: ${JSON.stringify(e)}`)};var Irt=1,wrt=["innerHTML","ownerDocument","style","attributes","nodeValue"];Fe.domElement=t=>Fe.object(t)&&t.nodeType===Irt&&Fe.string(t.nodeName)&&!Fe.plainObject(t)&&wrt.every(e=>e in t);Fe.observable=t=>{var e,r,o,a;return t?t===((r=(e=t)[Symbol.observable])===null||r===void 0?void 0:r.call(e))||t===((a=(o=t)["@@observable"])===null||a===void 0?void 0:a.call(o)):!1};Fe.nodeStream=t=>Fe.object(t)&&Fe.function_(t.pipe)&&!Fe.observable(t);Fe.infinite=t=>t===1/0||t===-1/0;var Qoe=t=>e=>Fe.integer(e)&&Math.abs(e%2)===t;Fe.evenInteger=Qoe(0);Fe.oddInteger=Qoe(1);Fe.emptyArray=t=>Fe.array(t)&&t.length===0;Fe.nonEmptyArray=t=>Fe.array(t)&&t.length>0;Fe.emptyString=t=>Fe.string(t)&&t.length===0;Fe.nonEmptyString=t=>Fe.string(t)&&t.length>0;var Brt=t=>Fe.string(t)&&!/\S/.test(t);Fe.emptyStringOrWhitespace=t=>Fe.emptyString(t)||Brt(t);Fe.emptyObject=t=>Fe.object(t)&&!Fe.map(t)&&!Fe.set(t)&&Object.keys(t).length===0;Fe.nonEmptyObject=t=>Fe.object(t)&&!Fe.map(t)&&!Fe.set(t)&&Object.keys(t).length>0;Fe.emptySet=t=>Fe.set(t)&&t.size===0;Fe.nonEmptySet=t=>Fe.set(t)&&t.size>0;Fe.emptyMap=t=>Fe.map(t)&&t.size===0;Fe.nonEmptyMap=t=>Fe.map(t)&&t.size>0;Fe.propertyKey=t=>Fe.any([Fe.string,Fe.number,Fe.symbol],t);Fe.formData=t=>Jn("FormData")(t);Fe.urlSearchParams=t=>Jn("URLSearchParams")(t);var koe=(t,e,r)=>{if(!Fe.function_(e))throw new TypeError(`Invalid predicate: ${JSON.stringify(e)}`);if(r.length===0)throw new TypeError("Invalid number of values");return t.call(r,e)};Fe.any=(t,...e)=>(Fe.array(t)?t:[t]).some(o=>koe(Array.prototype.some,o,e));Fe.all=(t,...e)=>koe(Array.prototype.every,t,e);var Mt=(t,e,r,o={})=>{if(!t){let{multipleValues:a}=o,n=a?`received values of types ${[...new Set(r.map(u=>`\`${Fe(u)}\``))].join(", ")}`:`received value of type \`${Fe(r)}\``;throw new TypeError(`Expected value which is \`${e}\`, ${n}.`)}};Tf.assert={undefined:t=>Mt(Fe.undefined(t),"undefined",t),string:t=>Mt(Fe.string(t),"string",t),number:t=>Mt(Fe.number(t),"number",t),bigint:t=>Mt(Fe.bigint(t),"bigint",t),function_:t=>Mt(Fe.function_(t),"Function",t),null_:t=>Mt(Fe.null_(t),"null",t),class_:t=>Mt(Fe.class_(t),"Class",t),boolean:t=>Mt(Fe.boolean(t),"boolean",t),symbol:t=>Mt(Fe.symbol(t),"symbol",t),numericString:t=>Mt(Fe.numericString(t),"string with a number",t),array:(t,e)=>{Mt(Fe.array(t),"Array",t),e&&t.forEach(e)},buffer:t=>Mt(Fe.buffer(t),"Buffer",t),nullOrUndefined:t=>Mt(Fe.nullOrUndefined(t),"null or undefined",t),object:t=>Mt(Fe.object(t),"Object",t),iterable:t=>Mt(Fe.iterable(t),"Iterable",t),asyncIterable:t=>Mt(Fe.asyncIterable(t),"AsyncIterable",t),generator:t=>Mt(Fe.generator(t),"Generator",t),asyncGenerator:t=>Mt(Fe.asyncGenerator(t),"AsyncGenerator",t),nativePromise:t=>Mt(Fe.nativePromise(t),"native Promise",t),promise:t=>Mt(Fe.promise(t),"Promise",t),generatorFunction:t=>Mt(Fe.generatorFunction(t),"GeneratorFunction",t),asyncGeneratorFunction:t=>Mt(Fe.asyncGeneratorFunction(t),"AsyncGeneratorFunction",t),asyncFunction:t=>Mt(Fe.asyncFunction(t),"AsyncFunction",t),boundFunction:t=>Mt(Fe.boundFunction(t),"Function",t),regExp:t=>Mt(Fe.regExp(t),"RegExp",t),date:t=>Mt(Fe.date(t),"Date",t),error:t=>Mt(Fe.error(t),"Error",t),map:t=>Mt(Fe.map(t),"Map",t),set:t=>Mt(Fe.set(t),"Set",t),weakMap:t=>Mt(Fe.weakMap(t),"WeakMap",t),weakSet:t=>Mt(Fe.weakSet(t),"WeakSet",t),int8Array:t=>Mt(Fe.int8Array(t),"Int8Array",t),uint8Array:t=>Mt(Fe.uint8Array(t),"Uint8Array",t),uint8ClampedArray:t=>Mt(Fe.uint8ClampedArray(t),"Uint8ClampedArray",t),int16Array:t=>Mt(Fe.int16Array(t),"Int16Array",t),uint16Array:t=>Mt(Fe.uint16Array(t),"Uint16Array",t),int32Array:t=>Mt(Fe.int32Array(t),"Int32Array",t),uint32Array:t=>Mt(Fe.uint32Array(t),"Uint32Array",t),float32Array:t=>Mt(Fe.float32Array(t),"Float32Array",t),float64Array:t=>Mt(Fe.float64Array(t),"Float64Array",t),bigInt64Array:t=>Mt(Fe.bigInt64Array(t),"BigInt64Array",t),bigUint64Array:t=>Mt(Fe.bigUint64Array(t),"BigUint64Array",t),arrayBuffer:t=>Mt(Fe.arrayBuffer(t),"ArrayBuffer",t),sharedArrayBuffer:t=>Mt(Fe.sharedArrayBuffer(t),"SharedArrayBuffer",t),dataView:t=>Mt(Fe.dataView(t),"DataView",t),urlInstance:t=>Mt(Fe.urlInstance(t),"URL",t),urlString:t=>Mt(Fe.urlString(t),"string with a URL",t),truthy:t=>Mt(Fe.truthy(t),"truthy",t),falsy:t=>Mt(Fe.falsy(t),"falsy",t),nan:t=>Mt(Fe.nan(t),"NaN",t),primitive:t=>Mt(Fe.primitive(t),"primitive",t),integer:t=>Mt(Fe.integer(t),"integer",t),safeInteger:t=>Mt(Fe.safeInteger(t),"integer",t),plainObject:t=>Mt(Fe.plainObject(t),"plain object",t),typedArray:t=>Mt(Fe.typedArray(t),"TypedArray",t),arrayLike:t=>Mt(Fe.arrayLike(t),"array-like",t),domElement:t=>Mt(Fe.domElement(t),"HTMLElement",t),observable:t=>Mt(Fe.observable(t),"Observable",t),nodeStream:t=>Mt(Fe.nodeStream(t),"Node.js Stream",t),infinite:t=>Mt(Fe.infinite(t),"infinite number",t),emptyArray:t=>Mt(Fe.emptyArray(t),"empty array",t),nonEmptyArray:t=>Mt(Fe.nonEmptyArray(t),"non-empty array",t),emptyString:t=>Mt(Fe.emptyString(t),"empty string",t),nonEmptyString:t=>Mt(Fe.nonEmptyString(t),"non-empty string",t),emptyStringOrWhitespace:t=>Mt(Fe.emptyStringOrWhitespace(t),"empty string or whitespace",t),emptyObject:t=>Mt(Fe.emptyObject(t),"empty object",t),nonEmptyObject:t=>Mt(Fe.nonEmptyObject(t),"non-empty object",t),emptySet:t=>Mt(Fe.emptySet(t),"empty set",t),nonEmptySet:t=>Mt(Fe.nonEmptySet(t),"non-empty set",t),emptyMap:t=>Mt(Fe.emptyMap(t),"empty map",t),nonEmptyMap:t=>Mt(Fe.nonEmptyMap(t),"non-empty map",t),propertyKey:t=>Mt(Fe.propertyKey(t),"PropertyKey",t),formData:t=>Mt(Fe.formData(t),"FormData",t),urlSearchParams:t=>Mt(Fe.urlSearchParams(t),"URLSearchParams",t),evenInteger:t=>Mt(Fe.evenInteger(t),"even integer",t),oddInteger:t=>Mt(Fe.oddInteger(t),"odd integer",t),directInstanceOf:(t,e)=>Mt(Fe.directInstanceOf(t,e),"T",t),inRange:(t,e)=>Mt(Fe.inRange(t,e),"in range",t),any:(t,...e)=>Mt(Fe.any(t,...e),"predicate returns truthy for any value",e,{multipleValues:!0}),all:(t,...e)=>Mt(Fe.all(t,...e),"predicate returns truthy for all values",e,{multipleValues:!0})};Object.defineProperties(Fe,{class:{value:Fe.class_},function:{value:Fe.function_},null:{value:Fe.null_}});Object.defineProperties(Tf.assert,{class:{value:Tf.assert.class_},function:{value:Tf.assert.function_},null:{value:Tf.assert.null_}});Tf.default=Fe;jP.exports=Fe;jP.exports.default=Fe;jP.exports.assert=Tf.assert});var Foe=U((sLt,TM)=>{"use strict";var GP=class extends Error{constructor(e){super(e||"Promise was canceled"),this.name="CancelError"}get isCanceled(){return!0}},CE=class{static fn(e){return(...r)=>new CE((o,a,n)=>{r.push(n),e(...r).then(o,a)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,o)=>{this._reject=o;let a=A=>{this._isPending=!1,r(A)},n=A=>{this._isPending=!1,o(A)},u=A=>{if(!this._isPending)throw new Error("The `onCancel` handler was attached after the promise settled.");this._cancelHandlers.push(A)};return Object.defineProperties(u,{shouldReject:{get:()=>this._rejectOnCancel,set:A=>{this._rejectOnCancel=A}}}),e(a,n,u)})}then(e,r){return this._promise.then(e,r)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let r of this._cancelHandlers)r()}catch(r){this._reject(r)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new GP(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(CE.prototype,Promise.prototype);TM.exports=CE;TM.exports.CancelError=GP});var Roe=U((LM,OM)=>{"use strict";Object.defineProperty(LM,"__esModule",{value:!0});var vrt=Ie("tls"),NM=(t,e)=>{let r;typeof e=="function"?r={connect:e}:r=e;let o=typeof r.connect=="function",a=typeof r.secureConnect=="function",n=typeof r.close=="function",u=()=>{o&&r.connect(),t instanceof vrt.TLSSocket&&a&&(t.authorized?r.secureConnect():t.authorizationError||t.once("secureConnect",r.secureConnect)),n&&t.once("close",r.close)};t.writable&&!t.connecting?u():t.connecting?t.once("connect",u):t.destroyed&&n&&r.close(t._hadError)};LM.default=NM;OM.exports=NM;OM.exports.default=NM});var Toe=U((UM,_M)=>{"use strict";Object.defineProperty(UM,"__esModule",{value:!0});var Drt=Roe(),Srt=Number(process.versions.node.split(".")[0]),MM=t=>{let e={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};t.timings=e;let r=u=>{let A=u.emit.bind(u);u.emit=(p,...h)=>(p==="error"&&(e.error=Date.now(),e.phases.total=e.error-e.start,u.emit=A),A(p,...h))};r(t),t.prependOnceListener("abort",()=>{e.abort=Date.now(),(!e.response||Srt>=13)&&(e.phases.total=Date.now()-e.start)});let o=u=>{e.socket=Date.now(),e.phases.wait=e.socket-e.start;let A=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};u.prependOnceListener("lookup",A),Drt.default(u,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(u.removeListener("lookup",A),e.lookup=e.connect,e.phases.dns=e.lookup-e.socket),e.phases.tcp=e.connect-e.lookup},secureConnect:()=>{e.secureConnect=Date.now(),e.phases.tls=e.secureConnect-e.connect}})};t.socket?o(t.socket):t.prependOnceListener("socket",o);let a=()=>{var u;e.upload=Date.now(),e.phases.request=e.upload-(u=e.secureConnect,u??e.connect)};return(()=>typeof t.writableFinished=="boolean"?t.writableFinished:t.finished&&t.outputSize===0&&(!t.socket||t.socket.writableLength===0))()?a():t.prependOnceListener("finish",a),t.prependOnceListener("response",u=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,u.timings=e,r(u),u.prependOnceListener("end",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start})}),e};UM.default=MM;_M.exports=MM;_M.exports.default=MM});var Hoe=U((oLt,jM)=>{"use strict";var{V4MAPPED:Prt,ADDRCONFIG:xrt,ALL:_oe,promises:{Resolver:Noe},lookup:brt}=Ie("dns"),{promisify:HM}=Ie("util"),Qrt=Ie("os"),IE=Symbol("cacheableLookupCreateConnection"),qM=Symbol("cacheableLookupInstance"),Loe=Symbol("expires"),krt=typeof _oe=="number",Ooe=t=>{if(!(t&&typeof t.createConnection=="function"))throw new Error("Expected an Agent instance as the first argument")},Frt=t=>{for(let e of t)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},Moe=()=>{let t=!1,e=!1;for(let r of Object.values(Qrt.networkInterfaces()))for(let o of r)if(!o.internal&&(o.family==="IPv6"?e=!0:t=!0,t&&e))return{has4:t,has6:e};return{has4:t,has6:e}},Rrt=t=>Symbol.iterator in t,Uoe={ttl:!0},Trt={all:!0},WP=class{constructor({cache:e=new Map,maxTtl:r=1/0,fallbackDuration:o=3600,errorTtl:a=.15,resolver:n=new Noe,lookup:u=brt}={}){if(this.maxTtl=r,this.errorTtl=a,this._cache=e,this._resolver=n,this._dnsLookup=HM(u),this._resolver instanceof Noe?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=HM(this._resolver.resolve4.bind(this._resolver)),this._resolve6=HM(this._resolver.resolve6.bind(this._resolver))),this._iface=Moe(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,o<1)this._fallback=!1;else{this._fallback=!0;let A=setInterval(()=>{this._hostnamesToFallback.clear()},o*1e3);A.unref&&A.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(e){this.clear(),this._resolver.setServers(e)}get servers(){return this._resolver.getServers()}lookup(e,r,o){if(typeof r=="function"?(o=r,r={}):typeof r=="number"&&(r={family:r}),!o)throw new Error("Callback must be a function.");this.lookupAsync(e,r).then(a=>{r.all?o(null,a):o(null,a.address,a.family,a.expires,a.ttl)},o)}async lookupAsync(e,r={}){typeof r=="number"&&(r={family:r});let o=await this.query(e);if(r.family===6){let a=o.filter(n=>n.family===6);r.hints&Prt&&(krt&&r.hints&_oe||a.length===0)?Frt(o):o=a}else r.family===4&&(o=o.filter(a=>a.family===4));if(r.hints&xrt){let{_iface:a}=this;o=o.filter(n=>n.family===6?a.has6:a.has4)}if(o.length===0){let a=new Error(`cacheableLookup ENOTFOUND ${e}`);throw a.code="ENOTFOUND",a.hostname=e,a}return r.all?o:o[0]}async query(e){let r=await this._cache.get(e);if(!r){let o=this._pending[e];if(o)r=await o;else{let a=this.queryAndCache(e);this._pending[e]=a,r=await a}}return r=r.map(o=>({...o})),r}async _resolve(e){let r=async h=>{try{return await h}catch(C){if(C.code==="ENODATA"||C.code==="ENOTFOUND")return[];throw C}},[o,a]=await Promise.all([this._resolve4(e,Uoe),this._resolve6(e,Uoe)].map(h=>r(h))),n=0,u=0,A=0,p=Date.now();for(let h of o)h.family=4,h.expires=p+h.ttl*1e3,n=Math.max(n,h.ttl);for(let h of a)h.family=6,h.expires=p+h.ttl*1e3,u=Math.max(u,h.ttl);return o.length>0?a.length>0?A=Math.min(n,u):A=n:A=u,{entries:[...o,...a],cacheTtl:A}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch{return{entries:[],cacheTtl:0}}}async _set(e,r,o){if(this.maxTtl>0&&o>0){o=Math.min(o,this.maxTtl)*1e3,r[Loe]=Date.now()+o;try{await this._cache.set(e,r,o)}catch(a){this.lookupAsync=async()=>{let n=new Error("Cache Error. Please recreate the CacheableLookup instance.");throw n.cause=a,n}}Rrt(this._cache)&&this._tick(o)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,Trt);try{let r=await this._resolve(e);r.entries.length===0&&this._fallback&&(r=await this._lookup(e),r.entries.length!==0&&this._hostnamesToFallback.add(e));let o=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(e,r.entries,o),delete this._pending[e],r.entries}catch(r){throw delete this._pending[e],r}}_tick(e){let r=this._nextRemovalTime;(!r||e<r)&&(clearTimeout(this._removalTimeout),this._nextRemovalTime=e,this._removalTimeout=setTimeout(()=>{this._nextRemovalTime=!1;let o=1/0,a=Date.now();for(let[n,u]of this._cache){let A=u[Loe];a>=A?this._cache.delete(n):A<o&&(o=A)}o!==1/0&&this._tick(o-a)},e),this._removalTimeout.unref&&this._removalTimeout.unref())}install(e){if(Ooe(e),IE in e)throw new Error("CacheableLookup has been already installed");e[IE]=e.createConnection,e[qM]=this,e.createConnection=(r,o)=>("lookup"in r||(r.lookup=this.lookup),e[IE](r,o))}uninstall(e){if(Ooe(e),e[IE]){if(e[qM]!==this)throw new Error("The agent is not owned by this CacheableLookup instance");e.createConnection=e[IE],delete e[IE],delete e[qM]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=Moe(),(e.has4&&!this._iface.has4||e.has6&&!this._iface.has6)&&this._cache.clear()}clear(e){if(e){this._cache.delete(e);return}this._cache.clear()}};jM.exports=WP;jM.exports.default=WP});var Goe=U((aLt,GM)=>{"use strict";var Nrt=typeof URL>"u"?Ie("url").URL:URL,Lrt="text/plain",Ort="us-ascii",qoe=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),Mrt=(t,{stripHash:e})=>{let r=t.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${t}`);let o=r[1].split(";"),a=r[2],n=e?"":r[3],u=!1;o[o.length-1]==="base64"&&(o.pop(),u=!0);let A=(o.shift()||"").toLowerCase(),h=[...o.map(C=>{let[w,v=""]=C.split("=").map(b=>b.trim());return w==="charset"&&(v=v.toLowerCase(),v===Ort)?"":`${w}${v?`=${v}`:""}`}).filter(Boolean)];return u&&h.push("base64"),(h.length!==0||A&&A!==Lrt)&&h.unshift(A),`data:${h.join(";")},${u?a.trim():a}${n?`#${n}`:""}`},joe=(t,e)=>{if(e={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},Reflect.has(e,"normalizeHttps"))throw new Error("options.normalizeHttps is renamed to options.forceHttp");if(Reflect.has(e,"normalizeHttp"))throw new Error("options.normalizeHttp is renamed to options.forceHttps");if(Reflect.has(e,"stripFragment"))throw new Error("options.stripFragment is renamed to options.stripHash");if(t=t.trim(),/^data:/i.test(t))return Mrt(t,e);let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let a=new Nrt(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&a.protocol==="https:"&&(a.protocol="http:"),e.forceHttps&&a.protocol==="http:"&&(a.protocol="https:"),e.stripAuthentication&&(a.username="",a.password=""),e.stripHash&&(a.hash=""),a.pathname&&(a.pathname=a.pathname.replace(/((?!:).|^)\/{2,}/g,(n,u)=>/^(?!\/)/g.test(u)?`${u}/`:"/")),a.pathname&&(a.pathname=decodeURI(a.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let n=a.pathname.split("/"),u=n[n.length-1];qoe(u,e.removeDirectoryIndex)&&(n=n.slice(0,n.length-1),a.pathname=n.slice(1).join("/")+"/")}if(a.hostname&&(a.hostname=a.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let n of[...a.searchParams.keys()])qoe(n,e.removeQueryParameters)&&a.searchParams.delete(n);return e.sortQueryParameters&&a.searchParams.sort(),e.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\/$/,"")),t=a.toString(),(e.removeTrailingSlash||a.pathname==="/")&&a.hash===""&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t};GM.exports=joe;GM.exports.default=joe});var Koe=U((lLt,Yoe)=>{Yoe.exports=Woe;function Woe(t,e){if(t&&e)return Woe(t)(e);if(typeof t!="function")throw new TypeError("need wrapper function");return Object.keys(t).forEach(function(o){r[o]=t[o]}),r;function r(){for(var o=new Array(arguments.length),a=0;a<o.length;a++)o[a]=arguments[a];var n=t.apply(this,o),u=o[o.length-1];return typeof n=="function"&&n!==u&&Object.keys(u).forEach(function(A){n[A]=u[A]}),n}}});var YM=U((cLt,WM)=>{var Voe=Koe();WM.exports=Voe(YP);WM.exports.strict=Voe(Joe);YP.proto=YP(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return YP(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return Joe(this)},configurable:!0})});function YP(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function Joe(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||"Function wrapped with `once`";return e.onceError=r+" shouldn't be called more than once",e.called=!1,e}});var KM=U((uLt,Xoe)=>{var Urt=YM(),_rt=function(){},Hrt=function(t){return t.setHeader&&typeof t.abort=="function"},qrt=function(t){return t.stdio&&Array.isArray(t.stdio)&&t.stdio.length===3},zoe=function(t,e,r){if(typeof e=="function")return zoe(t,null,e);e||(e={}),r=Urt(r||_rt);var o=t._writableState,a=t._readableState,n=e.readable||e.readable!==!1&&t.readable,u=e.writable||e.writable!==!1&&t.writable,A=function(){t.writable||p()},p=function(){u=!1,n||r.call(t)},h=function(){n=!1,u||r.call(t)},C=function(E){r.call(t,E?new Error("exited with error code: "+E):null)},w=function(E){r.call(t,E)},v=function(){if(n&&!(a&&a.ended))return r.call(t,new Error("premature close"));if(u&&!(o&&o.ended))return r.call(t,new Error("premature close"))},b=function(){t.req.on("finish",p)};return Hrt(t)?(t.on("complete",p),t.on("abort",v),t.req?b():t.on("request",b)):u&&!o&&(t.on("end",A),t.on("close",A)),qrt(t)&&t.on("exit",C),t.on("end",h),t.on("finish",p),e.error!==!1&&t.on("error",w),t.on("close",v),function(){t.removeListener("complete",p),t.removeListener("abort",v),t.removeListener("request",b),t.req&&t.req.removeListener("finish",p),t.removeListener("end",A),t.removeListener("close",A),t.removeListener("finish",p),t.removeListener("exit",C),t.removeListener("end",h),t.removeListener("error",w),t.removeListener("close",v)}};Xoe.exports=zoe});var eae=U((ALt,$oe)=>{var jrt=YM(),Grt=KM(),VM=Ie("fs"),s1=function(){},Wrt=/^v?\.0/.test(process.version),KP=function(t){return typeof t=="function"},Yrt=function(t){return!Wrt||!VM?!1:(t instanceof(VM.ReadStream||s1)||t instanceof(VM.WriteStream||s1))&&KP(t.close)},Krt=function(t){return t.setHeader&&KP(t.abort)},Vrt=function(t,e,r,o){o=jrt(o);var a=!1;t.on("close",function(){a=!0}),Grt(t,{readable:e,writable:r},function(u){if(u)return o(u);a=!0,o()});var n=!1;return function(u){if(!a&&!n){if(n=!0,Yrt(t))return t.close(s1);if(Krt(t))return t.abort();if(KP(t.destroy))return t.destroy();o(u||new Error("stream was destroyed"))}}},Zoe=function(t){t()},Jrt=function(t,e){return t.pipe(e)},zrt=function(){var t=Array.prototype.slice.call(arguments),e=KP(t[t.length-1]||s1)&&t.pop()||s1;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error("pump requires two streams per minimum");var r,o=t.map(function(a,n){var u=n<t.length-1,A=n>0;return Vrt(a,u,A,function(p){r||(r=p),p&&o.forEach(Zoe),!u&&(o.forEach(Zoe),e(r))})});return t.reduce(Jrt)};$oe.exports=zrt});var rae=U((fLt,tae)=>{"use strict";var{PassThrough:Xrt}=Ie("stream");tae.exports=t=>{t={...t};let{array:e}=t,{encoding:r}=t,o=r==="buffer",a=!1;e?a=!(r||o):r=r||"utf8",o&&(r=null);let n=new Xrt({objectMode:a});r&&n.setEncoding(r);let u=0,A=[];return n.on("data",p=>{A.push(p),a?u=A.length:u+=p.length}),n.getBufferedValue=()=>e?A:o?Buffer.concat(A,u):A.join(""),n.getBufferedLength=()=>u,n}});var nae=U((pLt,wE)=>{"use strict";var Zrt=eae(),$rt=rae(),VP=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function JP(t,e){if(!t)return Promise.reject(new Error("Expected a stream"));e={maxBuffer:1/0,...e};let{maxBuffer:r}=e,o;return await new Promise((a,n)=>{let u=A=>{A&&(A.bufferedData=o.getBufferedValue()),n(A)};o=Zrt(t,$rt(e),A=>{if(A){u(A);return}a()}),o.on("data",()=>{o.getBufferedLength()>r&&u(new VP)})}),o.getBufferedValue()}wE.exports=JP;wE.exports.default=JP;wE.exports.buffer=(t,e)=>JP(t,{...e,encoding:"buffer"});wE.exports.array=(t,e)=>JP(t,{...e,array:!0});wE.exports.MaxBufferError=VP});var sae=U((gLt,iae)=>{"use strict";var ent=new Set([200,203,204,206,300,301,404,405,410,414,501]),tnt=new Set([200,203,204,300,301,302,303,307,308,404,405,410,414,501]),rnt=new Set([500,502,503,504]),nnt={date:!0,connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},int={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function bd(t){let e=parseInt(t,10);return isFinite(e)?e:0}function snt(t){return t?rnt.has(t.status):!0}function JM(t){let e={};if(!t)return e;let r=t.trim().split(/\s*,\s*/);for(let o of r){let[a,n]=o.split(/\s*=\s*/,2);e[a]=n===void 0?!0:n.replace(/^"|"$/g,"")}return e}function ont(t){let e=[];for(let r in t){let o=t[r];e.push(o===!0?r:r+"="+o)}if(!!e.length)return e.join(", ")}iae.exports=class{constructor(e,r,{shared:o,cacheHeuristic:a,immutableMinTimeToLive:n,ignoreCargoCult:u,_fromObject:A}={}){if(A){this._fromObject(A);return}if(!r||!r.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=o!==!1,this._cacheHeuristic=a!==void 0?a:.1,this._immutableMinTtl=n!==void 0?n:24*3600*1e3,this._status="status"in r?r.status:200,this._resHeaders=r.headers,this._rescc=JM(r.headers["cache-control"]),this._method="method"in e?e.method:"GET",this._url=e.url,this._host=e.headers.host,this._noAuthorization=!e.headers.authorization,this._reqHeaders=r.headers.vary?e.headers:null,this._reqcc=JM(e.headers["cache-control"]),u&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":ont(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),r.headers["cache-control"]==null&&/no-cache/.test(r.headers.pragma)&&(this._rescc["no-cache"]=!0)}now(){return Date.now()}storable(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||this._method==="HEAD"||this._method==="POST"&&this._hasExplicitExpiration())&&tnt.has(this._status)&&!this._rescc["no-store"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc["max-age"]||this._isShared&&this._rescc["s-maxage"]||this._rescc.public||ent.has(this._status)))}_hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires}_assertRequestHasHeaders(e){if(!e||!e.headers)throw Error("Request headers missing")}satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);let r=JM(e.headers["cache-control"]);return r["no-cache"]||/no-cache/.test(e.headers.pragma)||r["max-age"]&&this.age()>r["max-age"]||r["min-fresh"]&&this.timeToLive()<1e3*r["min-fresh"]||this.stale()&&!(r["max-stale"]&&!this._rescc["must-revalidate"]&&(r["max-stale"]===!0||r["max-stale"]>this.age()-this.maxAge()))?!1:this._requestMatches(e,!1)}_requestMatches(e,r){return(!this._url||this._url===e.url)&&this._host===e.headers.host&&(!e.method||this._method===e.method||r&&e.method==="HEAD")&&this._varyMatches(e)}_allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]}_varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary==="*")return!1;let r=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/);for(let o of r)if(e.headers[o]!==this._reqHeaders[o])return!1;return!0}_copyWithoutHopByHopHeaders(e){let r={};for(let o in e)nnt[o]||(r[o]=e[o]);if(e.connection){let o=e.connection.trim().split(/\s*,\s*/);for(let a of o)delete r[a]}if(r.warning){let o=r.warning.split(/,/).filter(a=>!/^\s*1[0-9][0-9]/.test(a));o.length?r.warning=o.join(",").trim():delete r.warning}return r}responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeaders),r=this.age();return r>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(e.warning=(e.warning?`${e.warning}, `:"")+'113 - "rfc7234 5.5.4"'),e.age=`${Math.round(r)}`,e.date=new Date(this.now()).toUTCString(),e}date(){let e=Date.parse(this._resHeaders.date);return isFinite(e)?e:this._responseTime}age(){let e=this._ageValue(),r=(this.now()-this._responseTime)/1e3;return e+r}_ageValue(){return bd(this._resHeaders.age)}maxAge(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary==="*")return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return bd(this._rescc["s-maxage"])}if(this._rescc["max-age"])return bd(this._rescc["max-age"]);let e=this._rescc.immutable?this._immutableMinTtl:0,r=this.date();if(this._resHeaders.expires){let o=Date.parse(this._resHeaders.expires);return Number.isNaN(o)||o<r?0:Math.max(e,(o-r)/1e3)}if(this._resHeaders["last-modified"]){let o=Date.parse(this._resHeaders["last-modified"]);if(isFinite(o)&&r>o)return Math.max(e,(r-o)/1e3*this._cacheHeuristic)}return e}timeToLive(){let e=this.maxAge()-this.age(),r=e+bd(this._rescc["stale-if-error"]),o=e+bd(this._rescc["stale-while-revalidate"]);return Math.max(0,e,r,o)*1e3}stale(){return this.maxAge()<=this.age()}_useStaleIfError(){return this.maxAge()+bd(this._rescc["stale-if-error"])>this.age()}useStaleWhileRevalidate(){return this.maxAge()+bd(this._rescc["stale-while-revalidate"])>this.age()}static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}_fromObject(e){if(this._responseTime)throw Error("Reinitialized");if(!e||e.v!==1)throw Error("Invalid serialization");this._responseTime=e.t,this._isShared=e.sh,this._cacheHeuristic=e.ch,this._immutableMinTtl=e.imm!==void 0?e.imm:24*3600*1e3,this._status=e.st,this._resHeaders=e.resh,this._rescc=e.rescc,this._method=e.m,this._url=e.u,this._host=e.h,this._noAuthorization=e.a,this._reqHeaders=e.reqh,this._reqcc=e.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(e){this._assertRequestHasHeaders(e);let r=this._copyWithoutHopByHopHeaders(e.headers);if(delete r["if-range"],!this._requestMatches(e,!0)||!this.storable())return delete r["if-none-match"],delete r["if-modified-since"],r;if(this._resHeaders.etag&&(r["if-none-match"]=r["if-none-match"]?`${r["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),r["accept-ranges"]||r["if-match"]||r["if-unmodified-since"]||this._method&&this._method!="GET"){if(delete r["if-modified-since"],r["if-none-match"]){let a=r["if-none-match"].split(/,/).filter(n=>!/^\s*W\//.test(n));a.length?r["if-none-match"]=a.join(",").trim():delete r["if-none-match"]}}else this._resHeaders["last-modified"]&&!r["if-modified-since"]&&(r["if-modified-since"]=this._resHeaders["last-modified"]);return r}revalidatedPolicy(e,r){if(this._assertRequestHasHeaders(e),this._useStaleIfError()&&snt(r))return{modified:!1,matches:!1,policy:this};if(!r||!r.headers)throw Error("Response headers missing");let o=!1;if(r.status!==void 0&&r.status!=304?o=!1:r.headers.etag&&!/^\s*W\//.test(r.headers.etag)?o=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?o=this._resHeaders.etag.replace(/^\s*W\//,"")===r.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?o=this._resHeaders["last-modified"]===r.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!r.headers.etag&&!r.headers["last-modified"]&&(o=!0),!o)return{policy:new this.constructor(e,r),modified:r.status!=304,matches:!1};let a={};for(let u in this._resHeaders)a[u]=u in r.headers&&!int[u]?r.headers[u]:this._resHeaders[u];let n=Object.assign({},r,{status:this._status,method:this._method,headers:a});return{policy:new this.constructor(e,n,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl}),modified:!1,matches:!0}}}});var zP=U((dLt,oae)=>{"use strict";oae.exports=t=>{let e={};for(let[r,o]of Object.entries(t))e[r.toLowerCase()]=o;return e}});var lae=U((mLt,aae)=>{"use strict";var ant=Ie("stream").Readable,lnt=zP(),zM=class extends ant{constructor(e,r,o,a){if(typeof e!="number")throw new TypeError("Argument `statusCode` should be a number");if(typeof r!="object")throw new TypeError("Argument `headers` should be an object");if(!(o instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if(typeof a!="string")throw new TypeError("Argument `url` should be a string");super(),this.statusCode=e,this.headers=lnt(r),this.body=o,this.url=a}_read(){this.push(this.body),this.push(null)}};aae.exports=zM});var uae=U((yLt,cae)=>{"use strict";var cnt=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];cae.exports=(t,e)=>{let r=new Set(Object.keys(t).concat(cnt));for(let o of r)o in e||(e[o]=typeof t[o]=="function"?t[o].bind(t):t[o])}});var fae=U((ELt,Aae)=>{"use strict";var unt=Ie("stream").PassThrough,Ant=uae(),fnt=t=>{if(!(t&&t.pipe))throw new TypeError("Parameter `response` must be a response stream.");let e=new unt;return Ant(t,e),t.pipe(e)};Aae.exports=fnt});var pae=U(XM=>{XM.stringify=function t(e){if(typeof e>"u")return e;if(e&&Buffer.isBuffer(e))return JSON.stringify(":base64:"+e.toString("base64"));if(e&&e.toJSON&&(e=e.toJSON()),e&&typeof e=="object"){var r="",o=Array.isArray(e);r=o?"[":"{";var a=!0;for(var n in e){var u=typeof e[n]=="function"||!o&&typeof e[n]>"u";Object.hasOwnProperty.call(e,n)&&!u&&(a||(r+=","),a=!1,o?e[n]==null?r+="null":r+=t(e[n]):e[n]!==void 0&&(r+=t(n)+":"+t(e[n])))}return r+=o?"]":"}",r}else return typeof e=="string"?JSON.stringify(/^:/.test(e)?":"+e:e):typeof e>"u"?"null":JSON.stringify(e)};XM.parse=function(t){return JSON.parse(t,function(e,r){return typeof r=="string"?/^:base64:/.test(r)?Buffer.from(r.substring(8),"base64"):/^:/.test(r)?r.substring(1):r:r})}});var dae=U((ILt,gae)=>{"use strict";var pnt=Ie("events"),hae=pae(),hnt=t=>{let e={redis:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql"};if(t.adapter||t.uri){let r=t.adapter||/^[^:]*/.exec(t.uri)[0];return new(Ie(e[r]))(t)}return new Map},ZM=class extends pnt{constructor(e,r){if(super(),this.opts=Object.assign({namespace:"keyv",serialize:hae.stringify,deserialize:hae.parse},typeof e=="string"?{uri:e}:e,r),!this.opts.store){let o=Object.assign({},this.opts);this.opts.store=hnt(o)}typeof this.opts.store.on=="function"&&this.opts.store.on("error",o=>this.emit("error",o)),this.opts.store.namespace=this.opts.namespace}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}get(e,r){e=this._getKeyPrefix(e);let{store:o}=this.opts;return Promise.resolve().then(()=>o.get(e)).then(a=>typeof a=="string"?this.opts.deserialize(a):a).then(a=>{if(a!==void 0){if(typeof a.expires=="number"&&Date.now()>a.expires){this.delete(e);return}return r&&r.raw?a:a.value}})}set(e,r,o){e=this._getKeyPrefix(e),typeof o>"u"&&(o=this.opts.ttl),o===0&&(o=void 0);let{store:a}=this.opts;return Promise.resolve().then(()=>{let n=typeof o=="number"?Date.now()+o:null;return r={value:r,expires:n},this.opts.serialize(r)}).then(n=>a.set(e,n,o)).then(()=>!0)}delete(e){e=this._getKeyPrefix(e);let{store:r}=this.opts;return Promise.resolve().then(()=>r.delete(e))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}};gae.exports=ZM});var Eae=U((BLt,yae)=>{"use strict";var gnt=Ie("events"),XP=Ie("url"),dnt=Goe(),mnt=nae(),$M=sae(),mae=lae(),ynt=zP(),Ent=fae(),Cnt=dae(),Kc=class{constructor(e,r){if(typeof e!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new Cnt({uri:typeof r=="string"&&r,store:typeof r!="string"&&r,namespace:"cacheable-request"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(r,o)=>{let a;if(typeof r=="string")a=e4(XP.parse(r)),r={};else if(r instanceof XP.URL)a=e4(XP.parse(r.toString())),r={};else{let[w,...v]=(r.path||"").split("?"),b=v.length>0?`?${v.join("?")}`:"";a=e4({...r,pathname:w,search:b})}r={headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1,...r,...Int(a)},r.headers=ynt(r.headers);let n=new gnt,u=dnt(XP.format(a),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),A=`${r.method}:${u}`,p=!1,h=!1,C=w=>{h=!0;let v=!1,b,E=new Promise(L=>{b=()=>{v||(v=!0,L())}}),R=L=>{if(p&&!w.forceRefresh){L.status=L.statusCode;let V=$M.fromObject(p.cachePolicy).revalidatedPolicy(w,L);if(!V.modified){let re=V.policy.responseHeaders();L=new mae(p.statusCode,re,p.body,p.url),L.cachePolicy=V.policy,L.fromCache=!0}}L.fromCache||(L.cachePolicy=new $M(w,L,w),L.fromCache=!1);let _;w.cache&&L.cachePolicy.storable()?(_=Ent(L),(async()=>{try{let V=mnt.buffer(L);if(await Promise.race([E,new Promise(pe=>L.once("end",pe))]),v)return;let re=await V,ae={cachePolicy:L.cachePolicy.toObject(),url:L.url,statusCode:L.fromCache?p.statusCode:L.statusCode,body:re},he=w.strictTtl?L.cachePolicy.timeToLive():void 0;w.maxTtl&&(he=he?Math.min(he,w.maxTtl):w.maxTtl),await this.cache.set(A,ae,he)}catch(V){n.emit("error",new Kc.CacheError(V))}})()):w.cache&&p&&(async()=>{try{await this.cache.delete(A)}catch(V){n.emit("error",new Kc.CacheError(V))}})(),n.emit("response",_||L),typeof o=="function"&&o(_||L)};try{let L=e(w,R);L.once("error",b),L.once("abort",b),n.emit("request",L)}catch(L){n.emit("error",new Kc.RequestError(L))}};return(async()=>{let w=async b=>{await Promise.resolve();let E=b.cache?await this.cache.get(A):void 0;if(typeof E>"u")return C(b);let R=$M.fromObject(E.cachePolicy);if(R.satisfiesWithoutRevalidation(b)&&!b.forceRefresh){let L=R.responseHeaders(),_=new mae(E.statusCode,L,E.body,E.url);_.cachePolicy=R,_.fromCache=!0,n.emit("response",_),typeof o=="function"&&o(_)}else p=E,b.headers=R.revalidationHeaders(b),C(b)},v=b=>n.emit("error",new Kc.CacheError(b));this.cache.once("error",v),n.on("response",()=>this.cache.removeListener("error",v));try{await w(r)}catch(b){r.automaticFailover&&!h&&C(r),n.emit("error",new Kc.CacheError(b))}})(),n}}};function Int(t){let e={...t};return e.path=`${t.pathname||"/"}${t.search||""}`,delete e.pathname,delete e.search,e}function e4(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostname||t.host||"localhost",port:t.port,pathname:t.pathname,search:t.search}}Kc.RequestError=class extends Error{constructor(t){super(t.message),this.name="RequestError",Object.assign(this,t)}};Kc.CacheError=class extends Error{constructor(t){super(t.message),this.name="CacheError",Object.assign(this,t)}};yae.exports=Kc});var Iae=U((SLt,Cae)=>{"use strict";var wnt=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];Cae.exports=(t,e)=>{if(e._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");let r=new Set(Object.keys(t).concat(wnt)),o={};for(let a of r)a in e||(o[a]={get(){let n=t[a];return typeof n=="function"?n.bind(t):n},set(n){t[a]=n},enumerable:!0,configurable:!1});return Object.defineProperties(e,o),t.once("aborted",()=>{e.destroy(),e.emit("aborted")}),t.once("close",()=>{t.complete&&e.readable?e.once("end",()=>{e.emit("close")}):e.emit("close")}),e}});var Bae=U((PLt,wae)=>{"use strict";var{Transform:Bnt,PassThrough:vnt}=Ie("stream"),t4=Ie("zlib"),Dnt=Iae();wae.exports=t=>{let e=(t.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(e))return t;let r=e==="br";if(r&&typeof t4.createBrotliDecompress!="function")return t.destroy(new Error("Brotli is not supported on Node.js < 12")),t;let o=!0,a=new Bnt({transform(A,p,h){o=!1,h(null,A)},flush(A){A()}}),n=new vnt({autoDestroy:!1,destroy(A,p){t.destroy(),p(A)}}),u=r?t4.createBrotliDecompress():t4.createUnzip();return u.once("error",A=>{if(o&&!t.readable){n.end();return}n.destroy(A)}),Dnt(t,n),t.pipe(a).pipe(u).pipe(n),n}});var n4=U((xLt,vae)=>{"use strict";var r4=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){if(this.cache.set(e,r),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction=="function")for(let[o,a]of this.oldCache.entries())this.onEviction(o,a);this.oldCache=this.cache,this.cache=new Map}}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||e++;return Math.min(this._size+e,this.maxSize)}};vae.exports=r4});var s4=U((bLt,xae)=>{"use strict";var Snt=Ie("events"),Pnt=Ie("tls"),xnt=Ie("http2"),bnt=n4(),Zo=Symbol("currentStreamsCount"),Dae=Symbol("request"),$l=Symbol("cachedOriginSet"),BE=Symbol("gracefullyClosing"),Qnt=["maxDeflateDynamicTableSize","maxSessionMemory","maxHeaderListPairs","maxOutstandingPings","maxReservedRemoteStreams","maxSendHeaderBlockLength","paddingStrategy","localAddress","path","rejectUnauthorized","minDHSize","ca","cert","clientCertEngine","ciphers","key","pfx","servername","minVersion","maxVersion","secureProtocol","crl","honorCipherOrder","ecdhCurve","dhparam","secureOptions","sessionIdContext"],knt=(t,e,r)=>{let o=0,a=t.length;for(;o<a;){let n=o+a>>>1;r(t[n],e)?o=n+1:a=n}return o},Fnt=(t,e)=>t.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,i4=(t,e)=>{for(let r of t)r[$l].length<e[$l].length&&r[$l].every(o=>e[$l].includes(o))&&r[Zo]+e[Zo]<=e.remoteSettings.maxConcurrentStreams&&Pae(r)},Rnt=(t,e)=>{for(let r of t)e[$l].length<r[$l].length&&e[$l].every(o=>r[$l].includes(o))&&e[Zo]+r[Zo]<=r.remoteSettings.maxConcurrentStreams&&Pae(e)},Sae=({agent:t,isFree:e})=>{let r={};for(let o in t.sessions){let n=t.sessions[o].filter(u=>{let A=u[iA.kCurrentStreamsCount]<u.remoteSettings.maxConcurrentStreams;return e?A:!A});n.length!==0&&(r[o]=n)}return r},Pae=t=>{t[BE]=!0,t[Zo]===0&&t.close()},iA=class extends Snt{constructor({timeout:e=6e4,maxSessions:r=1/0,maxFreeSessions:o=10,maxCachedTlsSessions:a=100}={}){super(),this.sessions={},this.queue={},this.timeout=e,this.maxSessions=r,this.maxFreeSessions=o,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new bnt({maxSize:a})}static normalizeOrigin(e,r){return typeof e=="string"&&(e=new URL(e)),r&&e.hostname!==r&&(e.hostname=r),e.origin}normalizeOptions(e){let r="";if(e)for(let o of Qnt)e[o]&&(r+=`:${e[o]}`);return r}_tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e]))return;let o=this.queue[e][r];this._sessionsCount<this.maxSessions&&!o.completed&&(o.completed=!0,o())}getSession(e,r,o){return new Promise((a,n)=>{Array.isArray(o)?(o=[...o],a()):o=[{resolve:a,reject:n}];let u=this.normalizeOptions(r),A=iA.normalizeOrigin(e,r&&r.servername);if(A===void 0){for(let{reject:C}of o)C(new TypeError("The `origin` argument needs to be a string or an URL object"));return}if(u in this.sessions){let C=this.sessions[u],w=-1,v=-1,b;for(let E of C){let R=E.remoteSettings.maxConcurrentStreams;if(R<w)break;if(E[$l].includes(A)){let L=E[Zo];if(L>=R||E[BE]||E.destroyed)continue;b||(w=R),L>v&&(b=E,v=L)}}if(b){if(o.length!==1){for(let{reject:E}of o){let R=new Error(`Expected the length of listeners to be 1, got ${o.length}. |
137 | Please report this to https://github.com/szmarczak/http2-wrapper/`);E(R)}return}o[0].resolve(b);return}}if(u in this.queue){if(A in this.queue[u]){this.queue[u][A].listeners.push(...o),this._tryToCreateNewSession(u,A);return}}else this.queue[u]={};let p=()=>{u in this.queue&&this.queue[u][A]===h&&(delete this.queue[u][A],Object.keys(this.queue[u]).length===0&&delete this.queue[u])},h=()=>{let C=`${A}:${u}`,w=!1;try{let v=pnt.connect(e,{createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(C),...r});v[zo]=0,v[yE]=!1;let b=()=>v[zo]<v.remoteSettings.maxConcurrentStreams,E=!0;v.socket.once("session",L=>{this.tlsSessionCache.set(C,L)}),v.once("error",L=>{for(let{reject:_}of o)_(L);this.tlsSessionCache.delete(C)}),v.setTimeout(this.timeout,()=>{v.destroy()}),v.once("close",()=>{if(w){E&&this._freeSessionsCount--,this._sessionsCount--;let L=this.sessions[u];L.splice(L.indexOf(v),1),L.length===0&&delete this.sessions[u]}else{let L=new Error("Session closed without receiving a SETTINGS frame");L.code="HTTP2WRAPPER_NOSETTINGS";for(let{reject:_}of o)_(L);p()}this._tryToCreateNewSession(u,A)});let R=()=>{if(!(!(u in this.queue)||!b())){for(let L of v[Vl])if(L in this.queue[u]){let{listeners:_}=this.queue[u][L];for(;_.length!==0&&b();)_.shift().resolve(v);let J=this.queue[u];if(J[L].listeners.length===0&&(delete J[L],Object.keys(J).length===0)){delete this.queue[u];break}if(!b())break}}};v.on("origin",()=>{v[Vl]=v.originSet,b()&&(R(),t4(this.sessions[u],v))}),v.once("remoteSettings",()=>{if(v.ref(),v.unref(),this._sessionsCount++,h.destroyed){let L=new Error("Agent has been destroyed");for(let _ of o)_.reject(L);v.destroy();return}v[Vl]=v.originSet;{let L=this.sessions;if(u in L){let _=L[u];_.splice(dnt(_,v,mnt),0,v)}else L[u]=[v]}this._freeSessionsCount+=1,w=!0,this.emit("session",v),R(),p(),v[zo]===0&&this._freeSessionsCount>this.maxFreeSessions&&v.close(),o.length!==0&&(this.getSession(A,r,o),o.length=0),v.on("remoteSettings",()=>{R(),t4(this.sessions[u],v)})}),v[mae]=v.request,v.request=(L,_)=>{if(v[yE])throw new Error("The session is gracefully closing. No new streams are allowed.");let J=v[mae](L,_);return v.ref(),++v[zo],v[zo]===v.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,J.once("close",()=>{if(E=b(),--v[zo],!v.destroyed&&!v.closed&&(ynt(this.sessions[u],v),b()&&!v.closed)){E||(this._freeSessionsCount++,E=!0);let re=v[zo]===0;re&&v.unref(),re&&(this._freeSessionsCount>this.maxFreeSessions||v[yE])?v.close():(t4(this.sessions[u],v),R())}}),J}}catch(v){for(let b of o)b.reject(v);p()}};h.listeners=o,h.completed=!1,h.destroyed=!1,this.queue[u][A]=h,this._tryToCreateNewSession(u,A)})}request(e,r,o,a){return new Promise((n,u)=>{this.getSession(e,r,[{reject:u,resolve:A=>{try{n(A.request(o,a))}catch(p){u(p)}}}])})}createConnection(e,r){return nA.connect(e,r)}static connect(e,r){r.ALPNProtocols=["h2"];let o=e.port||443,a=e.hostname||e.host;return typeof r.servername>"u"&&(r.servername=a),fnt.connect(o,a,r)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r of e)r[zo]===0&&r.close()}destroy(e){for(let r of Object.values(this.sessions))for(let o of r)o.destroy(e);for(let r of Object.values(this.queue))for(let o of Object.values(r))o.destroyed=!0;this.queue={}}get freeSessions(){return yae({agent:this,isFree:!0})}get busySessions(){return yae({agent:this,isFree:!1})}};nA.kCurrentStreamsCount=zo;nA.kGracefullyClosing=yE;Cae.exports={Agent:nA,globalAgent:new nA}});var i4=U((ALt,Iae)=>{"use strict";var{Readable:Ent}=Ie("stream"),n4=class extends Ent{constructor(e,r){super({highWaterMark:r,autoDestroy:!1}),this.statusCode=null,this.statusMessage="",this.httpVersion="2.0",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=e,this.connection=e,this._dumped=!1}_destroy(e){this.req._request.destroy(e)}setTimeout(e,r){return this.req.setTimeout(e,r),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}_read(){this.req&&this.req._request.resume()}};Iae.exports=n4});var s4=U((fLt,wae)=>{"use strict";wae.exports=t=>{let e={protocol:t.protocol,hostname:typeof t.hostname=="string"&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return typeof t.port=="string"&&t.port.length!==0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var vae=U((pLt,Bae)=>{"use strict";Bae.exports=(t,e,r)=>{for(let o of r)t.on(o,(...a)=>e.emit(o,...a))}});var Sae=U((hLt,Dae)=>{"use strict";Dae.exports=t=>{switch(t){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}});var xae=U((dLt,Pae)=>{"use strict";var EE=(t,e,r)=>{Pae.exports[e]=class extends t{constructor(...a){super(typeof r=="string"?r:r(a)),this.name=`${super.name} [${e}]`,this.code=e}}};EE(TypeError,"ERR_INVALID_ARG_TYPE",t=>{let e=t[0].includes(".")?"property":"argument",r=t[1],o=Array.isArray(r);return o&&(r=`${r.slice(0,-1).join(", ")} or ${r.slice(-1)}`),`The "${t[0]}" ${e} must be ${o?"one of":"of"} type ${r}. Received ${typeof t[2]}`});EE(TypeError,"ERR_INVALID_PROTOCOL",t=>`Protocol "${t[0]}" not supported. Expected "${t[1]}"`);EE(Error,"ERR_HTTP_HEADERS_SENT",t=>`Cannot ${t[0]} headers after they are sent to the client`);EE(TypeError,"ERR_INVALID_HTTP_TOKEN",t=>`${t[0]} must be a valid HTTP token [${t[1]}]`);EE(TypeError,"ERR_HTTP_INVALID_HEADER_VALUE",t=>`Invalid value "${t[0]} for header "${t[1]}"`);EE(TypeError,"ERR_INVALID_CHAR",t=>`Invalid character in ${t[0]} [${t[1]}]`)});var u4=U((mLt,Nae)=>{"use strict";var Cnt=Ie("http2"),{Writable:Int}=Ie("stream"),{Agent:bae,globalAgent:wnt}=r4(),Bnt=i4(),vnt=s4(),Dnt=vae(),Snt=Sae(),{ERR_INVALID_ARG_TYPE:o4,ERR_INVALID_PROTOCOL:Pnt,ERR_HTTP_HEADERS_SENT:Qae,ERR_INVALID_HTTP_TOKEN:xnt,ERR_HTTP_INVALID_HEADER_VALUE:bnt,ERR_INVALID_CHAR:Qnt}=xae(),{HTTP2_HEADER_STATUS:kae,HTTP2_HEADER_METHOD:Fae,HTTP2_HEADER_PATH:Rae,HTTP2_METHOD_CONNECT:knt}=Cnt.constants,xo=Symbol("headers"),a4=Symbol("origin"),l4=Symbol("session"),Tae=Symbol("options"),jP=Symbol("flushedHeaders"),t1=Symbol("jobs"),Fnt=/^[\^`\-\w!#$%&*+.|~]+$/,Rnt=/[^\t\u0020-\u007E\u0080-\u00FF]/,c4=class extends Int{constructor(e,r,o){super({autoDestroy:!1});let a=typeof e=="string"||e instanceof URL;if(a&&(e=vnt(e instanceof URL?e:new URL(e))),typeof r=="function"||r===void 0?(o=r,r=a?e:{...e}):r={...e,...r},r.h2session)this[l4]=r.h2session;else if(r.agent===!1)this.agent=new bae({maxFreeSessions:0});else if(typeof r.agent>"u"||r.agent===null)typeof r.createConnection=="function"?(this.agent=new bae({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=wnt;else if(typeof r.agent.request=="function")this.agent=r.agent;else throw new o4("options.agent",["Agent-like Object","undefined","false"],r.agent);if(r.protocol&&r.protocol!=="https:")throw new Pnt(r.protocol,"https:");let n=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,u=r.hostname||r.host||"localhost";delete r.hostname,delete r.host,delete r.port;let{timeout:A}=r;if(r.timeout=void 0,this[xo]=Object.create(null),this[t1]=[],this.socket=null,this.connection=null,this.method=r.method||"GET",this.path=r.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,r.headers)for(let[p,h]of Object.entries(r.headers))this.setHeader(p,h);r.auth&&!("authorization"in this[xo])&&(this[xo].authorization="Basic "+Buffer.from(r.auth).toString("base64")),r.session=r.tlsSession,r.path=r.socketPath,this[Tae]=r,n===443?(this[a4]=`https://${u}`,":authority"in this[xo]||(this[xo][":authority"]=u)):(this[a4]=`https://${u}:${n}`,":authority"in this[xo]||(this[xo][":authority"]=`${u}:${n}`)),A&&this.setTimeout(A),o&&this.once("response",o),this[jP]=!1}get method(){return this[xo][Fae]}set method(e){e&&(this[xo][Fae]=e.toUpperCase())}get path(){return this[xo][Rae]}set path(e){e&&(this[xo][Rae]=e)}get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"||this.method==="DELETE"}_write(e,r,o){if(this._mustNotHaveABody){o(new Error("The GET, HEAD and DELETE methods must NOT have a body"));return}this.flushHeaders();let a=()=>this._request.write(e,r,o);this._request?a():this[t1].push(a)}_final(e){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(this._mustNotHaveABody){e();return}this._request.end(e)};this._request?r():this[t1].push(r)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit("abort")),this.aborted=!0,this.destroy())}_destroy(e,r){this.res&&this.res._dump(),this._request&&this._request.destroy(),r(e)}async flushHeaders(){if(this[jP]||this.destroyed)return;this[jP]=!0;let e=this.method===knt,r=o=>{if(this._request=o,this.destroyed){o.destroy();return}e||Dnt(o,this,["timeout","continue","close","error"]);let a=u=>(...A)=>{!this.writable&&!this.destroyed?u(...A):this.once("finish",()=>{u(...A)})};o.once("response",a((u,A,p)=>{let h=new Bnt(this.socket,o.readableHighWaterMark);this.res=h,h.req=this,h.statusCode=u[kae],h.headers=u,h.rawHeaders=p,h.once("end",()=>{this.aborted?(h.aborted=!0,h.emit("aborted")):(h.complete=!0,h.socket=null,h.connection=null)}),e?(h.upgrade=!0,this.emit("connect",h,o,Buffer.alloc(0))?this.emit("close"):o.destroy()):(o.on("data",C=>{!h._dumped&&!h.push(C)&&o.pause()}),o.once("end",()=>{h.push(null)}),this.emit("response",h)||h._dump())})),o.once("headers",a(u=>this.emit("information",{statusCode:u[kae]}))),o.once("trailers",a((u,A,p)=>{let{res:h}=this;h.trailers=u,h.rawTrailers=p}));let{socket:n}=o.session;this.socket=n,this.connection=n;for(let u of this[t1])u();this.emit("socket",this.socket)};if(this[l4])try{r(this[l4].request(this[xo]))}catch(o){this.emit("error",o)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[a4],this[Tae],this[xo]))}catch(o){this.emit("error",o)}}}getHeader(e){if(typeof e!="string")throw new o4("name","string",e);return this[xo][e.toLowerCase()]}get headersSent(){return this[jP]}removeHeader(e){if(typeof e!="string")throw new o4("name","string",e);if(this.headersSent)throw new Qae("remove");delete this[xo][e.toLowerCase()]}setHeader(e,r){if(this.headersSent)throw new Qae("set");if(typeof e!="string"||!Fnt.test(e)&&!Snt(e))throw new xnt("Header name",e);if(typeof r>"u")throw new bnt(r,e);if(Rnt.test(r))throw new Qnt("header content",e);this[xo][e.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,r){let o=()=>this._request.setTimeout(e,r);return this._request?o():this[t1].push(o),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};Nae.exports=c4});var Oae=U((yLt,Lae)=>{"use strict";var Tnt=Ie("tls");Lae.exports=(t={})=>new Promise((e,r)=>{let o=Tnt.connect(t,()=>{t.resolveSocket?(o.off("error",r),e({alpnProtocol:o.alpnProtocol,socket:o})):(o.destroy(),e({alpnProtocol:o.alpnProtocol}))});o.on("error",r)})});var Uae=U((ELt,Mae)=>{"use strict";var Nnt=Ie("net");Mae.exports=t=>{let e=t.host,r=t.headers&&t.headers.host;return r&&(r.startsWith("[")?r.indexOf("]")===-1?e=r:e=r.slice(1,-1):e=r.split(":",1)[0]),Nnt.isIP(e)?"":e}});var qae=U((CLt,f4)=>{"use strict";var _ae=Ie("http"),A4=Ie("https"),Lnt=Oae(),Ont=e4(),Mnt=u4(),Unt=Uae(),_nt=s4(),GP=new Ont({maxSize:100}),r1=new Map,Hae=(t,e,r)=>{e._httpMessage={shouldKeepAlive:!0};let o=()=>{t.emit("free",e,r)};e.on("free",o);let a=()=>{t.removeSocket(e,r)};e.on("close",a);let n=()=>{t.removeSocket(e,r),e.off("close",a),e.off("free",o),e.off("agentRemove",n)};e.on("agentRemove",n),t.emit("free",e,r)},Hnt=async t=>{let e=`${t.host}:${t.port}:${t.ALPNProtocols.sort()}`;if(!GP.has(e)){if(r1.has(e))return(await r1.get(e)).alpnProtocol;let{path:r,agent:o}=t;t.path=t.socketPath;let a=Lnt(t);r1.set(e,a);try{let{socket:n,alpnProtocol:u}=await a;if(GP.set(e,u),t.path=r,u==="h2")n.destroy();else{let{globalAgent:A}=A4,p=A4.Agent.prototype.createConnection;o?o.createConnection===p?Hae(o,n,t):n.destroy():A.createConnection===p?Hae(A,n,t):n.destroy()}return r1.delete(e),u}catch(n){throw r1.delete(e),n}}return GP.get(e)};f4.exports=async(t,e,r)=>{if((typeof t=="string"||t instanceof URL)&&(t=_nt(new URL(t))),typeof e=="function"&&(r=e,e=void 0),e={ALPNProtocols:["h2","http/1.1"],...t,...e,resolveSocket:!0},!Array.isArray(e.ALPNProtocols)||e.ALPNProtocols.length===0)throw new Error("The `ALPNProtocols` option must be an Array with at least one entry");e.protocol=e.protocol||"https:";let o=e.protocol==="https:";e.host=e.hostname||e.host||"localhost",e.session=e.tlsSession,e.servername=e.servername||Unt(e),e.port=e.port||(o?443:80),e._defaultAgent=o?A4.globalAgent:_ae.globalAgent;let a=e.agent;if(a){if(a.addRequest)throw new Error("The `options.agent` object can contain only `http`, `https` or `http2` properties");e.agent=a[o?"https":"http"]}return o&&await Hnt(e)==="h2"?(a&&(e.agent=a.http2),new Mnt(e,r)):_ae.request(e,r)};f4.exports.protocolCache=GP});var Gae=U((ILt,jae)=>{"use strict";var qnt=Ie("http2"),jnt=r4(),p4=u4(),Gnt=i4(),Wnt=qae(),Ynt=(t,e,r)=>new p4(t,e,r),Knt=(t,e,r)=>{let o=new p4(t,e,r);return o.end(),o};jae.exports={...qnt,ClientRequest:p4,IncomingMessage:Gnt,...jnt,request:Ynt,get:Knt,auto:Wnt}});var g4=U(h4=>{"use strict";Object.defineProperty(h4,"__esModule",{value:!0});var Wae=Ff();h4.default=t=>Wae.default.nodeStream(t)&&Wae.default.function_(t.getBoundary)});var Vae=U(d4=>{"use strict";Object.defineProperty(d4,"__esModule",{value:!0});var Kae=Ie("fs"),Jae=Ie("util"),Yae=Ff(),Jnt=g4(),Vnt=Jae.promisify(Kae.stat);d4.default=async(t,e)=>{if(e&&"content-length"in e)return Number(e["content-length"]);if(!t)return 0;if(Yae.default.string(t))return Buffer.byteLength(t);if(Yae.default.buffer(t))return t.length;if(Jnt.default(t))return Jae.promisify(t.getLength.bind(t))();if(t instanceof Kae.ReadStream){let{size:r}=await Vnt(t.path);return r===0?void 0:r}}});var y4=U(m4=>{"use strict";Object.defineProperty(m4,"__esModule",{value:!0});function znt(t,e,r){let o={};for(let a of r)o[a]=(...n)=>{e.emit(a,...n)},t.on(a,o[a]);return()=>{for(let a of r)t.off(a,o[a])}}m4.default=znt});var zae=U(E4=>{"use strict";Object.defineProperty(E4,"__esModule",{value:!0});E4.default=()=>{let t=[];return{once(e,r,o){e.once(r,o),t.push({origin:e,event:r,fn:o})},unhandleAll(){for(let e of t){let{origin:r,event:o,fn:a}=e;r.removeListener(o,a)}t.length=0}}}});var Zae=U(n1=>{"use strict";Object.defineProperty(n1,"__esModule",{value:!0});n1.TimeoutError=void 0;var Xnt=Ie("net"),Znt=zae(),Xae=Symbol("reentry"),$nt=()=>{},WP=class extends Error{constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`),this.event=r,this.name="TimeoutError",this.code="ETIMEDOUT"}};n1.TimeoutError=WP;n1.default=(t,e,r)=>{if(Xae in t)return $nt;t[Xae]=!0;let o=[],{once:a,unhandleAll:n}=Znt.default(),u=(w,v,b)=>{var E;let R=setTimeout(v,w,w,b);(E=R.unref)===null||E===void 0||E.call(R);let L=()=>{clearTimeout(R)};return o.push(L),L},{host:A,hostname:p}=r,h=(w,v)=>{t.destroy(new WP(w,v))},C=()=>{for(let w of o)w();n()};if(t.once("error",w=>{if(C(),t.listenerCount("error")===0)throw w}),t.once("close",C),a(t,"response",w=>{a(w,"end",C)}),typeof e.request<"u"&&u(e.request,h,"request"),typeof e.socket<"u"){let w=()=>{h(e.socket,"socket")};t.setTimeout(e.socket,w),o.push(()=>{t.removeListener("timeout",w)})}return a(t,"socket",w=>{var v;let{socketPath:b}=t;if(w.connecting){let E=Boolean(b??Xnt.isIP((v=p??A)!==null&&v!==void 0?v:"")!==0);if(typeof e.lookup<"u"&&!E&&typeof w.address().address>"u"){let R=u(e.lookup,h,"lookup");a(w,"lookup",R)}if(typeof e.connect<"u"){let R=()=>u(e.connect,h,"connect");E?a(w,"connect",R()):a(w,"lookup",L=>{L===null&&a(w,"connect",R())})}typeof e.secureConnect<"u"&&r.protocol==="https:"&&a(w,"connect",()=>{let R=u(e.secureConnect,h,"secureConnect");a(w,"secureConnect",R)})}if(typeof e.send<"u"){let E=()=>u(e.send,h,"send");w.connecting?a(w,"connect",()=>{a(t,"upload-complete",E())}):a(t,"upload-complete",E())}}),typeof e.response<"u"&&a(t,"upload-complete",()=>{let w=u(e.response,h,"response");a(t,"response",w)}),C}});var ele=U(C4=>{"use strict";Object.defineProperty(C4,"__esModule",{value:!0});var $ae=Ff();C4.default=t=>{t=t;let e={protocol:t.protocol,hostname:$ae.default.string(t.hostname)&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return $ae.default.string(t.port)&&t.port.length>0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var tle=U(I4=>{"use strict";Object.defineProperty(I4,"__esModule",{value:!0});var eit=Ie("url"),tit=["protocol","host","hostname","port","pathname","search"];I4.default=(t,e)=>{var r,o;if(e.path){if(e.pathname)throw new TypeError("Parameters `path` and `pathname` are mutually exclusive.");if(e.search)throw new TypeError("Parameters `path` and `search` are mutually exclusive.");if(e.searchParams)throw new TypeError("Parameters `path` and `searchParams` are mutually exclusive.")}if(e.search&&e.searchParams)throw new TypeError("Parameters `search` and `searchParams` are mutually exclusive.");if(!t){if(!e.protocol)throw new TypeError("No URL protocol specified");t=`${e.protocol}//${(o=(r=e.hostname)!==null&&r!==void 0?r:e.host)!==null&&o!==void 0?o:""}`}let a=new eit.URL(t);if(e.path){let n=e.path.indexOf("?");n===-1?e.pathname=e.path:(e.pathname=e.path.slice(0,n),e.search=e.path.slice(n+1)),delete e.path}for(let n of tit)e[n]&&(a[n]=e[n].toString());return a}});var rle=U(B4=>{"use strict";Object.defineProperty(B4,"__esModule",{value:!0});var w4=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(e,r){typeof e=="object"?this.weakMap.set(e,r):this.map.set(e,r)}get(e){return typeof e=="object"?this.weakMap.get(e):this.map.get(e)}has(e){return typeof e=="object"?this.weakMap.has(e):this.map.has(e)}};B4.default=w4});var D4=U(v4=>{"use strict";Object.defineProperty(v4,"__esModule",{value:!0});var rit=async t=>{let e=[],r=0;for await(let o of t)e.push(o),r+=Buffer.byteLength(o);return Buffer.isBuffer(e[0])?Buffer.concat(e,r):Buffer.from(e.join(""))};v4.default=rit});var ile=U(Sd=>{"use strict";Object.defineProperty(Sd,"__esModule",{value:!0});Sd.dnsLookupIpVersionToFamily=Sd.isDnsLookupIpVersion=void 0;var nle={auto:0,ipv4:4,ipv6:6};Sd.isDnsLookupIpVersion=t=>t in nle;Sd.dnsLookupIpVersionToFamily=t=>{if(Sd.isDnsLookupIpVersion(t))return nle[t];throw new Error("Invalid DNS lookup IP version")}});var S4=U(YP=>{"use strict";Object.defineProperty(YP,"__esModule",{value:!0});YP.isResponseOk=void 0;YP.isResponseOk=t=>{let{statusCode:e}=t,r=t.request.options.followRedirect?299:399;return e>=200&&e<=r||e===304}});var ole=U(P4=>{"use strict";Object.defineProperty(P4,"__esModule",{value:!0});var sle=new Set;P4.default=t=>{sle.has(t)||(sle.add(t),process.emitWarning(`Got: ${t}`,{type:"DeprecationWarning"}))}});var ale=U(x4=>{"use strict";Object.defineProperty(x4,"__esModule",{value:!0});var ai=Ff(),nit=(t,e)=>{if(ai.default.null_(t.encoding))throw new TypeError("To get a Buffer, set `options.responseType` to `buffer` instead");ai.assert.any([ai.default.string,ai.default.undefined],t.encoding),ai.assert.any([ai.default.boolean,ai.default.undefined],t.resolveBodyOnly),ai.assert.any([ai.default.boolean,ai.default.undefined],t.methodRewriting),ai.assert.any([ai.default.boolean,ai.default.undefined],t.isStream),ai.assert.any([ai.default.string,ai.default.undefined],t.responseType),t.responseType===void 0&&(t.responseType="text");let{retry:r}=t;if(e?t.retry={...e.retry}:t.retry={calculateDelay:o=>o.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},ai.default.object(r)?(t.retry={...t.retry,...r},t.retry.methods=[...new Set(t.retry.methods.map(o=>o.toUpperCase()))],t.retry.statusCodes=[...new Set(t.retry.statusCodes)],t.retry.errorCodes=[...new Set(t.retry.errorCodes)]):ai.default.number(r)&&(t.retry.limit=r),ai.default.undefined(t.retry.maxRetryAfter)&&(t.retry.maxRetryAfter=Math.min(...[t.timeout.request,t.timeout.connect].filter(ai.default.number))),ai.default.object(t.pagination)){e&&(t.pagination={...e.pagination,...t.pagination});let{pagination:o}=t;if(!ai.default.function_(o.transform))throw new Error("`options.pagination.transform` must be implemented");if(!ai.default.function_(o.shouldContinue))throw new Error("`options.pagination.shouldContinue` must be implemented");if(!ai.default.function_(o.filter))throw new TypeError("`options.pagination.filter` must be implemented");if(!ai.default.function_(o.paginate))throw new Error("`options.pagination.paginate` must be implemented")}return t.responseType==="json"&&t.headers.accept===void 0&&(t.headers.accept="application/json"),t};x4.default=nit});var lle=U(i1=>{"use strict";Object.defineProperty(i1,"__esModule",{value:!0});i1.retryAfterStatusCodes=void 0;i1.retryAfterStatusCodes=new Set([413,429,503]);var iit=({attemptCount:t,retryOptions:e,error:r,retryAfter:o})=>{if(t>e.limit)return 0;let a=e.methods.includes(r.options.method),n=e.errorCodes.includes(r.code),u=r.response&&e.statusCodes.includes(r.response.statusCode);if(!a||!n&&!u)return 0;if(r.response){if(o)return e.maxRetryAfter===void 0||o>e.maxRetryAfter?0:o;if(r.response.statusCode===413)return 0}let A=Math.random()*100;return 2**(t-1)*1e3+A};i1.default=iit});var a1=U(yn=>{"use strict";Object.defineProperty(yn,"__esModule",{value:!0});yn.UnsupportedProtocolError=yn.ReadError=yn.TimeoutError=yn.UploadError=yn.CacheError=yn.HTTPError=yn.MaxRedirectsError=yn.RequestError=yn.setNonEnumerableProperties=yn.knownHookEvents=yn.withoutBody=yn.kIsNormalizedAlready=void 0;var cle=Ie("util"),ule=Ie("stream"),sit=Ie("fs"),i0=Ie("url"),Ale=Ie("http"),b4=Ie("http"),oit=Ie("https"),ait=Soe(),lit=Roe(),fle=Aae(),cit=gae(),uit=Gae(),Ait=HP(),nt=Ff(),fit=Vae(),ple=g4(),pit=y4(),hle=Zae(),hit=ele(),gle=tle(),git=rle(),dit=D4(),dle=ile(),mit=S4(),s0=ole(),yit=ale(),Eit=lle(),Q4,zs=Symbol("request"),VP=Symbol("response"),CE=Symbol("responseSize"),IE=Symbol("downloadedSize"),wE=Symbol("bodySize"),BE=Symbol("uploadedSize"),KP=Symbol("serverResponsesPiped"),mle=Symbol("unproxyEvents"),yle=Symbol("isFromCache"),k4=Symbol("cancelTimeouts"),Ele=Symbol("startedReading"),vE=Symbol("stopReading"),JP=Symbol("triggerRead"),o0=Symbol("body"),s1=Symbol("jobs"),Cle=Symbol("originalResponse"),Ile=Symbol("retryTimeout");yn.kIsNormalizedAlready=Symbol("isNormalizedAlready");var Cit=nt.default.string(process.versions.brotli);yn.withoutBody=new Set(["GET","HEAD"]);yn.knownHookEvents=["init","beforeRequest","beforeRedirect","beforeError","beforeRetry","afterResponse"];function Iit(t){for(let e in t){let r=t[e];if(!nt.default.string(r)&&!nt.default.number(r)&&!nt.default.boolean(r)&&!nt.default.null_(r)&&!nt.default.undefined(r))throw new TypeError(`The \`searchParams\` value '${String(r)}' must be a string, number, boolean or null`)}}function wit(t){return nt.default.object(t)&&!("statusCode"in t)}var F4=new git.default,Bit=async t=>new Promise((e,r)=>{let o=a=>{r(a)};t.pending||e(),t.once("error",o),t.once("ready",()=>{t.off("error",o),e()})}),vit=new Set([300,301,302,303,304,307,308]),Dit=["context","body","json","form"];yn.setNonEnumerableProperties=(t,e)=>{let r={};for(let o of t)if(!!o)for(let a of Dit)a in o&&(r[a]={writable:!0,configurable:!0,enumerable:!1,value:o[a]});Object.defineProperties(e,r)};var Ji=class extends Error{constructor(e,r,o){var a;if(super(e),Error.captureStackTrace(this,this.constructor),this.name="RequestError",this.code=r.code,o instanceof rx?(Object.defineProperty(this,"request",{enumerable:!1,value:o}),Object.defineProperty(this,"response",{enumerable:!1,value:o[VP]}),Object.defineProperty(this,"options",{enumerable:!1,value:o.options})):Object.defineProperty(this,"options",{enumerable:!1,value:o}),this.timings=(a=this.request)===null||a===void 0?void 0:a.timings,nt.default.string(r.stack)&&nt.default.string(this.stack)){let n=this.stack.indexOf(this.message)+this.message.length,u=this.stack.slice(n).split(` | 137 | Please report this to https://github.com/szmarczak/http2-wrapper/`);E(R)}return}o[0].resolve(b);return}}if(u in this.queue){if(A in this.queue[u]){this.queue[u][A].listeners.push(...o),this._tryToCreateNewSession(u,A);return}}else this.queue[u]={};let p=()=>{u in this.queue&&this.queue[u][A]===h&&(delete this.queue[u][A],Object.keys(this.queue[u]).length===0&&delete this.queue[u])},h=()=>{let C=`${A}:${u}`,w=!1;try{let v=xnt.connect(e,{createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(C),...r});v[Zo]=0,v[BE]=!1;let b=()=>v[Zo]<v.remoteSettings.maxConcurrentStreams,E=!0;v.socket.once("session",L=>{this.tlsSessionCache.set(C,L)}),v.once("error",L=>{for(let{reject:_}of o)_(L);this.tlsSessionCache.delete(C)}),v.setTimeout(this.timeout,()=>{v.destroy()}),v.once("close",()=>{if(w){E&&this._freeSessionsCount--,this._sessionsCount--;let L=this.sessions[u];L.splice(L.indexOf(v),1),L.length===0&&delete this.sessions[u]}else{let L=new Error("Session closed without receiving a SETTINGS frame");L.code="HTTP2WRAPPER_NOSETTINGS";for(let{reject:_}of o)_(L);p()}this._tryToCreateNewSession(u,A)});let R=()=>{if(!(!(u in this.queue)||!b())){for(let L of v[$l])if(L in this.queue[u]){let{listeners:_}=this.queue[u][L];for(;_.length!==0&&b();)_.shift().resolve(v);let V=this.queue[u];if(V[L].listeners.length===0&&(delete V[L],Object.keys(V).length===0)){delete this.queue[u];break}if(!b())break}}};v.on("origin",()=>{v[$l]=v.originSet,b()&&(R(),i4(this.sessions[u],v))}),v.once("remoteSettings",()=>{if(v.ref(),v.unref(),this._sessionsCount++,h.destroyed){let L=new Error("Agent has been destroyed");for(let _ of o)_.reject(L);v.destroy();return}v[$l]=v.originSet;{let L=this.sessions;if(u in L){let _=L[u];_.splice(knt(_,v,Fnt),0,v)}else L[u]=[v]}this._freeSessionsCount+=1,w=!0,this.emit("session",v),R(),p(),v[Zo]===0&&this._freeSessionsCount>this.maxFreeSessions&&v.close(),o.length!==0&&(this.getSession(A,r,o),o.length=0),v.on("remoteSettings",()=>{R(),i4(this.sessions[u],v)})}),v[Dae]=v.request,v.request=(L,_)=>{if(v[BE])throw new Error("The session is gracefully closing. No new streams are allowed.");let V=v[Dae](L,_);return v.ref(),++v[Zo],v[Zo]===v.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,V.once("close",()=>{if(E=b(),--v[Zo],!v.destroyed&&!v.closed&&(Rnt(this.sessions[u],v),b()&&!v.closed)){E||(this._freeSessionsCount++,E=!0);let re=v[Zo]===0;re&&v.unref(),re&&(this._freeSessionsCount>this.maxFreeSessions||v[BE])?v.close():(i4(this.sessions[u],v),R())}}),V}}catch(v){for(let b of o)b.reject(v);p()}};h.listeners=o,h.completed=!1,h.destroyed=!1,this.queue[u][A]=h,this._tryToCreateNewSession(u,A)})}request(e,r,o,a){return new Promise((n,u)=>{this.getSession(e,r,[{reject:u,resolve:A=>{try{n(A.request(o,a))}catch(p){u(p)}}}])})}createConnection(e,r){return iA.connect(e,r)}static connect(e,r){r.ALPNProtocols=["h2"];let o=e.port||443,a=e.hostname||e.host;return typeof r.servername>"u"&&(r.servername=a),Pnt.connect(o,a,r)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r of e)r[Zo]===0&&r.close()}destroy(e){for(let r of Object.values(this.sessions))for(let o of r)o.destroy(e);for(let r of Object.values(this.queue))for(let o of Object.values(r))o.destroyed=!0;this.queue={}}get freeSessions(){return Sae({agent:this,isFree:!0})}get busySessions(){return Sae({agent:this,isFree:!1})}};iA.kCurrentStreamsCount=Zo;iA.kGracefullyClosing=BE;xae.exports={Agent:iA,globalAgent:new iA}});var a4=U((QLt,bae)=>{"use strict";var{Readable:Tnt}=Ie("stream"),o4=class extends Tnt{constructor(e,r){super({highWaterMark:r,autoDestroy:!1}),this.statusCode=null,this.statusMessage="",this.httpVersion="2.0",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=e,this.connection=e,this._dumped=!1}_destroy(e){this.req._request.destroy(e)}setTimeout(e,r){return this.req.setTimeout(e,r),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}_read(){this.req&&this.req._request.resume()}};bae.exports=o4});var l4=U((kLt,Qae)=>{"use strict";Qae.exports=t=>{let e={protocol:t.protocol,hostname:typeof t.hostname=="string"&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return typeof t.port=="string"&&t.port.length!==0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var Fae=U((FLt,kae)=>{"use strict";kae.exports=(t,e,r)=>{for(let o of r)t.on(o,(...a)=>e.emit(o,...a))}});var Tae=U((RLt,Rae)=>{"use strict";Rae.exports=t=>{switch(t){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}});var Lae=U((NLt,Nae)=>{"use strict";var vE=(t,e,r)=>{Nae.exports[e]=class extends t{constructor(...a){super(typeof r=="string"?r:r(a)),this.name=`${super.name} [${e}]`,this.code=e}}};vE(TypeError,"ERR_INVALID_ARG_TYPE",t=>{let e=t[0].includes(".")?"property":"argument",r=t[1],o=Array.isArray(r);return o&&(r=`${r.slice(0,-1).join(", ")} or ${r.slice(-1)}`),`The "${t[0]}" ${e} must be ${o?"one of":"of"} type ${r}. Received ${typeof t[2]}`});vE(TypeError,"ERR_INVALID_PROTOCOL",t=>`Protocol "${t[0]}" not supported. Expected "${t[1]}"`);vE(Error,"ERR_HTTP_HEADERS_SENT",t=>`Cannot ${t[0]} headers after they are sent to the client`);vE(TypeError,"ERR_INVALID_HTTP_TOKEN",t=>`${t[0]} must be a valid HTTP token [${t[1]}]`);vE(TypeError,"ERR_HTTP_INVALID_HEADER_VALUE",t=>`Invalid value "${t[0]} for header "${t[1]}"`);vE(TypeError,"ERR_INVALID_CHAR",t=>`Invalid character in ${t[0]} [${t[1]}]`)});var p4=U((LLt,jae)=>{"use strict";var Nnt=Ie("http2"),{Writable:Lnt}=Ie("stream"),{Agent:Oae,globalAgent:Ont}=s4(),Mnt=a4(),Unt=l4(),_nt=Fae(),Hnt=Tae(),{ERR_INVALID_ARG_TYPE:c4,ERR_INVALID_PROTOCOL:qnt,ERR_HTTP_HEADERS_SENT:Mae,ERR_INVALID_HTTP_TOKEN:jnt,ERR_HTTP_INVALID_HEADER_VALUE:Gnt,ERR_INVALID_CHAR:Wnt}=Lae(),{HTTP2_HEADER_STATUS:Uae,HTTP2_HEADER_METHOD:_ae,HTTP2_HEADER_PATH:Hae,HTTP2_METHOD_CONNECT:Ynt}=Nnt.constants,xo=Symbol("headers"),u4=Symbol("origin"),A4=Symbol("session"),qae=Symbol("options"),ZP=Symbol("flushedHeaders"),o1=Symbol("jobs"),Knt=/^[\^`\-\w!#$%&*+.|~]+$/,Vnt=/[^\t\u0020-\u007E\u0080-\u00FF]/,f4=class extends Lnt{constructor(e,r,o){super({autoDestroy:!1});let a=typeof e=="string"||e instanceof URL;if(a&&(e=Unt(e instanceof URL?e:new URL(e))),typeof r=="function"||r===void 0?(o=r,r=a?e:{...e}):r={...e,...r},r.h2session)this[A4]=r.h2session;else if(r.agent===!1)this.agent=new Oae({maxFreeSessions:0});else if(typeof r.agent>"u"||r.agent===null)typeof r.createConnection=="function"?(this.agent=new Oae({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=Ont;else if(typeof r.agent.request=="function")this.agent=r.agent;else throw new c4("options.agent",["Agent-like Object","undefined","false"],r.agent);if(r.protocol&&r.protocol!=="https:")throw new qnt(r.protocol,"https:");let n=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,u=r.hostname||r.host||"localhost";delete r.hostname,delete r.host,delete r.port;let{timeout:A}=r;if(r.timeout=void 0,this[xo]=Object.create(null),this[o1]=[],this.socket=null,this.connection=null,this.method=r.method||"GET",this.path=r.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,r.headers)for(let[p,h]of Object.entries(r.headers))this.setHeader(p,h);r.auth&&!("authorization"in this[xo])&&(this[xo].authorization="Basic "+Buffer.from(r.auth).toString("base64")),r.session=r.tlsSession,r.path=r.socketPath,this[qae]=r,n===443?(this[u4]=`https://${u}`,":authority"in this[xo]||(this[xo][":authority"]=u)):(this[u4]=`https://${u}:${n}`,":authority"in this[xo]||(this[xo][":authority"]=`${u}:${n}`)),A&&this.setTimeout(A),o&&this.once("response",o),this[ZP]=!1}get method(){return this[xo][_ae]}set method(e){e&&(this[xo][_ae]=e.toUpperCase())}get path(){return this[xo][Hae]}set path(e){e&&(this[xo][Hae]=e)}get _mustNotHaveABody(){return this.method==="GET"||this.method==="HEAD"||this.method==="DELETE"}_write(e,r,o){if(this._mustNotHaveABody){o(new Error("The GET, HEAD and DELETE methods must NOT have a body"));return}this.flushHeaders();let a=()=>this._request.write(e,r,o);this._request?a():this[o1].push(a)}_final(e){if(this.destroyed)return;this.flushHeaders();let r=()=>{if(this._mustNotHaveABody){e();return}this._request.end(e)};this._request?r():this[o1].push(r)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit("abort")),this.aborted=!0,this.destroy())}_destroy(e,r){this.res&&this.res._dump(),this._request&&this._request.destroy(),r(e)}async flushHeaders(){if(this[ZP]||this.destroyed)return;this[ZP]=!0;let e=this.method===Ynt,r=o=>{if(this._request=o,this.destroyed){o.destroy();return}e||_nt(o,this,["timeout","continue","close","error"]);let a=u=>(...A)=>{!this.writable&&!this.destroyed?u(...A):this.once("finish",()=>{u(...A)})};o.once("response",a((u,A,p)=>{let h=new Mnt(this.socket,o.readableHighWaterMark);this.res=h,h.req=this,h.statusCode=u[Uae],h.headers=u,h.rawHeaders=p,h.once("end",()=>{this.aborted?(h.aborted=!0,h.emit("aborted")):(h.complete=!0,h.socket=null,h.connection=null)}),e?(h.upgrade=!0,this.emit("connect",h,o,Buffer.alloc(0))?this.emit("close"):o.destroy()):(o.on("data",C=>{!h._dumped&&!h.push(C)&&o.pause()}),o.once("end",()=>{h.push(null)}),this.emit("response",h)||h._dump())})),o.once("headers",a(u=>this.emit("information",{statusCode:u[Uae]}))),o.once("trailers",a((u,A,p)=>{let{res:h}=this;h.trailers=u,h.rawTrailers=p}));let{socket:n}=o.session;this.socket=n,this.connection=n;for(let u of this[o1])u();this.emit("socket",this.socket)};if(this[A4])try{r(this[A4].request(this[xo]))}catch(o){this.emit("error",o)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[u4],this[qae],this[xo]))}catch(o){this.emit("error",o)}}}getHeader(e){if(typeof e!="string")throw new c4("name","string",e);return this[xo][e.toLowerCase()]}get headersSent(){return this[ZP]}removeHeader(e){if(typeof e!="string")throw new c4("name","string",e);if(this.headersSent)throw new Mae("remove");delete this[xo][e.toLowerCase()]}setHeader(e,r){if(this.headersSent)throw new Mae("set");if(typeof e!="string"||!Knt.test(e)&&!Hnt(e))throw new jnt("Header name",e);if(typeof r>"u")throw new Gnt(r,e);if(Vnt.test(r))throw new Wnt("header content",e);this[xo][e.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,r){let o=()=>this._request.setTimeout(e,r);return this._request?o():this[o1].push(o),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};jae.exports=f4});var Wae=U((OLt,Gae)=>{"use strict";var Jnt=Ie("tls");Gae.exports=(t={})=>new Promise((e,r)=>{let o=Jnt.connect(t,()=>{t.resolveSocket?(o.off("error",r),e({alpnProtocol:o.alpnProtocol,socket:o})):(o.destroy(),e({alpnProtocol:o.alpnProtocol}))});o.on("error",r)})});var Kae=U((MLt,Yae)=>{"use strict";var znt=Ie("net");Yae.exports=t=>{let e=t.host,r=t.headers&&t.headers.host;return r&&(r.startsWith("[")?r.indexOf("]")===-1?e=r:e=r.slice(1,-1):e=r.split(":",1)[0]),znt.isIP(e)?"":e}});var zae=U((ULt,g4)=>{"use strict";var Vae=Ie("http"),h4=Ie("https"),Xnt=Wae(),Znt=n4(),$nt=p4(),eit=Kae(),tit=l4(),$P=new Znt({maxSize:100}),a1=new Map,Jae=(t,e,r)=>{e._httpMessage={shouldKeepAlive:!0};let o=()=>{t.emit("free",e,r)};e.on("free",o);let a=()=>{t.removeSocket(e,r)};e.on("close",a);let n=()=>{t.removeSocket(e,r),e.off("close",a),e.off("free",o),e.off("agentRemove",n)};e.on("agentRemove",n),t.emit("free",e,r)},rit=async t=>{let e=`${t.host}:${t.port}:${t.ALPNProtocols.sort()}`;if(!$P.has(e)){if(a1.has(e))return(await a1.get(e)).alpnProtocol;let{path:r,agent:o}=t;t.path=t.socketPath;let a=Xnt(t);a1.set(e,a);try{let{socket:n,alpnProtocol:u}=await a;if($P.set(e,u),t.path=r,u==="h2")n.destroy();else{let{globalAgent:A}=h4,p=h4.Agent.prototype.createConnection;o?o.createConnection===p?Jae(o,n,t):n.destroy():A.createConnection===p?Jae(A,n,t):n.destroy()}return a1.delete(e),u}catch(n){throw a1.delete(e),n}}return $P.get(e)};g4.exports=async(t,e,r)=>{if((typeof t=="string"||t instanceof URL)&&(t=tit(new URL(t))),typeof e=="function"&&(r=e,e=void 0),e={ALPNProtocols:["h2","http/1.1"],...t,...e,resolveSocket:!0},!Array.isArray(e.ALPNProtocols)||e.ALPNProtocols.length===0)throw new Error("The `ALPNProtocols` option must be an Array with at least one entry");e.protocol=e.protocol||"https:";let o=e.protocol==="https:";e.host=e.hostname||e.host||"localhost",e.session=e.tlsSession,e.servername=e.servername||eit(e),e.port=e.port||(o?443:80),e._defaultAgent=o?h4.globalAgent:Vae.globalAgent;let a=e.agent;if(a){if(a.addRequest)throw new Error("The `options.agent` object can contain only `http`, `https` or `http2` properties");e.agent=a[o?"https":"http"]}return o&&await rit(e)==="h2"?(a&&(e.agent=a.http2),new $nt(e,r)):Vae.request(e,r)};g4.exports.protocolCache=$P});var Zae=U((_Lt,Xae)=>{"use strict";var nit=Ie("http2"),iit=s4(),d4=p4(),sit=a4(),oit=zae(),ait=(t,e,r)=>new d4(t,e,r),lit=(t,e,r)=>{let o=new d4(t,e,r);return o.end(),o};Xae.exports={...nit,ClientRequest:d4,IncomingMessage:sit,...iit,request:ait,get:lit,auto:oit}});var y4=U(m4=>{"use strict";Object.defineProperty(m4,"__esModule",{value:!0});var $ae=Nf();m4.default=t=>$ae.default.nodeStream(t)&&$ae.default.function_(t.getBoundary)});var nle=U(E4=>{"use strict";Object.defineProperty(E4,"__esModule",{value:!0});var tle=Ie("fs"),rle=Ie("util"),ele=Nf(),cit=y4(),uit=rle.promisify(tle.stat);E4.default=async(t,e)=>{if(e&&"content-length"in e)return Number(e["content-length"]);if(!t)return 0;if(ele.default.string(t))return Buffer.byteLength(t);if(ele.default.buffer(t))return t.length;if(cit.default(t))return rle.promisify(t.getLength.bind(t))();if(t instanceof tle.ReadStream){let{size:r}=await uit(t.path);return r===0?void 0:r}}});var I4=U(C4=>{"use strict";Object.defineProperty(C4,"__esModule",{value:!0});function Ait(t,e,r){let o={};for(let a of r)o[a]=(...n)=>{e.emit(a,...n)},t.on(a,o[a]);return()=>{for(let a of r)t.off(a,o[a])}}C4.default=Ait});var ile=U(w4=>{"use strict";Object.defineProperty(w4,"__esModule",{value:!0});w4.default=()=>{let t=[];return{once(e,r,o){e.once(r,o),t.push({origin:e,event:r,fn:o})},unhandleAll(){for(let e of t){let{origin:r,event:o,fn:a}=e;r.removeListener(o,a)}t.length=0}}}});var ole=U(l1=>{"use strict";Object.defineProperty(l1,"__esModule",{value:!0});l1.TimeoutError=void 0;var fit=Ie("net"),pit=ile(),sle=Symbol("reentry"),hit=()=>{},ex=class extends Error{constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`),this.event=r,this.name="TimeoutError",this.code="ETIMEDOUT"}};l1.TimeoutError=ex;l1.default=(t,e,r)=>{if(sle in t)return hit;t[sle]=!0;let o=[],{once:a,unhandleAll:n}=pit.default(),u=(w,v,b)=>{var E;let R=setTimeout(v,w,w,b);(E=R.unref)===null||E===void 0||E.call(R);let L=()=>{clearTimeout(R)};return o.push(L),L},{host:A,hostname:p}=r,h=(w,v)=>{t.destroy(new ex(w,v))},C=()=>{for(let w of o)w();n()};if(t.once("error",w=>{if(C(),t.listenerCount("error")===0)throw w}),t.once("close",C),a(t,"response",w=>{a(w,"end",C)}),typeof e.request<"u"&&u(e.request,h,"request"),typeof e.socket<"u"){let w=()=>{h(e.socket,"socket")};t.setTimeout(e.socket,w),o.push(()=>{t.removeListener("timeout",w)})}return a(t,"socket",w=>{var v;let{socketPath:b}=t;if(w.connecting){let E=Boolean(b??fit.isIP((v=p??A)!==null&&v!==void 0?v:"")!==0);if(typeof e.lookup<"u"&&!E&&typeof w.address().address>"u"){let R=u(e.lookup,h,"lookup");a(w,"lookup",R)}if(typeof e.connect<"u"){let R=()=>u(e.connect,h,"connect");E?a(w,"connect",R()):a(w,"lookup",L=>{L===null&&a(w,"connect",R())})}typeof e.secureConnect<"u"&&r.protocol==="https:"&&a(w,"connect",()=>{let R=u(e.secureConnect,h,"secureConnect");a(w,"secureConnect",R)})}if(typeof e.send<"u"){let E=()=>u(e.send,h,"send");w.connecting?a(w,"connect",()=>{a(t,"upload-complete",E())}):a(t,"upload-complete",E())}}),typeof e.response<"u"&&a(t,"upload-complete",()=>{let w=u(e.response,h,"response");a(t,"response",w)}),C}});var lle=U(B4=>{"use strict";Object.defineProperty(B4,"__esModule",{value:!0});var ale=Nf();B4.default=t=>{t=t;let e={protocol:t.protocol,hostname:ale.default.string(t.hostname)&&t.hostname.startsWith("[")?t.hostname.slice(1,-1):t.hostname,host:t.host,hash:t.hash,search:t.search,pathname:t.pathname,href:t.href,path:`${t.pathname||""}${t.search||""}`};return ale.default.string(t.port)&&t.port.length>0&&(e.port=Number(t.port)),(t.username||t.password)&&(e.auth=`${t.username||""}:${t.password||""}`),e}});var cle=U(v4=>{"use strict";Object.defineProperty(v4,"__esModule",{value:!0});var git=Ie("url"),dit=["protocol","host","hostname","port","pathname","search"];v4.default=(t,e)=>{var r,o;if(e.path){if(e.pathname)throw new TypeError("Parameters `path` and `pathname` are mutually exclusive.");if(e.search)throw new TypeError("Parameters `path` and `search` are mutually exclusive.");if(e.searchParams)throw new TypeError("Parameters `path` and `searchParams` are mutually exclusive.")}if(e.search&&e.searchParams)throw new TypeError("Parameters `search` and `searchParams` are mutually exclusive.");if(!t){if(!e.protocol)throw new TypeError("No URL protocol specified");t=`${e.protocol}//${(o=(r=e.hostname)!==null&&r!==void 0?r:e.host)!==null&&o!==void 0?o:""}`}let a=new git.URL(t);if(e.path){let n=e.path.indexOf("?");n===-1?e.pathname=e.path:(e.pathname=e.path.slice(0,n),e.search=e.path.slice(n+1)),delete e.path}for(let n of dit)e[n]&&(a[n]=e[n].toString());return a}});var ule=U(S4=>{"use strict";Object.defineProperty(S4,"__esModule",{value:!0});var D4=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(e,r){typeof e=="object"?this.weakMap.set(e,r):this.map.set(e,r)}get(e){return typeof e=="object"?this.weakMap.get(e):this.map.get(e)}has(e){return typeof e=="object"?this.weakMap.has(e):this.map.has(e)}};S4.default=D4});var x4=U(P4=>{"use strict";Object.defineProperty(P4,"__esModule",{value:!0});var mit=async t=>{let e=[],r=0;for await(let o of t)e.push(o),r+=Buffer.byteLength(o);return Buffer.isBuffer(e[0])?Buffer.concat(e,r):Buffer.from(e.join(""))};P4.default=mit});var fle=U(Qd=>{"use strict";Object.defineProperty(Qd,"__esModule",{value:!0});Qd.dnsLookupIpVersionToFamily=Qd.isDnsLookupIpVersion=void 0;var Ale={auto:0,ipv4:4,ipv6:6};Qd.isDnsLookupIpVersion=t=>t in Ale;Qd.dnsLookupIpVersionToFamily=t=>{if(Qd.isDnsLookupIpVersion(t))return Ale[t];throw new Error("Invalid DNS lookup IP version")}});var b4=U(tx=>{"use strict";Object.defineProperty(tx,"__esModule",{value:!0});tx.isResponseOk=void 0;tx.isResponseOk=t=>{let{statusCode:e}=t,r=t.request.options.followRedirect?299:399;return e>=200&&e<=r||e===304}});var hle=U(Q4=>{"use strict";Object.defineProperty(Q4,"__esModule",{value:!0});var ple=new Set;Q4.default=t=>{ple.has(t)||(ple.add(t),process.emitWarning(`Got: ${t}`,{type:"DeprecationWarning"}))}});var gle=U(k4=>{"use strict";Object.defineProperty(k4,"__esModule",{value:!0});var ai=Nf(),yit=(t,e)=>{if(ai.default.null_(t.encoding))throw new TypeError("To get a Buffer, set `options.responseType` to `buffer` instead");ai.assert.any([ai.default.string,ai.default.undefined],t.encoding),ai.assert.any([ai.default.boolean,ai.default.undefined],t.resolveBodyOnly),ai.assert.any([ai.default.boolean,ai.default.undefined],t.methodRewriting),ai.assert.any([ai.default.boolean,ai.default.undefined],t.isStream),ai.assert.any([ai.default.string,ai.default.undefined],t.responseType),t.responseType===void 0&&(t.responseType="text");let{retry:r}=t;if(e?t.retry={...e.retry}:t.retry={calculateDelay:o=>o.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},ai.default.object(r)?(t.retry={...t.retry,...r},t.retry.methods=[...new Set(t.retry.methods.map(o=>o.toUpperCase()))],t.retry.statusCodes=[...new Set(t.retry.statusCodes)],t.retry.errorCodes=[...new Set(t.retry.errorCodes)]):ai.default.number(r)&&(t.retry.limit=r),ai.default.undefined(t.retry.maxRetryAfter)&&(t.retry.maxRetryAfter=Math.min(...[t.timeout.request,t.timeout.connect].filter(ai.default.number))),ai.default.object(t.pagination)){e&&(t.pagination={...e.pagination,...t.pagination});let{pagination:o}=t;if(!ai.default.function_(o.transform))throw new Error("`options.pagination.transform` must be implemented");if(!ai.default.function_(o.shouldContinue))throw new Error("`options.pagination.shouldContinue` must be implemented");if(!ai.default.function_(o.filter))throw new TypeError("`options.pagination.filter` must be implemented");if(!ai.default.function_(o.paginate))throw new Error("`options.pagination.paginate` must be implemented")}return t.responseType==="json"&&t.headers.accept===void 0&&(t.headers.accept="application/json"),t};k4.default=yit});var dle=U(c1=>{"use strict";Object.defineProperty(c1,"__esModule",{value:!0});c1.retryAfterStatusCodes=void 0;c1.retryAfterStatusCodes=new Set([413,429,503]);var Eit=({attemptCount:t,retryOptions:e,error:r,retryAfter:o})=>{if(t>e.limit)return 0;let a=e.methods.includes(r.options.method),n=e.errorCodes.includes(r.code),u=r.response&&e.statusCodes.includes(r.response.statusCode);if(!a||!n&&!u)return 0;if(r.response){if(o)return e.maxRetryAfter===void 0||o>e.maxRetryAfter?0:o;if(r.response.statusCode===413)return 0}let A=Math.random()*100;return 2**(t-1)*1e3+A};c1.default=Eit});var f1=U(yn=>{"use strict";Object.defineProperty(yn,"__esModule",{value:!0});yn.UnsupportedProtocolError=yn.ReadError=yn.TimeoutError=yn.UploadError=yn.CacheError=yn.HTTPError=yn.MaxRedirectsError=yn.RequestError=yn.setNonEnumerableProperties=yn.knownHookEvents=yn.withoutBody=yn.kIsNormalizedAlready=void 0;var mle=Ie("util"),yle=Ie("stream"),Cit=Ie("fs"),a0=Ie("url"),Ele=Ie("http"),F4=Ie("http"),Iit=Ie("https"),wit=Toe(),Bit=Hoe(),Cle=Eae(),vit=Bae(),Dit=Zae(),Sit=zP(),nt=Nf(),Pit=nle(),Ile=y4(),xit=I4(),wle=ole(),bit=lle(),Ble=cle(),Qit=ule(),kit=x4(),vle=fle(),Fit=b4(),l0=hle(),Rit=gle(),Tit=dle(),R4,zs=Symbol("request"),ix=Symbol("response"),DE=Symbol("responseSize"),SE=Symbol("downloadedSize"),PE=Symbol("bodySize"),xE=Symbol("uploadedSize"),rx=Symbol("serverResponsesPiped"),Dle=Symbol("unproxyEvents"),Sle=Symbol("isFromCache"),T4=Symbol("cancelTimeouts"),Ple=Symbol("startedReading"),bE=Symbol("stopReading"),nx=Symbol("triggerRead"),c0=Symbol("body"),u1=Symbol("jobs"),xle=Symbol("originalResponse"),ble=Symbol("retryTimeout");yn.kIsNormalizedAlready=Symbol("isNormalizedAlready");var Nit=nt.default.string(process.versions.brotli);yn.withoutBody=new Set(["GET","HEAD"]);yn.knownHookEvents=["init","beforeRequest","beforeRedirect","beforeError","beforeRetry","afterResponse"];function Lit(t){for(let e in t){let r=t[e];if(!nt.default.string(r)&&!nt.default.number(r)&&!nt.default.boolean(r)&&!nt.default.null_(r)&&!nt.default.undefined(r))throw new TypeError(`The \`searchParams\` value '${String(r)}' must be a string, number, boolean or null`)}}function Oit(t){return nt.default.object(t)&&!("statusCode"in t)}var N4=new Qit.default,Mit=async t=>new Promise((e,r)=>{let o=a=>{r(a)};t.pending||e(),t.once("error",o),t.once("ready",()=>{t.off("error",o),e()})}),Uit=new Set([300,301,302,303,304,307,308]),_it=["context","body","json","form"];yn.setNonEnumerableProperties=(t,e)=>{let r={};for(let o of t)if(!!o)for(let a of _it)a in o&&(r[a]={writable:!0,configurable:!0,enumerable:!1,value:o[a]});Object.defineProperties(e,r)};var Vi=class extends Error{constructor(e,r,o){var a;if(super(e),Error.captureStackTrace(this,this.constructor),this.name="RequestError",this.code=r.code,o instanceof Ax?(Object.defineProperty(this,"request",{enumerable:!1,value:o}),Object.defineProperty(this,"response",{enumerable:!1,value:o[ix]}),Object.defineProperty(this,"options",{enumerable:!1,value:o.options})):Object.defineProperty(this,"options",{enumerable:!1,value:o}),this.timings=(a=this.request)===null||a===void 0?void 0:a.timings,nt.default.string(r.stack)&&nt.default.string(this.stack)){let n=this.stack.indexOf(this.message)+this.message.length,u=this.stack.slice(n).split(` |
138 | `).reverse(),A=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(` | 138 | `).reverse(),A=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(` |
139 | `).reverse();for(;A.length!==0&&A[0]===u[0];)u.shift();this.stack=`${this.stack.slice(0,n)}${u.reverse().join(` | 139 | `).reverse();for(;A.length!==0&&A[0]===u[0];)u.shift();this.stack=`${this.stack.slice(0,n)}${u.reverse().join(` |
140 | `)}${A.reverse().join(` | 140 | `)}${A.reverse().join(` |
141 | `)}`}}};yn.RequestError=Ji;var zP=class extends Ji{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e),this.name="MaxRedirectsError"}};yn.MaxRedirectsError=zP;var XP=class extends Ji{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request),this.name="HTTPError"}};yn.HTTPError=XP;var ZP=class extends Ji{constructor(e,r){super(e.message,e,r),this.name="CacheError"}};yn.CacheError=ZP;var $P=class extends Ji{constructor(e,r){super(e.message,e,r),this.name="UploadError"}};yn.UploadError=$P;var ex=class extends Ji{constructor(e,r,o){super(e.message,e,o),this.name="TimeoutError",this.event=e.event,this.timings=r}};yn.TimeoutError=ex;var o1=class extends Ji{constructor(e,r){super(e.message,e,r),this.name="ReadError"}};yn.ReadError=o1;var tx=class extends Ji{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e),this.name="UnsupportedProtocolError"}};yn.UnsupportedProtocolError=tx;var Sit=["socket","connect","continue","information","upgrade","timeout"],rx=class extends ule.Duplex{constructor(e,r={},o){super({autoDestroy:!1,highWaterMark:0}),this[IE]=0,this[BE]=0,this.requestInitialized=!1,this[KP]=new Set,this.redirects=[],this[vE]=!1,this[JP]=!1,this[s1]=[],this.retryCount=0,this._progressCallbacks=[];let a=()=>this._unlockWrite(),n=()=>this._lockWrite();this.on("pipe",h=>{h.prependListener("data",a),h.on("data",n),h.prependListener("end",a),h.on("end",n)}),this.on("unpipe",h=>{h.off("data",a),h.off("data",n),h.off("end",a),h.off("end",n)}),this.on("pipe",h=>{h instanceof b4.IncomingMessage&&(this.options.headers={...h.headers,...this.options.headers})});let{json:u,body:A,form:p}=r;if((u||A||p)&&this._lockWrite(),yn.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(e,r,o)}catch(h){nt.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(h);return}(async()=>{var h;try{this.options.body instanceof sit.ReadStream&&await Bit(this.options.body);let{url:C}=this.options;if(!C)throw new TypeError("Missing `url` property");if(this.requestUrl=C.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(h=this[zs])===null||h===void 0||h.destroy();return}for(let w of this[s1])w();this[s1].length=0,this.requestInitialized=!0}catch(C){if(C instanceof Ji){this._beforeError(C);return}this.destroyed||this.destroy(C)}})()}static normalizeArguments(e,r,o){var a,n,u,A,p;let h=r;if(nt.default.object(e)&&!nt.default.urlInstance(e))r={...o,...e,...r};else{if(e&&r&&r.url!==void 0)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");r={...o,...r},e!==void 0&&(r.url=e),nt.default.urlInstance(r.url)&&(r.url=new i0.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),nt.assert.any([nt.default.string,nt.default.undefined],r.method),nt.assert.any([nt.default.object,nt.default.undefined],r.headers),nt.assert.any([nt.default.string,nt.default.urlInstance,nt.default.undefined],r.prefixUrl),nt.assert.any([nt.default.object,nt.default.undefined],r.cookieJar),nt.assert.any([nt.default.object,nt.default.string,nt.default.undefined],r.searchParams),nt.assert.any([nt.default.object,nt.default.string,nt.default.undefined],r.cache),nt.assert.any([nt.default.object,nt.default.number,nt.default.undefined],r.timeout),nt.assert.any([nt.default.object,nt.default.undefined],r.context),nt.assert.any([nt.default.object,nt.default.undefined],r.hooks),nt.assert.any([nt.default.boolean,nt.default.undefined],r.decompress),nt.assert.any([nt.default.boolean,nt.default.undefined],r.ignoreInvalidCookies),nt.assert.any([nt.default.boolean,nt.default.undefined],r.followRedirect),nt.assert.any([nt.default.number,nt.default.undefined],r.maxRedirects),nt.assert.any([nt.default.boolean,nt.default.undefined],r.throwHttpErrors),nt.assert.any([nt.default.boolean,nt.default.undefined],r.http2),nt.assert.any([nt.default.boolean,nt.default.undefined],r.allowGetBody),nt.assert.any([nt.default.string,nt.default.undefined],r.localAddress),nt.assert.any([dle.isDnsLookupIpVersion,nt.default.undefined],r.dnsLookupIpVersion),nt.assert.any([nt.default.object,nt.default.undefined],r.https),nt.assert.any([nt.default.boolean,nt.default.undefined],r.rejectUnauthorized),r.https&&(nt.assert.any([nt.default.boolean,nt.default.undefined],r.https.rejectUnauthorized),nt.assert.any([nt.default.function_,nt.default.undefined],r.https.checkServerIdentity),nt.assert.any([nt.default.string,nt.default.object,nt.default.array,nt.default.undefined],r.https.certificateAuthority),nt.assert.any([nt.default.string,nt.default.object,nt.default.array,nt.default.undefined],r.https.key),nt.assert.any([nt.default.string,nt.default.object,nt.default.array,nt.default.undefined],r.https.certificate),nt.assert.any([nt.default.string,nt.default.undefined],r.https.passphrase),nt.assert.any([nt.default.string,nt.default.buffer,nt.default.array,nt.default.undefined],r.https.pfx)),nt.assert.any([nt.default.object,nt.default.undefined],r.cacheOptions),nt.default.string(r.method)?r.method=r.method.toUpperCase():r.method="GET",r.headers===(o==null?void 0:o.headers)?r.headers={...r.headers}:r.headers=Ait({...o==null?void 0:o.headers,...r.headers}),"slashes"in r)throw new TypeError("The legacy `url.Url` has been deprecated. Use `URL` instead.");if("auth"in r)throw new TypeError("Parameter `auth` is deprecated. Use `username` / `password` instead.");if("searchParams"in r&&r.searchParams&&r.searchParams!==(o==null?void 0:o.searchParams)){let b;if(nt.default.string(r.searchParams)||r.searchParams instanceof i0.URLSearchParams)b=new i0.URLSearchParams(r.searchParams);else{Iit(r.searchParams),b=new i0.URLSearchParams;for(let E in r.searchParams){let R=r.searchParams[E];R===null?b.append(E,""):R!==void 0&&b.append(E,R)}}(a=o==null?void 0:o.searchParams)===null||a===void 0||a.forEach((E,R)=>{b.has(R)||b.append(R,E)}),r.searchParams=b}if(r.username=(n=r.username)!==null&&n!==void 0?n:"",r.password=(u=r.password)!==null&&u!==void 0?u:"",nt.default.undefined(r.prefixUrl)?r.prefixUrl=(A=o==null?void 0:o.prefixUrl)!==null&&A!==void 0?A:"":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==""&&!r.prefixUrl.endsWith("/")&&(r.prefixUrl+="/")),nt.default.string(r.url)){if(r.url.startsWith("/"))throw new Error("`input` must not start with a slash when using `prefixUrl`");r.url=gle.default(r.prefixUrl+r.url,r)}else(nt.default.undefined(r.url)&&r.prefixUrl!==""||r.protocol)&&(r.url=gle.default(r.prefixUrl,r));if(r.url){"port"in r&&delete r.port;let{prefixUrl:b}=r;Object.defineProperty(r,"prefixUrl",{set:R=>{let L=r.url;if(!L.href.startsWith(R))throw new Error(`Cannot change \`prefixUrl\` from ${b} to ${R}: ${L.href}`);r.url=new i0.URL(R+L.href.slice(b.length)),b=R},get:()=>b});let{protocol:E}=r.url;if(E==="unix:"&&(E="http:",r.url=new i0.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),E!=="http:"&&E!=="https:")throw new tx(r);r.username===""?r.username=r.url.username:r.url.username=r.username,r.password===""?r.password=r.url.password:r.url.password=r.password}let{cookieJar:C}=r;if(C){let{setCookie:b,getCookieString:E}=C;nt.assert.function_(b),nt.assert.function_(E),b.length===4&&E.length===0&&(b=cle.promisify(b.bind(r.cookieJar)),E=cle.promisify(E.bind(r.cookieJar)),r.cookieJar={setCookie:b,getCookieString:E})}let{cache:w}=r;if(w&&(F4.has(w)||F4.set(w,new fle((b,E)=>{let R=b[zs](b,E);return nt.default.promise(R)&&(R.once=(L,_)=>{if(L==="error")R.catch(_);else if(L==="abort")(async()=>{try{(await R).once("abort",_)}catch{}})();else throw new Error(`Unknown HTTP2 promise event: ${L}`);return R}),R},w))),r.cacheOptions={...r.cacheOptions},r.dnsCache===!0)Q4||(Q4=new lit.default),r.dnsCache=Q4;else if(!nt.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${nt.default(r.dnsCache)}`);nt.default.number(r.timeout)?r.timeout={request:r.timeout}:o&&r.timeout!==o.timeout?r.timeout={...o.timeout,...r.timeout}:r.timeout={...r.timeout},r.context||(r.context={});let v=r.hooks===(o==null?void 0:o.hooks);r.hooks={...r.hooks};for(let b of yn.knownHookEvents)if(b in r.hooks)if(nt.default.array(r.hooks[b]))r.hooks[b]=[...r.hooks[b]];else throw new TypeError(`Parameter \`${b}\` must be an Array, got ${nt.default(r.hooks[b])}`);else r.hooks[b]=[];if(o&&!v)for(let b of yn.knownHookEvents)o.hooks[b].length>0&&(r.hooks[b]=[...o.hooks[b],...r.hooks[b]]);if("family"in r&&s0.default('"options.family" was never documented, please use "options.dnsLookupIpVersion"'),o!=null&&o.https&&(r.https={...o.https,...r.https}),"rejectUnauthorized"in r&&s0.default('"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"'),"checkServerIdentity"in r&&s0.default('"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"'),"ca"in r&&s0.default('"options.ca" was never documented, please use "options.https.certificateAuthority"'),"key"in r&&s0.default('"options.key" was never documented, please use "options.https.key"'),"cert"in r&&s0.default('"options.cert" was never documented, please use "options.https.certificate"'),"passphrase"in r&&s0.default('"options.passphrase" was never documented, please use "options.https.passphrase"'),"pfx"in r&&s0.default('"options.pfx" was never documented, please use "options.https.pfx"'),"followRedirects"in r)throw new TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");if(r.agent){for(let b in r.agent)if(b!=="http"&&b!=="https"&&b!=="http2")throw new TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${b}\``)}return r.maxRedirects=(p=r.maxRedirects)!==null&&p!==void 0?p:0,yn.setNonEnumerableProperties([o,h],r),yit.default(r,o)}_lockWrite(){let e=()=>{throw new TypeError("The payload has been already provided")};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:e}=this,{headers:r}=e,o=!nt.default.undefined(e.form),a=!nt.default.undefined(e.json),n=!nt.default.undefined(e.body),u=o||a||n,A=yn.withoutBody.has(e.method)&&!(e.method==="GET"&&e.allowGetBody);if(this._cannotHaveBody=A,u){if(A)throw new TypeError(`The \`${e.method}\` method cannot be used with a body`);if([n,o,a].filter(p=>p).length>1)throw new TypeError("The `body`, `json` and `form` options are mutually exclusive");if(n&&!(e.body instanceof ule.Readable)&&!nt.default.string(e.body)&&!nt.default.buffer(e.body)&&!ple.default(e.body))throw new TypeError("The `body` option must be a stream.Readable, string or Buffer");if(o&&!nt.default.object(e.form))throw new TypeError("The `form` option must be an Object");{let p=!nt.default.string(r["content-type"]);n?(ple.default(e.body)&&p&&(r["content-type"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[o0]=e.body):o?(p&&(r["content-type"]="application/x-www-form-urlencoded"),this[o0]=new i0.URLSearchParams(e.form).toString()):(p&&(r["content-type"]="application/json"),this[o0]=e.stringifyJson(e.json));let h=await fit.default(this[o0],e.headers);nt.default.undefined(r["content-length"])&&nt.default.undefined(r["transfer-encoding"])&&!A&&!nt.default.undefined(h)&&(r["content-length"]=String(h))}}else A?this._lockWrite():this._unlockWrite();this[wE]=Number(r["content-length"])||void 0}async _onResponseBase(e){let{options:r}=this,{url:o}=r;this[Cle]=e,r.decompress&&(e=cit(e));let a=e.statusCode,n=e;n.statusMessage=n.statusMessage?n.statusMessage:Ale.STATUS_CODES[a],n.url=r.url.toString(),n.requestUrl=this.requestUrl,n.redirectUrls=this.redirects,n.request=this,n.isFromCache=e.fromCache||!1,n.ip=this.ip,n.retryCount=this.retryCount,this[yle]=n.isFromCache,this[CE]=Number(e.headers["content-length"])||void 0,this[VP]=e,e.once("end",()=>{this[CE]=this[IE],this.emit("downloadProgress",this.downloadProgress)}),e.once("error",A=>{e.destroy(),this._beforeError(new o1(A,this))}),e.once("aborted",()=>{this._beforeError(new o1({name:"Error",message:"The server aborted pending request",code:"ECONNRESET"},this))}),this.emit("downloadProgress",this.downloadProgress);let u=e.headers["set-cookie"];if(nt.default.object(r.cookieJar)&&u){let A=u.map(async p=>r.cookieJar.setCookie(p,o.toString()));r.ignoreInvalidCookies&&(A=A.map(async p=>p.catch(()=>{})));try{await Promise.all(A)}catch(p){this._beforeError(p);return}}if(r.followRedirect&&e.headers.location&&vit.has(a)){if(e.resume(),this[zs]&&(this[k4](),delete this[zs],this[mle]()),(a===303&&r.method!=="GET"&&r.method!=="HEAD"||!r.methodRewriting)&&(r.method="GET","body"in r&&delete r.body,"json"in r&&delete r.json,"form"in r&&delete r.form,this[o0]=void 0,delete r.headers["content-length"]),this.redirects.length>=r.maxRedirects){this._beforeError(new zP(this));return}try{let p=Buffer.from(e.headers.location,"binary").toString(),h=new i0.URL(p,o),C=h.toString();decodeURI(C),h.hostname!==o.hostname||h.port!==o.port?("host"in r.headers&&delete r.headers.host,"cookie"in r.headers&&delete r.headers.cookie,"authorization"in r.headers&&delete r.headers.authorization,(r.username||r.password)&&(r.username="",r.password="")):(h.username=r.username,h.password=r.password),this.redirects.push(C),r.url=h;for(let w of r.hooks.beforeRedirect)await w(r,n);this.emit("redirect",n,r),await this._makeRequest()}catch(p){this._beforeError(p);return}return}if(r.isStream&&r.throwHttpErrors&&!mit.isResponseOk(n)){this._beforeError(new XP(n));return}e.on("readable",()=>{this[JP]&&this._read()}),this.on("resume",()=>{e.resume()}),this.on("pause",()=>{e.pause()}),e.once("end",()=>{this.push(null)}),this.emit("response",e);for(let A of this[KP])if(!A.headersSent){for(let p in e.headers){let h=r.decompress?p!=="content-encoding":!0,C=e.headers[p];h&&A.setHeader(p,C)}A.statusCode=a}}async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._beforeError(r)}}_onRequest(e){let{options:r}=this,{timeout:o,url:a}=r;ait.default(e),this[k4]=hle.default(e,o,a);let n=r.cache?"cacheableResponse":"response";e.once(n,p=>{this._onResponse(p)}),e.once("error",p=>{var h;e.destroy(),(h=e.res)===null||h===void 0||h.removeAllListeners("end"),p=p instanceof hle.TimeoutError?new ex(p,this.timings,this):new Ji(p.message,p,this),this._beforeError(p)}),this[mle]=pit.default(e,this,Sit),this[zs]=e,this.emit("uploadProgress",this.uploadProgress);let u=this[o0],A=this.redirects.length===0?this:e;nt.default.nodeStream(u)?(u.pipe(A),u.once("error",p=>{this._beforeError(new $P(p,this))})):(this._unlockWrite(),nt.default.undefined(u)?(this._cannotHaveBody||this._noPipe)&&(A.end(),this._lockWrite()):(this._writeRequest(u,void 0,()=>{}),A.end(),this._lockWrite())),this.emit("request",e)}async _createCacheableRequest(e,r){return new Promise((o,a)=>{Object.assign(r,hit.default(e)),delete r.url;let n,u=F4.get(r.cache)(r,async A=>{A._readableState.autoDestroy=!1,n&&(await n).emit("cacheableResponse",A),o(A)});r.url=e,u.once("error",a),u.once("request",async A=>{n=A,o(n)})})}async _makeRequest(){var e,r,o,a,n;let{options:u}=this,{headers:A}=u;for(let _ in A)if(nt.default.undefined(A[_]))delete A[_];else if(nt.default.null_(A[_]))throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${_}\` header`);if(u.decompress&&nt.default.undefined(A["accept-encoding"])&&(A["accept-encoding"]=Cit?"gzip, deflate, br":"gzip, deflate"),u.cookieJar){let _=await u.cookieJar.getCookieString(u.url.toString());nt.default.nonEmptyString(_)&&(u.headers.cookie=_)}for(let _ of u.hooks.beforeRequest){let J=await _(u);if(!nt.default.undefined(J)){u.request=()=>J;break}}u.body&&this[o0]!==u.body&&(this[o0]=u.body);let{agent:p,request:h,timeout:C,url:w}=u;if(u.dnsCache&&!("lookup"in u)&&(u.lookup=u.dnsCache.lookup),w.hostname==="unix"){let _=/(?<socketPath>.+?):(?<path>.+)/.exec(`${w.pathname}${w.search}`);if(_!=null&&_.groups){let{socketPath:J,path:re}=_.groups;Object.assign(u,{socketPath:J,path:re,host:""})}}let v=w.protocol==="https:",b;u.http2?b=uit.auto:b=v?oit.request:Ale.request;let E=(e=u.request)!==null&&e!==void 0?e:b,R=u.cache?this._createCacheableRequest:E;p&&!u.http2&&(u.agent=p[v?"https":"http"]),u[zs]=E,delete u.request,delete u.timeout;let L=u;if(L.shared=(r=u.cacheOptions)===null||r===void 0?void 0:r.shared,L.cacheHeuristic=(o=u.cacheOptions)===null||o===void 0?void 0:o.cacheHeuristic,L.immutableMinTimeToLive=(a=u.cacheOptions)===null||a===void 0?void 0:a.immutableMinTimeToLive,L.ignoreCargoCult=(n=u.cacheOptions)===null||n===void 0?void 0:n.ignoreCargoCult,u.dnsLookupIpVersion!==void 0)try{L.family=dle.dnsLookupIpVersionToFamily(u.dnsLookupIpVersion)}catch{throw new Error("Invalid `dnsLookupIpVersion` option value")}u.https&&("rejectUnauthorized"in u.https&&(L.rejectUnauthorized=u.https.rejectUnauthorized),u.https.checkServerIdentity&&(L.checkServerIdentity=u.https.checkServerIdentity),u.https.certificateAuthority&&(L.ca=u.https.certificateAuthority),u.https.certificate&&(L.cert=u.https.certificate),u.https.key&&(L.key=u.https.key),u.https.passphrase&&(L.passphrase=u.https.passphrase),u.https.pfx&&(L.pfx=u.https.pfx));try{let _=await R(w,L);nt.default.undefined(_)&&(_=b(w,L)),u.request=h,u.timeout=C,u.agent=p,u.https&&("rejectUnauthorized"in u.https&&delete L.rejectUnauthorized,u.https.checkServerIdentity&&delete L.checkServerIdentity,u.https.certificateAuthority&&delete L.ca,u.https.certificate&&delete L.cert,u.https.key&&delete L.key,u.https.passphrase&&delete L.passphrase,u.https.pfx&&delete L.pfx),wit(_)?this._onRequest(_):this.writable?(this.once("finish",()=>{this._onResponse(_)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(_)}catch(_){throw _ instanceof fle.CacheError?new ZP(_,this):new Ji(_.message,_,this)}}async _error(e){try{for(let r of this.options.hooks.beforeError)e=await r(e)}catch(r){e=new Ji(r.message,r,this)}this.destroy(e)}_beforeError(e){if(this[vE])return;let{options:r}=this,o=this.retryCount+1;this[vE]=!0,e instanceof Ji||(e=new Ji(e.message,e,this));let a=e,{response:n}=a;(async()=>{if(n&&!n.body){n.setEncoding(this._readableState.encoding);try{n.rawBody=await dit.default(n),n.body=n.rawBody.toString()}catch{}}if(this.listenerCount("retry")!==0){let u;try{let A;n&&"retry-after"in n.headers&&(A=Number(n.headers["retry-after"]),Number.isNaN(A)?(A=Date.parse(n.headers["retry-after"])-Date.now(),A<=0&&(A=1)):A*=1e3),u=await r.retry.calculateDelay({attemptCount:o,retryOptions:r.retry,error:a,retryAfter:A,computedValue:Eit.default({attemptCount:o,retryOptions:r.retry,error:a,retryAfter:A,computedValue:0})})}catch(A){this._error(new Ji(A.message,A,this));return}if(u){let A=async()=>{try{for(let p of this.options.hooks.beforeRetry)await p(this.options,a,o)}catch(p){this._error(new Ji(p.message,e,this));return}this.destroyed||(this.destroy(),this.emit("retry",o,e))};this[Ile]=setTimeout(A,u);return}}this._error(a)})()}_read(){this[JP]=!0;let e=this[VP];if(e&&!this[vE]){e.readableLength&&(this[JP]=!1);let r;for(;(r=e.read())!==null;){this[IE]+=r.length,this[Ele]=!0;let o=this.downloadProgress;o.percent<1&&this.emit("downloadProgress",o),this.push(r)}}}_write(e,r,o){let a=()=>{this._writeRequest(e,r,o)};this.requestInitialized?a():this[s1].push(a)}_writeRequest(e,r,o){this[zs].destroyed||(this._progressCallbacks.push(()=>{this[BE]+=Buffer.byteLength(e,r);let a=this.uploadProgress;a.percent<1&&this.emit("uploadProgress",a)}),this[zs].write(e,r,a=>{!a&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),o(a)}))}_final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(zs in this)){e();return}if(this[zs].destroyed){e();return}this[zs].end(o=>{o||(this[wE]=this[BE],this.emit("uploadProgress",this.uploadProgress),this[zs].emit("upload-complete")),e(o)})};this.requestInitialized?r():this[s1].push(r)}_destroy(e,r){var o;this[vE]=!0,clearTimeout(this[Ile]),zs in this&&(this[k4](),!((o=this[VP])===null||o===void 0)&&o.complete||this[zs].destroy()),e!==null&&!nt.default.undefined(e)&&!(e instanceof Ji)&&(e=new Ji(e.message,e,this)),r(e)}get _isAboutToError(){return this[vE]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,r,o;return((r=(e=this[zs])===null||e===void 0?void 0:e.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!(!((o=this[Cle])===null||o===void 0)&&o.complete)}get socket(){var e,r;return(r=(e=this[zs])===null||e===void 0?void 0:e.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let e;return this[CE]?e=this[IE]/this[CE]:this[CE]===this[IE]?e=1:e=0,{percent:e,transferred:this[IE],total:this[CE]}}get uploadProgress(){let e;return this[wE]?e=this[BE]/this[wE]:this[wE]===this[BE]?e=1:e=0,{percent:e,transferred:this[BE],total:this[wE]}}get timings(){var e;return(e=this[zs])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[yle]}pipe(e,r){if(this[Ele])throw new Error("Failed to pipe. The response has been emitted already.");return e instanceof b4.ServerResponse&&this[KP].add(e),super.pipe(e,r)}unpipe(e){return e instanceof b4.ServerResponse&&this[KP].delete(e),super.unpipe(e),this}};yn.default=rx});var l1=U(Wc=>{"use strict";var Pit=Wc&&Wc.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),xit=Wc&&Wc.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&Pit(e,t,r)};Object.defineProperty(Wc,"__esModule",{value:!0});Wc.CancelError=Wc.ParseError=void 0;var wle=a1(),R4=class extends wle.RequestError{constructor(e,r){let{options:o}=r.request;super(`${e.message} in "${o.url.toString()}"`,e,r.request),this.name="ParseError"}};Wc.ParseError=R4;var T4=class extends wle.RequestError{constructor(e){super("Promise was canceled",{},e),this.name="CancelError"}get isCanceled(){return!0}};Wc.CancelError=T4;xit(a1(),Wc)});var vle=U(N4=>{"use strict";Object.defineProperty(N4,"__esModule",{value:!0});var Ble=l1(),bit=(t,e,r,o)=>{let{rawBody:a}=t;try{if(e==="text")return a.toString(o);if(e==="json")return a.length===0?"":r(a.toString());if(e==="buffer")return a;throw new Ble.ParseError({message:`Unknown body type '${e}'`,name:"Error"},t)}catch(n){throw new Ble.ParseError(n,t)}};N4.default=bit});var L4=U(a0=>{"use strict";var Qit=a0&&a0.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),kit=a0&&a0.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&Qit(e,t,r)};Object.defineProperty(a0,"__esModule",{value:!0});var Fit=Ie("events"),Rit=Ff(),Tit=voe(),nx=l1(),Dle=vle(),Sle=a1(),Nit=y4(),Lit=D4(),Ple=S4(),Oit=["request","response","redirect","uploadProgress","downloadProgress"];function xle(t){let e,r,o=new Fit.EventEmitter,a=new Tit((u,A,p)=>{let h=C=>{let w=new Sle.default(void 0,t);w.retryCount=C,w._noPipe=!0,p(()=>w.destroy()),p.shouldReject=!1,p(()=>A(new nx.CancelError(w))),e=w,w.once("response",async E=>{var R;if(E.retryCount=C,E.request.aborted)return;let L;try{L=await Lit.default(w),E.rawBody=L}catch{return}if(w._isAboutToError)return;let _=((R=E.headers["content-encoding"])!==null&&R!==void 0?R:"").toLowerCase(),J=["gzip","deflate","br"].includes(_),{options:re}=w;if(J&&!re.decompress)E.body=L;else try{E.body=Dle.default(E,re.responseType,re.parseJson,re.encoding)}catch(oe){if(E.body=L.toString(),Ple.isResponseOk(E)){w._beforeError(oe);return}}try{for(let[oe,pe]of re.hooks.afterResponse.entries())E=await pe(E,async he=>{let ve=Sle.default.normalizeArguments(void 0,{...he,retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1},re);ve.hooks.afterResponse=ve.hooks.afterResponse.slice(0,oe);for(let le of ve.hooks.beforeRetry)await le(ve);let ge=xle(ve);return p(()=>{ge.catch(()=>{}),ge.cancel()}),ge})}catch(oe){w._beforeError(new nx.RequestError(oe.message,oe,w));return}if(!Ple.isResponseOk(E)){w._beforeError(new nx.HTTPError(E));return}r=E,u(w.options.resolveBodyOnly?E.body:E)});let v=E=>{if(a.isCanceled)return;let{options:R}=w;if(E instanceof nx.HTTPError&&!R.throwHttpErrors){let{response:L}=E;u(w.options.resolveBodyOnly?L.body:L);return}A(E)};w.once("error",v);let b=w.options.body;w.once("retry",(E,R)=>{var L,_;if(b===((L=R.request)===null||L===void 0?void 0:L.options.body)&&Rit.default.nodeStream((_=R.request)===null||_===void 0?void 0:_.options.body)){v(R);return}h(E)}),Nit.default(w,o,Oit)};h(0)});a.on=(u,A)=>(o.on(u,A),a);let n=u=>{let A=(async()=>{await a;let{options:p}=r.request;return Dle.default(r,u,p.parseJson,p.encoding)})();return Object.defineProperties(A,Object.getOwnPropertyDescriptors(a)),A};return a.json=()=>{let{headers:u}=e.options;return!e.writableFinished&&u.accept===void 0&&(u.accept="application/json"),n("json")},a.buffer=()=>n("buffer"),a.text=()=>n("text"),a}a0.default=xle;kit(l1(),a0)});var ble=U(O4=>{"use strict";Object.defineProperty(O4,"__esModule",{value:!0});var Mit=l1();function Uit(t,...e){let r=(async()=>{if(t instanceof Mit.RequestError)try{for(let a of e)if(a)for(let n of a)t=await n(t)}catch(a){t=a}throw t})(),o=()=>r;return r.json=o,r.text=o,r.buffer=o,r.on=o,r}O4.default=Uit});var Fle=U(M4=>{"use strict";Object.defineProperty(M4,"__esModule",{value:!0});var Qle=Ff();function kle(t){for(let e of Object.values(t))(Qle.default.plainObject(e)||Qle.default.array(e))&&kle(e);return Object.freeze(t)}M4.default=kle});var Tle=U(Rle=>{"use strict";Object.defineProperty(Rle,"__esModule",{value:!0})});var U4=U(Xl=>{"use strict";var _it=Xl&&Xl.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),Hit=Xl&&Xl.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&_it(e,t,r)};Object.defineProperty(Xl,"__esModule",{value:!0});Xl.defaultHandler=void 0;var Nle=Ff(),zl=L4(),qit=ble(),sx=a1(),jit=Fle(),Git={RequestError:zl.RequestError,CacheError:zl.CacheError,ReadError:zl.ReadError,HTTPError:zl.HTTPError,MaxRedirectsError:zl.MaxRedirectsError,TimeoutError:zl.TimeoutError,ParseError:zl.ParseError,CancelError:zl.CancelError,UnsupportedProtocolError:zl.UnsupportedProtocolError,UploadError:zl.UploadError},Wit=async t=>new Promise(e=>{setTimeout(e,t)}),{normalizeArguments:ix}=sx.default,Lle=(...t)=>{let e;for(let r of t)e=ix(void 0,r,e);return e},Yit=t=>t.isStream?new sx.default(void 0,t):zl.default(t),Kit=t=>"defaults"in t&&"options"in t.defaults,Jit=["get","post","put","patch","head","delete"];Xl.defaultHandler=(t,e)=>e(t);var Ole=(t,e)=>{if(t)for(let r of t)r(e)},Mle=t=>{t._rawHandlers=t.handlers,t.handlers=t.handlers.map(o=>(a,n)=>{let u,A=o(a,p=>(u=n(p),u));if(A!==u&&!a.isStream&&u){let p=A,{then:h,catch:C,finally:w}=p;Object.setPrototypeOf(p,Object.getPrototypeOf(u)),Object.defineProperties(p,Object.getOwnPropertyDescriptors(u)),p.then=h,p.catch=C,p.finally=w}return A});let e=(o,a={},n)=>{var u,A;let p=0,h=C=>t.handlers[p++](C,p===t.handlers.length?Yit:h);if(Nle.default.plainObject(o)){let C={...o,...a};sx.setNonEnumerableProperties([o,a],C),a=C,o=void 0}try{let C;try{Ole(t.options.hooks.init,a),Ole((u=a.hooks)===null||u===void 0?void 0:u.init,a)}catch(v){C=v}let w=ix(o,a,n??t.options);if(w[sx.kIsNormalizedAlready]=!0,C)throw new zl.RequestError(C.message,C,w);return h(w)}catch(C){if(a.isStream)throw C;return qit.default(C,t.options.hooks.beforeError,(A=a.hooks)===null||A===void 0?void 0:A.beforeError)}};e.extend=(...o)=>{let a=[t.options],n=[...t._rawHandlers],u;for(let A of o)Kit(A)?(a.push(A.defaults.options),n.push(...A.defaults._rawHandlers),u=A.defaults.mutableDefaults):(a.push(A),"handlers"in A&&n.push(...A.handlers),u=A.mutableDefaults);return n=n.filter(A=>A!==Xl.defaultHandler),n.length===0&&n.push(Xl.defaultHandler),Mle({options:Lle(...a),handlers:n,mutableDefaults:Boolean(u)})};let r=async function*(o,a){let n=ix(o,a,t.options);n.resolveBodyOnly=!1;let u=n.pagination;if(!Nle.default.object(u))throw new TypeError("`options.pagination` must be implemented");let A=[],{countLimit:p}=u,h=0;for(;h<u.requestLimit;){h!==0&&await Wit(u.backoff);let C=await e(void 0,void 0,n),w=await u.transform(C),v=[];for(let E of w)if(u.filter(E,A,v)&&(!u.shouldContinue(E,A,v)||(yield E,u.stackAllItems&&A.push(E),v.push(E),--p<=0)))return;let b=u.paginate(C,A,v);if(b===!1)return;b===C.request.options?n=C.request.options:b!==void 0&&(n=ix(void 0,b,n)),h++}};e.paginate=r,e.paginate.all=async(o,a)=>{let n=[];for await(let u of r(o,a))n.push(u);return n},e.paginate.each=r,e.stream=(o,a)=>e(o,{...a,isStream:!0});for(let o of Jit)e[o]=(a,n)=>e(a,{...n,method:o}),e.stream[o]=(a,n)=>e(a,{...n,method:o,isStream:!0});return Object.assign(e,Git),Object.defineProperty(e,"defaults",{value:t.mutableDefaults?t:jit.default(t),writable:t.mutableDefaults,configurable:t.mutableDefaults,enumerable:!0}),e.mergeOptions=Lle,e};Xl.default=Mle;Hit(Tle(),Xl)});var Hle=U((Rf,ox)=>{"use strict";var Vit=Rf&&Rf.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),Ule=Rf&&Rf.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&Vit(e,t,r)};Object.defineProperty(Rf,"__esModule",{value:!0});var zit=Ie("url"),_le=U4(),Xit={options:{method:"GET",retry:{limit:2,methods:["GET","PUT","HEAD","DELETE","OPTIONS","TRACE"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN"],maxRetryAfter:void 0,calculateDelay:({computedValue:t})=>t},timeout:{},headers:{"user-agent":"got (https://github.com/sindresorhus/got)"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:"text",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:"",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:t=>t.request.options.responseType==="json"?t.body:JSON.parse(t.body),paginate:t=>{if(!Reflect.has(t.headers,"link"))return!1;let e=t.headers.link.split(","),r;for(let o of e){let a=o.split(";");if(a[1].includes("next")){r=a[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new zit.URL(r)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:1/0,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:t=>JSON.parse(t),stringifyJson:t=>JSON.stringify(t),cacheOptions:{}},handlers:[_le.defaultHandler],mutableDefaults:!1},_4=_le.default(Xit);Rf.default=_4;ox.exports=_4;ox.exports.default=_4;ox.exports.__esModule=!0;Ule(U4(),Rf);Ule(L4(),Rf)});var ln={};Yt(ln,{Method:()=>Jle,del:()=>rst,get:()=>G4,getNetworkSettings:()=>Kle,post:()=>W4,put:()=>tst,request:()=>c1});function Gle(t){let e=new ax.URL(t),r={host:e.hostname,headers:{}};return e.port&&(r.port=Number(e.port)),e.username&&e.password&&(r.proxyAuth=`${e.username}:${e.password}`),{proxy:r}}async function H4(t){return Bf(jle,t,()=>ae.readFilePromise(t).then(e=>(jle.set(t,e),e)))}function est({statusCode:t,statusMessage:e},r){let o=Kt(r,t,Bt.NUMBER),a=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${t}`;return Yy(r,`${o}${e?` (${e})`:""}`,a)}async function lx(t,{configuration:e,customErrorMessage:r}){var o;try{return await t}catch(a){if(a.name!=="HTTPError")throw a;let n=(r==null?void 0:r(a,e))??((o=a.response.body)==null?void 0:o.error);n==null&&(a.message.startsWith("Response code")?n="The remote server failed to provide the requested resource":n=a.message),a.code==="ETIMEDOUT"&&a.event==="socket"&&(n+=`(can be increased via ${Kt(e,"httpTimeout",Bt.SETTING)})`);let u=new Jt(35,n,A=>{a.response&&A.reportError(35,` ${Zu(e,{label:"Response Code",value:Hc(Bt.NO_HINT,est(a.response,e))})}`),a.request&&(A.reportError(35,` ${Zu(e,{label:"Request Method",value:Hc(Bt.NO_HINT,a.request.options.method)})}`),A.reportError(35,` ${Zu(e,{label:"Request URL",value:Hc(Bt.URL,a.request.requestUrl)})}`)),a.request.redirects.length>0&&A.reportError(35,` ${Zu(e,{label:"Request Redirects",value:Hc(Bt.NO_HINT,IL(e,a.request.redirects,Bt.URL))})}`),a.request.retryCount===a.request.options.retry.limit&&A.reportError(35,` ${Zu(e,{label:"Request Retry Count",value:Hc(Bt.NO_HINT,`${Kt(e,a.request.retryCount,Bt.NUMBER)} (can be increased via ${Kt(e,"httpRetry",Bt.SETTING)})`)})}`)});throw u.originalError=a,u}}function Kle(t,e){let r=[...e.configuration.get("networkSettings")].sort(([u],[A])=>A.length-u.length),o={enableNetwork:void 0,httpsCaFilePath:void 0,httpProxy:void 0,httpsProxy:void 0,httpsKeyFilePath:void 0,httpsCertFilePath:void 0},a=Object.keys(o),n=typeof t=="string"?new ax.URL(t):t;for(let[u,A]of r)if(j4.default.isMatch(n.hostname,u))for(let p of a){let h=A.get(p);h!==null&&typeof o[p]>"u"&&(o[p]=h)}for(let u of a)typeof o[u]>"u"&&(o[u]=e.configuration.get(u));return o}async function c1(t,e,{configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:u="GET"}){let A=async()=>await nst(t,e,{configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:u});return await(await r.reduceHook(h=>h.wrapNetworkRequest,A,{target:t,body:e,configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:u}))()}async function G4(t,{configuration:e,jsonResponse:r,customErrorMessage:o,...a}){let n=Bf(qle,t,()=>lx(c1(t,null,{configuration:e,...a}),{configuration:e,customErrorMessage:o}).then(u=>(qle.set(t,u.body),u.body)));return Buffer.isBuffer(n)===!1&&(n=await n),r?JSON.parse(n.toString()):n}async function tst(t,e,{customErrorMessage:r,...o}){return(await lx(c1(t,e,{...o,method:"PUT"}),{customErrorMessage:r,configuration:o.configuration})).body}async function W4(t,e,{customErrorMessage:r,...o}){return(await lx(c1(t,e,{...o,method:"POST"}),{customErrorMessage:r,configuration:o.configuration})).body}async function rst(t,{customErrorMessage:e,...r}){return(await lx(c1(t,null,{...r,method:"DELETE"}),{customErrorMessage:e,configuration:r.configuration})).body}async function nst(t,e,{configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:u="GET"}){let A=typeof t=="string"?new ax.URL(t):t,p=Kle(A,{configuration:r});if(p.enableNetwork===!1)throw new Jt(80,`Request to '${A.href}' has been blocked because of your configuration settings`);if(A.protocol==="http:"&&!j4.default.isMatch(A.hostname,r.get("unsafeHttpWhitelist")))throw new Jt(81,`Unsafe http requests must be explicitly whitelisted in your configuration (${A.hostname})`);let C={agent:{http:p.httpProxy?q4.default.httpOverHttp(Gle(p.httpProxy)):Zit,https:p.httpsProxy?q4.default.httpsOverHttp(Gle(p.httpsProxy)):$it},headers:o,method:u};C.responseType=n?"json":"buffer",e!==null&&(Buffer.isBuffer(e)||!a&&typeof e=="string"?C.body=e:C.json=e);let w=r.get("httpTimeout"),v=r.get("httpRetry"),b=r.get("enableStrictSsl"),E=p.httpsCaFilePath,R=p.httpsCertFilePath,L=p.httpsKeyFilePath,{default:_}=await Promise.resolve().then(()=>tt(Hle())),J=E?await H4(E):void 0,re=R?await H4(R):void 0,oe=L?await H4(L):void 0,pe=_.extend({timeout:{socket:w},retry:v,https:{rejectUnauthorized:b,certificateAuthority:J,certificate:re,key:oe},...C});return r.getLimit("networkConcurrency")(()=>pe(A))}var Wle,Yle,j4,q4,ax,qle,jle,Zit,$it,Jle,cx=dt(()=>{bt();Wle=Ie("https"),Yle=Ie("http"),j4=tt(Jo()),q4=tt(Eoe()),ax=Ie("url");Jl();Yl();Gl();qle=new Map,jle=new Map,Zit=new Yle.Agent({keepAlive:!0}),$it=new Wle.Agent({keepAlive:!0});Jle=(a=>(a.GET="GET",a.PUT="PUT",a.POST="POST",a.DELETE="DELETE",a))(Jle||{})});var As={};Yt(As,{availableParallelism:()=>J4,builtinModules:()=>Y4,getArchitecture:()=>u1,getArchitectureName:()=>ost,getArchitectureSet:()=>K4,getCaller:()=>ust,openUrl:()=>ist});function Y4(){return new Set(Zle.default.builtinModules||Object.keys(process.binding("natives")))}function sst(){var o;if(process.platform==="win32")return null;let e=(((o=process.report)==null?void 0:o.getReport())??{}).sharedObjects??[],r=/\/(?:(ld-linux-|[^/]+-linux-gnu\/)|(libc.musl-|ld-musl-))/;return Rw(e,a=>{let n=a.match(r);if(!n)return Rw.skip;if(n[1])return"glibc";if(n[2])return"musl";throw new Error("Assertion failed: Expected the libc variant to have been detected")})??null}function u1(){return zle=zle??{os:process.platform,cpu:process.arch,libc:sst()}}function ost(t=u1()){return t.libc?`${t.os}-${t.cpu}-${t.libc}`:`${t.os}-${t.cpu}`}function K4(){let t=u1();return Xle=Xle??{os:[t.os],cpu:[t.cpu],libc:t.libc?[t.libc]:[]}}function cst(t){let e=ast.exec(t);if(!e)return null;let r=e[2]&&e[2].indexOf("native")===0,o=e[2]&&e[2].indexOf("eval")===0,a=lst.exec(e[2]);return o&&a!=null&&(e[2]=a[1],e[3]=a[2],e[4]=a[3]),{file:r?null:e[2],methodName:e[1]||"<unknown>",arguments:r?[e[2]]:[],line:e[3]?+e[3]:null,column:e[4]?+e[4]:null}}function ust(){let e=new Error().stack.split(` | 141 | `)}`}}};yn.RequestError=Vi;var sx=class extends Vi{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e),this.name="MaxRedirectsError"}};yn.MaxRedirectsError=sx;var ox=class extends Vi{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request),this.name="HTTPError"}};yn.HTTPError=ox;var ax=class extends Vi{constructor(e,r){super(e.message,e,r),this.name="CacheError"}};yn.CacheError=ax;var lx=class extends Vi{constructor(e,r){super(e.message,e,r),this.name="UploadError"}};yn.UploadError=lx;var cx=class extends Vi{constructor(e,r,o){super(e.message,e,o),this.name="TimeoutError",this.event=e.event,this.timings=r}};yn.TimeoutError=cx;var A1=class extends Vi{constructor(e,r){super(e.message,e,r),this.name="ReadError"}};yn.ReadError=A1;var ux=class extends Vi{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e),this.name="UnsupportedProtocolError"}};yn.UnsupportedProtocolError=ux;var Hit=["socket","connect","continue","information","upgrade","timeout"],Ax=class extends yle.Duplex{constructor(e,r={},o){super({autoDestroy:!1,highWaterMark:0}),this[SE]=0,this[xE]=0,this.requestInitialized=!1,this[rx]=new Set,this.redirects=[],this[bE]=!1,this[nx]=!1,this[u1]=[],this.retryCount=0,this._progressCallbacks=[];let a=()=>this._unlockWrite(),n=()=>this._lockWrite();this.on("pipe",h=>{h.prependListener("data",a),h.on("data",n),h.prependListener("end",a),h.on("end",n)}),this.on("unpipe",h=>{h.off("data",a),h.off("data",n),h.off("end",a),h.off("end",n)}),this.on("pipe",h=>{h instanceof F4.IncomingMessage&&(this.options.headers={...h.headers,...this.options.headers})});let{json:u,body:A,form:p}=r;if((u||A||p)&&this._lockWrite(),yn.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(e,r,o)}catch(h){nt.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(h);return}(async()=>{var h;try{this.options.body instanceof Cit.ReadStream&&await Mit(this.options.body);let{url:C}=this.options;if(!C)throw new TypeError("Missing `url` property");if(this.requestUrl=C.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed){(h=this[zs])===null||h===void 0||h.destroy();return}for(let w of this[u1])w();this[u1].length=0,this.requestInitialized=!0}catch(C){if(C instanceof Vi){this._beforeError(C);return}this.destroyed||this.destroy(C)}})()}static normalizeArguments(e,r,o){var a,n,u,A,p;let h=r;if(nt.default.object(e)&&!nt.default.urlInstance(e))r={...o,...e,...r};else{if(e&&r&&r.url!==void 0)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");r={...o,...r},e!==void 0&&(r.url=e),nt.default.urlInstance(r.url)&&(r.url=new a0.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),nt.assert.any([nt.default.string,nt.default.undefined],r.method),nt.assert.any([nt.default.object,nt.default.undefined],r.headers),nt.assert.any([nt.default.string,nt.default.urlInstance,nt.default.undefined],r.prefixUrl),nt.assert.any([nt.default.object,nt.default.undefined],r.cookieJar),nt.assert.any([nt.default.object,nt.default.string,nt.default.undefined],r.searchParams),nt.assert.any([nt.default.object,nt.default.string,nt.default.undefined],r.cache),nt.assert.any([nt.default.object,nt.default.number,nt.default.undefined],r.timeout),nt.assert.any([nt.default.object,nt.default.undefined],r.context),nt.assert.any([nt.default.object,nt.default.undefined],r.hooks),nt.assert.any([nt.default.boolean,nt.default.undefined],r.decompress),nt.assert.any([nt.default.boolean,nt.default.undefined],r.ignoreInvalidCookies),nt.assert.any([nt.default.boolean,nt.default.undefined],r.followRedirect),nt.assert.any([nt.default.number,nt.default.undefined],r.maxRedirects),nt.assert.any([nt.default.boolean,nt.default.undefined],r.throwHttpErrors),nt.assert.any([nt.default.boolean,nt.default.undefined],r.http2),nt.assert.any([nt.default.boolean,nt.default.undefined],r.allowGetBody),nt.assert.any([nt.default.string,nt.default.undefined],r.localAddress),nt.assert.any([vle.isDnsLookupIpVersion,nt.default.undefined],r.dnsLookupIpVersion),nt.assert.any([nt.default.object,nt.default.undefined],r.https),nt.assert.any([nt.default.boolean,nt.default.undefined],r.rejectUnauthorized),r.https&&(nt.assert.any([nt.default.boolean,nt.default.undefined],r.https.rejectUnauthorized),nt.assert.any([nt.default.function_,nt.default.undefined],r.https.checkServerIdentity),nt.assert.any([nt.default.string,nt.default.object,nt.default.array,nt.default.undefined],r.https.certificateAuthority),nt.assert.any([nt.default.string,nt.default.object,nt.default.array,nt.default.undefined],r.https.key),nt.assert.any([nt.default.string,nt.default.object,nt.default.array,nt.default.undefined],r.https.certificate),nt.assert.any([nt.default.string,nt.default.undefined],r.https.passphrase),nt.assert.any([nt.default.string,nt.default.buffer,nt.default.array,nt.default.undefined],r.https.pfx)),nt.assert.any([nt.default.object,nt.default.undefined],r.cacheOptions),nt.default.string(r.method)?r.method=r.method.toUpperCase():r.method="GET",r.headers===(o==null?void 0:o.headers)?r.headers={...r.headers}:r.headers=Sit({...o==null?void 0:o.headers,...r.headers}),"slashes"in r)throw new TypeError("The legacy `url.Url` has been deprecated. Use `URL` instead.");if("auth"in r)throw new TypeError("Parameter `auth` is deprecated. Use `username` / `password` instead.");if("searchParams"in r&&r.searchParams&&r.searchParams!==(o==null?void 0:o.searchParams)){let b;if(nt.default.string(r.searchParams)||r.searchParams instanceof a0.URLSearchParams)b=new a0.URLSearchParams(r.searchParams);else{Lit(r.searchParams),b=new a0.URLSearchParams;for(let E in r.searchParams){let R=r.searchParams[E];R===null?b.append(E,""):R!==void 0&&b.append(E,R)}}(a=o==null?void 0:o.searchParams)===null||a===void 0||a.forEach((E,R)=>{b.has(R)||b.append(R,E)}),r.searchParams=b}if(r.username=(n=r.username)!==null&&n!==void 0?n:"",r.password=(u=r.password)!==null&&u!==void 0?u:"",nt.default.undefined(r.prefixUrl)?r.prefixUrl=(A=o==null?void 0:o.prefixUrl)!==null&&A!==void 0?A:"":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==""&&!r.prefixUrl.endsWith("/")&&(r.prefixUrl+="/")),nt.default.string(r.url)){if(r.url.startsWith("/"))throw new Error("`input` must not start with a slash when using `prefixUrl`");r.url=Ble.default(r.prefixUrl+r.url,r)}else(nt.default.undefined(r.url)&&r.prefixUrl!==""||r.protocol)&&(r.url=Ble.default(r.prefixUrl,r));if(r.url){"port"in r&&delete r.port;let{prefixUrl:b}=r;Object.defineProperty(r,"prefixUrl",{set:R=>{let L=r.url;if(!L.href.startsWith(R))throw new Error(`Cannot change \`prefixUrl\` from ${b} to ${R}: ${L.href}`);r.url=new a0.URL(R+L.href.slice(b.length)),b=R},get:()=>b});let{protocol:E}=r.url;if(E==="unix:"&&(E="http:",r.url=new a0.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),E!=="http:"&&E!=="https:")throw new ux(r);r.username===""?r.username=r.url.username:r.url.username=r.username,r.password===""?r.password=r.url.password:r.url.password=r.password}let{cookieJar:C}=r;if(C){let{setCookie:b,getCookieString:E}=C;nt.assert.function_(b),nt.assert.function_(E),b.length===4&&E.length===0&&(b=mle.promisify(b.bind(r.cookieJar)),E=mle.promisify(E.bind(r.cookieJar)),r.cookieJar={setCookie:b,getCookieString:E})}let{cache:w}=r;if(w&&(N4.has(w)||N4.set(w,new Cle((b,E)=>{let R=b[zs](b,E);return nt.default.promise(R)&&(R.once=(L,_)=>{if(L==="error")R.catch(_);else if(L==="abort")(async()=>{try{(await R).once("abort",_)}catch{}})();else throw new Error(`Unknown HTTP2 promise event: ${L}`);return R}),R},w))),r.cacheOptions={...r.cacheOptions},r.dnsCache===!0)R4||(R4=new Bit.default),r.dnsCache=R4;else if(!nt.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \`dnsCache\` must be a CacheableLookup instance or a boolean, got ${nt.default(r.dnsCache)}`);nt.default.number(r.timeout)?r.timeout={request:r.timeout}:o&&r.timeout!==o.timeout?r.timeout={...o.timeout,...r.timeout}:r.timeout={...r.timeout},r.context||(r.context={});let v=r.hooks===(o==null?void 0:o.hooks);r.hooks={...r.hooks};for(let b of yn.knownHookEvents)if(b in r.hooks)if(nt.default.array(r.hooks[b]))r.hooks[b]=[...r.hooks[b]];else throw new TypeError(`Parameter \`${b}\` must be an Array, got ${nt.default(r.hooks[b])}`);else r.hooks[b]=[];if(o&&!v)for(let b of yn.knownHookEvents)o.hooks[b].length>0&&(r.hooks[b]=[...o.hooks[b],...r.hooks[b]]);if("family"in r&&l0.default('"options.family" was never documented, please use "options.dnsLookupIpVersion"'),o!=null&&o.https&&(r.https={...o.https,...r.https}),"rejectUnauthorized"in r&&l0.default('"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"'),"checkServerIdentity"in r&&l0.default('"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"'),"ca"in r&&l0.default('"options.ca" was never documented, please use "options.https.certificateAuthority"'),"key"in r&&l0.default('"options.key" was never documented, please use "options.https.key"'),"cert"in r&&l0.default('"options.cert" was never documented, please use "options.https.certificate"'),"passphrase"in r&&l0.default('"options.passphrase" was never documented, please use "options.https.passphrase"'),"pfx"in r&&l0.default('"options.pfx" was never documented, please use "options.https.pfx"'),"followRedirects"in r)throw new TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");if(r.agent){for(let b in r.agent)if(b!=="http"&&b!=="https"&&b!=="http2")throw new TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${b}\``)}return r.maxRedirects=(p=r.maxRedirects)!==null&&p!==void 0?p:0,yn.setNonEnumerableProperties([o,h],r),Rit.default(r,o)}_lockWrite(){let e=()=>{throw new TypeError("The payload has been already provided")};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:e}=this,{headers:r}=e,o=!nt.default.undefined(e.form),a=!nt.default.undefined(e.json),n=!nt.default.undefined(e.body),u=o||a||n,A=yn.withoutBody.has(e.method)&&!(e.method==="GET"&&e.allowGetBody);if(this._cannotHaveBody=A,u){if(A)throw new TypeError(`The \`${e.method}\` method cannot be used with a body`);if([n,o,a].filter(p=>p).length>1)throw new TypeError("The `body`, `json` and `form` options are mutually exclusive");if(n&&!(e.body instanceof yle.Readable)&&!nt.default.string(e.body)&&!nt.default.buffer(e.body)&&!Ile.default(e.body))throw new TypeError("The `body` option must be a stream.Readable, string or Buffer");if(o&&!nt.default.object(e.form))throw new TypeError("The `form` option must be an Object");{let p=!nt.default.string(r["content-type"]);n?(Ile.default(e.body)&&p&&(r["content-type"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[c0]=e.body):o?(p&&(r["content-type"]="application/x-www-form-urlencoded"),this[c0]=new a0.URLSearchParams(e.form).toString()):(p&&(r["content-type"]="application/json"),this[c0]=e.stringifyJson(e.json));let h=await Pit.default(this[c0],e.headers);nt.default.undefined(r["content-length"])&&nt.default.undefined(r["transfer-encoding"])&&!A&&!nt.default.undefined(h)&&(r["content-length"]=String(h))}}else A?this._lockWrite():this._unlockWrite();this[PE]=Number(r["content-length"])||void 0}async _onResponseBase(e){let{options:r}=this,{url:o}=r;this[xle]=e,r.decompress&&(e=vit(e));let a=e.statusCode,n=e;n.statusMessage=n.statusMessage?n.statusMessage:Ele.STATUS_CODES[a],n.url=r.url.toString(),n.requestUrl=this.requestUrl,n.redirectUrls=this.redirects,n.request=this,n.isFromCache=e.fromCache||!1,n.ip=this.ip,n.retryCount=this.retryCount,this[Sle]=n.isFromCache,this[DE]=Number(e.headers["content-length"])||void 0,this[ix]=e,e.once("end",()=>{this[DE]=this[SE],this.emit("downloadProgress",this.downloadProgress)}),e.once("error",A=>{e.destroy(),this._beforeError(new A1(A,this))}),e.once("aborted",()=>{this._beforeError(new A1({name:"Error",message:"The server aborted pending request",code:"ECONNRESET"},this))}),this.emit("downloadProgress",this.downloadProgress);let u=e.headers["set-cookie"];if(nt.default.object(r.cookieJar)&&u){let A=u.map(async p=>r.cookieJar.setCookie(p,o.toString()));r.ignoreInvalidCookies&&(A=A.map(async p=>p.catch(()=>{})));try{await Promise.all(A)}catch(p){this._beforeError(p);return}}if(r.followRedirect&&e.headers.location&&Uit.has(a)){if(e.resume(),this[zs]&&(this[T4](),delete this[zs],this[Dle]()),(a===303&&r.method!=="GET"&&r.method!=="HEAD"||!r.methodRewriting)&&(r.method="GET","body"in r&&delete r.body,"json"in r&&delete r.json,"form"in r&&delete r.form,this[c0]=void 0,delete r.headers["content-length"]),this.redirects.length>=r.maxRedirects){this._beforeError(new sx(this));return}try{let p=Buffer.from(e.headers.location,"binary").toString(),h=new a0.URL(p,o),C=h.toString();decodeURI(C),h.hostname!==o.hostname||h.port!==o.port?("host"in r.headers&&delete r.headers.host,"cookie"in r.headers&&delete r.headers.cookie,"authorization"in r.headers&&delete r.headers.authorization,(r.username||r.password)&&(r.username="",r.password="")):(h.username=r.username,h.password=r.password),this.redirects.push(C),r.url=h;for(let w of r.hooks.beforeRedirect)await w(r,n);this.emit("redirect",n,r),await this._makeRequest()}catch(p){this._beforeError(p);return}return}if(r.isStream&&r.throwHttpErrors&&!Fit.isResponseOk(n)){this._beforeError(new ox(n));return}e.on("readable",()=>{this[nx]&&this._read()}),this.on("resume",()=>{e.resume()}),this.on("pause",()=>{e.pause()}),e.once("end",()=>{this.push(null)}),this.emit("response",e);for(let A of this[rx])if(!A.headersSent){for(let p in e.headers){let h=r.decompress?p!=="content-encoding":!0,C=e.headers[p];h&&A.setHeader(p,C)}A.statusCode=a}}async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._beforeError(r)}}_onRequest(e){let{options:r}=this,{timeout:o,url:a}=r;wit.default(e),this[T4]=wle.default(e,o,a);let n=r.cache?"cacheableResponse":"response";e.once(n,p=>{this._onResponse(p)}),e.once("error",p=>{var h;e.destroy(),(h=e.res)===null||h===void 0||h.removeAllListeners("end"),p=p instanceof wle.TimeoutError?new cx(p,this.timings,this):new Vi(p.message,p,this),this._beforeError(p)}),this[Dle]=xit.default(e,this,Hit),this[zs]=e,this.emit("uploadProgress",this.uploadProgress);let u=this[c0],A=this.redirects.length===0?this:e;nt.default.nodeStream(u)?(u.pipe(A),u.once("error",p=>{this._beforeError(new lx(p,this))})):(this._unlockWrite(),nt.default.undefined(u)?(this._cannotHaveBody||this._noPipe)&&(A.end(),this._lockWrite()):(this._writeRequest(u,void 0,()=>{}),A.end(),this._lockWrite())),this.emit("request",e)}async _createCacheableRequest(e,r){return new Promise((o,a)=>{Object.assign(r,bit.default(e)),delete r.url;let n,u=N4.get(r.cache)(r,async A=>{A._readableState.autoDestroy=!1,n&&(await n).emit("cacheableResponse",A),o(A)});r.url=e,u.once("error",a),u.once("request",async A=>{n=A,o(n)})})}async _makeRequest(){var e,r,o,a,n;let{options:u}=this,{headers:A}=u;for(let _ in A)if(nt.default.undefined(A[_]))delete A[_];else if(nt.default.null_(A[_]))throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${_}\` header`);if(u.decompress&&nt.default.undefined(A["accept-encoding"])&&(A["accept-encoding"]=Nit?"gzip, deflate, br":"gzip, deflate"),u.cookieJar){let _=await u.cookieJar.getCookieString(u.url.toString());nt.default.nonEmptyString(_)&&(u.headers.cookie=_)}for(let _ of u.hooks.beforeRequest){let V=await _(u);if(!nt.default.undefined(V)){u.request=()=>V;break}}u.body&&this[c0]!==u.body&&(this[c0]=u.body);let{agent:p,request:h,timeout:C,url:w}=u;if(u.dnsCache&&!("lookup"in u)&&(u.lookup=u.dnsCache.lookup),w.hostname==="unix"){let _=/(?<socketPath>.+?):(?<path>.+)/.exec(`${w.pathname}${w.search}`);if(_!=null&&_.groups){let{socketPath:V,path:re}=_.groups;Object.assign(u,{socketPath:V,path:re,host:""})}}let v=w.protocol==="https:",b;u.http2?b=Dit.auto:b=v?Iit.request:Ele.request;let E=(e=u.request)!==null&&e!==void 0?e:b,R=u.cache?this._createCacheableRequest:E;p&&!u.http2&&(u.agent=p[v?"https":"http"]),u[zs]=E,delete u.request,delete u.timeout;let L=u;if(L.shared=(r=u.cacheOptions)===null||r===void 0?void 0:r.shared,L.cacheHeuristic=(o=u.cacheOptions)===null||o===void 0?void 0:o.cacheHeuristic,L.immutableMinTimeToLive=(a=u.cacheOptions)===null||a===void 0?void 0:a.immutableMinTimeToLive,L.ignoreCargoCult=(n=u.cacheOptions)===null||n===void 0?void 0:n.ignoreCargoCult,u.dnsLookupIpVersion!==void 0)try{L.family=vle.dnsLookupIpVersionToFamily(u.dnsLookupIpVersion)}catch{throw new Error("Invalid `dnsLookupIpVersion` option value")}u.https&&("rejectUnauthorized"in u.https&&(L.rejectUnauthorized=u.https.rejectUnauthorized),u.https.checkServerIdentity&&(L.checkServerIdentity=u.https.checkServerIdentity),u.https.certificateAuthority&&(L.ca=u.https.certificateAuthority),u.https.certificate&&(L.cert=u.https.certificate),u.https.key&&(L.key=u.https.key),u.https.passphrase&&(L.passphrase=u.https.passphrase),u.https.pfx&&(L.pfx=u.https.pfx));try{let _=await R(w,L);nt.default.undefined(_)&&(_=b(w,L)),u.request=h,u.timeout=C,u.agent=p,u.https&&("rejectUnauthorized"in u.https&&delete L.rejectUnauthorized,u.https.checkServerIdentity&&delete L.checkServerIdentity,u.https.certificateAuthority&&delete L.ca,u.https.certificate&&delete L.cert,u.https.key&&delete L.key,u.https.passphrase&&delete L.passphrase,u.https.pfx&&delete L.pfx),Oit(_)?this._onRequest(_):this.writable?(this.once("finish",()=>{this._onResponse(_)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(_)}catch(_){throw _ instanceof Cle.CacheError?new ax(_,this):new Vi(_.message,_,this)}}async _error(e){try{for(let r of this.options.hooks.beforeError)e=await r(e)}catch(r){e=new Vi(r.message,r,this)}this.destroy(e)}_beforeError(e){if(this[bE])return;let{options:r}=this,o=this.retryCount+1;this[bE]=!0,e instanceof Vi||(e=new Vi(e.message,e,this));let a=e,{response:n}=a;(async()=>{if(n&&!n.body){n.setEncoding(this._readableState.encoding);try{n.rawBody=await kit.default(n),n.body=n.rawBody.toString()}catch{}}if(this.listenerCount("retry")!==0){let u;try{let A;n&&"retry-after"in n.headers&&(A=Number(n.headers["retry-after"]),Number.isNaN(A)?(A=Date.parse(n.headers["retry-after"])-Date.now(),A<=0&&(A=1)):A*=1e3),u=await r.retry.calculateDelay({attemptCount:o,retryOptions:r.retry,error:a,retryAfter:A,computedValue:Tit.default({attemptCount:o,retryOptions:r.retry,error:a,retryAfter:A,computedValue:0})})}catch(A){this._error(new Vi(A.message,A,this));return}if(u){let A=async()=>{try{for(let p of this.options.hooks.beforeRetry)await p(this.options,a,o)}catch(p){this._error(new Vi(p.message,e,this));return}this.destroyed||(this.destroy(),this.emit("retry",o,e))};this[ble]=setTimeout(A,u);return}}this._error(a)})()}_read(){this[nx]=!0;let e=this[ix];if(e&&!this[bE]){e.readableLength&&(this[nx]=!1);let r;for(;(r=e.read())!==null;){this[SE]+=r.length,this[Ple]=!0;let o=this.downloadProgress;o.percent<1&&this.emit("downloadProgress",o),this.push(r)}}}_write(e,r,o){let a=()=>{this._writeRequest(e,r,o)};this.requestInitialized?a():this[u1].push(a)}_writeRequest(e,r,o){this[zs].destroyed||(this._progressCallbacks.push(()=>{this[xE]+=Buffer.byteLength(e,r);let a=this.uploadProgress;a.percent<1&&this.emit("uploadProgress",a)}),this[zs].write(e,r,a=>{!a&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),o(a)}))}_final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(zs in this)){e();return}if(this[zs].destroyed){e();return}this[zs].end(o=>{o||(this[PE]=this[xE],this.emit("uploadProgress",this.uploadProgress),this[zs].emit("upload-complete")),e(o)})};this.requestInitialized?r():this[u1].push(r)}_destroy(e,r){var o;this[bE]=!0,clearTimeout(this[ble]),zs in this&&(this[T4](),!((o=this[ix])===null||o===void 0)&&o.complete||this[zs].destroy()),e!==null&&!nt.default.undefined(e)&&!(e instanceof Vi)&&(e=new Vi(e.message,e,this)),r(e)}get _isAboutToError(){return this[bE]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,r,o;return((r=(e=this[zs])===null||e===void 0?void 0:e.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!(!((o=this[xle])===null||o===void 0)&&o.complete)}get socket(){var e,r;return(r=(e=this[zs])===null||e===void 0?void 0:e.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let e;return this[DE]?e=this[SE]/this[DE]:this[DE]===this[SE]?e=1:e=0,{percent:e,transferred:this[SE],total:this[DE]}}get uploadProgress(){let e;return this[PE]?e=this[xE]/this[PE]:this[PE]===this[xE]?e=1:e=0,{percent:e,transferred:this[xE],total:this[PE]}}get timings(){var e;return(e=this[zs])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[Sle]}pipe(e,r){if(this[Ple])throw new Error("Failed to pipe. The response has been emitted already.");return e instanceof F4.ServerResponse&&this[rx].add(e),super.pipe(e,r)}unpipe(e){return e instanceof F4.ServerResponse&&this[rx].delete(e),super.unpipe(e),this}};yn.default=Ax});var p1=U(Vc=>{"use strict";var qit=Vc&&Vc.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),jit=Vc&&Vc.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&qit(e,t,r)};Object.defineProperty(Vc,"__esModule",{value:!0});Vc.CancelError=Vc.ParseError=void 0;var Qle=f1(),L4=class extends Qle.RequestError{constructor(e,r){let{options:o}=r.request;super(`${e.message} in "${o.url.toString()}"`,e,r.request),this.name="ParseError"}};Vc.ParseError=L4;var O4=class extends Qle.RequestError{constructor(e){super("Promise was canceled",{},e),this.name="CancelError"}get isCanceled(){return!0}};Vc.CancelError=O4;jit(f1(),Vc)});var Fle=U(M4=>{"use strict";Object.defineProperty(M4,"__esModule",{value:!0});var kle=p1(),Git=(t,e,r,o)=>{let{rawBody:a}=t;try{if(e==="text")return a.toString(o);if(e==="json")return a.length===0?"":r(a.toString());if(e==="buffer")return a;throw new kle.ParseError({message:`Unknown body type '${e}'`,name:"Error"},t)}catch(n){throw new kle.ParseError(n,t)}};M4.default=Git});var U4=U(u0=>{"use strict";var Wit=u0&&u0.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),Yit=u0&&u0.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&Wit(e,t,r)};Object.defineProperty(u0,"__esModule",{value:!0});var Kit=Ie("events"),Vit=Nf(),Jit=Foe(),fx=p1(),Rle=Fle(),Tle=f1(),zit=I4(),Xit=x4(),Nle=b4(),Zit=["request","response","redirect","uploadProgress","downloadProgress"];function Lle(t){let e,r,o=new Kit.EventEmitter,a=new Jit((u,A,p)=>{let h=C=>{let w=new Tle.default(void 0,t);w.retryCount=C,w._noPipe=!0,p(()=>w.destroy()),p.shouldReject=!1,p(()=>A(new fx.CancelError(w))),e=w,w.once("response",async E=>{var R;if(E.retryCount=C,E.request.aborted)return;let L;try{L=await Xit.default(w),E.rawBody=L}catch{return}if(w._isAboutToError)return;let _=((R=E.headers["content-encoding"])!==null&&R!==void 0?R:"").toLowerCase(),V=["gzip","deflate","br"].includes(_),{options:re}=w;if(V&&!re.decompress)E.body=L;else try{E.body=Rle.default(E,re.responseType,re.parseJson,re.encoding)}catch(ae){if(E.body=L.toString(),Nle.isResponseOk(E)){w._beforeError(ae);return}}try{for(let[ae,he]of re.hooks.afterResponse.entries())E=await he(E,async pe=>{let De=Tle.default.normalizeArguments(void 0,{...pe,retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1},re);De.hooks.afterResponse=De.hooks.afterResponse.slice(0,ae);for(let le of De.hooks.beforeRetry)await le(De);let ge=Lle(De);return p(()=>{ge.catch(()=>{}),ge.cancel()}),ge})}catch(ae){w._beforeError(new fx.RequestError(ae.message,ae,w));return}if(!Nle.isResponseOk(E)){w._beforeError(new fx.HTTPError(E));return}r=E,u(w.options.resolveBodyOnly?E.body:E)});let v=E=>{if(a.isCanceled)return;let{options:R}=w;if(E instanceof fx.HTTPError&&!R.throwHttpErrors){let{response:L}=E;u(w.options.resolveBodyOnly?L.body:L);return}A(E)};w.once("error",v);let b=w.options.body;w.once("retry",(E,R)=>{var L,_;if(b===((L=R.request)===null||L===void 0?void 0:L.options.body)&&Vit.default.nodeStream((_=R.request)===null||_===void 0?void 0:_.options.body)){v(R);return}h(E)}),zit.default(w,o,Zit)};h(0)});a.on=(u,A)=>(o.on(u,A),a);let n=u=>{let A=(async()=>{await a;let{options:p}=r.request;return Rle.default(r,u,p.parseJson,p.encoding)})();return Object.defineProperties(A,Object.getOwnPropertyDescriptors(a)),A};return a.json=()=>{let{headers:u}=e.options;return!e.writableFinished&&u.accept===void 0&&(u.accept="application/json"),n("json")},a.buffer=()=>n("buffer"),a.text=()=>n("text"),a}u0.default=Lle;Yit(p1(),u0)});var Ole=U(_4=>{"use strict";Object.defineProperty(_4,"__esModule",{value:!0});var $it=p1();function est(t,...e){let r=(async()=>{if(t instanceof $it.RequestError)try{for(let a of e)if(a)for(let n of a)t=await n(t)}catch(a){t=a}throw t})(),o=()=>r;return r.json=o,r.text=o,r.buffer=o,r.on=o,r}_4.default=est});var _le=U(H4=>{"use strict";Object.defineProperty(H4,"__esModule",{value:!0});var Mle=Nf();function Ule(t){for(let e of Object.values(t))(Mle.default.plainObject(e)||Mle.default.array(e))&&Ule(e);return Object.freeze(t)}H4.default=Ule});var qle=U(Hle=>{"use strict";Object.defineProperty(Hle,"__esModule",{value:!0})});var q4=U(tc=>{"use strict";var tst=tc&&tc.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),rst=tc&&tc.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&tst(e,t,r)};Object.defineProperty(tc,"__esModule",{value:!0});tc.defaultHandler=void 0;var jle=Nf(),ec=U4(),nst=Ole(),hx=f1(),ist=_le(),sst={RequestError:ec.RequestError,CacheError:ec.CacheError,ReadError:ec.ReadError,HTTPError:ec.HTTPError,MaxRedirectsError:ec.MaxRedirectsError,TimeoutError:ec.TimeoutError,ParseError:ec.ParseError,CancelError:ec.CancelError,UnsupportedProtocolError:ec.UnsupportedProtocolError,UploadError:ec.UploadError},ost=async t=>new Promise(e=>{setTimeout(e,t)}),{normalizeArguments:px}=hx.default,Gle=(...t)=>{let e;for(let r of t)e=px(void 0,r,e);return e},ast=t=>t.isStream?new hx.default(void 0,t):ec.default(t),lst=t=>"defaults"in t&&"options"in t.defaults,cst=["get","post","put","patch","head","delete"];tc.defaultHandler=(t,e)=>e(t);var Wle=(t,e)=>{if(t)for(let r of t)r(e)},Yle=t=>{t._rawHandlers=t.handlers,t.handlers=t.handlers.map(o=>(a,n)=>{let u,A=o(a,p=>(u=n(p),u));if(A!==u&&!a.isStream&&u){let p=A,{then:h,catch:C,finally:w}=p;Object.setPrototypeOf(p,Object.getPrototypeOf(u)),Object.defineProperties(p,Object.getOwnPropertyDescriptors(u)),p.then=h,p.catch=C,p.finally=w}return A});let e=(o,a={},n)=>{var u,A;let p=0,h=C=>t.handlers[p++](C,p===t.handlers.length?ast:h);if(jle.default.plainObject(o)){let C={...o,...a};hx.setNonEnumerableProperties([o,a],C),a=C,o=void 0}try{let C;try{Wle(t.options.hooks.init,a),Wle((u=a.hooks)===null||u===void 0?void 0:u.init,a)}catch(v){C=v}let w=px(o,a,n??t.options);if(w[hx.kIsNormalizedAlready]=!0,C)throw new ec.RequestError(C.message,C,w);return h(w)}catch(C){if(a.isStream)throw C;return nst.default(C,t.options.hooks.beforeError,(A=a.hooks)===null||A===void 0?void 0:A.beforeError)}};e.extend=(...o)=>{let a=[t.options],n=[...t._rawHandlers],u;for(let A of o)lst(A)?(a.push(A.defaults.options),n.push(...A.defaults._rawHandlers),u=A.defaults.mutableDefaults):(a.push(A),"handlers"in A&&n.push(...A.handlers),u=A.mutableDefaults);return n=n.filter(A=>A!==tc.defaultHandler),n.length===0&&n.push(tc.defaultHandler),Yle({options:Gle(...a),handlers:n,mutableDefaults:Boolean(u)})};let r=async function*(o,a){let n=px(o,a,t.options);n.resolveBodyOnly=!1;let u=n.pagination;if(!jle.default.object(u))throw new TypeError("`options.pagination` must be implemented");let A=[],{countLimit:p}=u,h=0;for(;h<u.requestLimit;){h!==0&&await ost(u.backoff);let C=await e(void 0,void 0,n),w=await u.transform(C),v=[];for(let E of w)if(u.filter(E,A,v)&&(!u.shouldContinue(E,A,v)||(yield E,u.stackAllItems&&A.push(E),v.push(E),--p<=0)))return;let b=u.paginate(C,A,v);if(b===!1)return;b===C.request.options?n=C.request.options:b!==void 0&&(n=px(void 0,b,n)),h++}};e.paginate=r,e.paginate.all=async(o,a)=>{let n=[];for await(let u of r(o,a))n.push(u);return n},e.paginate.each=r,e.stream=(o,a)=>e(o,{...a,isStream:!0});for(let o of cst)e[o]=(a,n)=>e(a,{...n,method:o}),e.stream[o]=(a,n)=>e(a,{...n,method:o,isStream:!0});return Object.assign(e,sst),Object.defineProperty(e,"defaults",{value:t.mutableDefaults?t:ist.default(t),writable:t.mutableDefaults,configurable:t.mutableDefaults,enumerable:!0}),e.mergeOptions=Gle,e};tc.default=Yle;rst(qle(),tc)});var Jle=U((Lf,gx)=>{"use strict";var ust=Lf&&Lf.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),Kle=Lf&&Lf.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&ust(e,t,r)};Object.defineProperty(Lf,"__esModule",{value:!0});var Ast=Ie("url"),Vle=q4(),fst={options:{method:"GET",retry:{limit:2,methods:["GET","PUT","HEAD","DELETE","OPTIONS","TRACE"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN"],maxRetryAfter:void 0,calculateDelay:({computedValue:t})=>t},timeout:{},headers:{"user-agent":"got (https://github.com/sindresorhus/got)"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:"text",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:"",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:t=>t.request.options.responseType==="json"?t.body:JSON.parse(t.body),paginate:t=>{if(!Reflect.has(t.headers,"link"))return!1;let e=t.headers.link.split(","),r;for(let o of e){let a=o.split(";");if(a[1].includes("next")){r=a[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new Ast.URL(r)}:!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:1/0,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:t=>JSON.parse(t),stringifyJson:t=>JSON.stringify(t),cacheOptions:{}},handlers:[Vle.defaultHandler],mutableDefaults:!1},j4=Vle.default(fst);Lf.default=j4;gx.exports=j4;gx.exports.default=j4;gx.exports.__esModule=!0;Kle(q4(),Lf);Kle(U4(),Lf)});var ln={};Yt(ln,{Method:()=>rce,del:()=>mst,get:()=>K4,getNetworkSettings:()=>tce,post:()=>V4,put:()=>dst,request:()=>h1});function Zle(t){let e=new dx.URL(t),r={host:e.hostname,headers:{}};return e.port&&(r.port=Number(e.port)),e.username&&e.password&&(r.proxyAuth=`${e.username}:${e.password}`),{proxy:r}}async function G4(t){return Sf(Xle,t,()=>oe.readFilePromise(t).then(e=>(Xle.set(t,e),e)))}function gst({statusCode:t,statusMessage:e},r){let o=Kt(r,t,Bt.NUMBER),a=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${t}`;return Xy(r,`${o}${e?` (${e})`:""}`,a)}async function mx(t,{configuration:e,customErrorMessage:r}){var o;try{return await t}catch(a){if(a.name!=="HTTPError")throw a;let n=(r==null?void 0:r(a,e))??((o=a.response.body)==null?void 0:o.error);n==null&&(a.message.startsWith("Response code")?n="The remote server failed to provide the requested resource":n=a.message),a.code==="ETIMEDOUT"&&a.event==="socket"&&(n+=`(can be increased via ${Kt(e,"httpTimeout",Bt.SETTING)})`);let u=new Vt(35,n,A=>{a.response&&A.reportError(35,` ${$u(e,{label:"Response Code",value:Wc(Bt.NO_HINT,gst(a.response,e))})}`),a.request&&(A.reportError(35,` ${$u(e,{label:"Request Method",value:Wc(Bt.NO_HINT,a.request.options.method)})}`),A.reportError(35,` ${$u(e,{label:"Request URL",value:Wc(Bt.URL,a.request.requestUrl)})}`)),a.request.redirects.length>0&&A.reportError(35,` ${$u(e,{label:"Request Redirects",value:Wc(Bt.NO_HINT,vL(e,a.request.redirects,Bt.URL))})}`),a.request.retryCount===a.request.options.retry.limit&&A.reportError(35,` ${$u(e,{label:"Request Retry Count",value:Wc(Bt.NO_HINT,`${Kt(e,a.request.retryCount,Bt.NUMBER)} (can be increased via ${Kt(e,"httpRetry",Bt.SETTING)})`)})}`)});throw u.originalError=a,u}}function tce(t,e){let r=[...e.configuration.get("networkSettings")].sort(([u],[A])=>A.length-u.length),o={enableNetwork:void 0,httpsCaFilePath:void 0,httpProxy:void 0,httpsProxy:void 0,httpsKeyFilePath:void 0,httpsCertFilePath:void 0},a=Object.keys(o),n=typeof t=="string"?new dx.URL(t):t;for(let[u,A]of r)if(Y4.default.isMatch(n.hostname,u))for(let p of a){let h=A.get(p);h!==null&&typeof o[p]>"u"&&(o[p]=h)}for(let u of a)typeof o[u]>"u"&&(o[u]=e.configuration.get(u));return o}async function h1(t,e,{configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:u="GET"}){let A=async()=>await yst(t,e,{configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:u});return await(await r.reduceHook(h=>h.wrapNetworkRequest,A,{target:t,body:e,configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:u}))()}async function K4(t,{configuration:e,jsonResponse:r,customErrorMessage:o,...a}){let n=Sf(zle,t,()=>mx(h1(t,null,{configuration:e,...a}),{configuration:e,customErrorMessage:o}).then(u=>(zle.set(t,u.body),u.body)));return Buffer.isBuffer(n)===!1&&(n=await n),r?JSON.parse(n.toString()):n}async function dst(t,e,{customErrorMessage:r,...o}){return(await mx(h1(t,e,{...o,method:"PUT"}),{customErrorMessage:r,configuration:o.configuration})).body}async function V4(t,e,{customErrorMessage:r,...o}){return(await mx(h1(t,e,{...o,method:"POST"}),{customErrorMessage:r,configuration:o.configuration})).body}async function mst(t,{customErrorMessage:e,...r}){return(await mx(h1(t,null,{...r,method:"DELETE"}),{customErrorMessage:e,configuration:r.configuration})).body}async function yst(t,e,{configuration:r,headers:o,jsonRequest:a,jsonResponse:n,method:u="GET"}){let A=typeof t=="string"?new dx.URL(t):t,p=tce(A,{configuration:r});if(p.enableNetwork===!1)throw new Vt(80,`Request to '${A.href}' has been blocked because of your configuration settings`);if(A.protocol==="http:"&&!Y4.default.isMatch(A.hostname,r.get("unsafeHttpWhitelist")))throw new Vt(81,`Unsafe http requests must be explicitly whitelisted in your configuration (${A.hostname})`);let C={agent:{http:p.httpProxy?W4.default.httpOverHttp(Zle(p.httpProxy)):pst,https:p.httpsProxy?W4.default.httpsOverHttp(Zle(p.httpsProxy)):hst},headers:o,method:u};C.responseType=n?"json":"buffer",e!==null&&(Buffer.isBuffer(e)||!a&&typeof e=="string"?C.body=e:C.json=e);let w=r.get("httpTimeout"),v=r.get("httpRetry"),b=r.get("enableStrictSsl"),E=p.httpsCaFilePath,R=p.httpsCertFilePath,L=p.httpsKeyFilePath,{default:_}=await Promise.resolve().then(()=>tt(Jle())),V=E?await G4(E):void 0,re=R?await G4(R):void 0,ae=L?await G4(L):void 0,he=_.extend({timeout:{socket:w},retry:v,https:{rejectUnauthorized:b,certificateAuthority:V,certificate:re,key:ae},...C});return r.getLimit("networkConcurrency")(()=>he(A))}var $le,ece,Y4,W4,dx,zle,Xle,pst,hst,rce,yx=dt(()=>{St();$le=Ie("https"),ece=Ie("http"),Y4=tt(zo()),W4=tt(Poe()),dx=Ie("url");Zl();zl();Vl();zle=new Map,Xle=new Map,pst=new ece.Agent({keepAlive:!0}),hst=new $le.Agent({keepAlive:!0});rce=(a=>(a.GET="GET",a.PUT="PUT",a.POST="POST",a.DELETE="DELETE",a))(rce||{})});var As={};Yt(As,{availableParallelism:()=>X4,builtinModules:()=>J4,getArchitecture:()=>g1,getArchitectureName:()=>Ist,getArchitectureSet:()=>z4,getCaller:()=>Dst,openUrl:()=>Est});function J4(){return new Set(oce.default.builtinModules||Object.keys(process.binding("natives")))}function Cst(){var o;if(process.platform==="win32")return null;let e=(((o=process.report)==null?void 0:o.getReport())??{}).sharedObjects??[],r=/\/(?:(ld-linux-|[^/]+-linux-gnu\/)|(libc.musl-|ld-musl-))/;return Mw(e,a=>{let n=a.match(r);if(!n)return Mw.skip;if(n[1])return"glibc";if(n[2])return"musl";throw new Error("Assertion failed: Expected the libc variant to have been detected")})??null}function g1(){return ice=ice??{os:process.platform,cpu:process.arch,libc:Cst()}}function Ist(t=g1()){return t.libc?`${t.os}-${t.cpu}-${t.libc}`:`${t.os}-${t.cpu}`}function z4(){let t=g1();return sce=sce??{os:[t.os],cpu:[t.cpu],libc:t.libc?[t.libc]:[]}}function vst(t){let e=wst.exec(t);if(!e)return null;let r=e[2]&&e[2].indexOf("native")===0,o=e[2]&&e[2].indexOf("eval")===0,a=Bst.exec(e[2]);return o&&a!=null&&(e[2]=a[1],e[3]=a[2],e[4]=a[3]),{file:r?null:e[2],methodName:e[1]||"<unknown>",arguments:r?[e[2]]:[],line:e[3]?+e[3]:null,column:e[4]?+e[4]:null}}function Dst(){let e=new Error().stack.split(` |
142 | `)[3];return cst(e)}function J4(){return"availableParallelism"in ux.default?ux.default.availableParallelism():Math.max(1,ux.default.cpus().length)}var Zle,ux,Vle,ist,zle,Xle,ast,lst,A1=dt(()=>{bt();Zle=tt(Ie("module")),ux=tt(Ie("os"));Ax();Gl();Vle=new Map([["darwin","open"],["linux","xdg-open"],["win32","explorer.exe"]]).get(process.platform),ist=typeof Vle<"u"?async t=>{try{return await V4(Vle,[t],{cwd:V.cwd()}),!0}catch{return!1}}:void 0;ast=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,lst=/\((\S*)(?::(\d+))(?::(\d+))\)/});function eU(t,e,r,o,a){let n=Zw(r);if(o.isArray||o.type==="ANY"&&Array.isArray(n))return Array.isArray(n)?n.map((u,A)=>z4(t,`${e}[${A}]`,u,o,a)):String(n).split(/,/).map(u=>z4(t,e,u,o,a));if(Array.isArray(n))throw new Error(`Non-array configuration settings "${e}" cannot be an array`);return z4(t,e,r,o,a)}function z4(t,e,r,o,a){var p;let n=Zw(r);switch(o.type){case"ANY":return kP(n);case"SHAPE":return hst(t,e,r,o,a);case"MAP":return gst(t,e,r,o,a)}if(n===null&&!o.isNullable&&o.default!==null)throw new Error(`Non-nullable configuration settings "${e}" cannot be set to null`);if((p=o.values)!=null&&p.includes(n))return n;let A=(()=>{if(o.type==="BOOLEAN"&&typeof n!="string")return Tw(n);if(typeof n!="string")throw new Error(`Expected value (${n}) to be a string`);let h=pL(n,{env:process.env});switch(o.type){case"ABSOLUTE_PATH":{let C=a,w=DM(r);return w&&(C=V.resolve(w,"..")),V.resolve(C,Ae.toPortablePath(h))}case"LOCATOR_LOOSE":return bf(h,!1);case"NUMBER":return parseInt(h);case"LOCATOR":return bf(h);case"BOOLEAN":return Tw(h);default:return h}})();if(o.values&&!o.values.includes(A))throw new Error(`Invalid value, expected one of ${o.values.join(", ")}`);return A}function hst(t,e,r,o,a){let n=Zw(r);if(typeof n!="object"||Array.isArray(n))throw new ot(`Object configuration settings "${e}" must be an object`);let u=tU(t,o,{ignoreArrays:!0});if(n===null)return u;for(let[A,p]of Object.entries(n)){let h=`${e}.${A}`;if(!o.properties[A])throw new ot(`Unrecognized configuration settings found: ${e}.${A} - run "yarn config -v" to see the list of settings supported in Yarn`);u.set(A,eU(t,h,p,o.properties[A],a))}return u}function gst(t,e,r,o,a){let n=Zw(r),u=new Map;if(typeof n!="object"||Array.isArray(n))throw new ot(`Map configuration settings "${e}" must be an object`);if(n===null)return u;for(let[A,p]of Object.entries(n)){let h=o.normalizeKeys?o.normalizeKeys(A):A,C=`${e}['${h}']`,w=o.valueDefinition;u.set(h,eU(t,C,p,w,a))}return u}function tU(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case"SHAPE":{if(e.isArray&&!r)return[];let o=new Map;for(let[a,n]of Object.entries(e.properties))o.set(a,tU(t,n));return o}break;case"MAP":return e.isArray&&!r?[]:new Map;case"ABSOLUTE_PATH":return e.default===null?null:t.projectCwd===null?V.isAbsolute(e.default)?V.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(o=>V.resolve(t.projectCwd,o)):V.resolve(t.projectCwd,e.default);default:return e.default}}function px(t,e,r){if(e.type==="SECRET"&&typeof t=="string"&&r.hideSecrets)return pst;if(e.type==="ABSOLUTE_PATH"&&typeof t=="string"&&r.getNativePaths)return Ae.fromPortablePath(t);if(e.isArray&&Array.isArray(t)){let o=[];for(let a of t)o.push(px(a,e,r));return o}if(e.type==="MAP"&&t instanceof Map){let o=new Map;for(let[a,n]of t.entries())o.set(a,px(n,e.valueDefinition,r));return o}if(e.type==="SHAPE"&&t instanceof Map){let o=new Map;for(let[a,n]of t.entries()){let u=e.properties[a];o.set(a,px(n,u,r))}return o}return t}function dst(){let t={};for(let[e,r]of Object.entries(process.env))e=e.toLowerCase(),e.startsWith(gx)&&(e=(0,ece.default)(e.slice(gx.length)),t[e]=r);return t}function hx(){let t=`${gx}rc_filename`;for(let[e,r]of Object.entries(process.env))if(e.toLowerCase()===t&&typeof r=="string")return r;return Z4}var ece,l0,tce,X4,$le,Ast,fst,DE,gx,Z4,$4,pst,f1,rce,dx,fx,rU,Yc,Xe,p1=dt(()=>{bt();Oc();Ol();ece=tt(iJ()),l0=tt(Jg());_t();tce=tt($g()),X4=Ie("stream");Lse();sE();mM();yM();EM();loe();CM();wd();poe();RP();Yl();e0();cx();Gl();A1();r0();Ks();Ast=l0.GITHUB_ACTIONS&&process.env.GITHUB_EVENT_PATH?!((($le=ae.readJsonSync(Ae.toPortablePath(process.env.GITHUB_EVENT_PATH)).repository)==null?void 0:$le.private)??!0):!1,fst=new Set(["isTestEnv","injectNpmUser","injectNpmPassword","injectNpm2FaToken","binFolder","version","flags","profile","gpg","ignoreNode","wrapOutput","home","confDir"]),DE=/^(?!v)[a-z0-9._-]+$/i,gx="yarn_",Z4=".yarnrc.yml",$4="yarn.lock",pst="********",f1=(C=>(C.ANY="ANY",C.BOOLEAN="BOOLEAN",C.ABSOLUTE_PATH="ABSOLUTE_PATH",C.LOCATOR="LOCATOR",C.LOCATOR_LOOSE="LOCATOR_LOOSE",C.NUMBER="NUMBER",C.STRING="STRING",C.SECRET="SECRET",C.SHAPE="SHAPE",C.MAP="MAP",C))(f1||{}),rce=Bt,dx=(r=>(r.JUNCTIONS="junctions",r.SYMLINKS="symlinks",r))(dx||{}),fx={lastUpdateCheck:{description:"Last timestamp we checked whether new Yarn versions were available",type:"STRING",default:null},yarnPath:{description:"Path to the local executable that must be used over the global one",type:"ABSOLUTE_PATH",default:null},ignorePath:{description:"If true, the local executable will be ignored when using the global one",type:"BOOLEAN",default:!1},ignoreCwd:{description:"If true, the `--cwd` flag will be ignored",type:"BOOLEAN",default:!1},cacheKeyOverride:{description:"A global cache key override; used only for test purposes",type:"STRING",default:null},globalFolder:{description:"Folder where all system-global files are stored",type:"ABSOLUTE_PATH",default:PM()},cacheFolder:{description:"Folder where the cache files must be written",type:"ABSOLUTE_PATH",default:"./.yarn/cache"},compressionLevel:{description:"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)",type:"NUMBER",values:["mixed",0,1,2,3,4,5,6,7,8,9],default:oy},virtualFolder:{description:"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)",type:"ABSOLUTE_PATH",default:"./.yarn/__virtual__"},lockfileFilename:{description:"Name of the files where the Yarn dependency tree entries must be stored",type:"STRING",default:$4},installStatePath:{description:"Path of the file where the install state will be persisted",type:"ABSOLUTE_PATH",default:"./.yarn/install-state.gz"},immutablePatterns:{description:"Array of glob patterns; files matching them won't be allowed to change during immutable installs",type:"STRING",default:[],isArray:!0},rcFilename:{description:"Name of the files where the configuration can be found",type:"STRING",default:hx()},enableGlobalCache:{description:"If true, the system-wide cache folder will be used regardless of `cache-folder`",type:"BOOLEAN",default:!0},enableColors:{description:"If true, the CLI is allowed to use colors in its output",type:"BOOLEAN",default:qS,defaultText:"<dynamic>"},enableHyperlinks:{description:"If true, the CLI is allowed to use hyperlinks in its output",type:"BOOLEAN",default:CL,defaultText:"<dynamic>"},enableInlineBuilds:{description:"If true, the CLI will print the build output on the command line",type:"BOOLEAN",default:l0.isCI,defaultText:"<dynamic>"},enableMessageNames:{description:"If true, the CLI will prefix most messages with codes suitable for search engines",type:"BOOLEAN",default:!0},enableProgressBars:{description:"If true, the CLI is allowed to show a progress bar for long-running events",type:"BOOLEAN",default:!l0.isCI,defaultText:"<dynamic>"},enableTimers:{description:"If true, the CLI is allowed to print the time spent executing commands",type:"BOOLEAN",default:!0},preferAggregateCacheInfo:{description:"If true, the CLI will only print a one-line report of any cache changes",type:"BOOLEAN",default:l0.isCI},preferInteractive:{description:"If true, the CLI will automatically use the interactive mode when called from a TTY",type:"BOOLEAN",default:!1},preferTruncatedLines:{description:"If true, the CLI will truncate lines that would go beyond the size of the terminal",type:"BOOLEAN",default:!1},progressBarStyle:{description:"Which style of progress bar should be used (only when progress bars are enabled)",type:"STRING",default:void 0,defaultText:"<dynamic>"},defaultLanguageName:{description:"Default language mode that should be used when a package doesn't offer any insight",type:"STRING",default:"node"},defaultProtocol:{description:"Default resolution protocol used when resolving pure semver and tag ranges",type:"STRING",default:"npm:"},enableTransparentWorkspaces:{description:"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol",type:"BOOLEAN",default:!0},supportedArchitectures:{description:"Architectures that Yarn will fetch and inject into the resolver",type:"SHAPE",properties:{os:{description:"Array of supported process.platform strings, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]},cpu:{description:"Array of supported process.arch strings, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]},libc:{description:"Array of supported libc libraries, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]}}},enableMirror:{description:"If true, the downloaded packages will be retrieved and stored in both the local and global folders",type:"BOOLEAN",default:!0},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:"BOOLEAN",default:!0},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:"STRING",default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:"STRING",default:null},unsafeHttpWhitelist:{description:"List of the hostnames for which http queries are allowed (glob patterns are supported)",type:"STRING",default:[],isArray:!0},httpTimeout:{description:"Timeout of each http request in milliseconds",type:"NUMBER",default:6e4},httpRetry:{description:"Retry times on http failure",type:"NUMBER",default:3},networkConcurrency:{description:"Maximal number of concurrent requests",type:"NUMBER",default:50},networkSettings:{description:"Network settings per hostname (glob patterns are supported)",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{httpsCaFilePath:{description:"Path to file containing one or multiple Certificate Authority signing certificates",type:"ABSOLUTE_PATH",default:null},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:"BOOLEAN",default:null},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:"STRING",default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:"STRING",default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:"ABSOLUTE_PATH",default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:"ABSOLUTE_PATH",default:null}}}},httpsCaFilePath:{description:"A path to a file containing one or multiple Certificate Authority signing certificates",type:"ABSOLUTE_PATH",default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:"ABSOLUTE_PATH",default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:"ABSOLUTE_PATH",default:null},enableStrictSsl:{description:"If false, SSL certificate errors will be ignored",type:"BOOLEAN",default:!0},logFilters:{description:"Overrides for log levels",type:"SHAPE",isArray:!0,concatenateValues:!0,properties:{code:{description:"Code of the messages covered by this override",type:"STRING",default:void 0},text:{description:"Code of the texts covered by this override",type:"STRING",default:void 0},pattern:{description:"Code of the patterns covered by this override",type:"STRING",default:void 0},level:{description:"Log level override, set to null to remove override",type:"STRING",values:Object.values(GS),isNullable:!0,default:void 0}}},enableTelemetry:{description:"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry",type:"BOOLEAN",default:!0},telemetryInterval:{description:"Minimal amount of time between two telemetry uploads, in days",type:"NUMBER",default:7},telemetryUserId:{description:"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.",type:"STRING",default:null},enableHardenedMode:{description:"If true, automatically enable --check-resolutions --refresh-lockfile on installs",type:"BOOLEAN",default:l0.isPR&&Ast,defaultText:"<true on public PRs>"},enableScripts:{description:"If true, packages are allowed to have install scripts by default",type:"BOOLEAN",default:!0},enableStrictSettings:{description:"If true, unknown settings will cause Yarn to abort",type:"BOOLEAN",default:!0},enableImmutableCache:{description:"If true, the cache is reputed immutable and actions that would modify it will throw",type:"BOOLEAN",default:!1},checksumBehavior:{description:"Enumeration defining what to do when a checksum doesn't match expectations",type:"STRING",default:"throw"},packageExtensions:{description:"Map of package corrections to apply on the dependency tree",type:"MAP",valueDefinition:{description:"The extension that will be applied to any package whose version matches the specified range",type:"SHAPE",properties:{dependencies:{description:"The set of dependencies that must be made available to the current package in order for it to work properly",type:"MAP",valueDefinition:{description:"A range",type:"STRING"}},peerDependencies:{description:"Inherited dependencies - the consumer of the package will be tasked to provide them",type:"MAP",valueDefinition:{description:"A semver range",type:"STRING"}},peerDependenciesMeta:{description:"Extra information related to the dependencies listed in the peerDependencies field",type:"MAP",valueDefinition:{description:"The peerDependency meta",type:"SHAPE",properties:{optional:{description:"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error",type:"BOOLEAN",default:!1}}}}}}}};rU=(o=>(o[o.LOCKFILE=0]="LOCKFILE",o[o.MANIFEST=1]="MANIFEST",o[o.NONE=2]="NONE",o))(rU||{}),Yc=class{constructor(e){this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.packageExtensions=new Map;this.limits=new Map;this.startingCwd=e}static create(e,r,o){let a=new Yc(e);typeof r<"u"&&!(r instanceof Map)&&(a.projectCwd=r),a.importSettings(fx);let n=typeof o<"u"?o:r instanceof Map?r:new Map;for(let[u,A]of n)a.activatePlugin(u,A);return a}static async find(e,r,{lookup:o=0,strict:a=!0,usePath:n=!1,useRc:u=!0}={}){let A=dst();delete A.rcFilename;let p=await Yc.findRcFiles(e),h=await Yc.findHomeRcFile();h&&(p.find(ve=>ve.path===h.path)||p.unshift(h));let C=foe(p.map(he=>[he.path,he.data])),w=".",v=new Set(Object.keys(fx)),b=({ignoreCwd:he,yarnPath:ve,ignorePath:ge,lockfileFilename:le})=>({ignoreCwd:he,yarnPath:ve,ignorePath:ge,lockfileFilename:le}),E=({ignoreCwd:he,yarnPath:ve,ignorePath:ge,lockfileFilename:le,...Pe})=>{let g={};for(let[De,Ee]of Object.entries(Pe))v.has(De)&&(g[De]=Ee);return g},R=({ignoreCwd:he,yarnPath:ve,ignorePath:ge,lockfileFilename:le,...Pe})=>{let g={};for(let[De,Ee]of Object.entries(Pe))v.has(De)||(g[De]=Ee);return g},L=new Yc(e);if(L.importSettings(b(fx)),L.useWithSource("<environment>",b(A),e,{strict:!1}),C){let[he,ve]=C;L.useWithSource(he,b(ve),w,{strict:!1})}if(n){let he=L.get("yarnPath"),ve=L.get("ignorePath");if(he!==null&&!ve)return L}let _=L.get("lockfileFilename"),J;switch(o){case 0:J=await Yc.findProjectCwd(e,_);break;case 1:J=await Yc.findProjectCwd(e,null);break;case 2:ae.existsSync(V.join(e,"package.json"))?J=V.resolve(e):J=null;break}if(L.startingCwd=e,L.projectCwd=J,L.importSettings(E(fx)),L.useWithSource("<environment>",E(A),e,{strict:a}),C){let[he,ve]=C;L.useWithSource(he,E(ve),w,{strict:a})}let re=he=>"default"in he?he.default:he,oe=new Map([["@@core",Nse]]);if(r!==null)for(let he of r.plugins.keys())oe.set(he,re(r.modules.get(he)));for(let[he,ve]of oe)L.activatePlugin(he,ve);let pe=new Map([]);if(r!==null){let he=new Map;for(let le of Y4())he.set(le,()=>Kp(le));for(let[le,Pe]of r.modules)he.set(le,()=>Pe);let ve=new Set,ge=async(le,Pe)=>{let{factory:g,name:De}=Kp(le);if(!g||ve.has(De))return;let Ee=new Map(he),de=Z=>{if(Ee.has(Z))return Ee.get(Z)();throw new ot(`This plugin cannot access the package referenced via ${Z} which is neither a builtin, nor an exposed entry`)},ne=await jy(async()=>re(await g(de)),Z=>`${Z} (when initializing ${De}, defined in ${Pe})`);he.set(De,()=>ne),ve.add(De),pe.set(De,ne)};if(A.plugins)for(let le of A.plugins.split(";")){let Pe=V.resolve(e,Ae.toPortablePath(le));await ge(Pe,"<environment>")}for(let{path:le,cwd:Pe,data:g}of p)if(!!u&&!!Array.isArray(g.plugins))for(let De of g.plugins){let Ee=typeof De!="string"?De.path:De,de=(De==null?void 0:De.spec)??"",ne=(De==null?void 0:De.checksum)??"",Z=V.resolve(Pe,Ae.toPortablePath(Ee));if(!await ae.existsPromise(Z)){if(!de){let ut=Kt(L,V.basename(Z,".cjs"),Bt.NAME),H=Kt(L,".gitignore",Bt.NAME),yt=Kt(L,L.values.get("rcFilename"),Bt.NAME),Me=Kt(L,"https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored",Bt.URL);throw new ot(`Missing source for the ${ut} plugin - please try to remove the plugin from ${yt} then reinstall it manually. This error usually occurs because ${H} is incorrect, check ${Me} to make sure your plugin folder isn't gitignored.`)}if(!de.match(/^https?:/)){let ut=Kt(L,V.basename(Z,".cjs"),Bt.NAME),H=Kt(L,L.values.get("rcFilename"),Bt.NAME);throw new ot(`Failed to recognize the source for the ${ut} plugin - please try to delete the plugin from ${H} then reinstall it manually.`)}let me=await G4(de,{configuration:L}),be=Js(me);if(ne&&ne!==be){let ut=Kt(L,V.basename(Z,".cjs"),Bt.NAME),H=Kt(L,L.values.get("rcFilename"),Bt.NAME),yt=Kt(L,`yarn plugin import ${de}`,Bt.CODE);throw new ot(`Failed to fetch the ${ut} plugin from its remote location: its checksum seems to have changed. If this is expected, please remove the plugin from ${H} then run ${yt} to reimport it.`)}await ae.mkdirPromise(V.dirname(Z),{recursive:!0}),await ae.writeFilePromise(Z,me)}await ge(Z,le)}}for(let[he,ve]of pe)L.activatePlugin(he,ve);if(L.useWithSource("<environment>",R(A),e,{strict:a}),C){let[he,ve]=C;L.useWithSource(he,R(ve),w,{strict:a})}return L.get("enableGlobalCache")&&(L.values.set("cacheFolder",`${L.get("globalFolder")}/cache`),L.sources.set("cacheFolder","<internal>")),await L.refreshPackageExtensions(),L}static async findRcFiles(e){let r=hx(),o=[],a=e,n=null;for(;a!==n;){n=a;let u=V.join(n,r);if(ae.existsSync(u)){let A=await ae.readFilePromise(u,"utf8"),p;try{p=Yi(A)}catch{let C="";throw A.match(/^\s+(?!-)[^:]+\s+\S+/m)&&(C=" (in particular, make sure you list the colons after each key name)"),new ot(`Parse error when loading ${u}; please check it's proper Yaml${C}`)}o.unshift({path:u,cwd:n,data:p})}a=V.dirname(n)}return o}static async findHomeRcFile(){let e=hx(),r=fE(),o=V.join(r,e);if(ae.existsSync(o)){let a=await ae.readFilePromise(o,"utf8"),n=Yi(a);return{path:o,cwd:r,data:n}}return null}static async findProjectCwd(e,r){let o=null,a=e,n=null;for(;a!==n;){if(n=a,ae.existsSync(V.join(n,"package.json"))&&(o=n),r!==null){if(ae.existsSync(V.join(n,r))){o=n;break}}else if(o!==null)break;a=V.dirname(n)}return o}static async updateConfiguration(e,r){let o=hx(),a=V.join(e,o),n=ae.existsSync(a)?Yi(await ae.readFilePromise(a,"utf8")):{},u=!1,A;if(typeof r=="function"){try{A=r(n)}catch{A=r({})}if(A===n)return}else{A=n;for(let p of Object.keys(r)){let h=n[p],C=r[p],w;if(typeof C=="function")try{w=C(h)}catch{w=C(void 0)}else w=C;h!==w&&(w===Yc.deleteProperty?delete A[p]:A[p]=w,u=!0)}if(!u)return}await ae.changeFilePromise(a,Ia(A),{automaticNewlines:!0})}static async addPlugin(e,r){r.length!==0&&await Yc.updateConfiguration(e,o=>{let a=o.plugins??[];if(a.length===0)return{...o,plugins:r};let n=[],u=[...r];for(let A of a){let p=typeof A!="string"?A.path:A,h=u.find(C=>C.path===p);h?(n.push(h),u=u.filter(C=>C!==h)):n.push(A)}return n.push(...u),{...o,plugins:n}})}static async updateHomeConfiguration(e){let r=fE();return await Yc.updateConfiguration(r,e)}activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration<"u"&&this.importSettings(r.configuration)}importSettings(e){for(let[r,o]of Object.entries(e))if(o!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings "${r}"`);this.settings.set(r,o),this.values.set(r,tU(this,o))}}useWithSource(e,r,o,a){try{this.use(e,r,o,a)}catch(n){throw n.message+=` (in ${Kt(this,e,Bt.PATH)})`,n}}use(e,r,o,{strict:a=!0,overwrite:n=!1}={}){a=a&&this.get("enableStrictSettings");for(let u of["enableStrictSettings",...Object.keys(r)]){let A=r[u],p=DM(A);if(p&&(e=p),typeof A>"u"||u==="plugins"||e==="<environment>"&&fst.has(u))continue;if(u==="rcFilename")throw new ot(`The rcFilename settings can only be set via ${`${gx}RC_FILENAME`.toUpperCase()}, not via a rc file`);let h=this.settings.get(u);if(!h){let w=fE(),v=V.resolve(e,"..");if(a&&!(w===v))throw new ot(`Unrecognized or legacy configuration settings found: ${u} - run "yarn config -v" to see the list of settings supported in Yarn`);this.invalid.set(u,e);continue}if(this.sources.has(u)&&!(n||h.type==="MAP"||h.isArray&&h.concatenateValues))continue;let C;try{C=eU(this,u,A,h,o)}catch(w){throw w.message+=` in ${Kt(this,e,Bt.PATH)}`,w}if(u==="enableStrictSettings"&&e!=="<environment>"){a=C;continue}if(h.type==="MAP"){let w=this.values.get(u);this.values.set(u,new Map(n?[...w,...C]:[...C,...w])),this.sources.set(u,`${this.sources.get(u)}, ${e}`)}else if(h.isArray&&h.concatenateValues){let w=this.values.get(u);this.values.set(u,n?[...w,...C]:[...C,...w]),this.sources.set(u,`${this.sources.get(u)}, ${e}`)}else this.values.set(u,C),this.sources.set(u,e)}}get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key "${e}"`);return this.values.get(e)}getSpecial(e,{hideSecrets:r=!1,getNativePaths:o=!1}){let a=this.get(e),n=this.settings.get(e);if(typeof n>"u")throw new ot(`Couldn't find a configuration settings named "${e}"`);return px(a,n,{hideSecrets:r,getNativePaths:o})}getSubprocessStreams(e,{header:r,prefix:o,report:a}){let n,u,A=ae.createWriteStream(e);if(this.get("enableInlineBuilds")){let p=a.createStreamReporter(`${o} ${Kt(this,"STDOUT","green")}`),h=a.createStreamReporter(`${o} ${Kt(this,"STDERR","red")}`);n=new X4.PassThrough,n.pipe(p),n.pipe(A),u=new X4.PassThrough,u.pipe(h),u.pipe(A)}else n=A,u=A,typeof r<"u"&&n.write(`${r} | 142 | `)[3];return vst(e)}function X4(){return"availableParallelism"in Ex.default?Ex.default.availableParallelism():Math.max(1,Ex.default.cpus().length)}var oce,Ex,nce,Est,ice,sce,wst,Bst,d1=dt(()=>{St();oce=tt(Ie("module")),Ex=tt(Ie("os"));Cx();Vl();nce=new Map([["darwin","open"],["linux","xdg-open"],["win32","explorer.exe"]]).get(process.platform),Est=typeof nce<"u"?async t=>{try{return await Z4(nce,[t],{cwd:J.cwd()}),!0}catch{return!1}}:void 0;wst=/^\s*at (.*?) ?\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\/|[a-z]:\\|\\\\).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,Bst=/\((\S*)(?::(\d+))(?::(\d+))\)/});function nU(t,e,r,o,a){let n=n1(r);if(o.isArray||o.type==="ANY"&&Array.isArray(n))return Array.isArray(n)?n.map((u,A)=>$4(t,`${e}[${A}]`,u,o,a)):String(n).split(/,/).map(u=>$4(t,e,u,o,a));if(Array.isArray(n))throw new Error(`Non-array configuration settings "${e}" cannot be an array`);return $4(t,e,r,o,a)}function $4(t,e,r,o,a){var p;let n=n1(r);switch(o.type){case"ANY":return _P(n);case"SHAPE":return bst(t,e,r,o,a);case"MAP":return Qst(t,e,r,o,a)}if(n===null&&!o.isNullable&&o.default!==null)throw new Error(`Non-nullable configuration settings "${e}" cannot be set to null`);if((p=o.values)!=null&&p.includes(n))return n;let A=(()=>{if(o.type==="BOOLEAN"&&typeof n!="string")return Uw(n);if(typeof n!="string")throw new Error(`Expected configuration setting "${e}" to be a string, got ${typeof n}`);let h=dL(n,{env:process.env});switch(o.type){case"ABSOLUTE_PATH":{let C=a,w=xM(r);return w&&(C=J.resolve(w,"..")),J.resolve(C,ue.toPortablePath(h))}case"LOCATOR_LOOSE":return Ff(h,!1);case"NUMBER":return parseInt(h);case"LOCATOR":return Ff(h);case"BOOLEAN":return Uw(h);default:return h}})();if(o.values&&!o.values.includes(A))throw new Error(`Invalid value, expected one of ${o.values.join(", ")}`);return A}function bst(t,e,r,o,a){let n=n1(r);if(typeof n!="object"||Array.isArray(n))throw new ot(`Object configuration settings "${e}" must be an object`);let u=iU(t,o,{ignoreArrays:!0});if(n===null)return u;for(let[A,p]of Object.entries(n)){let h=`${e}.${A}`;if(!o.properties[A])throw new ot(`Unrecognized configuration settings found: ${e}.${A} - run "yarn config -v" to see the list of settings supported in Yarn`);u.set(A,nU(t,h,p,o.properties[A],a))}return u}function Qst(t,e,r,o,a){let n=n1(r),u=new Map;if(typeof n!="object"||Array.isArray(n))throw new ot(`Map configuration settings "${e}" must be an object`);if(n===null)return u;for(let[A,p]of Object.entries(n)){let h=o.normalizeKeys?o.normalizeKeys(A):A,C=`${e}['${h}']`,w=o.valueDefinition;u.set(h,nU(t,C,p,w,a))}return u}function iU(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case"SHAPE":{if(e.isArray&&!r)return[];let o=new Map;for(let[a,n]of Object.entries(e.properties))o.set(a,iU(t,n));return o}break;case"MAP":return e.isArray&&!r?[]:new Map;case"ABSOLUTE_PATH":return e.default===null?null:t.projectCwd===null?J.isAbsolute(e.default)?J.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(o=>J.resolve(t.projectCwd,o)):J.resolve(t.projectCwd,e.default);default:return e.default}}function wx(t,e,r){if(e.type==="SECRET"&&typeof t=="string"&&r.hideSecrets)return xst;if(e.type==="ABSOLUTE_PATH"&&typeof t=="string"&&r.getNativePaths)return ue.fromPortablePath(t);if(e.isArray&&Array.isArray(t)){let o=[];for(let a of t)o.push(wx(a,e,r));return o}if(e.type==="MAP"&&t instanceof Map){let o=new Map;for(let[a,n]of t.entries())o.set(a,wx(n,e.valueDefinition,r));return o}if(e.type==="SHAPE"&&t instanceof Map){let o=new Map;for(let[a,n]of t.entries()){let u=e.properties[a];o.set(a,wx(n,u,r))}return o}return t}function kst(){let t={};for(let[e,r]of Object.entries(process.env))e=e.toLowerCase(),e.startsWith(vx)&&(e=(0,lce.default)(e.slice(vx.length)),t[e]=r);return t}function Bx(){let t=`${vx}rc_filename`;for(let[e,r]of Object.entries(process.env))if(e.toLowerCase()===t&&typeof r=="string")return r;return tU}var lce,Of,cce,eU,ace,Sst,m1,Pst,QE,vx,tU,rU,xst,y1,uce,Dx,Ix,sU,Jc,Xe,E1=dt(()=>{St();Hc();Hl();lce=tt(fV()),Of=tt(Zg());_t();cce=tt(nd()),eU=Ie("stream");Gse();uE();CM();IM();wM();doe();BM();Sd();Ioe();qP();zl();n0();yx();Vl();d1();s0();Ks();Sst=Of.GITHUB_ACTIONS&&process.env.GITHUB_EVENT_PATH?!(((ace=oe.readJsonSync(ue.toPortablePath(process.env.GITHUB_EVENT_PATH)).repository)==null?void 0:ace.private)??!0):!1,m1=new Set(["@yarnpkg/plugin-constraints","@yarnpkg/plugin-exec","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools"]),Pst=new Set(["isTestEnv","injectNpmUser","injectNpmPassword","injectNpm2FaToken","binFolder","version","flags","profile","gpg","ignoreNode","wrapOutput","home","confDir","registry"]),QE=/^(?!v)[a-z0-9._-]+$/i,vx="yarn_",tU=".yarnrc.yml",rU="yarn.lock",xst="********",y1=(C=>(C.ANY="ANY",C.BOOLEAN="BOOLEAN",C.ABSOLUTE_PATH="ABSOLUTE_PATH",C.LOCATOR="LOCATOR",C.LOCATOR_LOOSE="LOCATOR_LOOSE",C.NUMBER="NUMBER",C.STRING="STRING",C.SECRET="SECRET",C.SHAPE="SHAPE",C.MAP="MAP",C))(y1||{}),uce=Bt,Dx=(r=>(r.JUNCTIONS="junctions",r.SYMLINKS="symlinks",r))(Dx||{}),Ix={lastUpdateCheck:{description:"Last timestamp we checked whether new Yarn versions were available",type:"STRING",default:null},yarnPath:{description:"Path to the local executable that must be used over the global one",type:"ABSOLUTE_PATH",default:null},ignorePath:{description:"If true, the local executable will be ignored when using the global one",type:"BOOLEAN",default:!1},ignoreCwd:{description:"If true, the `--cwd` flag will be ignored",type:"BOOLEAN",default:!1},cacheKeyOverride:{description:"A global cache key override; used only for test purposes",type:"STRING",default:null},globalFolder:{description:"Folder where all system-global files are stored",type:"ABSOLUTE_PATH",default:QM()},cacheFolder:{description:"Folder where the cache files must be written",type:"ABSOLUTE_PATH",default:"./.yarn/cache"},compressionLevel:{description:"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)",type:"NUMBER",values:["mixed",0,1,2,3,4,5,6,7,8,9],default:Ay},virtualFolder:{description:"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named __virtual__)",type:"ABSOLUTE_PATH",default:"./.yarn/__virtual__"},lockfileFilename:{description:"Name of the files where the Yarn dependency tree entries must be stored",type:"STRING",default:rU},installStatePath:{description:"Path of the file where the install state will be persisted",type:"ABSOLUTE_PATH",default:"./.yarn/install-state.gz"},immutablePatterns:{description:"Array of glob patterns; files matching them won't be allowed to change during immutable installs",type:"STRING",default:[],isArray:!0},rcFilename:{description:"Name of the files where the configuration can be found",type:"STRING",default:Bx()},enableGlobalCache:{description:"If true, the system-wide cache folder will be used regardless of `cache-folder`",type:"BOOLEAN",default:!0},enableColors:{description:"If true, the CLI is allowed to use colors in its output",type:"BOOLEAN",default:XS,defaultText:"<dynamic>"},enableHyperlinks:{description:"If true, the CLI is allowed to use hyperlinks in its output",type:"BOOLEAN",default:BL,defaultText:"<dynamic>"},enableInlineBuilds:{description:"If true, the CLI will print the build output on the command line",type:"BOOLEAN",default:Of.isCI,defaultText:"<dynamic>"},enableMessageNames:{description:"If true, the CLI will prefix most messages with codes suitable for search engines",type:"BOOLEAN",default:!0},enableProgressBars:{description:"If true, the CLI is allowed to show a progress bar for long-running events",type:"BOOLEAN",default:!Of.isCI,defaultText:"<dynamic>"},enableTimers:{description:"If true, the CLI is allowed to print the time spent executing commands",type:"BOOLEAN",default:!0},preferAggregateCacheInfo:{description:"If true, the CLI will only print a one-line report of any cache changes",type:"BOOLEAN",default:Of.isCI},preferInteractive:{description:"If true, the CLI will automatically use the interactive mode when called from a TTY",type:"BOOLEAN",default:!1},preferTruncatedLines:{description:"If true, the CLI will truncate lines that would go beyond the size of the terminal",type:"BOOLEAN",default:!1},progressBarStyle:{description:"Which style of progress bar should be used (only when progress bars are enabled)",type:"STRING",default:void 0,defaultText:"<dynamic>"},defaultLanguageName:{description:"Default language mode that should be used when a package doesn't offer any insight",type:"STRING",default:"node"},defaultProtocol:{description:"Default resolution protocol used when resolving pure semver and tag ranges",type:"STRING",default:"npm:"},enableTransparentWorkspaces:{description:"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol",type:"BOOLEAN",default:!0},supportedArchitectures:{description:"Architectures that Yarn will fetch and inject into the resolver",type:"SHAPE",properties:{os:{description:"Array of supported process.platform strings, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]},cpu:{description:"Array of supported process.arch strings, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]},libc:{description:"Array of supported libc libraries, or null to target them all",type:"STRING",isArray:!0,isNullable:!0,default:["current"]}}},enableMirror:{description:"If true, the downloaded packages will be retrieved and stored in both the local and global folders",type:"BOOLEAN",default:!0},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:"BOOLEAN",default:!0},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:"STRING",default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:"STRING",default:null},unsafeHttpWhitelist:{description:"List of the hostnames for which http queries are allowed (glob patterns are supported)",type:"STRING",default:[],isArray:!0},httpTimeout:{description:"Timeout of each http request in milliseconds",type:"NUMBER",default:6e4},httpRetry:{description:"Retry times on http failure",type:"NUMBER",default:3},networkConcurrency:{description:"Maximal number of concurrent requests",type:"NUMBER",default:50},networkSettings:{description:"Network settings per hostname (glob patterns are supported)",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{httpsCaFilePath:{description:"Path to file containing one or multiple Certificate Authority signing certificates",type:"ABSOLUTE_PATH",default:null},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:"BOOLEAN",default:null},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:"STRING",default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:"STRING",default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:"ABSOLUTE_PATH",default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:"ABSOLUTE_PATH",default:null}}}},httpsCaFilePath:{description:"A path to a file containing one or multiple Certificate Authority signing certificates",type:"ABSOLUTE_PATH",default:null},httpsKeyFilePath:{description:"Path to file containing private key in PEM format",type:"ABSOLUTE_PATH",default:null},httpsCertFilePath:{description:"Path to file containing certificate chain in PEM format",type:"ABSOLUTE_PATH",default:null},enableStrictSsl:{description:"If false, SSL certificate errors will be ignored",type:"BOOLEAN",default:!0},logFilters:{description:"Overrides for log levels",type:"SHAPE",isArray:!0,concatenateValues:!0,properties:{code:{description:"Code of the messages covered by this override",type:"STRING",default:void 0},text:{description:"Code of the texts covered by this override",type:"STRING",default:void 0},pattern:{description:"Code of the patterns covered by this override",type:"STRING",default:void 0},level:{description:"Log level override, set to null to remove override",type:"STRING",values:Object.values($S),isNullable:!0,default:void 0}}},enableTelemetry:{description:"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry",type:"BOOLEAN",default:!0},telemetryInterval:{description:"Minimal amount of time between two telemetry uploads, in days",type:"NUMBER",default:7},telemetryUserId:{description:"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.",type:"STRING",default:null},enableHardenedMode:{description:"If true, automatically enable --check-resolutions --refresh-lockfile on installs",type:"BOOLEAN",default:Of.isPR&&Sst,defaultText:"<true on public PRs>"},enableScripts:{description:"If true, packages are allowed to have install scripts by default",type:"BOOLEAN",default:!0},enableStrictSettings:{description:"If true, unknown settings will cause Yarn to abort",type:"BOOLEAN",default:!0},enableImmutableCache:{description:"If true, the cache is reputed immutable and actions that would modify it will throw",type:"BOOLEAN",default:!1},checksumBehavior:{description:"Enumeration defining what to do when a checksum doesn't match expectations",type:"STRING",default:"throw"},packageExtensions:{description:"Map of package corrections to apply on the dependency tree",type:"MAP",valueDefinition:{description:"The extension that will be applied to any package whose version matches the specified range",type:"SHAPE",properties:{dependencies:{description:"The set of dependencies that must be made available to the current package in order for it to work properly",type:"MAP",valueDefinition:{description:"A range",type:"STRING"}},peerDependencies:{description:"Inherited dependencies - the consumer of the package will be tasked to provide them",type:"MAP",valueDefinition:{description:"A semver range",type:"STRING"}},peerDependenciesMeta:{description:"Extra information related to the dependencies listed in the peerDependencies field",type:"MAP",valueDefinition:{description:"The peerDependency meta",type:"SHAPE",properties:{optional:{description:"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error",type:"BOOLEAN",default:!1}}}}}}}};sU=(o=>(o[o.LOCKFILE=0]="LOCKFILE",o[o.MANIFEST=1]="MANIFEST",o[o.NONE=2]="NONE",o))(sU||{}),Jc=class{constructor(e){this.isCI=Of.isCI;this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.packageExtensions=new Map;this.limits=new Map;this.startingCwd=e}static create(e,r,o){let a=new Jc(e);typeof r<"u"&&!(r instanceof Map)&&(a.projectCwd=r),a.importSettings(Ix);let n=typeof o<"u"?o:r instanceof Map?r:new Map;for(let[u,A]of n)a.activatePlugin(u,A);return a}static async find(e,r,{lookup:o=0,strict:a=!0,usePath:n=!1,useRc:u=!0}={}){let A=kst();delete A.rcFilename;let p=await Jc.findRcFiles(e),h=await Jc.findHomeRcFile();h&&(p.find(De=>De.path===h.path)||p.unshift(h));let C=Coe(p.map(pe=>[pe.path,pe.data])),w=".",v=new Set(Object.keys(Ix)),b=({ignoreCwd:pe,yarnPath:De,ignorePath:ge,lockfileFilename:le})=>({ignoreCwd:pe,yarnPath:De,ignorePath:ge,lockfileFilename:le}),E=({ignoreCwd:pe,yarnPath:De,ignorePath:ge,lockfileFilename:le,...Pe})=>{let g={};for(let[ve,Ee]of Object.entries(Pe))v.has(ve)&&(g[ve]=Ee);return g},R=({ignoreCwd:pe,yarnPath:De,ignorePath:ge,lockfileFilename:le,...Pe})=>{let g={};for(let[ve,Ee]of Object.entries(Pe))v.has(ve)||(g[ve]=Ee);return g},L=new Jc(e);if(L.importSettings(b(Ix)),L.useWithSource("<environment>",b(A),e,{strict:!1}),C){let[pe,De]=C;L.useWithSource(pe,b(De),w,{strict:!1})}if(n){let pe=L.get("yarnPath"),De=L.get("ignorePath");if(pe!==null&&!De)return L}let _=L.get("lockfileFilename"),V;switch(o){case 0:V=await Jc.findProjectCwd(e,_);break;case 1:V=await Jc.findProjectCwd(e,null);break;case 2:oe.existsSync(J.join(e,"package.json"))?V=J.resolve(e):V=null;break}if(L.startingCwd=e,L.projectCwd=V,L.importSettings(E(Ix)),L.useWithSource("<environment>",E(A),e,{strict:a}),C){let[pe,De]=C;L.useWithSource(pe,E(De),w,{strict:a})}let re=pe=>"default"in pe?pe.default:pe,ae=new Map([["@@core",jse]]);if(r!==null)for(let pe of r.plugins.keys())ae.set(pe,re(r.modules.get(pe)));for(let[pe,De]of ae)L.activatePlugin(pe,De);let he=new Map([]);if(r!==null){let pe=new Map;for(let le of J4())pe.set(le,()=>zp(le));for(let[le,Pe]of r.modules)pe.set(le,()=>Pe);let De=new Set,ge=async(le,Pe)=>{let{factory:g,name:ve}=zp(le);if(!g||De.has(ve))return;let Ee=new Map(pe),de=Z=>{if(Ee.has(Z))return Ee.get(Z)();throw new ot(`This plugin cannot access the package referenced via ${Z} which is neither a builtin, nor an exposed entry`)},ne=await Vy(async()=>re(await g(de)),Z=>`${Z} (when initializing ${ve}, defined in ${Pe})`);pe.set(ve,()=>ne),De.add(ve),he.set(ve,ne)};if(A.plugins)for(let le of A.plugins.split(";")){let Pe=J.resolve(e,ue.toPortablePath(le));await ge(Pe,"<environment>")}for(let{path:le,cwd:Pe,data:g}of p)if(!!u&&!!Array.isArray(g.plugins))for(let ve of g.plugins){let Ee=typeof ve!="string"?ve.path:ve,de=(ve==null?void 0:ve.spec)??"",ne=(ve==null?void 0:ve.checksum)??"";if(m1.has(de))continue;let Z=J.resolve(Pe,ue.toPortablePath(Ee));if(!await oe.existsPromise(Z)){if(!de){let ut=Kt(L,J.basename(Z,".cjs"),Bt.NAME),H=Kt(L,".gitignore",Bt.NAME),yt=Kt(L,L.values.get("rcFilename"),Bt.NAME),Me=Kt(L,"https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored",Bt.URL);throw new ot(`Missing source for the ${ut} plugin - please try to remove the plugin from ${yt} then reinstall it manually. This error usually occurs because ${H} is incorrect, check ${Me} to make sure your plugin folder isn't gitignored.`)}if(!de.match(/^https?:/)){let ut=Kt(L,J.basename(Z,".cjs"),Bt.NAME),H=Kt(L,L.values.get("rcFilename"),Bt.NAME);throw new ot(`Failed to recognize the source for the ${ut} plugin - please try to delete the plugin from ${H} then reinstall it manually.`)}let me=await K4(de,{configuration:L}),be=Vs(me);if(ne&&ne!==be){let ut=Kt(L,J.basename(Z,".cjs"),Bt.NAME),H=Kt(L,L.values.get("rcFilename"),Bt.NAME),yt=Kt(L,`yarn plugin import ${de}`,Bt.CODE);throw new ot(`Failed to fetch the ${ut} plugin from its remote location: its checksum seems to have changed. If this is expected, please remove the plugin from ${H} then run ${yt} to reimport it.`)}await oe.mkdirPromise(J.dirname(Z),{recursive:!0}),await oe.writeFilePromise(Z,me)}await ge(Z,le)}}for(let[pe,De]of he)L.activatePlugin(pe,De);if(L.useWithSource("<environment>",R(A),e,{strict:a}),C){let[pe,De]=C;L.useWithSource(pe,R(De),w,{strict:a})}return L.get("enableGlobalCache")&&(L.values.set("cacheFolder",`${L.get("globalFolder")}/cache`),L.sources.set("cacheFolder","<internal>")),await L.refreshPackageExtensions(),L}static async findRcFiles(e){let r=Bx(),o=[],a=e,n=null;for(;a!==n;){n=a;let u=J.join(n,r);if(oe.existsSync(u)){let A=await oe.readFilePromise(u,"utf8"),p;try{p=Yi(A)}catch{let C="";throw A.match(/^\s+(?!-)[^:]+\s+\S+/m)&&(C=" (in particular, make sure you list the colons after each key name)"),new ot(`Parse error when loading ${u}; please check it's proper Yaml${C}`)}o.unshift({path:u,cwd:n,data:p})}a=J.dirname(n)}return o}static async findHomeRcFile(){let e=Bx(),r=mE(),o=J.join(r,e);if(oe.existsSync(o)){let a=await oe.readFilePromise(o,"utf8"),n=Yi(a);return{path:o,cwd:r,data:n}}return null}static async findProjectCwd(e,r){let o=null,a=e,n=null;for(;a!==n;){if(n=a,oe.existsSync(J.join(n,"package.json"))&&(o=n),r!==null){if(oe.existsSync(J.join(n,r))){o=n;break}}else if(o!==null)break;a=J.dirname(n)}return o}static async updateConfiguration(e,r,o={}){let a=Bx(),n=J.join(e,a),u=oe.existsSync(n)?Yi(await oe.readFilePromise(n,"utf8")):{},A=!1,p;if(typeof r=="function"){try{p=r(u)}catch{p=r({})}if(p===u)return!1}else{p=u;for(let h of Object.keys(r)){let C=u[h],w=r[h],v;if(typeof w=="function")try{v=w(C)}catch{v=w(void 0)}else v=w;C!==v&&(v===Jc.deleteProperty?delete p[h]:p[h]=v,A=!0)}if(!A)return!1}return await oe.changeFilePromise(n,Ba(p),{automaticNewlines:!0}),!0}static async addPlugin(e,r){r.length!==0&&await Jc.updateConfiguration(e,o=>{let a=o.plugins??[];if(a.length===0)return{...o,plugins:r};let n=[],u=[...r];for(let A of a){let p=typeof A!="string"?A.path:A,h=u.find(C=>C.path===p);h?(n.push(h),u=u.filter(C=>C!==h)):n.push(A)}return n.push(...u),{...o,plugins:n}})}static async updateHomeConfiguration(e){let r=mE();return await Jc.updateConfiguration(r,e)}activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration<"u"&&this.importSettings(r.configuration)}importSettings(e){for(let[r,o]of Object.entries(e))if(o!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings "${r}"`);this.settings.set(r,o),this.values.set(r,iU(this,o))}}useWithSource(e,r,o,a){try{this.use(e,r,o,a)}catch(n){throw n.message+=` (in ${Kt(this,e,Bt.PATH)})`,n}}use(e,r,o,{strict:a=!0,overwrite:n=!1}={}){a=a&&this.get("enableStrictSettings");for(let u of["enableStrictSettings",...Object.keys(r)]){let A=r[u],p=xM(A);if(p&&(e=p),typeof A>"u"||u==="plugins"||e==="<environment>"&&Pst.has(u))continue;if(u==="rcFilename")throw new ot(`The rcFilename settings can only be set via ${`${vx}RC_FILENAME`.toUpperCase()}, not via a rc file`);let h=this.settings.get(u);if(!h){let w=mE(),v=J.resolve(e,"..");if(a&&!(w===v))throw new ot(`Unrecognized or legacy configuration settings found: ${u} - run "yarn config -v" to see the list of settings supported in Yarn`);this.invalid.set(u,e);continue}if(this.sources.has(u)&&!(n||h.type==="MAP"||h.isArray&&h.concatenateValues))continue;let C;try{C=nU(this,u,A,h,o)}catch(w){throw w.message+=` in ${Kt(this,e,Bt.PATH)}`,w}if(u==="enableStrictSettings"&&e!=="<environment>"){a=C;continue}if(h.type==="MAP"){let w=this.values.get(u);this.values.set(u,new Map(n?[...w,...C]:[...C,...w])),this.sources.set(u,`${this.sources.get(u)}, ${e}`)}else if(h.isArray&&h.concatenateValues){let w=this.values.get(u);this.values.set(u,n?[...w,...C]:[...C,...w]),this.sources.set(u,`${this.sources.get(u)}, ${e}`)}else this.values.set(u,C),this.sources.set(u,e)}}get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key "${e}"`);return this.values.get(e)}getSpecial(e,{hideSecrets:r=!1,getNativePaths:o=!1}){let a=this.get(e),n=this.settings.get(e);if(typeof n>"u")throw new ot(`Couldn't find a configuration settings named "${e}"`);return wx(a,n,{hideSecrets:r,getNativePaths:o})}getSubprocessStreams(e,{header:r,prefix:o,report:a}){let n,u,A=oe.createWriteStream(e);if(this.get("enableInlineBuilds")){let p=a.createStreamReporter(`${o} ${Kt(this,"STDOUT","green")}`),h=a.createStreamReporter(`${o} ${Kt(this,"STDERR","red")}`);n=new eU.PassThrough,n.pipe(p),n.pipe(A),u=new eU.PassThrough,u.pipe(h),u.pipe(A)}else n=A,u=A,typeof r<"u"&&n.write(`${r} |
143 | `);return{stdout:n,stderr:u}}makeResolver(){let e=[];for(let r of this.plugins.values())for(let o of r.resolvers||[])e.push(new o);return new vd([new zw,new oi,...e])}makeFetcher(){let e=[];for(let r of this.plugins.values())for(let o of r.fetchers||[])e.push(new o);return new aE([new lE,new uE,...e])}getLinkers(){let e=[];for(let r of this.plugins.values())for(let o of r.linkers||[])e.push(new o);return e}getSupportedArchitectures(){let e=u1(),r=this.get("supportedArchitectures"),o=r.get("os");o!==null&&(o=o.map(u=>u==="current"?e.os:u));let a=r.get("cpu");a!==null&&(a=a.map(u=>u==="current"?e.cpu:u));let n=r.get("libc");return n!==null&&(n=Xu(n,u=>u==="current"?e.libc??Xu.skip:u)),{os:o,cpu:a,libc:n}}async refreshPackageExtensions(){this.packageExtensions=new Map;let e=this.packageExtensions,r=(o,a,{userProvided:n=!1}={})=>{if(!jc(o.range))throw new Error("Only semver ranges are allowed as keys for the packageExtensions setting");let u=new Nt;u.load(a,{yamlCompatibilityMode:!0});let A=Hy(e,o.identHash),p=[];A.push([o.range,p]);let h={status:"inactive",userProvided:n,parentDescriptor:o};for(let C of u.dependencies.values())p.push({...h,type:"Dependency",descriptor:C});for(let C of u.peerDependencies.values())p.push({...h,type:"PeerDependency",descriptor:C});for(let[C,w]of u.peerDependenciesMeta)for(let[v,b]of Object.entries(w))p.push({...h,type:"PeerDependencyMeta",selector:C,key:v,value:b})};await this.triggerHook(o=>o.registerPackageExtensions,this,r);for(let[o,a]of this.get("packageExtensions"))r(t0(o,!0),_S(a),{userProvided:!0})}normalizeLocator(e){return jc(e.reference)?us(e,`${this.get("defaultProtocol")}${e.reference}`):DE.test(e.reference)?us(e,`${this.get("defaultProtocol")}${e.reference}`):e}normalizeDependency(e){return jc(e.range)?mn(e,`${this.get("defaultProtocol")}${e.range}`):DE.test(e.range)?mn(e,`${this.get("defaultProtocol")}${e.range}`):e}normalizeDependencyMap(e){return new Map([...e].map(([r,o])=>[r,this.normalizeDependency(o)]))}normalizePackage(e){let r=Hw(e);if(this.packageExtensions==null)throw new Error("refreshPackageExtensions has to be called before normalizing packages");let o=this.packageExtensions.get(e.identHash);if(typeof o<"u"){let n=e.version;if(n!==null){for(let[u,A]of o)if(!!Bd(n,u))for(let p of A)switch(p.status==="inactive"&&(p.status="redundant"),p.type){case"Dependency":typeof r.dependencies.get(p.descriptor.identHash)>"u"&&(p.status="active",r.dependencies.set(p.descriptor.identHash,this.normalizeDependency(p.descriptor)));break;case"PeerDependency":typeof r.peerDependencies.get(p.descriptor.identHash)>"u"&&(p.status="active",r.peerDependencies.set(p.descriptor.identHash,p.descriptor));break;case"PeerDependencyMeta":{let h=r.peerDependenciesMeta.get(p.selector);(typeof h>"u"||!Object.prototype.hasOwnProperty.call(h,p.key)||h[p.key]!==p.value)&&(p.status="active",Bf(r.peerDependenciesMeta,p.selector,()=>({}))[p.key]=p.value)}break;default:AL(p);break}}}let a=n=>n.scope?`${n.scope}__${n.name}`:`${n.name}`;for(let n of r.peerDependenciesMeta.keys()){let u=Ys(n);r.peerDependencies.has(u.identHash)||r.peerDependencies.set(u.identHash,mn(u,"*"))}for(let n of r.peerDependencies.values()){if(n.scope==="types")continue;let u=a(n),A=rA("types",u),p=nn(A);r.peerDependencies.has(A.identHash)||r.peerDependenciesMeta.has(p)||(r.peerDependencies.set(A.identHash,mn(A,"*")),r.peerDependenciesMeta.set(p,{optional:!0}))}return r.dependencies=new Map(Sa(r.dependencies,([,n])=>xa(n))),r.peerDependencies=new Map(Sa(r.peerDependencies,([,n])=>xa(n))),r}getLimit(e){return Bf(this.limits,e,()=>(0,tce.default)(this.get(e)))}async triggerHook(e,...r){for(let o of this.plugins.values()){let a=o.hooks;if(!a)continue;let n=e(a);!n||await n(...r)}}async triggerMultipleHooks(e,r){for(let o of r)await this.triggerHook(e,...o)}async reduceHook(e,r,...o){let a=r;for(let n of this.plugins.values()){let u=n.hooks;if(!u)continue;let A=e(u);!A||(a=await A(a,...o))}return a}async firstHook(e,...r){for(let o of this.plugins.values()){let a=o.hooks;if(!a)continue;let n=e(a);if(!n)continue;let u=await n(...r);if(typeof u<"u")return u}return null}},Xe=Yc;Xe.deleteProperty=Symbol(),Xe.telemetry=null});var Mr={};Yt(Mr,{EndStrategy:()=>oU,ExecError:()=>mx,PipeError:()=>h1,execvp:()=>V4,pipevp:()=>iA});function Pd(t){return t!==null&&typeof t.fd=="number"}function nU(){}function iU(){for(let t of xd)t.kill()}async function iA(t,e,{cwd:r,env:o=process.env,strict:a=!1,stdin:n=null,stdout:u,stderr:A,end:p=2}){let h=["pipe","pipe","pipe"];n===null?h[0]="ignore":Pd(n)&&(h[0]=n),Pd(u)&&(h[1]=u),Pd(A)&&(h[2]=A);let C=(0,sU.default)(t,e,{cwd:Ae.fromPortablePath(r),env:{...o,PWD:Ae.fromPortablePath(r)},stdio:h});xd.add(C),xd.size===1&&(process.on("SIGINT",nU),process.on("SIGTERM",iU)),!Pd(n)&&n!==null&&n.pipe(C.stdin),Pd(u)||C.stdout.pipe(u,{end:!1}),Pd(A)||C.stderr.pipe(A,{end:!1});let w=()=>{for(let v of new Set([u,A]))Pd(v)||v.end()};return new Promise((v,b)=>{C.on("error",E=>{xd.delete(C),xd.size===0&&(process.off("SIGINT",nU),process.off("SIGTERM",iU)),(p===2||p===1)&&w(),b(E)}),C.on("close",(E,R)=>{xd.delete(C),xd.size===0&&(process.off("SIGINT",nU),process.off("SIGTERM",iU)),(p===2||p===1&&E!==0)&&w(),E===0||!a?v({code:aU(E,R)}):b(new h1({fileName:t,code:E,signal:R}))})})}async function V4(t,e,{cwd:r,env:o=process.env,encoding:a="utf8",strict:n=!1}){let u=["ignore","pipe","pipe"],A=[],p=[],h=Ae.fromPortablePath(r);typeof o.PWD<"u"&&(o={...o,PWD:h});let C=(0,sU.default)(t,e,{cwd:h,env:o,stdio:u});return C.stdout.on("data",w=>{A.push(w)}),C.stderr.on("data",w=>{p.push(w)}),await new Promise((w,v)=>{C.on("error",b=>{let E=Xe.create(r),R=Kt(E,t,Bt.PATH);v(new Jt(1,`Process ${R} failed to spawn`,L=>{L.reportError(1,` ${Zu(E,{label:"Thrown Error",value:Hc(Bt.NO_HINT,b.message)})}`)}))}),C.on("close",(b,E)=>{let R=a==="buffer"?Buffer.concat(A):Buffer.concat(A).toString(a),L=a==="buffer"?Buffer.concat(p):Buffer.concat(p).toString(a);b===0||!n?w({code:aU(b,E),stdout:R,stderr:L}):v(new mx({fileName:t,code:b,signal:E,stdout:R,stderr:L}))})})}function aU(t,e){let r=mst.get(e);return typeof r<"u"?128+r:t??1}function yst(t,e,{configuration:r,report:o}){o.reportError(1,` ${Zu(r,t!==null?{label:"Exit Code",value:Hc(Bt.NUMBER,t)}:{label:"Exit Signal",value:Hc(Bt.CODE,e)})}`)}var sU,oU,h1,mx,xd,mst,Ax=dt(()=>{bt();sU=tt(XR());p1();Jl();Yl();oU=(o=>(o[o.Never=0]="Never",o[o.ErrorCode=1]="ErrorCode",o[o.Always=2]="Always",o))(oU||{}),h1=class extends Jt{constructor({fileName:r,code:o,signal:a}){let n=Xe.create(V.cwd()),u=Kt(n,r,Bt.PATH);super(1,`Child ${u} reported an error`,A=>{yst(o,a,{configuration:n,report:A})});this.code=aU(o,a)}},mx=class extends h1{constructor({fileName:r,code:o,signal:a,stdout:n,stderr:u}){super({fileName:r,code:o,signal:a});this.stdout=n,this.stderr=u}};xd=new Set;mst=new Map([["SIGINT",2],["SIGQUIT",3],["SIGKILL",9],["SIGTERM",15]])});var SE,nce=dt(()=>{bt();_t();g1();SE=class extends it{constructor(){super(...arguments);this.cwd=fe.String("--cwd",process.cwd(),{description:"The directory to run the command in"});this.commandName=fe.String();this.args=fe.Proxy()}async execute(){let r=this.args.length>0?`${this.commandName} ${this.args.join(" ")}`:this.commandName;return await PE(r,[],{cwd:Ae.toPortablePath(this.cwd),stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}};SE.usage={description:"run a command using yarn's portable shell",details:` | 143 | `);return{stdout:n,stderr:u}}makeResolver(){let e=[];for(let r of this.plugins.values())for(let o of r.resolvers||[])e.push(new o);return new xd([new t1,new Gn,...e])}makeFetcher(){let e=[];for(let r of this.plugins.values())for(let o of r.fetchers||[])e.push(new o);return new fE([new pE,new gE,...e])}getLinkers(){let e=[];for(let r of this.plugins.values())for(let o of r.linkers||[])e.push(new o);return e}getSupportedArchitectures(){let e=g1(),r=this.get("supportedArchitectures"),o=r.get("os");o!==null&&(o=o.map(u=>u==="current"?e.os:u));let a=r.get("cpu");a!==null&&(a=a.map(u=>u==="current"?e.cpu:u));let n=r.get("libc");return n!==null&&(n=Zu(n,u=>u==="current"?e.libc??Zu.skip:u)),{os:o,cpu:a,libc:n}}async refreshPackageExtensions(){this.packageExtensions=new Map;let e=this.packageExtensions,r=(o,a,{userProvided:n=!1}={})=>{if(!cl(o.range))throw new Error("Only semver ranges are allowed as keys for the packageExtensions setting");let u=new Nt;u.load(a,{yamlCompatibilityMode:!0});let A=Yy(e,o.identHash),p=[];A.push([o.range,p]);let h={status:"inactive",userProvided:n,parentDescriptor:o};for(let C of u.dependencies.values())p.push({...h,type:"Dependency",descriptor:C});for(let C of u.peerDependencies.values())p.push({...h,type:"PeerDependency",descriptor:C});for(let[C,w]of u.peerDependenciesMeta)for(let[v,b]of Object.entries(w))p.push({...h,type:"PeerDependencyMeta",selector:C,key:v,value:b})};await this.triggerHook(o=>o.registerPackageExtensions,this,r);for(let[o,a]of this.get("packageExtensions"))r(i0(o,!0),JS(a),{userProvided:!0})}normalizeLocator(e){return cl(e.reference)?us(e,`${this.get("defaultProtocol")}${e.reference}`):QE.test(e.reference)?us(e,`${this.get("defaultProtocol")}${e.reference}`):e}normalizeDependency(e){return cl(e.range)?mn(e,`${this.get("defaultProtocol")}${e.range}`):QE.test(e.range)?mn(e,`${this.get("defaultProtocol")}${e.range}`):e}normalizeDependencyMap(e){return new Map([...e].map(([r,o])=>[r,this.normalizeDependency(o)]))}normalizePackage(e){let r=Yw(e);if(this.packageExtensions==null)throw new Error("refreshPackageExtensions has to be called before normalizing packages");let o=this.packageExtensions.get(e.identHash);if(typeof o<"u"){let n=e.version;if(n!==null){for(let[u,A]of o)if(!!Pd(n,u))for(let p of A)switch(p.status==="inactive"&&(p.status="redundant"),p.type){case"Dependency":typeof r.dependencies.get(p.descriptor.identHash)>"u"&&(p.status="active",r.dependencies.set(p.descriptor.identHash,this.normalizeDependency(p.descriptor)));break;case"PeerDependency":typeof r.peerDependencies.get(p.descriptor.identHash)>"u"&&(p.status="active",r.peerDependencies.set(p.descriptor.identHash,p.descriptor));break;case"PeerDependencyMeta":{let h=r.peerDependenciesMeta.get(p.selector);(typeof h>"u"||!Object.prototype.hasOwnProperty.call(h,p.key)||h[p.key]!==p.value)&&(p.status="active",Sf(r.peerDependenciesMeta,p.selector,()=>({}))[p.key]=p.value)}break;default:hL(p);break}}}let a=n=>n.scope?`${n.scope}__${n.name}`:`${n.name}`;for(let n of r.peerDependenciesMeta.keys()){let u=Ys(n);r.peerDependencies.has(u.identHash)||r.peerDependencies.set(u.identHash,mn(u,"*"))}for(let n of r.peerDependencies.values()){if(n.scope==="types")continue;let u=a(n),A=nA("types",u),p=nn(A);r.peerDependencies.has(A.identHash)||r.peerDependenciesMeta.has(p)||(r.peerDependencies.set(A.identHash,mn(A,"*")),r.peerDependenciesMeta.set(p,{optional:!0}))}return r.dependencies=new Map(xa(r.dependencies,([,n])=>Qa(n))),r.peerDependencies=new Map(xa(r.peerDependencies,([,n])=>Qa(n))),r}getLimit(e){return Sf(this.limits,e,()=>(0,cce.default)(this.get(e)))}async triggerHook(e,...r){for(let o of this.plugins.values()){let a=o.hooks;if(!a)continue;let n=e(a);!n||await n(...r)}}async triggerMultipleHooks(e,r){for(let o of r)await this.triggerHook(e,...o)}async reduceHook(e,r,...o){let a=r;for(let n of this.plugins.values()){let u=n.hooks;if(!u)continue;let A=e(u);!A||(a=await A(a,...o))}return a}async firstHook(e,...r){for(let o of this.plugins.values()){let a=o.hooks;if(!a)continue;let n=e(a);if(!n)continue;let u=await n(...r);if(typeof u<"u")return u}return null}},Xe=Jc;Xe.deleteProperty=Symbol(),Xe.telemetry=null});var Mr={};Yt(Mr,{EndStrategy:()=>cU,ExecError:()=>Sx,PipeError:()=>C1,execvp:()=>Z4,pipevp:()=>sA});function kd(t){return t!==null&&typeof t.fd=="number"}function oU(){}function aU(){for(let t of Fd)t.kill()}async function sA(t,e,{cwd:r,env:o=process.env,strict:a=!1,stdin:n=null,stdout:u,stderr:A,end:p=2}){let h=["pipe","pipe","pipe"];n===null?h[0]="ignore":kd(n)&&(h[0]=n),kd(u)&&(h[1]=u),kd(A)&&(h[2]=A);let C=(0,lU.default)(t,e,{cwd:ue.fromPortablePath(r),env:{...o,PWD:ue.fromPortablePath(r)},stdio:h});Fd.add(C),Fd.size===1&&(process.on("SIGINT",oU),process.on("SIGTERM",aU)),!kd(n)&&n!==null&&n.pipe(C.stdin),kd(u)||C.stdout.pipe(u,{end:!1}),kd(A)||C.stderr.pipe(A,{end:!1});let w=()=>{for(let v of new Set([u,A]))kd(v)||v.end()};return new Promise((v,b)=>{C.on("error",E=>{Fd.delete(C),Fd.size===0&&(process.off("SIGINT",oU),process.off("SIGTERM",aU)),(p===2||p===1)&&w(),b(E)}),C.on("close",(E,R)=>{Fd.delete(C),Fd.size===0&&(process.off("SIGINT",oU),process.off("SIGTERM",aU)),(p===2||p===1&&E!==0)&&w(),E===0||!a?v({code:uU(E,R)}):b(new C1({fileName:t,code:E,signal:R}))})})}async function Z4(t,e,{cwd:r,env:o=process.env,encoding:a="utf8",strict:n=!1}){let u=["ignore","pipe","pipe"],A=[],p=[],h=ue.fromPortablePath(r);typeof o.PWD<"u"&&(o={...o,PWD:h});let C=(0,lU.default)(t,e,{cwd:h,env:o,stdio:u});return C.stdout.on("data",w=>{A.push(w)}),C.stderr.on("data",w=>{p.push(w)}),await new Promise((w,v)=>{C.on("error",b=>{let E=Xe.create(r),R=Kt(E,t,Bt.PATH);v(new Vt(1,`Process ${R} failed to spawn`,L=>{L.reportError(1,` ${$u(E,{label:"Thrown Error",value:Wc(Bt.NO_HINT,b.message)})}`)}))}),C.on("close",(b,E)=>{let R=a==="buffer"?Buffer.concat(A):Buffer.concat(A).toString(a),L=a==="buffer"?Buffer.concat(p):Buffer.concat(p).toString(a);b===0||!n?w({code:uU(b,E),stdout:R,stderr:L}):v(new Sx({fileName:t,code:b,signal:E,stdout:R,stderr:L}))})})}function uU(t,e){let r=Fst.get(e);return typeof r<"u"?128+r:t??1}function Rst(t,e,{configuration:r,report:o}){o.reportError(1,` ${$u(r,t!==null?{label:"Exit Code",value:Wc(Bt.NUMBER,t)}:{label:"Exit Signal",value:Wc(Bt.CODE,e)})}`)}var lU,cU,C1,Sx,Fd,Fst,Cx=dt(()=>{St();lU=tt(eT());E1();Zl();zl();cU=(o=>(o[o.Never=0]="Never",o[o.ErrorCode=1]="ErrorCode",o[o.Always=2]="Always",o))(cU||{}),C1=class extends Vt{constructor({fileName:r,code:o,signal:a}){let n=Xe.create(J.cwd()),u=Kt(n,r,Bt.PATH);super(1,`Child ${u} reported an error`,A=>{Rst(o,a,{configuration:n,report:A})});this.code=uU(o,a)}},Sx=class extends C1{constructor({fileName:r,code:o,signal:a,stdout:n,stderr:u}){super({fileName:r,code:o,signal:a});this.stdout=n,this.stderr=u}};Fd=new Set;Fst=new Map([["SIGINT",2],["SIGQUIT",3],["SIGKILL",9],["SIGTERM",15]])});var kE,Ace=dt(()=>{St();_t();I1();kE=class extends it{constructor(){super(...arguments);this.cwd=fe.String("--cwd",process.cwd(),{description:"The directory to run the command in"});this.commandName=fe.String();this.args=fe.Proxy()}async execute(){let r=this.args.length>0?`${this.commandName} ${this.args.join(" ")}`:this.commandName;return await FE(r,[],{cwd:ue.toPortablePath(this.cwd),stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}};kE.usage={description:"run a command using yarn's portable shell",details:` |
144 | This command will run a command using Yarn's portable shell. | 144 | This command will run a command using Yarn's portable shell. |
145 | 145 | ||
146 | Make sure to escape glob patterns, redirections, and other features that might be expanded by your own shell. | 146 | Make sure to escape glob patterns, redirections, and other features that might be expanded by your own shell. |
@@ -150,124 +150,124 @@ Please report this to https://github.com/szmarczak/http2-wrapper/`);E(R)}return} | |||
150 | Note: Don't use this command in Yarn scripts, as Yarn's shell is automatically used. | 150 | Note: Don't use this command in Yarn scripts, as Yarn's shell is automatically used. |
151 | 151 | ||
152 | For a list of features, visit: https://github.com/yarnpkg/berry/blob/master/packages/yarnpkg-shell/README.md. | 152 | For a list of features, visit: https://github.com/yarnpkg/berry/blob/master/packages/yarnpkg-shell/README.md. |
153 | `,examples:[["Run a simple command","$0 echo Hello"],["Run a command with a glob pattern","$0 echo '*.js'"],["Run a command with a redirection","$0 echo Hello World '>' hello.txt"],["Run a command with an escaped glob pattern (The double escape is needed in Unix shells)",`$0 echo '"*.js"'`],["Run a command with a variable (Double quotes are needed in Unix shells, to prevent them from expanding the variable)",'$0 "GREETING=Hello echo $GREETING World"']]}});var ol,ice=dt(()=>{ol=class extends Error{constructor(e){super(e),this.name="ShellError"}}});var Cx={};Yt(Cx,{fastGlobOptions:()=>ace,isBraceExpansion:()=>lU,isGlobPattern:()=>Est,match:()=>Cst,micromatchOptions:()=>Ex});function Est(t){if(!yx.default.scan(t,Ex).isGlob)return!1;try{yx.default.parse(t,Ex)}catch{return!1}return!0}function Cst(t,{cwd:e,baseFs:r}){return(0,sce.default)(t,{...ace,cwd:Ae.fromPortablePath(e),fs:fD(oce.default,new Up(r))})}function lU(t){return yx.default.scan(t,Ex).isBrace}var sce,oce,yx,Ex,ace,lce=dt(()=>{bt();sce=tt(pP()),oce=tt(Ie("fs")),yx=tt(Jo()),Ex={strictBrackets:!0},ace={onlyDirectories:!1,onlyFiles:!1}});function cU(){}function uU(){for(let t of bd)t.kill()}function fce(t,e,r,o){return a=>{let n=a[0]instanceof sA.Transform?"pipe":a[0],u=a[1]instanceof sA.Transform?"pipe":a[1],A=a[2]instanceof sA.Transform?"pipe":a[2],p=(0,uce.default)(t,e,{...o,stdio:[n,u,A]});return bd.add(p),bd.size===1&&(process.on("SIGINT",cU),process.on("SIGTERM",uU)),a[0]instanceof sA.Transform&&a[0].pipe(p.stdin),a[1]instanceof sA.Transform&&p.stdout.pipe(a[1],{end:!1}),a[2]instanceof sA.Transform&&p.stderr.pipe(a[2],{end:!1}),{stdin:p.stdin,promise:new Promise(h=>{p.on("error",C=>{switch(bd.delete(p),bd.size===0&&(process.off("SIGINT",cU),process.off("SIGTERM",uU)),C.code){case"ENOENT":a[2].write(`command not found: ${t} | 153 | `,examples:[["Run a simple command","$0 echo Hello"],["Run a command with a glob pattern","$0 echo '*.js'"],["Run a command with a redirection","$0 echo Hello World '>' hello.txt"],["Run a command with an escaped glob pattern (The double escape is needed in Unix shells)",`$0 echo '"*.js"'`],["Run a command with a variable (Double quotes are needed in Unix shells, to prevent them from expanding the variable)",'$0 "GREETING=Hello echo $GREETING World"']]}});var ul,fce=dt(()=>{ul=class extends Error{constructor(e){super(e),this.name="ShellError"}}});var bx={};Yt(bx,{fastGlobOptions:()=>gce,isBraceExpansion:()=>AU,isGlobPattern:()=>Tst,match:()=>Nst,micromatchOptions:()=>xx});function Tst(t){if(!Px.default.scan(t,xx).isGlob)return!1;try{Px.default.parse(t,xx)}catch{return!1}return!0}function Nst(t,{cwd:e,baseFs:r}){return(0,pce.default)(t,{...gce,cwd:ue.fromPortablePath(e),fs:ID(hce.default,new qp(r))})}function AU(t){return Px.default.scan(t,xx).isBrace}var pce,hce,Px,xx,gce,dce=dt(()=>{St();pce=tt(wP()),hce=tt(Ie("fs")),Px=tt(zo()),xx={strictBrackets:!0},gce={onlyDirectories:!1,onlyFiles:!1}});function fU(){}function pU(){for(let t of Rd)t.kill()}function Cce(t,e,r,o){return a=>{let n=a[0]instanceof oA.Transform?"pipe":a[0],u=a[1]instanceof oA.Transform?"pipe":a[1],A=a[2]instanceof oA.Transform?"pipe":a[2],p=(0,yce.default)(t,e,{...o,stdio:[n,u,A]});return Rd.add(p),Rd.size===1&&(process.on("SIGINT",fU),process.on("SIGTERM",pU)),a[0]instanceof oA.Transform&&a[0].pipe(p.stdin),a[1]instanceof oA.Transform&&p.stdout.pipe(a[1],{end:!1}),a[2]instanceof oA.Transform&&p.stderr.pipe(a[2],{end:!1}),{stdin:p.stdin,promise:new Promise(h=>{p.on("error",C=>{switch(Rd.delete(p),Rd.size===0&&(process.off("SIGINT",fU),process.off("SIGTERM",pU)),C.code){case"ENOENT":a[2].write(`command not found: ${t} |
154 | `),h(127);break;case"EACCES":a[2].write(`permission denied: ${t} | 154 | `),h(127);break;case"EACCES":a[2].write(`permission denied: ${t} |
155 | `),h(128);break;default:a[2].write(`uncaught error: ${C.message} | 155 | `),h(128);break;default:a[2].write(`uncaught error: ${C.message} |
156 | `),h(1);break}}),p.on("close",C=>{bd.delete(p),bd.size===0&&(process.off("SIGINT",cU),process.off("SIGTERM",uU)),h(C!==null?C:129)})})}}}function pce(t){return e=>{let r=e[0]==="pipe"?new sA.PassThrough:e[0];return{stdin:r,promise:Promise.resolve().then(()=>t({stdin:r,stdout:e[1],stderr:e[2]}))}}}function Ix(t,e){return xE.start(t,e)}function cce(t,e=null){let r=new sA.PassThrough,o=new Ace.StringDecoder,a="";return r.on("data",n=>{let u=o.write(n),A;do if(A=u.indexOf(` | 156 | `),h(1);break}}),p.on("close",C=>{Rd.delete(p),Rd.size===0&&(process.off("SIGINT",fU),process.off("SIGTERM",pU)),h(C!==null?C:129)})})}}}function Ice(t){return e=>{let r=e[0]==="pipe"?new oA.PassThrough:e[0];return{stdin:r,promise:Promise.resolve().then(()=>t({stdin:r,stdout:e[1],stderr:e[2]}))}}}function Qx(t,e){return RE.start(t,e)}function mce(t,e=null){let r=new oA.PassThrough,o=new Ece.StringDecoder,a="";return r.on("data",n=>{let u=o.write(n),A;do if(A=u.indexOf(` |
157 | `),A!==-1){let p=a+u.substring(0,A);u=u.substring(A+1),a="",t(e!==null?`${e} ${p}`:p)}while(A!==-1);a+=u}),r.on("end",()=>{let n=o.end();n!==""&&t(e!==null?`${e} ${n}`:n)}),r}function hce(t,{prefix:e}){return{stdout:cce(r=>t.stdout.write(`${r} | 157 | `),A!==-1){let p=a+u.substring(0,A);u=u.substring(A+1),a="",t(e!==null?`${e} ${p}`:p)}while(A!==-1);a+=u}),r.on("end",()=>{let n=o.end();n!==""&&t(e!==null?`${e} ${n}`:n)}),r}function wce(t,{prefix:e}){return{stdout:mce(r=>t.stdout.write(`${r} |
158 | `),t.stdout.isTTY?e:null),stderr:cce(r=>t.stderr.write(`${r} | 158 | `),t.stdout.isTTY?e:null),stderr:mce(r=>t.stderr.write(`${r} |
159 | `),t.stderr.isTTY?e:null)}}var uce,sA,Ace,bd,Zl,AU,xE,fU=dt(()=>{uce=tt(XR()),sA=Ie("stream"),Ace=Ie("string_decoder"),bd=new Set;Zl=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},AU=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");this.stream.end()}attach(e){this.stream=e}get(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");return this.stream}},xE=class{constructor(e,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=e,this.implementation=r}static start(e,{stdin:r,stdout:o,stderr:a}){let n=new xE(null,e);return n.stdin=r,n.stdout=o,n.stderr=a,n}pipeTo(e,r=1){let o=new xE(this,e),a=new AU;return o.pipe=a,o.stdout=this.stdout,o.stderr=this.stderr,(r&1)===1?this.stdout=a:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)===2?this.stderr=a:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),o}async exec(){let e=["ignore","ignore","ignore"];if(this.pipe)e[0]="pipe";else{if(this.stdin===null)throw new Error("Assertion failed: No input stream registered");e[0]=this.stdin.get()}let r;if(this.stdout===null)throw new Error("Assertion failed: No output stream registered");r=this.stdout,e[1]=r.get();let o;if(this.stderr===null)throw new Error("Assertion failed: No error stream registered");o=this.stderr,e[2]=o.get();let a=this.implementation(e);return this.pipe&&this.pipe.attach(a.stdin),await a.promise.then(n=>(r.close(),o.close(),n))}async run(){let e=[];for(let o=this;o;o=o.ancestor)e.push(o.exec());return(await Promise.all(e))[0]}}});var E1={};Yt(E1,{EntryCommand:()=>SE,ShellError:()=>ol,execute:()=>PE,globUtils:()=>Cx});function gce(t,e,r){let o=new al.PassThrough({autoDestroy:!0});switch(t){case 0:(e&1)===1&&r.stdin.pipe(o,{end:!1}),(e&2)===2&&r.stdin instanceof al.Writable&&o.pipe(r.stdin,{end:!1});break;case 1:(e&1)===1&&r.stdout.pipe(o,{end:!1}),(e&2)===2&&o.pipe(r.stdout,{end:!1});break;case 2:(e&1)===1&&r.stderr.pipe(o,{end:!1}),(e&2)===2&&o.pipe(r.stderr,{end:!1});break;default:throw new ol(`Bad file descriptor: "${t}"`)}return o}function Bx(t,e={}){let r={...t,...e};return r.environment={...t.environment,...e.environment},r.variables={...t.variables,...e.variables},r}async function Bst(t,e,r){let o=[],a=new al.PassThrough;return a.on("data",n=>o.push(n)),await vx(t,e,Bx(r,{stdout:a})),Buffer.concat(o).toString().replace(/[\r\n]+$/,"")}async function dce(t,e,r){let o=t.map(async n=>{let u=await Qd(n.args,e,r);return{name:n.name,value:u.join(" ")}});return(await Promise.all(o)).reduce((n,u)=>(n[u.name]=u.value,n),{})}function wx(t){return t.match(/[^ \r\n\t]+/g)||[]}async function wce(t,e,r,o,a=o){switch(t.name){case"$":o(String(process.pid));break;case"#":o(String(e.args.length));break;case"@":if(t.quoted)for(let n of e.args)a(n);else for(let n of e.args){let u=wx(n);for(let A=0;A<u.length-1;++A)a(u[A]);o(u[u.length-1])}break;case"*":{let n=e.args.join(" ");if(t.quoted)o(n);else for(let u of wx(n))a(u)}break;case"PPID":o(String(process.ppid));break;case"RANDOM":o(String(Math.floor(Math.random()*32768)));break;default:{let n=parseInt(t.name,10),u,A=Number.isFinite(n);if(A?n>=0&&n<e.args.length&&(u=e.args[n]):Object.prototype.hasOwnProperty.call(r.variables,t.name)?u=r.variables[t.name]:Object.prototype.hasOwnProperty.call(r.environment,t.name)&&(u=r.environment[t.name]),typeof u<"u"&&t.alternativeValue?u=(await Qd(t.alternativeValue,e,r)).join(" "):typeof u>"u"&&(t.defaultValue?u=(await Qd(t.defaultValue,e,r)).join(" "):t.alternativeValue&&(u="")),typeof u>"u")throw A?new ol(`Unbound argument #${n}`):new ol(`Unbound variable "${t.name}"`);if(t.quoted)o(u);else{let p=wx(u);for(let C=0;C<p.length-1;++C)a(p[C]);let h=p[p.length-1];typeof h<"u"&&o(h)}}break}}async function d1(t,e,r){if(t.type==="number"){if(Number.isInteger(t.value))return t.value;throw new Error(`Invalid number: "${t.value}", only integers are allowed`)}else if(t.type==="variable"){let o=[];await wce({...t,quoted:!0},e,r,n=>o.push(n));let a=Number(o.join(" "));return Number.isNaN(a)?d1({type:"variable",name:o.join(" ")},e,r):d1({type:"number",value:a},e,r)}else return vst[t.type](await d1(t.left,e,r),await d1(t.right,e,r))}async function Qd(t,e,r){let o=new Map,a=[],n=[],u=C=>{n.push(C)},A=()=>{n.length>0&&a.push(n.join("")),n=[]},p=C=>{u(C),A()},h=(C,w,v)=>{let b=JSON.stringify({type:C,fd:w}),E=o.get(b);typeof E>"u"&&o.set(b,E=[]),E.push(v)};for(let C of t){let w=!1;switch(C.type){case"redirection":{let v=await Qd(C.args,e,r);for(let b of v)h(C.subtype,C.fd,b)}break;case"argument":for(let v of C.segments)switch(v.type){case"text":u(v.text);break;case"glob":u(v.pattern),w=!0;break;case"shell":{let b=await Bst(v.shell,e,r);if(v.quoted)u(b);else{let E=wx(b);for(let R=0;R<E.length-1;++R)p(E[R]);u(E[E.length-1])}}break;case"variable":await wce(v,e,r,u,p);break;case"arithmetic":u(String(await d1(v.arithmetic,e,r)));break}break}if(A(),w){let v=a.pop();if(typeof v>"u")throw new Error("Assertion failed: Expected a glob pattern to have been set");let b=await e.glob.match(v,{cwd:r.cwd,baseFs:e.baseFs});if(b.length===0){let E=lU(v)?". Note: Brace expansion of arbitrary strings isn't currently supported. For more details, please read this issue: https://github.com/yarnpkg/berry/issues/22":"";throw new ol(`No matches found: "${v}"${E}`)}for(let E of b.sort())p(E)}}if(o.size>0){let C=[];for(let[w,v]of o.entries())C.splice(C.length,0,w,String(v.length),...v);a.splice(0,0,"__ysh_set_redirects",...C,"--")}return a}function m1(t,e,r){e.builtins.has(t[0])||(t=["command",...t]);let o=Ae.fromPortablePath(r.cwd),a=r.environment;typeof a.PWD<"u"&&(a={...a,PWD:o});let[n,...u]=t;if(n==="command")return fce(u[0],u.slice(1),e,{cwd:o,env:a});let A=e.builtins.get(n);if(typeof A>"u")throw new Error(`Assertion failed: A builtin should exist for "${n}"`);return pce(async({stdin:p,stdout:h,stderr:C})=>{let{stdin:w,stdout:v,stderr:b}=r;r.stdin=p,r.stdout=h,r.stderr=C;try{return await A(u,e,r)}finally{r.stdin=w,r.stdout=v,r.stderr=b}})}function Dst(t,e,r){return o=>{let a=new al.PassThrough,n=vx(t,e,Bx(r,{stdin:a}));return{stdin:a,promise:n}}}function Sst(t,e,r){return o=>{let a=new al.PassThrough,n=vx(t,e,r);return{stdin:a,promise:n}}}function mce(t,e,r,o){if(e.length===0)return t;{let a;do a=String(Math.random());while(Object.prototype.hasOwnProperty.call(o.procedures,a));return o.procedures={...o.procedures},o.procedures[a]=t,m1([...e,"__ysh_run_procedure",a],r,o)}}async function yce(t,e,r){let o=t,a=null,n=null;for(;o;){let u=o.then?{...r}:r,A;switch(o.type){case"command":{let p=await Qd(o.args,e,r),h=await dce(o.envs,e,r);A=o.envs.length?m1(p,e,Bx(u,{environment:h})):m1(p,e,u)}break;case"subshell":{let p=await Qd(o.args,e,r),h=Dst(o.subshell,e,u);A=mce(h,p,e,u)}break;case"group":{let p=await Qd(o.args,e,r),h=Sst(o.group,e,u);A=mce(h,p,e,u)}break;case"envs":{let p=await dce(o.envs,e,r);u.environment={...u.environment,...p},A=m1(["true"],e,u)}break}if(typeof A>"u")throw new Error("Assertion failed: An action should have been generated");if(a===null)n=Ix(A,{stdin:new Zl(u.stdin),stdout:new Zl(u.stdout),stderr:new Zl(u.stderr)});else{if(n===null)throw new Error("Assertion failed: The execution pipeline should have been setup");switch(a){case"|":n=n.pipeTo(A,1);break;case"|&":n=n.pipeTo(A,3);break}}o.then?(a=o.then.type,o=o.then.chain):o=null}if(n===null)throw new Error("Assertion failed: The execution pipeline should have been setup");return await n.run()}async function Pst(t,e,r,{background:o=!1}={}){function a(n){let u=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],A=u[n%u.length];return Ece.default.hex(A)}if(o){let n=r.nextBackgroundJobIndex++,u=a(n),A=`[${n}]`,p=u(A),{stdout:h,stderr:C}=hce(r,{prefix:p});return r.backgroundJobs.push(yce(t,e,Bx(r,{stdout:h,stderr:C})).catch(w=>C.write(`${w.message} | 159 | `),t.stderr.isTTY?e:null)}}var yce,oA,Ece,Rd,rc,hU,RE,gU=dt(()=>{yce=tt(eT()),oA=Ie("stream"),Ece=Ie("string_decoder"),Rd=new Set;rc=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},hU=class{constructor(){this.stream=null}close(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");this.stream.end()}attach(e){this.stream=e}get(){if(this.stream===null)throw new Error("Assertion failed: No stream attached");return this.stream}},RE=class{constructor(e,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=e,this.implementation=r}static start(e,{stdin:r,stdout:o,stderr:a}){let n=new RE(null,e);return n.stdin=r,n.stdout=o,n.stderr=a,n}pipeTo(e,r=1){let o=new RE(this,e),a=new hU;return o.pipe=a,o.stdout=this.stdout,o.stderr=this.stderr,(r&1)===1?this.stdout=a:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)===2?this.stderr=a:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),o}async exec(){let e=["ignore","ignore","ignore"];if(this.pipe)e[0]="pipe";else{if(this.stdin===null)throw new Error("Assertion failed: No input stream registered");e[0]=this.stdin.get()}let r;if(this.stdout===null)throw new Error("Assertion failed: No output stream registered");r=this.stdout,e[1]=r.get();let o;if(this.stderr===null)throw new Error("Assertion failed: No error stream registered");o=this.stderr,e[2]=o.get();let a=this.implementation(e);return this.pipe&&this.pipe.attach(a.stdin),await a.promise.then(n=>(r.close(),o.close(),n))}async run(){let e=[];for(let o=this;o;o=o.ancestor)e.push(o.exec());return(await Promise.all(e))[0]}}});var D1={};Yt(D1,{EntryCommand:()=>kE,ShellError:()=>ul,execute:()=>FE,globUtils:()=>bx});function Bce(t,e,r){let o=new Al.PassThrough({autoDestroy:!0});switch(t){case 0:(e&1)===1&&r.stdin.pipe(o,{end:!1}),(e&2)===2&&r.stdin instanceof Al.Writable&&o.pipe(r.stdin,{end:!1});break;case 1:(e&1)===1&&r.stdout.pipe(o,{end:!1}),(e&2)===2&&o.pipe(r.stdout,{end:!1});break;case 2:(e&1)===1&&r.stderr.pipe(o,{end:!1}),(e&2)===2&&o.pipe(r.stderr,{end:!1});break;default:throw new ul(`Bad file descriptor: "${t}"`)}return o}function Fx(t,e={}){let r={...t,...e};return r.environment={...t.environment,...e.environment},r.variables={...t.variables,...e.variables},r}async function Mst(t,e,r){let o=[],a=new Al.PassThrough;return a.on("data",n=>o.push(n)),await Rx(t,e,Fx(r,{stdout:a})),Buffer.concat(o).toString().replace(/[\r\n]+$/,"")}async function vce(t,e,r){let o=t.map(async n=>{let u=await Td(n.args,e,r);return{name:n.name,value:u.join(" ")}});return(await Promise.all(o)).reduce((n,u)=>(n[u.name]=u.value,n),{})}function kx(t){return t.match(/[^ \r\n\t]+/g)||[]}async function Qce(t,e,r,o,a=o){switch(t.name){case"$":o(String(process.pid));break;case"#":o(String(e.args.length));break;case"@":if(t.quoted)for(let n of e.args)a(n);else for(let n of e.args){let u=kx(n);for(let A=0;A<u.length-1;++A)a(u[A]);o(u[u.length-1])}break;case"*":{let n=e.args.join(" ");if(t.quoted)o(n);else for(let u of kx(n))a(u)}break;case"PPID":o(String(process.ppid));break;case"RANDOM":o(String(Math.floor(Math.random()*32768)));break;default:{let n=parseInt(t.name,10),u,A=Number.isFinite(n);if(A?n>=0&&n<e.args.length&&(u=e.args[n]):Object.prototype.hasOwnProperty.call(r.variables,t.name)?u=r.variables[t.name]:Object.prototype.hasOwnProperty.call(r.environment,t.name)&&(u=r.environment[t.name]),typeof u<"u"&&t.alternativeValue?u=(await Td(t.alternativeValue,e,r)).join(" "):typeof u>"u"&&(t.defaultValue?u=(await Td(t.defaultValue,e,r)).join(" "):t.alternativeValue&&(u="")),typeof u>"u")throw A?new ul(`Unbound argument #${n}`):new ul(`Unbound variable "${t.name}"`);if(t.quoted)o(u);else{let p=kx(u);for(let C=0;C<p.length-1;++C)a(p[C]);let h=p[p.length-1];typeof h<"u"&&o(h)}}break}}async function w1(t,e,r){if(t.type==="number"){if(Number.isInteger(t.value))return t.value;throw new Error(`Invalid number: "${t.value}", only integers are allowed`)}else if(t.type==="variable"){let o=[];await Qce({...t,quoted:!0},e,r,n=>o.push(n));let a=Number(o.join(" "));return Number.isNaN(a)?w1({type:"variable",name:o.join(" ")},e,r):w1({type:"number",value:a},e,r)}else return Ust[t.type](await w1(t.left,e,r),await w1(t.right,e,r))}async function Td(t,e,r){let o=new Map,a=[],n=[],u=C=>{n.push(C)},A=()=>{n.length>0&&a.push(n.join("")),n=[]},p=C=>{u(C),A()},h=(C,w,v)=>{let b=JSON.stringify({type:C,fd:w}),E=o.get(b);typeof E>"u"&&o.set(b,E=[]),E.push(v)};for(let C of t){let w=!1;switch(C.type){case"redirection":{let v=await Td(C.args,e,r);for(let b of v)h(C.subtype,C.fd,b)}break;case"argument":for(let v of C.segments)switch(v.type){case"text":u(v.text);break;case"glob":u(v.pattern),w=!0;break;case"shell":{let b=await Mst(v.shell,e,r);if(v.quoted)u(b);else{let E=kx(b);for(let R=0;R<E.length-1;++R)p(E[R]);u(E[E.length-1])}}break;case"variable":await Qce(v,e,r,u,p);break;case"arithmetic":u(String(await w1(v.arithmetic,e,r)));break}break}if(A(),w){let v=a.pop();if(typeof v>"u")throw new Error("Assertion failed: Expected a glob pattern to have been set");let b=await e.glob.match(v,{cwd:r.cwd,baseFs:e.baseFs});if(b.length===0){let E=AU(v)?". Note: Brace expansion of arbitrary strings isn't currently supported. For more details, please read this issue: https://github.com/yarnpkg/berry/issues/22":"";throw new ul(`No matches found: "${v}"${E}`)}for(let E of b.sort())p(E)}}if(o.size>0){let C=[];for(let[w,v]of o.entries())C.splice(C.length,0,w,String(v.length),...v);a.splice(0,0,"__ysh_set_redirects",...C,"--")}return a}function B1(t,e,r){e.builtins.has(t[0])||(t=["command",...t]);let o=ue.fromPortablePath(r.cwd),a=r.environment;typeof a.PWD<"u"&&(a={...a,PWD:o});let[n,...u]=t;if(n==="command")return Cce(u[0],u.slice(1),e,{cwd:o,env:a});let A=e.builtins.get(n);if(typeof A>"u")throw new Error(`Assertion failed: A builtin should exist for "${n}"`);return Ice(async({stdin:p,stdout:h,stderr:C})=>{let{stdin:w,stdout:v,stderr:b}=r;r.stdin=p,r.stdout=h,r.stderr=C;try{return await A(u,e,r)}finally{r.stdin=w,r.stdout=v,r.stderr=b}})}function _st(t,e,r){return o=>{let a=new Al.PassThrough,n=Rx(t,e,Fx(r,{stdin:a}));return{stdin:a,promise:n}}}function Hst(t,e,r){return o=>{let a=new Al.PassThrough,n=Rx(t,e,r);return{stdin:a,promise:n}}}function Dce(t,e,r,o){if(e.length===0)return t;{let a;do a=String(Math.random());while(Object.prototype.hasOwnProperty.call(o.procedures,a));return o.procedures={...o.procedures},o.procedures[a]=t,B1([...e,"__ysh_run_procedure",a],r,o)}}async function Sce(t,e,r){let o=t,a=null,n=null;for(;o;){let u=o.then?{...r}:r,A;switch(o.type){case"command":{let p=await Td(o.args,e,r),h=await vce(o.envs,e,r);A=o.envs.length?B1(p,e,Fx(u,{environment:h})):B1(p,e,u)}break;case"subshell":{let p=await Td(o.args,e,r),h=_st(o.subshell,e,u);A=Dce(h,p,e,u)}break;case"group":{let p=await Td(o.args,e,r),h=Hst(o.group,e,u);A=Dce(h,p,e,u)}break;case"envs":{let p=await vce(o.envs,e,r);u.environment={...u.environment,...p},A=B1(["true"],e,u)}break}if(typeof A>"u")throw new Error("Assertion failed: An action should have been generated");if(a===null)n=Qx(A,{stdin:new rc(u.stdin),stdout:new rc(u.stdout),stderr:new rc(u.stderr)});else{if(n===null)throw new Error("Assertion failed: The execution pipeline should have been setup");switch(a){case"|":n=n.pipeTo(A,1);break;case"|&":n=n.pipeTo(A,3);break}}o.then?(a=o.then.type,o=o.then.chain):o=null}if(n===null)throw new Error("Assertion failed: The execution pipeline should have been setup");return await n.run()}async function qst(t,e,r,{background:o=!1}={}){function a(n){let u=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],A=u[n%u.length];return Pce.default.hex(A)}if(o){let n=r.nextBackgroundJobIndex++,u=a(n),A=`[${n}]`,p=u(A),{stdout:h,stderr:C}=wce(r,{prefix:p});return r.backgroundJobs.push(Sce(t,e,Fx(r,{stdout:h,stderr:C})).catch(w=>C.write(`${w.message} |
160 | `)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${p}, '${u(ly(t))}' has ended | 160 | `)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${p}, '${u(py(t))}' has ended |
161 | `)})),0}return await yce(t,e,r)}async function xst(t,e,r,{background:o=!1}={}){let a,n=A=>{a=A,r.variables["?"]=String(A)},u=async A=>{try{return await Pst(A.chain,e,r,{background:o&&typeof A.then>"u"})}catch(p){if(!(p instanceof ol))throw p;return r.stderr.write(`${p.message} | 161 | `)})),0}return await Sce(t,e,r)}async function jst(t,e,r,{background:o=!1}={}){let a,n=A=>{a=A,r.variables["?"]=String(A)},u=async A=>{try{return await qst(A.chain,e,r,{background:o&&typeof A.then>"u"})}catch(p){if(!(p instanceof ul))throw p;return r.stderr.write(`${p.message} |
162 | `),1}};for(n(await u(t));t.then;){if(r.exitCode!==null)return r.exitCode;switch(t.then.type){case"&&":a===0&&n(await u(t.then.line));break;case"||":a!==0&&n(await u(t.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: "${t.then.type}"`)}t=t.then.line}return a}async function vx(t,e,r){let o=r.backgroundJobs;r.backgroundJobs=[];let a=0;for(let{command:n,type:u}of t){if(a=await xst(n,e,r,{background:u==="&"}),r.exitCode!==null)return r.exitCode;r.variables["?"]=String(a)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=o,a}function Bce(t){switch(t.type){case"variable":return t.name==="@"||t.name==="#"||t.name==="*"||Number.isFinite(parseInt(t.name,10))||"defaultValue"in t&&!!t.defaultValue&&t.defaultValue.some(e=>y1(e))||"alternativeValue"in t&&!!t.alternativeValue&&t.alternativeValue.some(e=>y1(e));case"arithmetic":return pU(t.arithmetic);case"shell":return hU(t.shell);default:return!1}}function y1(t){switch(t.type){case"redirection":return t.args.some(e=>y1(e));case"argument":return t.segments.some(e=>Bce(e));default:throw new Error(`Assertion failed: Unsupported argument type: "${t.type}"`)}}function pU(t){switch(t.type){case"variable":return Bce(t);case"number":return!1;default:return pU(t.left)||pU(t.right)}}function hU(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(;r;){let o;switch(r.type){case"subshell":o=hU(r.subshell);break;case"command":o=r.envs.some(a=>a.args.some(n=>y1(n)))||r.args.some(a=>y1(a));break}if(o)return!0;if(!r.then)break;r=r.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function PE(t,e=[],{baseFs:r=new xn,builtins:o={},cwd:a=Ae.toPortablePath(process.cwd()),env:n=process.env,stdin:u=process.stdin,stdout:A=process.stdout,stderr:p=process.stderr,variables:h={},glob:C=Cx}={}){let w={};for(let[E,R]of Object.entries(n))typeof R<"u"&&(w[E]=R);let v=new Map(wst);for(let[E,R]of Object.entries(o))v.set(E,R);u===null&&(u=new al.PassThrough,u.end());let b=yD(t,C);if(!hU(b)&&b.length>0&&e.length>0){let{command:E}=b[b.length-1];for(;E.then;)E=E.then.line;let R=E.chain;for(;R.then;)R=R.then.chain;R.type==="command"&&(R.args=R.args.concat(e.map(L=>({type:"argument",segments:[{type:"text",text:L}]}))))}return await vx(b,{args:e,baseFs:r,builtins:v,initialStdin:u,initialStdout:A,initialStderr:p,glob:C},{cwd:a,environment:w,exitCode:null,procedures:{},stdin:u,stdout:A,stderr:p,variables:Object.assign({},h,{["?"]:0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var Ece,Cce,al,Ice,Ist,wst,vst,g1=dt(()=>{bt();Ol();Ece=tt(gN()),Cce=Ie("os"),al=Ie("stream"),Ice=Ie("util");nce();ice();lce();fU();fU();Ist=(0,Ice.promisify)(setTimeout);wst=new Map([["cd",async([t=(0,Cce.homedir)(),...e],r,o)=>{let a=V.resolve(o.cwd,Ae.toPortablePath(t));if(!(await r.baseFs.statPromise(a).catch(u=>{throw u.code==="ENOENT"?new ol(`cd: no such file or directory: ${t}`):u})).isDirectory())throw new ol(`cd: not a directory: ${t}`);return o.cwd=a,0}],["pwd",async(t,e,r)=>(r.stdout.write(`${Ae.fromPortablePath(r.cwd)} | 162 | `),1}};for(n(await u(t));t.then;){if(r.exitCode!==null)return r.exitCode;switch(t.then.type){case"&&":a===0&&n(await u(t.then.line));break;case"||":a!==0&&n(await u(t.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: "${t.then.type}"`)}t=t.then.line}return a}async function Rx(t,e,r){let o=r.backgroundJobs;r.backgroundJobs=[];let a=0;for(let{command:n,type:u}of t){if(a=await jst(n,e,r,{background:u==="&"}),r.exitCode!==null)return r.exitCode;r.variables["?"]=String(a)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=o,a}function kce(t){switch(t.type){case"variable":return t.name==="@"||t.name==="#"||t.name==="*"||Number.isFinite(parseInt(t.name,10))||"defaultValue"in t&&!!t.defaultValue&&t.defaultValue.some(e=>v1(e))||"alternativeValue"in t&&!!t.alternativeValue&&t.alternativeValue.some(e=>v1(e));case"arithmetic":return dU(t.arithmetic);case"shell":return mU(t.shell);default:return!1}}function v1(t){switch(t.type){case"redirection":return t.args.some(e=>v1(e));case"argument":return t.segments.some(e=>kce(e));default:throw new Error(`Assertion failed: Unsupported argument type: "${t.type}"`)}}function dU(t){switch(t.type){case"variable":return kce(t);case"number":return!1;default:return dU(t.left)||dU(t.right)}}function mU(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(;r;){let o;switch(r.type){case"subshell":o=mU(r.subshell);break;case"command":o=r.envs.some(a=>a.args.some(n=>v1(n)))||r.args.some(a=>v1(a));break}if(o)return!0;if(!r.then)break;r=r.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function FE(t,e=[],{baseFs:r=new xn,builtins:o={},cwd:a=ue.toPortablePath(process.cwd()),env:n=process.env,stdin:u=process.stdin,stdout:A=process.stdout,stderr:p=process.stderr,variables:h={},glob:C=bx}={}){let w={};for(let[E,R]of Object.entries(n))typeof R<"u"&&(w[E]=R);let v=new Map(Ost);for(let[E,R]of Object.entries(o))v.set(E,R);u===null&&(u=new Al.PassThrough,u.end());let b=PD(t,C);if(!mU(b)&&b.length>0&&e.length>0){let{command:E}=b[b.length-1];for(;E.then;)E=E.then.line;let R=E.chain;for(;R.then;)R=R.then.chain;R.type==="command"&&(R.args=R.args.concat(e.map(L=>({type:"argument",segments:[{type:"text",text:L}]}))))}return await Rx(b,{args:e,baseFs:r,builtins:v,initialStdin:u,initialStdout:A,initialStderr:p,glob:C},{cwd:a,environment:w,exitCode:null,procedures:{},stdin:u,stdout:A,stderr:p,variables:Object.assign({},h,{["?"]:0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var Pce,xce,Al,bce,Lst,Ost,Ust,I1=dt(()=>{St();Hl();Pce=tt(yN()),xce=Ie("os"),Al=Ie("stream"),bce=Ie("util");Ace();fce();dce();gU();gU();Lst=(0,bce.promisify)(setTimeout);Ost=new Map([["cd",async([t=(0,xce.homedir)(),...e],r,o)=>{let a=J.resolve(o.cwd,ue.toPortablePath(t));if(!(await r.baseFs.statPromise(a).catch(u=>{throw u.code==="ENOENT"?new ul(`cd: no such file or directory: ${t}`):u})).isDirectory())throw new ul(`cd: not a directory: ${t}`);return o.cwd=a,0}],["pwd",async(t,e,r)=>(r.stdout.write(`${ue.fromPortablePath(r.cwd)} |
163 | `),0)],[":",async(t,e,r)=>0],["true",async(t,e,r)=>0],["false",async(t,e,r)=>1],["exit",async([t,...e],r,o)=>o.exitCode=parseInt(t??o.variables["?"],10)],["echo",async(t,e,r)=>(r.stdout.write(`${t.join(" ")} | 163 | `),0)],[":",async(t,e,r)=>0],["true",async(t,e,r)=>0],["false",async(t,e,r)=>1],["exit",async([t,...e],r,o)=>o.exitCode=parseInt(t??o.variables["?"],10)],["echo",async(t,e,r)=>(r.stdout.write(`${t.join(" ")} |
164 | `),0)],["sleep",async([t],e,r)=>{if(typeof t>"u")throw new ol("sleep: missing operand");let o=Number(t);if(Number.isNaN(o))throw new ol(`sleep: invalid time interval '${t}'`);return await Ist(1e3*o,0)}],["__ysh_run_procedure",async(t,e,r)=>{let o=r.procedures[t[0]];return await Ix(o,{stdin:new Zl(r.stdin),stdout:new Zl(r.stdout),stderr:new Zl(r.stderr)}).run()}],["__ysh_set_redirects",async(t,e,r)=>{let o=r.stdin,a=r.stdout,n=r.stderr,u=[],A=[],p=[],h=0;for(;t[h]!=="--";){let w=t[h++],{type:v,fd:b}=JSON.parse(w),E=J=>{switch(b){case null:case 0:u.push(J);break;default:throw new Error(`Unsupported file descriptor: "${b}"`)}},R=J=>{switch(b){case null:case 1:A.push(J);break;case 2:p.push(J);break;default:throw new Error(`Unsupported file descriptor: "${b}"`)}},L=Number(t[h++]),_=h+L;for(let J=h;J<_;++h,++J)switch(v){case"<":E(()=>e.baseFs.createReadStream(V.resolve(r.cwd,Ae.toPortablePath(t[J]))));break;case"<<<":E(()=>{let re=new al.PassThrough;return process.nextTick(()=>{re.write(`${t[J]} | 164 | `),0)],["sleep",async([t],e,r)=>{if(typeof t>"u")throw new ul("sleep: missing operand");let o=Number(t);if(Number.isNaN(o))throw new ul(`sleep: invalid time interval '${t}'`);return await Lst(1e3*o,0)}],["__ysh_run_procedure",async(t,e,r)=>{let o=r.procedures[t[0]];return await Qx(o,{stdin:new rc(r.stdin),stdout:new rc(r.stdout),stderr:new rc(r.stderr)}).run()}],["__ysh_set_redirects",async(t,e,r)=>{let o=r.stdin,a=r.stdout,n=r.stderr,u=[],A=[],p=[],h=0;for(;t[h]!=="--";){let w=t[h++],{type:v,fd:b}=JSON.parse(w),E=V=>{switch(b){case null:case 0:u.push(V);break;default:throw new Error(`Unsupported file descriptor: "${b}"`)}},R=V=>{switch(b){case null:case 1:A.push(V);break;case 2:p.push(V);break;default:throw new Error(`Unsupported file descriptor: "${b}"`)}},L=Number(t[h++]),_=h+L;for(let V=h;V<_;++h,++V)switch(v){case"<":E(()=>e.baseFs.createReadStream(J.resolve(r.cwd,ue.toPortablePath(t[V]))));break;case"<<<":E(()=>{let re=new Al.PassThrough;return process.nextTick(()=>{re.write(`${t[V]} |
165 | `),re.end()}),re});break;case"<&":E(()=>gce(Number(t[J]),1,r));break;case">":case">>":{let re=V.resolve(r.cwd,Ae.toPortablePath(t[J]));R(re==="/dev/null"?new al.Writable({autoDestroy:!0,emitClose:!0,write(oe,pe,he){setImmediate(he)}}):e.baseFs.createWriteStream(re,v===">>"?{flags:"a"}:void 0))}break;case">&":R(gce(Number(t[J]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${v}"`)}}if(u.length>0){let w=new al.PassThrough;o=w;let v=b=>{if(b===u.length)w.end();else{let E=u[b]();E.pipe(w,{end:!1}),E.on("end",()=>{v(b+1)})}};v(0)}if(A.length>0){let w=new al.PassThrough;a=w;for(let v of A)w.pipe(v)}if(p.length>0){let w=new al.PassThrough;n=w;for(let v of p)w.pipe(v)}let C=await Ix(m1(t.slice(h+1),e,r),{stdin:new Zl(o),stdout:new Zl(a),stderr:new Zl(n)}).run();return await Promise.all(A.map(w=>new Promise((v,b)=>{w.on("error",E=>{b(E)}),w.on("close",()=>{v()}),w.end()}))),await Promise.all(p.map(w=>new Promise((v,b)=>{w.on("error",E=>{b(E)}),w.on("close",()=>{v()}),w.end()}))),C}]]);vst={addition:(t,e)=>t+e,subtraction:(t,e)=>t-e,multiplication:(t,e)=>t*e,division:(t,e)=>Math.trunc(t/e)}});var Dx=U((VOt,vce)=>{function bst(t,e){for(var r=-1,o=t==null?0:t.length,a=Array(o);++r<o;)a[r]=e(t[r],r,t);return a}vce.exports=bst});var Qce=U((zOt,bce)=>{var Dce=cd(),Qst=Dx(),kst=jl(),Fst=oE(),Rst=1/0,Sce=Dce?Dce.prototype:void 0,Pce=Sce?Sce.toString:void 0;function xce(t){if(typeof t=="string")return t;if(kst(t))return Qst(t,xce)+"";if(Fst(t))return Pce?Pce.call(t):"";var e=t+"";return e=="0"&&1/t==-Rst?"-0":e}bce.exports=xce});var C1=U((XOt,kce)=>{var Tst=Qce();function Nst(t){return t==null?"":Tst(t)}kce.exports=Nst});var gU=U((ZOt,Fce)=>{function Lst(t,e,r){var o=-1,a=t.length;e<0&&(e=-e>a?0:a+e),r=r>a?a:r,r<0&&(r+=a),a=e>r?0:r-e>>>0,e>>>=0;for(var n=Array(a);++o<a;)n[o]=t[o+e];return n}Fce.exports=Lst});var Tce=U(($Ot,Rce)=>{var Ost=gU();function Mst(t,e,r){var o=t.length;return r=r===void 0?o:r,!e&&r>=o?t:Ost(t,e,r)}Rce.exports=Mst});var dU=U((eMt,Nce)=>{var Ust="\\ud800-\\udfff",_st="\\u0300-\\u036f",Hst="\\ufe20-\\ufe2f",qst="\\u20d0-\\u20ff",jst=_st+Hst+qst,Gst="\\ufe0e\\ufe0f",Wst="\\u200d",Yst=RegExp("["+Wst+Ust+jst+Gst+"]");function Kst(t){return Yst.test(t)}Nce.exports=Kst});var Oce=U((tMt,Lce)=>{function Jst(t){return t.split("")}Lce.exports=Jst});var Wce=U((rMt,Gce)=>{var Mce="\\ud800-\\udfff",Vst="\\u0300-\\u036f",zst="\\ufe20-\\ufe2f",Xst="\\u20d0-\\u20ff",Zst=Vst+zst+Xst,$st="\\ufe0e\\ufe0f",eot="["+Mce+"]",mU="["+Zst+"]",yU="\\ud83c[\\udffb-\\udfff]",tot="(?:"+mU+"|"+yU+")",Uce="[^"+Mce+"]",_ce="(?:\\ud83c[\\udde6-\\uddff]){2}",Hce="[\\ud800-\\udbff][\\udc00-\\udfff]",rot="\\u200d",qce=tot+"?",jce="["+$st+"]?",not="(?:"+rot+"(?:"+[Uce,_ce,Hce].join("|")+")"+jce+qce+")*",iot=jce+qce+not,sot="(?:"+[Uce+mU+"?",mU,_ce,Hce,eot].join("|")+")",oot=RegExp(yU+"(?="+yU+")|"+sot+iot,"g");function aot(t){return t.match(oot)||[]}Gce.exports=aot});var Kce=U((nMt,Yce)=>{var lot=Oce(),cot=dU(),uot=Wce();function Aot(t){return cot(t)?uot(t):lot(t)}Yce.exports=Aot});var Vce=U((iMt,Jce)=>{var fot=Tce(),pot=dU(),hot=Kce(),got=C1();function dot(t){return function(e){e=got(e);var r=pot(e)?hot(e):void 0,o=r?r[0]:e.charAt(0),a=r?fot(r,1).join(""):e.slice(1);return o[t]()+a}}Jce.exports=dot});var Xce=U((sMt,zce)=>{var mot=Vce(),yot=mot("toUpperCase");zce.exports=yot});var EU=U((oMt,Zce)=>{var Eot=C1(),Cot=Xce();function Iot(t){return Cot(Eot(t).toLowerCase())}Zce.exports=Iot});var $ce=U((aMt,Sx)=>{function wot(){var t=0,e=1,r=2,o=3,a=4,n=5,u=6,A=7,p=8,h=9,C=10,w=11,v=12,b=13,E=14,R=15,L=16,_=17,J=0,re=1,oe=2,pe=3,he=4;function ve(g,De){return 55296<=g.charCodeAt(De)&&g.charCodeAt(De)<=56319&&56320<=g.charCodeAt(De+1)&&g.charCodeAt(De+1)<=57343}function ge(g,De){De===void 0&&(De=0);var Ee=g.charCodeAt(De);if(55296<=Ee&&Ee<=56319&&De<g.length-1){var de=Ee,ne=g.charCodeAt(De+1);return 56320<=ne&&ne<=57343?(de-55296)*1024+(ne-56320)+65536:de}if(56320<=Ee&&Ee<=57343&&De>=1){var de=g.charCodeAt(De-1),ne=Ee;return 55296<=de&&de<=56319?(de-55296)*1024+(ne-56320)+65536:ne}return Ee}function le(g,De,Ee){var de=[g].concat(De).concat([Ee]),ne=de[de.length-2],Z=Ee,me=de.lastIndexOf(E);if(me>1&&de.slice(1,me).every(function(H){return H==o})&&[o,b,_].indexOf(g)==-1)return oe;var be=de.lastIndexOf(a);if(be>0&&de.slice(1,be).every(function(H){return H==a})&&[v,a].indexOf(ne)==-1)return de.filter(function(H){return H==a}).length%2==1?pe:he;if(ne==t&&Z==e)return J;if(ne==r||ne==t||ne==e)return Z==E&&De.every(function(H){return H==o})?oe:re;if(Z==r||Z==t||Z==e)return re;if(ne==u&&(Z==u||Z==A||Z==h||Z==C))return J;if((ne==h||ne==A)&&(Z==A||Z==p))return J;if((ne==C||ne==p)&&Z==p)return J;if(Z==o||Z==R)return J;if(Z==n)return J;if(ne==v)return J;var ut=de.indexOf(o)!=-1?de.lastIndexOf(o)-1:de.length-2;return[b,_].indexOf(de[ut])!=-1&&de.slice(ut+1,-1).every(function(H){return H==o})&&Z==E||ne==R&&[L,_].indexOf(Z)!=-1?J:De.indexOf(a)!=-1?oe:ne==a&&Z==a?J:re}this.nextBreak=function(g,De){if(De===void 0&&(De=0),De<0)return 0;if(De>=g.length-1)return g.length;for(var Ee=Pe(ge(g,De)),de=[],ne=De+1;ne<g.length;ne++)if(!ve(g,ne-1)){var Z=Pe(ge(g,ne));if(le(Ee,de,Z))return ne;de.push(Z)}return g.length},this.splitGraphemes=function(g){for(var De=[],Ee=0,de;(de=this.nextBreak(g,Ee))<g.length;)De.push(g.slice(Ee,de)),Ee=de;return Ee<g.length&&De.push(g.slice(Ee)),De},this.iterateGraphemes=function(g){var De=0,Ee={next:function(){var de,ne;return(ne=this.nextBreak(g,De))<g.length?(de=g.slice(De,ne),De=ne,{value:de,done:!1}):De<g.length?(de=g.slice(De),De=g.length,{value:de,done:!1}):{value:void 0,done:!0}}.bind(this)};return typeof Symbol<"u"&&Symbol.iterator&&(Ee[Symbol.iterator]=function(){return Ee}),Ee},this.countGraphemes=function(g){for(var De=0,Ee=0,de;(de=this.nextBreak(g,Ee))<g.length;)Ee=de,De++;return Ee<g.length&&De++,De};function Pe(g){return 1536<=g&&g<=1541||g==1757||g==1807||g==2274||g==3406||g==69821||70082<=g&&g<=70083||g==72250||72326<=g&&g<=72329||g==73030?v:g==13?t:g==10?e:0<=g&&g<=9||11<=g&&g<=12||14<=g&&g<=31||127<=g&&g<=159||g==173||g==1564||g==6158||g==8203||8206<=g&&g<=8207||g==8232||g==8233||8234<=g&&g<=8238||8288<=g&&g<=8292||g==8293||8294<=g&&g<=8303||55296<=g&&g<=57343||g==65279||65520<=g&&g<=65528||65529<=g&&g<=65531||113824<=g&&g<=113827||119155<=g&&g<=119162||g==917504||g==917505||917506<=g&&g<=917535||917632<=g&&g<=917759||918e3<=g&&g<=921599?r:768<=g&&g<=879||1155<=g&&g<=1159||1160<=g&&g<=1161||1425<=g&&g<=1469||g==1471||1473<=g&&g<=1474||1476<=g&&g<=1477||g==1479||1552<=g&&g<=1562||1611<=g&&g<=1631||g==1648||1750<=g&&g<=1756||1759<=g&&g<=1764||1767<=g&&g<=1768||1770<=g&&g<=1773||g==1809||1840<=g&&g<=1866||1958<=g&&g<=1968||2027<=g&&g<=2035||2070<=g&&g<=2073||2075<=g&&g<=2083||2085<=g&&g<=2087||2089<=g&&g<=2093||2137<=g&&g<=2139||2260<=g&&g<=2273||2275<=g&&g<=2306||g==2362||g==2364||2369<=g&&g<=2376||g==2381||2385<=g&&g<=2391||2402<=g&&g<=2403||g==2433||g==2492||g==2494||2497<=g&&g<=2500||g==2509||g==2519||2530<=g&&g<=2531||2561<=g&&g<=2562||g==2620||2625<=g&&g<=2626||2631<=g&&g<=2632||2635<=g&&g<=2637||g==2641||2672<=g&&g<=2673||g==2677||2689<=g&&g<=2690||g==2748||2753<=g&&g<=2757||2759<=g&&g<=2760||g==2765||2786<=g&&g<=2787||2810<=g&&g<=2815||g==2817||g==2876||g==2878||g==2879||2881<=g&&g<=2884||g==2893||g==2902||g==2903||2914<=g&&g<=2915||g==2946||g==3006||g==3008||g==3021||g==3031||g==3072||3134<=g&&g<=3136||3142<=g&&g<=3144||3146<=g&&g<=3149||3157<=g&&g<=3158||3170<=g&&g<=3171||g==3201||g==3260||g==3263||g==3266||g==3270||3276<=g&&g<=3277||3285<=g&&g<=3286||3298<=g&&g<=3299||3328<=g&&g<=3329||3387<=g&&g<=3388||g==3390||3393<=g&&g<=3396||g==3405||g==3415||3426<=g&&g<=3427||g==3530||g==3535||3538<=g&&g<=3540||g==3542||g==3551||g==3633||3636<=g&&g<=3642||3655<=g&&g<=3662||g==3761||3764<=g&&g<=3769||3771<=g&&g<=3772||3784<=g&&g<=3789||3864<=g&&g<=3865||g==3893||g==3895||g==3897||3953<=g&&g<=3966||3968<=g&&g<=3972||3974<=g&&g<=3975||3981<=g&&g<=3991||3993<=g&&g<=4028||g==4038||4141<=g&&g<=4144||4146<=g&&g<=4151||4153<=g&&g<=4154||4157<=g&&g<=4158||4184<=g&&g<=4185||4190<=g&&g<=4192||4209<=g&&g<=4212||g==4226||4229<=g&&g<=4230||g==4237||g==4253||4957<=g&&g<=4959||5906<=g&&g<=5908||5938<=g&&g<=5940||5970<=g&&g<=5971||6002<=g&&g<=6003||6068<=g&&g<=6069||6071<=g&&g<=6077||g==6086||6089<=g&&g<=6099||g==6109||6155<=g&&g<=6157||6277<=g&&g<=6278||g==6313||6432<=g&&g<=6434||6439<=g&&g<=6440||g==6450||6457<=g&&g<=6459||6679<=g&&g<=6680||g==6683||g==6742||6744<=g&&g<=6750||g==6752||g==6754||6757<=g&&g<=6764||6771<=g&&g<=6780||g==6783||6832<=g&&g<=6845||g==6846||6912<=g&&g<=6915||g==6964||6966<=g&&g<=6970||g==6972||g==6978||7019<=g&&g<=7027||7040<=g&&g<=7041||7074<=g&&g<=7077||7080<=g&&g<=7081||7083<=g&&g<=7085||g==7142||7144<=g&&g<=7145||g==7149||7151<=g&&g<=7153||7212<=g&&g<=7219||7222<=g&&g<=7223||7376<=g&&g<=7378||7380<=g&&g<=7392||7394<=g&&g<=7400||g==7405||g==7412||7416<=g&&g<=7417||7616<=g&&g<=7673||7675<=g&&g<=7679||g==8204||8400<=g&&g<=8412||8413<=g&&g<=8416||g==8417||8418<=g&&g<=8420||8421<=g&&g<=8432||11503<=g&&g<=11505||g==11647||11744<=g&&g<=11775||12330<=g&&g<=12333||12334<=g&&g<=12335||12441<=g&&g<=12442||g==42607||42608<=g&&g<=42610||42612<=g&&g<=42621||42654<=g&&g<=42655||42736<=g&&g<=42737||g==43010||g==43014||g==43019||43045<=g&&g<=43046||43204<=g&&g<=43205||43232<=g&&g<=43249||43302<=g&&g<=43309||43335<=g&&g<=43345||43392<=g&&g<=43394||g==43443||43446<=g&&g<=43449||g==43452||g==43493||43561<=g&&g<=43566||43569<=g&&g<=43570||43573<=g&&g<=43574||g==43587||g==43596||g==43644||g==43696||43698<=g&&g<=43700||43703<=g&&g<=43704||43710<=g&&g<=43711||g==43713||43756<=g&&g<=43757||g==43766||g==44005||g==44008||g==44013||g==64286||65024<=g&&g<=65039||65056<=g&&g<=65071||65438<=g&&g<=65439||g==66045||g==66272||66422<=g&&g<=66426||68097<=g&&g<=68099||68101<=g&&g<=68102||68108<=g&&g<=68111||68152<=g&&g<=68154||g==68159||68325<=g&&g<=68326||g==69633||69688<=g&&g<=69702||69759<=g&&g<=69761||69811<=g&&g<=69814||69817<=g&&g<=69818||69888<=g&&g<=69890||69927<=g&&g<=69931||69933<=g&&g<=69940||g==70003||70016<=g&&g<=70017||70070<=g&&g<=70078||70090<=g&&g<=70092||70191<=g&&g<=70193||g==70196||70198<=g&&g<=70199||g==70206||g==70367||70371<=g&&g<=70378||70400<=g&&g<=70401||g==70460||g==70462||g==70464||g==70487||70502<=g&&g<=70508||70512<=g&&g<=70516||70712<=g&&g<=70719||70722<=g&&g<=70724||g==70726||g==70832||70835<=g&&g<=70840||g==70842||g==70845||70847<=g&&g<=70848||70850<=g&&g<=70851||g==71087||71090<=g&&g<=71093||71100<=g&&g<=71101||71103<=g&&g<=71104||71132<=g&&g<=71133||71219<=g&&g<=71226||g==71229||71231<=g&&g<=71232||g==71339||g==71341||71344<=g&&g<=71349||g==71351||71453<=g&&g<=71455||71458<=g&&g<=71461||71463<=g&&g<=71467||72193<=g&&g<=72198||72201<=g&&g<=72202||72243<=g&&g<=72248||72251<=g&&g<=72254||g==72263||72273<=g&&g<=72278||72281<=g&&g<=72283||72330<=g&&g<=72342||72344<=g&&g<=72345||72752<=g&&g<=72758||72760<=g&&g<=72765||g==72767||72850<=g&&g<=72871||72874<=g&&g<=72880||72882<=g&&g<=72883||72885<=g&&g<=72886||73009<=g&&g<=73014||g==73018||73020<=g&&g<=73021||73023<=g&&g<=73029||g==73031||92912<=g&&g<=92916||92976<=g&&g<=92982||94095<=g&&g<=94098||113821<=g&&g<=113822||g==119141||119143<=g&&g<=119145||119150<=g&&g<=119154||119163<=g&&g<=119170||119173<=g&&g<=119179||119210<=g&&g<=119213||119362<=g&&g<=119364||121344<=g&&g<=121398||121403<=g&&g<=121452||g==121461||g==121476||121499<=g&&g<=121503||121505<=g&&g<=121519||122880<=g&&g<=122886||122888<=g&&g<=122904||122907<=g&&g<=122913||122915<=g&&g<=122916||122918<=g&&g<=122922||125136<=g&&g<=125142||125252<=g&&g<=125258||917536<=g&&g<=917631||917760<=g&&g<=917999?o:127462<=g&&g<=127487?a:g==2307||g==2363||2366<=g&&g<=2368||2377<=g&&g<=2380||2382<=g&&g<=2383||2434<=g&&g<=2435||2495<=g&&g<=2496||2503<=g&&g<=2504||2507<=g&&g<=2508||g==2563||2622<=g&&g<=2624||g==2691||2750<=g&&g<=2752||g==2761||2763<=g&&g<=2764||2818<=g&&g<=2819||g==2880||2887<=g&&g<=2888||2891<=g&&g<=2892||g==3007||3009<=g&&g<=3010||3014<=g&&g<=3016||3018<=g&&g<=3020||3073<=g&&g<=3075||3137<=g&&g<=3140||3202<=g&&g<=3203||g==3262||3264<=g&&g<=3265||3267<=g&&g<=3268||3271<=g&&g<=3272||3274<=g&&g<=3275||3330<=g&&g<=3331||3391<=g&&g<=3392||3398<=g&&g<=3400||3402<=g&&g<=3404||3458<=g&&g<=3459||3536<=g&&g<=3537||3544<=g&&g<=3550||3570<=g&&g<=3571||g==3635||g==3763||3902<=g&&g<=3903||g==3967||g==4145||4155<=g&&g<=4156||4182<=g&&g<=4183||g==4228||g==6070||6078<=g&&g<=6085||6087<=g&&g<=6088||6435<=g&&g<=6438||6441<=g&&g<=6443||6448<=g&&g<=6449||6451<=g&&g<=6456||6681<=g&&g<=6682||g==6741||g==6743||6765<=g&&g<=6770||g==6916||g==6965||g==6971||6973<=g&&g<=6977||6979<=g&&g<=6980||g==7042||g==7073||7078<=g&&g<=7079||g==7082||g==7143||7146<=g&&g<=7148||g==7150||7154<=g&&g<=7155||7204<=g&&g<=7211||7220<=g&&g<=7221||g==7393||7410<=g&&g<=7411||g==7415||43043<=g&&g<=43044||g==43047||43136<=g&&g<=43137||43188<=g&&g<=43203||43346<=g&&g<=43347||g==43395||43444<=g&&g<=43445||43450<=g&&g<=43451||43453<=g&&g<=43456||43567<=g&&g<=43568||43571<=g&&g<=43572||g==43597||g==43755||43758<=g&&g<=43759||g==43765||44003<=g&&g<=44004||44006<=g&&g<=44007||44009<=g&&g<=44010||g==44012||g==69632||g==69634||g==69762||69808<=g&&g<=69810||69815<=g&&g<=69816||g==69932||g==70018||70067<=g&&g<=70069||70079<=g&&g<=70080||70188<=g&&g<=70190||70194<=g&&g<=70195||g==70197||70368<=g&&g<=70370||70402<=g&&g<=70403||g==70463||70465<=g&&g<=70468||70471<=g&&g<=70472||70475<=g&&g<=70477||70498<=g&&g<=70499||70709<=g&&g<=70711||70720<=g&&g<=70721||g==70725||70833<=g&&g<=70834||g==70841||70843<=g&&g<=70844||g==70846||g==70849||71088<=g&&g<=71089||71096<=g&&g<=71099||g==71102||71216<=g&&g<=71218||71227<=g&&g<=71228||g==71230||g==71340||71342<=g&&g<=71343||g==71350||71456<=g&&g<=71457||g==71462||72199<=g&&g<=72200||g==72249||72279<=g&&g<=72280||g==72343||g==72751||g==72766||g==72873||g==72881||g==72884||94033<=g&&g<=94078||g==119142||g==119149?n:4352<=g&&g<=4447||43360<=g&&g<=43388?u:4448<=g&&g<=4519||55216<=g&&g<=55238?A:4520<=g&&g<=4607||55243<=g&&g<=55291?p:g==44032||g==44060||g==44088||g==44116||g==44144||g==44172||g==44200||g==44228||g==44256||g==44284||g==44312||g==44340||g==44368||g==44396||g==44424||g==44452||g==44480||g==44508||g==44536||g==44564||g==44592||g==44620||g==44648||g==44676||g==44704||g==44732||g==44760||g==44788||g==44816||g==44844||g==44872||g==44900||g==44928||g==44956||g==44984||g==45012||g==45040||g==45068||g==45096||g==45124||g==45152||g==45180||g==45208||g==45236||g==45264||g==45292||g==45320||g==45348||g==45376||g==45404||g==45432||g==45460||g==45488||g==45516||g==45544||g==45572||g==45600||g==45628||g==45656||g==45684||g==45712||g==45740||g==45768||g==45796||g==45824||g==45852||g==45880||g==45908||g==45936||g==45964||g==45992||g==46020||g==46048||g==46076||g==46104||g==46132||g==46160||g==46188||g==46216||g==46244||g==46272||g==46300||g==46328||g==46356||g==46384||g==46412||g==46440||g==46468||g==46496||g==46524||g==46552||g==46580||g==46608||g==46636||g==46664||g==46692||g==46720||g==46748||g==46776||g==46804||g==46832||g==46860||g==46888||g==46916||g==46944||g==46972||g==47e3||g==47028||g==47056||g==47084||g==47112||g==47140||g==47168||g==47196||g==47224||g==47252||g==47280||g==47308||g==47336||g==47364||g==47392||g==47420||g==47448||g==47476||g==47504||g==47532||g==47560||g==47588||g==47616||g==47644||g==47672||g==47700||g==47728||g==47756||g==47784||g==47812||g==47840||g==47868||g==47896||g==47924||g==47952||g==47980||g==48008||g==48036||g==48064||g==48092||g==48120||g==48148||g==48176||g==48204||g==48232||g==48260||g==48288||g==48316||g==48344||g==48372||g==48400||g==48428||g==48456||g==48484||g==48512||g==48540||g==48568||g==48596||g==48624||g==48652||g==48680||g==48708||g==48736||g==48764||g==48792||g==48820||g==48848||g==48876||g==48904||g==48932||g==48960||g==48988||g==49016||g==49044||g==49072||g==49100||g==49128||g==49156||g==49184||g==49212||g==49240||g==49268||g==49296||g==49324||g==49352||g==49380||g==49408||g==49436||g==49464||g==49492||g==49520||g==49548||g==49576||g==49604||g==49632||g==49660||g==49688||g==49716||g==49744||g==49772||g==49800||g==49828||g==49856||g==49884||g==49912||g==49940||g==49968||g==49996||g==50024||g==50052||g==50080||g==50108||g==50136||g==50164||g==50192||g==50220||g==50248||g==50276||g==50304||g==50332||g==50360||g==50388||g==50416||g==50444||g==50472||g==50500||g==50528||g==50556||g==50584||g==50612||g==50640||g==50668||g==50696||g==50724||g==50752||g==50780||g==50808||g==50836||g==50864||g==50892||g==50920||g==50948||g==50976||g==51004||g==51032||g==51060||g==51088||g==51116||g==51144||g==51172||g==51200||g==51228||g==51256||g==51284||g==51312||g==51340||g==51368||g==51396||g==51424||g==51452||g==51480||g==51508||g==51536||g==51564||g==51592||g==51620||g==51648||g==51676||g==51704||g==51732||g==51760||g==51788||g==51816||g==51844||g==51872||g==51900||g==51928||g==51956||g==51984||g==52012||g==52040||g==52068||g==52096||g==52124||g==52152||g==52180||g==52208||g==52236||g==52264||g==52292||g==52320||g==52348||g==52376||g==52404||g==52432||g==52460||g==52488||g==52516||g==52544||g==52572||g==52600||g==52628||g==52656||g==52684||g==52712||g==52740||g==52768||g==52796||g==52824||g==52852||g==52880||g==52908||g==52936||g==52964||g==52992||g==53020||g==53048||g==53076||g==53104||g==53132||g==53160||g==53188||g==53216||g==53244||g==53272||g==53300||g==53328||g==53356||g==53384||g==53412||g==53440||g==53468||g==53496||g==53524||g==53552||g==53580||g==53608||g==53636||g==53664||g==53692||g==53720||g==53748||g==53776||g==53804||g==53832||g==53860||g==53888||g==53916||g==53944||g==53972||g==54e3||g==54028||g==54056||g==54084||g==54112||g==54140||g==54168||g==54196||g==54224||g==54252||g==54280||g==54308||g==54336||g==54364||g==54392||g==54420||g==54448||g==54476||g==54504||g==54532||g==54560||g==54588||g==54616||g==54644||g==54672||g==54700||g==54728||g==54756||g==54784||g==54812||g==54840||g==54868||g==54896||g==54924||g==54952||g==54980||g==55008||g==55036||g==55064||g==55092||g==55120||g==55148||g==55176?h:44033<=g&&g<=44059||44061<=g&&g<=44087||44089<=g&&g<=44115||44117<=g&&g<=44143||44145<=g&&g<=44171||44173<=g&&g<=44199||44201<=g&&g<=44227||44229<=g&&g<=44255||44257<=g&&g<=44283||44285<=g&&g<=44311||44313<=g&&g<=44339||44341<=g&&g<=44367||44369<=g&&g<=44395||44397<=g&&g<=44423||44425<=g&&g<=44451||44453<=g&&g<=44479||44481<=g&&g<=44507||44509<=g&&g<=44535||44537<=g&&g<=44563||44565<=g&&g<=44591||44593<=g&&g<=44619||44621<=g&&g<=44647||44649<=g&&g<=44675||44677<=g&&g<=44703||44705<=g&&g<=44731||44733<=g&&g<=44759||44761<=g&&g<=44787||44789<=g&&g<=44815||44817<=g&&g<=44843||44845<=g&&g<=44871||44873<=g&&g<=44899||44901<=g&&g<=44927||44929<=g&&g<=44955||44957<=g&&g<=44983||44985<=g&&g<=45011||45013<=g&&g<=45039||45041<=g&&g<=45067||45069<=g&&g<=45095||45097<=g&&g<=45123||45125<=g&&g<=45151||45153<=g&&g<=45179||45181<=g&&g<=45207||45209<=g&&g<=45235||45237<=g&&g<=45263||45265<=g&&g<=45291||45293<=g&&g<=45319||45321<=g&&g<=45347||45349<=g&&g<=45375||45377<=g&&g<=45403||45405<=g&&g<=45431||45433<=g&&g<=45459||45461<=g&&g<=45487||45489<=g&&g<=45515||45517<=g&&g<=45543||45545<=g&&g<=45571||45573<=g&&g<=45599||45601<=g&&g<=45627||45629<=g&&g<=45655||45657<=g&&g<=45683||45685<=g&&g<=45711||45713<=g&&g<=45739||45741<=g&&g<=45767||45769<=g&&g<=45795||45797<=g&&g<=45823||45825<=g&&g<=45851||45853<=g&&g<=45879||45881<=g&&g<=45907||45909<=g&&g<=45935||45937<=g&&g<=45963||45965<=g&&g<=45991||45993<=g&&g<=46019||46021<=g&&g<=46047||46049<=g&&g<=46075||46077<=g&&g<=46103||46105<=g&&g<=46131||46133<=g&&g<=46159||46161<=g&&g<=46187||46189<=g&&g<=46215||46217<=g&&g<=46243||46245<=g&&g<=46271||46273<=g&&g<=46299||46301<=g&&g<=46327||46329<=g&&g<=46355||46357<=g&&g<=46383||46385<=g&&g<=46411||46413<=g&&g<=46439||46441<=g&&g<=46467||46469<=g&&g<=46495||46497<=g&&g<=46523||46525<=g&&g<=46551||46553<=g&&g<=46579||46581<=g&&g<=46607||46609<=g&&g<=46635||46637<=g&&g<=46663||46665<=g&&g<=46691||46693<=g&&g<=46719||46721<=g&&g<=46747||46749<=g&&g<=46775||46777<=g&&g<=46803||46805<=g&&g<=46831||46833<=g&&g<=46859||46861<=g&&g<=46887||46889<=g&&g<=46915||46917<=g&&g<=46943||46945<=g&&g<=46971||46973<=g&&g<=46999||47001<=g&&g<=47027||47029<=g&&g<=47055||47057<=g&&g<=47083||47085<=g&&g<=47111||47113<=g&&g<=47139||47141<=g&&g<=47167||47169<=g&&g<=47195||47197<=g&&g<=47223||47225<=g&&g<=47251||47253<=g&&g<=47279||47281<=g&&g<=47307||47309<=g&&g<=47335||47337<=g&&g<=47363||47365<=g&&g<=47391||47393<=g&&g<=47419||47421<=g&&g<=47447||47449<=g&&g<=47475||47477<=g&&g<=47503||47505<=g&&g<=47531||47533<=g&&g<=47559||47561<=g&&g<=47587||47589<=g&&g<=47615||47617<=g&&g<=47643||47645<=g&&g<=47671||47673<=g&&g<=47699||47701<=g&&g<=47727||47729<=g&&g<=47755||47757<=g&&g<=47783||47785<=g&&g<=47811||47813<=g&&g<=47839||47841<=g&&g<=47867||47869<=g&&g<=47895||47897<=g&&g<=47923||47925<=g&&g<=47951||47953<=g&&g<=47979||47981<=g&&g<=48007||48009<=g&&g<=48035||48037<=g&&g<=48063||48065<=g&&g<=48091||48093<=g&&g<=48119||48121<=g&&g<=48147||48149<=g&&g<=48175||48177<=g&&g<=48203||48205<=g&&g<=48231||48233<=g&&g<=48259||48261<=g&&g<=48287||48289<=g&&g<=48315||48317<=g&&g<=48343||48345<=g&&g<=48371||48373<=g&&g<=48399||48401<=g&&g<=48427||48429<=g&&g<=48455||48457<=g&&g<=48483||48485<=g&&g<=48511||48513<=g&&g<=48539||48541<=g&&g<=48567||48569<=g&&g<=48595||48597<=g&&g<=48623||48625<=g&&g<=48651||48653<=g&&g<=48679||48681<=g&&g<=48707||48709<=g&&g<=48735||48737<=g&&g<=48763||48765<=g&&g<=48791||48793<=g&&g<=48819||48821<=g&&g<=48847||48849<=g&&g<=48875||48877<=g&&g<=48903||48905<=g&&g<=48931||48933<=g&&g<=48959||48961<=g&&g<=48987||48989<=g&&g<=49015||49017<=g&&g<=49043||49045<=g&&g<=49071||49073<=g&&g<=49099||49101<=g&&g<=49127||49129<=g&&g<=49155||49157<=g&&g<=49183||49185<=g&&g<=49211||49213<=g&&g<=49239||49241<=g&&g<=49267||49269<=g&&g<=49295||49297<=g&&g<=49323||49325<=g&&g<=49351||49353<=g&&g<=49379||49381<=g&&g<=49407||49409<=g&&g<=49435||49437<=g&&g<=49463||49465<=g&&g<=49491||49493<=g&&g<=49519||49521<=g&&g<=49547||49549<=g&&g<=49575||49577<=g&&g<=49603||49605<=g&&g<=49631||49633<=g&&g<=49659||49661<=g&&g<=49687||49689<=g&&g<=49715||49717<=g&&g<=49743||49745<=g&&g<=49771||49773<=g&&g<=49799||49801<=g&&g<=49827||49829<=g&&g<=49855||49857<=g&&g<=49883||49885<=g&&g<=49911||49913<=g&&g<=49939||49941<=g&&g<=49967||49969<=g&&g<=49995||49997<=g&&g<=50023||50025<=g&&g<=50051||50053<=g&&g<=50079||50081<=g&&g<=50107||50109<=g&&g<=50135||50137<=g&&g<=50163||50165<=g&&g<=50191||50193<=g&&g<=50219||50221<=g&&g<=50247||50249<=g&&g<=50275||50277<=g&&g<=50303||50305<=g&&g<=50331||50333<=g&&g<=50359||50361<=g&&g<=50387||50389<=g&&g<=50415||50417<=g&&g<=50443||50445<=g&&g<=50471||50473<=g&&g<=50499||50501<=g&&g<=50527||50529<=g&&g<=50555||50557<=g&&g<=50583||50585<=g&&g<=50611||50613<=g&&g<=50639||50641<=g&&g<=50667||50669<=g&&g<=50695||50697<=g&&g<=50723||50725<=g&&g<=50751||50753<=g&&g<=50779||50781<=g&&g<=50807||50809<=g&&g<=50835||50837<=g&&g<=50863||50865<=g&&g<=50891||50893<=g&&g<=50919||50921<=g&&g<=50947||50949<=g&&g<=50975||50977<=g&&g<=51003||51005<=g&&g<=51031||51033<=g&&g<=51059||51061<=g&&g<=51087||51089<=g&&g<=51115||51117<=g&&g<=51143||51145<=g&&g<=51171||51173<=g&&g<=51199||51201<=g&&g<=51227||51229<=g&&g<=51255||51257<=g&&g<=51283||51285<=g&&g<=51311||51313<=g&&g<=51339||51341<=g&&g<=51367||51369<=g&&g<=51395||51397<=g&&g<=51423||51425<=g&&g<=51451||51453<=g&&g<=51479||51481<=g&&g<=51507||51509<=g&&g<=51535||51537<=g&&g<=51563||51565<=g&&g<=51591||51593<=g&&g<=51619||51621<=g&&g<=51647||51649<=g&&g<=51675||51677<=g&&g<=51703||51705<=g&&g<=51731||51733<=g&&g<=51759||51761<=g&&g<=51787||51789<=g&&g<=51815||51817<=g&&g<=51843||51845<=g&&g<=51871||51873<=g&&g<=51899||51901<=g&&g<=51927||51929<=g&&g<=51955||51957<=g&&g<=51983||51985<=g&&g<=52011||52013<=g&&g<=52039||52041<=g&&g<=52067||52069<=g&&g<=52095||52097<=g&&g<=52123||52125<=g&&g<=52151||52153<=g&&g<=52179||52181<=g&&g<=52207||52209<=g&&g<=52235||52237<=g&&g<=52263||52265<=g&&g<=52291||52293<=g&&g<=52319||52321<=g&&g<=52347||52349<=g&&g<=52375||52377<=g&&g<=52403||52405<=g&&g<=52431||52433<=g&&g<=52459||52461<=g&&g<=52487||52489<=g&&g<=52515||52517<=g&&g<=52543||52545<=g&&g<=52571||52573<=g&&g<=52599||52601<=g&&g<=52627||52629<=g&&g<=52655||52657<=g&&g<=52683||52685<=g&&g<=52711||52713<=g&&g<=52739||52741<=g&&g<=52767||52769<=g&&g<=52795||52797<=g&&g<=52823||52825<=g&&g<=52851||52853<=g&&g<=52879||52881<=g&&g<=52907||52909<=g&&g<=52935||52937<=g&&g<=52963||52965<=g&&g<=52991||52993<=g&&g<=53019||53021<=g&&g<=53047||53049<=g&&g<=53075||53077<=g&&g<=53103||53105<=g&&g<=53131||53133<=g&&g<=53159||53161<=g&&g<=53187||53189<=g&&g<=53215||53217<=g&&g<=53243||53245<=g&&g<=53271||53273<=g&&g<=53299||53301<=g&&g<=53327||53329<=g&&g<=53355||53357<=g&&g<=53383||53385<=g&&g<=53411||53413<=g&&g<=53439||53441<=g&&g<=53467||53469<=g&&g<=53495||53497<=g&&g<=53523||53525<=g&&g<=53551||53553<=g&&g<=53579||53581<=g&&g<=53607||53609<=g&&g<=53635||53637<=g&&g<=53663||53665<=g&&g<=53691||53693<=g&&g<=53719||53721<=g&&g<=53747||53749<=g&&g<=53775||53777<=g&&g<=53803||53805<=g&&g<=53831||53833<=g&&g<=53859||53861<=g&&g<=53887||53889<=g&&g<=53915||53917<=g&&g<=53943||53945<=g&&g<=53971||53973<=g&&g<=53999||54001<=g&&g<=54027||54029<=g&&g<=54055||54057<=g&&g<=54083||54085<=g&&g<=54111||54113<=g&&g<=54139||54141<=g&&g<=54167||54169<=g&&g<=54195||54197<=g&&g<=54223||54225<=g&&g<=54251||54253<=g&&g<=54279||54281<=g&&g<=54307||54309<=g&&g<=54335||54337<=g&&g<=54363||54365<=g&&g<=54391||54393<=g&&g<=54419||54421<=g&&g<=54447||54449<=g&&g<=54475||54477<=g&&g<=54503||54505<=g&&g<=54531||54533<=g&&g<=54559||54561<=g&&g<=54587||54589<=g&&g<=54615||54617<=g&&g<=54643||54645<=g&&g<=54671||54673<=g&&g<=54699||54701<=g&&g<=54727||54729<=g&&g<=54755||54757<=g&&g<=54783||54785<=g&&g<=54811||54813<=g&&g<=54839||54841<=g&&g<=54867||54869<=g&&g<=54895||54897<=g&&g<=54923||54925<=g&&g<=54951||54953<=g&&g<=54979||54981<=g&&g<=55007||55009<=g&&g<=55035||55037<=g&&g<=55063||55065<=g&&g<=55091||55093<=g&&g<=55119||55121<=g&&g<=55147||55149<=g&&g<=55175||55177<=g&&g<=55203?C:g==9757||g==9977||9994<=g&&g<=9997||g==127877||127938<=g&&g<=127940||g==127943||127946<=g&&g<=127948||128066<=g&&g<=128067||128070<=g&&g<=128080||g==128110||128112<=g&&g<=128120||g==128124||128129<=g&&g<=128131||128133<=g&&g<=128135||g==128170||128372<=g&&g<=128373||g==128378||g==128400||128405<=g&&g<=128406||128581<=g&&g<=128583||128587<=g&&g<=128591||g==128675||128692<=g&&g<=128694||g==128704||g==128716||129304<=g&&g<=129308||129310<=g&&g<=129311||g==129318||129328<=g&&g<=129337||129341<=g&&g<=129342||129489<=g&&g<=129501?b:127995<=g&&g<=127999?E:g==8205?R:g==9792||g==9794||9877<=g&&g<=9878||g==9992||g==10084||g==127752||g==127806||g==127859||g==127891||g==127908||g==127912||g==127979||g==127981||g==128139||128187<=g&&g<=128188||g==128295||g==128300||g==128488||g==128640||g==128658?L:128102<=g&&g<=128105?_:w}return this}typeof Sx<"u"&&Sx.exports&&(Sx.exports=wot)});var tue=U((lMt,eue)=>{var Bot=/^(.*?)(\x1b\[[^m]+m|\x1b\]8;;.*?(\x1b\\|\u0007))/,Px;function vot(){if(Px)return Px;if(typeof Intl.Segmenter<"u"){let t=new Intl.Segmenter("en",{granularity:"grapheme"});return Px=e=>Array.from(t.segment(e),({segment:r})=>r)}else{let t=$ce(),e=new t;return Px=r=>e.splitGraphemes(r)}}eue.exports=(t,e=0,r=t.length)=>{if(e<0||r<0)throw new RangeError("Negative indices aren't supported by this implementation");let o=r-e,a="",n=0,u=0;for(;t.length>0;){let A=t.match(Bot)||[t,t,void 0],p=vot()(A[1]),h=Math.min(e-n,p.length);p=p.slice(h);let C=Math.min(o-u,p.length);a+=p.slice(0,C).join(""),n+=h,u+=C,typeof A[2]<"u"&&(a+=A[2]),t=t.slice(A[0].length)}return a}});function oue(t,{configuration:e,json:r}){if(!e.get("enableMessageNames"))return"";let a=Ku(t===null?0:t);return!r&&t===null?Kt(e,a,"grey"):a}function CU(t,{configuration:e,json:r}){let o=oue(t,{configuration:e,json:r});if(!o||t===null||t===0)return o;let a=dr[t],n=`https://yarnpkg.com/advanced/error-codes#${o}---${a}`.toLowerCase();return Yy(e,o,n)}var sue,bx,rue,nue,Dot,Sot,xx,iue,Pot,xot,Qx,bot,Ct,kx=dt(()=>{sue=tt(tue()),bx=tt(Jg());KD();Jl();Yl();Ks();rue=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],nue=80,Dot=new Set([13,19]),Sot=5,xx=bx.default.GITHUB_ACTIONS?{start:t=>`::group::${t} | 165 | `),re.end()}),re});break;case"<&":E(()=>Bce(Number(t[V]),1,r));break;case">":case">>":{let re=J.resolve(r.cwd,ue.toPortablePath(t[V]));R(re==="/dev/null"?new Al.Writable({autoDestroy:!0,emitClose:!0,write(ae,he,pe){setImmediate(pe)}}):e.baseFs.createWriteStream(re,v===">>"?{flags:"a"}:void 0))}break;case">&":R(Bce(Number(t[V]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${v}"`)}}if(u.length>0){let w=new Al.PassThrough;o=w;let v=b=>{if(b===u.length)w.end();else{let E=u[b]();E.pipe(w,{end:!1}),E.on("end",()=>{v(b+1)})}};v(0)}if(A.length>0){let w=new Al.PassThrough;a=w;for(let v of A)w.pipe(v)}if(p.length>0){let w=new Al.PassThrough;n=w;for(let v of p)w.pipe(v)}let C=await Qx(B1(t.slice(h+1),e,r),{stdin:new rc(o),stdout:new rc(a),stderr:new rc(n)}).run();return await Promise.all(A.map(w=>new Promise((v,b)=>{w.on("error",E=>{b(E)}),w.on("close",()=>{v()}),w.end()}))),await Promise.all(p.map(w=>new Promise((v,b)=>{w.on("error",E=>{b(E)}),w.on("close",()=>{v()}),w.end()}))),C}]]);Ust={addition:(t,e)=>t+e,subtraction:(t,e)=>t-e,multiplication:(t,e)=>t*e,division:(t,e)=>Math.trunc(t/e)}});var Tx=U((hMt,Fce)=>{function Gst(t,e){for(var r=-1,o=t==null?0:t.length,a=Array(o);++r<o;)a[r]=e(t[r],r,t);return a}Fce.exports=Gst});var Mce=U((gMt,Oce)=>{var Rce=pd(),Wst=Tx(),Yst=Kl(),Kst=AE(),Vst=1/0,Tce=Rce?Rce.prototype:void 0,Nce=Tce?Tce.toString:void 0;function Lce(t){if(typeof t=="string")return t;if(Yst(t))return Wst(t,Lce)+"";if(Kst(t))return Nce?Nce.call(t):"";var e=t+"";return e=="0"&&1/t==-Vst?"-0":e}Oce.exports=Lce});var S1=U((dMt,Uce)=>{var Jst=Mce();function zst(t){return t==null?"":Jst(t)}Uce.exports=zst});var yU=U((mMt,_ce)=>{function Xst(t,e,r){var o=-1,a=t.length;e<0&&(e=-e>a?0:a+e),r=r>a?a:r,r<0&&(r+=a),a=e>r?0:r-e>>>0,e>>>=0;for(var n=Array(a);++o<a;)n[o]=t[o+e];return n}_ce.exports=Xst});var qce=U((yMt,Hce)=>{var Zst=yU();function $st(t,e,r){var o=t.length;return r=r===void 0?o:r,!e&&r>=o?t:Zst(t,e,r)}Hce.exports=$st});var EU=U((EMt,jce)=>{var eot="\\ud800-\\udfff",tot="\\u0300-\\u036f",rot="\\ufe20-\\ufe2f",not="\\u20d0-\\u20ff",iot=tot+rot+not,sot="\\ufe0e\\ufe0f",oot="\\u200d",aot=RegExp("["+oot+eot+iot+sot+"]");function lot(t){return aot.test(t)}jce.exports=lot});var Wce=U((CMt,Gce)=>{function cot(t){return t.split("")}Gce.exports=cot});var $ce=U((IMt,Zce)=>{var Yce="\\ud800-\\udfff",uot="\\u0300-\\u036f",Aot="\\ufe20-\\ufe2f",fot="\\u20d0-\\u20ff",pot=uot+Aot+fot,hot="\\ufe0e\\ufe0f",got="["+Yce+"]",CU="["+pot+"]",IU="\\ud83c[\\udffb-\\udfff]",dot="(?:"+CU+"|"+IU+")",Kce="[^"+Yce+"]",Vce="(?:\\ud83c[\\udde6-\\uddff]){2}",Jce="[\\ud800-\\udbff][\\udc00-\\udfff]",mot="\\u200d",zce=dot+"?",Xce="["+hot+"]?",yot="(?:"+mot+"(?:"+[Kce,Vce,Jce].join("|")+")"+Xce+zce+")*",Eot=Xce+zce+yot,Cot="(?:"+[Kce+CU+"?",CU,Vce,Jce,got].join("|")+")",Iot=RegExp(IU+"(?="+IU+")|"+Cot+Eot,"g");function wot(t){return t.match(Iot)||[]}Zce.exports=wot});var tue=U((wMt,eue)=>{var Bot=Wce(),vot=EU(),Dot=$ce();function Sot(t){return vot(t)?Dot(t):Bot(t)}eue.exports=Sot});var nue=U((BMt,rue)=>{var Pot=qce(),xot=EU(),bot=tue(),Qot=S1();function kot(t){return function(e){e=Qot(e);var r=xot(e)?bot(e):void 0,o=r?r[0]:e.charAt(0),a=r?Pot(r,1).join(""):e.slice(1);return o[t]()+a}}rue.exports=kot});var sue=U((vMt,iue)=>{var Fot=nue(),Rot=Fot("toUpperCase");iue.exports=Rot});var wU=U((DMt,oue)=>{var Tot=S1(),Not=sue();function Lot(t){return Not(Tot(t).toLowerCase())}oue.exports=Lot});var aue=U((SMt,Nx)=>{function Oot(){var t=0,e=1,r=2,o=3,a=4,n=5,u=6,A=7,p=8,h=9,C=10,w=11,v=12,b=13,E=14,R=15,L=16,_=17,V=0,re=1,ae=2,he=3,pe=4;function De(g,ve){return 55296<=g.charCodeAt(ve)&&g.charCodeAt(ve)<=56319&&56320<=g.charCodeAt(ve+1)&&g.charCodeAt(ve+1)<=57343}function ge(g,ve){ve===void 0&&(ve=0);var Ee=g.charCodeAt(ve);if(55296<=Ee&&Ee<=56319&&ve<g.length-1){var de=Ee,ne=g.charCodeAt(ve+1);return 56320<=ne&&ne<=57343?(de-55296)*1024+(ne-56320)+65536:de}if(56320<=Ee&&Ee<=57343&&ve>=1){var de=g.charCodeAt(ve-1),ne=Ee;return 55296<=de&&de<=56319?(de-55296)*1024+(ne-56320)+65536:ne}return Ee}function le(g,ve,Ee){var de=[g].concat(ve).concat([Ee]),ne=de[de.length-2],Z=Ee,me=de.lastIndexOf(E);if(me>1&&de.slice(1,me).every(function(H){return H==o})&&[o,b,_].indexOf(g)==-1)return ae;var be=de.lastIndexOf(a);if(be>0&&de.slice(1,be).every(function(H){return H==a})&&[v,a].indexOf(ne)==-1)return de.filter(function(H){return H==a}).length%2==1?he:pe;if(ne==t&&Z==e)return V;if(ne==r||ne==t||ne==e)return Z==E&&ve.every(function(H){return H==o})?ae:re;if(Z==r||Z==t||Z==e)return re;if(ne==u&&(Z==u||Z==A||Z==h||Z==C))return V;if((ne==h||ne==A)&&(Z==A||Z==p))return V;if((ne==C||ne==p)&&Z==p)return V;if(Z==o||Z==R)return V;if(Z==n)return V;if(ne==v)return V;var ut=de.indexOf(o)!=-1?de.lastIndexOf(o)-1:de.length-2;return[b,_].indexOf(de[ut])!=-1&&de.slice(ut+1,-1).every(function(H){return H==o})&&Z==E||ne==R&&[L,_].indexOf(Z)!=-1?V:ve.indexOf(a)!=-1?ae:ne==a&&Z==a?V:re}this.nextBreak=function(g,ve){if(ve===void 0&&(ve=0),ve<0)return 0;if(ve>=g.length-1)return g.length;for(var Ee=Pe(ge(g,ve)),de=[],ne=ve+1;ne<g.length;ne++)if(!De(g,ne-1)){var Z=Pe(ge(g,ne));if(le(Ee,de,Z))return ne;de.push(Z)}return g.length},this.splitGraphemes=function(g){for(var ve=[],Ee=0,de;(de=this.nextBreak(g,Ee))<g.length;)ve.push(g.slice(Ee,de)),Ee=de;return Ee<g.length&&ve.push(g.slice(Ee)),ve},this.iterateGraphemes=function(g){var ve=0,Ee={next:function(){var de,ne;return(ne=this.nextBreak(g,ve))<g.length?(de=g.slice(ve,ne),ve=ne,{value:de,done:!1}):ve<g.length?(de=g.slice(ve),ve=g.length,{value:de,done:!1}):{value:void 0,done:!0}}.bind(this)};return typeof Symbol<"u"&&Symbol.iterator&&(Ee[Symbol.iterator]=function(){return Ee}),Ee},this.countGraphemes=function(g){for(var ve=0,Ee=0,de;(de=this.nextBreak(g,Ee))<g.length;)Ee=de,ve++;return Ee<g.length&&ve++,ve};function Pe(g){return 1536<=g&&g<=1541||g==1757||g==1807||g==2274||g==3406||g==69821||70082<=g&&g<=70083||g==72250||72326<=g&&g<=72329||g==73030?v:g==13?t:g==10?e:0<=g&&g<=9||11<=g&&g<=12||14<=g&&g<=31||127<=g&&g<=159||g==173||g==1564||g==6158||g==8203||8206<=g&&g<=8207||g==8232||g==8233||8234<=g&&g<=8238||8288<=g&&g<=8292||g==8293||8294<=g&&g<=8303||55296<=g&&g<=57343||g==65279||65520<=g&&g<=65528||65529<=g&&g<=65531||113824<=g&&g<=113827||119155<=g&&g<=119162||g==917504||g==917505||917506<=g&&g<=917535||917632<=g&&g<=917759||918e3<=g&&g<=921599?r:768<=g&&g<=879||1155<=g&&g<=1159||1160<=g&&g<=1161||1425<=g&&g<=1469||g==1471||1473<=g&&g<=1474||1476<=g&&g<=1477||g==1479||1552<=g&&g<=1562||1611<=g&&g<=1631||g==1648||1750<=g&&g<=1756||1759<=g&&g<=1764||1767<=g&&g<=1768||1770<=g&&g<=1773||g==1809||1840<=g&&g<=1866||1958<=g&&g<=1968||2027<=g&&g<=2035||2070<=g&&g<=2073||2075<=g&&g<=2083||2085<=g&&g<=2087||2089<=g&&g<=2093||2137<=g&&g<=2139||2260<=g&&g<=2273||2275<=g&&g<=2306||g==2362||g==2364||2369<=g&&g<=2376||g==2381||2385<=g&&g<=2391||2402<=g&&g<=2403||g==2433||g==2492||g==2494||2497<=g&&g<=2500||g==2509||g==2519||2530<=g&&g<=2531||2561<=g&&g<=2562||g==2620||2625<=g&&g<=2626||2631<=g&&g<=2632||2635<=g&&g<=2637||g==2641||2672<=g&&g<=2673||g==2677||2689<=g&&g<=2690||g==2748||2753<=g&&g<=2757||2759<=g&&g<=2760||g==2765||2786<=g&&g<=2787||2810<=g&&g<=2815||g==2817||g==2876||g==2878||g==2879||2881<=g&&g<=2884||g==2893||g==2902||g==2903||2914<=g&&g<=2915||g==2946||g==3006||g==3008||g==3021||g==3031||g==3072||3134<=g&&g<=3136||3142<=g&&g<=3144||3146<=g&&g<=3149||3157<=g&&g<=3158||3170<=g&&g<=3171||g==3201||g==3260||g==3263||g==3266||g==3270||3276<=g&&g<=3277||3285<=g&&g<=3286||3298<=g&&g<=3299||3328<=g&&g<=3329||3387<=g&&g<=3388||g==3390||3393<=g&&g<=3396||g==3405||g==3415||3426<=g&&g<=3427||g==3530||g==3535||3538<=g&&g<=3540||g==3542||g==3551||g==3633||3636<=g&&g<=3642||3655<=g&&g<=3662||g==3761||3764<=g&&g<=3769||3771<=g&&g<=3772||3784<=g&&g<=3789||3864<=g&&g<=3865||g==3893||g==3895||g==3897||3953<=g&&g<=3966||3968<=g&&g<=3972||3974<=g&&g<=3975||3981<=g&&g<=3991||3993<=g&&g<=4028||g==4038||4141<=g&&g<=4144||4146<=g&&g<=4151||4153<=g&&g<=4154||4157<=g&&g<=4158||4184<=g&&g<=4185||4190<=g&&g<=4192||4209<=g&&g<=4212||g==4226||4229<=g&&g<=4230||g==4237||g==4253||4957<=g&&g<=4959||5906<=g&&g<=5908||5938<=g&&g<=5940||5970<=g&&g<=5971||6002<=g&&g<=6003||6068<=g&&g<=6069||6071<=g&&g<=6077||g==6086||6089<=g&&g<=6099||g==6109||6155<=g&&g<=6157||6277<=g&&g<=6278||g==6313||6432<=g&&g<=6434||6439<=g&&g<=6440||g==6450||6457<=g&&g<=6459||6679<=g&&g<=6680||g==6683||g==6742||6744<=g&&g<=6750||g==6752||g==6754||6757<=g&&g<=6764||6771<=g&&g<=6780||g==6783||6832<=g&&g<=6845||g==6846||6912<=g&&g<=6915||g==6964||6966<=g&&g<=6970||g==6972||g==6978||7019<=g&&g<=7027||7040<=g&&g<=7041||7074<=g&&g<=7077||7080<=g&&g<=7081||7083<=g&&g<=7085||g==7142||7144<=g&&g<=7145||g==7149||7151<=g&&g<=7153||7212<=g&&g<=7219||7222<=g&&g<=7223||7376<=g&&g<=7378||7380<=g&&g<=7392||7394<=g&&g<=7400||g==7405||g==7412||7416<=g&&g<=7417||7616<=g&&g<=7673||7675<=g&&g<=7679||g==8204||8400<=g&&g<=8412||8413<=g&&g<=8416||g==8417||8418<=g&&g<=8420||8421<=g&&g<=8432||11503<=g&&g<=11505||g==11647||11744<=g&&g<=11775||12330<=g&&g<=12333||12334<=g&&g<=12335||12441<=g&&g<=12442||g==42607||42608<=g&&g<=42610||42612<=g&&g<=42621||42654<=g&&g<=42655||42736<=g&&g<=42737||g==43010||g==43014||g==43019||43045<=g&&g<=43046||43204<=g&&g<=43205||43232<=g&&g<=43249||43302<=g&&g<=43309||43335<=g&&g<=43345||43392<=g&&g<=43394||g==43443||43446<=g&&g<=43449||g==43452||g==43493||43561<=g&&g<=43566||43569<=g&&g<=43570||43573<=g&&g<=43574||g==43587||g==43596||g==43644||g==43696||43698<=g&&g<=43700||43703<=g&&g<=43704||43710<=g&&g<=43711||g==43713||43756<=g&&g<=43757||g==43766||g==44005||g==44008||g==44013||g==64286||65024<=g&&g<=65039||65056<=g&&g<=65071||65438<=g&&g<=65439||g==66045||g==66272||66422<=g&&g<=66426||68097<=g&&g<=68099||68101<=g&&g<=68102||68108<=g&&g<=68111||68152<=g&&g<=68154||g==68159||68325<=g&&g<=68326||g==69633||69688<=g&&g<=69702||69759<=g&&g<=69761||69811<=g&&g<=69814||69817<=g&&g<=69818||69888<=g&&g<=69890||69927<=g&&g<=69931||69933<=g&&g<=69940||g==70003||70016<=g&&g<=70017||70070<=g&&g<=70078||70090<=g&&g<=70092||70191<=g&&g<=70193||g==70196||70198<=g&&g<=70199||g==70206||g==70367||70371<=g&&g<=70378||70400<=g&&g<=70401||g==70460||g==70462||g==70464||g==70487||70502<=g&&g<=70508||70512<=g&&g<=70516||70712<=g&&g<=70719||70722<=g&&g<=70724||g==70726||g==70832||70835<=g&&g<=70840||g==70842||g==70845||70847<=g&&g<=70848||70850<=g&&g<=70851||g==71087||71090<=g&&g<=71093||71100<=g&&g<=71101||71103<=g&&g<=71104||71132<=g&&g<=71133||71219<=g&&g<=71226||g==71229||71231<=g&&g<=71232||g==71339||g==71341||71344<=g&&g<=71349||g==71351||71453<=g&&g<=71455||71458<=g&&g<=71461||71463<=g&&g<=71467||72193<=g&&g<=72198||72201<=g&&g<=72202||72243<=g&&g<=72248||72251<=g&&g<=72254||g==72263||72273<=g&&g<=72278||72281<=g&&g<=72283||72330<=g&&g<=72342||72344<=g&&g<=72345||72752<=g&&g<=72758||72760<=g&&g<=72765||g==72767||72850<=g&&g<=72871||72874<=g&&g<=72880||72882<=g&&g<=72883||72885<=g&&g<=72886||73009<=g&&g<=73014||g==73018||73020<=g&&g<=73021||73023<=g&&g<=73029||g==73031||92912<=g&&g<=92916||92976<=g&&g<=92982||94095<=g&&g<=94098||113821<=g&&g<=113822||g==119141||119143<=g&&g<=119145||119150<=g&&g<=119154||119163<=g&&g<=119170||119173<=g&&g<=119179||119210<=g&&g<=119213||119362<=g&&g<=119364||121344<=g&&g<=121398||121403<=g&&g<=121452||g==121461||g==121476||121499<=g&&g<=121503||121505<=g&&g<=121519||122880<=g&&g<=122886||122888<=g&&g<=122904||122907<=g&&g<=122913||122915<=g&&g<=122916||122918<=g&&g<=122922||125136<=g&&g<=125142||125252<=g&&g<=125258||917536<=g&&g<=917631||917760<=g&&g<=917999?o:127462<=g&&g<=127487?a:g==2307||g==2363||2366<=g&&g<=2368||2377<=g&&g<=2380||2382<=g&&g<=2383||2434<=g&&g<=2435||2495<=g&&g<=2496||2503<=g&&g<=2504||2507<=g&&g<=2508||g==2563||2622<=g&&g<=2624||g==2691||2750<=g&&g<=2752||g==2761||2763<=g&&g<=2764||2818<=g&&g<=2819||g==2880||2887<=g&&g<=2888||2891<=g&&g<=2892||g==3007||3009<=g&&g<=3010||3014<=g&&g<=3016||3018<=g&&g<=3020||3073<=g&&g<=3075||3137<=g&&g<=3140||3202<=g&&g<=3203||g==3262||3264<=g&&g<=3265||3267<=g&&g<=3268||3271<=g&&g<=3272||3274<=g&&g<=3275||3330<=g&&g<=3331||3391<=g&&g<=3392||3398<=g&&g<=3400||3402<=g&&g<=3404||3458<=g&&g<=3459||3536<=g&&g<=3537||3544<=g&&g<=3550||3570<=g&&g<=3571||g==3635||g==3763||3902<=g&&g<=3903||g==3967||g==4145||4155<=g&&g<=4156||4182<=g&&g<=4183||g==4228||g==6070||6078<=g&&g<=6085||6087<=g&&g<=6088||6435<=g&&g<=6438||6441<=g&&g<=6443||6448<=g&&g<=6449||6451<=g&&g<=6456||6681<=g&&g<=6682||g==6741||g==6743||6765<=g&&g<=6770||g==6916||g==6965||g==6971||6973<=g&&g<=6977||6979<=g&&g<=6980||g==7042||g==7073||7078<=g&&g<=7079||g==7082||g==7143||7146<=g&&g<=7148||g==7150||7154<=g&&g<=7155||7204<=g&&g<=7211||7220<=g&&g<=7221||g==7393||7410<=g&&g<=7411||g==7415||43043<=g&&g<=43044||g==43047||43136<=g&&g<=43137||43188<=g&&g<=43203||43346<=g&&g<=43347||g==43395||43444<=g&&g<=43445||43450<=g&&g<=43451||43453<=g&&g<=43456||43567<=g&&g<=43568||43571<=g&&g<=43572||g==43597||g==43755||43758<=g&&g<=43759||g==43765||44003<=g&&g<=44004||44006<=g&&g<=44007||44009<=g&&g<=44010||g==44012||g==69632||g==69634||g==69762||69808<=g&&g<=69810||69815<=g&&g<=69816||g==69932||g==70018||70067<=g&&g<=70069||70079<=g&&g<=70080||70188<=g&&g<=70190||70194<=g&&g<=70195||g==70197||70368<=g&&g<=70370||70402<=g&&g<=70403||g==70463||70465<=g&&g<=70468||70471<=g&&g<=70472||70475<=g&&g<=70477||70498<=g&&g<=70499||70709<=g&&g<=70711||70720<=g&&g<=70721||g==70725||70833<=g&&g<=70834||g==70841||70843<=g&&g<=70844||g==70846||g==70849||71088<=g&&g<=71089||71096<=g&&g<=71099||g==71102||71216<=g&&g<=71218||71227<=g&&g<=71228||g==71230||g==71340||71342<=g&&g<=71343||g==71350||71456<=g&&g<=71457||g==71462||72199<=g&&g<=72200||g==72249||72279<=g&&g<=72280||g==72343||g==72751||g==72766||g==72873||g==72881||g==72884||94033<=g&&g<=94078||g==119142||g==119149?n:4352<=g&&g<=4447||43360<=g&&g<=43388?u:4448<=g&&g<=4519||55216<=g&&g<=55238?A:4520<=g&&g<=4607||55243<=g&&g<=55291?p:g==44032||g==44060||g==44088||g==44116||g==44144||g==44172||g==44200||g==44228||g==44256||g==44284||g==44312||g==44340||g==44368||g==44396||g==44424||g==44452||g==44480||g==44508||g==44536||g==44564||g==44592||g==44620||g==44648||g==44676||g==44704||g==44732||g==44760||g==44788||g==44816||g==44844||g==44872||g==44900||g==44928||g==44956||g==44984||g==45012||g==45040||g==45068||g==45096||g==45124||g==45152||g==45180||g==45208||g==45236||g==45264||g==45292||g==45320||g==45348||g==45376||g==45404||g==45432||g==45460||g==45488||g==45516||g==45544||g==45572||g==45600||g==45628||g==45656||g==45684||g==45712||g==45740||g==45768||g==45796||g==45824||g==45852||g==45880||g==45908||g==45936||g==45964||g==45992||g==46020||g==46048||g==46076||g==46104||g==46132||g==46160||g==46188||g==46216||g==46244||g==46272||g==46300||g==46328||g==46356||g==46384||g==46412||g==46440||g==46468||g==46496||g==46524||g==46552||g==46580||g==46608||g==46636||g==46664||g==46692||g==46720||g==46748||g==46776||g==46804||g==46832||g==46860||g==46888||g==46916||g==46944||g==46972||g==47e3||g==47028||g==47056||g==47084||g==47112||g==47140||g==47168||g==47196||g==47224||g==47252||g==47280||g==47308||g==47336||g==47364||g==47392||g==47420||g==47448||g==47476||g==47504||g==47532||g==47560||g==47588||g==47616||g==47644||g==47672||g==47700||g==47728||g==47756||g==47784||g==47812||g==47840||g==47868||g==47896||g==47924||g==47952||g==47980||g==48008||g==48036||g==48064||g==48092||g==48120||g==48148||g==48176||g==48204||g==48232||g==48260||g==48288||g==48316||g==48344||g==48372||g==48400||g==48428||g==48456||g==48484||g==48512||g==48540||g==48568||g==48596||g==48624||g==48652||g==48680||g==48708||g==48736||g==48764||g==48792||g==48820||g==48848||g==48876||g==48904||g==48932||g==48960||g==48988||g==49016||g==49044||g==49072||g==49100||g==49128||g==49156||g==49184||g==49212||g==49240||g==49268||g==49296||g==49324||g==49352||g==49380||g==49408||g==49436||g==49464||g==49492||g==49520||g==49548||g==49576||g==49604||g==49632||g==49660||g==49688||g==49716||g==49744||g==49772||g==49800||g==49828||g==49856||g==49884||g==49912||g==49940||g==49968||g==49996||g==50024||g==50052||g==50080||g==50108||g==50136||g==50164||g==50192||g==50220||g==50248||g==50276||g==50304||g==50332||g==50360||g==50388||g==50416||g==50444||g==50472||g==50500||g==50528||g==50556||g==50584||g==50612||g==50640||g==50668||g==50696||g==50724||g==50752||g==50780||g==50808||g==50836||g==50864||g==50892||g==50920||g==50948||g==50976||g==51004||g==51032||g==51060||g==51088||g==51116||g==51144||g==51172||g==51200||g==51228||g==51256||g==51284||g==51312||g==51340||g==51368||g==51396||g==51424||g==51452||g==51480||g==51508||g==51536||g==51564||g==51592||g==51620||g==51648||g==51676||g==51704||g==51732||g==51760||g==51788||g==51816||g==51844||g==51872||g==51900||g==51928||g==51956||g==51984||g==52012||g==52040||g==52068||g==52096||g==52124||g==52152||g==52180||g==52208||g==52236||g==52264||g==52292||g==52320||g==52348||g==52376||g==52404||g==52432||g==52460||g==52488||g==52516||g==52544||g==52572||g==52600||g==52628||g==52656||g==52684||g==52712||g==52740||g==52768||g==52796||g==52824||g==52852||g==52880||g==52908||g==52936||g==52964||g==52992||g==53020||g==53048||g==53076||g==53104||g==53132||g==53160||g==53188||g==53216||g==53244||g==53272||g==53300||g==53328||g==53356||g==53384||g==53412||g==53440||g==53468||g==53496||g==53524||g==53552||g==53580||g==53608||g==53636||g==53664||g==53692||g==53720||g==53748||g==53776||g==53804||g==53832||g==53860||g==53888||g==53916||g==53944||g==53972||g==54e3||g==54028||g==54056||g==54084||g==54112||g==54140||g==54168||g==54196||g==54224||g==54252||g==54280||g==54308||g==54336||g==54364||g==54392||g==54420||g==54448||g==54476||g==54504||g==54532||g==54560||g==54588||g==54616||g==54644||g==54672||g==54700||g==54728||g==54756||g==54784||g==54812||g==54840||g==54868||g==54896||g==54924||g==54952||g==54980||g==55008||g==55036||g==55064||g==55092||g==55120||g==55148||g==55176?h:44033<=g&&g<=44059||44061<=g&&g<=44087||44089<=g&&g<=44115||44117<=g&&g<=44143||44145<=g&&g<=44171||44173<=g&&g<=44199||44201<=g&&g<=44227||44229<=g&&g<=44255||44257<=g&&g<=44283||44285<=g&&g<=44311||44313<=g&&g<=44339||44341<=g&&g<=44367||44369<=g&&g<=44395||44397<=g&&g<=44423||44425<=g&&g<=44451||44453<=g&&g<=44479||44481<=g&&g<=44507||44509<=g&&g<=44535||44537<=g&&g<=44563||44565<=g&&g<=44591||44593<=g&&g<=44619||44621<=g&&g<=44647||44649<=g&&g<=44675||44677<=g&&g<=44703||44705<=g&&g<=44731||44733<=g&&g<=44759||44761<=g&&g<=44787||44789<=g&&g<=44815||44817<=g&&g<=44843||44845<=g&&g<=44871||44873<=g&&g<=44899||44901<=g&&g<=44927||44929<=g&&g<=44955||44957<=g&&g<=44983||44985<=g&&g<=45011||45013<=g&&g<=45039||45041<=g&&g<=45067||45069<=g&&g<=45095||45097<=g&&g<=45123||45125<=g&&g<=45151||45153<=g&&g<=45179||45181<=g&&g<=45207||45209<=g&&g<=45235||45237<=g&&g<=45263||45265<=g&&g<=45291||45293<=g&&g<=45319||45321<=g&&g<=45347||45349<=g&&g<=45375||45377<=g&&g<=45403||45405<=g&&g<=45431||45433<=g&&g<=45459||45461<=g&&g<=45487||45489<=g&&g<=45515||45517<=g&&g<=45543||45545<=g&&g<=45571||45573<=g&&g<=45599||45601<=g&&g<=45627||45629<=g&&g<=45655||45657<=g&&g<=45683||45685<=g&&g<=45711||45713<=g&&g<=45739||45741<=g&&g<=45767||45769<=g&&g<=45795||45797<=g&&g<=45823||45825<=g&&g<=45851||45853<=g&&g<=45879||45881<=g&&g<=45907||45909<=g&&g<=45935||45937<=g&&g<=45963||45965<=g&&g<=45991||45993<=g&&g<=46019||46021<=g&&g<=46047||46049<=g&&g<=46075||46077<=g&&g<=46103||46105<=g&&g<=46131||46133<=g&&g<=46159||46161<=g&&g<=46187||46189<=g&&g<=46215||46217<=g&&g<=46243||46245<=g&&g<=46271||46273<=g&&g<=46299||46301<=g&&g<=46327||46329<=g&&g<=46355||46357<=g&&g<=46383||46385<=g&&g<=46411||46413<=g&&g<=46439||46441<=g&&g<=46467||46469<=g&&g<=46495||46497<=g&&g<=46523||46525<=g&&g<=46551||46553<=g&&g<=46579||46581<=g&&g<=46607||46609<=g&&g<=46635||46637<=g&&g<=46663||46665<=g&&g<=46691||46693<=g&&g<=46719||46721<=g&&g<=46747||46749<=g&&g<=46775||46777<=g&&g<=46803||46805<=g&&g<=46831||46833<=g&&g<=46859||46861<=g&&g<=46887||46889<=g&&g<=46915||46917<=g&&g<=46943||46945<=g&&g<=46971||46973<=g&&g<=46999||47001<=g&&g<=47027||47029<=g&&g<=47055||47057<=g&&g<=47083||47085<=g&&g<=47111||47113<=g&&g<=47139||47141<=g&&g<=47167||47169<=g&&g<=47195||47197<=g&&g<=47223||47225<=g&&g<=47251||47253<=g&&g<=47279||47281<=g&&g<=47307||47309<=g&&g<=47335||47337<=g&&g<=47363||47365<=g&&g<=47391||47393<=g&&g<=47419||47421<=g&&g<=47447||47449<=g&&g<=47475||47477<=g&&g<=47503||47505<=g&&g<=47531||47533<=g&&g<=47559||47561<=g&&g<=47587||47589<=g&&g<=47615||47617<=g&&g<=47643||47645<=g&&g<=47671||47673<=g&&g<=47699||47701<=g&&g<=47727||47729<=g&&g<=47755||47757<=g&&g<=47783||47785<=g&&g<=47811||47813<=g&&g<=47839||47841<=g&&g<=47867||47869<=g&&g<=47895||47897<=g&&g<=47923||47925<=g&&g<=47951||47953<=g&&g<=47979||47981<=g&&g<=48007||48009<=g&&g<=48035||48037<=g&&g<=48063||48065<=g&&g<=48091||48093<=g&&g<=48119||48121<=g&&g<=48147||48149<=g&&g<=48175||48177<=g&&g<=48203||48205<=g&&g<=48231||48233<=g&&g<=48259||48261<=g&&g<=48287||48289<=g&&g<=48315||48317<=g&&g<=48343||48345<=g&&g<=48371||48373<=g&&g<=48399||48401<=g&&g<=48427||48429<=g&&g<=48455||48457<=g&&g<=48483||48485<=g&&g<=48511||48513<=g&&g<=48539||48541<=g&&g<=48567||48569<=g&&g<=48595||48597<=g&&g<=48623||48625<=g&&g<=48651||48653<=g&&g<=48679||48681<=g&&g<=48707||48709<=g&&g<=48735||48737<=g&&g<=48763||48765<=g&&g<=48791||48793<=g&&g<=48819||48821<=g&&g<=48847||48849<=g&&g<=48875||48877<=g&&g<=48903||48905<=g&&g<=48931||48933<=g&&g<=48959||48961<=g&&g<=48987||48989<=g&&g<=49015||49017<=g&&g<=49043||49045<=g&&g<=49071||49073<=g&&g<=49099||49101<=g&&g<=49127||49129<=g&&g<=49155||49157<=g&&g<=49183||49185<=g&&g<=49211||49213<=g&&g<=49239||49241<=g&&g<=49267||49269<=g&&g<=49295||49297<=g&&g<=49323||49325<=g&&g<=49351||49353<=g&&g<=49379||49381<=g&&g<=49407||49409<=g&&g<=49435||49437<=g&&g<=49463||49465<=g&&g<=49491||49493<=g&&g<=49519||49521<=g&&g<=49547||49549<=g&&g<=49575||49577<=g&&g<=49603||49605<=g&&g<=49631||49633<=g&&g<=49659||49661<=g&&g<=49687||49689<=g&&g<=49715||49717<=g&&g<=49743||49745<=g&&g<=49771||49773<=g&&g<=49799||49801<=g&&g<=49827||49829<=g&&g<=49855||49857<=g&&g<=49883||49885<=g&&g<=49911||49913<=g&&g<=49939||49941<=g&&g<=49967||49969<=g&&g<=49995||49997<=g&&g<=50023||50025<=g&&g<=50051||50053<=g&&g<=50079||50081<=g&&g<=50107||50109<=g&&g<=50135||50137<=g&&g<=50163||50165<=g&&g<=50191||50193<=g&&g<=50219||50221<=g&&g<=50247||50249<=g&&g<=50275||50277<=g&&g<=50303||50305<=g&&g<=50331||50333<=g&&g<=50359||50361<=g&&g<=50387||50389<=g&&g<=50415||50417<=g&&g<=50443||50445<=g&&g<=50471||50473<=g&&g<=50499||50501<=g&&g<=50527||50529<=g&&g<=50555||50557<=g&&g<=50583||50585<=g&&g<=50611||50613<=g&&g<=50639||50641<=g&&g<=50667||50669<=g&&g<=50695||50697<=g&&g<=50723||50725<=g&&g<=50751||50753<=g&&g<=50779||50781<=g&&g<=50807||50809<=g&&g<=50835||50837<=g&&g<=50863||50865<=g&&g<=50891||50893<=g&&g<=50919||50921<=g&&g<=50947||50949<=g&&g<=50975||50977<=g&&g<=51003||51005<=g&&g<=51031||51033<=g&&g<=51059||51061<=g&&g<=51087||51089<=g&&g<=51115||51117<=g&&g<=51143||51145<=g&&g<=51171||51173<=g&&g<=51199||51201<=g&&g<=51227||51229<=g&&g<=51255||51257<=g&&g<=51283||51285<=g&&g<=51311||51313<=g&&g<=51339||51341<=g&&g<=51367||51369<=g&&g<=51395||51397<=g&&g<=51423||51425<=g&&g<=51451||51453<=g&&g<=51479||51481<=g&&g<=51507||51509<=g&&g<=51535||51537<=g&&g<=51563||51565<=g&&g<=51591||51593<=g&&g<=51619||51621<=g&&g<=51647||51649<=g&&g<=51675||51677<=g&&g<=51703||51705<=g&&g<=51731||51733<=g&&g<=51759||51761<=g&&g<=51787||51789<=g&&g<=51815||51817<=g&&g<=51843||51845<=g&&g<=51871||51873<=g&&g<=51899||51901<=g&&g<=51927||51929<=g&&g<=51955||51957<=g&&g<=51983||51985<=g&&g<=52011||52013<=g&&g<=52039||52041<=g&&g<=52067||52069<=g&&g<=52095||52097<=g&&g<=52123||52125<=g&&g<=52151||52153<=g&&g<=52179||52181<=g&&g<=52207||52209<=g&&g<=52235||52237<=g&&g<=52263||52265<=g&&g<=52291||52293<=g&&g<=52319||52321<=g&&g<=52347||52349<=g&&g<=52375||52377<=g&&g<=52403||52405<=g&&g<=52431||52433<=g&&g<=52459||52461<=g&&g<=52487||52489<=g&&g<=52515||52517<=g&&g<=52543||52545<=g&&g<=52571||52573<=g&&g<=52599||52601<=g&&g<=52627||52629<=g&&g<=52655||52657<=g&&g<=52683||52685<=g&&g<=52711||52713<=g&&g<=52739||52741<=g&&g<=52767||52769<=g&&g<=52795||52797<=g&&g<=52823||52825<=g&&g<=52851||52853<=g&&g<=52879||52881<=g&&g<=52907||52909<=g&&g<=52935||52937<=g&&g<=52963||52965<=g&&g<=52991||52993<=g&&g<=53019||53021<=g&&g<=53047||53049<=g&&g<=53075||53077<=g&&g<=53103||53105<=g&&g<=53131||53133<=g&&g<=53159||53161<=g&&g<=53187||53189<=g&&g<=53215||53217<=g&&g<=53243||53245<=g&&g<=53271||53273<=g&&g<=53299||53301<=g&&g<=53327||53329<=g&&g<=53355||53357<=g&&g<=53383||53385<=g&&g<=53411||53413<=g&&g<=53439||53441<=g&&g<=53467||53469<=g&&g<=53495||53497<=g&&g<=53523||53525<=g&&g<=53551||53553<=g&&g<=53579||53581<=g&&g<=53607||53609<=g&&g<=53635||53637<=g&&g<=53663||53665<=g&&g<=53691||53693<=g&&g<=53719||53721<=g&&g<=53747||53749<=g&&g<=53775||53777<=g&&g<=53803||53805<=g&&g<=53831||53833<=g&&g<=53859||53861<=g&&g<=53887||53889<=g&&g<=53915||53917<=g&&g<=53943||53945<=g&&g<=53971||53973<=g&&g<=53999||54001<=g&&g<=54027||54029<=g&&g<=54055||54057<=g&&g<=54083||54085<=g&&g<=54111||54113<=g&&g<=54139||54141<=g&&g<=54167||54169<=g&&g<=54195||54197<=g&&g<=54223||54225<=g&&g<=54251||54253<=g&&g<=54279||54281<=g&&g<=54307||54309<=g&&g<=54335||54337<=g&&g<=54363||54365<=g&&g<=54391||54393<=g&&g<=54419||54421<=g&&g<=54447||54449<=g&&g<=54475||54477<=g&&g<=54503||54505<=g&&g<=54531||54533<=g&&g<=54559||54561<=g&&g<=54587||54589<=g&&g<=54615||54617<=g&&g<=54643||54645<=g&&g<=54671||54673<=g&&g<=54699||54701<=g&&g<=54727||54729<=g&&g<=54755||54757<=g&&g<=54783||54785<=g&&g<=54811||54813<=g&&g<=54839||54841<=g&&g<=54867||54869<=g&&g<=54895||54897<=g&&g<=54923||54925<=g&&g<=54951||54953<=g&&g<=54979||54981<=g&&g<=55007||55009<=g&&g<=55035||55037<=g&&g<=55063||55065<=g&&g<=55091||55093<=g&&g<=55119||55121<=g&&g<=55147||55149<=g&&g<=55175||55177<=g&&g<=55203?C:g==9757||g==9977||9994<=g&&g<=9997||g==127877||127938<=g&&g<=127940||g==127943||127946<=g&&g<=127948||128066<=g&&g<=128067||128070<=g&&g<=128080||g==128110||128112<=g&&g<=128120||g==128124||128129<=g&&g<=128131||128133<=g&&g<=128135||g==128170||128372<=g&&g<=128373||g==128378||g==128400||128405<=g&&g<=128406||128581<=g&&g<=128583||128587<=g&&g<=128591||g==128675||128692<=g&&g<=128694||g==128704||g==128716||129304<=g&&g<=129308||129310<=g&&g<=129311||g==129318||129328<=g&&g<=129337||129341<=g&&g<=129342||129489<=g&&g<=129501?b:127995<=g&&g<=127999?E:g==8205?R:g==9792||g==9794||9877<=g&&g<=9878||g==9992||g==10084||g==127752||g==127806||g==127859||g==127891||g==127908||g==127912||g==127979||g==127981||g==128139||128187<=g&&g<=128188||g==128295||g==128300||g==128488||g==128640||g==128658?L:128102<=g&&g<=128105?_:w}return this}typeof Nx<"u"&&Nx.exports&&(Nx.exports=Oot)});var cue=U((PMt,lue)=>{var Mot=/^(.*?)(\x1b\[[^m]+m|\x1b\]8;;.*?(\x1b\\|\u0007))/,Lx;function Uot(){if(Lx)return Lx;if(typeof Intl.Segmenter<"u"){let t=new Intl.Segmenter("en",{granularity:"grapheme"});return Lx=e=>Array.from(t.segment(e),({segment:r})=>r)}else{let t=aue(),e=new t;return Lx=r=>e.splitGraphemes(r)}}lue.exports=(t,e=0,r=t.length)=>{if(e<0||r<0)throw new RangeError("Negative indices aren't supported by this implementation");let o=r-e,a="",n=0,u=0;for(;t.length>0;){let A=t.match(Mot)||[t,t,void 0],p=Uot()(A[1]),h=Math.min(e-n,p.length);p=p.slice(h);let C=Math.min(o-u,p.length);a+=p.slice(0,C).join(""),n+=h,u+=C,typeof A[2]<"u"&&(a+=A[2]),t=t.slice(A[0].length)}return a}});function hue(t,{configuration:e,json:r}){if(!e.get("enableMessageNames"))return"";let a=Vu(t===null?0:t);return!r&&t===null?Kt(e,a,"grey"):a}function BU(t,{configuration:e,json:r}){let o=hue(t,{configuration:e,json:r});if(!o||t===null||t===0)return o;let a=dr[t],n=`https://yarnpkg.com/advanced/error-codes#${o}---${a}`.toLowerCase();return Xy(e,o,n)}var pue,Mx,uue,Aue,_ot,Hot,Ox,fue,qot,jot,Ux,Got,Ct,_x=dt(()=>{pue=tt(cue()),Mx=tt(Zg());rS();Zl();zl();Ks();uue=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],Aue=80,_ot=new Set([13,19]),Hot=5,Ox=Mx.default.GITHUB_ACTIONS?{start:t=>`::group::${t} |
166 | `,end:t=>`::endgroup:: | 166 | `,end:t=>`::endgroup:: |
167 | `}:bx.default.TRAVIS?{start:t=>`travis_fold:start:${t} | 167 | `}:Mx.default.TRAVIS?{start:t=>`travis_fold:start:${t} |
168 | `,end:t=>`travis_fold:end:${t} | 168 | `,end:t=>`travis_fold:end:${t} |
169 | `}:bx.default.GITLAB?{start:t=>`section_start:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}[collapsed=true]\r\x1B[0K${t} | 169 | `}:Mx.default.GITLAB?{start:t=>`section_start:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}[collapsed=true]\r\x1B[0K${t} |
170 | `,end:t=>`section_end:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}\r\x1B[0K`}:null,iue=new Date,Pot=["iTerm.app","Apple_Terminal","WarpTerminal","vscode"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,xot=t=>t,Qx=xot({patrick:{date:[17,3],chars:["\u{1F340}","\u{1F331}"],size:40},simba:{date:[19,7],chars:["\u{1F981}","\u{1F334}"],size:40},jack:{date:[31,10],chars:["\u{1F383}","\u{1F987}"],size:40},hogsfather:{date:[31,12],chars:["\u{1F389}","\u{1F384}"],size:40},default:{chars:["=","-"],size:80}}),bot=Pot&&Object.keys(Qx).find(t=>{let e=Qx[t];return!(e.date&&(e.date[0]!==iue.getDate()||e.date[1]!==iue.getMonth()+1))})||"default";Ct=class extends Vs{constructor({configuration:r,stdout:o,json:a=!1,includeNames:n=!0,includePrefix:u=!0,includeFooter:A=!0,includeLogs:p=!a,includeInfos:h=p,includeWarnings:C=p,forgettableBufferSize:w=Sot,forgettableNames:v=new Set}){super();this.uncommitted=new Set;this.cacheHitCount=0;this.cacheMissCount=0;this.lastCacheMiss=null;this.warningCount=0;this.errorCount=0;this.startTime=Date.now();this.indent=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.progressStyle=null;this.progressMaxScaledSize=null;this.forgettableLines=[];if(Ow(this,{configuration:r}),this.configuration=r,this.forgettableBufferSize=w,this.forgettableNames=new Set([...v,...Dot]),this.includeNames=n,this.includePrefix=u,this.includeFooter=A,this.includeInfos=h,this.includeWarnings=C,this.json=a,this.stdout=o,r.get("enableProgressBars")&&!a&&o.isTTY&&o.columns>22){let b=r.get("progressBarStyle")||bot;if(!Object.prototype.hasOwnProperty.call(Qx,b))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=Qx[b];let E=12,R=Math.max(0,Math.min(o.columns-E,80));this.progressMaxScaledSize=Math.floor(this.progressStyle.size*R/80)}}static async start(r,o){let a=new this(r),n=process.emitWarning;process.emitWarning=(u,A)=>{if(typeof u!="string"){let h=u;u=h.message,A=A??h.name}let p=typeof A<"u"?`${A}: ${u}`:u;a.reportWarning(0,p)};try{await o(a)}catch(u){a.reportExceptionOnce(u)}finally{await a.finalize(),process.emitWarning=n}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(r){this.cacheHitCount+=1}reportCacheMiss(r,o){this.lastCacheMiss=r,this.cacheMissCount+=1,typeof o<"u"&&!this.configuration.get("preferAggregateCacheInfo")&&this.reportInfo(13,o)}startSectionSync({reportHeader:r,reportFooter:o,skipIfEmpty:a},n){let u={committed:!1,action:()=>{r==null||r()}};a?this.uncommitted.add(u):(u.action(),u.committed=!0);let A=Date.now();try{return n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(u),u.committed&&(o==null||o(p-A))}}async startSectionPromise({reportHeader:r,reportFooter:o,skipIfEmpty:a},n){let u={committed:!1,action:()=>{r==null||r()}};a?this.uncommitted.add(u):(u.action(),u.committed=!0);let A=Date.now();try{return await n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(u),u.committed&&(o==null||o(p-A))}}startTimerImpl(r,o,a){return{cb:typeof o=="function"?o:a,reportHeader:()=>{this.reportInfo(null,`\u250C ${r}`),this.indent+=1,xx!==null&&!this.json&&this.includeInfos&&this.stdout.write(xx.start(r))},reportFooter:A=>{this.indent-=1,xx!==null&&!this.json&&this.includeInfos&&this.stdout.write(xx.end(r)),this.configuration.get("enableTimers")&&A>200?this.reportInfo(null,`\u2514 Completed in ${Kt(this.configuration,A,Bt.DURATION)}`):this.reportInfo(null,"\u2514 Completed")},skipIfEmpty:(typeof o=="function"?{}:o).skipIfEmpty}}startTimerSync(r,o,a){let{cb:n,...u}=this.startTimerImpl(r,o,a);return this.startSectionSync(u,n)}async startTimerPromise(r,o,a){let{cb:n,...u}=this.startTimerImpl(r,o,a);return this.startSectionPromise(u,n)}async startCacheReport(r){let o=this.configuration.get("preferAggregateCacheInfo")?{cacheHitCount:this.cacheHitCount,cacheMissCount:this.cacheMissCount}:null;try{return await r()}catch(a){throw this.reportExceptionOnce(a),a}finally{o!==null&&this.reportCacheChanges(o)}}reportSeparator(){this.indent===0?this.writeLineWithForgettableReset(""):this.reportInfo(null,"")}reportInfo(r,o){if(!this.includeInfos)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"",u=`${this.formatPrefix(n,"blueBright")}${o}`;if(this.json)this.reportJson({type:"info",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:o});else if(this.forgettableNames.has(r))if(this.forgettableLines.push(u),this.forgettableLines.length>this.forgettableBufferSize){for(;this.forgettableLines.length>this.forgettableBufferSize;)this.forgettableLines.shift();this.writeLines(this.forgettableLines,{truncate:!0})}else this.writeLine(u,{truncate:!0});else this.writeLineWithForgettableReset(u)}reportWarning(r,o){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"";this.json?this.reportJson({type:"warning",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:o}):this.writeLineWithForgettableReset(`${this.formatPrefix(n,"yellowBright")}${o}`)}reportError(r,o){this.errorCount+=1,this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"";this.json?this.reportJson({type:"error",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:o}):this.writeLineWithForgettableReset(`${this.formatPrefix(n,"redBright")}${o}`,{truncate:!1})}reportProgress(r){if(this.progressStyle===null)return{...Promise.resolve(),stop:()=>{}};if(r.hasProgress&&r.hasTitle)throw new Error("Unimplemented: Progress bars can't have both progress and titles.");let o=!1,a=Promise.resolve().then(async()=>{let u={progress:r.hasProgress?0:void 0,title:r.hasTitle?"":void 0};this.progress.set(r,{definition:u,lastScaledSize:r.hasProgress?-1:void 0,lastTitle:void 0}),this.refreshProgress({delta:-1});for await(let{progress:A,title:p}of r)o||u.progress===A&&u.title===p||(u.progress=A,u.title=p,this.refreshProgress());n()}),n=()=>{o||(o=!0,this.progress.delete(r),this.refreshProgress({delta:1}))};return{...a,stop:n}}reportJson(r){this.json&&this.writeLineWithForgettableReset(`${JSON.stringify(r)}`)}async finalize(){if(!this.includeFooter)return;let r="";this.errorCount>0?r="Failed with errors":this.warningCount>0?r="Done with warnings":r="Done";let o=Kt(this.configuration,Date.now()-this.startTime,Bt.DURATION),a=this.configuration.get("enableTimers")?`${r} in ${o}`:r;this.errorCount>0?this.reportError(0,a):this.warningCount>0?this.reportWarning(0,a):this.reportInfo(0,a)}writeLine(r,{truncate:o}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(r,{truncate:o})} | 170 | `,end:t=>`section_end:${Math.floor(Date.now()/1e3)}:${t.toLowerCase().replace(/\W+/g,"_")}\r\x1B[0K`}:null,fue=new Date,qot=["iTerm.app","Apple_Terminal","WarpTerminal","vscode"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,jot=t=>t,Ux=jot({patrick:{date:[17,3],chars:["\u{1F340}","\u{1F331}"],size:40},simba:{date:[19,7],chars:["\u{1F981}","\u{1F334}"],size:40},jack:{date:[31,10],chars:["\u{1F383}","\u{1F987}"],size:40},hogsfather:{date:[31,12],chars:["\u{1F389}","\u{1F384}"],size:40},default:{chars:["=","-"],size:80}}),Got=qot&&Object.keys(Ux).find(t=>{let e=Ux[t];return!(e.date&&(e.date[0]!==fue.getDate()||e.date[1]!==fue.getMonth()+1))})||"default";Ct=class extends Js{constructor({configuration:r,stdout:o,json:a=!1,includeNames:n=!0,includePrefix:u=!0,includeFooter:A=!0,includeLogs:p=!a,includeInfos:h=p,includeWarnings:C=p,forgettableBufferSize:w=Hot,forgettableNames:v=new Set}){super();this.uncommitted=new Set;this.cacheHitCount=0;this.cacheMissCount=0;this.lastCacheMiss=null;this.warningCount=0;this.errors=[];this.startTime=Date.now();this.indent=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.progressStyle=null;this.progressMaxScaledSize=null;this.forgettableLines=[];if(qw(this,{configuration:r}),this.configuration=r,this.forgettableBufferSize=w,this.forgettableNames=new Set([...v,..._ot]),this.includeNames=n,this.includePrefix=u,this.includeFooter=A,this.includeInfos=h,this.includeWarnings=C,this.json=a,this.stdout=o,r.get("enableProgressBars")&&!a&&o.isTTY&&o.columns>22){let b=r.get("progressBarStyle")||Got;if(!Object.prototype.hasOwnProperty.call(Ux,b))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=Ux[b];let E=12,R=Math.max(0,Math.min(o.columns-E,80));this.progressMaxScaledSize=Math.floor(this.progressStyle.size*R/80)}}static async start(r,o){let a=new this(r),n=process.emitWarning;process.emitWarning=(u,A)=>{if(typeof u!="string"){let h=u;u=h.message,A=A??h.name}let p=typeof A<"u"?`${A}: ${u}`:u;a.reportWarning(0,p)};try{await o(a)}catch(u){a.reportExceptionOnce(u)}finally{await a.finalize(),process.emitWarning=n}return a}hasErrors(){return this.errors.length>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(r){this.cacheHitCount+=1}reportCacheMiss(r,o){this.lastCacheMiss=r,this.cacheMissCount+=1,typeof o<"u"&&!this.configuration.get("preferAggregateCacheInfo")&&this.reportInfo(13,o)}startSectionSync({reportHeader:r,reportFooter:o,skipIfEmpty:a},n){let u={committed:!1,action:()=>{r==null||r()}};a?this.uncommitted.add(u):(u.action(),u.committed=!0);let A=Date.now();try{return n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(u),u.committed&&(o==null||o(p-A))}}async startSectionPromise({reportHeader:r,reportFooter:o,skipIfEmpty:a},n){let u={committed:!1,action:()=>{r==null||r()}};a?this.uncommitted.add(u):(u.action(),u.committed=!0);let A=Date.now();try{return await n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(u),u.committed&&(o==null||o(p-A))}}startTimerImpl(r,o,a){return{cb:typeof o=="function"?o:a,reportHeader:()=>{this.reportInfo(null,`\u250C ${r}`),this.indent+=1,Ox!==null&&!this.json&&this.includeInfos&&this.stdout.write(Ox.start(r))},reportFooter:A=>{if(this.indent-=1,Ox!==null&&!this.json&&this.includeInfos){this.stdout.write(Ox.end(r));for(let[p,h]of this.errors)this.reportErrorImpl(p,h)}this.configuration.get("enableTimers")&&A>200?this.reportInfo(null,`\u2514 Completed in ${Kt(this.configuration,A,Bt.DURATION)}`):this.reportInfo(null,"\u2514 Completed")},skipIfEmpty:(typeof o=="function"?{}:o).skipIfEmpty}}startTimerSync(r,o,a){let{cb:n,...u}=this.startTimerImpl(r,o,a);return this.startSectionSync(u,n)}async startTimerPromise(r,o,a){let{cb:n,...u}=this.startTimerImpl(r,o,a);return this.startSectionPromise(u,n)}async startCacheReport(r){let o=this.configuration.get("preferAggregateCacheInfo")?{cacheHitCount:this.cacheHitCount,cacheMissCount:this.cacheMissCount}:null;try{return await r()}catch(a){throw this.reportExceptionOnce(a),a}finally{o!==null&&this.reportCacheChanges(o)}}reportSeparator(){this.indent===0?this.writeLineWithForgettableReset(""):this.reportInfo(null,"")}reportInfo(r,o){if(!this.includeInfos)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"",u=`${this.formatPrefix(n,"blueBright")}${o}`;if(this.json)this.reportJson({type:"info",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:o});else if(this.forgettableNames.has(r))if(this.forgettableLines.push(u),this.forgettableLines.length>this.forgettableBufferSize){for(;this.forgettableLines.length>this.forgettableBufferSize;)this.forgettableLines.shift();this.writeLines(this.forgettableLines,{truncate:!0})}else this.writeLine(u,{truncate:!0});else this.writeLineWithForgettableReset(u)}reportWarning(r,o){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"";this.json?this.reportJson({type:"warning",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:o}):this.writeLineWithForgettableReset(`${this.formatPrefix(n,"yellowBright")}${o}`)}reportError(r,o){this.errors.push([r,o]),this.reportErrorImpl(r,o)}reportErrorImpl(r,o){this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:"";this.json?this.reportJson({type:"error",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:o}):this.writeLineWithForgettableReset(`${this.formatPrefix(n,"redBright")}${o}`,{truncate:!1})}reportProgress(r){if(this.progressStyle===null)return{...Promise.resolve(),stop:()=>{}};if(r.hasProgress&&r.hasTitle)throw new Error("Unimplemented: Progress bars can't have both progress and titles.");let o=!1,a=Promise.resolve().then(async()=>{let u={progress:r.hasProgress?0:void 0,title:r.hasTitle?"":void 0};this.progress.set(r,{definition:u,lastScaledSize:r.hasProgress?-1:void 0,lastTitle:void 0}),this.refreshProgress({delta:-1});for await(let{progress:A,title:p}of r)o||u.progress===A&&u.title===p||(u.progress=A,u.title=p,this.refreshProgress());n()}),n=()=>{o||(o=!0,this.progress.delete(r),this.refreshProgress({delta:1}))};return{...a,stop:n}}reportJson(r){this.json&&this.writeLineWithForgettableReset(`${JSON.stringify(r)}`)}async finalize(){if(!this.includeFooter)return;let r="";this.errors.length>0?r="Failed with errors":this.warningCount>0?r="Done with warnings":r="Done";let o=Kt(this.configuration,Date.now()-this.startTime,Bt.DURATION),a=this.configuration.get("enableTimers")?`${r} in ${o}`:r;this.errors.length>0?this.reportError(0,a):this.warningCount>0?this.reportWarning(0,a):this.reportInfo(0,a)}writeLine(r,{truncate:o}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(r,{truncate:o})} |
171 | `),this.writeProgress()}writeLineWithForgettableReset(r,{truncate:o}={}){this.forgettableLines=[],this.writeLine(r,{truncate:o})}writeLines(r,{truncate:o}={}){this.clearProgress({delta:r.length});for(let a of r)this.stdout.write(`${this.truncate(a,{truncate:o})} | 171 | `),this.writeProgress()}writeLineWithForgettableReset(r,{truncate:o}={}){this.forgettableLines=[],this.writeLine(r,{truncate:o})}writeLines(r,{truncate:o}={}){this.clearProgress({delta:r.length});for(let a of r)this.stdout.write(`${this.truncate(a,{truncate:o})} |
172 | `);this.writeProgress()}reportCacheChanges({cacheHitCount:r,cacheMissCount:o}){let a=this.cacheHitCount-r,n=this.cacheMissCount-o;if(a===0&&n===0)return;let u="";this.cacheHitCount>1?u+=`${this.cacheHitCount} packages were already cached`:this.cacheHitCount===1?u+=" - one package was already cached":u+="No packages were cached",this.cacheHitCount>0?this.cacheMissCount>1?u+=`, ${this.cacheMissCount} had to be fetched`:this.cacheMissCount===1&&(u+=`, one had to be fetched (${kr(this.configuration,this.lastCacheMiss)})`):this.cacheMissCount>1?u+=` - ${this.cacheMissCount} packages had to be fetched`:this.cacheMissCount===1&&(u+=` - one package had to be fetched (${kr(this.configuration,this.lastCacheMiss)})`),this.reportInfo(13,u)}commit(){let r=this.uncommitted;this.uncommitted=new Set;for(let o of r)o.committed=!0,o.action()}clearProgress({delta:r=0,clear:o=!1}){this.progressStyle!==null&&this.progress.size+r>0&&(this.stdout.write(`\x1B[${this.progress.size+r}A`),(r>0||o)&&this.stdout.write("\x1B[0J"))}writeProgress(){if(this.progressStyle===null||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let r=Date.now();r-this.progressTime>nue&&(this.progressFrame=(this.progressFrame+1)%rue.length,this.progressTime=r);let o=rue[this.progressFrame];for(let a of this.progress.values()){let n="";if(typeof a.lastScaledSize<"u"){let h=this.progressStyle.chars[0].repeat(a.lastScaledSize),C=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-a.lastScaledSize);n=` ${h}${C}`}let u=this.formatName(null),A=u?`${u}: `:"",p=a.definition.title?` ${a.definition.title}`:"";this.stdout.write(`${Kt(this.configuration,"\u27A4","blueBright")} ${A}${o}${n}${p} | 172 | `);this.writeProgress()}reportCacheChanges({cacheHitCount:r,cacheMissCount:o}){let a=this.cacheHitCount-r,n=this.cacheMissCount-o;if(a===0&&n===0)return;let u="";this.cacheHitCount>1?u+=`${this.cacheHitCount} packages were already cached`:this.cacheHitCount===1?u+=" - one package was already cached":u+="No packages were cached",this.cacheHitCount>0?this.cacheMissCount>1?u+=`, ${this.cacheMissCount} had to be fetched`:this.cacheMissCount===1&&(u+=`, one had to be fetched (${kr(this.configuration,this.lastCacheMiss)})`):this.cacheMissCount>1?u+=` - ${this.cacheMissCount} packages had to be fetched`:this.cacheMissCount===1&&(u+=` - one package had to be fetched (${kr(this.configuration,this.lastCacheMiss)})`),this.reportInfo(13,u)}commit(){let r=this.uncommitted;this.uncommitted=new Set;for(let o of r)o.committed=!0,o.action()}clearProgress({delta:r=0,clear:o=!1}){this.progressStyle!==null&&this.progress.size+r>0&&(this.stdout.write(`\x1B[${this.progress.size+r}A`),(r>0||o)&&this.stdout.write("\x1B[0J"))}writeProgress(){if(this.progressStyle===null||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let r=Date.now();r-this.progressTime>Aue&&(this.progressFrame=(this.progressFrame+1)%uue.length,this.progressTime=r);let o=uue[this.progressFrame];for(let a of this.progress.values()){let n="";if(typeof a.lastScaledSize<"u"){let h=this.progressStyle.chars[0].repeat(a.lastScaledSize),C=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-a.lastScaledSize);n=` ${h}${C}`}let u=this.formatName(null),A=u?`${u}: `:"",p=a.definition.title?` ${a.definition.title}`:"";this.stdout.write(`${Kt(this.configuration,"\u27A4","blueBright")} ${A}${o}${n}${p} |
173 | `)}this.progressTimeout=setTimeout(()=>{this.refreshProgress({force:!0})},nue)}refreshProgress({delta:r=0,force:o=!1}={}){let a=!1,n=!1;if(o||this.progress.size===0)a=!0;else for(let u of this.progress.values()){let A=typeof u.definition.progress<"u"?Math.trunc(this.progressMaxScaledSize*u.definition.progress):void 0,p=u.lastScaledSize;u.lastScaledSize=A;let h=u.lastTitle;if(u.lastTitle=u.definition.title,A!==p||(n=h!==u.definition.title)){a=!0;break}}a&&(this.clearProgress({delta:r,clear:n}),this.writeProgress())}truncate(r,{truncate:o}={}){return this.progressStyle===null&&(o=!1),typeof o>"u"&&(o=this.configuration.get("preferTruncatedLines")),o&&(r=(0,sue.default)(r,0,this.stdout.columns-1)),r}formatName(r){return this.includeNames?oue(r,{configuration:this.configuration,json:this.json}):""}formatPrefix(r,o){return this.includePrefix?`${Kt(this.configuration,"\u27A4",o)} ${r}${this.formatIndent()}`:""}formatNameWithHyperlink(r){return this.includeNames?CU(r,{configuration:this.configuration,json:this.json}):""}formatIndent(){return"\u2502 ".repeat(this.indent)}}});var On,IU=dt(()=>{On="4.0.0-rc.37"});var sn={};Yt(sn,{PackageManager:()=>cue,detectPackageManager:()=>uue,executePackageAccessibleBinary:()=>gue,executePackageScript:()=>Fx,executePackageShellcode:()=>wU,executeWorkspaceAccessibleBinary:()=>Lot,executeWorkspaceLifecycleScript:()=>pue,executeWorkspaceScript:()=>fue,getPackageAccessibleBinaries:()=>Rx,getWorkspaceAccessibleBinaries:()=>hue,hasPackageScript:()=>Rot,hasWorkspaceScript:()=>BU,makeScriptEnv:()=>I1,maybeExecuteWorkspaceLifecycleScript:()=>Not,prepareExternalProject:()=>Fot});async function Tf(t,e,r,o=[]){if(process.platform==="win32"){let a=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @"${r}" ${o.map(n=>`"${n.replace('"','""')}"`).join(" ")} %*`;await ae.writeFilePromise(V.format({dir:t,name:e,ext:".cmd"}),a)}await ae.writeFilePromise(V.join(t,e),`#!/bin/sh | 173 | `)}this.progressTimeout=setTimeout(()=>{this.refreshProgress({force:!0})},Aue)}refreshProgress({delta:r=0,force:o=!1}={}){let a=!1,n=!1;if(o||this.progress.size===0)a=!0;else for(let u of this.progress.values()){let A=typeof u.definition.progress<"u"?Math.trunc(this.progressMaxScaledSize*u.definition.progress):void 0,p=u.lastScaledSize;u.lastScaledSize=A;let h=u.lastTitle;if(u.lastTitle=u.definition.title,A!==p||(n=h!==u.definition.title)){a=!0;break}}a&&(this.clearProgress({delta:r,clear:n}),this.writeProgress())}truncate(r,{truncate:o}={}){return this.progressStyle===null&&(o=!1),typeof o>"u"&&(o=this.configuration.get("preferTruncatedLines")),o&&(r=(0,pue.default)(r,0,this.stdout.columns-1)),r}formatName(r){return this.includeNames?hue(r,{configuration:this.configuration,json:this.json}):""}formatPrefix(r,o){return this.includePrefix?`${Kt(this.configuration,"\u27A4",o)} ${r}${this.formatIndent()}`:""}formatNameWithHyperlink(r){return this.includeNames?BU(r,{configuration:this.configuration,json:this.json}):""}formatIndent(){return"\u2502 ".repeat(this.indent)}}});var On,vU=dt(()=>{On="4.0.0-rc.45"});var sn={};Yt(sn,{PackageManager:()=>mue,detectPackageManager:()=>yue,executePackageAccessibleBinary:()=>Bue,executePackageScript:()=>Hx,executePackageShellcode:()=>DU,executeWorkspaceAccessibleBinary:()=>Xot,executeWorkspaceLifecycleScript:()=>Iue,executeWorkspaceScript:()=>Cue,getPackageAccessibleBinaries:()=>qx,getWorkspaceAccessibleBinaries:()=>wue,hasPackageScript:()=>Vot,hasWorkspaceScript:()=>SU,makeScriptEnv:()=>P1,maybeExecuteWorkspaceLifecycleScript:()=>zot,prepareExternalProject:()=>Kot});async function Mf(t,e,r,o=[]){if(process.platform==="win32"){let a=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @"${r}" ${o.map(n=>`"${n.replace('"','""')}"`).join(" ")} %*`;await oe.writeFilePromise(J.format({dir:t,name:e,ext:".cmd"}),a)}await oe.writeFilePromise(J.join(t,e),`#!/bin/sh |
174 | exec "${r}" ${o.map(a=>`'${a.replace(/'/g,`'"'"'`)}'`).join(" ")} "$@" | 174 | exec "${r}" ${o.map(a=>`'${a.replace(/'/g,`'"'"'`)}'`).join(" ")} "$@" |
175 | `,{mode:493})}async function uue(t){let e=await Nt.tryFind(t);if(e!=null&&e.packageManager){let o=vP(e.packageManager);if(o!=null&&o.name){let a=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[n]=o.reference.split(".");switch(o.name){case"yarn":return{packageManagerField:!0,packageManager:Number(n)===1?"Yarn Classic":"Yarn",reason:a};case"npm":return{packageManagerField:!0,packageManager:"npm",reason:a};case"pnpm":return{packageManagerField:!0,packageManager:"pnpm",reason:a}}}}let r;try{r=await ae.readFilePromise(V.join(t,Lr.lockfile),"utf8")}catch{}return r!==void 0?r.match(/^__metadata:$/m)?{packageManager:"Yarn",reason:'"__metadata" key found in yarn.lock'}:{packageManager:"Yarn Classic",reason:'"__metadata" key not found in yarn.lock, must be a Yarn classic lockfile'}:ae.existsSync(V.join(t,"package-lock.json"))?{packageManager:"npm",reason:`found npm's "package-lock.json" lockfile`}:ae.existsSync(V.join(t,"pnpm-lock.yaml"))?{packageManager:"pnpm",reason:`found pnpm's "pnpm-lock.yaml" lockfile`}:null}async function I1({project:t,locator:e,binFolder:r,ignoreCorepack:o,lifecycleScript:a}){let n={};for(let[h,C]of Object.entries(process.env))typeof C<"u"&&(n[h.toLowerCase()!=="path"?h:"PATH"]=C);let u=Ae.fromPortablePath(r);n.BERRY_BIN_FOLDER=Ae.fromPortablePath(u);let A=process.env.COREPACK_ROOT&&!o?Ae.join(process.env.COREPACK_ROOT,"dist/yarn.js"):process.argv[1];if(await Promise.all([Tf(r,"node",process.execPath),...On!==null?[Tf(r,"run",process.execPath,[A,"run"]),Tf(r,"yarn",process.execPath,[A]),Tf(r,"yarnpkg",process.execPath,[A]),Tf(r,"node-gyp",process.execPath,[A,"run","--top-level","node-gyp"])]:[]]),t&&(n.INIT_CWD=Ae.cwd(),n.PROJECT_CWD=Ae.fromPortablePath(t.cwd)),n.PATH=n.PATH?`${u}${Ae.delimiter}${n.PATH}`:`${u}`,n.npm_execpath=`${u}${Ae.sep}yarn`,n.npm_node_execpath=`${u}${Ae.sep}node`,e){if(!t)throw new Error("Assertion failed: Missing project");let h=t.tryWorkspaceByLocator(e),C=h?h.manifest.version??"":t.storedPackages.get(e.locatorHash).version??"";n.npm_package_name=nn(e),n.npm_package_version=C;let w;if(h)w=h.cwd;else{let v=t.storedPackages.get(e.locatorHash);if(!v)throw new Error(`Package for ${kr(t.configuration,e)} not found in the project`);let b=t.configuration.getLinkers(),E={project:t,report:new Ct({stdout:new c0.PassThrough,configuration:t.configuration})},R=b.find(L=>L.supportsPackage(v,E));if(!R)throw new Error(`The package ${kr(t.configuration,v)} isn't supported by any of the available linkers`);w=await R.findPackageLocation(v,E)}n.npm_package_json=Ae.fromPortablePath(V.join(w,Lr.manifest))}let p=On!==null?`yarn/${On}`:`yarn/${Kp("@yarnpkg/core").version}-core`;return n.npm_config_user_agent=`${p} npm/? node/${process.version} ${process.platform} ${process.arch}`,a&&(n.npm_lifecycle_event=a),t&&await t.configuration.triggerHook(h=>h.setupScriptEnvironment,t,n,async(h,C,w)=>await Tf(r,Li(h),C,w)),n}async function Fot(t,e,{configuration:r,report:o,workspace:a=null,locator:n=null}){await kot(async()=>{await ae.mktempPromise(async u=>{let A=V.join(u,"pack.log"),p=null,{stdout:h,stderr:C}=r.getSubprocessStreams(A,{prefix:Ae.fromPortablePath(t),report:o}),w=n&&qc(n)?jw(n):n,v=w?Wl(w):"an external project";h.write(`Packing ${v} from sources | 175 | `,{mode:493})}async function yue(t){let e=await Nt.tryFind(t);if(e!=null&&e.packageManager){let o=RP(e.packageManager);if(o!=null&&o.name){let a=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[n]=o.reference.split(".");switch(o.name){case"yarn":return{packageManagerField:!0,packageManager:Number(n)===1?"Yarn Classic":"Yarn",reason:a};case"npm":return{packageManagerField:!0,packageManager:"npm",reason:a};case"pnpm":return{packageManagerField:!0,packageManager:"pnpm",reason:a}}}}let r;try{r=await oe.readFilePromise(J.join(t,Lr.lockfile),"utf8")}catch{}return r!==void 0?r.match(/^__metadata:$/m)?{packageManager:"Yarn",reason:'"__metadata" key found in yarn.lock'}:{packageManager:"Yarn Classic",reason:'"__metadata" key not found in yarn.lock, must be a Yarn classic lockfile'}:oe.existsSync(J.join(t,"package-lock.json"))?{packageManager:"npm",reason:`found npm's "package-lock.json" lockfile`}:oe.existsSync(J.join(t,"pnpm-lock.yaml"))?{packageManager:"pnpm",reason:`found pnpm's "pnpm-lock.yaml" lockfile`}:null}async function P1({project:t,locator:e,binFolder:r,ignoreCorepack:o,lifecycleScript:a}){let n={};for(let[h,C]of Object.entries(process.env))typeof C<"u"&&(n[h.toLowerCase()!=="path"?h:"PATH"]=C);let u=ue.fromPortablePath(r);n.BERRY_BIN_FOLDER=ue.fromPortablePath(u);let A=process.env.COREPACK_ROOT&&!o?ue.join(process.env.COREPACK_ROOT,"dist/yarn.js"):process.argv[1];if(await Promise.all([Mf(r,"node",process.execPath),...On!==null?[Mf(r,"run",process.execPath,[A,"run"]),Mf(r,"yarn",process.execPath,[A]),Mf(r,"yarnpkg",process.execPath,[A]),Mf(r,"node-gyp",process.execPath,[A,"run","--top-level","node-gyp"])]:[]]),t&&(n.INIT_CWD=ue.cwd(),n.PROJECT_CWD=ue.fromPortablePath(t.cwd)),n.PATH=n.PATH?`${u}${ue.delimiter}${n.PATH}`:`${u}`,n.npm_execpath=`${u}${ue.sep}yarn`,n.npm_node_execpath=`${u}${ue.sep}node`,e){if(!t)throw new Error("Assertion failed: Missing project");let h=t.tryWorkspaceByLocator(e),C=h?h.manifest.version??"":t.storedPackages.get(e.locatorHash).version??"";n.npm_package_name=nn(e),n.npm_package_version=C;let w;if(h)w=h.cwd;else{let v=t.storedPackages.get(e.locatorHash);if(!v)throw new Error(`Package for ${kr(t.configuration,e)} not found in the project`);let b=t.configuration.getLinkers(),E={project:t,report:new Ct({stdout:new A0.PassThrough,configuration:t.configuration})},R=b.find(L=>L.supportsPackage(v,E));if(!R)throw new Error(`The package ${kr(t.configuration,v)} isn't supported by any of the available linkers`);w=await R.findPackageLocation(v,E)}n.npm_package_json=ue.fromPortablePath(J.join(w,Lr.manifest))}let p=On!==null?`yarn/${On}`:`yarn/${zp("@yarnpkg/core").version}-core`;return n.npm_config_user_agent=`${p} npm/? node/${process.version} ${process.platform} ${process.arch}`,a&&(n.npm_lifecycle_event=a),t&&await t.configuration.triggerHook(h=>h.setupScriptEnvironment,t,n,async(h,C,w)=>await Mf(r,Li(h),C,w)),n}async function Kot(t,e,{configuration:r,report:o,workspace:a=null,locator:n=null}){await Yot(async()=>{await oe.mktempPromise(async u=>{let A=J.join(u,"pack.log"),p=null,{stdout:h,stderr:C}=r.getSubprocessStreams(A,{prefix:ue.fromPortablePath(t),report:o}),w=n&&Yc(n)?Vw(n):n,v=w?Jl(w):"an external project";h.write(`Packing ${v} from sources |
176 | `);let b=await uue(t),E;b!==null?(h.write(`Using ${b.packageManager} for bootstrap. Reason: ${b.reason} | 176 | `);let b=await yue(t),E;b!==null?(h.write(`Using ${b.packageManager} for bootstrap. Reason: ${b.reason} |
177 | 177 | ||
178 | `),E=b.packageManager):(h.write(`No package manager configuration detected; defaulting to Yarn | 178 | `),E=b.packageManager):(h.write(`No package manager configuration detected; defaulting to Yarn |
179 | 179 | ||
180 | `),E="Yarn");let R=E==="Yarn"&&!(b!=null&&b.packageManagerField);await ae.mktempPromise(async L=>{let _=await I1({binFolder:L,ignoreCorepack:R}),re=new Map([["Yarn Classic",async()=>{let pe=a!==null?["workspace",a]:[],he=V.join(t,Lr.manifest),ve=await ae.readFilePromise(he),ge=await iA(process.execPath,[process.argv[1],"set","version","classic","--only-if-needed","--yarn-path"],{cwd:t,env:_,stdin:p,stdout:h,stderr:C,end:1});if(ge.code!==0)return ge.code;await ae.writeFilePromise(he,ve),await ae.appendFilePromise(V.join(t,".npmignore"),`/.yarn | 180 | `),E="Yarn");let R=E==="Yarn"&&!(b!=null&&b.packageManagerField);await oe.mktempPromise(async L=>{let _=await P1({binFolder:L,ignoreCorepack:R}),re=new Map([["Yarn Classic",async()=>{let he=a!==null?["workspace",a]:[],pe=J.join(t,Lr.manifest),De=await oe.readFilePromise(pe),ge=await sA(process.execPath,[process.argv[1],"set","version","classic","--only-if-needed","--yarn-path"],{cwd:t,env:_,stdin:p,stdout:h,stderr:C,end:1});if(ge.code!==0)return ge.code;await oe.writeFilePromise(pe,De),await oe.appendFilePromise(J.join(t,".npmignore"),`/.yarn |
181 | `),h.write(` | 181 | `),h.write(` |
182 | `),delete _.NODE_ENV;let le=await iA("yarn",["install"],{cwd:t,env:_,stdin:p,stdout:h,stderr:C,end:1});if(le.code!==0)return le.code;h.write(` | 182 | `),delete _.NODE_ENV;let le=await sA("yarn",["install"],{cwd:t,env:_,stdin:p,stdout:h,stderr:C,end:1});if(le.code!==0)return le.code;h.write(` |
183 | `);let Pe=await iA("yarn",[...pe,"pack","--filename",Ae.fromPortablePath(e)],{cwd:t,env:_,stdin:p,stdout:h,stderr:C});return Pe.code!==0?Pe.code:0}],["Yarn",async()=>{let pe=a!==null?["workspace",a]:[];_.YARN_ENABLE_INLINE_BUILDS="1";let he=V.join(t,Lr.lockfile);await ae.existsPromise(he)||await ae.writeFilePromise(he,"");let ve=await iA("yarn",[...pe,"pack","--install-if-needed","--filename",Ae.fromPortablePath(e)],{cwd:t,env:_,stdin:p,stdout:h,stderr:C});return ve.code!==0?ve.code:0}],["npm",async()=>{if(a!==null){let De=new c0.PassThrough,Ee=Gy(De);De.pipe(h,{end:!1});let de=await iA("npm",["--version"],{cwd:t,env:_,stdin:p,stdout:De,stderr:C,end:0});if(De.end(),de.code!==0)return h.end(),C.end(),de.code;let ne=(await Ee).toString().trim();if(!Bd(ne,">=7.x")){let Z=rA(null,"npm"),me=mn(Z,ne),be=mn(Z,">=7.x");throw new Error(`Workspaces aren't supported by ${Ln(r,me)}; please upgrade to ${Ln(r,be)} (npm has been detected as the primary package manager for ${Kt(r,t,Bt.PATH)})`)}}let pe=a!==null?["--workspace",a]:[];delete _.npm_config_user_agent,delete _.npm_config_production,delete _.NPM_CONFIG_PRODUCTION,delete _.NODE_ENV;let he=await iA("npm",["install"],{cwd:t,env:_,stdin:p,stdout:h,stderr:C,end:1});if(he.code!==0)return he.code;let ve=new c0.PassThrough,ge=Gy(ve);ve.pipe(h);let le=await iA("npm",["pack","--silent",...pe],{cwd:t,env:_,stdin:p,stdout:ve,stderr:C});if(le.code!==0)return le.code;let Pe=(await ge).toString().trim().replace(/^.*\n/s,""),g=V.resolve(t,Ae.toPortablePath(Pe));return await ae.renamePromise(g,e),0}]]).get(E);if(typeof re>"u")throw new Error("Assertion failed: Unsupported workflow");let oe=await re();if(!(oe===0||typeof oe>"u"))throw ae.detachTemp(u),new Jt(58,`Packing the package failed (exit code ${oe}, logs can be found here: ${Kt(r,A,Bt.PATH)})`)})})})}async function Rot(t,e,{project:r}){let o=r.tryWorkspaceByLocator(t);if(o!==null)return BU(o,e);let a=r.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${kr(r.configuration,t)} not found in the project`);return await Ll.openPromise(async n=>{let u=r.configuration,A=r.configuration.getLinkers(),p={project:r,report:new Ct({stdout:new c0.PassThrough,configuration:u})},h=A.find(b=>b.supportsPackage(a,p));if(!h)throw new Error(`The package ${kr(r.configuration,a)} isn't supported by any of the available linkers`);let C=await h.findPackageLocation(a,p),w=new An(C,{baseFs:n});return(await Nt.find(wt.dot,{baseFs:w})).scripts.has(e)})}async function Fx(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A}){return await ae.mktempPromise(async p=>{let{manifest:h,env:C,cwd:w}=await Aue(t,{project:a,binFolder:p,cwd:o,lifecycleScript:e}),v=h.scripts.get(e);if(typeof v>"u")return 1;let b=async()=>await PE(v,r,{cwd:w,env:C,stdin:n,stdout:u,stderr:A});return await(await a.configuration.reduceHook(R=>R.wrapScriptExecution,b,a,t,e,{script:v,args:r,cwd:w,env:C,stdin:n,stdout:u,stderr:A}))()})}async function wU(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A}){return await ae.mktempPromise(async p=>{let{env:h,cwd:C}=await Aue(t,{project:a,binFolder:p,cwd:o});return await PE(e,r,{cwd:C,env:h,stdin:n,stdout:u,stderr:A})})}async function Tot(t,{binFolder:e,cwd:r,lifecycleScript:o}){let a=await I1({project:t.project,locator:t.anchoredLocator,binFolder:e,lifecycleScript:o});return await Promise.all(Array.from(await hue(t),([n,[,u]])=>Tf(e,Li(n),process.execPath,[u]))),typeof r>"u"&&(r=V.dirname(await ae.realpathPromise(V.join(t.cwd,"package.json")))),{manifest:t.manifest,binFolder:e,env:a,cwd:r}}async function Aue(t,{project:e,binFolder:r,cwd:o,lifecycleScript:a}){let n=e.tryWorkspaceByLocator(t);if(n!==null)return Tot(n,{binFolder:r,cwd:o,lifecycleScript:a});let u=e.storedPackages.get(t.locatorHash);if(!u)throw new Error(`Package for ${kr(e.configuration,t)} not found in the project`);return await Ll.openPromise(async A=>{let p=e.configuration,h=e.configuration.getLinkers(),C={project:e,report:new Ct({stdout:new c0.PassThrough,configuration:p})},w=h.find(L=>L.supportsPackage(u,C));if(!w)throw new Error(`The package ${kr(e.configuration,u)} isn't supported by any of the available linkers`);let v=await I1({project:e,locator:t,binFolder:r,lifecycleScript:a});await Promise.all(Array.from(await Rx(t,{project:e}),([L,[,_]])=>Tf(r,Li(L),process.execPath,[_])));let b=await w.findPackageLocation(u,C),E=new An(b,{baseFs:A}),R=await Nt.find(wt.dot,{baseFs:E});return typeof o>"u"&&(o=b),{manifest:R,binFolder:r,env:v,cwd:o}})}async function fue(t,e,r,{cwd:o,stdin:a,stdout:n,stderr:u}){return await Fx(t.anchoredLocator,e,r,{cwd:o,project:t.project,stdin:a,stdout:n,stderr:u})}function BU(t,e){return t.manifest.scripts.has(e)}async function pue(t,e,{cwd:r,report:o}){let{configuration:a}=t.project,n=null;await ae.mktempPromise(async u=>{let A=V.join(u,`${e}.log`),p=`# This file contains the result of Yarn calling the "${e}" lifecycle script inside a workspace ("${Ae.fromPortablePath(t.cwd)}") | 183 | `);let Pe=await sA("yarn",[...he,"pack","--filename",ue.fromPortablePath(e)],{cwd:t,env:_,stdin:p,stdout:h,stderr:C});return Pe.code!==0?Pe.code:0}],["Yarn",async()=>{let he=a!==null?["workspace",a]:[];_.YARN_ENABLE_INLINE_BUILDS="1";let pe=J.join(t,Lr.lockfile);await oe.existsPromise(pe)||await oe.writeFilePromise(pe,"");let De=await sA("yarn",[...he,"pack","--install-if-needed","--filename",ue.fromPortablePath(e)],{cwd:t,env:_,stdin:p,stdout:h,stderr:C});return De.code!==0?De.code:0}],["npm",async()=>{if(a!==null){let ve=new A0.PassThrough,Ee=Jy(ve);ve.pipe(h,{end:!1});let de=await sA("npm",["--version"],{cwd:t,env:_,stdin:p,stdout:ve,stderr:C,end:0});if(ve.end(),de.code!==0)return h.end(),C.end(),de.code;let ne=(await Ee).toString().trim();if(!Pd(ne,">=7.x")){let Z=nA(null,"npm"),me=mn(Z,ne),be=mn(Z,">=7.x");throw new Error(`Workspaces aren't supported by ${Ln(r,me)}; please upgrade to ${Ln(r,be)} (npm has been detected as the primary package manager for ${Kt(r,t,Bt.PATH)})`)}}let he=a!==null?["--workspace",a]:[];delete _.npm_config_user_agent,delete _.npm_config_production,delete _.NPM_CONFIG_PRODUCTION,delete _.NODE_ENV;let pe=await sA("npm",["install"],{cwd:t,env:_,stdin:p,stdout:h,stderr:C,end:1});if(pe.code!==0)return pe.code;let De=new A0.PassThrough,ge=Jy(De);De.pipe(h);let le=await sA("npm",["pack","--silent",...he],{cwd:t,env:_,stdin:p,stdout:De,stderr:C});if(le.code!==0)return le.code;let Pe=(await ge).toString().trim().replace(/^.*\n/s,""),g=J.resolve(t,ue.toPortablePath(Pe));return await oe.renamePromise(g,e),0}]]).get(E);if(typeof re>"u")throw new Error("Assertion failed: Unsupported workflow");let ae=await re();if(!(ae===0||typeof ae>"u"))throw oe.detachTemp(u),new Vt(58,`Packing the package failed (exit code ${ae}, logs can be found here: ${Kt(r,A,Bt.PATH)})`)})})})}async function Vot(t,e,{project:r}){let o=r.tryWorkspaceByLocator(t);if(o!==null)return SU(o,e);let a=r.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${kr(r.configuration,t)} not found in the project`);return await _l.openPromise(async n=>{let u=r.configuration,A=r.configuration.getLinkers(),p={project:r,report:new Ct({stdout:new A0.PassThrough,configuration:u})},h=A.find(b=>b.supportsPackage(a,p));if(!h)throw new Error(`The package ${kr(r.configuration,a)} isn't supported by any of the available linkers`);let C=await h.findPackageLocation(a,p),w=new An(C,{baseFs:n});return(await Nt.find(wt.dot,{baseFs:w})).scripts.has(e)})}async function Hx(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A}){return await oe.mktempPromise(async p=>{let{manifest:h,env:C,cwd:w}=await Eue(t,{project:a,binFolder:p,cwd:o,lifecycleScript:e}),v=h.scripts.get(e);if(typeof v>"u")return 1;let b=async()=>await FE(v,r,{cwd:w,env:C,stdin:n,stdout:u,stderr:A});return await(await a.configuration.reduceHook(R=>R.wrapScriptExecution,b,a,t,e,{script:v,args:r,cwd:w,env:C,stdin:n,stdout:u,stderr:A}))()})}async function DU(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A}){return await oe.mktempPromise(async p=>{let{env:h,cwd:C}=await Eue(t,{project:a,binFolder:p,cwd:o});return await FE(e,r,{cwd:C,env:h,stdin:n,stdout:u,stderr:A})})}async function Jot(t,{binFolder:e,cwd:r,lifecycleScript:o}){let a=await P1({project:t.project,locator:t.anchoredLocator,binFolder:e,lifecycleScript:o});return await Promise.all(Array.from(await wue(t),([n,[,u]])=>Mf(e,Li(n),process.execPath,[u]))),typeof r>"u"&&(r=J.dirname(await oe.realpathPromise(J.join(t.cwd,"package.json")))),{manifest:t.manifest,binFolder:e,env:a,cwd:r}}async function Eue(t,{project:e,binFolder:r,cwd:o,lifecycleScript:a}){let n=e.tryWorkspaceByLocator(t);if(n!==null)return Jot(n,{binFolder:r,cwd:o,lifecycleScript:a});let u=e.storedPackages.get(t.locatorHash);if(!u)throw new Error(`Package for ${kr(e.configuration,t)} not found in the project`);return await _l.openPromise(async A=>{let p=e.configuration,h=e.configuration.getLinkers(),C={project:e,report:new Ct({stdout:new A0.PassThrough,configuration:p})},w=h.find(L=>L.supportsPackage(u,C));if(!w)throw new Error(`The package ${kr(e.configuration,u)} isn't supported by any of the available linkers`);let v=await P1({project:e,locator:t,binFolder:r,lifecycleScript:a});await Promise.all(Array.from(await qx(t,{project:e}),([L,[,_]])=>Mf(r,Li(L),process.execPath,[_])));let b=await w.findPackageLocation(u,C),E=new An(b,{baseFs:A}),R=await Nt.find(wt.dot,{baseFs:E});return typeof o>"u"&&(o=b),{manifest:R,binFolder:r,env:v,cwd:o}})}async function Cue(t,e,r,{cwd:o,stdin:a,stdout:n,stderr:u}){return await Hx(t.anchoredLocator,e,r,{cwd:o,project:t.project,stdin:a,stdout:n,stderr:u})}function SU(t,e){return t.manifest.scripts.has(e)}async function Iue(t,e,{cwd:r,report:o}){let{configuration:a}=t.project,n=null;await oe.mktempPromise(async u=>{let A=J.join(u,`${e}.log`),p=`# This file contains the result of Yarn calling the "${e}" lifecycle script inside a workspace ("${ue.fromPortablePath(t.cwd)}") |
184 | `,{stdout:h,stderr:C}=a.getSubprocessStreams(A,{report:o,prefix:kr(a,t.anchoredLocator),header:p});o.reportInfo(36,`Calling the "${e}" lifecycle script`);let w=await fue(t,e,[],{cwd:r,stdin:n,stdout:h,stderr:C});if(h.end(),C.end(),w!==0)throw ae.detachTemp(u),new Jt(36,`${(0,aue.default)(e)} script failed (exit code ${Kt(a,w,Bt.NUMBER)}, logs can be found here: ${Kt(a,A,Bt.PATH)}); run ${Kt(a,`yarn ${e}`,Bt.CODE)} to investigate`)})}async function Not(t,e,r){BU(t,e)&&await pue(t,e,r)}async function Rx(t,{project:e}){let r=e.configuration,o=new Map,a=e.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${kr(r,t)} not found in the project`);let n=new c0.Writable,u=r.getLinkers(),A={project:e,report:new Ct({configuration:r,stdout:n})},p=new Set([t.locatorHash]);for(let C of a.dependencies.values()){let w=e.storedResolutions.get(C.descriptorHash);if(!w)throw new Error(`Assertion failed: The resolution (${Ln(r,C)}) should have been registered`);p.add(w)}let h=await Promise.all(Array.from(p,async C=>{let w=e.storedPackages.get(C);if(!w)throw new Error(`Assertion failed: The package (${C}) should have been registered`);if(w.bin.size===0)return Xu.skip;let v=u.find(E=>E.supportsPackage(w,A));if(!v)return Xu.skip;let b=null;try{b=await v.findPackageLocation(w,A)}catch(E){if(E.code==="LOCATOR_NOT_INSTALLED")return Xu.skip;throw E}return{dependency:w,packageLocation:b}}));for(let C of h){if(C===Xu.skip)continue;let{dependency:w,packageLocation:v}=C;for(let[b,E]of w.bin)o.set(b,[w,Ae.fromPortablePath(V.resolve(v,E))])}return o}async function hue(t){return await Rx(t.anchoredLocator,{project:t.project})}async function gue(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A,nodeArgs:p=[],packageAccessibleBinaries:h}){h??(h=await Rx(t,{project:a}));let C=h.get(e);if(!C)throw new Error(`Binary not found (${e}) for ${kr(a.configuration,t)}`);return await ae.mktempPromise(async w=>{let[,v]=C,b=await I1({project:a,locator:t,binFolder:w});await Promise.all(Array.from(h,([R,[,L]])=>Tf(b.BERRY_BIN_FOLDER,Li(R),process.execPath,[L])));let E;try{E=await iA(process.execPath,[...p,v,...r],{cwd:o,env:b,stdin:n,stdout:u,stderr:A})}finally{await ae.removePromise(b.BERRY_BIN_FOLDER)}return E.code})}async function Lot(t,e,r,{cwd:o,stdin:a,stdout:n,stderr:u,packageAccessibleBinaries:A}){return await gue(t.anchoredLocator,e,r,{project:t.project,cwd:o,stdin:a,stdout:n,stderr:u,packageAccessibleBinaries:A})}var aue,lue,c0,cue,Qot,kot,vU=dt(()=>{bt();bt();Oc();g1();aue=tt(EU()),lue=tt($g()),c0=Ie("stream");sE();Jl();kx();IU();Ax();Yl();Gl();r0();Ks();cue=(a=>(a.Yarn1="Yarn Classic",a.Yarn2="Yarn",a.Npm="npm",a.Pnpm="pnpm",a))(cue||{});Qot=2,kot=(0,lue.default)(Qot)});var bE=U((xMt,mue)=>{"use strict";var due=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"]]);mue.exports=t=>t?Object.keys(t).map(e=>[due.has(e)?due.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var kE=U((bMt,Sue)=>{"use strict";var yue=typeof process=="object"&&process?process:{stdout:null,stderr:null},Oot=Ie("events"),Eue=Ie("stream"),Cue=Ie("string_decoder").StringDecoder,Nf=Symbol("EOF"),Lf=Symbol("maybeEmitEnd"),u0=Symbol("emittedEnd"),Tx=Symbol("emittingEnd"),w1=Symbol("emittedError"),Nx=Symbol("closed"),Iue=Symbol("read"),Lx=Symbol("flush"),wue=Symbol("flushChunk"),ba=Symbol("encoding"),Of=Symbol("decoder"),Ox=Symbol("flowing"),B1=Symbol("paused"),QE=Symbol("resume"),Ss=Symbol("bufferLength"),DU=Symbol("bufferPush"),SU=Symbol("bufferShift"),bo=Symbol("objectMode"),Qo=Symbol("destroyed"),PU=Symbol("emitData"),Bue=Symbol("emitEnd"),xU=Symbol("emitEnd2"),Mf=Symbol("async"),v1=t=>Promise.resolve().then(t),vue=global._MP_NO_ITERATOR_SYMBOLS_!=="1",Mot=vue&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),Uot=vue&&Symbol.iterator||Symbol("iterator not implemented"),_ot=t=>t==="end"||t==="finish"||t==="prefinish",Hot=t=>t instanceof ArrayBuffer||typeof t=="object"&&t.constructor&&t.constructor.name==="ArrayBuffer"&&t.byteLength>=0,qot=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t),Mx=class{constructor(e,r,o){this.src=e,this.dest=r,this.opts=o,this.ondrain=()=>e[QE](),r.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},bU=class extends Mx{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,r,o){super(e,r,o),this.proxyErrors=a=>r.emit("error",a),e.on("error",this.proxyErrors)}};Sue.exports=class Due extends Eue{constructor(e){super(),this[Ox]=!1,this[B1]=!1,this.pipes=[],this.buffer=[],this[bo]=e&&e.objectMode||!1,this[bo]?this[ba]=null:this[ba]=e&&e.encoding||null,this[ba]==="buffer"&&(this[ba]=null),this[Mf]=e&&!!e.async||!1,this[Of]=this[ba]?new Cue(this[ba]):null,this[Nf]=!1,this[u0]=!1,this[Tx]=!1,this[Nx]=!1,this[w1]=null,this.writable=!0,this.readable=!0,this[Ss]=0,this[Qo]=!1}get bufferLength(){return this[Ss]}get encoding(){return this[ba]}set encoding(e){if(this[bo])throw new Error("cannot set encoding in objectMode");if(this[ba]&&e!==this[ba]&&(this[Of]&&this[Of].lastNeed||this[Ss]))throw new Error("cannot change encoding");this[ba]!==e&&(this[Of]=e?new Cue(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[Of].write(r)))),this[ba]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[bo]}set objectMode(e){this[bo]=this[bo]||!!e}get async(){return this[Mf]}set async(e){this[Mf]=this[Mf]||!!e}write(e,r,o){if(this[Nf])throw new Error("write after end");if(this[Qo])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof r=="function"&&(o=r,r="utf8"),r||(r="utf8");let a=this[Mf]?v1:n=>n();return!this[bo]&&!Buffer.isBuffer(e)&&(qot(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):Hot(e)?e=Buffer.from(e):typeof e!="string"&&(this.objectMode=!0)),this[bo]?(this.flowing&&this[Ss]!==0&&this[Lx](!0),this.flowing?this.emit("data",e):this[DU](e),this[Ss]!==0&&this.emit("readable"),o&&a(o),this.flowing):e.length?(typeof e=="string"&&!(r===this[ba]&&!this[Of].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[ba]&&(e=this[Of].write(e)),this.flowing&&this[Ss]!==0&&this[Lx](!0),this.flowing?this.emit("data",e):this[DU](e),this[Ss]!==0&&this.emit("readable"),o&&a(o),this.flowing):(this[Ss]!==0&&this.emit("readable"),o&&a(o),this.flowing)}read(e){if(this[Qo])return null;if(this[Ss]===0||e===0||e>this[Ss])return this[Lf](),null;this[bo]&&(e=null),this.buffer.length>1&&!this[bo]&&(this.encoding?this.buffer=[this.buffer.join("")]:this.buffer=[Buffer.concat(this.buffer,this[Ss])]);let r=this[Iue](e||null,this.buffer[0]);return this[Lf](),r}[Iue](e,r){return e===r.length||e===null?this[SU]():(this.buffer[0]=r.slice(e),r=r.slice(0,e),this[Ss]-=e),this.emit("data",r),!this.buffer.length&&!this[Nf]&&this.emit("drain"),r}end(e,r,o){return typeof e=="function"&&(o=e,e=null),typeof r=="function"&&(o=r,r="utf8"),e&&this.write(e,r),o&&this.once("end",o),this[Nf]=!0,this.writable=!1,(this.flowing||!this[B1])&&this[Lf](),this}[QE](){this[Qo]||(this[B1]=!1,this[Ox]=!0,this.emit("resume"),this.buffer.length?this[Lx]():this[Nf]?this[Lf]():this.emit("drain"))}resume(){return this[QE]()}pause(){this[Ox]=!1,this[B1]=!0}get destroyed(){return this[Qo]}get flowing(){return this[Ox]}get paused(){return this[B1]}[DU](e){this[bo]?this[Ss]+=1:this[Ss]+=e.length,this.buffer.push(e)}[SU](){return this.buffer.length&&(this[bo]?this[Ss]-=1:this[Ss]-=this.buffer[0].length),this.buffer.shift()}[Lx](e){do;while(this[wue](this[SU]()));!e&&!this.buffer.length&&!this[Nf]&&this.emit("drain")}[wue](e){return e?(this.emit("data",e),this.flowing):!1}pipe(e,r){if(this[Qo])return;let o=this[u0];return r=r||{},e===yue.stdout||e===yue.stderr?r.end=!1:r.end=r.end!==!1,r.proxyErrors=!!r.proxyErrors,o?r.end&&e.end():(this.pipes.push(r.proxyErrors?new bU(this,e,r):new Mx(this,e,r)),this[Mf]?v1(()=>this[QE]()):this[QE]()),e}unpipe(e){let r=this.pipes.find(o=>o.dest===e);r&&(this.pipes.splice(this.pipes.indexOf(r),1),r.unpipe())}addListener(e,r){return this.on(e,r)}on(e,r){let o=super.on(e,r);return e==="data"&&!this.pipes.length&&!this.flowing?this[QE]():e==="readable"&&this[Ss]!==0?super.emit("readable"):_ot(e)&&this[u0]?(super.emit(e),this.removeAllListeners(e)):e==="error"&&this[w1]&&(this[Mf]?v1(()=>r.call(this,this[w1])):r.call(this,this[w1])),o}get emittedEnd(){return this[u0]}[Lf](){!this[Tx]&&!this[u0]&&!this[Qo]&&this.buffer.length===0&&this[Nf]&&(this[Tx]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[Nx]&&this.emit("close"),this[Tx]=!1)}emit(e,r,...o){if(e!=="error"&&e!=="close"&&e!==Qo&&this[Qo])return;if(e==="data")return r?this[Mf]?v1(()=>this[PU](r)):this[PU](r):!1;if(e==="end")return this[Bue]();if(e==="close"){if(this[Nx]=!0,!this[u0]&&!this[Qo])return;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(e==="error"){this[w1]=r;let n=super.emit("error",r);return this[Lf](),n}else if(e==="resume"){let n=super.emit("resume");return this[Lf](),n}else if(e==="finish"||e==="prefinish"){let n=super.emit(e);return this.removeAllListeners(e),n}let a=super.emit(e,r,...o);return this[Lf](),a}[PU](e){for(let o of this.pipes)o.dest.write(e)===!1&&this.pause();let r=super.emit("data",e);return this[Lf](),r}[Bue](){this[u0]||(this[u0]=!0,this.readable=!1,this[Mf]?v1(()=>this[xU]()):this[xU]())}[xU](){if(this[Of]){let r=this[Of].end();if(r){for(let o of this.pipes)o.dest.write(r);super.emit("data",r)}}for(let r of this.pipes)r.end();let e=super.emit("end");return this.removeAllListeners("end"),e}collect(){let e=[];this[bo]||(e.dataLength=0);let r=this.promise();return this.on("data",o=>{e.push(o),this[bo]||(e.dataLength+=o.length)}),r.then(()=>e)}concat(){return this[bo]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(e=>this[bo]?Promise.reject(new Error("cannot concat in objectMode")):this[ba]?e.join(""):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(Qo,()=>r(new Error("stream destroyed"))),this.on("error",o=>r(o)),this.on("end",()=>e())})}[Mot](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[Nf])return Promise.resolve({done:!0});let o=null,a=null,n=h=>{this.removeListener("data",u),this.removeListener("end",A),a(h)},u=h=>{this.removeListener("error",n),this.removeListener("end",A),this.pause(),o({value:h,done:!!this[Nf]})},A=()=>{this.removeListener("error",n),this.removeListener("data",u),o({done:!0})},p=()=>n(new Error("stream destroyed"));return new Promise((h,C)=>{a=C,o=h,this.once(Qo,p),this.once("error",n),this.once("end",A),this.once("data",u)})}}}[Uot](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[Qo]?(e?this.emit("error",e):this.emit(Qo),this):(this[Qo]=!0,this.buffer.length=0,this[Ss]=0,typeof this.close=="function"&&!this[Nx]&&this.close(),e?this.emit("error",e):this.emit(Qo),this)}static isStream(e){return!!e&&(e instanceof Due||e instanceof Eue||e instanceof Oot&&(typeof e.pipe=="function"||typeof e.write=="function"&&typeof e.end=="function"))}}});var xue=U((QMt,Pue)=>{var jot=Ie("zlib").constants||{ZLIB_VERNUM:4736};Pue.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},jot))});var WU=U(ll=>{"use strict";var TU=Ie("assert"),A0=Ie("buffer").Buffer,kue=Ie("zlib"),kd=ll.constants=xue(),Got=kE(),bue=A0.concat,Fd=Symbol("_superWrite"),RE=class extends Error{constructor(e){super("zlib: "+e.message),this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},Wot=Symbol("opts"),D1=Symbol("flushFlag"),Que=Symbol("finishFlushFlag"),GU=Symbol("fullFlushFlag"),Vn=Symbol("handle"),Ux=Symbol("onError"),FE=Symbol("sawError"),QU=Symbol("level"),kU=Symbol("strategy"),FU=Symbol("ended"),kMt=Symbol("_defaultFullFlush"),_x=class extends Got{constructor(e,r){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");super(e),this[FE]=!1,this[FU]=!1,this[Wot]=e,this[D1]=e.flush,this[Que]=e.finishFlush;try{this[Vn]=new kue[r](e)}catch(o){throw new RE(o)}this[Ux]=o=>{this[FE]||(this[FE]=!0,this.close(),this.emit("error",o))},this[Vn].on("error",o=>this[Ux](new RE(o))),this.once("end",()=>this.close)}close(){this[Vn]&&(this[Vn].close(),this[Vn]=null,this.emit("close"))}reset(){if(!this[FE])return TU(this[Vn],"zlib binding closed"),this[Vn].reset()}flush(e){this.ended||(typeof e!="number"&&(e=this[GU]),this.write(Object.assign(A0.alloc(0),{[D1]:e})))}end(e,r,o){return e&&this.write(e,r),this.flush(this[Que]),this[FU]=!0,super.end(null,null,o)}get ended(){return this[FU]}write(e,r,o){if(typeof r=="function"&&(o=r,r="utf8"),typeof e=="string"&&(e=A0.from(e,r)),this[FE])return;TU(this[Vn],"zlib binding closed");let a=this[Vn]._handle,n=a.close;a.close=()=>{};let u=this[Vn].close;this[Vn].close=()=>{},A0.concat=h=>h;let A;try{let h=typeof e[D1]=="number"?e[D1]:this[D1];A=this[Vn]._processChunk(e,h),A0.concat=bue}catch(h){A0.concat=bue,this[Ux](new RE(h))}finally{this[Vn]&&(this[Vn]._handle=a,a.close=n,this[Vn].close=u,this[Vn].removeAllListeners("error"))}this[Vn]&&this[Vn].on("error",h=>this[Ux](new RE(h)));let p;if(A)if(Array.isArray(A)&&A.length>0){p=this[Fd](A0.from(A[0]));for(let h=1;h<A.length;h++)p=this[Fd](A[h])}else p=this[Fd](A0.from(A));return o&&o(),p}[Fd](e){return super.write(e)}},Uf=class extends _x{constructor(e,r){e=e||{},e.flush=e.flush||kd.Z_NO_FLUSH,e.finishFlush=e.finishFlush||kd.Z_FINISH,super(e,r),this[GU]=kd.Z_FULL_FLUSH,this[QU]=e.level,this[kU]=e.strategy}params(e,r){if(!this[FE]){if(!this[Vn])throw new Error("cannot switch params when binding is closed");if(!this[Vn].params)throw new Error("not supported in this implementation");if(this[QU]!==e||this[kU]!==r){this.flush(kd.Z_SYNC_FLUSH),TU(this[Vn],"zlib binding closed");let o=this[Vn].flush;this[Vn].flush=(a,n)=>{this.flush(a),n()};try{this[Vn].params(e,r)}finally{this[Vn].flush=o}this[Vn]&&(this[QU]=e,this[kU]=r)}}}},NU=class extends Uf{constructor(e){super(e,"Deflate")}},LU=class extends Uf{constructor(e){super(e,"Inflate")}},RU=Symbol("_portable"),OU=class extends Uf{constructor(e){super(e,"Gzip"),this[RU]=e&&!!e.portable}[Fd](e){return this[RU]?(this[RU]=!1,e[9]=255,super[Fd](e)):super[Fd](e)}},MU=class extends Uf{constructor(e){super(e,"Gunzip")}},UU=class extends Uf{constructor(e){super(e,"DeflateRaw")}},_U=class extends Uf{constructor(e){super(e,"InflateRaw")}},HU=class extends Uf{constructor(e){super(e,"Unzip")}},Hx=class extends _x{constructor(e,r){e=e||{},e.flush=e.flush||kd.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||kd.BROTLI_OPERATION_FINISH,super(e,r),this[GU]=kd.BROTLI_OPERATION_FLUSH}},qU=class extends Hx{constructor(e){super(e,"BrotliCompress")}},jU=class extends Hx{constructor(e){super(e,"BrotliDecompress")}};ll.Deflate=NU;ll.Inflate=LU;ll.Gzip=OU;ll.Gunzip=MU;ll.DeflateRaw=UU;ll.InflateRaw=_U;ll.Unzip=HU;typeof kue.BrotliCompress=="function"?(ll.BrotliCompress=qU,ll.BrotliDecompress=jU):ll.BrotliCompress=ll.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var TE=U((TMt,Fue)=>{var Yot=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;Fue.exports=Yot!=="win32"?t=>t:t=>t&&t.replace(/\\/g,"/")});var qx=U((LMt,Rue)=>{"use strict";var Kot=kE(),YU=TE(),KU=Symbol("slurp");Rue.exports=class extends Kot{constructor(e,r,o){switch(super(),this.pause(),this.extended=r,this.globalExtended=o,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.type,this.meta=!1,this.ignore=!1,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}this.path=YU(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=YU(e.linkpath),this.uname=e.uname,this.gname=e.gname,r&&this[KU](r),o&&this[KU](o,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");let o=this.remain,a=this.blockRemain;return this.remain=Math.max(0,o-r),this.blockRemain=Math.max(0,a-r),this.ignore?!0:o>=r?super.write(e):super.write(e.slice(0,o))}[KU](e,r){for(let o in e)e[o]!==null&&e[o]!==void 0&&!(r&&o==="path")&&(this[o]=o==="path"||o==="linkpath"?YU(e[o]):e[o])}}});var JU=U(jx=>{"use strict";jx.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);jx.code=new Map(Array.from(jx.name).map(t=>[t[1],t[0]]))});var Oue=U((MMt,Lue)=>{"use strict";var Jot=(t,e)=>{if(Number.isSafeInteger(t))t<0?zot(t,e):Vot(t,e);else throw Error("cannot encode number outside of javascript safe integer range");return e},Vot=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},zot=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var o=e.length;o>1;o--){var a=t&255;t=Math.floor(t/256),r?e[o-1]=Tue(a):a===0?e[o-1]=0:(r=!0,e[o-1]=Nue(a))}},Xot=t=>{let e=t[0],r=e===128?$ot(t.slice(1,t.length)):e===255?Zot(t):null;if(r===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(r))throw Error("parsed number outside of javascript safe integer range");return r},Zot=t=>{for(var e=t.length,r=0,o=!1,a=e-1;a>-1;a--){var n=t[a],u;o?u=Tue(n):n===0?u=n:(o=!0,u=Nue(n)),u!==0&&(r-=u*Math.pow(256,e-a-1))}return r},$ot=t=>{for(var e=t.length,r=0,o=e-1;o>-1;o--){var a=t[o];a!==0&&(r+=a*Math.pow(256,e-o-1))}return r},Tue=t=>(255^t)&255,Nue=t=>(255^t)+1&255;Lue.exports={encode:Jot,parse:Xot}});var LE=U((UMt,Uue)=>{"use strict";var VU=JU(),NE=Ie("path").posix,Mue=Oue(),zU=Symbol("slurp"),cl=Symbol("type"),$U=class{constructor(e,r,o,a){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[cl]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,r||0,o,a):e&&this.set(e)}decode(e,r,o,a){if(r||(r=0),!e||!(e.length>=r+512))throw new Error("need 512 bytes for header");if(this.path=Rd(e,r,100),this.mode=f0(e,r+100,8),this.uid=f0(e,r+108,8),this.gid=f0(e,r+116,8),this.size=f0(e,r+124,12),this.mtime=XU(e,r+136,12),this.cksum=f0(e,r+148,12),this[zU](o),this[zU](a,!0),this[cl]=Rd(e,r+156,1),this[cl]===""&&(this[cl]="0"),this[cl]==="0"&&this.path.substr(-1)==="/"&&(this[cl]="5"),this[cl]==="5"&&(this.size=0),this.linkpath=Rd(e,r+157,100),e.slice(r+257,r+265).toString()==="ustar\x0000")if(this.uname=Rd(e,r+265,32),this.gname=Rd(e,r+297,32),this.devmaj=f0(e,r+329,8),this.devmin=f0(e,r+337,8),e[r+475]!==0){let u=Rd(e,r+345,155);this.path=u+"/"+this.path}else{let u=Rd(e,r+345,130);u&&(this.path=u+"/"+this.path),this.atime=XU(e,r+476,12),this.ctime=XU(e,r+488,12)}let n=8*32;for(let u=r;u<r+148;u++)n+=e[u];for(let u=r+156;u<r+512;u++)n+=e[u];this.cksumValid=n===this.cksum,this.cksum===null&&n===8*32&&(this.nullBlock=!0)}[zU](e,r){for(let o in e)e[o]!==null&&e[o]!==void 0&&!(r&&o==="path")&&(this[o]=e[o])}encode(e,r){if(e||(e=this.block=Buffer.alloc(512),r=0),r||(r=0),!(e.length>=r+512))throw new Error("need 512 bytes for header");let o=this.ctime||this.atime?130:155,a=eat(this.path||"",o),n=a[0],u=a[1];this.needPax=a[2],this.needPax=Td(e,r,100,n)||this.needPax,this.needPax=p0(e,r+100,8,this.mode)||this.needPax,this.needPax=p0(e,r+108,8,this.uid)||this.needPax,this.needPax=p0(e,r+116,8,this.gid)||this.needPax,this.needPax=p0(e,r+124,12,this.size)||this.needPax,this.needPax=ZU(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[cl].charCodeAt(0),this.needPax=Td(e,r+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",r+257,8),this.needPax=Td(e,r+265,32,this.uname)||this.needPax,this.needPax=Td(e,r+297,32,this.gname)||this.needPax,this.needPax=p0(e,r+329,8,this.devmaj)||this.needPax,this.needPax=p0(e,r+337,8,this.devmin)||this.needPax,this.needPax=Td(e,r+345,o,u)||this.needPax,e[r+475]!==0?this.needPax=Td(e,r+345,155,u)||this.needPax:(this.needPax=Td(e,r+345,130,u)||this.needPax,this.needPax=ZU(e,r+476,12,this.atime)||this.needPax,this.needPax=ZU(e,r+488,12,this.ctime)||this.needPax);let A=8*32;for(let p=r;p<r+148;p++)A+=e[p];for(let p=r+156;p<r+512;p++)A+=e[p];return this.cksum=A,p0(e,r+148,8,this.cksum),this.cksumValid=!0,this.needPax}set(e){for(let r in e)e[r]!==null&&e[r]!==void 0&&(this[r]=e[r])}get type(){return VU.name.get(this[cl])||this[cl]}get typeKey(){return this[cl]}set type(e){VU.code.has(e)?this[cl]=VU.code.get(e):this[cl]=e}},eat=(t,e)=>{let o=t,a="",n,u=NE.parse(t).root||".";if(Buffer.byteLength(o)<100)n=[o,a,!1];else{a=NE.dirname(o),o=NE.basename(o);do Buffer.byteLength(o)<=100&&Buffer.byteLength(a)<=e?n=[o,a,!1]:Buffer.byteLength(o)>100&&Buffer.byteLength(a)<=e?n=[o.substr(0,100-1),a,!0]:(o=NE.join(NE.basename(a),o),a=NE.dirname(a));while(a!==u&&!n);n||(n=[t.substr(0,100-1),"",!0])}return n},Rd=(t,e,r)=>t.slice(e,e+r).toString("utf8").replace(/\0.*/,""),XU=(t,e,r)=>tat(f0(t,e,r)),tat=t=>t===null?null:new Date(t*1e3),f0=(t,e,r)=>t[e]&128?Mue.parse(t.slice(e,e+r)):nat(t,e,r),rat=t=>isNaN(t)?null:t,nat=(t,e,r)=>rat(parseInt(t.slice(e,e+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),iat={12:8589934591,8:2097151},p0=(t,e,r,o)=>o===null?!1:o>iat[r]||o<0?(Mue.encode(o,t.slice(e,e+r)),!0):(sat(t,e,r,o),!1),sat=(t,e,r,o)=>t.write(oat(o,r),e,r,"ascii"),oat=(t,e)=>aat(Math.floor(t).toString(8),e),aat=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join("0")+t+" ")+"\0",ZU=(t,e,r,o)=>o===null?!1:p0(t,e,r,o.getTime()/1e3),lat=new Array(156).join("\0"),Td=(t,e,r,o)=>o===null?!1:(t.write(o+lat,e,r,"utf8"),o.length!==Buffer.byteLength(o)||o.length>r);Uue.exports=$U});var Gx=U((_Mt,_ue)=>{"use strict";var cat=LE(),uat=Ie("path"),S1=class{constructor(e,r){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=r||!1}encode(){let e=this.encodeBody();if(e==="")return null;let r=Buffer.byteLength(e),o=512*Math.ceil(1+r/512),a=Buffer.allocUnsafe(o);for(let n=0;n<512;n++)a[n]=0;new cat({path:("PaxHeader/"+uat.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(a),a.write(e,512,r,"utf8");for(let n=r+512;n<a.length;n++)a[n]=0;return a}encodeBody(){return this.encodeField("path")+this.encodeField("ctime")+this.encodeField("atime")+this.encodeField("dev")+this.encodeField("ino")+this.encodeField("nlink")+this.encodeField("charset")+this.encodeField("comment")+this.encodeField("gid")+this.encodeField("gname")+this.encodeField("linkpath")+this.encodeField("mtime")+this.encodeField("size")+this.encodeField("uid")+this.encodeField("uname")}encodeField(e){if(this[e]===null||this[e]===void 0)return"";let r=this[e]instanceof Date?this[e].getTime()/1e3:this[e],o=" "+(e==="dev"||e==="ino"||e==="nlink"?"SCHILY.":"")+e+"="+r+` | 184 | `,{stdout:h,stderr:C}=a.getSubprocessStreams(A,{report:o,prefix:kr(a,t.anchoredLocator),header:p});o.reportInfo(36,`Calling the "${e}" lifecycle script`);let w=await Cue(t,e,[],{cwd:r,stdin:n,stdout:h,stderr:C});if(h.end(),C.end(),w!==0)throw oe.detachTemp(u),new Vt(36,`${(0,gue.default)(e)} script failed (exit code ${Kt(a,w,Bt.NUMBER)}, logs can be found here: ${Kt(a,A,Bt.PATH)}); run ${Kt(a,`yarn ${e}`,Bt.CODE)} to investigate`)})}async function zot(t,e,r){SU(t,e)&&await Iue(t,e,r)}async function qx(t,{project:e}){let r=e.configuration,o=new Map,a=e.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${kr(r,t)} not found in the project`);let n=new A0.Writable,u=r.getLinkers(),A={project:e,report:new Ct({configuration:r,stdout:n})},p=new Set([t.locatorHash]);for(let C of a.dependencies.values()){let w=e.storedResolutions.get(C.descriptorHash);if(!w)throw new Error(`Assertion failed: The resolution (${Ln(r,C)}) should have been registered`);p.add(w)}let h=await Promise.all(Array.from(p,async C=>{let w=e.storedPackages.get(C);if(!w)throw new Error(`Assertion failed: The package (${C}) should have been registered`);if(w.bin.size===0)return Zu.skip;let v=u.find(E=>E.supportsPackage(w,A));if(!v)return Zu.skip;let b=null;try{b=await v.findPackageLocation(w,A)}catch(E){if(E.code==="LOCATOR_NOT_INSTALLED")return Zu.skip;throw E}return{dependency:w,packageLocation:b}}));for(let C of h){if(C===Zu.skip)continue;let{dependency:w,packageLocation:v}=C;for(let[b,E]of w.bin)o.set(b,[w,ue.fromPortablePath(J.resolve(v,E))])}return o}async function wue(t){return await qx(t.anchoredLocator,{project:t.project})}async function Bue(t,e,r,{cwd:o,project:a,stdin:n,stdout:u,stderr:A,nodeArgs:p=[],packageAccessibleBinaries:h}){h??(h=await qx(t,{project:a}));let C=h.get(e);if(!C)throw new Error(`Binary not found (${e}) for ${kr(a.configuration,t)}`);return await oe.mktempPromise(async w=>{let[,v]=C,b=await P1({project:a,locator:t,binFolder:w});await Promise.all(Array.from(h,([R,[,L]])=>Mf(b.BERRY_BIN_FOLDER,Li(R),process.execPath,[L])));let E;try{E=await sA(process.execPath,[...p,v,...r],{cwd:o,env:b,stdin:n,stdout:u,stderr:A})}finally{await oe.removePromise(b.BERRY_BIN_FOLDER)}return E.code})}async function Xot(t,e,r,{cwd:o,stdin:a,stdout:n,stderr:u,packageAccessibleBinaries:A}){return await Bue(t.anchoredLocator,e,r,{project:t.project,cwd:o,stdin:a,stdout:n,stderr:u,packageAccessibleBinaries:A})}var gue,due,A0,mue,Wot,Yot,PU=dt(()=>{St();St();Hc();I1();gue=tt(wU()),due=tt(nd()),A0=Ie("stream");uE();Zl();_x();vU();Cx();zl();Vl();s0();Ks();mue=(a=>(a.Yarn1="Yarn Classic",a.Yarn2="Yarn",a.Npm="npm",a.Pnpm="pnpm",a))(mue||{});Wot=2,Yot=(0,due.default)(Wot)});var TE=U((KMt,Due)=>{"use strict";var vue=new Map([["C","cwd"],["f","file"],["z","gzip"],["P","preservePaths"],["U","unlink"],["strip-components","strip"],["stripComponents","strip"],["keep-newer","newer"],["keepNewer","newer"],["keep-newer-files","newer"],["keepNewerFiles","newer"],["k","keep"],["keep-existing","keep"],["keepExisting","keep"],["m","noMtime"],["no-mtime","noMtime"],["p","preserveOwner"],["L","follow"],["h","follow"]]);Due.exports=t=>t?Object.keys(t).map(e=>[vue.has(e)?vue.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var LE=U((VMt,Tue)=>{"use strict";var Sue=typeof process=="object"&&process?process:{stdout:null,stderr:null},Zot=Ie("events"),Pue=Ie("stream"),xue=Ie("string_decoder").StringDecoder,Uf=Symbol("EOF"),_f=Symbol("maybeEmitEnd"),f0=Symbol("emittedEnd"),jx=Symbol("emittingEnd"),x1=Symbol("emittedError"),Gx=Symbol("closed"),bue=Symbol("read"),Wx=Symbol("flush"),Que=Symbol("flushChunk"),ka=Symbol("encoding"),Hf=Symbol("decoder"),Yx=Symbol("flowing"),b1=Symbol("paused"),NE=Symbol("resume"),Ss=Symbol("bufferLength"),xU=Symbol("bufferPush"),bU=Symbol("bufferShift"),bo=Symbol("objectMode"),Qo=Symbol("destroyed"),QU=Symbol("emitData"),kue=Symbol("emitEnd"),kU=Symbol("emitEnd2"),qf=Symbol("async"),Q1=t=>Promise.resolve().then(t),Fue=global._MP_NO_ITERATOR_SYMBOLS_!=="1",$ot=Fue&&Symbol.asyncIterator||Symbol("asyncIterator not implemented"),eat=Fue&&Symbol.iterator||Symbol("iterator not implemented"),tat=t=>t==="end"||t==="finish"||t==="prefinish",rat=t=>t instanceof ArrayBuffer||typeof t=="object"&&t.constructor&&t.constructor.name==="ArrayBuffer"&&t.byteLength>=0,nat=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t),Kx=class{constructor(e,r,o){this.src=e,this.dest=r,this.opts=o,this.ondrain=()=>e[NE](),r.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},FU=class extends Kx{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(e,r,o){super(e,r,o),this.proxyErrors=a=>r.emit("error",a),e.on("error",this.proxyErrors)}};Tue.exports=class Rue extends Pue{constructor(e){super(),this[Yx]=!1,this[b1]=!1,this.pipes=[],this.buffer=[],this[bo]=e&&e.objectMode||!1,this[bo]?this[ka]=null:this[ka]=e&&e.encoding||null,this[ka]==="buffer"&&(this[ka]=null),this[qf]=e&&!!e.async||!1,this[Hf]=this[ka]?new xue(this[ka]):null,this[Uf]=!1,this[f0]=!1,this[jx]=!1,this[Gx]=!1,this[x1]=null,this.writable=!0,this.readable=!0,this[Ss]=0,this[Qo]=!1}get bufferLength(){return this[Ss]}get encoding(){return this[ka]}set encoding(e){if(this[bo])throw new Error("cannot set encoding in objectMode");if(this[ka]&&e!==this[ka]&&(this[Hf]&&this[Hf].lastNeed||this[Ss]))throw new Error("cannot change encoding");this[ka]!==e&&(this[Hf]=e?new xue(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[Hf].write(r)))),this[ka]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[bo]}set objectMode(e){this[bo]=this[bo]||!!e}get async(){return this[qf]}set async(e){this[qf]=this[qf]||!!e}write(e,r,o){if(this[Uf])throw new Error("write after end");if(this[Qo])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof r=="function"&&(o=r,r="utf8"),r||(r="utf8");let a=this[qf]?Q1:n=>n();return!this[bo]&&!Buffer.isBuffer(e)&&(nat(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):rat(e)?e=Buffer.from(e):typeof e!="string"&&(this.objectMode=!0)),this[bo]?(this.flowing&&this[Ss]!==0&&this[Wx](!0),this.flowing?this.emit("data",e):this[xU](e),this[Ss]!==0&&this.emit("readable"),o&&a(o),this.flowing):e.length?(typeof e=="string"&&!(r===this[ka]&&!this[Hf].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[ka]&&(e=this[Hf].write(e)),this.flowing&&this[Ss]!==0&&this[Wx](!0),this.flowing?this.emit("data",e):this[xU](e),this[Ss]!==0&&this.emit("readable"),o&&a(o),this.flowing):(this[Ss]!==0&&this.emit("readable"),o&&a(o),this.flowing)}read(e){if(this[Qo])return null;if(this[Ss]===0||e===0||e>this[Ss])return this[_f](),null;this[bo]&&(e=null),this.buffer.length>1&&!this[bo]&&(this.encoding?this.buffer=[this.buffer.join("")]:this.buffer=[Buffer.concat(this.buffer,this[Ss])]);let r=this[bue](e||null,this.buffer[0]);return this[_f](),r}[bue](e,r){return e===r.length||e===null?this[bU]():(this.buffer[0]=r.slice(e),r=r.slice(0,e),this[Ss]-=e),this.emit("data",r),!this.buffer.length&&!this[Uf]&&this.emit("drain"),r}end(e,r,o){return typeof e=="function"&&(o=e,e=null),typeof r=="function"&&(o=r,r="utf8"),e&&this.write(e,r),o&&this.once("end",o),this[Uf]=!0,this.writable=!1,(this.flowing||!this[b1])&&this[_f](),this}[NE](){this[Qo]||(this[b1]=!1,this[Yx]=!0,this.emit("resume"),this.buffer.length?this[Wx]():this[Uf]?this[_f]():this.emit("drain"))}resume(){return this[NE]()}pause(){this[Yx]=!1,this[b1]=!0}get destroyed(){return this[Qo]}get flowing(){return this[Yx]}get paused(){return this[b1]}[xU](e){this[bo]?this[Ss]+=1:this[Ss]+=e.length,this.buffer.push(e)}[bU](){return this.buffer.length&&(this[bo]?this[Ss]-=1:this[Ss]-=this.buffer[0].length),this.buffer.shift()}[Wx](e){do;while(this[Que](this[bU]()));!e&&!this.buffer.length&&!this[Uf]&&this.emit("drain")}[Que](e){return e?(this.emit("data",e),this.flowing):!1}pipe(e,r){if(this[Qo])return;let o=this[f0];return r=r||{},e===Sue.stdout||e===Sue.stderr?r.end=!1:r.end=r.end!==!1,r.proxyErrors=!!r.proxyErrors,o?r.end&&e.end():(this.pipes.push(r.proxyErrors?new FU(this,e,r):new Kx(this,e,r)),this[qf]?Q1(()=>this[NE]()):this[NE]()),e}unpipe(e){let r=this.pipes.find(o=>o.dest===e);r&&(this.pipes.splice(this.pipes.indexOf(r),1),r.unpipe())}addListener(e,r){return this.on(e,r)}on(e,r){let o=super.on(e,r);return e==="data"&&!this.pipes.length&&!this.flowing?this[NE]():e==="readable"&&this[Ss]!==0?super.emit("readable"):tat(e)&&this[f0]?(super.emit(e),this.removeAllListeners(e)):e==="error"&&this[x1]&&(this[qf]?Q1(()=>r.call(this,this[x1])):r.call(this,this[x1])),o}get emittedEnd(){return this[f0]}[_f](){!this[jx]&&!this[f0]&&!this[Qo]&&this.buffer.length===0&&this[Uf]&&(this[jx]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[Gx]&&this.emit("close"),this[jx]=!1)}emit(e,r,...o){if(e!=="error"&&e!=="close"&&e!==Qo&&this[Qo])return;if(e==="data")return r?this[qf]?Q1(()=>this[QU](r)):this[QU](r):!1;if(e==="end")return this[kue]();if(e==="close"){if(this[Gx]=!0,!this[f0]&&!this[Qo])return;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(e==="error"){this[x1]=r;let n=super.emit("error",r);return this[_f](),n}else if(e==="resume"){let n=super.emit("resume");return this[_f](),n}else if(e==="finish"||e==="prefinish"){let n=super.emit(e);return this.removeAllListeners(e),n}let a=super.emit(e,r,...o);return this[_f](),a}[QU](e){for(let o of this.pipes)o.dest.write(e)===!1&&this.pause();let r=super.emit("data",e);return this[_f](),r}[kue](){this[f0]||(this[f0]=!0,this.readable=!1,this[qf]?Q1(()=>this[kU]()):this[kU]())}[kU](){if(this[Hf]){let r=this[Hf].end();if(r){for(let o of this.pipes)o.dest.write(r);super.emit("data",r)}}for(let r of this.pipes)r.end();let e=super.emit("end");return this.removeAllListeners("end"),e}collect(){let e=[];this[bo]||(e.dataLength=0);let r=this.promise();return this.on("data",o=>{e.push(o),this[bo]||(e.dataLength+=o.length)}),r.then(()=>e)}concat(){return this[bo]?Promise.reject(new Error("cannot concat in objectMode")):this.collect().then(e=>this[bo]?Promise.reject(new Error("cannot concat in objectMode")):this[ka]?e.join(""):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(Qo,()=>r(new Error("stream destroyed"))),this.on("error",o=>r(o)),this.on("end",()=>e())})}[$ot](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[Uf])return Promise.resolve({done:!0});let o=null,a=null,n=h=>{this.removeListener("data",u),this.removeListener("end",A),a(h)},u=h=>{this.removeListener("error",n),this.removeListener("end",A),this.pause(),o({value:h,done:!!this[Uf]})},A=()=>{this.removeListener("error",n),this.removeListener("data",u),o({done:!0})},p=()=>n(new Error("stream destroyed"));return new Promise((h,C)=>{a=C,o=h,this.once(Qo,p),this.once("error",n),this.once("end",A),this.once("data",u)})}}}[eat](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[Qo]?(e?this.emit("error",e):this.emit(Qo),this):(this[Qo]=!0,this.buffer.length=0,this[Ss]=0,typeof this.close=="function"&&!this[Gx]&&this.close(),e?this.emit("error",e):this.emit(Qo),this)}static isStream(e){return!!e&&(e instanceof Rue||e instanceof Pue||e instanceof Zot&&(typeof e.pipe=="function"||typeof e.write=="function"&&typeof e.end=="function"))}}});var Lue=U((JMt,Nue)=>{var iat=Ie("zlib").constants||{ZLIB_VERNUM:4736};Nue.exports=Object.freeze(Object.assign(Object.create(null),{Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_VERSION_ERROR:-6,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,DEFLATE:1,INFLATE:2,GZIP:3,GUNZIP:4,DEFLATERAW:5,INFLATERAW:6,UNZIP:7,BROTLI_DECODE:8,BROTLI_ENCODE:9,Z_MIN_WINDOWBITS:8,Z_MAX_WINDOWBITS:15,Z_DEFAULT_WINDOWBITS:15,Z_MIN_CHUNK:64,Z_MAX_CHUNK:1/0,Z_DEFAULT_CHUNK:16384,Z_MIN_MEMLEVEL:1,Z_MAX_MEMLEVEL:9,Z_DEFAULT_MEMLEVEL:8,Z_MIN_LEVEL:-1,Z_MAX_LEVEL:9,Z_DEFAULT_LEVEL:-1,BROTLI_OPERATION_PROCESS:0,BROTLI_OPERATION_FLUSH:1,BROTLI_OPERATION_FINISH:2,BROTLI_OPERATION_EMIT_METADATA:3,BROTLI_MODE_GENERIC:0,BROTLI_MODE_TEXT:1,BROTLI_MODE_FONT:2,BROTLI_DEFAULT_MODE:0,BROTLI_MIN_QUALITY:0,BROTLI_MAX_QUALITY:11,BROTLI_DEFAULT_QUALITY:11,BROTLI_MIN_WINDOW_BITS:10,BROTLI_MAX_WINDOW_BITS:24,BROTLI_LARGE_MAX_WINDOW_BITS:30,BROTLI_DEFAULT_WINDOW:22,BROTLI_MIN_INPUT_BLOCK_BITS:16,BROTLI_MAX_INPUT_BLOCK_BITS:24,BROTLI_PARAM_MODE:0,BROTLI_PARAM_QUALITY:1,BROTLI_PARAM_LGWIN:2,BROTLI_PARAM_LGBLOCK:3,BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING:4,BROTLI_PARAM_SIZE_HINT:5,BROTLI_PARAM_LARGE_WINDOW:6,BROTLI_PARAM_NPOSTFIX:7,BROTLI_PARAM_NDIRECT:8,BROTLI_DECODER_RESULT_ERROR:0,BROTLI_DECODER_RESULT_SUCCESS:1,BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT:2,BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:0,BROTLI_DECODER_PARAM_LARGE_WINDOW:1,BROTLI_DECODER_NO_ERROR:0,BROTLI_DECODER_SUCCESS:1,BROTLI_DECODER_NEEDS_MORE_INPUT:2,BROTLI_DECODER_NEEDS_MORE_OUTPUT:3,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE:-1,BROTLI_DECODER_ERROR_FORMAT_RESERVED:-2,BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE:-3,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET:-4,BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME:-5,BROTLI_DECODER_ERROR_FORMAT_CL_SPACE:-6,BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE:-7,BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT:-8,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1:-9,BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2:-10,BROTLI_DECODER_ERROR_FORMAT_TRANSFORM:-11,BROTLI_DECODER_ERROR_FORMAT_DICTIONARY:-12,BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS:-13,BROTLI_DECODER_ERROR_FORMAT_PADDING_1:-14,BROTLI_DECODER_ERROR_FORMAT_PADDING_2:-15,BROTLI_DECODER_ERROR_FORMAT_DISTANCE:-16,BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET:-19,BROTLI_DECODER_ERROR_INVALID_ARGUMENTS:-20,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES:-21,BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS:-22,BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP:-25,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1:-26,BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2:-27,BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES:-30,BROTLI_DECODER_ERROR_UNREACHABLE:-31},iat))});var VU=U(fl=>{"use strict";var OU=Ie("assert"),p0=Ie("buffer").Buffer,Uue=Ie("zlib"),Nd=fl.constants=Lue(),sat=LE(),Oue=p0.concat,Ld=Symbol("_superWrite"),ME=class extends Error{constructor(e){super("zlib: "+e.message),this.code=e.code,this.errno=e.errno,this.code||(this.code="ZLIB_ERROR"),this.message="zlib: "+e.message,Error.captureStackTrace(this,this.constructor)}get name(){return"ZlibError"}},oat=Symbol("opts"),k1=Symbol("flushFlag"),Mue=Symbol("finishFlushFlag"),KU=Symbol("fullFlushFlag"),zn=Symbol("handle"),Vx=Symbol("onError"),OE=Symbol("sawError"),RU=Symbol("level"),TU=Symbol("strategy"),NU=Symbol("ended"),zMt=Symbol("_defaultFullFlush"),Jx=class extends sat{constructor(e,r){if(!e||typeof e!="object")throw new TypeError("invalid options for ZlibBase constructor");super(e),this[OE]=!1,this[NU]=!1,this[oat]=e,this[k1]=e.flush,this[Mue]=e.finishFlush;try{this[zn]=new Uue[r](e)}catch(o){throw new ME(o)}this[Vx]=o=>{this[OE]||(this[OE]=!0,this.close(),this.emit("error",o))},this[zn].on("error",o=>this[Vx](new ME(o))),this.once("end",()=>this.close)}close(){this[zn]&&(this[zn].close(),this[zn]=null,this.emit("close"))}reset(){if(!this[OE])return OU(this[zn],"zlib binding closed"),this[zn].reset()}flush(e){this.ended||(typeof e!="number"&&(e=this[KU]),this.write(Object.assign(p0.alloc(0),{[k1]:e})))}end(e,r,o){return e&&this.write(e,r),this.flush(this[Mue]),this[NU]=!0,super.end(null,null,o)}get ended(){return this[NU]}write(e,r,o){if(typeof r=="function"&&(o=r,r="utf8"),typeof e=="string"&&(e=p0.from(e,r)),this[OE])return;OU(this[zn],"zlib binding closed");let a=this[zn]._handle,n=a.close;a.close=()=>{};let u=this[zn].close;this[zn].close=()=>{},p0.concat=h=>h;let A;try{let h=typeof e[k1]=="number"?e[k1]:this[k1];A=this[zn]._processChunk(e,h),p0.concat=Oue}catch(h){p0.concat=Oue,this[Vx](new ME(h))}finally{this[zn]&&(this[zn]._handle=a,a.close=n,this[zn].close=u,this[zn].removeAllListeners("error"))}this[zn]&&this[zn].on("error",h=>this[Vx](new ME(h)));let p;if(A)if(Array.isArray(A)&&A.length>0){p=this[Ld](p0.from(A[0]));for(let h=1;h<A.length;h++)p=this[Ld](A[h])}else p=this[Ld](p0.from(A));return o&&o(),p}[Ld](e){return super.write(e)}},jf=class extends Jx{constructor(e,r){e=e||{},e.flush=e.flush||Nd.Z_NO_FLUSH,e.finishFlush=e.finishFlush||Nd.Z_FINISH,super(e,r),this[KU]=Nd.Z_FULL_FLUSH,this[RU]=e.level,this[TU]=e.strategy}params(e,r){if(!this[OE]){if(!this[zn])throw new Error("cannot switch params when binding is closed");if(!this[zn].params)throw new Error("not supported in this implementation");if(this[RU]!==e||this[TU]!==r){this.flush(Nd.Z_SYNC_FLUSH),OU(this[zn],"zlib binding closed");let o=this[zn].flush;this[zn].flush=(a,n)=>{this.flush(a),n()};try{this[zn].params(e,r)}finally{this[zn].flush=o}this[zn]&&(this[RU]=e,this[TU]=r)}}}},MU=class extends jf{constructor(e){super(e,"Deflate")}},UU=class extends jf{constructor(e){super(e,"Inflate")}},LU=Symbol("_portable"),_U=class extends jf{constructor(e){super(e,"Gzip"),this[LU]=e&&!!e.portable}[Ld](e){return this[LU]?(this[LU]=!1,e[9]=255,super[Ld](e)):super[Ld](e)}},HU=class extends jf{constructor(e){super(e,"Gunzip")}},qU=class extends jf{constructor(e){super(e,"DeflateRaw")}},jU=class extends jf{constructor(e){super(e,"InflateRaw")}},GU=class extends jf{constructor(e){super(e,"Unzip")}},zx=class extends Jx{constructor(e,r){e=e||{},e.flush=e.flush||Nd.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||Nd.BROTLI_OPERATION_FINISH,super(e,r),this[KU]=Nd.BROTLI_OPERATION_FLUSH}},WU=class extends zx{constructor(e){super(e,"BrotliCompress")}},YU=class extends zx{constructor(e){super(e,"BrotliDecompress")}};fl.Deflate=MU;fl.Inflate=UU;fl.Gzip=_U;fl.Gunzip=HU;fl.DeflateRaw=qU;fl.InflateRaw=jU;fl.Unzip=GU;typeof Uue.BrotliCompress=="function"?(fl.BrotliCompress=WU,fl.BrotliDecompress=YU):fl.BrotliCompress=fl.BrotliDecompress=class{constructor(){throw new Error("Brotli is not supported in this version of Node.js")}}});var UE=U(($Mt,_ue)=>{var aat=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;_ue.exports=aat!=="win32"?t=>t:t=>t&&t.replace(/\\/g,"/")});var Xx=U((t4t,Hue)=>{"use strict";var lat=LE(),JU=UE(),zU=Symbol("slurp");Hue.exports=class extends lat{constructor(e,r,o){switch(super(),this.pause(),this.extended=r,this.globalExtended=o,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.type,this.meta=!1,this.ignore=!1,this.type){case"File":case"OldFile":case"Link":case"SymbolicLink":case"CharacterDevice":case"BlockDevice":case"Directory":case"FIFO":case"ContiguousFile":case"GNUDumpDir":break;case"NextFileHasLongLinkpath":case"NextFileHasLongPath":case"OldGnuLongPath":case"GlobalExtendedHeader":case"ExtendedHeader":case"OldExtendedHeader":this.meta=!0;break;default:this.ignore=!0}this.path=JU(e.path),this.mode=e.mode,this.mode&&(this.mode=this.mode&4095),this.uid=e.uid,this.gid=e.gid,this.uname=e.uname,this.gname=e.gname,this.size=e.size,this.mtime=e.mtime,this.atime=e.atime,this.ctime=e.ctime,this.linkpath=JU(e.linkpath),this.uname=e.uname,this.gname=e.gname,r&&this[zU](r),o&&this[zU](o,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");let o=this.remain,a=this.blockRemain;return this.remain=Math.max(0,o-r),this.blockRemain=Math.max(0,a-r),this.ignore?!0:o>=r?super.write(e):super.write(e.slice(0,o))}[zU](e,r){for(let o in e)e[o]!==null&&e[o]!==void 0&&!(r&&o==="path")&&(this[o]=o==="path"||o==="linkpath"?JU(e[o]):e[o])}}});var XU=U(Zx=>{"use strict";Zx.name=new Map([["0","File"],["","OldFile"],["1","Link"],["2","SymbolicLink"],["3","CharacterDevice"],["4","BlockDevice"],["5","Directory"],["6","FIFO"],["7","ContiguousFile"],["g","GlobalExtendedHeader"],["x","ExtendedHeader"],["A","SolarisACL"],["D","GNUDumpDir"],["I","Inode"],["K","NextFileHasLongLinkpath"],["L","NextFileHasLongPath"],["M","ContinuationFile"],["N","OldGnuLongPath"],["S","SparseFile"],["V","TapeVolumeHeader"],["X","OldExtendedHeader"]]);Zx.code=new Map(Array.from(Zx.name).map(t=>[t[1],t[0]]))});var Wue=U((n4t,Gue)=>{"use strict";var cat=(t,e)=>{if(Number.isSafeInteger(t))t<0?Aat(t,e):uat(t,e);else throw Error("cannot encode number outside of javascript safe integer range");return e},uat=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},Aat=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var o=e.length;o>1;o--){var a=t&255;t=Math.floor(t/256),r?e[o-1]=que(a):a===0?e[o-1]=0:(r=!0,e[o-1]=jue(a))}},fat=t=>{let e=t[0],r=e===128?hat(t.slice(1,t.length)):e===255?pat(t):null;if(r===null)throw Error("invalid base256 encoding");if(!Number.isSafeInteger(r))throw Error("parsed number outside of javascript safe integer range");return r},pat=t=>{for(var e=t.length,r=0,o=!1,a=e-1;a>-1;a--){var n=t[a],u;o?u=que(n):n===0?u=n:(o=!0,u=jue(n)),u!==0&&(r-=u*Math.pow(256,e-a-1))}return r},hat=t=>{for(var e=t.length,r=0,o=e-1;o>-1;o--){var a=t[o];a!==0&&(r+=a*Math.pow(256,e-o-1))}return r},que=t=>(255^t)&255,jue=t=>(255^t)+1&255;Gue.exports={encode:cat,parse:fat}});var HE=U((i4t,Kue)=>{"use strict";var ZU=XU(),_E=Ie("path").posix,Yue=Wue(),$U=Symbol("slurp"),pl=Symbol("type"),r3=class{constructor(e,r,o,a){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[pl]="0",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,r||0,o,a):e&&this.set(e)}decode(e,r,o,a){if(r||(r=0),!e||!(e.length>=r+512))throw new Error("need 512 bytes for header");if(this.path=Od(e,r,100),this.mode=h0(e,r+100,8),this.uid=h0(e,r+108,8),this.gid=h0(e,r+116,8),this.size=h0(e,r+124,12),this.mtime=e3(e,r+136,12),this.cksum=h0(e,r+148,12),this[$U](o),this[$U](a,!0),this[pl]=Od(e,r+156,1),this[pl]===""&&(this[pl]="0"),this[pl]==="0"&&this.path.substr(-1)==="/"&&(this[pl]="5"),this[pl]==="5"&&(this.size=0),this.linkpath=Od(e,r+157,100),e.slice(r+257,r+265).toString()==="ustar\x0000")if(this.uname=Od(e,r+265,32),this.gname=Od(e,r+297,32),this.devmaj=h0(e,r+329,8),this.devmin=h0(e,r+337,8),e[r+475]!==0){let u=Od(e,r+345,155);this.path=u+"/"+this.path}else{let u=Od(e,r+345,130);u&&(this.path=u+"/"+this.path),this.atime=e3(e,r+476,12),this.ctime=e3(e,r+488,12)}let n=8*32;for(let u=r;u<r+148;u++)n+=e[u];for(let u=r+156;u<r+512;u++)n+=e[u];this.cksumValid=n===this.cksum,this.cksum===null&&n===8*32&&(this.nullBlock=!0)}[$U](e,r){for(let o in e)e[o]!==null&&e[o]!==void 0&&!(r&&o==="path")&&(this[o]=e[o])}encode(e,r){if(e||(e=this.block=Buffer.alloc(512),r=0),r||(r=0),!(e.length>=r+512))throw new Error("need 512 bytes for header");let o=this.ctime||this.atime?130:155,a=gat(this.path||"",o),n=a[0],u=a[1];this.needPax=a[2],this.needPax=Md(e,r,100,n)||this.needPax,this.needPax=g0(e,r+100,8,this.mode)||this.needPax,this.needPax=g0(e,r+108,8,this.uid)||this.needPax,this.needPax=g0(e,r+116,8,this.gid)||this.needPax,this.needPax=g0(e,r+124,12,this.size)||this.needPax,this.needPax=t3(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[pl].charCodeAt(0),this.needPax=Md(e,r+157,100,this.linkpath)||this.needPax,e.write("ustar\x0000",r+257,8),this.needPax=Md(e,r+265,32,this.uname)||this.needPax,this.needPax=Md(e,r+297,32,this.gname)||this.needPax,this.needPax=g0(e,r+329,8,this.devmaj)||this.needPax,this.needPax=g0(e,r+337,8,this.devmin)||this.needPax,this.needPax=Md(e,r+345,o,u)||this.needPax,e[r+475]!==0?this.needPax=Md(e,r+345,155,u)||this.needPax:(this.needPax=Md(e,r+345,130,u)||this.needPax,this.needPax=t3(e,r+476,12,this.atime)||this.needPax,this.needPax=t3(e,r+488,12,this.ctime)||this.needPax);let A=8*32;for(let p=r;p<r+148;p++)A+=e[p];for(let p=r+156;p<r+512;p++)A+=e[p];return this.cksum=A,g0(e,r+148,8,this.cksum),this.cksumValid=!0,this.needPax}set(e){for(let r in e)e[r]!==null&&e[r]!==void 0&&(this[r]=e[r])}get type(){return ZU.name.get(this[pl])||this[pl]}get typeKey(){return this[pl]}set type(e){ZU.code.has(e)?this[pl]=ZU.code.get(e):this[pl]=e}},gat=(t,e)=>{let o=t,a="",n,u=_E.parse(t).root||".";if(Buffer.byteLength(o)<100)n=[o,a,!1];else{a=_E.dirname(o),o=_E.basename(o);do Buffer.byteLength(o)<=100&&Buffer.byteLength(a)<=e?n=[o,a,!1]:Buffer.byteLength(o)>100&&Buffer.byteLength(a)<=e?n=[o.substr(0,100-1),a,!0]:(o=_E.join(_E.basename(a),o),a=_E.dirname(a));while(a!==u&&!n);n||(n=[t.substr(0,100-1),"",!0])}return n},Od=(t,e,r)=>t.slice(e,e+r).toString("utf8").replace(/\0.*/,""),e3=(t,e,r)=>dat(h0(t,e,r)),dat=t=>t===null?null:new Date(t*1e3),h0=(t,e,r)=>t[e]&128?Yue.parse(t.slice(e,e+r)):yat(t,e,r),mat=t=>isNaN(t)?null:t,yat=(t,e,r)=>mat(parseInt(t.slice(e,e+r).toString("utf8").replace(/\0.*$/,"").trim(),8)),Eat={12:8589934591,8:2097151},g0=(t,e,r,o)=>o===null?!1:o>Eat[r]||o<0?(Yue.encode(o,t.slice(e,e+r)),!0):(Cat(t,e,r,o),!1),Cat=(t,e,r,o)=>t.write(Iat(o,r),e,r,"ascii"),Iat=(t,e)=>wat(Math.floor(t).toString(8),e),wat=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join("0")+t+" ")+"\0",t3=(t,e,r,o)=>o===null?!1:g0(t,e,r,o.getTime()/1e3),Bat=new Array(156).join("\0"),Md=(t,e,r,o)=>o===null?!1:(t.write(o+Bat,e,r,"utf8"),o.length!==Buffer.byteLength(o)||o.length>r);Kue.exports=r3});var $x=U((s4t,Vue)=>{"use strict";var vat=HE(),Dat=Ie("path"),F1=class{constructor(e,r){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=r||!1}encode(){let e=this.encodeBody();if(e==="")return null;let r=Buffer.byteLength(e),o=512*Math.ceil(1+r/512),a=Buffer.allocUnsafe(o);for(let n=0;n<512;n++)a[n]=0;new vat({path:("PaxHeader/"+Dat.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?"GlobalExtendedHeader":"ExtendedHeader",linkpath:"",uname:this.uname||"",gname:this.gname||"",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(a),a.write(e,512,r,"utf8");for(let n=r+512;n<a.length;n++)a[n]=0;return a}encodeBody(){return this.encodeField("path")+this.encodeField("ctime")+this.encodeField("atime")+this.encodeField("dev")+this.encodeField("ino")+this.encodeField("nlink")+this.encodeField("charset")+this.encodeField("comment")+this.encodeField("gid")+this.encodeField("gname")+this.encodeField("linkpath")+this.encodeField("mtime")+this.encodeField("size")+this.encodeField("uid")+this.encodeField("uname")}encodeField(e){if(this[e]===null||this[e]===void 0)return"";let r=this[e]instanceof Date?this[e].getTime()/1e3:this[e],o=" "+(e==="dev"||e==="ino"||e==="nlink"?"SCHILY.":"")+e+"="+r+` |
185 | `,a=Buffer.byteLength(o),n=Math.floor(Math.log(a)/Math.log(10))+1;return a+n>=Math.pow(10,n)&&(n+=1),n+a+o}};S1.parse=(t,e,r)=>new S1(Aat(fat(t),e),r);var Aat=(t,e)=>e?Object.keys(t).reduce((r,o)=>(r[o]=t[o],r),e):t,fat=t=>t.replace(/\n$/,"").split(` | 185 | `,a=Buffer.byteLength(o),n=Math.floor(Math.log(a)/Math.log(10))+1;return a+n>=Math.pow(10,n)&&(n+=1),n+a+o}};F1.parse=(t,e,r)=>new F1(Sat(Pat(t),e),r);var Sat=(t,e)=>e?Object.keys(t).reduce((r,o)=>(r[o]=t[o],r),e):t,Pat=t=>t.replace(/\n$/,"").split(` |
186 | `).reduce(pat,Object.create(null)),pat=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+" ").length);let o=e.split("="),a=o.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!a)return t;let n=o.join("=");return t[a]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(a)?new Date(n*1e3):/^[0-9]+$/.test(n)?+n:n,t};_ue.exports=S1});var OE=U((HMt,Hue)=>{Hue.exports=t=>{let e=t.length-1,r=-1;for(;e>-1&&t.charAt(e)==="/";)r=e,e--;return r===-1?t:t.slice(0,r)}});var Wx=U((qMt,que)=>{"use strict";que.exports=t=>class extends t{warn(e,r,o={}){this.file&&(o.file=this.file),this.cwd&&(o.cwd=this.cwd),o.code=r instanceof Error&&r.code||e,o.tarCode=e,!this.strict&&o.recoverable!==!1?(r instanceof Error&&(o=Object.assign(r,o),r=r.message),this.emit("warn",o.tarCode,r,o)):r instanceof Error?this.emit("error",Object.assign(r,o)):this.emit("error",Object.assign(new Error(`${e}: ${r}`),o))}}});var t3=U((GMt,jue)=>{"use strict";var Yx=["|","<",">","?",":"],e3=Yx.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),hat=new Map(Yx.map((t,e)=>[t,e3[e]])),gat=new Map(e3.map((t,e)=>[t,Yx[e]]));jue.exports={encode:t=>Yx.reduce((e,r)=>e.split(r).join(hat.get(r)),t),decode:t=>e3.reduce((e,r)=>e.split(r).join(gat.get(r)),t)}});var r3=U((WMt,Wue)=>{var{isAbsolute:dat,parse:Gue}=Ie("path").win32;Wue.exports=t=>{let e="",r=Gue(t);for(;dat(t)||r.root;){let o=t.charAt(0)==="/"&&t.slice(0,4)!=="//?/"?"/":r.root;t=t.substr(o.length),e+=o,r=Gue(t)}return[e,t]}});var Kue=U((YMt,Yue)=>{"use strict";Yue.exports=(t,e,r)=>(t&=4095,r&&(t=(t|384)&-19),e&&(t&256&&(t|=64),t&32&&(t|=8),t&4&&(t|=1)),t)});var f3=U((VMt,aAe)=>{"use strict";var eAe=kE(),tAe=Gx(),rAe=LE(),aA=Ie("fs"),Jue=Ie("path"),oA=TE(),mat=OE(),nAe=(t,e)=>e?(t=oA(t).replace(/^\.(\/|$)/,""),mat(e)+"/"+t):oA(t),yat=16*1024*1024,Vue=Symbol("process"),zue=Symbol("file"),Xue=Symbol("directory"),i3=Symbol("symlink"),Zue=Symbol("hardlink"),P1=Symbol("header"),Kx=Symbol("read"),s3=Symbol("lstat"),Jx=Symbol("onlstat"),o3=Symbol("onread"),a3=Symbol("onreadlink"),l3=Symbol("openfile"),c3=Symbol("onopenfile"),h0=Symbol("close"),Vx=Symbol("mode"),u3=Symbol("awaitDrain"),n3=Symbol("ondrain"),lA=Symbol("prefix"),$ue=Symbol("hadError"),iAe=Wx(),Eat=t3(),sAe=r3(),oAe=Kue(),zx=iAe(class extends eAe{constructor(e,r){if(r=r||{},super(r),typeof e!="string")throw new TypeError("path is required");this.path=oA(e),this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid()||0,this.myuser=process.env.USER||"",this.maxReadSize=r.maxReadSize||yat,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=oA(r.cwd||process.cwd()),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,this.prefix=r.prefix?oA(r.prefix):null,this.fd=null,this.blockLen=null,this.blockRemain=null,this.buf=null,this.offset=null,this.length=null,this.pos=null,this.remain=null,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let o=!1;if(!this.preservePaths){let[a,n]=sAe(this.path);a&&(this.path=n,o=a)}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=Eat.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=oA(r.absolute||Jue.resolve(this.cwd,e)),this.path===""&&(this.path="./"),o&&this.warn("TAR_ENTRY_INFO",`stripping ${o} from absolute path`,{entry:this,path:o+this.path}),this.statCache.has(this.absolute)?this[Jx](this.statCache.get(this.absolute)):this[s3]()}emit(e,...r){return e==="error"&&(this[$ue]=!0),super.emit(e,...r)}[s3](){aA.lstat(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[Jx](r)})}[Jx](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=Iat(e),this.emit("stat",e),this[Vue]()}[Vue](){switch(this.type){case"File":return this[zue]();case"Directory":return this[Xue]();case"SymbolicLink":return this[i3]();default:return this.end()}}[Vx](e){return oAe(e,this.type==="Directory",this.portable)}[lA](e){return nAe(e,this.prefix)}[P1](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new rAe({path:this[lA](this.path),linkpath:this.type==="Link"?this[lA](this.linkpath):this.linkpath,mode:this[Vx](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new tAe({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this[lA](this.path),linkpath:this.type==="Link"?this[lA](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),super.write(this.header.block)}[Xue](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[P1](),this.end()}[i3](){aA.readlink(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[a3](r)})}[a3](e){this.linkpath=oA(e),this[P1](),this.end()}[Zue](e){this.type="Link",this.linkpath=oA(Jue.relative(this.cwd,e)),this.stat.size=0,this[P1](),this.end()}[zue](){if(this.stat.nlink>1){let e=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(e)){let r=this.linkCache.get(e);if(r.indexOf(this.cwd)===0)return this[Zue](r)}this.linkCache.set(e,this.absolute)}if(this[P1](),this.stat.size===0)return this.end();this[l3]()}[l3](){aA.open(this.absolute,"r",(e,r)=>{if(e)return this.emit("error",e);this[c3](r)})}[c3](e){if(this.fd=e,this[$ue])return this[h0]();this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let r=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(r),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[Kx]()}[Kx](){let{fd:e,buf:r,offset:o,length:a,pos:n}=this;aA.read(e,r,o,a,n,(u,A)=>{if(u)return this[h0](()=>this.emit("error",u));this[o3](A)})}[h0](e){aA.close(this.fd,e)}[o3](e){if(e<=0&&this.remain>0){let a=new Error("encountered unexpected EOF");return a.path=this.absolute,a.syscall="read",a.code="EOF",this[h0](()=>this.emit("error",a))}if(e>this.remain){let a=new Error("did not encounter expected EOF");return a.path=this.absolute,a.syscall="read",a.code="EOF",this[h0](()=>this.emit("error",a))}if(e===this.remain)for(let a=e;a<this.length&&e<this.blockRemain;a++)this.buf[a+this.offset]=0,e++,this.remain++;let r=this.offset===0&&e===this.buf.length?this.buf:this.buf.slice(this.offset,this.offset+e);this.write(r)?this[n3]():this[u3](()=>this[n3]())}[u3](e){this.once("drain",e)}write(e){if(this.blockRemain<e.length){let r=new Error("writing more data than expected");return r.path=this.absolute,this.emit("error",r)}return this.remain-=e.length,this.blockRemain-=e.length,this.pos+=e.length,this.offset+=e.length,super.write(e)}[n3](){if(!this.remain)return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),this[h0](e=>e?this.emit("error",e):this.end());this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[Kx]()}}),A3=class extends zx{[s3](){this[Jx](aA.lstatSync(this.absolute))}[i3](){this[a3](aA.readlinkSync(this.absolute))}[l3](){this[c3](aA.openSync(this.absolute,"r"))}[Kx](){let e=!0;try{let{fd:r,buf:o,offset:a,length:n,pos:u}=this,A=aA.readSync(r,o,a,n,u);this[o3](A),e=!1}finally{if(e)try{this[h0](()=>{})}catch{}}}[u3](e){e()}[h0](e){aA.closeSync(this.fd),e()}},Cat=iAe(class extends eAe{constructor(e,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=e,this.type=e.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=r.prefix||null,this.path=oA(e.path),this.mode=this[Vx](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:r.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=oA(e.linkpath),typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let o=!1;if(!this.preservePaths){let[a,n]=sAe(this.path);a&&(this.path=n,o=a)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new rAe({path:this[lA](this.path),linkpath:this.type==="Link"?this[lA](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),o&&this.warn("TAR_ENTRY_INFO",`stripping ${o} from absolute path`,{entry:this,path:o+this.path}),this.header.encode()&&!this.noPax&&super.write(new tAe({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this[lA](this.path),linkpath:this.type==="Link"?this[lA](this.linkpath):this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),e.pipe(this)}[lA](e){return nAe(e,this.prefix)}[Vx](e){return oAe(e,this.type==="Directory",this.portable)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e)}end(){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),super.end()}});zx.Sync=A3;zx.Tar=Cat;var Iat=t=>t.isFile()?"File":t.isDirectory()?"Directory":t.isSymbolicLink()?"SymbolicLink":"Unsupported";aAe.exports=zx});var sb=U((XMt,hAe)=>{"use strict";var nb=class{constructor(e,r){this.path=e||"./",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},wat=kE(),Bat=WU(),vat=qx(),I3=f3(),Dat=I3.Sync,Sat=I3.Tar,Pat=iS(),lAe=Buffer.alloc(1024),$x=Symbol("onStat"),Xx=Symbol("ended"),cA=Symbol("queue"),ME=Symbol("current"),Nd=Symbol("process"),Zx=Symbol("processing"),cAe=Symbol("processJob"),uA=Symbol("jobs"),p3=Symbol("jobDone"),eb=Symbol("addFSEntry"),uAe=Symbol("addTarEntry"),m3=Symbol("stat"),y3=Symbol("readdir"),tb=Symbol("onreaddir"),rb=Symbol("pipe"),AAe=Symbol("entry"),h3=Symbol("entryOpt"),E3=Symbol("writeEntryClass"),pAe=Symbol("write"),g3=Symbol("ondrain"),ib=Ie("fs"),fAe=Ie("path"),xat=Wx(),d3=TE(),w3=xat(class extends wat{constructor(e){super(e),e=e||Object.create(null),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=d3(e.prefix||""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[E3]=I3,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new Bat.Gzip(e.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[g3]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[g3]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter=="function"?e.filter:r=>!0,this[cA]=new Pat,this[uA]=0,this.jobs=+e.jobs||4,this[Zx]=!1,this[Xx]=!1}[pAe](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[Xx]=!0,this[Nd](),this}write(e){if(this[Xx])throw new Error("write after end");return e instanceof vat?this[uAe](e):this[eb](e),this.flowing}[uAe](e){let r=d3(fAe.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let o=new nb(e.path,r,!1);o.entry=new Sat(e,this[h3](o)),o.entry.on("end",a=>this[p3](o)),this[uA]+=1,this[cA].push(o)}this[Nd]()}[eb](e){let r=d3(fAe.resolve(this.cwd,e));this[cA].push(new nb(e,r)),this[Nd]()}[m3](e){e.pending=!0,this[uA]+=1;let r=this.follow?"stat":"lstat";ib[r](e.absolute,(o,a)=>{e.pending=!1,this[uA]-=1,o?this.emit("error",o):this[$x](e,a)})}[$x](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[Nd]()}[y3](e){e.pending=!0,this[uA]+=1,ib.readdir(e.absolute,(r,o)=>{if(e.pending=!1,this[uA]-=1,r)return this.emit("error",r);this[tb](e,o)})}[tb](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[Nd]()}[Nd](){if(!this[Zx]){this[Zx]=!0;for(let e=this[cA].head;e!==null&&this[uA]<this.jobs;e=e.next)if(this[cAe](e.value),e.value.ignore){let r=e.next;this[cA].removeNode(e),e.next=r}this[Zx]=!1,this[Xx]&&!this[cA].length&&this[uA]===0&&(this.zip?this.zip.end(lAe):(super.write(lAe),super.end()))}}get[ME](){return this[cA]&&this[cA].head&&this[cA].head.value}[p3](e){this[cA].shift(),this[uA]-=1,this[Nd]()}[cAe](e){if(!e.pending){if(e.entry){e===this[ME]&&!e.piped&&this[rb](e);return}if(e.stat||(this.statCache.has(e.absolute)?this[$x](e,this.statCache.get(e.absolute)):this[m3](e)),!!e.stat&&!e.ignore&&!(!this.noDirRecurse&&e.stat.isDirectory()&&!e.readdir&&(this.readdirCache.has(e.absolute)?this[tb](e,this.readdirCache.get(e.absolute)):this[y3](e),!e.readdir))){if(e.entry=this[AAe](e),!e.entry){e.ignore=!0;return}e===this[ME]&&!e.piped&&this[rb](e)}}}[h3](e){return{onwarn:(r,o,a)=>this.warn(r,o,a),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix}}[AAe](e){this[uA]+=1;try{return new this[E3](e.path,this[h3](e)).on("end",()=>this[p3](e)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[g3](){this[ME]&&this[ME].entry&&this[ME].entry.resume()}[rb](e){e.piped=!0,e.readdir&&e.readdir.forEach(a=>{let n=e.path,u=n==="./"?"":n.replace(/\/*$/,"/");this[eb](u+a)});let r=e.entry,o=this.zip;o?r.on("data",a=>{o.write(a)||r.pause()}):r.on("data",a=>{super.write(a)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),C3=class extends w3{constructor(e){super(e),this[E3]=Dat}pause(){}resume(){}[m3](e){let r=this.follow?"statSync":"lstatSync";this[$x](e,ib[r](e.absolute))}[y3](e,r){this[tb](e,ib.readdirSync(e.absolute))}[rb](e){let r=e.entry,o=this.zip;e.readdir&&e.readdir.forEach(a=>{let n=e.path,u=n==="./"?"":n.replace(/\/*$/,"/");this[eb](u+a)}),o?r.on("data",a=>{o.write(a)}):r.on("data",a=>{super[pAe](a)})}};w3.Sync=C3;hAe.exports=w3});var YE=U(b1=>{"use strict";var bat=kE(),Qat=Ie("events").EventEmitter,Qa=Ie("fs"),D3=Qa.writev;if(!D3){let t=process.binding("fs"),e=t.FSReqWrap||t.FSReqCallback;D3=(r,o,a,n)=>{let u=(p,h)=>n(p,h,o),A=new e;A.oncomplete=u,t.writeBuffers(r,o,a,A)}}var GE=Symbol("_autoClose"),Kc=Symbol("_close"),x1=Symbol("_ended"),Mn=Symbol("_fd"),gAe=Symbol("_finished"),d0=Symbol("_flags"),B3=Symbol("_flush"),S3=Symbol("_handleChunk"),P3=Symbol("_makeBuf"),Ab=Symbol("_mode"),ob=Symbol("_needDrain"),qE=Symbol("_onerror"),WE=Symbol("_onopen"),v3=Symbol("_onread"),_E=Symbol("_onwrite"),m0=Symbol("_open"),_f=Symbol("_path"),Ld=Symbol("_pos"),AA=Symbol("_queue"),HE=Symbol("_read"),dAe=Symbol("_readSize"),g0=Symbol("_reading"),ab=Symbol("_remain"),mAe=Symbol("_size"),lb=Symbol("_write"),UE=Symbol("_writing"),ub=Symbol("_defaultFlag"),jE=Symbol("_errored"),fb=class extends bat{constructor(e,r){if(r=r||{},super(r),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[jE]=!1,this[Mn]=typeof r.fd=="number"?r.fd:null,this[_f]=e,this[dAe]=r.readSize||16*1024*1024,this[g0]=!1,this[mAe]=typeof r.size=="number"?r.size:1/0,this[ab]=this[mAe],this[GE]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[Mn]=="number"?this[HE]():this[m0]()}get fd(){return this[Mn]}get path(){return this[_f]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[m0](){Qa.open(this[_f],"r",(e,r)=>this[WE](e,r))}[WE](e,r){e?this[qE](e):(this[Mn]=r,this.emit("open",r),this[HE]())}[P3](){return Buffer.allocUnsafe(Math.min(this[dAe],this[ab]))}[HE](){if(!this[g0]){this[g0]=!0;let e=this[P3]();if(e.length===0)return process.nextTick(()=>this[v3](null,0,e));Qa.read(this[Mn],e,0,e.length,null,(r,o,a)=>this[v3](r,o,a))}}[v3](e,r,o){this[g0]=!1,e?this[qE](e):this[S3](r,o)&&this[HE]()}[Kc](){if(this[GE]&&typeof this[Mn]=="number"){let e=this[Mn];this[Mn]=null,Qa.close(e,r=>r?this.emit("error",r):this.emit("close"))}}[qE](e){this[g0]=!0,this[Kc](),this.emit("error",e)}[S3](e,r){let o=!1;return this[ab]-=e,e>0&&(o=super.write(e<r.length?r.slice(0,e):r)),(e===0||this[ab]<=0)&&(o=!1,this[Kc](),super.end()),o}emit(e,r){switch(e){case"prefinish":case"finish":break;case"drain":typeof this[Mn]=="number"&&this[HE]();break;case"error":return this[jE]?void 0:(this[jE]=!0,super.emit(e,r));default:return super.emit(e,r)}}},x3=class extends fb{[m0](){let e=!0;try{this[WE](null,Qa.openSync(this[_f],"r")),e=!1}finally{e&&this[Kc]()}}[HE](){let e=!0;try{if(!this[g0]){this[g0]=!0;do{let r=this[P3](),o=r.length===0?0:Qa.readSync(this[Mn],r,0,r.length,null);if(!this[S3](o,r))break}while(!0);this[g0]=!1}e=!1}finally{e&&this[Kc]()}}[Kc](){if(this[GE]&&typeof this[Mn]=="number"){let e=this[Mn];this[Mn]=null,Qa.closeSync(e),this.emit("close")}}},pb=class extends Qat{constructor(e,r){r=r||{},super(r),this.readable=!1,this.writable=!0,this[jE]=!1,this[UE]=!1,this[x1]=!1,this[ob]=!1,this[AA]=[],this[_f]=e,this[Mn]=typeof r.fd=="number"?r.fd:null,this[Ab]=r.mode===void 0?438:r.mode,this[Ld]=typeof r.start=="number"?r.start:null,this[GE]=typeof r.autoClose=="boolean"?r.autoClose:!0;let o=this[Ld]!==null?"r+":"w";this[ub]=r.flags===void 0,this[d0]=this[ub]?o:r.flags,this[Mn]===null&&this[m0]()}emit(e,r){if(e==="error"){if(this[jE])return;this[jE]=!0}return super.emit(e,r)}get fd(){return this[Mn]}get path(){return this[_f]}[qE](e){this[Kc](),this[UE]=!0,this.emit("error",e)}[m0](){Qa.open(this[_f],this[d0],this[Ab],(e,r)=>this[WE](e,r))}[WE](e,r){this[ub]&&this[d0]==="r+"&&e&&e.code==="ENOENT"?(this[d0]="w",this[m0]()):e?this[qE](e):(this[Mn]=r,this.emit("open",r),this[B3]())}end(e,r){return e&&this.write(e,r),this[x1]=!0,!this[UE]&&!this[AA].length&&typeof this[Mn]=="number"&&this[_E](null,0),this}write(e,r){return typeof e=="string"&&(e=Buffer.from(e,r)),this[x1]?(this.emit("error",new Error("write() after end()")),!1):this[Mn]===null||this[UE]||this[AA].length?(this[AA].push(e),this[ob]=!0,!1):(this[UE]=!0,this[lb](e),!0)}[lb](e){Qa.write(this[Mn],e,0,e.length,this[Ld],(r,o)=>this[_E](r,o))}[_E](e,r){e?this[qE](e):(this[Ld]!==null&&(this[Ld]+=r),this[AA].length?this[B3]():(this[UE]=!1,this[x1]&&!this[gAe]?(this[gAe]=!0,this[Kc](),this.emit("finish")):this[ob]&&(this[ob]=!1,this.emit("drain"))))}[B3](){if(this[AA].length===0)this[x1]&&this[_E](null,0);else if(this[AA].length===1)this[lb](this[AA].pop());else{let e=this[AA];this[AA]=[],D3(this[Mn],e,this[Ld],(r,o)=>this[_E](r,o))}}[Kc](){if(this[GE]&&typeof this[Mn]=="number"){let e=this[Mn];this[Mn]=null,Qa.close(e,r=>r?this.emit("error",r):this.emit("close"))}}},b3=class extends pb{[m0](){let e;if(this[ub]&&this[d0]==="r+")try{e=Qa.openSync(this[_f],this[d0],this[Ab])}catch(r){if(r.code==="ENOENT")return this[d0]="w",this[m0]();throw r}else e=Qa.openSync(this[_f],this[d0],this[Ab]);this[WE](null,e)}[Kc](){if(this[GE]&&typeof this[Mn]=="number"){let e=this[Mn];this[Mn]=null,Qa.closeSync(e),this.emit("close")}}[lb](e){let r=!0;try{this[_E](null,Qa.writeSync(this[Mn],e,0,e.length,this[Ld])),r=!1}finally{if(r)try{this[Kc]()}catch{}}}};b1.ReadStream=fb;b1.ReadStreamSync=x3;b1.WriteStream=pb;b1.WriteStreamSync=b3});var Cb=U((e4t,vAe)=>{"use strict";var kat=Wx(),Fat=LE(),Rat=Ie("events"),Tat=iS(),Nat=1024*1024,Lat=qx(),yAe=Gx(),Oat=WU(),Q3=Buffer.from([31,139]),$l=Symbol("state"),Od=Symbol("writeEntry"),Hf=Symbol("readEntry"),k3=Symbol("nextEntry"),EAe=Symbol("processEntry"),ec=Symbol("extendedHeader"),Q1=Symbol("globalExtendedHeader"),y0=Symbol("meta"),CAe=Symbol("emitMeta"),li=Symbol("buffer"),qf=Symbol("queue"),Md=Symbol("ended"),IAe=Symbol("emittedEnd"),Ud=Symbol("emit"),ka=Symbol("unzip"),hb=Symbol("consumeChunk"),gb=Symbol("consumeChunkSub"),F3=Symbol("consumeBody"),wAe=Symbol("consumeMeta"),BAe=Symbol("consumeHeader"),db=Symbol("consuming"),R3=Symbol("bufferConcat"),T3=Symbol("maybeEnd"),k1=Symbol("writing"),E0=Symbol("aborted"),mb=Symbol("onDone"),_d=Symbol("sawValidEntry"),yb=Symbol("sawNullBlock"),Eb=Symbol("sawEOF"),Mat=t=>!0;vAe.exports=kat(class extends Rat{constructor(e){e=e||{},super(e),this.file=e.file||"",this[_d]=null,this.on(mb,r=>{(this[$l]==="begin"||this[_d]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(mb,e.ondone):this.on(mb,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||Nat,this.filter=typeof e.filter=="function"?e.filter:Mat,this.writable=!0,this.readable=!1,this[qf]=new Tat,this[li]=null,this[Hf]=null,this[Od]=null,this[$l]="begin",this[y0]="",this[ec]=null,this[Q1]=null,this[Md]=!1,this[ka]=null,this[E0]=!1,this[yb]=!1,this[Eb]=!1,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onentry=="function"&&this.on("entry",e.onentry)}[BAe](e,r){this[_d]===null&&(this[_d]=!1);let o;try{o=new Fat(e,r,this[ec],this[Q1])}catch(a){return this.warn("TAR_ENTRY_INVALID",a)}if(o.nullBlock)this[yb]?(this[Eb]=!0,this[$l]==="begin"&&(this[$l]="header"),this[Ud]("eof")):(this[yb]=!0,this[Ud]("nullBlock"));else if(this[yb]=!1,!o.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:o});else if(!o.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:o});else{let a=o.type;if(/^(Symbolic)?Link$/.test(a)&&!o.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:o});else if(!/^(Symbolic)?Link$/.test(a)&&o.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:o});else{let n=this[Od]=new Lat(o,this[ec],this[Q1]);if(!this[_d])if(n.remain){let u=()=>{n.invalid||(this[_d]=!0)};n.on("end",u)}else this[_d]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[Ud]("ignoredEntry",n),this[$l]="ignore",n.resume()):n.size>0&&(this[y0]="",n.on("data",u=>this[y0]+=u),this[$l]="meta"):(this[ec]=null,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[Ud]("ignoredEntry",n),this[$l]=n.remain?"ignore":"header",n.resume()):(n.remain?this[$l]="body":(this[$l]="header",n.end()),this[Hf]?this[qf].push(n):(this[qf].push(n),this[k3]())))}}}[EAe](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[Hf]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",o=>this[k3]()),r=!1)):(this[Hf]=null,r=!1),r}[k3](){do;while(this[EAe](this[qf].shift()));if(!this[qf].length){let e=this[Hf];!e||e.flowing||e.size===e.remain?this[k1]||this.emit("drain"):e.once("drain",o=>this.emit("drain"))}}[F3](e,r){let o=this[Od],a=o.blockRemain,n=a>=e.length&&r===0?e:e.slice(r,r+a);return o.write(n),o.blockRemain||(this[$l]="header",this[Od]=null,o.end()),n.length}[wAe](e,r){let o=this[Od],a=this[F3](e,r);return this[Od]||this[CAe](o),a}[Ud](e,r,o){!this[qf].length&&!this[Hf]?this.emit(e,r,o):this[qf].push([e,r,o])}[CAe](e){switch(this[Ud]("meta",this[y0]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[ec]=yAe.parse(this[y0],this[ec],!1);break;case"GlobalExtendedHeader":this[Q1]=yAe.parse(this[y0],this[Q1],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[ec]=this[ec]||Object.create(null),this[ec].path=this[y0].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[ec]=this[ec]||Object.create(null),this[ec].linkpath=this[y0].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+e.type)}}abort(e){this[E0]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e){if(this[E0])return;if(this[ka]===null&&e){if(this[li]&&(e=Buffer.concat([this[li],e]),this[li]=null),e.length<Q3.length)return this[li]=e,!0;for(let o=0;this[ka]===null&&o<Q3.length;o++)e[o]!==Q3[o]&&(this[ka]=!1);if(this[ka]===null){let o=this[Md];this[Md]=!1,this[ka]=new Oat.Unzip,this[ka].on("data",n=>this[hb](n)),this[ka].on("error",n=>this.abort(n)),this[ka].on("end",n=>{this[Md]=!0,this[hb]()}),this[k1]=!0;let a=this[ka][o?"end":"write"](e);return this[k1]=!1,a}}this[k1]=!0,this[ka]?this[ka].write(e):this[hb](e),this[k1]=!1;let r=this[qf].length?!1:this[Hf]?this[Hf].flowing:!0;return!r&&!this[qf].length&&this[Hf].once("drain",o=>this.emit("drain")),r}[R3](e){e&&!this[E0]&&(this[li]=this[li]?Buffer.concat([this[li],e]):e)}[T3](){if(this[Md]&&!this[IAe]&&!this[E0]&&!this[db]){this[IAe]=!0;let e=this[Od];if(e&&e.blockRemain){let r=this[li]?this[li].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[li]&&e.write(this[li]),e.end()}this[Ud](mb)}}[hb](e){if(this[db])this[R3](e);else if(!e&&!this[li])this[T3]();else{if(this[db]=!0,this[li]){this[R3](e);let r=this[li];this[li]=null,this[gb](r)}else this[gb](e);for(;this[li]&&this[li].length>=512&&!this[E0]&&!this[Eb];){let r=this[li];this[li]=null,this[gb](r)}this[db]=!1}(!this[li]||this[Md])&&this[T3]()}[gb](e){let r=0,o=e.length;for(;r+512<=o&&!this[E0]&&!this[Eb];)switch(this[$l]){case"begin":case"header":this[BAe](e,r),r+=512;break;case"ignore":case"body":r+=this[F3](e,r);break;case"meta":r+=this[wAe](e,r);break;default:throw new Error("invalid state: "+this[$l])}r<o&&(this[li]?this[li]=Buffer.concat([e.slice(r),this[li]]):this[li]=e.slice(r))}end(e){this[E0]||(this[ka]?this[ka].end(e):(this[Md]=!0,this.write(e)))}})});var Ib=U((t4t,xAe)=>{"use strict";var Uat=bE(),SAe=Cb(),KE=Ie("fs"),_at=YE(),DAe=Ie("path"),N3=OE();xAe.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let o=Uat(t);if(o.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!o.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&qat(o,e),o.noResume||Hat(o),o.file&&o.sync?jat(o):o.file?Gat(o,r):PAe(o)};var Hat=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},qat=(t,e)=>{let r=new Map(e.map(n=>[N3(n),!0])),o=t.filter,a=(n,u)=>{let A=u||DAe.parse(n).root||".",p=n===A?!1:r.has(n)?r.get(n):a(DAe.dirname(n),A);return r.set(n,p),p};t.filter=o?(n,u)=>o(n,u)&&a(N3(n)):n=>a(N3(n))},jat=t=>{let e=PAe(t),r=t.file,o=!0,a;try{let n=KE.statSync(r),u=t.maxReadSize||16*1024*1024;if(n.size<u)e.end(KE.readFileSync(r));else{let A=0,p=Buffer.allocUnsafe(u);for(a=KE.openSync(r,"r");A<n.size;){let h=KE.readSync(a,p,0,u,A);A+=h,e.write(p.slice(0,h))}e.end()}o=!1}finally{if(o&&a)try{KE.closeSync(a)}catch{}}},Gat=(t,e)=>{let r=new SAe(t),o=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((u,A)=>{r.on("error",A),r.on("end",u),KE.stat(a,(p,h)=>{if(p)A(p);else{let C=new _at.ReadStream(a,{readSize:o,size:h.size});C.on("error",A),C.pipe(r)}})});return e?n.then(e,e):n},PAe=t=>new SAe(t)});var TAe=U((r4t,RAe)=>{"use strict";var Wat=bE(),wb=sb(),bAe=YE(),QAe=Ib(),kAe=Ie("path");RAe.exports=(t,e,r)=>{if(typeof e=="function"&&(r=e),Array.isArray(t)&&(e=t,t={}),!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");e=Array.from(e);let o=Wat(t);if(o.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!o.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return o.file&&o.sync?Yat(o,e):o.file?Kat(o,e,r):o.sync?Jat(o,e):Vat(o,e)};var Yat=(t,e)=>{let r=new wb.Sync(t),o=new bAe.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(o),FAe(r,e)},Kat=(t,e,r)=>{let o=new wb(t),a=new bAe.WriteStream(t.file,{mode:t.mode||438});o.pipe(a);let n=new Promise((u,A)=>{a.on("error",A),a.on("close",u),o.on("error",A)});return L3(o,e),r?n.then(r,r):n},FAe=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?QAe({file:kAe.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:o=>t.add(o)}):t.add(r)}),t.end()},L3=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return QAe({file:kAe.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:o=>t.add(o)}).then(o=>L3(t,e));t.add(r)}t.end()},Jat=(t,e)=>{let r=new wb.Sync(t);return FAe(r,e),r},Vat=(t,e)=>{let r=new wb(t);return L3(r,e),r}});var O3=U((n4t,HAe)=>{"use strict";var zat=bE(),NAe=sb(),ul=Ie("fs"),LAe=YE(),OAe=Ib(),MAe=Ie("path"),UAe=LE();HAe.exports=(t,e,r)=>{let o=zat(t);if(!o.file)throw new TypeError("file is required");if(o.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),o.sync?Xat(o,e):$at(o,e,r)};var Xat=(t,e)=>{let r=new NAe.Sync(t),o=!0,a,n;try{try{a=ul.openSync(t.file,"r+")}catch(p){if(p.code==="ENOENT")a=ul.openSync(t.file,"w+");else throw p}let u=ul.fstatSync(a),A=Buffer.alloc(512);e:for(n=0;n<u.size;n+=512){for(let C=0,w=0;C<512;C+=w){if(w=ul.readSync(a,A,C,A.length-C,n+C),n===0&&A[0]===31&&A[1]===139)throw new Error("cannot append to compressed archives");if(!w)break e}let p=new UAe(A);if(!p.cksumValid)break;let h=512*Math.ceil(p.size/512);if(n+h+512>u.size)break;n+=h,t.mtimeCache&&t.mtimeCache.set(p.path,p.mtime)}o=!1,Zat(t,r,n,a,e)}finally{if(o)try{ul.closeSync(a)}catch{}}},Zat=(t,e,r,o,a)=>{let n=new LAe.WriteStreamSync(t.file,{fd:o,start:r});e.pipe(n),elt(e,a)},$at=(t,e,r)=>{e=Array.from(e);let o=new NAe(t),a=(u,A,p)=>{let h=(E,R)=>{E?ul.close(u,L=>p(E)):p(null,R)},C=0;if(A===0)return h(null,0);let w=0,v=Buffer.alloc(512),b=(E,R)=>{if(E)return h(E);if(w+=R,w<512&&R)return ul.read(u,v,w,v.length-w,C+w,b);if(C===0&&v[0]===31&&v[1]===139)return h(new Error("cannot append to compressed archives"));if(w<512)return h(null,C);let L=new UAe(v);if(!L.cksumValid)return h(null,C);let _=512*Math.ceil(L.size/512);if(C+_+512>A||(C+=_+512,C>=A))return h(null,C);t.mtimeCache&&t.mtimeCache.set(L.path,L.mtime),w=0,ul.read(u,v,0,512,C,b)};ul.read(u,v,0,512,C,b)},n=new Promise((u,A)=>{o.on("error",A);let p="r+",h=(C,w)=>{if(C&&C.code==="ENOENT"&&p==="r+")return p="w+",ul.open(t.file,p,h);if(C)return A(C);ul.fstat(w,(v,b)=>{if(v)return ul.close(w,()=>A(v));a(w,b.size,(E,R)=>{if(E)return A(E);let L=new LAe.WriteStream(t.file,{fd:w,start:R});o.pipe(L),L.on("error",A),L.on("close",u),_Ae(o,e)})})};ul.open(t.file,p,h)});return r?n.then(r,r):n},elt=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?OAe({file:MAe.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:o=>t.add(o)}):t.add(r)}),t.end()},_Ae=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return OAe({file:MAe.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:o=>t.add(o)}).then(o=>_Ae(t,e));t.add(r)}t.end()}});var jAe=U((i4t,qAe)=>{"use strict";var tlt=bE(),rlt=O3();qAe.exports=(t,e,r)=>{let o=tlt(t);if(!o.file)throw new TypeError("file is required");if(o.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),nlt(o),rlt(o,e,r)};var nlt=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,o)=>e(r,o)&&!(t.mtimeCache.get(r)>o.mtime):(r,o)=>!(t.mtimeCache.get(r)>o.mtime)}});var YAe=U((s4t,WAe)=>{var{promisify:GAe}=Ie("util"),C0=Ie("fs"),ilt=t=>{if(!t)t={mode:511,fs:C0};else if(typeof t=="object")t={mode:511,fs:C0,...t};else if(typeof t=="number")t={mode:t,fs:C0};else if(typeof t=="string")t={mode:parseInt(t,8),fs:C0};else throw new TypeError("invalid options argument");return t.mkdir=t.mkdir||t.fs.mkdir||C0.mkdir,t.mkdirAsync=GAe(t.mkdir),t.stat=t.stat||t.fs.stat||C0.stat,t.statAsync=GAe(t.stat),t.statSync=t.statSync||t.fs.statSync||C0.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||C0.mkdirSync,t};WAe.exports=ilt});var JAe=U((o4t,KAe)=>{var slt=process.platform,{resolve:olt,parse:alt}=Ie("path"),llt=t=>{if(/\0/.test(t))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:t,code:"ERR_INVALID_ARG_VALUE"});if(t=olt(t),slt==="win32"){let e=/[*|"<>?:]/,{root:r}=alt(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:t,code:"EINVAL"})}return t};KAe.exports=llt});var $Ae=U((a4t,ZAe)=>{var{dirname:VAe}=Ie("path"),zAe=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(o=>o.isDirectory()?r:void 0,o=>o.code==="ENOENT"?zAe(t,VAe(e),e):void 0),XAe=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(o){return o.code==="ENOENT"?XAe(t,VAe(e),e):void 0}};ZAe.exports={findMade:zAe,findMadeSync:XAe}});var _3=U((l4t,tfe)=>{var{dirname:efe}=Ie("path"),M3=(t,e,r)=>{e.recursive=!1;let o=efe(t);return o===t?e.mkdirAsync(t,e).catch(a=>{if(a.code!=="EISDIR")throw a}):e.mkdirAsync(t,e).then(()=>r||t,a=>{if(a.code==="ENOENT")return M3(o,e).then(n=>M3(t,e,n));if(a.code!=="EEXIST"&&a.code!=="EROFS")throw a;return e.statAsync(t).then(n=>{if(n.isDirectory())return r;throw a},()=>{throw a})})},U3=(t,e,r)=>{let o=efe(t);if(e.recursive=!1,o===t)try{return e.mkdirSync(t,e)}catch(a){if(a.code!=="EISDIR")throw a;return}try{return e.mkdirSync(t,e),r||t}catch(a){if(a.code==="ENOENT")return U3(t,e,U3(o,e,r));if(a.code!=="EEXIST"&&a.code!=="EROFS")throw a;try{if(!e.statSync(t).isDirectory())throw a}catch{throw a}}};tfe.exports={mkdirpManual:M3,mkdirpManualSync:U3}});var ife=U((c4t,nfe)=>{var{dirname:rfe}=Ie("path"),{findMade:clt,findMadeSync:ult}=$Ae(),{mkdirpManual:Alt,mkdirpManualSync:flt}=_3(),plt=(t,e)=>(e.recursive=!0,rfe(t)===t?e.mkdirAsync(t,e):clt(e,t).then(o=>e.mkdirAsync(t,e).then(()=>o).catch(a=>{if(a.code==="ENOENT")return Alt(t,e);throw a}))),hlt=(t,e)=>{if(e.recursive=!0,rfe(t)===t)return e.mkdirSync(t,e);let o=ult(e,t);try{return e.mkdirSync(t,e),o}catch(a){if(a.code==="ENOENT")return flt(t,e);throw a}};nfe.exports={mkdirpNative:plt,mkdirpNativeSync:hlt}});var lfe=U((u4t,afe)=>{var sfe=Ie("fs"),glt=process.version,H3=glt.replace(/^v/,"").split("."),ofe=+H3[0]>10||+H3[0]==10&&+H3[1]>=12,dlt=ofe?t=>t.mkdir===sfe.mkdir:()=>!1,mlt=ofe?t=>t.mkdirSync===sfe.mkdirSync:()=>!1;afe.exports={useNative:dlt,useNativeSync:mlt}});var hfe=U((A4t,pfe)=>{var JE=YAe(),VE=JAe(),{mkdirpNative:cfe,mkdirpNativeSync:ufe}=ife(),{mkdirpManual:Afe,mkdirpManualSync:ffe}=_3(),{useNative:ylt,useNativeSync:Elt}=lfe(),zE=(t,e)=>(t=VE(t),e=JE(e),ylt(e)?cfe(t,e):Afe(t,e)),Clt=(t,e)=>(t=VE(t),e=JE(e),Elt(e)?ufe(t,e):ffe(t,e));zE.sync=Clt;zE.native=(t,e)=>cfe(VE(t),JE(e));zE.manual=(t,e)=>Afe(VE(t),JE(e));zE.nativeSync=(t,e)=>ufe(VE(t),JE(e));zE.manualSync=(t,e)=>ffe(VE(t),JE(e));pfe.exports=zE});var Ife=U((f4t,Cfe)=>{"use strict";var tc=Ie("fs"),Hd=Ie("path"),Ilt=tc.lchown?"lchown":"chown",wlt=tc.lchownSync?"lchownSync":"chownSync",dfe=tc.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),gfe=(t,e,r)=>{try{return tc[wlt](t,e,r)}catch(o){if(o.code!=="ENOENT")throw o}},Blt=(t,e,r)=>{try{return tc.chownSync(t,e,r)}catch(o){if(o.code!=="ENOENT")throw o}},vlt=dfe?(t,e,r,o)=>a=>{!a||a.code!=="EISDIR"?o(a):tc.chown(t,e,r,o)}:(t,e,r,o)=>o,q3=dfe?(t,e,r)=>{try{return gfe(t,e,r)}catch(o){if(o.code!=="EISDIR")throw o;Blt(t,e,r)}}:(t,e,r)=>gfe(t,e,r),Dlt=process.version,mfe=(t,e,r)=>tc.readdir(t,e,r),Slt=(t,e)=>tc.readdirSync(t,e);/^v4\./.test(Dlt)&&(mfe=(t,e,r)=>tc.readdir(t,r));var Bb=(t,e,r,o)=>{tc[Ilt](t,e,r,vlt(t,e,r,a=>{o(a&&a.code!=="ENOENT"?a:null)}))},yfe=(t,e,r,o,a)=>{if(typeof e=="string")return tc.lstat(Hd.resolve(t,e),(n,u)=>{if(n)return a(n.code!=="ENOENT"?n:null);u.name=e,yfe(t,u,r,o,a)});if(e.isDirectory())j3(Hd.resolve(t,e.name),r,o,n=>{if(n)return a(n);let u=Hd.resolve(t,e.name);Bb(u,r,o,a)});else{let n=Hd.resolve(t,e.name);Bb(n,r,o,a)}},j3=(t,e,r,o)=>{mfe(t,{withFileTypes:!0},(a,n)=>{if(a){if(a.code==="ENOENT")return o();if(a.code!=="ENOTDIR"&&a.code!=="ENOTSUP")return o(a)}if(a||!n.length)return Bb(t,e,r,o);let u=n.length,A=null,p=h=>{if(!A){if(h)return o(A=h);if(--u===0)return Bb(t,e,r,o)}};n.forEach(h=>yfe(t,h,e,r,p))})},Plt=(t,e,r,o)=>{if(typeof e=="string")try{let a=tc.lstatSync(Hd.resolve(t,e));a.name=e,e=a}catch(a){if(a.code==="ENOENT")return;throw a}e.isDirectory()&&Efe(Hd.resolve(t,e.name),r,o),q3(Hd.resolve(t,e.name),r,o)},Efe=(t,e,r)=>{let o;try{o=Slt(t,{withFileTypes:!0})}catch(a){if(a.code==="ENOENT")return;if(a.code==="ENOTDIR"||a.code==="ENOTSUP")return q3(t,e,r);throw a}return o&&o.length&&o.forEach(a=>Plt(t,a,e,r)),q3(t,e,r)};Cfe.exports=j3;j3.sync=Efe});var Dfe=U((p4t,G3)=>{"use strict";var wfe=hfe(),rc=Ie("fs"),vb=Ie("path"),Bfe=Ife(),Jc=TE(),Db=class extends Error{constructor(e,r){super("Cannot extract through symbolic link"),this.path=r,this.symlink=e}get name(){return"SylinkError"}},Sb=class extends Error{constructor(e,r){super(r+": Cannot cd into '"+e+"'"),this.path=e,this.code=r}get name(){return"CwdError"}},Pb=(t,e)=>t.get(Jc(e)),F1=(t,e,r)=>t.set(Jc(e),r),xlt=(t,e)=>{rc.stat(t,(r,o)=>{(r||!o.isDirectory())&&(r=new Sb(t,r&&r.code||"ENOTDIR")),e(r)})};G3.exports=(t,e,r)=>{t=Jc(t);let o=e.umask,a=e.mode|448,n=(a&o)!==0,u=e.uid,A=e.gid,p=typeof u=="number"&&typeof A=="number"&&(u!==e.processUid||A!==e.processGid),h=e.preserve,C=e.unlink,w=e.cache,v=Jc(e.cwd),b=(L,_)=>{L?r(L):(F1(w,t,!0),_&&p?Bfe(_,u,A,J=>b(J)):n?rc.chmod(t,a,r):r())};if(w&&Pb(w,t)===!0)return b();if(t===v)return xlt(t,b);if(h)return wfe(t,{mode:a}).then(L=>b(null,L),b);let R=Jc(vb.relative(v,t)).split("/");xb(v,R,a,w,C,v,null,b)};var xb=(t,e,r,o,a,n,u,A)=>{if(!e.length)return A(null,u);let p=e.shift(),h=Jc(vb.resolve(t+"/"+p));if(Pb(o,h))return xb(h,e,r,o,a,n,u,A);rc.mkdir(h,r,vfe(h,e,r,o,a,n,u,A))},vfe=(t,e,r,o,a,n,u,A)=>p=>{p?rc.lstat(t,(h,C)=>{if(h)h.path=h.path&&Jc(h.path),A(h);else if(C.isDirectory())xb(t,e,r,o,a,n,u,A);else if(a)rc.unlink(t,w=>{if(w)return A(w);rc.mkdir(t,r,vfe(t,e,r,o,a,n,u,A))});else{if(C.isSymbolicLink())return A(new Db(t,t+"/"+e.join("/")));A(p)}}):(u=u||t,xb(t,e,r,o,a,n,u,A))},blt=t=>{let e=!1,r="ENOTDIR";try{e=rc.statSync(t).isDirectory()}catch(o){r=o.code}finally{if(!e)throw new Sb(t,r)}};G3.exports.sync=(t,e)=>{t=Jc(t);let r=e.umask,o=e.mode|448,a=(o&r)!==0,n=e.uid,u=e.gid,A=typeof n=="number"&&typeof u=="number"&&(n!==e.processUid||u!==e.processGid),p=e.preserve,h=e.unlink,C=e.cache,w=Jc(e.cwd),v=L=>{F1(C,t,!0),L&&A&&Bfe.sync(L,n,u),a&&rc.chmodSync(t,o)};if(C&&Pb(C,t)===!0)return v();if(t===w)return blt(w),v();if(p)return v(wfe.sync(t,o));let E=Jc(vb.relative(w,t)).split("/"),R=null;for(let L=E.shift(),_=w;L&&(_+="/"+L);L=E.shift())if(_=Jc(vb.resolve(_)),!Pb(C,_))try{rc.mkdirSync(_,o),R=R||_,F1(C,_,!0)}catch{let re=rc.lstatSync(_);if(re.isDirectory()){F1(C,_,!0);continue}else if(h){rc.unlinkSync(_),rc.mkdirSync(_,o),R=R||_,F1(C,_,!0);continue}else if(re.isSymbolicLink())return new Db(_,_+"/"+E.join("/"))}return v(R)}});var Y3=U((h4t,Sfe)=>{var W3=Object.create(null),{hasOwnProperty:Qlt}=Object.prototype;Sfe.exports=t=>(Qlt.call(W3,t)||(W3[t]=t.normalize("NFKD")),W3[t])});var Qfe=U((g4t,bfe)=>{var Pfe=Ie("assert"),klt=Y3(),Flt=OE(),{join:xfe}=Ie("path"),Rlt=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Tlt=Rlt==="win32";bfe.exports=()=>{let t=new Map,e=new Map,r=h=>h.split("/").slice(0,-1).reduce((w,v)=>(w.length&&(v=xfe(w[w.length-1],v)),w.push(v||"/"),w),[]),o=new Set,a=h=>{let C=e.get(h);if(!C)throw new Error("function does not have any path reservations");return{paths:C.paths.map(w=>t.get(w)),dirs:[...C.dirs].map(w=>t.get(w))}},n=h=>{let{paths:C,dirs:w}=a(h);return C.every(v=>v[0]===h)&&w.every(v=>v[0]instanceof Set&&v[0].has(h))},u=h=>o.has(h)||!n(h)?!1:(o.add(h),h(()=>A(h)),!0),A=h=>{if(!o.has(h))return!1;let{paths:C,dirs:w}=e.get(h),v=new Set;return C.forEach(b=>{let E=t.get(b);Pfe.equal(E[0],h),E.length===1?t.delete(b):(E.shift(),typeof E[0]=="function"?v.add(E[0]):E[0].forEach(R=>v.add(R)))}),w.forEach(b=>{let E=t.get(b);Pfe(E[0]instanceof Set),E[0].size===1&&E.length===1?t.delete(b):E[0].size===1?(E.shift(),v.add(E[0])):E[0].delete(h)}),o.delete(h),v.forEach(b=>u(b)),!0};return{check:n,reserve:(h,C)=>{h=Tlt?["win32 parallelization disabled"]:h.map(v=>klt(Flt(xfe(v))).toLowerCase());let w=new Set(h.map(v=>r(v)).reduce((v,b)=>v.concat(b)));return e.set(C,{dirs:w,paths:h}),h.forEach(v=>{let b=t.get(v);b?b.push(C):t.set(v,[C])}),w.forEach(v=>{let b=t.get(v);b?b[b.length-1]instanceof Set?b[b.length-1].add(C):b.push(new Set([C])):t.set(v,[new Set([C])])}),u(C)}}}});var Rfe=U((d4t,Ffe)=>{var Nlt=process.platform,Llt=Nlt==="win32",Olt=global.__FAKE_TESTING_FS__||Ie("fs"),{O_CREAT:Mlt,O_TRUNC:Ult,O_WRONLY:_lt,UV_FS_O_FILEMAP:kfe=0}=Olt.constants,Hlt=Llt&&!!kfe,qlt=512*1024,jlt=kfe|Ult|Mlt|_lt;Ffe.exports=Hlt?t=>t<qlt?jlt:"w":()=>"w"});var t_=U((m4t,Kfe)=>{"use strict";var Glt=Ie("assert"),Wlt=Cb(),En=Ie("fs"),Ylt=YE(),jf=Ie("path"),Gfe=Dfe(),Tfe=t3(),Klt=Qfe(),Jlt=r3(),Al=TE(),Vlt=OE(),zlt=Y3(),Nfe=Symbol("onEntry"),V3=Symbol("checkFs"),Lfe=Symbol("checkFs2"),kb=Symbol("pruneCache"),z3=Symbol("isReusable"),nc=Symbol("makeFs"),X3=Symbol("file"),Z3=Symbol("directory"),Fb=Symbol("link"),Ofe=Symbol("symlink"),Mfe=Symbol("hardlink"),Ufe=Symbol("unsupported"),_fe=Symbol("checkPath"),I0=Symbol("mkdir"),ko=Symbol("onError"),bb=Symbol("pending"),Hfe=Symbol("pend"),XE=Symbol("unpend"),K3=Symbol("ended"),J3=Symbol("maybeClose"),$3=Symbol("skip"),R1=Symbol("doChown"),T1=Symbol("uid"),N1=Symbol("gid"),L1=Symbol("checkedCwd"),Wfe=Ie("crypto"),Yfe=Rfe(),Xlt=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,O1=Xlt==="win32",Zlt=(t,e)=>{if(!O1)return En.unlink(t,e);let r=t+".DELETE."+Wfe.randomBytes(16).toString("hex");En.rename(t,r,o=>{if(o)return e(o);En.unlink(r,e)})},$lt=t=>{if(!O1)return En.unlinkSync(t);let e=t+".DELETE."+Wfe.randomBytes(16).toString("hex");En.renameSync(t,e),En.unlinkSync(e)},qfe=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,jfe=t=>zlt(Vlt(Al(t))).toLowerCase(),ect=(t,e)=>{e=jfe(e);for(let r of t.keys()){let o=jfe(r);(o===e||o.indexOf(e+"/")===0)&&t.delete(r)}},tct=t=>{for(let e of t.keys())t.delete(e)},M1=class extends Wlt{constructor(e){if(e||(e={}),e.ondone=r=>{this[K3]=!0,this[J3]()},super(e),this[L1]=!1,this.reservations=Klt(),this.transform=typeof e.transform=="function"?e.transform:null,this.writable=!0,this.readable=!1,this[bb]=0,this[K3]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||O1,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=Al(jf.resolve(e.cwd||process.cwd())),this.strip=+e.strip||0,this.processUmask=e.noChmod?0:process.umask(),this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",r=>this[Nfe](r))}warn(e,r,o={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(o.recoverable=!1),super.warn(e,r,o)}[J3](){this[K3]&&this[bb]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[_fe](e){if(this.strip){let r=Al(e.path).split("/");if(r.length<this.strip)return!1;if(e.path=r.slice(this.strip).join("/"),e.type==="Link"){let o=Al(e.linkpath).split("/");if(o.length>=this.strip)e.linkpath=o.slice(this.strip).join("/");else return!1}}if(!this.preservePaths){let r=Al(e.path),o=r.split("/");if(o.includes("..")||O1&&/^[a-z]:\.\.$/i.test(o[0]))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:e,path:r}),!1;let[a,n]=Jlt(r);a&&(e.path=n,this.warn("TAR_ENTRY_INFO",`stripping ${a} from absolute path`,{entry:e,path:r}))}if(jf.isAbsolute(e.path)?e.absolute=Al(jf.resolve(e.path)):e.absolute=Al(jf.resolve(this.cwd,e.path)),!this.preservePaths&&e.absolute.indexOf(this.cwd+"/")!==0&&e.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:e,path:Al(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!=="Directory"&&e.type!=="GNUDumpDir")return!1;if(this.win32){let{root:r}=jf.win32.parse(e.absolute);e.absolute=r+Tfe.encode(e.absolute.substr(r.length));let{root:o}=jf.win32.parse(e.path);e.path=o+Tfe.encode(e.path.substr(o.length))}return!0}[Nfe](e){if(!this[_fe](e))return e.resume();switch(Glt.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[V3](e);case"CharacterDevice":case"BlockDevice":case"FIFO":default:return this[Ufe](e)}}[ko](e,r){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:r}),this[XE](),r.resume())}[I0](e,r,o){Gfe(Al(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r,noChmod:this.noChmod},o)}[R1](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[T1](e){return qfe(this.uid,e.uid,this.processUid)}[N1](e){return qfe(this.gid,e.gid,this.processGid)}[X3](e,r){let o=e.mode&4095||this.fmode,a=new Ylt.WriteStream(e.absolute,{flags:Yfe(e.size),mode:o,autoClose:!1});a.on("error",p=>{a.fd&&En.close(a.fd,()=>{}),a.write=()=>!0,this[ko](p,e),r()});let n=1,u=p=>{if(p){a.fd&&En.close(a.fd,()=>{}),this[ko](p,e),r();return}--n===0&&En.close(a.fd,h=>{h?this[ko](h,e):this[XE](),r()})};a.on("finish",p=>{let h=e.absolute,C=a.fd;if(e.mtime&&!this.noMtime){n++;let w=e.atime||new Date,v=e.mtime;En.futimes(C,w,v,b=>b?En.utimes(h,w,v,E=>u(E&&b)):u())}if(this[R1](e)){n++;let w=this[T1](e),v=this[N1](e);En.fchown(C,w,v,b=>b?En.chown(h,w,v,E=>u(E&&b)):u())}u()});let A=this.transform&&this.transform(e)||e;A!==e&&(A.on("error",p=>{this[ko](p,e),r()}),e.pipe(A)),A.pipe(a)}[Z3](e,r){let o=e.mode&4095||this.dmode;this[I0](e.absolute,o,a=>{if(a){this[ko](a,e),r();return}let n=1,u=A=>{--n===0&&(r(),this[XE](),e.resume())};e.mtime&&!this.noMtime&&(n++,En.utimes(e.absolute,e.atime||new Date,e.mtime,u)),this[R1](e)&&(n++,En.chown(e.absolute,this[T1](e),this[N1](e),u)),u()})}[Ufe](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[Ofe](e,r){this[Fb](e,e.linkpath,"symlink",r)}[Mfe](e,r){let o=Al(jf.resolve(this.cwd,e.linkpath));this[Fb](e,o,"link",r)}[Hfe](){this[bb]++}[XE](){this[bb]--,this[J3]()}[$3](e){this[XE](),e.resume()}[z3](e,r){return e.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&!O1}[V3](e){this[Hfe]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,o=>this[Lfe](e,o))}[kb](e){e.type==="SymbolicLink"?tct(this.dirCache):e.type!=="Directory"&&ect(this.dirCache,e.absolute)}[Lfe](e,r){this[kb](e);let o=A=>{this[kb](e),r(A)},a=()=>{this[I0](this.cwd,this.dmode,A=>{if(A){this[ko](A,e),o();return}this[L1]=!0,n()})},n=()=>{if(e.absolute!==this.cwd){let A=Al(jf.dirname(e.absolute));if(A!==this.cwd)return this[I0](A,this.dmode,p=>{if(p){this[ko](p,e),o();return}u()})}u()},u=()=>{En.lstat(e.absolute,(A,p)=>{if(p&&(this.keep||this.newer&&p.mtime>e.mtime)){this[$3](e),o();return}if(A||this[z3](e,p))return this[nc](null,e,o);if(p.isDirectory()){if(e.type==="Directory"){let h=!this.noChmod&&e.mode&&(p.mode&4095)!==e.mode,C=w=>this[nc](w,e,o);return h?En.chmod(e.absolute,e.mode,C):C()}if(e.absolute!==this.cwd)return En.rmdir(e.absolute,h=>this[nc](h,e,o))}if(e.absolute===this.cwd)return this[nc](null,e,o);Zlt(e.absolute,h=>this[nc](h,e,o))})};this[L1]?n():a()}[nc](e,r,o){if(e){this[ko](e,r),o();return}switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[X3](r,o);case"Link":return this[Mfe](r,o);case"SymbolicLink":return this[Ofe](r,o);case"Directory":case"GNUDumpDir":return this[Z3](r,o)}}[Fb](e,r,o,a){En[o](r,e.absolute,n=>{n?this[ko](n,e):(this[XE](),e.resume()),a()})}},Qb=t=>{try{return[null,t()]}catch(e){return[e,null]}},e_=class extends M1{[nc](e,r){return super[nc](e,r,()=>{})}[V3](e){if(this[kb](e),!this[L1]){let n=this[I0](this.cwd,this.dmode);if(n)return this[ko](n,e);this[L1]=!0}if(e.absolute!==this.cwd){let n=Al(jf.dirname(e.absolute));if(n!==this.cwd){let u=this[I0](n,this.dmode);if(u)return this[ko](u,e)}}let[r,o]=Qb(()=>En.lstatSync(e.absolute));if(o&&(this.keep||this.newer&&o.mtime>e.mtime))return this[$3](e);if(r||this[z3](e,o))return this[nc](null,e);if(o.isDirectory()){if(e.type==="Directory"){let u=!this.noChmod&&e.mode&&(o.mode&4095)!==e.mode,[A]=u?Qb(()=>{En.chmodSync(e.absolute,e.mode)}):[];return this[nc](A,e)}let[n]=Qb(()=>En.rmdirSync(e.absolute));this[nc](n,e)}let[a]=e.absolute===this.cwd?[]:Qb(()=>$lt(e.absolute));this[nc](a,e)}[X3](e,r){let o=e.mode&4095||this.fmode,a=A=>{let p;try{En.closeSync(n)}catch(h){p=h}(A||p)&&this[ko](A||p,e),r()},n;try{n=En.openSync(e.absolute,Yfe(e.size),o)}catch(A){return a(A)}let u=this.transform&&this.transform(e)||e;u!==e&&(u.on("error",A=>this[ko](A,e)),e.pipe(u)),u.on("data",A=>{try{En.writeSync(n,A,0,A.length)}catch(p){a(p)}}),u.on("end",A=>{let p=null;if(e.mtime&&!this.noMtime){let h=e.atime||new Date,C=e.mtime;try{En.futimesSync(n,h,C)}catch(w){try{En.utimesSync(e.absolute,h,C)}catch{p=w}}}if(this[R1](e)){let h=this[T1](e),C=this[N1](e);try{En.fchownSync(n,h,C)}catch(w){try{En.chownSync(e.absolute,h,C)}catch{p=p||w}}}a(p)})}[Z3](e,r){let o=e.mode&4095||this.dmode,a=this[I0](e.absolute,o);if(a){this[ko](a,e),r();return}if(e.mtime&&!this.noMtime)try{En.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch{}if(this[R1](e))try{En.chownSync(e.absolute,this[T1](e),this[N1](e))}catch{}r(),e.resume()}[I0](e,r){try{return Gfe.sync(Al(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(o){return o}}[Fb](e,r,o,a){try{En[o+"Sync"](r,e.absolute),a(),e.resume()}catch(n){return this[ko](n,e)}}};M1.Sync=e_;Kfe.exports=M1});var Zfe=U((y4t,Xfe)=>{"use strict";var rct=bE(),Rb=t_(),Vfe=Ie("fs"),zfe=YE(),Jfe=Ie("path"),r_=OE();Xfe.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let o=rct(t);if(o.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!o.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&nct(o,e),o.file&&o.sync?ict(o):o.file?sct(o,r):o.sync?oct(o):act(o)};var nct=(t,e)=>{let r=new Map(e.map(n=>[r_(n),!0])),o=t.filter,a=(n,u)=>{let A=u||Jfe.parse(n).root||".",p=n===A?!1:r.has(n)?r.get(n):a(Jfe.dirname(n),A);return r.set(n,p),p};t.filter=o?(n,u)=>o(n,u)&&a(r_(n)):n=>a(r_(n))},ict=t=>{let e=new Rb.Sync(t),r=t.file,o=Vfe.statSync(r),a=t.maxReadSize||16*1024*1024;new zfe.ReadStreamSync(r,{readSize:a,size:o.size}).pipe(e)},sct=(t,e)=>{let r=new Rb(t),o=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((u,A)=>{r.on("error",A),r.on("close",u),Vfe.stat(a,(p,h)=>{if(p)A(p);else{let C=new zfe.ReadStream(a,{readSize:o,size:h.size});C.on("error",A),C.pipe(r)}})});return e?n.then(e,e):n},oct=t=>new Rb.Sync(t),act=t=>new Rb(t)});var $fe=U(fs=>{"use strict";fs.c=fs.create=TAe();fs.r=fs.replace=O3();fs.t=fs.list=Ib();fs.u=fs.update=jAe();fs.x=fs.extract=Zfe();fs.Pack=sb();fs.Unpack=t_();fs.Parse=Cb();fs.ReadEntry=qx();fs.WriteEntry=f3();fs.Header=LE();fs.Pax=Gx();fs.types=JU()});var epe,tpe,w0,Tb,rpe=dt(()=>{epe=tt($g()),tpe=Ie("worker_threads");A1();w0=Symbol("kTaskInfo"),Tb=class{constructor(e){this.source=e;this.workers=[];this.limit=(0,epe.default)(J4());this.cleanupInterval=setInterval(()=>{if(this.limit.pendingCount===0&&this.limit.activeCount===0){let r=this.workers.pop();r?r.terminate():clearInterval(this.cleanupInterval)}},5e3).unref()}createWorker(){this.cleanupInterval.refresh();let e=new tpe.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,"--unhandled-rejections=strict"]});return e.on("message",r=>{if(!e[w0])throw new Error("Assertion failed: Worker sent a result without having a task assigned");e[w0].resolve(r),e[w0]=null,e.unref(),this.workers.push(e)}),e.on("error",r=>{var o;(o=e[w0])==null||o.reject(r),e[w0]=null}),e.on("exit",r=>{var o;r!==0&&((o=e[w0])==null||o.reject(new Error(`Worker exited with code ${r}`))),e[w0]=null}),e}run(e){return this.limit(()=>{let r=this.workers.pop()??this.createWorker();return r.ref(),new Promise((o,a)=>{r[w0]={resolve:o,reject:a},r.postMessage(e)})})}}});var ipe=U((I4t,npe)=>{var n_;npe.exports.getContent=()=>(typeof n_>"u"&&(n_=Ie("zlib").brotliDecompressSync(Buffer.from("W6ZZVqNs+8SKoLwBmlrp7fYqeY0yhpgy0V/n2JQfhDBtpLoLihs2mwL+ug2hHFXtiXf+HI6qalbSMUST0gcQVbe1/16L3COQGc0RVMXJoqzqSGoDo2NWnxEJZZoXasuyIFpUzi/W0azjN5zD8tkdHyU0C4mFFAIpRAhZFzyFa6D6vq8bs7CVkGlFvoJmUxxUY2dxjo6g2hg9Zs2IcGgmZLzw+6ez7y/5fyAhfNnbzyu+HxK7SDKP5+zpjhI5RBJJ1off9mbzU54C6Lj1FVBCsEWGRVokWzzTF3mET/v+/VT7z8+Xcf0CwqIIUJRClwWqGldY+VRJycLKe0TNwGTr8KxJDgu3J1ovPLuZmb6+JUdFQEuWAG3SwxnGwWo2U+a8xLVzcVnlcKYWc7TC1sp3n339xgGXOmrrgCW1J4Rv73irdDrcACnghD0/vj/1v36JxqVSODikfSs+8QSB1HkA45H2Lss8YwlXjZFdSTzS2H72qvb1mxDBgIpEeN+bsrsGGIPp+rxaZJlWWtH1Ofiv+mbvatsQiue6zQEJ/12mkgo8s1jT2HjAmD9MwmPVtf/5Nvu+fonLpdJtH/xmWWWOVfS2kW1Wx0Vr4L5EFYgoY16GjvXSLKv2yxAdYptjecNJiMXPIgxog31TX6tqY09GA9gvDESKlEjuWxXt9T7c3021wp1Ls9c3Ig1SCysUETPO4gLWgJuU0Vxr3+s2D0+V2/9y8SfeF6flqdtTdRKSCgQJOwhaHcb3RG30pVZWfbp0t5ufGRVYQjYxQhqBvE8efN+cHq+BUY4eywN2K938pb5kqVsOwuObtTpeAw10zfFLVgoNKQb3st1YZWHY603aHCZbPR/7MKLnuc+ZySQNbYFpCIA/VtdpiMC6elfChF7gtPe6ZRBGwGUAfC7b7+t4hUSmhiPNSJBamUmQdOT22wKkw7PkZ4Dn6cXrPz/ee69B2OznuTOTZFqjLkLTv0prENRucIsf39g6HjrImu3q8c0w4KBYA2LhjTA+xBYq7n7Jjxpq3/HwdzfY0f5Rju9VV0NhwG5klMg3BU+KjibGMkqQxo/aqz2/XLzPVfyZcZanqqubAhq7wGCjnYImhYxtOYMS7IGKbux/vzsjQVKAD1r+//uW2be+F4kEkF+wlbLEaFP6k0igOFob7tiII+4uxBNBZEZGNlPhE6JqCIKsbrCK1aLW4jnnvki89yLBjoxEcTITRa4qkL1WsTii2PzrL3bPaIpR0jDHcvhHKG+0PWM59YW2xvvm/P+9pVa7Pvf9H/EjMpNMJkCqBDRZKqotxXFsu44IgBRBsWtYbOM0zqxnRbx733/Cf+/9L8X/ESlG/IgoZphsZUYCqozIRBUyE4ifkUBFJkBWAtTUSVBSnaRRDySNgaQyLOMIwx4SpM4hUVQ7VY13K0+11XjVOL/tWffZW7scY3e92SznzKo3y1msx/9vr5VULXXPLHQ63AjOatQOCXkRn6169e9YcWPCxonWe7delZR3Qm9O2BEgYMbVjm02Rsz+f2uf2eIO0/Exsppu+IVghV6/m/4zL9CZWSBwqLCm93W4FgAcoHCANs7tvf5alBD42fcoOjqq8suAl8VYdhCzMyu6nZxnuXOe//4qtedceJmfDXj3gL0KDXhW8WBbVl+JuxpEIw5pJKCQYIdUD/eoJvPo1gLmn4LFAmNB+//a/jtXCRUwXiRV4u/ZrWfgt/l0vMncm8FFbu1UDMIAE2zAICzE7hmoW1/F5w2gW9XF1eiAyP3/VEVKFbqQhB5qQktCDQGkCFJEKTWAtNEvjTIzO4Fu9T9RiR7I+n61USWFkhBIpZUUlVCkNVEEBRXFUhHr6swMYPsFmrJwB+r1i4kKRLMgGr+b1T/tp9vltM/yDo1EaDFCZiaHzFBgHEophhJKLSEDpQSpQ4QIfWjhic91saZ9z79vzgbJ8/d9jmGDCQY8gYIJhBG2AgUdKOhAgbgoaB7CNKYxFXTQwfjq+nr4pmYAeb/dARc0aFCgQUCBgALRKiAgICDSGgREqwCDAAODs5KBQYHhwe/EN+HBoFAYFAqBg0AgcBA4gj//37b/fxwY9Qro61OU0jIBSMYw0IPEUBMoqX3i/xWxg1jrTbxbfpMVyqLvtNsWQjAL4gtBloCHIBEsiGjl5PPa18illcl1EcMb2vfo84SGD6dpcyyA6Tom3zjtAmfNr8mG82FMdGG/Pegr8a3rxS/eijlParoG9tddlYj7A+/5v11cY6V7Q0+3aijX3G4J8jrv/rpeOGZ3faPU6rH+WHdNt27x0WE02Zvr0+ZX5/722e2lVPEKek7UKkJXxxmsymgl9aUyv+9y98ArP7ZN8npv1sEzSV3EPM3gm19+C2DEfYv6JCX7tC3/ZFgWiFBiPKJSFP1j0eA5HoVCGTiAKpl9jHL3j8CRvumbfC8ZVnzDs4zUr9anMWiDy9gfHhdASZqlrPIzFllSMPtH/T6vXOefv7jO4xXBuqarm7o6NvWWyTf8WAU1glrOyvD7GQkzcenPvY2PX4IRH7NiGR5Jp+w7z1eF37jfqYN1nGlyz0nLMH+X7ADACLndAjdHcJ9hREUaldzookqA08GqFIklGp37abnfnhp4CbjiIrg2TwGzcmNl4ZkQ2gz8RSftSVmj3Vf0TFZ6lK8OK4Vzo2QetXWK1gfZd+Yg8c0faO8QZMVVuTtt4InT8Qrcr95Vi/BoXR9TzT+Or69v9KpwOcY3jga9zRLInAdFMj0nEBoW/uAklsn5zILA3GTs8GUchn8RsQ5WqInpsPvbW5ORp1MRRpg2EF/HwJZSw6bDafddkLXqsRQsOehfxCSSZlCeDtnmIVW9GeVOaYcc5LVfjzs/QTHDunfuWymuZ4xNM7lpGm0bwQHdZ8DMf0WY14U8HQKHVDscpDKS034d81gTwKZDTkhGvdoCoVWZOU83Pix5Ay2sDAU+9SRXsHI4b08H/XpSPzoNYIYdvm0klLJsiF+HfOUn/0+NzCP31u4ISONTWpr8iUtE3cNU8uhXlB6xOuifTRe5pFAoNnU9fQkKHvc9fp3CS6XjVvOpfP55l5ZIuFrXcD1DwXP57vnnKKuw/eh92WDaoGCFU+56HDW+f++0VVx5k+sVwJ03PSx179lhZ8orUpI7GFViMprLyhPkG+3dMcuyjzvkeLiBXlbHRKKNTh5iLHvWDJIOJmNKTNnh6Q9UeX8xrL1gbDViofH8M6L4CYT9d7HYl2fltbL856bOZPRZcEmpMVmdah4bRIpnzzrHtr0DBRb0X9PcBSdBB44iEDjLBEaYblpojuNejDAZYTLiZOjk+DkbnoLD1V1wetIpll/5DCaYWfdg/Y4dOQCWjzAnJA9Sagxgup2yxo4K9KOUrLJfBXpxf6sJ9aorVZRSlpMcZHg9xSqEMWzxZDmx/jKwafysKS2XYYX9s21wdR46kQ8rUqlh9BZPaXwqpK6Net3N4JL/EywaaR1zbbwWXDA/ZP0i2ENgq3Oc+VAyAzp07IoaU0sEUzuOJsv9D4RXw8oYQqHTuqDGQlBfSMd1uj2OVDAd4vZmrHPIQGSzSsTMJH7mT5/RvR9vUJoOpn4qitqCtxc+uJWBNRG/l1oVpTwNjTmE6+bJhwsns29rlia4Gg4DDigs9HLwkpjLtKxGcJKUsFJWImW7UJpbUKG4jxTQt8j4JylKAiLgJ9mUBERAlJAJbKAfWvJJHCxmTHKWIQNhC9oZCxLfCbRoZNF+OkQpkAGQzEl1rwF3MgYn+WDHPYicsUgkWP5j+NTG53UnyYPYwH+KDLXH9pwdRErLXVSDEW6vcRk/fEoTm5u3fVq98j5cn3QEg/pUn+tFLExVSReA3L2aKeVpxiotmNzE5bUPH5IzC/IPg0DaY4fjTbzb0LRmRs1iuQ6G1Az1VWSsbNXBIev3jqx49TAoniW2cWlzLN2rKFY8PfE6haFLrSdQexF+DWLQtnJUXRzEun/5OQdiAUtT3j5H5wj9Gk/X/ZkQi+ZLFE7EVQkNO1c2SJ31Tl2FgGMgqYI+pvBdWpRuzeMF/Pm1HoAWdxsQXlPtLT73lbPlaq3YVGT01yE65BbBNIlePsCSYcSELDo5jeOCt5EL8lwS3iwBNoiPGu94OASURf20ru4V1MoIHkiyNbS89qTU0+8lP+J3/ij5O9D/74U52+FmXv5bXr3u8ezUvXTN3w4FA5+I3fYr+LEd911H+PQOJ/FFFnEzG3vfRob8jEz+p+nUCmmpLdKPpUM07/oW5MTOqU/CNE/fvleySQmWAwo9Z1m/PFQ6it12NChDbtypULYkAFmbxr1PQbu4/vpqUdd5t8HroeWJNPdePXdflSjTR/NrYtdlpKJtUQA7PJHAIhucqyHvLsWXz1ClULlYRpAe76JdVy1RcZGvGypk7ZECNRQUi/VZ8Ckuu2eGUxzyo4TQNhd+AgXM3v1Rgl9ERNSghV75R3dZw3q1ez9YdZJOFXBSi7S3Gl4NSP9QpU0O4g8SWqpedhsh6dKB0eVQCK4226evUheO3zw/WTIFW1S4uWb8rVoLqiZf8AD1DF5eR/g4QSayMuhXMp+4XWliHmlQVS3LcLm+jTPyyUnY2UepbQUmiD7cVU261Yfr4Z0+V2wWDN0CAVLgW8dzVdCCkZjF1TLXZ0GQ4zbKPUdwSYFLeUUh2X4pPvX7rSK+8BtBwuAF8vziMdlQ0XqA6kOhWbcy9aX30thCMPemch+ZRZg9x8Cc9DpyEfvTvbuy8hH6BZLQMUwys4VHWDmQHOkZ9g9wVlMGjB6bPxflmYp0TJowac+kHJ6JR1K5GHf7IqTFoL010SL7bssLJFAIvXO+O5vey34RmqFPMltDRKlnUF8Ua/HQ6jaYPhudodKJTkPc7tXlMimQtxuBnIiblqggt2jpCP66TFQSU6wMb7uF+TR7aVWMTdbH4uy1udTT7rAFKEDF8u368aKOJ6P+WA+OykHBA5bWmL5JDm7t7xhE11murTdY1s1cdZQ/52dWrCa15KTEWf9Bxpl7SDyyIsW1Wyd42Hz0Yl2X0/L2VvW3Vh8RcQHW2+UhMHpjHbiHOMpANg2IeD3U8CJiNW36dMCilCW86RAngvsa3LlUKznzHgvGQkpDOfBlJleLuDQdnakJyGMcjEJfIdDsogRdxhAApPBuOX1Fmez2wl1OOPasH5FwoFU4ihA0dBytr1VbFkZF2NmH2s1B+ewIKgyWjPUfhy2xUByiR9wYxWEJrfZ3lcGkUSwRTUaef248ussRY9mkGgUOLZ1ju8pHLkxHw+f0Khu+GopHl9/Qp1ygQuqFBOPJpTyaUq4Eh8s5c2rxfGlQiv6hlj95j0cW9KSeogj+GsSgraVvYTiIub0HBtGR4bpPcKFhrPDEll2329pH3Oxwfefex5N7SM+tx1YckGI5/iJXwDOZQcmfaXGug5UfNfhOBk+Q1xfnUhi9gX2p95p3xVnrUTrv0/N/5rD1Sn98nLDXw+/3xmwd6ShdaVJUfDZ2uGOepabxEiPeida8M5BbiSt9f/cHfmcvj5IDZQie6t9JLf+uqs71yYoPloM/PMN08o7HiqT93x5TevCRLe6y2f8lGFXKsEJG++gb3k3KNyg+epOP5rtqmXx3GRx79K0uct962zPa/Bg95OvTkfV2TXdVkN9eYsUlUv8OX6PTu+cLF0islPejhObl3wawlS/xbnLTVcqeNb9PdJLKMj6bJ4YyGSvhkehxT88mgt0P6Lw7htvvX+0wntwsJ0+LxWVmZh+TBPudvGdFwHPnGNpb8HHfJ3UFARrYekbq/M6WXeqtTBVtdf2bjBsD5nMSMJ9E9+6rYl4gxYmn6DkK1iXs1Jo9eibhHIloEIOoufDSyFO/xMLxdNm1S1QLzW4RByQ0KFte6uSaz0+xUYaPkt41PG0J0IFEVScKHAqLPelHlfGv567YB08lxFQSyCAqt+RV6J3b1aOPxPvGI400/HeCupZu/3tYcWTZvbgNbxaUTtaSZOh4uIEkwuR0/Ocgyrc24xy5cL+0T60MSLyyQC2t+jEJ6jolsysE3cz/jZTNf6MqZOWhoImSIOQebWwbdpAHaIpF5Cd+LAxI0mjLJO4fABG01fY9lj9hHwZGGkVHSM192pioFhyCVMHYDxmZc0UlAKe5rw1YdJLVpFUFyXiX7cphieT3KnVV9SBh29SLSMNjd6SWob0ejLVHySoAursKnTg2jNyBSitRg7FdIyiThQ9VL8o5j5MGsb7V9z1zmbvhQxlvKlt3mp4laoXvRzWwCqOwyA6vFThRds3vmk97Gn0/xOuxX8BXOfnrAU7+59KSQ6FTDN2kRD6V7bcxmrX3KsuV62DnJlca4uzHQ6MTw8g/QS7eO1nuywRl2QV2T1nXZHTnfTBb29YvgmEBI9DrWnhW40jTmr4vU/yQ0vO+BNfXWSNKYlWZfqWt+dJKjcRF7Dt6iFnEeWl++yxtMP9Td8SXDfAViOigb2aRC6kdxS2MNyM95AN0MZMhUn6KTX0dPtOepjfBiKImukMsOHhOQ+AbhwpBiAz6siGpeh0Tf64D+HVRYnPHYQmvTyQ0tD+3JGSX1qcdXQgK9EihNrX0Ng1tP07Amp8bDZx3+UiDXWZPSEhrnDq+bD9lihMmHXDmBVBx0nvRtcwtElHqPg2MabJOyVnjtMXg3hYOU/yDo5SZxrBqQxtPIegOcyS7LUx4CCfykXVvPjLyZ4NQT33nKUNGcreBd3KuykUWwoT2vMsrNCyhoDnPGU4seRySLH/R8x347wIhxc8/6GjUrppFSF++b6vR06ah/Rr+R3CuSFzlkXOf7N7lWyTY7OTw/A/Sbh2TzXa6wcE9amTq0Bu0atkqfPOuG+zjnFj8kKi0Tu+Ze7CBo9EXi66cXaBcJIop14vrBG/Hzjwud1aMqD19l6wXZjsK1XJS0+zNlsz3AmAb6aMDiN3dKDX9F1ZdPXUs0gNmGmgw5mGF1esx75L2iL2FI5I5rCAUSydLXMK0g9IIobmXxejKLrm0eB2nZqeXS8sF217c8l2jTEwPI+LDvK9xNFCMAKqsXqBZ8dBpgUWuG7hx8juQz3WmesbwXPLNJHitJUE48TqvmmJpmDpg4wDvCSk+3fZVfBzIlSyTPS6pZvYO6FmrHCXYnFIEoYay3zaihvBYVrP0dE5cSw1otdZOxylnJQoTzfY36LWGsQb/62lhDKWUA9Ku6wq+efkiQG3BSAnGUdiJKtSZUymdJ9JkHHaH9DtdYm3NpeWzSojosOVgKa1o2m1q7GgjNtt8eA02Ke17P3C+U8sFhxR843wv2aIFB5SLX/my1tJgGmZu8RbXmTJb6RxC/p3BPVRtB+fziJzKP4O4ZpqPQ23MeG0jrmC43vO6d6UFanX6/kHeDld4dagRsnVsTgfExr/XvK4xV87T9EOPRA1A6YovEefWziXVXJU1p/RecZHYeAjHE2d1HRdf0I8HRxl9bOLZTOzjO7ew2GIsQKVDaqcfluZZv8OYmXEGpst0hF/mPnXlyIU1ZC+tUwpEwoGSifvjH6qdrCXHbqxdoB0h3f259Lr5gOviGnToLXRgxkOupe+AVW1snHYEu3S4W1n/88DO7CHBJCcYX0WdcgNI0KUxGSauSc5VVSpXQhk+6kS8voKc7gF1TRQgQ3LzWKozAYBBqGEjQZ8ol6eudADcM3fAyYHzQpFB/k2dA/CShx4xkOl9nwJ0wLhWnfYf2doOLe2n3qSuX0KdT4xtv7czJ7VMTDDZfAKIvgxS4bX8xNbpXhTQYFU/gHaMaHVeU5rD7GL2je636IxeUFKUrQccmQCmpMVFiUai2vx4qK51xppIXxb4rHXkpEmTJCAJ2NQlHVO7DehbntpNjhPPTMGR9qc9RpMa1OTJGw0HCGpntPEiZpolO+KcYZsaM1ibxrNk/ngY0GidFr8/Di7txtCEvcmttLMK1YrrPfowF5fCNbFv8dzeIOziuui9t+zWLijPrYv+wl9EF8P/HQgjh3m2MLiKzRmnhDnVZpeGUogoauFAv+WWurIKrF5wd1iOuxSlJzzIbvDjlEAP9IiPEEAXtsp5vPqWZWkdkfCpadfwlNTo8hD4+oqRXdHpGXp4lL6V5amMe04eb30kE2joShbijlj9+Sb7BD2nm14Dpje0falZfUkTbr6EGS4UdQpId4ne90YfF18ABoCq+GbmqJTV3HeRow/BnI9KLd/K1+gxAferUjzh7Y880pZxwrE89EiWScDRDjT+HGQ0xSTjQtpSTr2cfjFtVVkFY2Sh0bGMLmj07yDXq0ai5PNMlCXHk54PXGKwPuukOsH1I32EAooRC0vTmYjvD94/F9Pu9eazDYZbfEzLD2Hku/yQyjAVR30w53uKxS98H0FLB7M4hEm4sk1KyFBwY25lox1XjHtNOcHgj3HKL3QyU8J54sZujmKI+LJtzPIgIDnBpEYVcD1lyHTYU2UpQWeaj7t77GBozFyjjhQzVyIekhijmquZkWQC3wNJ1i9ydjRGXyCJ97FoRXXYTijhM3QQ8LMONncbmLv/Naa/RIMHmg5UieOKQH2RPGYAm8wUSOILN+g5mPZrg5KQ6Vkw3nz4NtQXZtF3kSaPb93FWXVF270NJJg/2XKf8QAPvWkkSb7JY6CvxuH/ZEwK51dyuRehQZ5phCKAdZYpLTPzxHwf0Oe9fD8saHnfuAfmzXP2fafogCateS1KWqmsqr/Awt43Q6XpzHXp8y39+uXoaFSHPDFh2HSonSZL/7ymNy90M5R/N8qnCmo4VHOHoSMGGSvbGVN7pshHoKVdYtYoFbkWy1mLCk8uh4u/9BfSljtuuH4Iygddv/vl40pQevgCXRu6fSG5CMam/OzJeyxRwEnjdG4BQvM8jSYCRglZsN7yxXCu/nL44YyfIWfM8NWZcQrZ7pNAspKflTJNW9IOMbGU7ThfsXOQMU84musAVB3psrIEIagwBp1AQkQDz53LAh8bsXTBYQg1/UM6vjFiINcWrmMBZOGTm8b9m1z9SOW0FXyW8TDH5becxaOPh19yZVqFH1a4etN+C14dNTMQS37rTJYML6/rNxE3gKdQPTwl/HZ7u73fKx72dqSLIS2bJ3vmqbmAB0T2IThpUODMn1ONnmzE+ag6HVraCvMRgxEVtO7dYHwb/u96TLBzX1nn3NPjW/Mk1Rxg4qdMjgLNuGkRAZyfemg63lIhA5ketnIimkch6wQGJZi+RW1+UR4JRUJruo7TjpiMi4Z9jYxCUqf33rkCa81dcmHSJjWFmp//pGCmn6hrngvCxpeZADLeL6MCV/6cI4leWog7yRstxybL+W2xfhuck+CpIPWZbMQX9XoURaiSlJEsM9BipmRAqI/IJgZHGoTu4yhb/Ab14E+2sPPX7zxlbrgwmFM44bNDLat67uenBmzoNyOKR0nNGGcHO/kUnbPqCs3MdLgZidalDk3fehCHjFuQZhiNsdjYgxMQ0chZpZK4Qbhn85e3nyOiQTSpUoZKVZYyhDOKSx3JmAkN2+AEZGtaoMbOUReRLkPavVdUfgv0Oknq2WAcPw2AzpMY9UDJO96p+KMFAjN0yD6jAqONZMVyFPRO+qaS4tnWY1KA5w0gZ/Ei3WEyeSMxAzLztjL+E6fN/Yj5ktIcOztF+kgNcdxUL/xD1pVNmrzQMNZmQCm+FshWahaAxMPahV4Mk2q/5nqYKwW6c5S1K+kNUROQNCq9/YiKKRLs24lLyHQBxEcVIvCwn8FJA3cHtWCnmC67/h3UcMwdo+/4sPcBPbwwyoEE3PVbcM8C7ktAdBO34B2CRJ3RwIrFcp5nGZMfm2pE00KsOQmHptiTPLrfxPJQ6xIsF6JoXAmsx2Abk18ba0TTpnboDgA0FRqHaC5vkpoESamu5PH25AOCupzNMmvVCUhRgKlwVg2pbuwmTNV940n2hB6QIpH5og1dMq5Q3+fPpo33HJM/7CqPo2y+KuGe+eG+aWSLLcNmMV1hGQY1Urg1+cA+sB3Ckq7yXlLKwwc1LuHMfQnzx3UJ9OySm8Mlei0a1O0EQ6G+uHYtzkvrBTDnBdCG3qhoEiyNdGJUOuJGpWLp0PfBOqiAO3wL7k1ATOZsVdRGHE0UtmgsB2DJDWAUcZtqRkTTEACq+kB0XE6XX5TvIUwaxDCAY5GjAt5yPcy10qfJW+2ya8JTBOhV656rqw6/OYSVqZJ3nkq0sngUpCH3oI+7EoRi/gfrOM/OLkCdZyRYMshalQBGX42/J0WbylIlDZbOuerEmG+QGryIB9NZZWInQcUtnRpF6ENxCSIgr2mILbrjZymuKM+EUs1gAk+9oCJElVCppGsnSwkSh6Fl67i4UhWA03IAF39uGnYmS311usPSJK/vjOUQzFZpn2kdOODxNYn5Q0EsTjxdsZSvC4xHUcOMx1JkgHMhtOaickCdlSeGoplCCYp7duRHXX1BIBg8Spq/rNB/LN+7mGpzkfdj7WaHbeDCx646ogkbaYJ7gWnAMtmjPPknd1BypQbeIvE3D3avuHiRp+DRaZx4aup34abum3DY1FGjtrnP0NsUNEPh7ov3gyZP4R0Nh9ztYpZeLnjbBVsu0AQUDgAf+OmAF2yLqSw45eNNYo8JX6bE2BW/Rlqe7H8ZTWpQ7X6Bsui7vOu0z63lwyOfH/xy9t81QD9O515qzVsxcze8Hpug3X2L0YPuy13dQpot6kezvNa292Crf2B5mfvjis9vbfEWQLb2Mx80T0v+UeUTXnocTt7MEZGfWU5D4rPGbgnCnVTPeuDQPb4WtxVQeYD6CLSe4GIUjkjLlPikGiA/YLq+DrV4db7dFEbYwTCC/AnafbDHMswTgHz1GcHrD8z6IUJ5R97cyDtc7gmVS+zI+jwyfDSab62vfpWNSDNz8N4jue6jORovziovswhDB/rPqnG70Wo/PNVZSdF1fi7LfLlq5off9d+i261T1V3yMICYuhCGZPHkShbSPNFPSKtxlVPztPWWbq2MB2UUOTE+d+B5YfOFL6ILjf7SeRjM5yv5QQ9fE6wzOYnz4Z84rVNfGN2Oab9d2ATfKtCcmmOkGMgUGFnbSfkLzmF0+WcBZ/CFY4RZQ8oRvFzXFyLKcDbQbM1Xbi/4SRVWPyVDvmpGn0Zg6vpaOVosJEfJ0mSkk0znXJrz85iHga3PGKFgAUaM989zAVsCYxoFYtrLMK7tNCPO/+pjZukriuur2cPrBUPA6gZLhweoGhsFKgnQUnZvL2UkmjdIfOQXiTfizgUkLLaNkoiQGMt9vSb7Yl6I5U9BSUxeax59iBI6ao6baUsvoKtDs+WBhEQpfdcxjq9R+rdwpRCfh0MYjCF15DaxfFSKgm8J1qP2i0HCqo0hrJ75gaFNcABVC9KyXN/KRjgm+DRefxWMye3tHsULc4wSJm2GLqXMKoprNBFuAJoT60I39ecI8vomX7lGaudP4FoySdJNDziqq+POeWlbMoZzO2kbV1AIVlxaiXWdfaVpn0Y9rmgtrRO7mIkEDARkSPsRk4/G7Vp71H0zZHvRBJRQ09uxLsnw03qQ4VyAo6JhkZfHS7lVeIboIsNo26dICykvL99Iy1bMLHK3ekwq+2YOHVBZ69ExMrcdPYC1UtUBjnBJRiHXixLLORdaymxfdIRve7oAaQ09bOX6cLeBHvYL9bDWV9FY3eoKhI0nlSXOoyGKEOS/bxn9THdpmUs9V2N6m/gdhkZG4CkkHm4te0/2cXHgfgWu2ESKA32r2FUUm0iBVsAtVcDUUiULhSqQgkp026mApy39DmkEklJFg+MBgLcKAEsKiPr1AbHTAwBNAbz8Gidd3UAxJcN5bIgJBOBbjrhm69y1fqgh2K2CATwNjYA8oZB1uxwjwRuzJ8HLDQ8z7WxgZJx41VSqEZiGM4PFUyOTydvlWm51e0YhcX9ZTmSZhrKDaDyZRsuxTLRKltOe2lLhrzsTL4TWHVMj2RqLzQwcvMQToGMmEOc3sG9qj4VjJMBoIVqHeJpqfxMM968pUfXDUxKWUML2qOnNBTr375En+6VN8GVEP+Lat9iiE+NdepqwhVSI77XvpZaZGPC35sVRN5e+Ab51s2hiAL51hAWosG7cab7hZlcaBUyA7JNN2lbktdb68Gk4cdABmovGfZ8+dHasli8jjXEP+fJ8o1uMHYeEkhz+pHWCI+ji2s5xiZtuTecFxujRTRo9xMkxWe6qv9L4SRMEgYWFnGV7Dg6U2l78N2SRwlNrJuxvztdbwzIDR7yI+AE58E+x9gC82Ewf9WNyXLFC2X6FjIGaZQQQ9BVy2WIjnUH/wUmf1nqjlzNHrmK47GXLimtOc2eQAVuXzoTLYuk5jGUZykhPxW6XpJ2SHJNnljUgFOnEs0CudTMmkFdsDDDbA9Mz3prUDDgaXj8wrZ+a7k4/togD7oqXcEou8bjFJbD7Li3Lp+ZepFY/soC0RpcBbOWA3K0OaPscgDUA/kVu9Q1AXItrYNMyikkTI1A4jGKVGq/ePZX2L+A2BB7wW3AfAm5J4AP18DhRDWjr6LW9vugcPT9tQISjXVHgCPBALXua/EJ9/1M++1/wz3sQ4QR+/LN3z+Kr34iwkLpqEOtoq6eSRXx+WUvZ5wrWys1aT45ZfU0pQlH76AK7CmKL+CrSh2DgEQRYQN5ZfNXTDjDWg2BTQ51JfQiIHRBZxKfpc1RSBXhr0qjCaOBkuVGUlf/AZT3gmOQ+YK1jsB2Bu5oofnBebNBmt+f8usa0AeJanAWbVsZLJg0AIHYAsEqA+WfTlv3VwNUYAlQGwZKG8KgdBEQtIUDlkHZz4TMSq1dylW1exk2WTk3PW6zvpkaQekpgkjYCkqdkVmM970wECYAJDCp1i0yIvewQClBsI8TskoZkX10tg55vj62Bom2ysN0QnS6U/1aKx96z8XhYmMGerba9HSlRxhFabV31098StBhpQqNKmJ0WhBLvLFQKjay+7+j55IL90QkvBdWHkX0YGWVRuwSKQgM3dBi4XSh4tgPmlpzM9SygEcVyqCDabYT3hGj/qI6aPVEq1GF6DqbphywpeeuHTsBOt0s6yO1Uf4JqMSZtz0p5EsIgczLx0O46tji8nDQhmMFI6l/lhyZtEbsYNWqj1iPCxTiXsOGfH4cTabetENCfqgUBg5N0CJImo25zUZQb75qPEZqJHMxGnVDMR+TpD3al+9xiwGgD3nDvkrS7Q15NIW1A1uTzp6GBkfaU3tGTMrMxp5RGqiG7QiRfsOjme88/2WHKY/i4r94HDL45DAWQM4YbcHqN68CdiEKc1CAcgaDjbS2zJp9RHGd9psrBj8cXIS++OzWUS4/HvlAcavdNLbRs8SlcO4A9UEFgOsd+vvF0Bwh57LWhOGlfvl2aVW4ELDBtY1btFQ2A1sjizx8bYKZ5zzkY9iH1lD+IJctO38h3wEMMIKzLalzlQqQ7kWZZ2ZYzllZls5Pc/Grf5zE8bIx4E22TX5OViedaw7qWloFvmrADZCMpnpF9ao8ZBDvg09548IHNsT6nTlWT9tyu7zae2VYdIrsFDZwNerrZHbokj4Sep6vtc9MyEBnxBkzWVnCF35NnDiUqSs5wgX0QpIZJ/ZcCfuFjE3E2Q9BcLB154vABjViV5VoS3oJjKpdjj0sUG+F6D4U4AgTtiSJ/f5d+wFf308l9XP/W1ZHc3euz6kdu0ReyFBVKdR8Gmhxj1Rk+KOpJoHww46su9olJ/jdrFaB+EgSQ1IzwN/sROx2rLoAbNSwr6jFPfrq/++M4FLRRIAs3pdfzakVXc7llObBzGf3+mByf4spbohNCj6Lf3ufrkYjnlSWq9WjVQ+/QWdHK5rwLYOoKvxl/CnaW2cRTk0TqXPrnZnXvIhYjmKgkomeFmNtThj9cZaZyjKLeSoWvJD6Sast7x3To5AsukWNDMrAR1+K4T3MdQftRMGvdAm0Um4Vd5HJXSVLyyV+TW/TyCzuUg4ndxcCpsvxg0na/++yoezjA0wrpd4I/CaAP8cmK0z6fv6mJepkUl+2Sbg2PZx90cMCz0HDStAH6l7ZEOS2Kbqn1wTKjInOkzYdIRSjoWM1oIkZO1vaZvz3Uf/4r7B6RuWtriY4oWbOt2QN4le+VUFrjxZk877HzA8l5+7pl8ej8RAaLPA7D+3cx8GIgj/3z+GzivhNlNqBLtsX93rrBN7Jtu9ZNgd2VlL8fRRWUQHvDzD0feceZkdtPuvHe0RmCxT98ll9f8tVcZsZn7OvkNnwTtdVpnw8FLwp0ePufsga3HbCm9qUDOItPHvBbNY027edDR8ZKk7m+uupAU/+HHhf69tgXus9CMmnpJdwgsQiP6q36Gblo4nDvjmUmSfREQvq82PUZKd5pY5rswsg9vpzkXUpsV/qZdzPkz8jwHaPxNwkSiwKROhzeKUa7rFjOHr3cAhUkMwhjgs3NTW/aqmPMfIzQf2ZRQ3C33M58H2d4OSXwEdba3RMRGneHr841HhPlNbxrDX1oWc6Fq8LFDlIGWAANnX9nC0OJz6wJFy2QUUeQlZBfkm2Li8xNFgrFNPDI2mXDjMyPLHJjWdgQYlFV3+uKA6OpW/pLDpbfgXEGR/07cTlSgidqCHZ7TLGDg5jMzE+Yld8NIwbJoCD4+MQ5Il+Z53VvEi5DAyS7ZRgi908uWkFMjl5UKrS1Jop68rdmPZtNHYyPHuoZjRfpIVeKroek9gZymxBpncpCpcZkfSrAxZsT25vjvJf5IDU3MRhX+g1fcOATPvBB+vCNUvWVyuSGCrIBRpbbIWEQuB+Dt7aMoA1Gxal2l7dVhYWR1c5csW26e8S8IrGj7Eo77FWJpLn+8GOWtl7U3NsC8+K5by9bibCo9fCqT6w7y2WZ5f1VZzqhJJ7D3+dxhitdUStGq63AIetOYVNVn1fZqvpwtpaQ3gy8cAXtydyZrl2/xb3PkVt+LIIE/WZcV5h7+2zbv8ggYv34y8fyk5AdQCe2knsQeqk7DUjmMn761ksImp/4QDDPacmSyk1MTzl5FmkqEVOlQAwK4oucUCA+2JgVO1591a0TV905JFT76u2wKN919W5c8I4XDwIbhvhzUXTFG+FU9oXPfR4IrzV+iy8Uei0DDr6ybuPB08M8HWnRS/X/HRGVAKTqw/zFOIgzZKkqX8bUhc4DmLzmQ73js/uf8yGdT6oF0adbaYXqFTS9vsqUwPONd2WqeNCdTX40sAj/5+qh+e/CBxZd3kZyepPfWnfdZxLeb6Aro9JavVxeL0Y0pfUducKldE+0iGgJ44/V7z6ATqWPsWAKWXpfdv7yC/+u9txMLBLM7Lsm0328NFcY/EESKUSD+bAJCmpx8HKD0w9UvGXJxssaWr0hAL1ZwW5cGj7AF3xkDl2oXDP9FVok1Orve5955XuH0vcu7olftu36aLv0/bfWgrVN4vcsGr5VP6U+FclH/bJwvfy3/mtERNzOD++m/0PPN39sDz+9XfKju306jM9OxqJPG/jgp8ekWhL4YFfUL3IebqpGR5761FZcjZ+L8/x4RXF8exLzl604fjwJ3lt5KMwOQvUyfsZKqqI9fruUPX2LOZaYLZiiIwF/ZPvfsXcGvx/xPD6pDlykMa4fb56OD9yPkQOw90DTeSChaCCLYdDfbUWZ2EyZgPIVAJxYSaVFLcAe0FkKnxagtxT+WgJf/99BNTyh6BATOBiefEgi0R8WRMqE3YG8WcLdE0EYbR/pPivCmPxSIYRDr57MABsVHQZyh4ZojEjeCCDZLBDZPsrwxH4pgRYgA2AlE3IDVYQpMZUOJFAHwp3obMH3tCBvDQwvBNSRAYx1Bz5WCFvDhMj6GkwIphVBGW7E5oTgBuiJrIhMiGSAAICnOVvBcMzZegE3ZDeDDozNCJ6AnbfgB4ArYhsA6BlYgJCCTYUs8lhbQKsJI9gZMLkT39eIy4eQ4Et1We0JT7UA4oCreaj2GxJd0KWEpxH/VaZ3UAuJbmhBeFrgfVV8X+UNEnnMPeFZ8JaYapcEi36wHAnPhutV8ZTsGyyaozHCc43/VsUPaIJET6iF8DywtoiQHaFXbK5oPiAsEtSe0PfYVsXMyQSJ1sBIOaDoF5xdMXfyPyTaoloQ/Ya/iWlvHMCiZ1Se0N/h16pYgC+QKEPVEwbFLzAVm5whUYG6IAwFPlzx4OQDEr2hMsLg4H18Ac6ydfILEjWwQgkEeIsjeJH9l8J5VSrnit+hdIwF51A6vgo2MB+/FP6sSse54o8rVVvGb5irn4zLqlQ9Klxc56VXMJM6fZrl3qsNhukA+5ofXm4wLvi5xvev/7T0+vefw+ZsWCZCPZq/+F1x4dWB3zucp3WJfwwXKD54K/iI4h1vLQZpneMI/FmrJaaCP2i2mGapqVljOuA9NYLH7h/YdfqPvmde1xbs9IkRCu4bMGDWfpi2ChY5DBdgJXtrr6b8NCnYGGQW3YPAkSTUQ2rQISjygCKzHTOmXLyBzyjnoYmDQFUaKBr6X09soWh9D4pIMx8tSOCoLsTKiki4PnTCEk7a2DfcpR/nQMZuoFk9ehKiSz1RqrxGdAISH5T2cXzeM7AFmkAKuYKvjgjeOQsBWivywOgTtQZFdqgulpUy34MiD6hnMrhz1ivEcTwQYyP5GhQNRfGQ5BBglWBwGLUqnTZQqKcFRKAmGTYGYbBa7SQly7KLqV1QZIEdFJEkDQ0Z3EBNPS2A1WkUjTPgCT6zgFigqLAb6GRaI957nNcLVulcQdG6HhTmsC4ZDAotoms9UaqBJq9c6S0jihip+jg0cTyfC14ts0B4AirGOWZHBNxhEqDMimKmGmNNMMdhXWSliPEXZ0fh+Y9fxPDPlu3uSXbr0IjGemIAruBQRpC9PV07NVZkBxaqfx6IGFA0l+SHVuzLK4aX0FC6Irr3EgALj4zXiDGi1YJg8SgmBd7h4LYWkoI3OLpx2KegiynIL4IKMIumJKurimDv8opE57HJ3NYEvzhTWvKObKr/7VimpiV5h+lh4JCePZ2NhLMghblmy73R9ntOOdIfZ27eI657Cj7veeiHg4MKrsGhILWUBsATsMnw8bPun72HL877jSa4DXRUK9kYsRbW+TSp8NlTHs0/RC+wy4aQpvDwFy7Tm4W/zhkRAQeQgkMefxkYb2M8EM614aOhMLx5DTgbB9nxHKbPr3nTGTwxXYEDmtkbYXVwMUO3U2OAJScixVH1z8X7F14QY28HOkkgwZQwhe04JMP+AKnhXPTmR2cGhKBdUBSvP2QEBZScrr8d/sJmUlI0jFALM2DNp9nMTp1wbxY9ZsdXck+Pn6qucjppmHYBZi0rSnKP8PPEmDEItO8weGD0ZuSo/HDKoKKcDNrpOPRRDQzqeNWhenpBPEdTGu5nE6XAybD1TZslQTrlW7ZDgyTAAjJJI4k5ZGEpXh2Yv157ycDSHERxxA8g9HMRI6jxlcACy3pHUTz9Wh7z7/14KRCiMlYIYQdHZNeIFmbi0DRdfXvN1TdNeLYWGVZEonV0MX0lp6GPeyUAT2iUpGbNdblxttepn4lYlihaZjJB6G1jPGY2PrvmM2RmZ3BhFejWOv/+N6FqGNjb0oHjPRwd32cCIMZAbSASOMgJEhJPAMG45d/2G7l/ikaUNOZCBiwgQ/l4uwqiFeKOhJgN98hTzW5nbCuIg9N308ksmpwP2Vx0MpCfTPO5IzyL4zQnRsNJAtkpX2M7EG7pIU0tAVmKkGVQtTeIiPa2cDy8Xjs1KVB8FACIKRcczK0q2o4Tiz2qUkW9+SLuqQG7RjHzq1343hnVv0wlAxYiTtBJAszg8LebgTjO/dWUCAYOnyLhacwQYHa/TxndTeuZeUR6OxKv5QSB6wwq6JTFu0Vew2ITOGZZZubJkmKqUQ3Gk+l0Uqx3AQUnHNOt2S4AUHNEpH7qjZoqjM5YX9oXb+gmZqOTaJcxQGXsJdDh7m42a89TcI4ovr3mpJSpP6IGjIHRKBBr7aykA/QHDyPJMhsmp97/mqgZNzc4M3HsrGMXRcBdce7UXtQEW2k2AFyhqJicVpgmKawBMChk0uuNLCGjAu64PrQb/9Ief3FXYVFQ7K/jINb1FETh+khSCM8mqvFZUJSEGDssCcPz+8R7brT9eFEf6eT3negEJS7GHehhqFXIDO0ACxQ5hFnRWgaFnhlThvsGNjoomzVS2ebn81w5LsKu5AfDygy1h8riyEylz2txF2oRvKoByXK0mHtKRnh07I47gICG4tg2Eo1EAjOx0UsMsox6YAo7zGdrFBoY6a0FUGNIErUAvBrBUCuO7NmfyNZQEGeqzsFp1gRLB1riclz6ccqz9EisqTeh4zB/mKSaC5si/ueOinkSGg51WLpwMZvNqib3BVIHmLX35lBwwv8+V+c00DxZezWtzWnyhizLxEkHS/pokq3uNdJjiia5quRKz+aEAMsOF+EXf5vTOh4W1Uq7IqQWN80wS8zh2waXrruFaZKpK8FQMtPVHj9OxV0sFXbvi9OamYRCvbVEzs4qg4C8VXAHziuk60UGLfvVkMNY7LX8rUYRTwqK2JWVCCa1iieAop2A+9S5s47AIrqOmbk0+1sLwh+EKr1SVzppU357/OQO+fJICcTmOlIBRk1iDj0ICv2BKybIAUacriBaLx1SRCc4rBnYQTbN8T8axkpTD9OW9SnFnNVDP+86dJBxMFU4jQxyaGQ/1mHvJnDpcnRAB1r4DC25xYUq0xUAc/SgurX9ER0FhXBg8vFMAUuHqtoW0v9RtiqDxVukEUXuDNf2aj0Y1fLYURHGGyCTUmxJViG7iRtAYizKEekOwIuL2hJfyYryLlaHsY9qwNok8z3+Mme3asAoDgFnCzQc+aS2ftTW1EkErQNhU+7RsZK4uLmN90fBfAzc7h6A15ruwIZT5eT7y9nOT5W5u0qFsxPcQGLgm4rIZvdz2tE9veXXu+Pz/DrGx4pzEWF/V9G/rW8yQbFmtkNKEiji1fT12mYt7zruK31b7bsfWtgp33Hbo0FRXkwjNkVnETfZbkMbG/n4+o4YACIyJRMtfrLAIqYe7KOoKcCOpAaEUVwNOYyKcuiuli8CJ4wy19OIwTau7AqrMrTSIZtDIsCuahZdTaHYiewQFwEc27NiWOB+rVkr+pbLqcNZ85fqO6V9aKgIiV2ZJeH9rXL7Zglhb0GlgJPXDv3iHHDe+9PUgXkbiDP7qwHO5h5n/8dWu7FWpEE9qhFtw37oxJYaakf4VuMscwUUM/t4CKZdB0l6xrg6olQM12OnxoeabIFdXcIM0ovCLd8LpzBDiqH9b4eDhEJ4IwbndkwtDTu00YGWVd2UsILRPkvJX5jj6LxYuLoDv/Cfekni4064TBaeKNWP2epJH1+pAwu7CUnwKBHo+dJUU3TUnuDwPoMKy/myV2E3CgP8lREV8Vg6tzY6yyKFM/ci6/JXUJyoWyVUWJnG+Thx57Vtg//2ElHw6i4ORnqw0JgCqirsA4TFw28rLcLhFqc4C+xWSqCKhuqtmhYNwVhnAIHpDH8x1k7yCg7RB/DIuqWjCjPjX4MqUwe4aGvvQJuKiQu83SSna3LKV9VD16buvzJ+LHUd3sUE0nCmWLQnRVfp8T5Gbz+yC4LHWQW1IZu17jqsMCi0+dgUHT5PZcIS5l8x4MjfCkU1aVEPjGgFxWfio/7w4VoNXt08n7Nj0UOTkG4xL98tztl7JSz583iua9Mr1R2NskMrDBKHIqJV5kmYH3BCv+sl1YYxdib5GMVuTuPNBJMMX5oAXACfpHVkFAn+Jll1rT4nc3iuCz91PSdPgA3k0fU8QONsEsoXlBSJMDfhXScX7sE3ZG/OcboQHyOBwWbtOfumy9mcEqGK17Ppy18TdUYUw3u8FpX4HX/f3RK8NRSn7oPk0MfWw9secMzhQqOzp1Ly0hquO4xihGhpR7nAAu8mPaqYWarhlHM6EOky59J3WO9qRucWOMeBnsFpmOZmK0v33vEs6kSTtpaKgzNJCqHUGZUMzVURLELEwVNSdKYuTJ9J1ndFwNYhiIFlkwkzUduqtKFFeRrziI+bza5oDb6ZjYExYFGribRGIK8216BPI5q8a97DS85kkV7hM2Or7PjuFhD/qxXiYkuOqYAZ9JKGM7uDQJiA3iOsi2x3UsDtLkJRpbmvhJzZq4t+RCYOGDMFmO0tbSgKI5q9bB4LkBUZ8vEOAqU4rYA7Mv5OOI+QbL2TGfhKkbeWLScQ2MfaBaAgsQAoSIwABSkHrLEoBaAFmQFG284nc3ggM8r7+WJOdhzDKC8CpRtlCGyMWEiXNDv8a8NJOYGVkDqcokcQgk7sp4SmAkAtY/lSPiYSKQ+KvTKDaPk48bo+yqG86PxlnswyYf055b0jQtX1ElqtzBHre+yA49ny2ulV/HPE8tNH853dfARjHwKvqv1kZNlYvqpU09uqf0CJR5nLUp/4XC85NBBW/dlUf9i/txTj4FRq+yrNKGYpJNI0Vu4dAbPs0kWEdIiB9JHKRRmST7iCS5pqGHcyKKEakZlNt34wj49Tbopy4MxJaVoJSEetXPXkEMIq1KmK6R7uDicIE4noF+M4RMwiAM4xT2wO395LXKg8GHOmzQgwyfmsysreNKdJX2/BOURFYAPcWjE2dkKVKKZ61Wh+HADLVmX8KBON9TEJO0jdGYXkkeLB/8RmIm8k/Ct1M0lkEoFmbE2Obl92vCnBbnRyU1NshUQJO10sEnzIeQtqV7En9MZsUmSFCk+dntN48XNJaroj0zhHKFKarkFgMWszBH20ADrYC0WgsjekFvQ7FPOc/QgCbVbTcgGvhO3CH8lI2aNwKVgQoAawum+AEgrr5ILFA/4xMek/ahJQt6rsYzg3TE9z81ImMctsIr0E0rYXd6KTLxYDRe+rAQocLbLHZGAmHTHPLDs7k9zFRhgGndoSRXYhAyieD4rWuxCPfYqZcK3NLPMAzmPZ8TRPegPa+BOxeXPGVHJGJ02ChQ0NXGr9J3xwww+N2mmAVYjWq8FeZetqA5Sz9jFJ6uv0a67m6EGaCWRLfw0hJdY4mktA6dK2CYVcOiDK6XQSkkpKwBmLgCUU0mN59XnRNe+yGPEOTiaRbLuNkEoJC05f7DWFFKdbMPuWS7mSljx8EGmCVgt7pVXnzXTQkk+Z5IinoRj0o4zkTzjJ7YtPeBAO4jWPczNQaYIXQxlyYEOaAe40hyPA1ruQYdA8W3BBF2VYgmLg4cPq66N2a0Jcbx2lBJI7da5wjKC4Y0lEY7NrFgtMXhXrOl+m7iKuW/CzEbvvloTey5TpA3eartaAWwPu3fuqJ2MChijUuiwOTaa4BQvAnt6V3+5X0x49MAmt6HpsBV1M911ofoGJ9BsoGAWa6TzCJJNsdVZmjjDnRNnRJ2dnk/PKgqPZXCdPlZ2dC+ucbfaIyRewnWPYMvPMVli7KeIwFhX7LR5z5PZoEEP70RdEK30ND5MUs+xkU/LSAVZNeeIA5awZTtD09xzFYxZeyRHwLxIAjwPQnXQB6F+AJlk4Bwti7fY3AXrJSQVNIQRhCOpiTVD2VelUbtbz2Ofm5YawwzJ0XwXdOsrGXNHsoNIVlVgAlTKroqvKFU4oED9KnYFbcxFaX1VhmS6wFFbOI+BuClChigWkfpGBNWQWoFnWiS1qcK5ydh3T3ZI0yE3unfmCIVS7tQVO5yInvKC7yAiX1Pg1zIghEgU3RwfPQfNw0bjBDRGJ/eWI1j+wWkrjchFaIpqy1OYiNft9dDeZq5+vYwrqA0WuW/0U731T6G6BFsTrMNBktu84BoZw9fR9zA2AtcmVFXIdctKwkpAhBCO228waiLe/m9ZYYydW7WtVocbZELVenkvcvtqL6Ka50l+Is1FFp9msKMeMXR2xOB4GsUJzEp+l3wW9obky3jdE5tQpPmBLiiQf3pTWsghXSrf7VqLPV5ubT6LHn8IwwF9TqH9ugvC+/QkWq4ZxCbABXKtU3F/y2RvhWa9LWXKVDoePwRmuQ5cey/tNv1W8b4AArCi8qHZRhbtvk2QsKjeSgGr5min13WHF+jaNymHdNDB8faeAEbaTiC1dPUxrQkoxmiHFSaa5AVeYwQ+mRY548FqH0BUSkcRCGkKgizeYWsUOnX1/2Qu/QBTGg6WPE9EYU9aHg4syM03HkLdIMe8lBNelAUwz/75mB4F5NT9Bux/8uGW+URV1+576Hr/wTUQuwlbizHki9DcpCo/4U5/JfwnL2MEXoPZlgAWiwB/sPa2pg5bswQ1OiUrHL659lx6/ou47Vai1BZWO37w9lh7/ru13fR2/e81+S4A3PDJ2TbeZQinHfq19ESlLtSxoojJbM46eUV3PaVSmX/P/2FdeC4VZezvmhl315RVH2nWS9T66aVVqKQHL2I3Mi0VnkmZQ60foCuik5AnBqKLTOim8SU5p9DXXTQ4oiL74clFXNOnrQkehE+uJ8qI74r3/9CX/iPGz8OgRwVIovhFyoyZSWDlIgH83eSKJhOO36c73m3ZmmEU7UPgkEVCc07hTdNsdolqDiCHNWa0q+0/0ZBH3x83El9DgQigzX0BxN3EHuMon72aVrXfQTqI4gBbzqfzDZ3Y3jNeqW4LxUN0v1MfvwnMSuETUWe4OEUI1IuUopjj+YpoE5kw1m9k8Mf63E0nHpL/FyXmE/xDRPk71nZpNegZf2iPFyWredkQ80UCpFqxfBvbaKNbvUnWpWCaZFg8RlnmrmuHiQZiaFtAs+D2318eqQ/9FlP4LI6JBB/gjBFSvToBVdVs1bhT2UTmLGWKsW03Xaf/ZTApLtilxVOcxptDTgM7kguLzD9lOAHZIva6yj3hoszFZ/BrpK27HbP7IZjNY/SOHtrfGPB6j7pHHxd6a57eWy6vGcDqkHCyf/9cq8p8ZH3LUGWumKNJT5YdURm9yNx7TG8uiS6cPr01EYdntPAupEW3fRe/JXyP4ZTWiULzWftJgCsWiaxUWxNxVglvvguOKn4v9ox/41y8LsdYkZur/5eUyWbY2lUX3ix1dxShXr8VESQbA0qs5leV/lynXchwOS0UnaiqZTQXgCTWcHmoFfZ4hD/Ainwa2BGCZygfrxYeYlze9bC77CmVy0cZHjDRSIA+XKT9srNaVCVD990LLsXr9Wkk6hZwh6cLP/JBZ2l7ovLy8KIFTGhd0vFHdPEfcQotSzeJ6kk4hZ0DK4f+niPTyOk5CiFYDFPH6cdCJMjoIcecfH5scUPg9VnwbEAXdCDmFAuQtzJMmWLPs8rHjiAWKJKFKD7ZfdSRwRtD1sHcM1jLzEFqNiyQRW2NwBeE8LdOQEaKmk9dDNvvcmcnEyQp4Smi8E51wBeE8LdOQEaKmk9dDtvCs/9ua5PtxaFAM5AGO7b99Vo48ART9dZ/cC+Biy34HJ4u+rgdeSp+uopivzOyUrt0pgDsV9eNBllnncpluXuK0nzKuFZZTFV+HfqEmEW7dYxwkQQaMgyTIENx/KarR5MCUSzIbhtorzyd03okQG0AUInlachCHbDCf/qaXfnHzbxHU9rcPqdoQ+OfCafSvnS+o+GdvUkb/HatYJomIisM2oBPFPXTkhFWUiNQYukXoKHQwDGFIi+GC/7u6DiE0OxZzw8ii8wltuCDpklBQ/OFsT8uwn0b/duZjnF3C18RIoat45XKp/cHyGlby8OpoqTknIfWCkOEBef3DYFX9cIuImmvBeuBPq9/e5kvb3z9YDrmI9lUn92bMs4mZ6zWqoX2UCX7YA8hvvgVLh/sWwRLxvnVhuRvfk9J6dopCNTmeLQyMnOLgptvE3I8i8/pwWYHD1Rzk9RAl6RKy+ednMoqYpXIIQM44Q9KcQ4AgmkdIQDLEIRuKT+GtJppf/PzgS6TGoGhAqI+tOrk2dhBkpc8TdTgTbEGu0uJ7z4ySd42OsUecV+nafOvIO3QIJHAgp7Cx8QYH7HsxhJZWOwvGTfgav98hws2pvjMJL4/acC6yR5msjDeLQS/jsqWBEBoiNjwLGdzO0sVBPds65wI0FnypOqI+Ybt+xwcWADM4fHS+R5Lu0wxMgpvcLmcHv8/NPQ4sinG1KDvc40dxRGdedlHBP+25ZlVEy8u75Vgd0+Vu+xbF3nEBVKkPK7P2fflaVKT94vjANB2sCYQa4M4e+cVTFu7FcKdumzcIq0itmIvX5W/AkpH93TF/dJBi42WH5Y3HO4xowUAdcDNG1KANtSLYYj5qqT6hhc+BvwCizximLLI1pxgyHObkrhaonFgt6njfClRyliw9Wb6+bbWhyUILlQQFUkKIBAVSRvS7xAh1+E/vCcizj5vT8+y7AypTwzuhXAISIDKC4/AP4LRsXocDOISJ0nNwT7V4f9mLafSvZJEbkkY9UmoS59lI/jnA4h104YN13Cngame+8J2k/ZBb+kX8OOoZYD2a8BqMRQlyWSqssHCXGI5PhvkZ+5XIDei4ewt3vs22xpiZlRZyGaeXIRYsC7ZVNApCS/jXqLBsVPm59ePgYbt+xwNPuk9EwpwhPyzmLnvwqFwcoBoWpAJiUVLhMU1DXV2TXdQOgcg2cHzjnwk3jaTUCFMI1MDqICdASLW2IzHjO8V5IlETQ1HFNXfpfEXQk2YSiulgtRZF/qVIgmUuESsnqNBCNnKXjyp7S0JxXq6x+UC5xjmqbRbfk6JnB+onWX8nZWjydPdensQ0L+IUTGSTNRqakhDx0vYU23Eqj7eSZkvFQFl3sCwybrfOeQ0KhAa6pzDDacgwjcNjPXt2p+5wKZgAQlO7WrxCjQP03kWb3AI8JMVWtuYSteAL08ouCIiAGF/8mvYxtxgXFK9LivaqhnKD0jE9tiV3Uv9VRYW94KJQTWIQJGng00qSqysseEtcTCtQKQZOGhEwjOdzrB4pysBr8rOcSalO1T8NPNbZFcAop7w3aH+JOxCc+KBaWFE67S40EMZ82xTnml4gq3fPmMNX5XIqp+vPrnEdLFWab1U90pxCI6lN3QdnERnXQct0RSiiINZ2xrlThBR5h05LzOeQ+/NVhW58L+Zz6KVXl42ag4KFd2TgJRaH/LuDKN3opZ4PamGmqpljvfaX3NwNP3qjgfQuS5wIZGts39sCUYXVdb07ljwZ2/eXb9YxlWkQsSamAfdQe3SoMbPutAPxX1mzgLCNOat47IfVo1b/clgbeVs2PCXk5MjuKZVT62THua4jznNY8Bt0+Fy8Mj5wRSaVj3tX9PyF8Nrn4wB8YMV/cL8J2HOqo4MVUGA301x/31no+etE/Ruws/Gdi8k7e9XLFL7pHdRa8BtU8mRro0+6K2saTehXTs123RhkF/jSLJopuICcvhdxRjkosycDozs5o9VzEBfLwoBfKI1I6BD0BzJgTrvVQ2iE3N8wsrf8dysiP0N4S7fysvj7SabLJ3Q3UzBDVHmjyrORpQLKjUUnQko04IU+qRIcxKg9uiTO6gmWhVf/GAcPP7Tyz6mLVqdqWEl19KnDj09pJ+kFIDOqZr9ER2SsUo0gwNXk51Zg7acITQAwtyoaUSCUn/34A7FOVsgIaeLSbKmzsV0xN3wD0KSlz1PP1w+ts1cfGEFm6z9Di30hMBPHuUfXTnjtvzpAOcPb1lEqxS4iDxeTEKGTpGgIextPWBNbSBVkUZo1gytP4cqSHlDf0ztoXGVmLXSNWIdX5rwwZayAUfCk84vHMxbvidAJjAHQF6gCp9aTYupLGcf+xLg1sNVAIr8A+qmDE3O6zdtxGEqnJhZapTnp8ABkiC7Vdmm56aiH1hkM1PowhIg5qO7+VDNXwKxwFMXMF4zd4tCliVBuvIYLIyHTZ8qccje3YBqMgUaB8UC4htU7Qgeju/n1e5qzf8mgJs4UZ7krwBMsL8YIduIW54//OuBYTUv4nf7r8TeXcVE4ri5MyfDjT3rzYw+wxGuqZjwanRJUm6+Lnm6EZXszhoUmm2W1uqTatgjnh9JJ4SMMbdlfAgvruHQ3tSSZSBYIDM1nmYnrlaI1SlF0afJ1J+b7gU09d71bNSkrzJpVsajm7osY7T5nFFARe3X1dyoxiSe0VoJybcq9027en/XXrdM7vN/EnEcBjc/u25JFTZn2+w2NjRuSkapgX1YbgUEbpxN0tN8Pw8pWwvJsdJQS0C/fj2nME5jvCOqv0Zo4k5BiIPTrd5MzgSWaYaZ2oOids7lhqu+UsfhCjTNPiHYEmpGbhg6bOxMSQrOkl8e+qGlO0jSs+NNJojn9CwCQZoG8/k2aWO8oca/nOE/71ZUmEjQro9nuIlVdhdmn4WimzTxIqluDpHZ6p5Giy6GARYA9hitOcMcHzKzCiyUXAtZsQ9Y5tEXFVS1XrzE0RdEwkdFBVDbCkhdRL34XMBFVsWyF5LrvB25QbFzXBZ1vuppqBaNF610JIglThNTKgmNiPYJDX6FjUT6Wl5QhvJLdAJ/RWkRRPdHUmSBa6kUj8Dmx8WQhNOBU5K+o9bsrNrcWrDQwZlwChBuLlSFoLQ0YrGhSThIgHda7b5yssUOgcvVyygxj8t3ACw3ci8VV4cUV559wimBlach44TWsfXUO80sNqAtXaooq+AVCeeBArodIwByhI0b7DEW8uQdPlCLbksCBCJkF5CQ59bcKbeU1zfp7iyZpXsPW02Hr9d+xaZGTVaXdFrJDcyapMlcue9P+8ziUFGLzhuR+8DOo0UXQhxUsR4Adf2DwozrtEUrovIu5unJKHYiiJ1T1UZ3hLX2b4s5PwmnXp9zXqEnz4bKIGm2swupA+G/pWQ2RQm5QrbtsdfC9cFwnRsCI/t+WCDNEtBaTJubiswQBJUouL6k+DkS2ae/M2CMWeQmU7T0iFCz3juF0BctEoyg7Paie49Q5RtXNAILwQwnA7BVegHYasIwGTCHtR+Te3CL0Thlj7HfpBcWrn35pJzq9r2NZNcSklTZ347VWmD6ICZK0P3pnpnUSmZOX7q+mvRrbaMnfLtQIQEt9xunH+4PqDqFMbzssS5ZnKSo04sI4pUXIAlGW2BXWsL90l6G6uyuderhuZKGxhnhZRXzA3pS1UlnRkPN6Hk9mhQZaidceJgif0g0STO3rALI11TEzGzXSKRDW/mzMXHHoCeBLm83LwtXAfvkMBux7+xmfLPID7T4sAOulWM++/kH/s6z2Qw4Xc9Ae36o8DYviOnZyMDyT5DpV5AJ7dBEtR+pUfATBpuzsOUnzaf/fMN9Ns7YLivqT0LPDr9bxAczEdtdNCd7l899lz9nH+sKs/vTUWsYFXR8YXISd1OyZT4FeQo6fitSvWJX/KVRB129TFkI4YAeFSavcmBLo4UlYw/Pz2P3+uT9J5Tsh7Ng+Ha1NC5xwghEXKJmTdiCebDgNpDiIjd7vT+OKWbJCml1hXQdiiKK/Dsl1a+j91PAEHA/MufjKP0lINdQiBRjfL8MGNAm5xYlIZogK2/LTIisO583b0iKKSMDGIKCT2AfsobQC6AVSuPJiPic6XgTYRyN2oHgxr4VpmGx0PKgzSEDZE79IegUzhiVYTWxD2b1UBOwLLlPd/aWbsmxv4wXRtYz5T+4hSKXDrDNb0Hb84qUL2sQZ4FCoB1hCwOnLDzkBInNJ4ZmyzC0qgOJx1U5VcMnsTzwyyjoBP0W1jn8rKGB+UtGZXkHhpMR+aegOe7GesBPpdW+2wkgixIYM1X+++GaQbj+y2/PNSAHHLiFnIJ0FSH28U9RhzPPZ63epRgLP+GWi7DqVd+zuvYzsYaFhCbI0K6S+SLIhOwB8md4d5P/gRALZRxT9XCbEhe/rsq4FtF28+iQTKDTHGJoIupEQJbawAFZ4Sw6uKvlbLCFa1a58P9/EZhS0zOadM5nB2FAufLZGFGaw0PocIvbC8ZihHOiDT8P9pka8ELnBqqepYH/tPZC2ZfwLW/RSaZ6kWYcrZMQZ2JzfMgvMEemOJfvflwpSNzdAa0TT1A7JsNxfoFj8WiOmIXGdMwN2YiSev/P3KW/L6zwbJ2a/kBrEWagJx7OkJAk7GBMxe/C6qIdjmuKZpiO43UGqJngU15C3s+6SGTSjaOo0Gyy4JjHSNMcTCh9avoy9vpZb8UKqT0rQBETYh2rCQnxDsWnCKnA46xJGq24UkOCgW4a1fASogsFVxatnoI/nGvGe1GJEku+UT8JwSgCgzY5fBjcYf3dj7ze/TTl58HCMfmmFzy2Q6aq8+K5l9GIgqBJ5XwL7KUkCbXi9BetcNSb6FqgsuTqkK+k4lPhQ75EcWepBeNiPCgcUaG34lyoLr1qJZ+SapVQpr0IwN0zuXfUMJx7MFNAW90lclNws0t6YlmieLlBFSLYpRMCp6WBM3nnU3CUjdtjVru+oaFKTXbdgAPtOdbGgviZ5AkyYdSpZah3lYtSh9UgoI9spkh/RSfHsFPfZAgwVMDVzov27slI4XwZhGTVlhWY0gDwE4iv5ANvuyM6URodQno3EoE4TUlOF7bcI3yWEOjVZCi5tA+NHarILaEpvz4R4Qo/LJGjO/2CSJa/j0QDZeOe/odXAEPUHB0YzDIUkVLe0hD6vI8wTiCcjHLF4CC3WxHi+lc2cPEAVdYtHjeJxUKpqaylUjY9j/Rog7SbK8l1hOTrAqMPxY7FxnIb18cnhsxsfUp05zaMaSfSbJ4fHM5a19/WX44eewHZSlaRidRt3K7Qqze1Luxgm8bBPZNxVhwCf/WavyISsYT5Q4Ykd/7GIZlKrHSkiqHrvSHD/IFvUJrA2hq0Qy/QgbBjKhvAPVVOuLRJgclZ0WkaYvfvlb5jRCd8z4pjksH4D7uq+bU/AX9CewCIT2+44SzH8PpjxQ902LVwAo02TyUpKZOExrTh/9HStB8xJzGhg98s7f7Lldb7YIHUoAIFrhlB0+bXMyZJg00g/Z9DxuchzUQm68TdugbVJoBDTeVFe4yM5M9SCMe9L1In9nzGAlnY5p0Y05V0g1wrE7L5REph+mTNLYjPgPSSx0bsUZ+0C04YWXRzOHNaJO6LSQQ4Xe/1pQlwylAQp9G/YncASQpyvUMz+TN31cdJ+sKoRodPTzTfJIXbNmfprF9CAIOGaJXq1n7Ew6DHxip60rfnmU3JvIODtu21tXrRdWJuQa+xh1msgf7BRFL/YPjbY5KkJZvXNWzrU/+F1vdoz++QDlQS+m5Wq1y6B1ghUNvbuig9/pWb7mRLh7QIW/I4eOOS5FGaSzyj1V5Tk8Oea9oIXZcoCdqeJe88pij2vCWN3Py6LIit+CLX3X/EWoK+Ty+NVytJXaX5fh80YGvJnAhzcClZeFNzADsD6NdfQ9OTzi5Yz8UPsgg6jUpUzowf3aFmz/ReV2nwtM4kawYlFMNseF8ylyiWELNRf5MLMhtv8lryNj/IiYJqnH1rRcsYfsLV6nmsIphpXmcksRVE8vzbkZ4YrS40KBf9+bXEVJBGfGO859wLoLHVAJdpJUyyM2fZ5c6PQa4jmYduzYLKgW2xKFbVQykpZ7w695WvfBU7tdDT/YMDVC68NeHBrZjc0I78KBSWNXiNNhXzUYSp6zwOV8Woux7ft/e/GOTBd09Dwt8YLBfrrvGuW64VIWA2OSu2KOa1X3FrR4RKjL3EPTcdfa9H3Qi+MoK3XlmGOHoWdo36b/tfrijqLFU46CHAka6FO3166YcZ79lre9vezhoXBkY55ltLy3vKEDnjfkh4D0POGVStPMAX0SXpc1coQ8GUiQWfUDQ6BwWd0Ij32l9+7iXg+tqR3AaaUnGC8Eb1ll2MvdYW7SFV4c3MqOMolVDAZcBqIvi2I9gP21VOjE4818am32rcwlUczVDgk/My7d7yihcmewUCt9TZXRHtbgjPb3m930cE9+/xDWzdM2vmG4jOtlH5fmToEj2tivTjXXpkKQZPup29nUKs3lUuTFHQprwu6dR62mFVk2eWXJAwEauhq15Iv9JuxKScD6zD/Qcb9iX05Myyx7AD5BFbf3NYAWi8c9RQYAwNraqbOaqMJbG+rlp1TTno/IE/9kjJqipWLWNxDl3RBLf+/08IKk1enPafYIrr/JyFtE/d/HFGC45gWQRVTkBvt67QiFLgcNfmGblAiHEYCxXlZmwi54wxQU2FLmiNtLrXMFy6OvgDohGdVS06YvV3CeRYb083MYR+7bnY4Lc1fCONZ+yMY7QUU2GESSuHqzj8XCpu3dtXsZ+oXGQWeRe+GdtF4FfEywfkWuvk+eBbUxeWn2VyRAOcBR6FZqg83cWD13P2zsLF3U33ApzcBdsbkjk0phgYKG1AoDjfEdXZ5AIVgVE6jQD+laVBgDF/gXE5hZNQWaWv2zFjJRuMTljpRUsxg8YVCUt3UcdDsX1RxQbfcJKRO3gkMTIXWzttXRWMDPnLRXWT9ec/IhdSKaywvQ7HALxNIrfpJ31ueZiFwIoLMcR3/jMEzwJNBMPHlmTBlNoXG3jdqXngXKuzDQi2U70/Oy46dRGV5yeIY4R1RKGxPigAHElkyE8rXFWHU3boSv7f+b/IuiQtclfp5qxYy2E2pZvINw5ICGByQXjDxnISXeWh4Fm/CVrUTWUP6fGEV3PpCjgyxTZHgsdKqN4EA2+0EaCFuVeEicBgbUtkdXmxg3+BR1mFMCmEhqhc+5rMY3wgHNRSbd4wp8GlKnhwLmR1sng+jtk2o8DHi7HOEPU9YY0ctQ8NyWCTJ5sA6Vh8LM0EGoSoiMnKalbyS7eqQEDy1q+RWxpG+yXtkZCcJXDgUsm6fS5RzwDk6dzvYOVm4zKrlryqjrcErvu362wrHihiZy63NWXvbJAuKikSqd53xHpE6CtESPiyU93Jv4k/SM+N0Z+w4S/wccMgNVvFQGHk4dmC2oPqs3+7HQ8MLxzy7P31OX4Dps0E6LlKQw95moiONCHZjJInGVBfm39wFGmyVSCIndjCLMIhZg2b6rJQ5g9t3qeNhApJGIBDbAqdwB4EA1lHfeWkaGXDA6ORBpRH4BSLxuuzIq8vw4WX+Ti68nHVp7DThKnH4D8c7GGEM73PnHsPH7lsKnjJUbzPmhMRXo9ezK7c5nvRVzYknQDOwbipeGqg3w41hC5wP4eGu7NgAU/AIONOY5gzdkWmsFEImZZHuwgmC1C7AYCmjJF6BmqOOjE6uhbQpfNshIHSXq9LpTOe0uOvZ22cztKSvoaAlQK41zmxmM5piFSYxToLbDzt0qQwGijsDV4erOcl68nbmC4KZqxkLRkjczhSzo1mjzv3UcIl7fFEiIfn3wJBOs2vpizWYRNQ1q1FokQvTOAw/5kP+HOKQDcWn8KFClRX9UpLyje4jaW5LhRvLcA4+5B+IQzYUn8IHBgL7BWaXVNDlYu8cx/CfHb/XNfApiW5s75PFcabGK7X7ZH8fP5xkb6t/TdunGshbIvD7ktiJsoxQfwq6fAIo76Lj1cbKXnjbOBJU6ZP9S14FaWkTzActyNF8PAJhl3GDNBBLAgNpIJYEptS0J0fz8LjL3CANxJLAQBqIJYEBFGyA8tqUZGwCx7nmgiJdvLo5VbJYccPW5fYlLz0hXOSN/e+dbr4+iDLONnOYJMNF+S97rC2PR0khBbLHeEiB7CN/jRdABTxO23hbfhhyrld8DB+FqQzy5ySdQi6QlA8Hqrgkc8cLdOZcWvA1rWWRHfJ/G3jub+BJ12X0p8i4VmIlN8DtGkgZx5mMcKKG5PZfgH8fYTpaOLzXPgH1AfBwjvtLQn8GKhbiWcBKt7PimI3NArlXQaHGuVrB4qaR4m7gVZ/cU93S6+2wgGOScNW5/IDYgyPu2RnUj90B6iArOYCEOkXqiXCVxfb2ZJ8ImQFGkiHUInVSOUgI0UkWf76BG+vNwrYAlNO3xQVAWsa6Vv3OogkXEVW8Xj7DeBajECpmnKYMvivO9kiqKeDEspAGxYn4j4W+QChpb9sfWayHKmJR8dOcAKagTmlbdUg42JKif9w0VlGixYg6NIjMv3rme3uQkGrj9YMq2tmuo6+7UpUi0Xs2XhVt8DQPTkAUCswo9Isb7U3kDhZ02FExOdpfW4dS9m4od9Dr/C0YIqy9uUYcxtI25OZQijBjywHUmtq+8y8te6RYZ5AC/OxVZLyJHeYn2efWERH2nHsotGXHvyVxiFiD7bVa+HE16S4hVW8Yyu0sRS5TZLr8RnNqBmsJUqHg0wYgDwRx9PojbAbQS0CXTFA0PtqovwdgULNWTqSNpeDJLKDoRDW8OjWpwSRKG+MayUuN2e8tmx6ffqsBWV0ibo+1d7J9pptRgklIn98qGFuJcueRe3F7JbjXTkLpVjckTyoMWxTJ04CjSji8Kgo5LU9CchKDmRlTZwKh/9ckgZh+dq847nNPZBKGgH6EJqdVeRYmziAzTbS3R1hHefGSNAwAVnfaOCXYl1CWW/bVqFfghRIsUiM16Iqv4fByNzkQWAJ2xlCf16AodUIxCsQ6JFE9+4w9U+dbeIQDtxLRP9Q65Ka8nvWq2RFDv3xKnpUCEbJYtDYbr7jefwaBA2h/2Qp83rSdsSMJrF4iba5jCGQSCst4jToG+jYVutjxVjbqE8VeO9/zBKu5BtcAFFCAmKiivXEqdMhLyHUAK2NMmEgoWW7Li/MzjIimQ4KWAgBS4yeF8VlQ5BGWILHolxDUb1fgh4WD93f0tvgJLhz8mIUMilZP0sZ2cyvpxIygYhxeKdk70j7x/p9m0xiTUQajMqbHQKX87Jpr+SYTHOM0+SFlUIupT1PSnUhI83f4YqQqBfffVWpb0yRiGtxQrQ/CqM6FylFCrNLQ00PDt1IJpcJd9md9UvK8OAIlwx0oyX8eNbXqYNpqNNahoG9+7EDH9WqVzz80/HMnQfX1JsJAkTCoBT39XgcoWBstPoIVtkEDHUR5LaM9yfzrTB1LXnasTCcCIASwsXzkVzp/6X3dzUPDDMuReoewNdyonlerW3IH115jbgEe6lErbnuZOv+17p3H+jp5VJ1Ynqxg9mg6+FA/wJsHRb1X+l23dMB8hS4AtTJd8UrqtAGjVnNn3d7EfpDxWFoberPW1Bobd1oNKpoBcR9h09LKRsFZYKtw66nXRV9XojyqyVj081sR/ZikDUUa++GbkugbllsvK609qy2dFIUBqjx5m43i9Yv5q9z9Gb1lo///Y69RSn6Z1KX4A5glram5uoW2bA4Y88xdX5VKmpLcal0M7fRu6pC6Ml/UlvLmfQEItebnyCvEhkr5NO7M2Ay4hmrJwnlS3ORrSr9OIXT40P/vdqx9nCWLb8mSPYvlH7zZyg6yaiqI2igNxfKcucKyWuPPuj6mrbPPaZeyIOxn5S0h3oEU/8N/kjJheRjAHC2syVdI8r1zBva2nIJGP3VvzyaL/fMLL2uWqhh/Nc+IeJ9+ulC4SHURZ53AgyikNmKZ+aDrLT+stedpSZpX3Muruqx7ebw0PTSu7uEKaKiMAV/Xu5CQ4pPzQvk6ZXScLRPi7Ll2oRDbusUhQVcknLCP37hMtwDZnq5Jzk/W0gx7Fi0QbiwrIFIaj1MwStqKR0YHhiKMht5UW/KecwFZpQT+fiIh20KBhhltZoGYCYKgrJx/CgNTsDvzmAWcwydJcSd00jxqkaTyqcKZA1Us8Bj2sWE3vaRX9Zmws9su2K8WwaSXAJMOVFLtKak4kRY9ANTf8cs3K0Xfd1MBM3GeU5ZSzoOUMYjm0rAaAG7CzyWJP2exexCpqCj1jGY7qAlyu8onRCS11dmSop/SX/eKqWykciPdxdHc4mp1/QaUlDA6pi2q+GKG9pJegdWk1c5ZwlVxnRxm71QsrkOD3kPTerSQz6+lEpgZZk0CtXEyxurgIVApu6QSuiOCQ7avpdqYUQNb2YheF3U1tFPM1BYwZTfOFQf6AV60GbOa9QWloLQot9EJc9GNPSK/BaR1UqRNf2BDNQdT5jUHyQcqVa/xkMcYGYOLR2vYDjeFgKCuehKBJHi+TIVtYPpqsMsWSsRCSA/Yr4xWrzg0/vuUZ2oshFWpcBsutgkOvch7bSKf8JrWfxtrdU4WWfN9HdEDWJI+E3UDSuj57XpOLw/C07Btq7IQjUZK7PeW7ZSqKEuoY2WmZceEh15N45Unr8aw48NvX6iDMI0hmOtwJoiPiuD2d5LB6DDyudVQVOHXKzJUehMirmVe4oVFMuyOnQpBafkS+6+JRUHtF8/QKVSImuNv0lh62vctn7uVWXTtd2/Et0d11PYKq2uSXRxPQCX9cb7mHHQN2Vhmi//ybZbi2zJ0m686fD8BHyyr5+IaxRPY2Sq28lhlY3HZZULAO8f28zs230eb/LtvO2ib0Rnaot0IPChF1eXUDVdyzwDBW45+8FHP+IbjXQtUDlMEXa/htn+CvXjxv5ZuaiGQXY0tzHn+Ad78F0AWT86Rj3yun7EBqEiSJxj3kmSs95sIUzZvjSOY1EqYCSG/5t3EO2MfhLXvpdc+m0fC01z+Rzt9FPpQD95n3KURQPF5e1SAUsbhr0MrmWRuF7Q1JxqFxQuXRmjwBT8FRdRI5UjnvVdWxMkW804RWVR5Y+4FE6JotXlUyr8jcKbX9JjROKv9eAunpYhSKPYW2zXUJcIUxw95ekIgosxpHCog8mlMzV2g4onmoLEJ8ixLTYRIJhF1fClBCpGTleZu/ONTKnKGeLWb2C/kg+xg9EbR0hZK1sbwGelCr0T0rd42D+Q5adW83b+VpSn6OqfPPHTWKBVzJPjWX2ZzvllDgmAYqFK7eJ/Z+fdxV9LX9SNtEY6kYiV2uV6tdtHakC3U6TlnZi59GE9SRtLhTvhIBD7GekOro7z6JKLvuW6CZObEJTl/9ZaM2ptVsnL4GiA/TF8JjFKKRcZDqc6nfnEeSFLsECZXKJ6e1GFuFj3xWIkAZVLTcjiDuxgt8c3SfK6tTrKaD84C4ytJVOVFE7vQ/VcrlknmJzBrtIsCZrSFSALNB6/8mf0K4rnADoopo64C3UAhC8V9FxU3PMuxCyfCqdqMyKH86xIpQ1J1R5wNtC4DfRvrFUWrasOSpuUs0Tfu/vsaKYIscWELQRE3saQqZumHKXUdbS4kv6xdT6ZYnJO/LpKVIVCklkzWYBG1IADXz/aRf2HgA/OvbnRIAmkDqEkmrBUvAq6TCRfsEVuMQ2hxNP/iwiBEppswx7+xdi6EohrWKxaXiJzTmPU0pxJqhbuY+cpUVQhJuHYQHhS7tO0A28MRoYo9OQOZrjgbEKWMSvFJILwbwFnRCy8+lCYP7UOUKt/eXhzX2eQ5TvMJf2sDfmBQd0Fwbo1rwu+aK4rcKsHOrQ9kwgISmqYbBmBmgEvAE7jGyj3WHMimRJdfUMgJyFGgIUQN+YinuXsiw/dIW+1D79BFu2dXQsh8YFe41FHKI+h1sj0vRmoFn9tJ6wSK+ozjcjjcOaoNT9MCVzwMzQ7xrBCsGhjPfqJUKlCo2U4w7jJ62BEA4wm76fZa1kFQ0jg7L+ukvEFs3/q++pSSBG41lghgbj+lmBeddekjNcPUcvHbszoGkRs91ofCoERLd8fJf86YDBvv5Sw8nD1a5Qk8l0zfsdRJlN3u5+UzrVUI43xStY7RO6inxb1bYjKbLGryqhgdiEF0KDJAAOM3cu2UQU4gklFNO7BmpR2t2ptKaD5m+0lgpAxPFugijNhFnPPWnxU8IfBkfsJyiG3jkuXAdtYaYSzzXubxda7SoFqXEpUQBNc9XCViJdPrHQ1LbgCMpuX+2qO+Fw9//7vOjQRSA5Z64j/79P+W7vN6yqL2KO1LUBgvcm3atYuO9XkxETarpW0dpSx+RTvtxKTLt8S9N8UXDN+/EfvTvO5XRdWNoqoNNgX8zljZVxHvjOubXfUKLyH3qNrJFtn3tgn9QhmwrnX0DqxPEARiMq2r+aZZwJgeLbLBEAuxi+pyK3s6G3cOiSgkISMtYWivCpyssRJsZpayUkNMtMHPUkWGYySQl3Ql1iFn8WXWKzn//f4QzAuVlwyEeB26Gfrd8tTHPAEdtYa0DpiJax+8dfMPVb/IX+PrjSlFG7dkyTTNRaksZ5HEEkVixc6yNPHrmEKeEdHgqaSCun55v7MGNml/kCzlrNBA9zGbyV9AT+7rWSQA+4tPsNpOddoomI+Ev1FzP1QG8el2rlBEqoEThys2ygWVWJ3/Jc0/E/y5LwwXT3Xfrj6Ksyqj+O0+W6csYEVrVoWL4TqsUEzfB2gbEgKfNmGB8iqZAJvjYKWTk/Yx06qx3kga71jFdAkI8Bmhuq4QDFcOWV1xnLTRXBwKvlKUkkQz6L1QND8ITH9eM3loJSccunc596fw6vCC9jhDJeQ+4hz9wqAT5y0uq1VuFvyuASsJQ452232h/HaHiOPCch1VSWxSK+QqAwyQ1p5Mu/XKqerjpG3WQhoiCL+Tkun6gcruz3FqJkZNoNr61VReumEoMg30kCgAKegn4AlKFqVP2sRUk+VBoaSlW750PoR4eZpNDvRegFl8nekP1r4Dkebupp+9gJmfpKLZen0MRsSTdtdW6VTjOzi9XR224BTjW+eU1tetlI/HwZHxDZzUOk3iBKb4FGSDGyrACCTdKUQe4QoW7wzwSIG2pB4ugJdDzVW1wDxcISxoJ11N8LpR2m14Z9OMhqVXVkQn91cDzRGJIqRAtFi5mOZmxg5QYlTEqr7gPj259Cfb0CKiMj3FRlNN6v75MH1hUKVDYoKKN8vOZpJWKBveXk1UWZO1P8yKEmmwaoSnZPg8l33i++HzfHp/tp3vYDqIf96ftZ6278+O9cf7MzO/A3cQ/v15PnkPzwd4vxBF3zjm8x7O9gs020d4yM2wyHWx4faps0J24R9nciV0VboPy389M+t0SKd0m96k+/Q2vUzv0pJ+Scf0IZ3Sv9Lb9CK9T+/Th3SffvXa12Rsajw4fnFXdEtq3hQ8R+kgiW6dVPuVvrnwDXeDLjwNn6FN6IpdReaaavEExOn+rtFT4bR0vzA3Sy4CziPyYugMxWevnzumDOM9hpKCfHyA8JKlce/IUg1ZqxlIQlHJoUz9YvQ1MTPMMePU51ayQFuF9fvhRuBAXvzj1HtIUua+CFYKa0u0fBJo2/LriaF2JnTSWeX9y2GMReEyrSy0hgBrYDwtZEC3MfvbAIu94mFnnQX1lPSwiMMx5qsWHvzhVcxBpH/5T2xu2mNHQod0Em6xwBpDFd8/bKhh0Yt6j/XhTAwRTFR1f8CbRKzU2T6UUXX+QzyspgG28Y8WCyvgpR/2ANRq8JBZnbL9Srulx4fUMjNoDTfqFaOT7ZAa8ePYp+Zv8zaCnzclpd7jbQY67BX4C4CLBKgbB7B8K7YCCuHyyvImKG79IuuxGU1DzhoNprJDgLXd5bQDAM1z+GGywMEtGTamxJeiJLVFlzKCdx5R6UCWSDVBBVrHIv7WheX1IQhYfRJrjDUnKnYerksuOp8/pxE5nSJTKhWr24rLFT6JJEitmDzB61OKKVIR/2xsZ0b+9SraN7rUdRzdJuqFAp+JVdruT2l3sbHDX9hv62SCUunUVEZyuQYZ1jor5mh88hDDBKUem0HxqqMLDBaavxDeDwytgmT/qfKEfQVi6r7swNkWCM8uhJjItz1Sj3qIxxsXAYoJDSQE4P18WbndIJH7Q1k4t4GO6HqMxkyoySoX8pf1oaERQSs4phIsSL0moZ9QOJVHQ7h4R8zpFWG/g8FZ+5+ScIXNqfunCz6WFAXhUqES3/OjBHRLsAW8b0SRCOUU4kiRBoQrGpwVISRWaS94dD0AEigtNogpsR+J4fZl23RYteXdfo/TSsoKObggt8mJAzBIW5HHDFfQftTT5Y2WLF4W9n3zjL6ugUeZpHc8yypGDyDIVHZ80dCG1wAiOmcykuRZJ1O6+uBcJhZfm9i/HkW6xmYW0AMizBQ65NcR3y1VEBb2Njq7RqjlKqMrBUN6FmhDQszEb6XjYb17rRoH9PjaV7q4bbzZQU5DCsLZbhgTeSqBq171m9ixYXhpu7qZoRGjYKxxM/InKpnj88fJYEd/OaYNj9HaK/dnZGcGrCIBq5VE33J/tiEqIaUVrcOTaecarhgoVUxvNhLRP5/pEHxkEy0ffmncJaH9mPlnF/kbVopq2fNnvZhrLAvKhiWhYrVB7CNGuJSTK2w0pdha4zIFMziSyv4fUV9TsAHn6iTXxuEiHMeNmkBO1hSjIZ4Nodxu4n+INV8jaxVw2Z55k/FsEjizOYeTatk0YMeBK35g0mEEk+proxWhLr80W9Smph2K5mJyZiLg1CwDueotFHPztCpKN2Cw6sBxDhQS7YMCedPsTaBhbgpBacsUkSu3oyGZZRQOCYwJtUbAdoRBYYvkstmxDe1mTLEp0ZzKtWwudJ0Dy9amHxGeM8rtqJCT1FjwLJ5gSJIjMeEkv1S67MkfYhDr66eOzZ/5Ttt5RDH2kmIhUq5Z7lyTYq+opgF0F9opCQUWUzeCZw2rTdkBa27wo2uKsRUUVEWkFkO3M3sjcLT8jm0Y3yv8moMXuaYZwe6qhzJqupEpr1H8a8rW1FbZDGbSAtHrVZ6pygy9aLo6utRRsBwNT0X8mtULh4k21sSMeoduwTGrRZA3cDM2YXR44KKESjmLy0oE8i69imbhLcRYqYVBd9PesDSChSbqfVErPe0Z5iDg95oidkaKiUJ1EVcB2Gs5XNkAPniZAqjZc3tn4RKphrVl4WJq8s4KkRaH7KJWDBy6mrpoI/1k5oqPzV757F3V5vcL4WmAaosRAwsIjK8Nqidg7KqXtKXLJCqHsK4ejNuE2fVY68olgv477qwcyq0L9gdXpGeooRLCqg+DXULJnZxSOtWeRObMAftU9Sfm+ichr4OGgzLBGiWJXFRyt61LTspkr6ElIvC+dM8kiB1kKYMSCQsrSdq5SpPg1tPahi76jRbmkf1s7X3doPEqovr5ckmKB9peNS3i17tAqAkM2HtPNF7gyoqigpn0kdsJtUqzWRLFtMv2vqh+r8vIQFzxW01cliH9XT5J6EiHqVq3rIGPv6yobZSnxCuvmNObmb60wu8nXbety4dNeCjCqsyvShMhXBSMjnQgWzWRUq6mUmQjtTSinQr+OnQQarfn77JOBxNj4UFxNztxZxZKCY8LVCV8iYrZpTqbGyMLa//TECqAmraYESwaKycRtGfG2gCuE1irOBANmZWk0DFN3QmMdvWxcJAS1/Ok0D9tmjehsYMg65O11AGV825+ILwtuSld7Te72v8kuUwDxIr9pcRoemhPK62KHbpMkPM1Vufo1FolBbySsVDeDx2S7dBqFdag4jOQ/+UgNn6uGsdgZL3cOHVxZ+CXrMJsoChAhAvZCxtRkwMpdNSEfVdrdvpkyTTw9n76MUEuxXZ8hbgc2/EVyw1jO77CXEmeeIvjRrEdX/HcOLbjaw0f/mDwjq3LiP4/aBceeBVSgGcJcQgZN0g9gFzIMYBNDvBculYNUacaWWfSsH8ZRr3A06aIwtUhnh6RdMSZSBjQOhZY0xydqvkknx4j7E0QohfLMe8pGOVoJt5Tfpmw3p1FkkCjR41AwvBup/isACRzwNFOfGP6gxK+v8Nq4SBQZXiKxS1CiyXRtXyDfBLOURIhn+lpuCCvXgp17DWCegA3gBvB3p0pAWJmp06AG6p1Gj5uyorTk4mcS0kgLQ3HmnpazoClMtn+tWgGhFSVD9PupyW899T7kiWJPnrloT9sDGg8ozCIs1EB4bExVnQ6zBI4PpqGOwZwpGshm2TgryJKzHNiViDbLgu43wAs0yJr95sD19KAHUF8x8xyTYNVhtWxxrnUWxay8tlFjaUwoKVTnGdZStTZ8HnMjyAR47Z37AIxc0k+A3DdpA5Qx/q1SFXSBVM/T9u3tbUUWS9TCArNHuVQgy+z6CbJMXeUtU6btZgMYDfeI9gdFo+3F3StlghYzg47NeJbZy0kW7PLO5GxomPiZ5SaywlWKe6cxGHyC2o71vk88wVN1WgeiHZEejQRotMc9u4ZTj/1Kfr2xSDNMlSc/zM/6gkhmHI6T05rqdQ/fdnD0cG/dUgRDTByiGGG2OjvL1lwQpbcJDu2ORNbutYfZcOIUQss9jSgroIVun7/NVIN1WxbXLxDdLSkj1OWe7103YH8O3jJo1GEoP54N4erb8tzZb7WNc7xGSG7658RXIIopoVSOk8ynL3Dk3AATeTuITAfzO5MENMLJaCylUV0kbVFZDEChLK0HI7tyeWCsU3OLm/HgmUnSfIyJjY7Rd6BRds5fd6RJfBA15nPC2xAnq+Qnk8LSZPCqsNSKHNVnDMuWvKFSGmWyAS1l2PS06lFaEkNSG27pAMH9oiDZ01H/irA7w1c0ZpZmh38jeCQwmd8vv4h0hpZlg5oykyasiaJSuGo9C/VZCZ2k0Y+5cU8yae8mCf5lIkpypfQYigpaHTdY0X50TvuswCNKiAjPz0I+fCBoOFdDrFlenQSh2/D2wxmrg+J0FcLqxkB9n/eAKBTwfX5mVPDjIxr2VyLFE0LBMrSXUvMYfRyQp6kMBVzo20y9sF2ypN8yot5kk95MU9yKBUzUQz1tFEM7dTMRxytT94TCNcnkqJsyUJqqP8uUGTOwVvj4v7Jdn8N4ODCf7JdF09+uLcUUQrrKCV4uJ4N1JGuWoDJPYa8mlOwZMR0paNWbT52vbnJUk4Ps2VCKe+ZS1TIDGjypIh8kYwmLgDxHnxeqLfGTcTl8Pt4I/Y6vz2UXguk1HGXmKO7o9ZA660khXhd1dLyxzbUYrzTLw1zbZRvyuLy/4eoCprF8RdoyAWWLRD/6JCVSuo5IPOKLiw+DAAT1gS8PpTiArHAXs97MU3ikSQF2SinY1nq2QBE3Fxqv0S36I6vNVqoK9rpCqScKs3xTLt3ebOdDjkZDRSfllh6xBde1CozLiyjP5+PjyWcLGDa0c/BKor5d381GKvsf6eb8z3CXr0wqHJIwd5XEq711D5RKCeUpMSQaMYsAWIZzkYLv7E7dSSnomiLkXYlWakPF+wqrvB6++8gyOHx/XxM40Bi/zoRJIlUjgp7x2OJHxCuVyzfR//zH29SucZdl/NlrUisRnBvWZxxQIIutJ7t0PrNWw4EQAUt0qQ2AZcLw0l4MZK0efVoH/Kv1+bFIV47DBOBXEq151Gk+AsfJVpu0Q/N9RCbSZNXMlorjrdeAtGyiT7PjUrS43HbZMVX6pj2d9O5rnLQ7lFs9YFVfnKQfx8S9TxNTI/iKy5kdJ0jOaaL0058AMqCuXcLon9JyI8h6bTMvQse0tOFKUBvy7QRBTj5eI5qrO4PkDEbxEsTvkflv7tXDBc/3VkMH46MjSiPGfU2oYwTsdRR4KCDbWIOcZ2NCyLJ27TcVGUo4TiCMpHNrP50vaYnA421bejCuQ4RADDxkfAvPRVUDV0IDfa9Kk41kL9HI2pgMIsZBI43NnyPe3giG3DC62RtEzBfMgvspsoBPQNKNUv2GkAlckPOUug94TqYfOwKnrsRsX9FGw7SumUoQHfIG6xJ3IDp5hBPwalwBIjsiFkhXMlbikC9Kfvn/wWRqJ8CpPcX+MxTKd0Xxvp45x5KE1XqawHkzOgVsl11ROZ2oAvWC+G8uqT6g+8+q7WCEO8Jh262Bf3WDT82NX2aodxiBQDsHOXSJKgxW0nGEmVlPz6/oHexUHaRVPon+gTS4Y/euFXggGL+AQQOM1gD8Uv1u1U1vy8U8kqx5DmTfoc/aonjppO3UFhIW2gdrB4gyyyyiAArvd10vH22g9DAEjtnW1dIBEJ5tmyso/zdlylFhx8o/KHNWDpUghNqZBScYYQIrw93lnZIiOEIVGkxfY8z4WQQq4U3h+QOCu+wsmgThUPura3I4ogneos4/9ZGe2gqmti9WcdpMVHcqPRpUu80z1XiQF0EMTcjjPsdk6CwMASMLnH5BsflqCCr8ycFf2URA7s4kCaH7ROS7x+/g2N0Actxlrggx5iK0HJrXUSzs+h8X9O04TRbqL+Mp9/TfSFdh1ftVyiNqNOKp80hiYNRBhgdchpSXQvaUXLWzFzQFOvQT7I/xczaGZMQG0o/vJfs32RmLITWN0D4GVP4SABUNsKS2/bWHQCN9/aOqUQoh9qNbE/GHZDQEQMDAppAtBMjIvyURtujtTX0MzYClvKMO2atqym+RwDeMxhMvw8WhcjetZIfRq2bxNTcfLQPTAz0B44Ll+LS2H/+DN9zNdkohj3w4IdduWY5BVPQungDiHfcoNv0q3bTDp+fxselCcPtX/DLwmHHueMhnM/tL9/71yR7f/VTQfaRN0ZUNSbu7NDn/zOhLCm7sFPJfj1Pl0uyY4def2OV9YFwQDkHNjq7qJTI6Pxa4ioVPFbdwSNR8Z/VfFNihIVrL5rZs9DUdiBjVbhqSTmuZXha48SRG1TMoM0qNOWRlfv2SfyzUEihmOmSWHmuw+FtZnyejX/B7MkBS/D9AzkDaZ1uclVqyqCuCyH1yko1yphJEA1AIVKV4iQ7sf64icuyNQraVYq4IYfd2ryvZpsKlj26ze9Dn1h+8E2TkaspWRqiFSs/gBSgZWRlo5BcetjbbAmbk18PFtUbwC8gwlJqBXb7odvB8QCIQalvu3QLA7abNXqSvWP++o5i2OxCKEQIGAqFPd2ETW430fS6cgHIOz/xKvrxBkXYK1D0jltpvNWMOz8r15SM9yJz/zqciF+gtAdAc68O6vr+5oWSaR1IVSsT0QTbhfQzWRq3mLrrD0CFqO/GP6ZE+n7BGbbX9IbLI1G3Glw4kaX6iHfbRsJrW70C9lR5Op2qZz7GZtzCcrFXXP/z1WcWIqyzuPSBALRqaQt725UBTwHq9J/Se+JPmdTWGg0iG0TDp09PqIyBisaisB2L1yVLb+3+pBPRUjHGnAmAo1QzvcfLszFsp5HbGmwR1QphJ4A2seSNe5AMyHcUjeIdM/zPyPStMlKCBBi33LsR/SbKrUxzhEfqaD0DfhlMAWTgofAt7vGofXaqS8u8W5W0QMhd2FXMfH8Z8kS14QRu1l9gWvCmM7ggFoPIswWT26SOdR1en8yn7yTHDf8wtUcsezgtr7qVAfKpJ0hUoZJLreycgG2zjb41aWZ5NptJFBknXn2ZUJig3p/8E9FKBVZSREZM37up3fME4klBMUOgrwWeG+F5xWeCqqMBw93HEsYN0EHpJCcWICdmyElOXE38ZyFY9IAeXheZYuTuGJHI7WxqUSv9Le+sdYA3pas7IvtKZm3MYhQubQ6FwnW7SaJ8tQKP2zrFI5vX8LQe53ucf5E/WONvPOLRHDzTtG7RpmaPaewlKZDVAQbr+vv4fsJoVPPl1LoapV5ZyDcLv3PgwEwPtyKdzG2buC7hWta8mSSB0GaQ4IMD2pmNRQiZkjBlun+OFknCPUp01rG2SOB5E2uUvmsLORhNqK4eYvoGigiX7bOwNG2s+YtXsMjYwfcioqhJxDe+XBuRFFLXianxuC1dwORhztkkYi68Oo1BHVAyQdscgZgRyA756+sSXVa0b1rn+k9SLb/2aCzNotCukkBmRbZZxb2QwwvLfwGY3nKhu31q1UESr+5c3oFl9yihjaD8VI3eLwFVMrJh2fSOpJ6Zh2qZWioCUbFIrJ2GHEFwEWX+hhrlN0N/QJStxayU2EIpikCk3wEDnhRqx35MbkSQMxmioX6GTXInqwxYrLVnK5Q6tj72qcGjK5BQtJ5IrI6Qx+dhilR8u+CH8gU+feINJ4Y6b9kTtzFR52tnuXN/XvaDE575/7ipYjzjyp8sFDyhu+4v59AB4sF/r1D4C6R7Tp4KJ6shBzON3xePgriYX91cEvlygKRPLeXFMvEI69r4A1AO4UdEvgxGlh0qAIdykYHDDmWQzxk47FA+HM7Co/4uamemN/YWCw7lMj9yB8fTsC4ZUKuVfzH9+4rleo8XOCm783+FVcwtW107tWfD5CzanX4e6JlRKPZEb0d6edQrvCRlhTeLgrR/unZqk8HkkqQ8nSpBGg6xpMSqHeY4H1o01Cngse3Y4F68iQc8uf3oN7w+D5iHttXoUtRFBQJXSCE0UGV28WYTYJ+bCiQiKbpKr7CWeJKYHPIP9it+8YYeqs+Wrh+Fqr3cxhAZEWgfhkSM9BBLT+DQgj/iLQfi+oLPWjSCre+DE/AucMX7CeVBzbYWPW/RpBUlVDohwf4jJdDPJ8V8BtFKMnRPxMrFaB9gEu0gSbMIoinE4a8LfDSkQO5Ac706oOje38TnHcFUzJ/1Fz9iFasUZpUGpSGY365sgUgrBDfyfNR3Mn3Szs52KESxetA5Nd3ptDQ8bWNNLJ0Ats8uKKxOi6bcuy3/O5tIsfo1olAWFTCw/2YCWwlR5HcDdyJNJqULiKTY35OXVXJCGwRLhdwc6RIGLpbxIZdFUiLfDDQNlmghEQoyBOqxC2wONWwl7SZcaf0LKX5tIGIjJrq2N3C+5eqppXlkvUYEhv1pvLAU7Jndb6LwC8ukYa5F9DcL21NE3Rd1mJODOFwXJ9J6/pbLEAlxCiqmf7HGWG4MbOlOoMw8Dy6kFbRZfJ2CS2z9OYZ2vE0GFtao9ZR9feRSLPyU0Chuh2AY2VJzEJBeeMFlLEJORCbobsCHBxNMeGMpUdHQS4gULIaciHbNzVqQUDnHyyoKYshPqN5F+FUP1X5CvpCOiIHHg5hYmppuj8j4fzf0FwBFjotzNapUeccj0UVRkuaizDWZlSNyDM4urDWQF3SO2ccO2pcATSLzdZplukdZrHF4IRCtBaSYY7DXvWG2oX64bxTP8HAghvTd767Yq9flXbwgocxUBBePtPAIbmgFDOWtPxIqGCHo7NPHQ2e4qP6DwUS+toAU1EVsSCiNWTzyXnNQe3FA8u5MJfTXLcNem5Cap8U80cajPa+TLMEQ1HHsxOPKXvhKRqVvpUOrpCY4qq4oOrSnaoDguwA1I6ntyrdXKS7njx03PKHB8/fsml8XprWfy2x7PIILw7hfuwTCq0wL4PIUkN8dVjJI7vQR1oscH41w7fEeQxQEE7Zwlb7XREuBITsM9AW48B3WJuwAyqBKDQuThxwLQxEUpd9Pk7MAE3RJeVI0AfiBbf7+cbuA9b5dJ9CDTU5Kx3UgtYwGzPgEzEy8M0/U6h5ZfIRkwS5PJtrs3dTlDrjrv4ig+AlXcBAiccLToZkMsowUA1ITIFgb1afW7b5NRCAoYO60wPuA34rIL1QfeLp5imBaFTrZh0XWuwuuFoVSYhRb1NQ3VkBdjK/0UxKBTTZSvdtcC4WJ3xvDY4bLSBQDpI/lgbFIiDmANsg1HtPk3XHJ5v/s4YxAVURMrTKmneq4Ra9VWLyY/RemzJxSX9N1jngVDkmVhmDPCY8owB7r2BNN/6xA1qoi6oekRd84gKRL1kCxthWGdEvSDEkZyfL03zVEAgZMTFykIBcAHak0Wu4RV48gRTsqyRGiGH7z/0Sn9VgZTyiF5GdQNkkWY5TGWhLfHSk2Pmiw76rSdJlJJJh0JFuTijYktb9rPrx0guU/JrucQbRmBGoYkpXCtoNgkSHfxkV0OmRCS4wkfltyMWOuT/0M0LUs4ouABGuWzyLJlwWT5nPNLQ8DwdxGUhCygP8R+S6BUQdmKTU0/KMrFirKHTG00MNNUVW03iaRe8JEeypCj452nMxGz8XlndM27kOGn/ff6og1gu5rbSiyO//6C4iSx6YkroGVwERt3QTyIMRPLjTMM2UtctFWa/K1/r5d+RyzJAm5L/jHlRVGjCjhzn+eodweADH2SU5lAkga2ZJydJbNnD6AtzuB+I/ZmVAq+KA4S8AbRENjU9COE9mSwMaVyNNUA7nNjMRycTWOp2ivAqHVT/J1OvAIK3t7kb6BL29bAlqswZB9tl9NDygkhUoa3sUv+Kasfr4fLJK/aDHsgE+p5l8DMBolnS0qaEh8+3xLjqD06oCI5/YGaG+RuYjHDje2bg3/NrL0lA3X/SAaihXaWd0KPN9LsIq8os12vsieLzZhWLEDS4ScR7LbKg9aGD+G5E5Hdk9gvSAi6MXCfBFLZCN0mUxtFITXnsloNLsKHRkwwC47RFhwTXs1MUU3RmLlkyIj9Qef3bEiACT0nN2Q3uCBKUfwhjYIb6zHD/EF2BLeFc9j7QWEeFrepd1LkuJwnUGoxHKREAqp9+Wu7Numn7QxS1EdMwMjxDT29DKtSWhq6DwZCg5OIDGXh7ajiQNjQCwSpFZvm8nQj143Fj9zLwElXp1DEECZch62S5RCW8jCe2BmhEjeaylI/D/uQiVFc9cRbs75nCSCK2Niefu3K/9PAhqbtf+R+sYKMh7vSUQt0K5mZCdIZyIXLlwobmT7zuf2/WUXmtR4733xMcqKodH5Bbz8kTCePhALc1IM25J/NgaC4lUU4+Anm1sLlaR2aBeX85r1cENcWydt4FKM51Mzyaqp+6mQLZGQ1gS6pYrlM/5zsMG60SLOq8SRrZEIQUi5ohSkjgGw2j2AOcrQrfJg1s4KoVLPGHy540toxGhGt56CY9NljBIPyW9SNKMdMrVcrimQNH8Pj2DtsWjbIFcFaeHUE70tiajEyebGAtLJ1XIVybmyyDgsXl9LILzgjQmCJjhryv8dSbCmNce1ui7L4Uf/4RNBWNwDVKGQ6qDyob+Cq8ShRiIL7vb5Zq6q2pM09bcAstbtaLgvPfKDPe0QzJxXhUcuUlMH4vvw5CdsQRqNlsysAbwmFHOzK2LrtcLFSTlbDTryEZE5I4mIuJvUyYMLeQqISEcEJVIFI3wUDFyYuBr0bmLPuVAf/ZHHgqhQrMEh1CAtj7RRMNl4w90qHOfSEwyGU4oAyhz5JQlrIU3eLMM5Kqtm0pna5j+dOUz+Ukkv/fIxIgJUlAA/No0JwDoRcVTVDZApoBIUGd+wyiAUKrpKXFCXBIRAvusHyaAScLXT8CaVDHfD5TZqQVgq6QzsO4cuoyxsKJsWlI64QaogWRiV0mlIKjlSXxYE3AxTCxEfUqa1IwOdZnFJfBqALle7L02qNZIVAiRgrwTfcFn5Dfxjb06xmRPBXEi0ypzx6SI1IQ4qFAPG5Qu+/eotMSTc2+d/2vO6C5Zz1uXgz5FJfQQY5OD5ftaf4OSwVbte5czJlHIEcd1Fc7WwAyEs6iJyfFDKog7n9XbtMMpDNHFUh9VAGmMzDU/1hRY10+7k+lLYCWhBYOBJImz67rpaBVZdwXKX7LAhP/61siwNsARmHVeq3ci8DTjkx7ixnw6EqmOJCB47M/rQoLwp0CZLqUixflhd50fSS5WdbKAGAcRzNMFdHrcHoCODa8rbWhsXhroYnBGPK5htf834h3OK1ulY+N3eeoJyRvE0PPYaEie0bKhrBpOvaCLBimq8CpiuUHwL2BWvdQ+FY9qRnvuSZIaai65DBWWjzCaNYnSehg62ipBNdSh0rZ39NYlAVLVplGvwndGuwL/wMxT3EtQAVJAjGIP9bl8AzPOG4J3BhbmznixFN6uakPRqC+fFROQayAn5ghufimTduEeJVZH4dXwkpz/7oSAr14zlgZR7ozBAPdfVGdv9ij9gO8C3mEhwVHYa1fNP7gNT4Cf3Bfm5v//9ym0A+Dwz8dm/9j9utieTJGBtTislE1FL/i9cL5FDTYRdV/PGx9eDutkIN3zNkmZ14fFn7Xw4HqaRsN+AQhGQl/qI4KtOcf3sYb4QwRbiDYtBMSQsRetBwB+dQHEvoYdVZJ69gx71D7yFIXmuvy79HHl/wWUaICm9l66lteDdkogDlOx4vL9snFEhxDzR7f02No+rIoC+ptDKeBK2tVLP7zOgexsLWiiCbIuEEEuECEFJI2E3KmJfK2DbrtIcb0NeVceXlAJ61zdxSMx7bwjNj2mPzefWkRO5uYYDlT7z3FYjmFVIV4SQBfebUkSwzj02mQhWHne9MATQ0UbfLja9zUDBjyfCs8cWzOBfXEM8hmDYsk3wHz/fkQyXJHs3PXnkXVjeHfzTrOWF2er7Psv8rOlCJbeDhmUKYi6jl6aILX6ujnUfPNYmQqjJUUwsbLwHUPlWlf5A20vDJZn4tns//Fxsy84DbYbaSHJf46ve4tMbWiSBv0iciiync/iBYBgOu5MapENAmTQu0UqhzHR3SUSwUir8OlIn6RaRSTlExjddyilJMkrwbh2i6azUcTiT5VKC6hyTnRtfesm3StL3ipzdcYIzblrzdG1dNT+tQdPya8t6Y/pnw5+4eaoW3y66+l1/bqtWR3JpnoQmkviypR90EofVyk58pAglzrkUOTjLBG+gSJuTPz6YQDP1ZhFbBm6VQAlMZZAkz7MNI+qKkkogW8rIApxBK4Fby6hsqhX6INcOvSIcaMsUfhPu03Dz7xgYIRg3qTt4mZRnrL+YTvAe2UnoGY26ZqprRTOt8S5seet12mooVH//LhCYVmn10VlCe27JhieHxCeXpBncUzFjAPvmREUJUVm03LZn7Jn5z0YDQM8P1D3gJfW6sQ89gw+uIBdoo/MFlUOoo6RxsAePK5bP4GBRsJx5QpAebX8u4W77wfdsjNbwq2Sc7duzul3i5yzxMkZ24QgXA1c2DPkNPGTJ3vw95pBxWx8vLr0II1hO9z6+qs/dYn0X6n2s3FrxbeMRMgNdOjYlFOCgrwKiXC1N4Zjhm8hyzYpXghyvpnfEM99MKamBl1N9W+gbDVMccS96h/6u6GT/kWi3FUtCCXg7MXB8noFgr5OFDOUgSm38STdlxEm1GSgqoL2xXampR40LqkFQ90QZtThydC7iqYW5TTb6ZaNsVPuMLxB3FblldspiokYVdhVHKjC5FuqE/0wBykhJO3EXmS0mNOZxRKGfJzcFkANlSxHqJTpjFTBM1DxkST4rAkanNEbjRdxcyiv0pEfzA4ELUozii9ONVtgahUiMFzcd43KQYl17B1Gw0EXdOcShq/a3MiKwloGK2rTQU/HqAyqEh2DvWh6a5OM7q+JXa5REjdTEcUXr74CwtX4w5bcHWmLst6bfM+xMnwSu80lwcHCD3zi9qTyJ2fBF6beZgBaikQXuzsd75tNMhHv5zSCbeRXgWNHVsNa1uyKQ6rmnaLmdFm1Z9KuhS9f89gW2pTXs6jYJ3Mm1sBDHFiBwoYs/TC4mQixvTpmKxS84+qoLA/J7pw8XImBKcIfWs0M+7xuwk0Db4zuqf240fGU56xNw40yidXRxuSSDYA89cuz+QMePfzEBEoCVd+7hKxHnpv6wmBtUUCS5GpE8firZhIoXbVT9q/ALn2i9XCfgArEpi/3vM9jMzxSx1Z7S4EbDJzRzAq3fd135FO+OMk+l8HE4AZYlKji3ZUxQ9byxCJ+SCEYEs4JwtmGuGksUSxhoXjgsV+3XGgjXaAufNJ4Cfp/DQtC18PVmOnXkdcZ3TJ7LhiIItwYqGw4eFYTIPEcLyTJKz2RwCEnRdZOIWvZcNNd5M2TzYrDeNi8Vi0b7Nv8h8Owbshx4yVFxb8dbZOWoKe0FlQxBbrpR8etNrx/R5aZtit3DkI0lvEMxQp9jrO9boWRX6dy72N0EMKgRYYjGh53ha9++Y4DwYnuGXj5xsrGn6pgpZLwebhVd++FYzCCw8zh5GxsPv8aJOVRlXCamOFMUqYq974nI6nfDFIor3L54FrVZ5rKp58naj0L1UbNXXjAnxsnQvAqen9jjcvoWpdRB10c/NP2HWlFhWvm6yFEJ4BWTg4tuA7VCNVwqwQzB97nrgNz0O1EA1Y9FOK4wKN9uqSTA2QuQ+jaWKCis9fYR8oHbJEE4NlwMbsF425JH6QsYbZw4dJ0CN7gJdstnVkSSxI2KaLm8TRkKmOcQjqdXh7G/Nm0i5hY5eufk4guE3DozAe0w0Yq2NFaXlopHi4NTui6BqX+EaQOJ2Q0ScFzQZaus2y28BdIOWzNkUb1WpxKy8YCrfEmNHZYqkqPO1sAikUozYJ9cPIk96wR8S2Yctjj4LYWRl2u0kgMZJxnb+gMVdwF++ufPkyTWM6KlUpQ03scSpas0x1Ns0cs+CEkWi4+x4uCUrktYysekjj9oUrgyuHFBi6f/h1/YqE34fbRr/7xt1MGZ6sE8aXEPYRiMU45qe2maSmmv44GKuVJSw0YkljGifGOsY/dN1ylwA9sSYN8CwmB9Sy/KJ/ldYmi3Umm1L6fSSRiLj7HiABV3ofsUPsAxR4g61XfAYorsodpc1QgW7uOWXkRqvsjimyHDFMketXIYEm45rGi3YUi4+jHBXclyAmTw72cwpplOiHaDVTtKIo/Sfz9GioNzui5x6dRxtwhPguLuTPJ7hzrr0HxC8nRIdMo4oUOiUw7SVeX0l8bhvCVscQrY9FBj9pf1eJFN6cY0B2n782jJ2zRkkR9NKHAr3G3PlvLyZVoWj7/lBx/SKHyMFQeouAvdp/CxdxSpjzbuFNw1iE36BkWTWB9ro/TAKV2XuJQPJ0eaC2a+LTf75z1p/fPehdPO98mWcDVX8g5FZxBqdRPfLyuzLf3Ji5br1vpAB5SMYwfhFLjJtsVJbPp7LHTShk3ye8eCtT6QcZax7UOg4s64z5fTX4eXVba/Pax/+D5ARlVwF/RctTf30TJjUy3MEbgE3uIKcAm8xZVzlkfoxa3N+fH3GO0N5IzSa7gMVNyF4FMk3/QPxuzrhlBNPssBT38mh1928Wd47Ot9Pj8hg+IV8/yYlH5JG3QSt3zm5szifyCLSzlkwXFikmBmjjg2wUaXKIknkOJb5SXMZHBwDA+A70XN51WJ/yxFxvcf1T/pe12VyPXAO5woE2BiapHYdqq0uTrDK8/0fw5N3wAFP/s1Xpec35FaUXIrI1HhCVkD6seg80x2MWTrwDrITLG4PY3cgB3uQicG2OEudGKqugoZ/qhckt8bh/p7+B4zDB/Dh9kOHsOHcXyMEQcYcGeyTxk67OdCnpj8PP+3gscFOvRIFbwQtSqgnk/C8bCk/8KBIFaWehAuHLoU38jVg9jTUPC4QnZcS//2YwX6IufzHf3jY50hBqLI2pCCDZFJVXx8Mbm8r8GRinkSx/aU9Ozkeq2asqJZ9EY5V61oGyF5jS8B0HsNzKIcMWqtwv4AjVo7nBSzBHx9yPyGlForimat7DnVuJwABCuNySNRJSyjn3gxK1CAHe4CFGCHuwS5hxF30NKKJfl9Up3eqkbnckauPW4EdhnbOLAtoRGINn2azkdqT0qRkQzSNkYSaonR+ZD7GrjRthLKAQhAAY9BidVh7OCdUsEQBHcAycI4/l0OFvIJ6UkCQz4hPUlg/3m1wpENkzw+dlfsAfmE9CSBIZ+QniSwhXM/sYMBUxfb6/rIWVPrbfPV3EiScVHjq9//yILVP5X+f2kjxel+s72vF8zgJcA3sJB3oy7EGYZQbzI/WSn3bSmYz++CzDHOWRgk/zTWHYXsrxXKsdsoBr71fyWI4C5jpeMh/SURxZa7T0G2UMIfPx27wv2mRllIUvrwwiPE3D3VFAn4WPm57qp3/JNN0HU4BfH1TAgjXsPfhPJ0gWv+cGhVCwz59aFHV+Bvvh1a+gJdAcnHI2eU/ZrFIsbfpEnpmyy5e+Sos2/yEc8FnvLdoae1wLxAkY8CP/l6aJ3y/aFpeei7F7jl+0OrtcClQJ9Pge/88tCjFejz00NLV6DNR6/DA/7CpQxjfKQlEuCExGaj/yN9y+MsemehWJTK9FJz0XH7i+nET+qquDoGIBKibiLTm29p/PH0tv32d0myuk/NX5/oMV5ME9dZy6CbIH8d6K/bJD5O13eBsQhhjDyAmRg0sWll7H5LXG0SFBsUoj9CWXzzVQZA0n375fP1759X2scXmv1fVvV9RJflzOsK1frdt2RQPUDIxnBEosbkUO31l2tTIrlmr7TLVIcX9kvZLsgsaJeZCuif47VreNHVrZp20A3d/72ZTC87tZ9UvdrNSqjwWqSX56rSYoEGDeuRkxYgtDWFIxMOOaEtu1TUVu2j/QdVl9auim+sbdg1v41jzvIoJYXKRPXDDtMBMB3Ub7VdSFgafc/luxiZkuNPqtGj4zB67ZZbA74t0XssVxRAvhmM45+kO9ffXAlJKboniQA/QNK2R9PdJoOW6V6uHOw0W0Yu+lQojZFopwtciiZwEH2wT6IMaI8q0D/kteoUhd0AzRpk6OXnt9KqLHySJD+boNyJh9JbKjn7Aj41OUHm1CGL6qQd7m+cMZceKmANCOY8aiVYrdnd9Moaba8hhfVFUE62z9FD6DtSd8p/XGlmg6JU8fPL4b2KV47Xn6WzO9QWG7sLUprtQUMz/h++jyk17szEBj6VRyVzRIaqOA64mt6MBnzApAxzBaSfh78tNUEHTcRiZxAtNSEHTcRiJxAXIil0VFAcShZF2I3+eaEHrTGRBU67Z6YZhs8MWgUUaRqAmo0oCGXUKNfV0zWhUg9evc1Rj7g+D0rTNOHsdMybTJORCHGHAEvYXzpybagLl5GwDdE/HX7TPiwRwtGcwq4+tLkyXyGrlV2geAFyONTHNq8mD8f61ObLdOFUX7SZm0m3JtU6y6Wb1MlcNN3FqrP/HYQ0GyoaeK3BjrDVebVN7+bPPLNOE0nwaS6nwgu2sItzGHGi21NjUSobudaVtB5JigsyhJNSj7dAVxGtM3qqQ7A9lWPq0H3odSr86Z/kNUxHc+FkS7q/6fr1+GfUtA3fFROIGKuBCJn51OP3jpw1tiGqLLBgbqKC7l0qC5YJN2AbdcL2Ndulj5DZPitBw6IkJoX0Qg9eT6879RijAQbnpJP/heFOUNjuswUfrx+u30zWpFRsBWbCU3pJMd5+782k9YnSwjdFngehoHVTlYbvAm0YujyWr5b1erktHzSXz57WptGQhzDFG+Wi6c5D/JBW8zGBTxr4PtrbqwOveo83ibN6Lm2lZFDu3u+Xz2HGUp2qqHP2iR/TiNdEmyWUwvEfuQ+2frUb+vl7uUHUVD/g0MueKX6zBZNKBAez0XJpKVwKMFXpWS2G1wsiuqTM49G0Kqjh1y9ZeacJ2K/3RaIblifeCVd1QCO/qVPB8xQa/pvcA1IfvelmRC9ybKQRyqOgVnEF7/4cCfQERyj07HFBiN2EKS4abQya6RdDRUxDBnt8NSkEd6UmW34yS0yF/J1ZC01tDet7tPEoVMWAoeAiUZPFyO0z9oxJUIpcychFXaEQ9Q8xxl/8iJwBL27b1yFwm8HCSZxW3OGgmfXRMRr9Rn6Z1E8vKRo2p5VWCav8jtUanyjuoG5955VQHpyEprCTNh4od7gGb2cqiMDKp51NXs7tDjrnhoMOD8I8GNU5pkuw+5Onx7nwgbRqO2VMX4XLSXywfYnKdwkJUHGzve3nzeifoPoRrBfJHWJh6IDi/cUI2WxHOJW+E/ttE+8ZyVStQuTQXyuoQHJvUFbSas/ffSMhQNnqhtgGy5ckDF+okXiPkYguFu5fa6yh9zQdPtLuX8ladurYklCrBcawpIky2dQlPhFwfZBsk0Mem3vnAx2elHL6aZHD5Pi8+2JzJAzpDh3aSSD62AvaeFVsJq247ZS7VEwOwoIYf8rQ+UDw7yQVJs4K3CfoOXvhrze3WfF6im639OX+k5cJFaxWODBTFZx0KgmZNMGiSJqwmU1fkU9dphMlcVmqYcItpg2t4PX2PAdPS6Zm+X5/ifddeK+LfdMOOMX38HgeJPWgQseH5EnjFpG5IFkWuBMhrUvZo6+Ep9utYqvsn180w+lGNVb2+hRQx6BdcKOiBx2QA0u6LpSnsWLDfS59GoKDFNLdhUbx2d1k5QsE3100dnaYk0iDJHNZpWqqhGY4W3q+t25bS8mS4KIWXg+lbLCcOvhCqxhC21alK0tVX67O81QEC8KpowiGnQ8htTpLKmtW2/tJK2Hw5kJhqE1ECdRRXVw46WK9whNI8voV1bKzgxZ7MecWSNzFlXMIlrAvJWoJoRot0bmxsfcdmgESfXyMzvZBZYZGvCPj9RQghqg4K2Y5u94rj9ftBUDrYIyQmOvyXoCz+23D+n1c73grUUQzi9mFGUCLq9ylWmNmkb8bA4bXuJg/YP+IHdPt+94hQjxsCVRU3ymrVOpdwoulK4dsB0L1Yr34FO103jfMBRr1THMLOpSwbNSlPEGUbpn8Op7Eg9hmzZg9rpjPMU1S0fppghdIeFud8sxXw9FIJKMS57R76b3tjShQAgC6ExA1MXWXZ/F6efz2RiA83OKHoI7dCgGZtKRvqCk7EjDCdIVmqwJXyUjSK4oO9fiyjITMAot7u0myRpHbIDvEkw1F02okFb1LmhB0Mm3cW0ZyeOS+nvNEMrlFpvi6pJVQyKoptfES9OhbWKR3ytZpeza22hEhkYyNgui+LLv1rZTLnUK3IhqMcAOnTbeyxQ10IB8hT4kdYXb73scDV06QweY2B9vIoCGH8GcRvNyBv88qt8UI+4Bel1DX6C1NedleLmgZvRWKufEBcWFoXMMa5j9pDe+VVglyG05mco7g0sRtmgvDSLdpHlSdvjqp2dDkIG5qfcNbIq5b/OXRGclmMYzXmRIkUZwmzSdgRGx4auw48w0A5DTHId5+3tVS2LhvUjCceYPti9/FWWWgS9r7mgYusf8Qqq2EpXotxOLidCoBb0DFEiPiOdJb+PD9FK07GJSfg5L1J3DJ5mH854CaYOk5KcoXGtEf28a+YNsKXY4E25yl0BAJYrZNHUtcLtVXhjCo/gNloMlWPb1x+A4DlchSTSxCCPnnE+7yzgIjVRaY4l64LoNveiomcjl4d6Q7+I3EkiVJM5GsGMgQyJ8K9uKWposL9amWXlj/wq5J0McSHxON0OmN+HpiONlJlJMYFqQSduApgo5O2UG14SdHsIxCXplEzoI8nprdUP1GJkl90zf3zEwkDWoD4qDWCrjfkoioNISpHkyE42YvJOp70msMYVhZndIqwNMszbI1LVg8E8dJtZAgjEap6BaS65LOLCFMCFE8qXte8wl0MfEOlrtjWkuxEgrFn7fay/F53VJEWeYc9z5ALKLnJ0Bf2DYeM5zUyUB4thc/ua6tCB/r3zV7yyZqGeiBKa3osFVX/FDgonZYv8yf3AqXfpGDHlrqGOfuQI2RH5V5pi8sw4depa6RN5WEoEGMp/WFLFzQLheq/esxg5t9/F4R7LeEh29qmHyVlrALQcvlWxUsKaAedO5gDCRFfxCb6uEwTu7OStCZ030qk0XCg7uIunnsY6ak+w/N7xqLcJFq7qeOdgR1x6fIYVAuaMSAWch5zO0rr0z8uXt//Tx9ay5oRcbND3urlW7HyIp1U9o14HXqmG03pAa6PGOLhTxK/+0YKQ7O6brEpXwoMSrm/ZP8PpmurDcIh2xhLuO3XTQuARfAb7h0sYVtqFvaYWHQmnseGj7NZP4gdfrC4+e5ge0UfmEzNJv3fec35rvXV1TTsPBvMWUxbtTVdm0hL/VohQZyRqs6LgMVdyb7lOTHsFiYlub3TnghTuMGlR/JIY3Fx1hxcE7XJS7lw82FZtkLaF5hiwY8GDZPgsVAwsj8UWpuZmAX68oFySq5pfAhOi1K64MInt94MBNCRTIDr5qlQ35gNVpGBML/1lvYns7AiOjMwUAu1lUgdtZJgm5rxH4pvkZem5sPhOuNp557EA7pQc4RG/x9YwwJrRK2NQJEGEtN9s7N1TW6UxPQMEeDvWdIIdGli9Txcqiac9uarlqZMrZmPoU4Lx+kzRH5XljsGWQfFbBJIgprAtZkgQP7L3gzOO4TSuCWaK+Jrw/A0rcqXKPsN6SuqioezL6INWw1TuXKtaFWZLabAEs4b2bZ4EQo/Ts9uwXMiuL0qzW7EG0oAMbvM0R7t+TUcUAIhXnSFDU/snq2KaSPRF4JptA03fCK3YPKn1JK6AusKpvJ53pLXYip0ZxfKbDGZhcKRQ6LD+2SbIwSCQzgRLpmsMjg8oxFZ5UBqD8M5gWvc/pRRcwiUkuSscO+L2rDor6aahXo0su3WANggfH6Esrj7Iz8lQgUCZb3P9Oochd0gRvSo9yfMN7B/BgFwAu8hAF3Af12R9rEQ90H+vP1uE7UtaQJmIKcSZmSXVSvdlbakp+oqEARZM4xZGZ7/vwrL7NRRMTQlIpQVT2gCk8TelTTQMWr0eDJUiceawXaRnncNuIqhEsEKdyvFb10eHLLXMvVHDw4LQr4JdpFgIN100xoon/UY7qVTbHJgAQ9kdTz2WsCBp3Xyx9I9KCkm0F1S1l9i8S2REWElSva/xhiYbC6IWsHxjJdOkBsmyaHb0OS93ComsF9NL7Naj13j2Bb3EUvh8LWSXgQ+YuyyrNbVPYep8jy87asXJNYRgcTV7tHQzNtLKiASWWuU0iTrvJ6iapshswNMMwwc6DSNioG7UCfjowgWigJg7cSTqQu+RsDXBnLnlKowY6GwKnY6RFA6pek0YLyp7NTaMlwBfVIqCi3pK6wyyZ0gkT1BnVhamvjyoknPy0jV+odqZ6eFOB4Gpvm6z0+C8fTXXiwpg+4zEysvy+Dt/+X5maeEVeWYkVdoM1aOgswuMDJLEqo09tu9Z0km7AfH+iKBuyJP4cPwd3FoPdX5MDAk5F1Gj6ugGxJrl7VkLegmG85IFsH19+rIt430mTouoMASg6ZrKgSKjlSIfsMvgbVqc+Gq9Wk3elRrc3BEAu/69xAc7S8V4hzwE2NDG8Ng1NAQM65gHPQ+t5OtLNaL/Hicihap4ZlCEZpy9W1G1PYkVbu7G3fukyJjHBaAmENxxms4iatEEspcl3buxAK0rDEIq/ues6lK3HmR9RA25ToPpwgGpPjDGJBsqRuDcnnXQ12SBv+VSkreh1+S859kN0yQCQV8ykVzUo/APdOhiCayQnqfSY7rAygLeTQZ7Mt31NZf/DmONCj3K3IrchurJjZoPc+Vv3RcqnOqaXLja0/itT3p4TNnJcza8Nw/kmK4LSOOBTKqXPMTvO6qrBa06qKcXCN0HSPYFNvypdzRVj6fkRc1CIyt/8kux3hujU7Zru7VZbYTC2cuM3ww6PBqBRHFw47/xro8GR6B2Mu0E6NhQH4UeKkCRfRHo5uDTIA9dVX+tzd057JzV8e29A1N8X9krseCiWijG+LsDgizYkEvduZln5Pn+Zd+P9xAniMVlzt6aiOOlz/SgS0xc2aMC6N3SQndSfceMtg3BHqURUWJMLy/2mlUpyqvEIUnt6muamYMMlRpoXTF0icy/1QdBzWX4CkYZlbN12EmOLT/NCcUw3xK9h/t6ldNev0H1b+BWKWz2oUyvwIj4Y7p6HKpKKSl93Vs1FzKvXXOojKZvSTq15FNwKvDGZfSVIVOyPcAdf48sgihMx5UvCqEcEoLaeLkj1i+2S96MlN3UdKGx7BlMNawQsb49ZmSNJQwpgCusTh3y/S/53fpluldOtuWBd+W+6rRrc69YQuP/8xn1vVy071Xn+YvtOvI4plHJrpmAFI/ebYHKuFKJWCDRJRwx/TK7GY7bpm+b3UpZ2eNTgT3VotDb8pPWehj0TWLLTViYqzgw0LXcUH2d7S9YJhek8/VkJ9pRYPP1GMyxtDZkzYIHrvO81SC3LPb50P0jqh49TyydDaSfpjVwjoSFExTKe5QPea//KcSNKMtwR7VIwwTlOF4tWtPsu0iLJ9oWhA722fZEtCHRj4leDmApiJ6yhKpN6FZpFmRrV041IcUlmh8/faRR3D/P7O/FhPA7JIuyDyb26mu0fcq28P7YwEhDlgWKnEq1OPGpgrCHEzYTr1QEnw8MUhCsvUwsvYWDNHFaIz3BktS/GTtA0GpQhNjg5ujLkEM8l0+0ASrE5vqE80DY46lzPw921G9m5j/TOZzg5B78IObF1ap7ltEqOeemRkQrpSfsAQ09leRdhRSTtfu7CbYIRgD7aCZ+qIBuWlo6pF4WNfueLbdGfVo+Xh04GyZKxEsVtr+zRQ8YeC4pajpovFDKMyFF80Lv+Ruu4HJJS2AUo4w9mlCgPiXeH3mMVoV00KjeY91B+nDhSf2Gtic6vnNGzxRGF0s2mNTWVs0NHmqs3Cq4sdXkevPF9rxCeeg2FDq1jq0T5Zs8Uh6+tNLdjoTlbS28g+A2+mSb5iPplJ9b7PHtjwClPJ1CNdHIDt/TAU9vd9mPrp0+C67nW0XPzUTSOjO9+/08XjDBAFdfVnKVNXfEiq6yDTsXJHK/or9jSR863ZOUFQezQqJYlZizBCdK8GOq7YltSZrK0czHjS7tdadNadpyK7LvhujT63mZm0/3RQxs+Fz3PEo9JxafPL9tOtCLdlhUjjZz0qZa/4mbzBxNu9U0+vioTHZheGt43cX2BdN4OO9VSvlBEIQwNb8g3izEC5Y9BjOmr26fPMPCgcFJUeMoCJybygHwq4kuAfj1mkvHBqA652xW8fCjaGefemAfjvZiQMjYbcCDwVFpTJHuIJDZcXZyM7SWXLWPycy5dudYZKdcXjFS+kNePb345qiGhGA2zdf+DtXNOewKiVKI59hM/eKb7dMp8wKSqe4wWLr2hmSy/zpfa/T//XErwfEIco9scgfQ4HEbY49fCDg7b3yRxfSEr48k+NhL3SsSoi9c9kVtqCt2N5f4iXNictN1YCXjuQtkeZXwlpkPXyh26w7gRP2DGPql/DYC+Rehnwy+HW+QvA6FAdSogr03okeInlvh2aUF7fUMt2IkFKmSVuuBxi6HhW1has2RZmeE8JxBSGVtXq35u+7sKT4p+9jftnm921Iv2U0PfE6SQXoiEtUUE9Vm/jNy/11x2QpO6CU1WpVFrfiYqNgISlut69Quw9704UGwuOLNSUChUwdlb9S6bGt/xGu66w1QQrjI9lsnm/Wii8a2bdxH2f1LGPEIoj5PxJdBLX9pks0Sh1Sjj5Z4lZvMKclJ9Fto80EGa2BtHd9ZLANZP6edmzAFS+EAoN+V5QiO1yYJZ94eICCdW4erxzdUW2D1dB+b9r9aGgA5HWTOIvAwFRY3KLPWFUHwE3gFSjFtK74kpSI5P8OyoclI4Ra9YhGDNJTzcKnTkUU6OlnjX7jRTSepQf9/hF/N4rAg3o4MXAWcfXtvYnn+dvmG8g38EXttYdD8F8GlEiK5HnVMExFGJN3JwJjA4pe5QOdIsG+gCmA8TBf9aLtF6VaITFrINSUp1nmdmAhZzi7NUAoLrHPKh+6KCznnSsmb7g4yaRujEpNVdcVK+yeXubBFRa4S1qWANJVbKqec7lQVWCoE4CxPoqAL1jthd4Rr0sE0mhoF+2p/+bw+CGXmD7tJdEGQuQ9x4NkZHQT6RxpzerFWb2kyzW3hVM2an1DU5udgDlVaLcX8RABopVMOMAiVBgaHfRaKM5bEumQkfb9wxRdmOHvaQj7k71pn6dc5HnZWCbX4om6C3ZNCWGIzEXZWZPD2LlEq43ogrFpyTVaQna6JrrIDwS6AHUyJoFec+EQdvemeOV14AqxPLOdjzBgQHVpgqV+6FOXUcQz0qa4S3wXH1t7t4iDWV22OeWKTatmuuuDRExooYpvgzHVyLZjeRCp9RlehsT/5OJ/703Of+zaZ9kWXJNsttuTOYEk8elgW+svDLkYD1Ug+MyzABiCjFBmvSLrtlNoOsPBfIROFlsUa0Be9SZsnRHHKEXiF/1pC1p1vnG2UJElTiFc9a06gmDu6WpuUGPiC7yxO0ackP/0/VYYAcrGW64MCu5uWH9r1vaLuoECO5ng8v9MmVv4ztq5BKNn4YvTYC+5pYaXT7gZs1avZsp216N3aAhv3t7LJrXJlPB2cyDnVDmXMbWOZFpx6UgmQzKX3ROpaV+7baIP8TKEnBSg0sUk0nMUKDHWmjAW0KBRzRXp6McyKHCwN9x5zTokgY44jEnVtBSgM5ksAeHWAtqUX9nr1gP6tO/PoK76xW9S+zl4QqvcPf3+1WxTqPLilyItqFtahsfZLbNwqx95NFYUZgbTokANM6VBozu5XUzEY/GRYjUm+4K5fF9SthCNT2z61HRmzk7G1m7T+uTVyXBTJDmXeKozFf57oa4mq7CrEB/6cfuM+1tYJSNnAsZMwB2myY54wWhLx4DTDwxaL0vUA60G8WzMnpwIbWrr9Wd01EtWfGOVz4XKRMCS1+VrmlHd1MUEMD+660vgFWBU7B3iEX0TNikKtpNXVehtp+MzXGNPU6YTK8otj8/H7QdlgP7JMQ2+8GoGMgoF2Jy7FoLUCELaDbVjjgil2h6cYS2WUBnjdmRqYMRx+UdyUQSOYVaILDU9BRBzf1KU0EgJk1U+D6C7QlIhWo/blD/905mPraN8LMSHg8pt+UFuGOC6OLsmtojr8WxS6LQxEYAwRCRP0uS8IiiMONek+PSsauBSOLO71sYQXxatQxOs1xnHUsfBLeCCAerGg3uOVpGwYBuzSi0FNzm+sG1AJTOpK3Nen7z8oIfej2nrv9h7JVOAwpQIyF9wAvmFJ4V86K+nOnVcQ86OaImNmE9tAyOaTevLDOZvOsxMztlqD5h62lE2Wh/leNrPOmWJ/itIde+RbWXE/OnUgvG+GB8oEeHG4jCBOr+Mil19zwh1nrONDoV+i/jseLl8ALWhN0KX4rCGdtxBh8z+6z6HQBnx8dS3xW5KLpnZ++kk6Ol1bYofDNgQYOVCptpsTW9BLN+kgb27riZd2OZvp31mcMY1bplm342m+Dy4GmTpDlXqOsvF7MoEjrFEdr289Ji2EoY6yY7o65Uuup6c49KqYsfKTOMU8wkJef/irAWrKBGuFP6i6ePtxsyocGhXDrY4BiNFyj/MxJTk8236BIXGJr2HSgZJKMviOhpZkv8wZXiebFNR82jVG/He3d87RUuuAI+LJevU9Jtwox++5gQKuNOa9UxijtjCiSkWBMk2EZrZ29DwHqD51bhnMmFhs5Jr9IHWXMZkk95EekfBOCmMQ7AJ01d3azAOA6sN7fKezNidYc4aCt0xpUK6bbD98vW34C8yWfvJ85MMSokj+K6oLO2Vts2bMXluvKFPqaj4f6CLTKIa1NaoPnJ/aAT30WWabWFNSogF21ah4PR3iRUTuLaIZK6Mq7TFsCm6LpfR2+DSV8Xg75Mi5BaAurd2xGZcN8JDYcZdDqR9n4q0cwiFdBBW/oEGBZbcgT/Ie3pTYYvdbA6xKeXoY8Ta+9zg5B+vsVYkXTuIglc/52jatO2rGTzcrsno+mnDYPK9tWvsbH/ZRz+k3RwUC9vpxAYvPGtKA1RPkGivgbcOf4LG+dAfg9+E30a3DShZb5F55fZNIQu3JTSHNGIx6FWen536VBmpcRGlugKQLRTCU8O3sxCzxGzIYynBzxvkGtHjZU7gNcuDvsqpQIUEdH3oYdfzoS4CBaerAstRyFaEFq+d+/g942U7p+qR4ghIaAkPnLfHPrkc69dDafYvgBsIlTqNW7Bf695y6MkOafJrPSFLRJW2aJqZYw89/Y9GmZzLms+Z7LcNy0GUVF8iuM2sLecYLQR81ETrNNvVogm6L1L1yrDZghtEwmgI4LJj6R3vwWBrVC3vetgB0N5xJOgOBwQ7XqkyD8nzXtt9aCbKVrDcu7RsYSbCNOuh5HeCIQJbTh5QyB+9mphCwPShnaPeAgoo4XNMZJti9zzqzpZ8EOdtEW2nDUK5g/uXNm0nx1slN2pFE1fjUicngCEHatTPKYyH52LACyuBUihEs9sUK8m24C0BT9Ky7xlrr3WezlzCRahmRU7k83ZEoVQQNixUztiDYiUt1I9ljMLKsYsjii8Dci+swSYQ2AFoub0eK3ORoDfQYyNuscfHb5VZgkuxIRr8mFT/fb29EQCy2+fZ3vVM2ebxJo11GKuX0LaWGguEF/PUtdN7cVhci0WrtTNsP/xmpxZme+HOk+VtSaQHYEBj7c0jFyeaN58Oa3A+7ZY8V2eGNvCgRwuswhF+MvaODzgy/F0cF/TZ+YcGQVkYlHOqqCFYGvtfzPNtvDuCxV//nkKHlNVbL+/3cL94T2Aba1EZSVY6cBu87h9stXX2K+BghLcl4ATG4d5XitWIuyYop+XyML02NPCDk+62jFtW0/8xARIYrkTIK1cCpLiDC76A7nz520aMqwE3Kf3cMWDOVn1k1n8lPkkn76iW449uEvMPgtnk/qNkoCWuiic82QCKBFTWJMEbKOqI81vdJZ4tf1kpgn0LVmcfG6aXhsS1kQMF7m5kPBiLKLcYAGOysjHqrXLEAp7omvisGijuGxA/yxZ0xRp+kwk1hxoy9A4nuIejXy9InYO5jC3ZXL6NEuqjHROmrBPINaYE4Fv5TkhIIqT4AC1hqD8VIYxIkilMYF5hxIRFwWSGguPwnw3EGSr2cA2Bb+tJ1d6GPTdH+NekX16trVdh7xdkYNGcnsjQgLIuRwIP22ciNdHr4wTwAb4BJBcFSnUBnz6AjmPm7asFnTdg12D0OpcE4Z03Ki+fmoYFwuvT9YOe7LLHSnx6AqLxjUQQ54nagNie/UXGwR+7sL+31c4PP/lXRkx6CVvoi1ASE5W6kiSLE2gPeOeuohC9xqe8+mjvqxO9GSGJ3VwviMsI6ikFRqPqE7rE5GLcMyzheH0ZBZ50RGBuEbPmQbgsoAwdYQD/yoOVaI7mWjmZRSfQPMmuMlNGG5Fi1Yp6kspfXY6BhqXjGCL4+Had4fEiroMsnn1vVstTiyOT3rtSqwWJdUnxh1UgAAFdWcEAIxKZZXB+ZzJLrq6tZbib2+fyYJHCkjU71Zmmh6h4SdQDn131yaAcrzbLO1YzEZavbOiT1U0kZJnthkFORzUeL5TbpviURxqH2WmYtTUMiq8bAK0Gnu0L+Rm0XpyvQCjYar62T1v88HsfG+2oxeHMUnauIrdP4K2ANNoPfniL9jQm6qjJXq6zpAxXbhnEZkaspEajHeA61si6HdV6/kFPG8XVpep7QGSGwEC1EFFczPazFLjQbzkLu0mKw/6vd2ogUNy1ugU9vF9kpRD4bQKNtcE7Lqp4GcJzjskfcnfzURuFQLoH8gh2G5GDaNOB/NgEZ3OypTHCna82JmkD6skFrdXX8AJNi8TAx/pxwwthjQQ20RD8Rdi5FKIQHz1FvDL/557wDok6W9r0iznXxtb6WfYBAcO4oS/58nw8lMHkVxn/cvcMmI3nib6Y5aeadT0RJrWwNqmuUFfRyVcYLNjUnsDg7oBcssGcV0kNWPVNEKOKwba1vsAx2QnxntCGw76S0kM9/RHKwRkyDI24UOroC4GXKgQNi0U1g/+DqB5VcjkcrZRMruJwh9nWtVMpEEdNXIEn/E5fF5T3cGSfGwv7niwLV7UedwFk1aCrnSkYxVHL5PBx61Xfnw4S/kii7Kw5yuzL8XeWfRbYff7a4CQTmVSXp9esw0vzUnyk72fKoqk8659T7XrxivtCYROMbposWLS38YuJa+QYaA4Uea7UuKdg2kY7tprJr4jlqnGg8o0Nk3XbpfEoL92IuIOkMz3jagdzlpdKfoj5H/jM34jYDS2EMtBXZmX8GBkZEOhYarSjKBSgxiC1iSjMoVbG1At+VXIeW1su+0mcQKQBXAO9FpAb+KnVHjPJua5SrIqiNolKydaKnSJNWzufADWaowUB1ZD2419ygtcma5ax4sH/PDUNOBWVhAPlMHtNp8EaaNfzhReqE2eOh17IgF32myLA/9EJIQmhYXNQhR51EW+QfkXGqsDpHxD5t8aYO2naMQBhxJeRoDwcvaT6QryfvuOlLxWFxDvoPlK/EDdK535c9JVUjU+JRMTzHJOXpFP0mNDdtmZOAlt4pKII+cXIfYA3XdTAbmy8CaDiV1AAghhAAZ7VAozWE9Ic4N2YAulzC+mIsUbWMTVz+HYJpNAUEcvha3RLjKyzO1fWQKEv67mfEp7lm8tSPZ6iyh79tM+7rA/PR0c8qNT0MC7rV7vJGItnoynlhcx05NZxY4F0xO2T8J3iSKP0DraqPJ9wClvsxgsJxFEawzXHeP1qnUnR+kU4/uuqnplQFaU4p9t/qnV+0OA2kc6y1vsiBJ5KmiBVS7n7dQrLresbyjijgdNAimeKi3uEoaE4AxZ1P2kmf0BrPqqkLEESW6Ga3LErwcg9qPqqL6gb7LS8guYx7EOPqZFFsHQp1rtJvT9Uvn3ApGA0xaeqKX/EnzZLjyo7/RFxG9BshUd86ZL/z3e8FyeKEGf16iFTkrXqxUOkx6+Drdyy0z23du1tu3S8FW0Sb1JUlEEPcemDH0EAf7om2QBltNk0vrVENKNvj99P65/WnT+pf0FQ3AakpnXVcLNEyAVvGVy4/+XOoj+amnV0QDLlOHZgSo36aSAc3NI7LkKkPLvOjeQq8BgWkdSkTZF0ZkDpmXJ5fGkNHLa8glUWsKdrhyl+0C+hhHT7xlj7rZoXqFEMR9RXsNBmnZNwhzTzJxMSqdwC19KGyYxyKdaKxt0EMuQnGHQoygJblgtfSTJQjU7mrExp/lL4Fux14TsZiQ5zczZr57Mn28KZjmp8zM6BIM3RdAt2cbKZLy3pihz7jyvzlQwe0v2S/Nuy5KKM4C1a6Fn9OUalL6hCWTTFWUgiSK+3G7CVFQ/+8FtITvp7Ouraf9WGm2R9GXempuOJgoXZZB/c1ARVQaLPOmNjX1i5NYocjGFfdm0humUGDexaCVMrvKlijayyjR6Vx3luBG4OTnBF2Z7OiArjOXf9oMH22syoxDOuNl8DdWKvJERLj6HFyTdmSCXFsOBkqHeb3hyXiGQBfXtw2HOUP28jIkyULgmHIKqgtCHF38i85gq8lDvPPLxuf7t0Hve/jtVU8uw/pdibINnOFRFUyB0q8y+ILXuHas44yMlElRgNDPoWXtw+cb0tqzIbEolzEZaWFCg0+jiHg21dbUJjV6984zrashixSSpSj1HG0A6+xRP38dcXjA0/Jym4KuqAGqtAKPYilxjJiyHXwbDch21gAjCpesmAJmSPkrPjkX1NYKqYVy7nAkgYnRzvzP6fBw35Y64LSkxpZt6dTYpxYytMgrRG6UABcf1uMIGMOk0VeQ0C8Ts6N5IcFH3iWy/IhkYI8N9ht7SpLRLkDIVjzZGMm+BG4rFaRwks95NQroAfStFciJ4c3CfKJoVMHRjZxnfXWmRJga4deOIKXFq/FKFd1RDvr9YYKvULjANuRWsovh34RTsGqhzAcKORDczEv67ygOtVwQG4uDFvToUPK9ES+PsQojX/LAdI/34v8JFErVwCDyD3AapHi08Wo/YINsi9l5PH2cxosagYM0C3cUwjUBtx4mLt0ZZTEk8uqXe8D8PNfEIaGRZwOd7CM0qaPnoV9t19cn1P+5KsJppObEnxsDNulRDICDtsJSNlIkbHMNGCm/n64JlcF5R0vE/vv02lD+Ja5jUjRq1Li09cQJIPsi/lhgNI7SllxtzC6UlOW2KhQPRdw7gWWG+Rc0f5yA7SfVXQP4EM/AQQllCjwGwlg7Os+JGhlUfg/bYvYXvvVKcc0qjM7nGS6/nqwl/frdVKXFARJ1S7mqflNZrqTZY6saE89QyT+N/eLpHmWhb8KYdQot/KkhWP40be1tYJelqpQ/OTz7oSg6ZK1t1hSze1G1mRisT0FT4E3H/lRnGmYhnubfZYRsaMPo70WsfsgrJvzpI7wG3WknaQ7Ubs0wkseyD5YnBdVfsbSEDfgR2eVm9GESiM5G4oKQQMbhVP4rQGpHlQ9XU/V+p0lrVTqkqle0B2tQ5vb2jwqbjneeQnCaorDPh/v21ADjIryl1Xeb71tLYdT1SpnC52CBGNqBIt6tDEjqpe0z/5qW7X87FhefaqVDx/Ennq2Ofz4GT1BhcSYR9e6BNj9quHIeZGkbH3X8tTckNknFSmdCa+gX61M7XO/YYrjNyT0DVUEx9ybsy7x3TvOTsWVjq1W6JimHRqQETDlmVLwpPsOfLcbJfCESsSimR8ycVhxtlXyz74Ttg/AzZrjkClq5XTfJzFKD6pO+jKAhDxJaEtc1NXVA68WgmeXvX4FxtlKaFVod+HoElsk+1+9yP8jPXATMAelkXD2GHZ+r6Hj+H0vLDdmZe9QkIs4KbR9Aszrg2PKndFWH9ErPaq/qdpPprnaUJwohoHMq370roz1d5nU7yrfUA1GAYMsLOcZL0xoqp7j0D2qoEW7AS6zOro7obg5ALGm2NGPkOq90DJKI5WjVTDtW9LBDZ9HREZVwHF50P7o7mq+BM/+xgM5NEHmrq1L/QgqUmL+zOapJ/pr+VtDdBShlWFRvQn/naBsgMbhN2ZK+BnNYVUTd5ie9ejR7bHNlUOE8dMYogZiJAWGOYg2u9Y/Lv0KSqhNqGzry6aa0eaif91gVYo3n2P16RgypCGh/DBiYYEUz+m3GuQGjWaqC4zjaKBzk41QN1OnrIY5FnLaoh1+jJbSyk0nZ4wFyWOboJImNuvwZ6A75tZDkGqxs0lRTHvP+xP3Q/p+JFYdlhOrGiagAG2YjZkzv+KGBaKfjHgFlcnBkVrwH2+lwAPZiJZ8QWW3KP9vkQxEc5hwDlC0heS5+SB1BaZBf60YZJfvtTq9oevCnKRdVGjZUWjx+lYYWtr1n9wA/JRPEdsmL3ghzSWTYjakhc8dKz2pfQyktXB4MbKWZrCQWPt/w39wjv7KKwpIfzkgNUXt3ewPEV2R1Ms7Ug+rbbQGEekne5kUm6ATc1OQ5Kzpf80KtU5SSIP9Mck90fItkyzB+Ph0SbFqjs8wS9+wO2ZXswSXFhIzu0McFAH0xha2RSuyaTogryOSDGC/GXmQCWuD5RsKj65ttOcaNly5A8ZH4x5LE+JX0nB/QsKIOhLelr20FfqcDmG2o84ZwdC/T9zFfMcKIrqz13m7muI02odGwbHjZS7oPePST9+yVOP7xZMjIVIdZwIC4khaWgL9gWFuZtW1BGJ5xkHakXVSzPcnOTrBQDTa9dLEh80YyW81wL2rItPcF1IXqkNtdzaLAyDx50y0cnk+c19FSWumuZRV1pb5Jc8PiOYsuE1dACS8XGIEPfrE9pCc7rFreq/5+OgucoWnTL7TCamolHn4W82vKprrAD3ZuQRItBhiEJYYmup8uFEeSnVywk+pWWQ2RVtW4EEN5mDNpHRMdV9LGd+4vVXYf1T+cMw+Lv0UtcBBvnkBV+qbojCShquN69UIZ84JoJkp5NPEALRRHkrUrgQ7/kJdQQUpNvgj4yFepTB6dJNdtBZIsgZ6oVnkFdXQjkxuHEcTY5QO5PfJQIAjnYSIdPR/KQ2opB08KaUagxgkat/mgVtqAlfR6LloDNyazWWMmAQUwRjqTEGq0iJSmyLUVAW9K8iwSxBzcRy9GRIDBB8uJqH4arqTaaNOmS9uxCtZfJgn0UZeVintF0/nQAX2aNLpV3xBsoY7GIo9i804vooDv9+onq9Sv+pHmNFataqZz7BrLETA9q7BYuLO+UnACRiWTLemEXiGel6pL6mvSzYj2fPXkgpTSZ6wn/kyA8FYbsivcJqT9dOg3zlge7JiKyY5zYIAB0DGGRRRC9yEnw8WW8jvXsaJmfFzXsOqG5DvCUvfpFIKvsspKkNlyBfIFqbaTVGoNaYRGO80CnIr/YrEMT9rWcmb2a6bEPU3a8xHULp6nC1hSnaJ1N4yRnzfIwlYy3mbWwZ/KZlUj9D/E9MaY3hRRO944/weTLS3/vD4OkUftM36GsXEJWf35X1pLLwfiID+/1o+TipsoIelssPXmj+fh3lJwKGghc1zrQWocPtehLZBplyMpWeVNSMVqg3iaVguVh5VLGA7IYYim6c1ASFNBbxt5PIKbE7u9CBKWHwLpVHEApsbfuJ2Z0iMNiUlDYQp0qfwY7wV9YnYvxIhTwqW+nSxVUPEEWfzrQfunguWKyI3wS3oiaUIediXT+sIW6NJUnCCyZwKodC/oi79qUc+cnrkLZo5al54kFU1aynlUaKa4c/kcmI7GBnfDX3HAHulg3zmruMQBMCNubgG/VWItzymkyvm4brlDaU+aMHer8YYJpQoauVTLHf6vk/ATT/l1D1BBI4cC6mU4qS+FlVhIKr0Mc0pIcxd7cKcrL6d3GWE25MZilU4/BEszST+lGihT0ec7UI2luS4Uby3AMPuTXIQ5pSY7ib3pyebwqYxj6T570bNASzecgy60XMVE5MtTFINGcxUoJ8Zic5Xwd0TMA+8ocxrqCbf/3Q6qiIrv6pnRcXYFOA7NByAapMML0vvergsso/PHsdLwzUKFhwnDn5z0XMeQ/331dc8TqMqJfprsLYAsTmZIVWbIC0s7K9Pz3PgW4XEfL1v6BiqjJ5VROPDQMoRc2LkRZ9Tl1cxytYOIZJ0tK+bpNcH9Xm/i7G2r2tuT2sU9dSQUkj/6OJKzdhJScip0H5utWw5reYPQ0Y40sfTFRf+X30yMOk/7cTbNlI1sK1ZiaKKyG2D1Eof3pH4Ifg1YdfuC5rv/w4n8OI6fFWapX+KFVGW9NclXawWFPK9DFBu8s1f7EimMA69eeG/6A01moRJGqKZ9yd2pEKgUy23ubWzA+TFs1ewv8wPj9cPtD7K/HeOH5n61mfGz8WBKWh3lefj9AvzYxaOJsMAv9aie9R6g769p/dvL6QBP8BmXqBnBGFP2gg7vhb+mbNw7Csc69O4dYHhN5nYbCftttcsTMftGfUEBP2NXaeUgL3DnHQ3IpEAh3H5PQPNbcLGYke9N0o4wzUPWPhCVbwE8wFGeg0V5FE1idFMXlbmLMLegU1iKiUCtyEsbM3mf3yzuMKovWIDzI+D2abiacBFIq3NWUpbOBPeISJV6Ip3Wfzsma1S/RWn0pld/7CwDLV7KWrZowK3KEI/uQd7+GVNSS/JNSFk7g9dTb1CakYV6cmLcMHHhKPj5dX6+SER/VWrfRH9iBxQ+NXdCWJ9SxOL9hz1rvtf9nIF1xG8N8CI1nWsbv0T1NT48SGMy6GTJDmcJBQjzkLwr727O6+oZsda17pXtSVeF6UuLBjXdChzJTrUo22FFsZ6mOffWyutHMAgGhz/7G1Ltu0qPs/M6Hkh8coZbRllfkygth3RuRsxJp9lef2YIYtHpVJQi8N4qE0DXRZfXYzhpZSPW/lrrswlMTiEdmy5LTgWPS9SIkElhdsVCz9BnVRFdH0gUT3pMfaF5KoXqNn8McsWsmCiVjSap4ZwcRzi5WQfwoFfPkDzjl3Du1M3/YUq3FqidZU5dMzCkOVDq90z2IDxTGseevE2IOWH5j75xo4kBc9geW1m0S4c71YOEZOONUs5UUxl6Nk2C6SPyh4Jo35EjOwoxjcds7cwWc96qLLAaOiRh6vF8fi5QheQEoQHrCtYZMXbrUoPb7RCQoi/Nk/i1Wzr9+mpbjtrO5eIslDFOZbff2wzSxj2LhBzLPnF2Mmj51ZdqFksCIytrU+q7h62z4t3KdaBRKsuoaFVvTPLxVt4AKqQ/S3fePVtFeDVqHM5qZAnj1zwatotf6X4lrmWWaoWgUQTt8ItsW//Aw/oft1WCmX2eTwUxaH8k9PYZ6B2pZez++2dF2dCshRqVhZsvVlVKWYOS3+17bsuGFp09hQdcK2bYN7HxilyDAqioE/TvbaKWB5qKDzp6CH13S+uDROQd5ocLLJjXp/6jxfpVd/Mu1BJaQfqIUOwOrQCpoDiTPL/uEIKXbZtF/9b8dxREhgmVihU8uKulZMWr5qAt/c95NzHtuHypaJqWIMutRn6+me2ve3u8XRM47b6KDb+1wG94KkcWK42jnTMjHR4tYJjovn6oL3cpKfVj3ZQz1kfieMsSwD+8jqDGqWawYfSlHhGe9CO1S6NERUhY7IKV/u73C/wI2pxbfYp09JcmYgyvqwq5meNi6xVLOyqb6XLFU/DSb+mZDqY4duHmmrH1qP5u/bNZObHyGM2+FqODDBIxZwXmSAMZ4vDMSrliEq19jPjfN6WYbBd5MgMzJHrswal/IC0O6p3AzJHPlm50IS75fHwthnaSqLLOCazqxJQIj4X3bVmROreIDV6RJN/BzN0zCBunXiqR+DOBmqsoT3DH4RbIOHbj++Cx3CR08Q79+/Q7QDK+EX66wSs0/zbMPf0oJBjshecKmTyXO3Xq/oY9HboLNxI/q3tDXdIeyuXB9Liac1wa85d8FlmrEJLfOqChL0yMXzVnlI54MfImSFBOzICgTuhN+uVVz+rzuVs7AkoSUPLZOKUleGEKOBQPdIDsDLZ4hE5lYoymMd4mjy0719wm05DBkkHk9GFIbYUul/gnSmBvXhE1rYn8klgrDekFxgzBZprlO58hqe9HO/ypfemp8Mu2MZ41xE6xIPw5Jjy0R12XnP7+VkMom77ZOI8TggnwM7a821nnokU8YPXah7LsjgsgqnornSqc+XK8qm5c2KelkPa1Zc7J/HeAYO4IFpRX0Yi3VXPguioNuZeedBLl7DRWIOYx3klT0VcJaoshMRCUwp2HjlQi6LsdnxQPhvcuSrWaVBsR2T4kgxT/DfjARNlMxdyy3JtvPni1P3Kmoo2zBc/6TWiG7/+F95/qnyPbrYHapsvlfygOn6vILl6xibiGh8FOZzUeyV9Y/ngwHxwOZRdbJJLnKn+8/hjt531rtJE1iljGLNuD6jc9IT6aB81qeTtpXsHU1Sup1C2SH4bRaa9xFf6tv6C8wRHAZtePDK+ZmfU5G7fX3ZhONR8IUWvUf9r8ssC4Rzgu0M8t33cYtDVQSvufdDxJrwVec1MsviOsRE9TbI9nAAeNXSXrc5a2b8qPM5GdFY6MLy4PMa9hQeRT1bZYCVA5Xyk6y8S6UnQh1b5JiXwjuuFKOrFN/p6xxzMDt1A2j4AnN/kGgOJK3tFfv+OH8M5JoIqgCjOZrWiIDiOJk5Xjn1o/ZO4/wuRvSbJbpftkGvJc3Kkvcxrw34lirR/Xwp6kajHEx5mQXpzJ8wImmVoynt7qaphxbkuEy1vb0f8ANjkXRox5b8zRbgsTn0CdsQ8V6L50ZSm09GI0j9QJynd+FtGjuhkdYqyqN4gs4St156favVF7I/RghDv1g2RH8jEyaOeL62554qm/ttd4yFRixZSQp5bhE5a2ImuhICKObeVht9qWA3rpHwnVcqfo2JWwYv6kf1YD8smd86ru1KPYyiakOENb79z3WE0t1un/6CMp358mSZLn23q+FbkybrOUzBLPdvAxOv+rnuAtipSDN6Db0pgJr+fBAU71l6ftI6IhiJssrse61p4+WsNxP3H0trYtvdJyjn55Tt+54fciPZ+tlp9XfBoWpm65Yf0nl+rcg6KXCoAzicXGAQo4ImSHeLTxMek2x+3L5k3o/wTnkLBKc/f7HKZr1k8RIJe8d0PGmhM9U8kzrrC66qePs4v/LgIqpkmnKl6Z3YTwNzv0Eer30bNaZF7DGanHN4iFJ2PuQmVIZqFdT2IuY33E0IUetEl/+uCj2Qc4P92YHmvEqbkc65N3oJQxVpPq9lzhWa3+khBVrldw93onYkP3HoGJ5VBq9ijiYk1ORRn60n3Bdlz71x/1R7yXRQfu0TilvV427h8v0GB0bh5j4WilP+oqGUDfnrQ+MupXrtoEQKYL6/BpKUKXD3UbHilMC4gZiClmyZSbMc373syo01oaKrmiN0WWB059MKYrftV0I8d1Hazfu5GT6MMQ16PKUs7LLMkejoGFKvheB5AOnIekjGwlr/f6ChbrDIMeEh/5puoeHBjSlASUCt2Vj4RrA5/RxYDsYZQdneouXQHINvq+ATkzOXRbVFO3N8onK60cBPl2RZf8J/Y/SiwJjbaduy0S4nmBKEuvQj/2lmWJt19J3+i/T7IVNNEbhLkeknEuLWKqRFI9SO2YuzC5NMKX43vIekawnukAPdiHI9QPSezEvhA4tbraYBq67SYv3a+AbTC7bIbQsHX9hfln7pzJFu5BtsjRbWQtZrxyvriV26UV/OsAV8IwSjTvW3gq+3+JsD9pvR74J1KEl5+/wpI8YDYwEmdYbMchtkUZFLM4PPG+4QhuRkPSWA+WFzjXQwc3/49RhMuy9rHgzHGrqtAn+5e85ZJ69Yit5r0vHugi/6JeWRH6C2sjzqoP8/estT7LeXjWkrJtOTP0Uzxoh52898FBKQrda3Ly5x0xebLB6RpuYuI81V/WRFVt+YecD1pb2kmX33ZymqXyfeDyFiCcAO3GKHZg429z1F3KyW5tl7T3ZZj6molj7qb1kKR2gqrx/p52bf3ikrWC4dHjUF/mvvMKzjJMRWisHGFsjiZUsAsKzg6rU6JC945//fb61in7vEbbFZUhqH0eV6bY/70zvrIsFC1W/w7FU09IdxyIkXHxq1tKKw7DVAxgAF9ePiY8q23G+fv3tGIuXEe/vNxzHgVmhF6NTkrwG147DoWlXizOlEH2A2xlw6ue65HUdJE5Yjc4gxaOB7xEpfNRTCe7hDNgYrjlPlMYN0q4MMLOEs2DmKl/zAj4fKs7v+RWbYL5R4xQR+rI4HNh+EjYDYXPtnJF+whYjWiThS0q54bWt7ekiFRvljyej5K69FLbuqm9AVZubKP3AkSBVZAupeQePPPXvwnId3XloCnJvsI/rJe/IBFvlb0tYC8sIT+yZsW3R0+gt66MnHgBUCEDEnxPB1TECN5dzUT+9EhFShf+4aVBtj4uOPPXdIN2y8jsWS+cOfaYDDxnM+vzADTQtIQCE7g61m/5ajdkKLkzGl4pKKN1DUCkvjFhY7fI4qk5xFz1ln1CvT/LXcAu/yca2OBnNudt2ZC6Ludz0IhpV8VYUKxVew/S63j13lv+EcJMad89IhNXRvoUJ98ypYilWx+xyphQ8x5PabMlv6M6TXKDN33nIeJiDEBTfG4N9QBlZBIW7Xl2nkOlGCnnhblrFLQR4JlQsgag5wfl5liJ6mlO7BRTf9UTHG81Vry5LiHhoDV0pTR/Xjrqmoj8z9ICtaYMES/edbI2Flgmneqsz7y4EB7brRiCiUf75+1cuXPyNzyffKVqH1+1DE4qAoqnwYWepvm6jDKYIxZY3N7nuPXSXRcVdTcWyzjnEDn5syTicfnH3HuKQ0vizmuaXiUDnB87zkQkE2RsCfvIsCvnURtXr4UWqOPPi7JkIiOnzqI9BDyujTGJpZG9J9j5muX+fWidlSclkRhsv5aennat/Jk82gDd4U5ljohVrYLaF9FydYh4aCyb1LnhLx2ZaqBXNjhML+me9tM3QhGAEXCbRN/X6EGOcn/iTUEy+lkrqQqir9KBEd9MvQ8W/GA3FUfFWNdUOAW2AmavotaZEtES8j3O/Xj998ldKNNrzmYruqsfanV9d/bl5V9m4vxpc7p3ljjJG9OVs7WA29wK6m3GZyYG+jR+IV1KxmHmVr6x0R8U93DFdRRjqHdQnx8Ojkqz3YA1+/hS0rBlVvBOVKIF93wC4fsdY6+UJc6oJjerGGO36TO16N3Ih69qDGp3COpqCY2KxZuH0Hgb6lGt9Gzbpn2IghDGRLkuJmVaWzj2reaDQfngv6ESEwVtAVYmIgKtW7wmR9K20XmVHSa6qosSmmL1dTIruM/um1mI0mMTs9TbZ2fWs6igF3X3ywEQf5kitHvxQLcFz3A21t2XYZAglfkuGtP9Hlu4OHPgMzY3+zKRGMOkL+gmvTR1vr2UDqeu50S3gDurDUtWADL46LUnhdJ9x4bErR3EDLqfV1SeY8rLIk+5dwOaaU5wjWPWE8qtqu3knHprS6WxO41nh3ro9P6EgWN1rpxSyZrQf8HLk6/A9u51QmydVcvkP9Pmhf87gLIY0pSgnTErE0tkCbTFFGoLVoZLwGdcMhVF3hcgXNQrxouq+kpw/WcHUDslt2Lxwx7+4cZmSkTi+UpzqkBXTQlx6dfqfrD5JrInZ/Har2J947qtQ5LhUTlf6c6bdS8jUJgMrXDkUBzF6hML6xNGVXxtUDy58givu9rLrUNpIGh8RyYn312Xvp5bt/GFlrCxYC++sUaCWYV1dDSZpSji7zCm0K9DOb+05nBfJheG5pv39IA9G1HKh7ZmiQO4mcZJoyPU+bb6lqt086dBaKNiiptp345wtDhkOpuw4QU6WY7jTOyfGfK0yhhuZxEj7xyIQjJFULpFZwbhviyoEodQOJeWsBcMGCKsyTwrgs+Y5WuDBTYeQy9sOMoJtaLaT9zOTTNXg24XzlkWOkFXzchI03nxYhs39q8Cp1NfBYgYyGrYPw3mXoVzZMB74VyKFpYiZP+dbBhgYx+cI97TWouoNk2DUxHgWPX3WlQ+GEqPiIRhep3t4gZIM+zjpgJKRCYy+cuAPsqzA1zjFuAhDGR+JNKN1BR0R0DNtiwKZsSqdSPN9AltYn18s1O4m+Qtn9B2xLonyAWRYvhUddlDcOFzK73ZVeyIGZB6g4loonhAgJLVH9cJxsn0cIZBAqfElOD9/Yuk3Ho5dUYaqB+DbHQd61mI3F50pBlla2+6Og4ogCacln9XApuQFgjFTE9P4t+/Qngiowe0oGJGPTKOA7tqpTSXgbVopl/ixeUyGsc/BeiOaapj7h0I1fxAEostJSoDrWX6iE/l8iECejB+k6hb6BAsTsd50toS1ydolpuuFsfzt6TkfYsPtTRRqSsupsTTmIReotC2k8p1xCquHSKdCakS4z32CjKM698h4W5Ay3dqYCwODTfAxInHeUsz7GePVILLejg0guKPhSuVXk9zTQ0N0wQae8UT95M1OxVEj+8rW6uYHwp54bQ6mWieK8bwpyWQ+ZG/WCKys1NPy5JKW2qWaIi6vMWDPftLFh3FqDSEcJxMWT5/2u9AGl7LZw2VsJFCnBbh3DQ8Yjy4gEqDb24Af/yc9M6T35qS4n/anB+y2LS7qVdRVWfgH3Zx2jIcM3qAjaoxjfN//VqDQ/4PHHmH/TmAiP2/P2CRgRLM2SFg80IfS2Sz4wwFPhSYI6hIMkxBibGLduvDAqHlSgOdyc+spxVUte1vb9tkh+yVcXxJbZ57OUuqL61vJmsWWJ4XFaSSNbPLaiJ+8BTvOROR1YX4Uk7+KvQ+A+5wQ34S9DY2SwD7e284A20vGO002l5KIpvfO63wcUQiNlRcJxk1Not1ACAD3jKULtTMrFcyNVRn7I7eAToMX7M1PbMQvWiWipQSOqwJYRTxJfFIgS4fH8zssVXmGHLYx7LSAfebJcV1/ED7xeCB2OPKWNREoeZK4U0aqfdVaDOH2sZUz5P6vPJzkpBdhhfQA29fNcNKlE+Fw9jkb1UBCNfssQN3Ignvot3nM8gIvRIFEWiUJjjlRkbquAijRTZJa8AKCenO3iVXGt6jU5I7ZQLn65tKp7JrnwkpLXyPscicUKZW7Z+WV6WxLfDa15ijsZnac493lhLpE1dkhZq0Xk+rMbkziWhc97LeWzKR7mBSMKv/4AnxjzDMja2G70fL9APT2uG7+HyaGpxdLh/33Oeuh0XGNkPrxBvX8XClXQrwggdfz2HeepQd2CHwBnRDjGESVZlwUJF5siFL3QJ15+WUwaETkPslPXiq16s6SXWtEsqhKFz2QtNkMWOqR0sLv5Ur5FU/vfH7cQaMzX6opemsEa/sig7xc0tu/F12DKoVEnNaVow6yo71WvQp/36xR27B0bNCaT+4dRlnQLPJUO9j3+dUqrMIbgqhmuUyViBKTvx35mA8puBOvYy9r+QGARf/giyO4kru96iLZfTGN+KsbOOQmJa/deKidwgF23b3CGRSszhf53Mn6tBtXm9fcVzWtz/xmGrNnKOLvJjyKQ90t+Nj1j4cp6eFQSm++2iuF7JQeDH2LlKRc2RORzCv7gmOZGg/ZuLTBXb871QN7V3Y6vGrJfsurU5JnhcUlbFx4iRRD0g3mQa0ArJYJCO4XZ2+3MVuoIIeRdmuem0wwHvwKyr+8Q6gDWuX0m0E8qJBjCenvflt6fKZ6sh2WqHxa1VS+akMYU08KLbO4T2D8zJ1Q58iuzz96FdDm4CUMygklOyN2LALXpcBHpsPiqw9bcEPfTQ03U93iG/5YUfjvzsnKdXoKWLvAhYO3jtRRgh6LJGiC+gxW7qynXTXTg89+cZ2I2A0uzMv6emNCRCT9hZlArg8EBNA7edhbZSlyt0f40qCDApF43sL3ByAeH2lUDyvxSoJQ7igJuxxw93yeBgPIBps2waMFXQAW3er37pP5sxjUrmSU5aOKSi2Vd3A4DdUdFNnkSgf/32C3X8R1lUpY5Eq3fp/EnJ5qLsUX0HAYIe5SIlWjvjNEOakYqhXBruu0kRCWa8ecXKxMTqJ3M38r3V+9O4ontarMEsDFF7+ZOvugDBO6y8tdoul3MqCPwkrqMidvQnxsxgeavewquqT9q57fAT88lscmql3t259+zrSaOrqNmLuIjOj4Ks9wiT8vUrQM0TRGjTRR2ReSNBfew8Mb6lKz0kvc1FCKPOITZmpLPM7GArGhqZPZQ/gYMd7C+Dhpkazy1LnCU/gOBCYVouwEhl7BDsHx8Z2XHYj8YD6Cx/HlIoMPya2OdG6W+pkn/LjZbqPHnUpr8voFlxOgdQC+1A8qcpkncUu2wnT/oMYT2KTfSNJp0H/BKDRvE1BHcY8eafdq5hpNltjgj89Yr7x2/yAyqcvWLayVPSfMVruu4cdDiH3f5BTfBSc/tJ0s3g+Wh3QDfPDHXwwVrrBAMrXwbS2fQkHpl45nfrJKs0YL3RWzZGIao270cjltrHQLZnJrGfe9YBNOS8FUqxl9uWMvXXfWAekuYgbBiOSaFO5Kkmg6cG2iTXAWBPMcgaJAJH+1Pj8xuc6NPNbiAI1Pqz6pEwNTmwVVf9bHGmxAFYk0uCyXhJ2e9ATR3DwrDpm2vQ0/+1a1jP2Y21ht2IYXdggFELP9YCRh05INUVDmoTA6enZiQq2X4dWcq6+p54uGAYeP9sEdbXK6kk6F13O4cw45jcieETsaPM6tupKxR4J7qNHfi5VO41JuqHkzBH9A6a2Odgzv90e3BThx4IfNT19emrh67KZhekyJOFFo6bPYlKzdUfvl8ffnt0032vW0wsc6FrPFiNQSpn2Ey5ZN+evOrAK2AVPxwOUER0iZ0mamH0ex92l+/chYgjxDEc59iw9UeJ4U/zxRrzKNkSr0SjsqRzj74Z8G0hDsBQnS39U9pt83pVroe/qxg5zlTP/+o6rIzxF9imwMiOURoCo4X1ire2gli40iUigISps+OZWRT4MVRO1sgq93tsdxGvBHx61HxcG6LSZZkb0go47yEUkSZoIN2obKaezs6ZE7S/7z1mG9ebY0Eh0gBC/4hNwPqSAhGv7l3QnB59OJHAnoo+VKCZmYXI84eGG4wj/Dh9ijgIwYEMGmyvMNVT3rgAPy46FFcO5R4NAhlaB/9QIaV4LpshoBtH+tydn8EozO2fgsuK/DVxcDWjQ4BBIaU9pnTn2MUxSILoyDfKyLNDPXPg4Lv6Yk89D3enR5mffotL5f6/zcBVF3Sq/mcVEONB5BvtPVqV2I8uzdWaqyobvOPjgKncj8RSFZfNLYtJDXsCTTz4JF+Wf2qApjht6TFXSddOIlSGbjwLFIdyjUVO1o2Q8gSC0umLwxtJoDjaWilcW//Mkk9sY3WCdzm/QpuKI5gtC3hzOQy2snARYJlM72AqqXWkzrDFAonF2cj7EzBp1JTztGtKJlZY2tcIQ79xpPRluJp3I9A8pXT6ouXs19Dijh4AD8UB7wuBf35D3ljCYhiRsojQkekfy7Oe6WkLT2SxMGMdLysIUcNUtlXQBmFPBUv1M7p081LKSQrZZ8POIdEQRmR4hMWZm2lDgfKSn0aRfgPMmgE5lQ/D8lu6/LIFJIKKTPPTBCjR1iM7WgoTK0tikdw42vefJXTtp+2c2znIuCsmLeFdg9lhgqCH9pvwWRuWQVoJi6A7t1LoMbrI8/zR/OZnj6nAyvwBdvHzx+fjlUE0MFLFJHHQ+XvR/c7P3thzHutDPVw8dUezq7yYbW0YiiKBDDdtUYNqmCTVl+n95Nj0+eliV8kx5lyCks6/9+myZIky49r1ncQyb1sSEoKWx57EZtp5CApx2+Uh3Nu9U3Pe80meAYp8kEx6SblAYJhD4k49tsIZtOGpC4gG0tW2xVgqjQ0k0d9Tad+a27DTWd2zxzznRQVPzPZcHVWfdYHQjukMGBHncDQ3B1XaEO9tSn04dSZAkbOcEK2NIYkHwmRDMb+Vbs/lScviR9Qetmg4XCivm9s9UepEj9FQ2nmS44by7OVVJIlg+pKAtMzS6G83u0q+TKsGtp/hWtFkVTxPIelZioGKlgYd1BZ2Bw7sjSkkxLcfyKO5SPAg5e0axZ9P4uq8zKm8FStMx9xZEBkZ4sNlTdv3DTS5omAiGfug0ugGj0R9pSjPfk9XhY0APjEN6DDjbAGNd9olAz5dgLKPbwlSDTnVVfJDwACvQlGfLMF4BFsRBwQceO4zzIbiuUoMc+fSIEDrpTUysoYUFMxEHzPae4SB7texpgeNx0ARio6SXYHN4ljJWDXVs6Nm5ss/fssOcRYMk6s0DBi13XYasK3tlYurBnGBwmzvfUut6idTRnJlIBGwRFy936sncyYdjwpKnzMn3KwWK+XJrvnXByFj72weUpdjmm18VNa1XW0c+KTPnrQfKf3S+plYCCoIr/I8Cs5St2sBYqEWVB40TZQdGfhJXaTPkT4lCRGRxqcBKUbZ21gHnZ1UqtPknS+DQunkq9E20zEZh30SSRlVKDshsOAHhyMSHartcXVjKoh9jmTmgoG5s4suiWh1TBIZBe7ZtfDS9tybjq1YIGCxz52JlE+TuT4pGcHFNoxbtZYlvb+ABXklrs5MN1hkWOovzu8tO0SA5NKzfRSGqn8/0ML1E7MrFIf/6KPEi/KdVWM1B8FnCqC6vhcLA1+A6a3lN0G4cIqj8fJoTQCrUW0o+CkIEB08zyObJiwNFEQXalIgIaoJIagbtGJjLQwBwhlq+1NbdBrXP7dr7CTklG95Pf+hnesg4BNkYXGx3iQDk0pP3GtJiHDxmxe9nzB+vIoecv/7QNsMNsMsfU0Pb36inhZ7Hoe6EbZdN5eVf9fCKhR25L/UgVlk2Jpbp6aGZk5uubHjVFvn1dGGOZY1PqqUgv6+HTokjOljF7VUhQeHJ+/k5Zf44z0d07xa1eaB3FazXhVbOlQxdujV0mgRp/SmETnnYpmstfPuQLuMuXhwMk/zwh5FWSzwSGRFsuD2L/2wONAXsyFvis9nRkvyEnQPdxogP+7nX9S2f8Z2bo40RwJDb4xj5ucn8gkZAIbLIHlr874G+ZAColqegm98npnl1ejqF210KOS8N05/qumpYfdjiQl4sT57UDEGPYdaUE8d3ATrs9CCNU/D/818xg4xu4CH6tCjyqEK04ctHvxfqWyzxeMYIloY4ccXkpo2QNdD2JsPEZpBh/LZUBW0+csOV7C/aRpfmWjQ7MenooW07z5U6msKnFad7iRHt1ywQu6mor3PBtK8w1c0+cgpink1pngDzAzk+obXnDnl9Sx0/Cajo1EcqOF4MIQG4CqUnernMr9sJmD7D3h+WxSG/Id0eor+ZODgBCszm9deXfDPaEvUHrnsRTjWIxbEjoVWOe8tIEREXEx4DKP5KHQ/nftRwh67eZoMWln1fQcfF3f6uxrRe++5QKm4KV3sFqM9h6jy8awQn6X/1LM84TEyNy0OYrwdm6b+bcFytvZik1s+yBegX3gRNBEpS9CGo7QX1jE7eS0fri3KENz3vau9em40bimDX7zpYnYtCCXc7R5J5gkLkrdZ1NloiyZ5PNhv71W3Mkqv9DLBi/+yqGJRpFapPllY2psZ0Xn++9suA5kf99k1VrKWARDLYmhvlmThYtH5t1a7h1N4b0REU6goVIZnVwiqnyJijgj9eKqViwySMB8AbvwIkBYiMjZdNSFTAgzcJcQEJfil5eB/BQ3NTAZFuBzfV1wwkZzP+DSjZmf73ydH7a6qQHvDFXAwStb+YeSk8SwwgRttE1+6lGo09v7qQHjIaVFXPrxWQOnKKHvTm+1Lb8doLJSminNpxcFUEciScKDDJ2bIzxl1iyQNEB6Zzt2oNpN+RJEV1iI35TIW8cyHAc2vH9HNM/f2Kjhl3JC1n8X+QbNt9hYDBB/40oe7PaKUt902N4gnyX/W1eC68G0lzeXFe5W4KVKxivbMf9yU6Oqbu5d4KDlPtfUehXPOruo3NGzL/6H0dvwr9/iPzn8D6Er/Nk1aRWvyyGlmdJP0HsyibCnqgGHWHk5EBtVe0d9r+MBhOPWe2u4jK9vh6+13m/1HhbYVvmjvB5w2twrVuWrkRCUWEyvWLYIZ1k+JJeUVAhEv425VfPBfyKy+iEmSdMvlu8YSngNEGnJoY3RvC1+IsemCz8cNjLR/zmuinrJVvLvdUSyCXFG76R3zVzT2wUkYpgYFexdcHAK0fJB4ydRyIcBC+1CMAh38gEp2H+Q1RviDIq04xQzNkyI0L/mWLYZSzBVC0spDyBHcAZ7QyIQ3lI8k2Sk49Sb+XfA6WcmHlDUbcIjrBhiX94geWDWs3PfftmhFWM+gm+5ECwHRH8SXqh9Nhg4trj+nAEOXPfLP74inhjH/K9b2MY1OY/0VSkDjZCj+me4VARTjY3uYQDPGrxrGPipfXG3Af6rN5gF0q9hxefwjX9t1pvMZxm4AD3nqCMJKvOmmak/D19RPHNup16Z5MzzIhQVujYKGr6O/AyY6SuxmDb5Kpk17QOXhDhXB2NvXRJ9pDWDCOdUq9Y2rAx+nvYtu+EXhseribg4Jt7sY8SjYuWnryhZm4U1JtoM4zBtoir6w2pSE7l1rdW9ppmu1ma9hnN/V6xsYQkLhRTHKO2/5CAktEPZr1A0ccD6yN27WuTTMq19T2dnIv28V6f+EuYIYCmqtGQDA9WGXIkfUnBg+4Y9jXxLQWXOZOmluZOIGxg/dIQgxT8Zo9lzPjqsOCA9hCILBV7dkQZ8C8xbCyzKVvEMmX81oqzMtK8yozXvKfrOsReZmRJvmV1HkqABBTQQqIdpjBP4xvE/69T2fc1r6KIfEo5pwRlG3cxOw3LY/9x/to9rY/r+/kTT/Ho9/Nhevz/+a2bjzxtjtff5/f29PN41Y7rbroMd8xi4Lv7so/XYRp/9+fxmqn9vdjl2/j4FbtKBLlyTyij8kQMLPA3sWdhvBIFy8wvGqyU3zSJM/xF03NmnNKMrCsfaYyN8i9CRSEJbVZMWu3ONstAWzlXWdC+ckG6oD3lwqTQBbsqF3TKpcod3cAX0ppuzxeTA13BVZZv9NirPNEnrkkv9D3XJi/0Izc5fac3bjV90lccSAeG6GDphKFzl9M7hsxXTWcME99IvxlKHC8HNsYH9U+sC6c0L6wPfMj+O+vKR/M/Wc+80dSsRt5n37NRPmf/m83Ev9TP6HreEU8sEn9rvMUxplL9B5vEv3LzxlnwT44PLCvaWL6yLPhFPLKY+GlRQpVVN1q7crJCEhd69PpJodAvr68UXOi8PhK6vztTkt7jcvHqSNGUv72+pKULtdeSYqGtx4j+Ri8e21THevJY0qLQz0zf6O8PH48/ScTlPXv2aYjxnlUR1TF+TeZzxYNt+JC82fovVurf83rPh9H/YLWLr33zoav3+BSOU0kv8UmPMdJj/N/g3C2MND79mN3E56pONer8BmDsTTzYhBZH4pDXNQrq5M5C7lQ2La2PmYU9kVlhqmK/zjysVe+LyiVXuOIUpNRiDfohXA5TR4zJet7Pg4uAg+Q454v+FJ3dPFnCKRpn78WlYXPJCMAv81CCYduX29Liw7U9BIpbMsQlgEinSWMcu4EuGNdPcybtkw+ygTswOQVVFAkj45ZdfctlEzP8FVHVQZXD20IdsMJNtw7qZWSgrfW2nH54TLrKwcdEIhCP39rX52bzK8OvdgvKhM83tUtp33k+VfuFQUeJCcpaESfZuckYOjmhf3UzmtKI+B5gvPOuuhhl4ZRGjEk95Y1kIJzrbdH31l/RyMRulyOZtT14OleWReVEKsqDvTnem7jFgStAbXPxlckIYbd4uHHqg/V+WY5BrngfZxjA2pgpktTGwvLDzGbqtCNIGZF3GByxSIAcCqJzTybxkM3mSZPQYiT9R6aBlMvXyLg3SzMdF1KOTRd5ekihQ+SFR+wd0KE/5aq/Wi7hzvPQTKxNCsLe0Td9MpKkn1/g7umvEKP/eqznSFiQRhTa47Fs6Lzw3dW+Ifg0NyIaedAcL1PIlJRAnUvis+IHCa4VlMxn1j6zbb/4MVH/fdmQ2xxHmQWW0e8laXhjGM+ojQ8svBVmDtJ9qnFJtvh7ruK1VxFv6CaTe06tj9+3oA94YvncuSz4R58EfFwH0zRkf567BU7N152NlUG7CFlBHRIbjUIrFKrnITRvXhSvoieAJViIF9jTevJZm2Xzon8POcw1pQ6/6mKY7Z2bknZVw6ZMreeUcqEaoQIPRcpCOE7uWk+RiCn89JCqQsoQHJFoH8C42+/ClUBa3vBOeM5pAAfq+b4XnL/3IoYT4kmsrofPFBhoqX0NPbFE/YdC4JuSt5vCFbWekHT6tG7uqoJ0h4kIT85tIOI1BpLIi+AU9p2YdIgi1UJi+GXEE5AFmXEgsi4t5nRrvJf/AgSbWm+MC+NjTJkjL1xslE7/JWKYY+R1BAtHIr9h3CDtcbcD/s0gXXNGATpnclWI95T7ieeHoQ7TL/8lwK9YkBXmVvNktkHi0gc0G3Jvo0IuWjNmmIjzdiAU5Q3DNmw/4gOTyMSYMNIbGgSAqwgl6ZdSSjDnaN+DsJTDTv8FdLvMJIJHWtAUd4KNfhlOXyJ6SDTqkkWCj4vSyezGg6BmPekUMwcr1ECVJvS6TzoGgfSeBLGdsymGNVtDnooJwx7PCiR3PAaeeOm8gkWUmKzpIqOKoOVlD+sGZWQRnXmaNnft2AyJ8KW/77/1TQkSnUH7GOoVJINHtjX6TnbuOpZnIE1/3SxIZQIE0jefPWtTC+sq1OkZ8YyrmrLvEtb2ZZQ8E5FAQ6jNJDH91CSLN4wcfcKsryhOdxiGYVjWcI+0mRTEOExf9w7hjd7BrV20TrI5GnN5HESbU/b0J0zkc0oaYYHEj54h7HntM3vNeiPgvkP4+aCKSSld4VA1gbPTgDYfWu48p6LbsKwuvfWn06/jM22KcfF4NpwSCVOSzeFyBFzOQ911cxvLOK4nWXoPkKZAp/QqftzNpfOEsTLCGXsad9fmJK7We8tbwpZnyLYXVbGrB4l+b7lt+wiXBE5LLtcbGUKvYMwi+3S8VkVnWsccnFPoud8Uwm0g7gn8WBiVitB9SJ8dM9BHqd9GnofyLnPkysoALUzlAOSvFsnNbBkcR7dhtCzgZ9s0TqEW4FntVru36PjPho6N6KPz48p4RyTF6VO6JIt+ziRLOAocyS8IT3DW9JwDdj+ouPCtQetH2xNVxB1E1LuGyhhv4fFy7CZnB0ykFgAiGooIebXhsWh2ZGOIMj5ENIRcAtOYuxWfDN17S6q2DtxhASPqT65SPKMJOBS4uhXoNGIVS2yHXnTArOCbYYKE3s7KHYziKbpSSnVmPUQcDBKIfl8FFlsBTeJkY/3MBsyfbQeEYa9Ixyads3m1OtcVtd2OwTPmTQxtRwtSAEBaNK10pPKp+4SawZydnHMhWGsVgdpf3yMt0xPVB51C3KhoILHJD78q8LlRoFZlB/aR5kd9hLls/PVU7jS3wa0LeJpVi4d3vPVs68TpKrAHamdclyDQJQlTVm670ueDaZ481jO7vDDuH9OZLHGIT25IjBPXiUsXyPjkk56Q4ulwY6s4+c1umhOL+QWvy2S1qEPPaS4ulf+DwhjFEF59TulXlzLDAELDJVdovA3BOclG6FBowUObi7QJx7QFCqNWcyQdRUidrzdTXZsCFSdyV0b6bORvE8l43H/bqxSmeUswiundKmGVgKBT1rBUCCawv4ScOlIQOlKkwq2GtkpI5bY8My0qtV4aKeL2VKM3RHy2HVUgunzku28JT0e7ltrNVB8zhbXa9ajsc1BuIJu+Kmkt/pWfIJ+W+Hh27GSwgDRQSpSkWiYQGQPHYeOX7H16bAAJIsAAqwlrdnM/yzyP9llURHXyS3BHqGee8rDYXbDf4G0dzNIELfGRgt9CF3jsFQ8TWU+Gp379jo1vp59UZOZ3uxjbaJMeNsDD5fXBX5pMeoyIJv61pY0FY1TfqzN6aFzRTvFJit8t0BnsV2Sq8nK9oINkjETaJhBvKJcG5TUE7aETrF9WDSL028o+Q5+NzsBx52i/8lBlVbQGHdUjST5kzqwtG43pn05tkglZZ4feKKMA4ITkaHuzPgVphWljlqbOxG/wAVw12QdgYz3zTwkfVKIE4fyMzhG13aw+ApQL7avsW4UmpYvL+2d+tdagHrCbdVpVDYZhGMZEdo6JyKBlzPQeEg7VGpUFbu73ZL9agYTWTW02b13hIWyLFmx4iWK+ku/QeQfAXdQAtxOOWc65WWgXfvRCMyZZqFWchaqSUGrNhRt5e3T9vfKkgrLnBHbJjuDMnRWqDzwQ71GBSKbDlVxfNhxRXCjRMx6wdYl+byK/cgkRYCXf72NdofB+1VWLnDHuWyhycEAO8yR7VIiHf8eAUeiILStzoumZL5CHXmAmGxJT8cDwkz44DR5iun3jhFjBtxw8OoYVA1a1xl7yV6vRD5p8Ae4U9JgXTummKmnE2hgUr4MqbqnRfdndiae0WNDsrodkWTgfNPt0dVdojziXvrgfBckKu54jWboiF/8m3y6K9hkHtNh9WESKW4hLIcrhOMRQZQR8MtXrN1H4GGqTg6ZW2WOq1KicudcWxiXAYpcqkrlu6Se7Mn6i94LlwOQAE360e7hHwItmjeoZUQNbtrlyMnAnPRXmkTltv7MNCnlNTD9ep7i/I3e4GqNLF3jFpKL50aUiEkLoBVgdQCdepqIGSnblU4cqC4R3wquxlkjip132CtlNMalMDzjjFsLQDK5gHDBbwI3tcPvkBUrZKycfSP0bSgVnwAFwy2HMlRkaLh8DiBa59auHtS4VmCFwj/JiVWqGwkYTYfmZjtPbEm5iqvIeOzaphW/mRnSVe8AZY0xuVhJa1HVDHsCLndNYAGZxfN+U0TOAf+p8WYHIx/tgCctEPlSDW3g0b/qR1G5DVn6nA73fWeja9dlOkHCRVftzsTb90roLqvgxgsTKjjGos0wGtCeB2Cf3qiReZngBCP3K2CbYUPpP7RGBYsXYvaXAcWZo+d06XW9hX9cmCIFIIsIYEhbodTZWV3+ZVRkAQn5wURL6TNo11MkwWoW6SX8JL90xiWQrvOcJSXvs0aEhq7kdxNvWYopbYeV+7C4D1PJAfATzqH5C3e3ZO4yMZNRGONYc8P3Ch9A4iJJCgpWZTaPNHw6KPbVLFTUrlCvov9iRXePl8yQ3pdNmvh+CMwfOjBvgluB7DhzOabiSatbkzzwxjdsZpGr9IzotfBO+Ge1evlXQ3mOiGlsDmzURB1ZoyMkoEZ4QnYKNNNKThmorM/hI7Z2y9rC3whzEypLb7oFf2Sh7TkOa3gyD0OVB/y6dkqobfz940lzZIy+8i5w/NjR+fitZU5AEhMRWMh/rYbvxDrZN8dVxy9e403aP16qdVGVdl/cq6/5qR05A47shh6TI7/oDd4NIkTCOBscH0LVwVkDjP+fb2u2GqQVH4nvTnYLyYPwdpFMnZkfP1C/RUN68zaO/Xp40Ox6a3jCK9ENqOpg8a4+NCPZO/YuXiiGfoO4kqAZgirtcq2gHT1PtAIZhGEYK51vv9B8zbeQGwMJYxclC/SgTQ1GR3tV8wGAcvTXdF7uBUurIb+6IYttHji8djLwTTbJb+UoabMKW7SOVjqWQJwwtXkSVcoBZxnZBVx75rvesllPIUIo5mHKKNAsZOEc3SAQPJU/CAeeTSdpfvXzvyvWo1e0cLx3GKFdNA+yf1kRUZ0l6OFvP7jBK9cv81tGftybVuqPESWzxerRLSW6nCML4vYwGwP4+ajHQShIsf8PQMgkaNCEDdrlhGVvqZqcMrx6hZjM4NfPhqsLu9PZiwOfsWK6zkoHdngEl2IJUCtbIou+LIBlXoKl/yywFNX3NT+M4mteDjkMDrbLxcCKqZ2ITTX+uTGmUNrok4/ahScATvbZbglyThJAYhgTNXBPvRSxbaXppM2SbVOgr8fycctPI+Mp3oF4hp1JSVsc/qP4i3Vv8ZpmVRGPR+5RO29tVeRACXyCQ8kv66iwcoPlysMVhIuS9gGfVLIVnn+wwL7amy9lKRQzqbkhGCJ8Bi8lCMmdaLMX+AS4Zdr4Wuo2rOy8LNgZKtKa87zaV5QeK60CXN5c7FfEEO1zB1ccF9U9RYrdvDE9jz3lYlWKC/xobufEXs30RaZAnVuxunnUTRod95NtY4MFQwMbJ6pEC6/S9zW/zzTFHUYTZK4Cbc2rCE9lKjNKdrpuO2p6YN8hznM/4lMcwZ4FAqEOp+sCcE8ikGaWW3mfC15VmIazC9CrS614glJwYzoemX96I33guAWZ8wj756dm2gc+13+DVEpm7kCSQCW4tGGJvIOEdNBGl1yIhJbRKx/aJRdPxx+q/2sX0DVceg2HBUhvTQdxkkYhodMC1AYjHlS6pW+hxJ0gzCG7qs4b7U+xw4ELQkfb6ZuZMYIKrc5QYqaOU/HOIXq47hY6Sj22BMulYFd+mHZlup04eRwLNiYD20FA5Nsr8WSnB32ytriRVZAlhRWF/5eAMWwfs3CoJ7oApaDY2cji9Z+Mw8dqAG2kX660W1NJRmRu7eJKQxIDvNWrErSiyF26Wk6VSBWGqg18Qgoyloojr4ADJq8kiuzAFJBhN172+9/T1mihyiGJR7CBnwa+9Rym3zQNRMQeeUi0KbOzS1wkPuZxCr64SZrHs5SLCfN/S+2zdoEkTgniyH6NpEossV7nBXhuJxZuOqlGdeDykPEFqpldIfDLYDkJ/D2A1UQxzYjCKvZzPd0st5y8ij13I6aSMnO1dKnmQW/9r4mnx6HL9vdaPn6s91mTu8mepbiQG3KYCT4dQZQ5k4dMrcH/W+qZTe6gv0mMHOlGHl8/+aHMsy0whvndvBQ3m8mLX4Z6Kfaq8Ho4XQNkIAkzTEJWuTEzPJ+8WL3tBko8T5SQi2jAMw7Ao+3ER2eCtrg5qkC9yXjhpIe1QD4z96kdVqkY9f16KMc/FpfkNXA3VSOtpx0yIz53AEf9onGxOFudAORXK82WHbGca6rbwIuiEe5Ar6dyDOkJL3LohWA/dhrbE9zWPSUyHjOgZMNLxalnHX/UETPjayZMeSL3YdmSZHIPCFoI1P+FdBZEME0Eelql8i/7hcVPUWdOVoQYRwSzQzuiAz6wnnF1LcvMif2V23PbIGGd7YFBcx3JcwA1qb7RAR16eGtrrog1D/MzSbXTQSdykPW0PDndbUCiAGNMJu7PA1hgNm0dK7Jhe4s3pdzj3qnL0XStlkgmP+0RCuZHppPswggqSw5Tny669p+jfDbvMVuSS2DkZcrpAfQPeSOh9YKCN/MsUm7EHaGympb8Ea2JbMGsQkpMgWk/FIVfrKYEfNkNOl2bfI4k0MfX5hJoUxp8eaaygnMlCsml66KkD+xXL8TBnSdjrNVAu4LJ26kpaKjmhEn3jTA8mA0K/D6BdIw2QXxI2xBnK1kI+TGl6pGGpGkqErF12IUz47iuhPnz7pIPMa9a7F1L/zhRrJWTiMEhwBD02PuZFx61ZjZiGzNoYHTYWKPVR2W3HdIHlVZ7jpBDpYNVj7za38PR01G+ShxkmK8DBVqSYksPkEuWo40130+ODYn13zCav6Ji/mWv6nWTe8Yq6gQeZ8OelGKUue9O1h+43ldBc3ax5TGJsF+Ji98lzeKPkkC0Dn1mPE9m4LThD2hxuqCAOaYyGzbVTVUfN2APkyZxme3Ij/zJpkJ6bRJOxLBspnH/veJizeGVPPoOnk5fL7GsA4yDzmqU0rH32hKMIYN0XiItkBTgI9/RnHMGbvSyl5Nd9nzyHa6Og6kH5OVNZRoVIAZ5OXnq6gnh0Y2r0dnPtaZiNqdGDIFQTXycWyG9SXYe+ePUXLWU5jv8Q6ev1d2reZcxprQmmvjOPxyjxiOSgglcaJbrCQFQ7ULz6Czh2SNe4C4pWtTiQRXjOGlzJ2Pk+4UBSQo9o4pLTc3h2/khAZSqjrZ8Z9RyereCcbCUeDLFRRU6xQGTEwh9zWmsuDatalzy86+L1JLdU3evXe4RzzKzN7z6fO0d/kgTRekCVfudMfXmATY0s5tXkWPTVGa6O533IdSvppVxijRJdOcgj65M2CflrBZaDf3aakiAgaVcWiTtIG1Fu0OLC7F1lFiZ04RarmIHlWN+zlbM6yU7C5qgXjbLv41dJXxcUrRpSphkq8DWHJCjC38+W/66AJsj5COXjoEFDj0EiR2iq/bTr0LSAtHyD86CFyAiIT8SvLKQB9qvwN/RIVIEHkhL64bbe3pYZe3DaRO2j7uh3X/O8QrRRE9fSD+JIDGIYhmEk93gdX0GSRdn10OZT6RNZGUZpIYyirZJ8SIpeqk+7pnef/VSBC1y6y4aQ4jrOgDLODAf8lOD1hJAn9rO9Q/GC0E6Vl8VomfeTimaHjrhgOEDPKglktYPhJ+JbNeMkvE2nh1slnTmB81rN48rwuSzjmj5y9gscH6y/cLHmNRJUTTPmN+5XUpUUnVhLRH4JS5oI23Zwyq6an5+9uTrGIXJtgyvNwHln1LOUM09n/vBmBNZo435zT6HqrFJYElq7ff69IyQfF/yEsgxlSPBcv/2jCeV99kyVVREemKox2aq+7cNqFYRQs7mq/N+P/NqPQmcwu1rlHmRRQuEE7RaKkkebrcauHnzO/yEyAjvFuzph10gmv5/M2tlLQ1IYUijYYgSmkt+Qz2zRilF+n+ZWbDwMF8SxEbQXMGl6CYj+b9/IOPT6RXrCToFAeJUifq0rGG+dl/qtQvW1wKnDwHH5xaTHsXTieAszoR5XUQAI85tYwtjYomekKt8+SA/1TnqOYHTNtZVm+FjrnBdaEN8OTCpdy9tpM6B8K/W02v7RiQYNWAZANs1f86vxepKox/SpHuftkGiExH0Cbjd3aVwu+kfjdJ8Mnl6UnHtCLKtsZnD6t616noJ8VRRXhcQC5CfP+G0D4I1yNx07Q/wZP4KhG2xBgHVzWfJ6b9HFNq0cLf/iJ+HoJm3QuDwmfi53/bC2JmHYdm/34Cc0tSkYehrCoODFc4CVVR6dzWWeReSSbdQCgaHK0qtEWh0OfvMnbxX3dZIly8SNjCATJdQ2y805FT3YlpsHqUdqln5IYTdMgeZTwrBa03yi3xF4N6gaHNBySRtB9FogFAIgt+I+gqR5uDcVReRF0WddYZT43nr7rR3rXlWoXwjdAYhQngOipHX4hPZ5W1OBvIj+EkqmSSFBx+z6h7vX+mzO06rirKVAo16+uO89ja4gDt+2YR3gAsYXs0UXNeVqBuZazfnE3vItqLPPcPCBLNZCpQ3Jj/1EtIDaB8tdN6N5uBoy3pzM8phrHThLC7rkiQdn4yy+BsY8c8cTz9szU3mucpF5pdVPtnOMPg6SzJIe2XAD8OUai1/C2cdbrh69lYFDHDhYIzkutvF7UcabnhaJj9+qcmujCLXCgGFvyv/EDEbUbipwPKBbFQuoOLBXIJzvWE/D7mO/QE8QTfi86IKV+gI6l934FBJxgAJeOS20Mxc6N59Df+EoQujzRXkGeXOaIZQW10aCfdxKHFcAytOiYXDP6U6WTQV1/bb4HVKQ9rHRKjnnifwZwW1JNJ/VDshlWvNR4JCrQGEywxXNuli3HD4kZATCaHW+Y0bGYj3uEDkaqgmWiiVnGJcR7+JqNaUs4MdbvmrDP4ZhGIaRuawv+NZ0L2bIgMgp1M18pB+l76wCU0cT2uISWAIsYTwtkP2DxG2ZGGEFtpy74ynTJwNsaHMHaRz8yrb7TAvKlLgxyjKhonKLN7I35PpzHdIFt9Pb7SilpFkew0If/36sjU425R5eNgmyaQxuQEWtE4A904t7Z1VtSeAChPlB3lgJdcDfrQ4LRnBgh9uQf9k8IbXMQT386tmO6qR+Wolwg84yfJvlzpu9k2yO8IYkIBhqHB6f7mfA8gmOXKrSPQ5ctPZEMZOfDKgdnP88s/ODp1u4klSsLFU6YaDeYKt0Z9HIvZJ/M5UIyWI366vHQkFzv688jIsuukz/qm6Puawv2DeyarR48XSf9cLAR3T4BUU5iraGOjEVqzCcnmK9zEUl0/o50DTvNFFt0J0ST0ypuZjTEn7VeM1vvqXfDR83Rzx5jAstQmHAiV/Ayq8ZGUm5tKKkeC5GqHBZbWBmpN310/a5G4CJd+3pxK9PKI7rWQep5NEYknQMuc6YNJmeWeuKMISLW+rBS1veKsJVAFYJ+FoyM+u+uKHDgCRoFkqvuiXukz87FDL+nQpN57NOAf1cgbEj2eS8Ktkc7DLk0H8zkQ2NR51DNKLsMUPhZvQBgzOCftsumKVES3XvmQyjS8EJ8WgCmk7TC5EizZOPEN0H3y20+uDjiRajETh1BG1N92Iwu3xPQHs/gOwLIk7x/vfFVg0g0T1eUvHD5cVkK2ry+v7COcYmNa0KL7ihJXnRAX0gKkSBgGs3l33Lwh8NuhZG2Z8LHTUwIr8KhANpq5dM4D4SkZccSEnBudtin+OPsUaFOjS+BjnB9vLXHQuXZkZ2tGNdI2y0T2OCHkDwK0csjvjk6ssYuX8qfx4A9s1VUUcUSlp1R6OwUuqFCd0jjBwGYmZreoEBSXcI7CG/pmS7lfHdxcA+CEif7FQGaUTF+MacV/0FKpVn2kzKksCqz1hGn2GFtn2zEKZ1DysvY3GaO9FrPRXVP2Mk32PQhVo2XKaEviQ9HQpkoHe3mH04hwyIHJU9QbnyNEi5BmBYpDSb7PUXp6K3j56+UavfNEZU30aNzTNxfviDCXhWAvPUTnp4q+qIsq6VG/mpTbft1gmimj5neDAl9w3axgtod8ikNSp6dJCOItggeImmvJ0FN/g6dIqa8DvAyDs/NeWXQYnnf6InBlnat2+RWEseFg2yYifXbBxHjMQ6sQaxrxKJ79eJ1Rq1CsN15sTj7RoqqVn9Nm43GcBxr3IYlluE2pDUANwsLP7KU4RJgdnW3WtVnoX7QbojSVWFOFoFnJhudrluIs/v40mBPILBTnZOT8OIhH/qcrWhEpOtTzcZPqTPe5uEdupQgSkWGI1kdq8NRDoMwzAcdkvluDWz0r0avAOEnaxlbNLkY3ThHtO/Ev46/M2dhUQhxcfW+67YAX4kmQn26Cb7X3b2JWbSqAG3vSCmjhRWNaEFD3Avzvy63G63L4rezE+q5ZWA4aJp+a/Ab3WNzhplTsFtQpvwUAArEkjFsg9o5mW2bGfnJUV7lGqo1YXXbrvtrJ94aBZSwcdSMBBHO5Y0xaRIGW04P1iPjiNWju1Su6i/N6cB2D68osavAYnLcdpRTUrAZMiyMQFRAjOb2QFNVEYcFKJOebRLq0KIBr0IRF4wUAY6ZFYUPkGDScwUdPwF6s/fVY9tL6q/FVz0nXbfgXM8lhJszx62ViHsKhfFhlaIBox4oRz0TF3q2hfl3M62T9sYAKifumUPs2lFoilMfZLZCqW1CYuCJ0S/z32uSsxigsHkW9cfki+hdv89kL3M1psZZcsaxYrkXeML7j3ZMQWBgENOqVOPeWa+h3V5pXk2IaNp3kNSScErXd+U1yP14wyj1A7NnTsgWE3zx0Q/Fj+t7DR4FNhxkx9ZCORKbMDbjWy4uLmZwEQVAAGuek0KyXUpYzC95Uxy5cPM8uPpt+pzYIWAE2NIpojD4W4TXAFhtgwUApKxJd419A8XIfQHf22g4VZo0wx9dYmaEXonG5EJUBGrqAygP4CKQy3hUsMUhpiT3A1MUF+s8xoZTogFxyMU4nIgEw8IPCkcKaQSfVkLJeqP11cc5ax+URYyJYNBlPEj0YdwpIiIF4gVo9Tmpb78Ssz2EJTT36Y8hxksc0RQyVkRGladAGF/WH7KnH/dirnj2uz33DQjPZSV7asexSp7R3qgIzPZIE5rXUVx+9paP+JxCkQjEPRUrZrZO4h0WQKJVXZQgtfonu9PM1nBvMGEXy6MkKeQ/rS30tdGtTwJnNnKmeNJum5z48h3ltH3I7OIhkB5n4QcM/pyrFrTFltaDaAVlrg8VbelqjhIAW27TiwWO7juwo1lZyfvlMKJvLCCrNv7TWoFNeUh4b/KRSXjUNO7P62uK1afnJpkk1tUMvao4Ex95GNO1eM6OrpOalSmaExHue/TmYEHOEuEc4pL8qQUg3dL8K7s98uDnBDUL8/HVUtND7vAkZlCfUrnq69A5S0LV4EwN0U3P7m+VtK87OBtIBUvzGIVy26GOM1jO/G9akzBWgzttT2aJmlhHm9dI9O/bQVMYrbhmWYtieTVEabKZfpeY7/gcSjhCWyXXNCo16lw4VqqRPB/yBxvaGEd+8wt4cPWR4LP2gw0nBNOVYAsfKL37evmSzqJWwEgs8zpEljpqu9fwaCyivwceT+NmWF68ZEfHlY5tAJ49nlFHroiYM4HUeWux+/ZXBriDZxI97EdTUxk7xzaoDz4PX5cKGCpbWUVUabajTVnVvJ7Jj+QtVPdltKTys5f48fLd09UDC9MFnj78Nrp2drhY/VgHJG9WAIvFPax43adE8r2+YYfH5UqBV1CIkpnuiAcCPSuAGpXWgm5/xqBbOU2yX3sUI8GhTbsVQMU+n/t9N/8f8dsGBtkeSZICZU/yMIIYkLlFtl6JnBA5RlZZwRNsLEsVf43uXAr2SpHL/prtMbStRNN8e1gk4Xj2pdrLCxKf3yQio0vzvLBT8M10vK+1HgTxatr63zxqLvGmWXp2Oc5LZYurPLTd/01BmNp552m+Mc3m6RVXdteI1uUHp1KxZWds7x5NVwjlh9Kc79F8e7GOteedNdYW5ZO/Wt2RW1rlUd/66/RGUu3/tIUR+5scuZ+7ck1lhalDx+lYuvKWT77Zbjm7+3MSEri1N3ggQdrR7pEqNxQRk4SzuKPlWXux8Fw3qd5jaXj8mty7tzqvIXI/fWPPvnrg3Xc6o25e1905/1fEx/9tEx++WpzXppDrjWtPSStN6t4Nlrk3lzrz3svxZVHY7Jy6ey8M03uxA9DcuKzTWw0y59yly7Wfjrvj4hfvlskX26tzxuk3INnXfLgnbP4n41lbuab4fz7f0+PnLzy70C/RbHTJLNYW+PFjZTsrQ3R2i40edDp4sTdj5UA/Iq1Su6/L0GveXpQesT99PiWzU5TMrG25sWNVOqtDWltF1oadbqcuJu5lCz1Obgi30zZto/4NaUaglnbpN2N80ttGJL9lhc1Hefv/HoWkfe/HJuWf23YquFXhRYX/xdbNrl8+5+YVZu3nzjaFM7DlC5q0a6T7rK+6r7Uj/3bXcNVd6Af+HXDr3tc91d/bWz6af/XwnTbvw1ZDj/sH6Xw/69i227ffitKbIRdzygzuTUtOVrFEG0ffrf04+030r+RNpOZhLd3hJANIOYCCGaCkIyChNnD3Cvaf3IwcNEBq++bLb4vW/s4f8fXtV5rP99fDB/Oi9VoMtZ2vyRQLdJ8Q172lCRHy5k4K2TQJAfGU7//Ntn0mbI0Xuz2KcvbvkbPdW/bDCz1fqWgsU8d/K6GXmxgTyqpbxApvsiYdhD936fc+5+D7n9BNv7XG//0bX99BhgdkP2/uNtQycnGPnK3FGbfaFwrFaX3B7y+dgrGooVXVzDlHW2tiTcpoKCJHaISxZIHyr1/w8+Xdk4SOuxJRuaByCxxQmNsSYnOuCVV5JnvNIn1LA1dYm/yh7zixZqG9Qo1ABQS2se9CltSgHOIVoW0Z+aCfj63E1x+oMPSJbhQv/jQEC4w2qB3Vgj9/3hPNEFReSS3ZpXYh0SJiTm0Si+OdsWW1NBWLkhKlwEggUkgAQJfvB4FXH2ZmR7XpJE+c0Oa6I0DyRiUuw+oMx+yjEmn9uou2kRbh28jH/jp+SQxuKx5rpkfeziOXKbdZ+vQRL78by0ZnlRK7XJGtBlqibHAVg4B0x55AXEPakQ+QoQKzyYxCEStUDupy6fGhXxPmArkM4gha8twgXwN4RSe9sgJIhaYAsYzFLGMaUAeINaZjrsb5G8Q3uC5l+JQG6IxqBPGTwhmOCbkC4iHrHXwyLuKkKjTp2cptXFGtBH1G+MBW7EJ0xNyroiNojrkmomQ8TxKDGKIeg91g/EFu1QkmM6Q1xWxVW0dLpBvMuH28FQgR0bEF5gWGH+jiHWY7pC7LALaefiDfJcJ38NzksLgDdH0UF8x/oVgD8cGeZsRO9M6zJGvMkJKeBokbXtDtCXUf8B4gnM5TJg+kZcZcW+oS+T7TIRTeK70DCDqgHoldbmaczlUmA7IK0UMUeuwQN4rwgU8PSEriNhiEoxlpoj1mNbIvSLWUTsPH5G/KuFHeL6WwhAKohmhvmOcMsEDHOfI54p4iFqHgHypCOm0qrNN7cIQbYd6hPE724oVmF6QR0Vs9qg18qRE2OH5j8TgIOoC6hbja7ZLRwmm38gbRWz32jpcId8q4Qp4OkNuFBFPYLrA+E9WxBKmG+R25tKlRDsP98gHI3yC50YKgzNEk6A+Y3zPBCs4euRiiF2vdWiRvxhCJni6k7RVQ7QT1F8YjzLnckiY/iIvDHHfo54jH40Ir/B8LDGIIuoB6kor40J+EqYT5DNDDKW2DJfI14ZwAzx9IidDxANMLcZfmSI2YnpAHgyxLum4e0b+ZoSv4HknxaExRFNB/cL4lQk+wfES+cIQD6U9B5B3CEHH9CPFoTVEC6phNFXE9pgyckZsAirIFSLA86PEIBlRZ6g9xlFdyM+EqUReI7ZBW4Yr5BsIl+HpgBwQscIUMVZKEVNMHXKHS7dc0c7Dd+Q7CK/wPJfC4BXRKNQR4x8lKHAMyFuI3ah1iMhXEGLwtJa07WZEa1ArjMfKuRwGTBPyEuJ+RE3I9xBhhudTiYEZUUfUa6nLL+ZCvhOmb+RVRgydtgznyPuMcBFPL8gqImZMDuOpUsQGTBvkPiPWnY47j/w1E34Pz7dSHMKMaPZQ/2D8UIIXOC6QzzPiodM61MiXGSE9hYqU2mSItod6jPFHbcUqTK/IY0ZsCtQGecpE2MPzh8TgFFGXUHcY39QuHSeY/gF5kxHbQluHW+TbTLgSnn4jNxkRT2FaYpypAeTqceHSRSo0L+SRaSO0JWpsN8acluWdSplTD+1HN91ektWQI9omqstfape6LFvaJqpo94p8MCe5oG0yb9LOs5fyU5ZnsyGeWbU3U+7L8svcBmbKCfOa87KsrjNmaJeGvDGHtKxVTNUeVJmV5Yupcsl8svm/BDNDOgpXoiGFuduSptqWrWin1y6JdJ0qd1JqWruGlGsl7tJ1MLBLMcXOKTdSQu7yXaLVQRGNOrtLbFPdKLdSwj6UbiCNtdLfyl0waJd6oRPsRUNTs3sjWe2Cc9GCPnfJS1+bJpKiZUuKkDkQSo8XkrJEoUGDE1TWtBqTVMYirghbvNBuw5ZRyOhxc14rpOyR/e//oYXG5YHC6GzCQxOGMPpQIIVtKCJTv0vuOyz5Oq9LLdjLz81CJ/v1a1N2n50ySUOS32WX3KFb8YvaS4QaUc9M2dz1Gch7p35vnb0jcZIu2SmcTmz/ybbGz8rxcnMHn265wk/vQHx1zsMUlc1ioEzLtp7a56Hy1UUPlO1yKM6G7Tkph1u6hfXiNs34uv44Tr329eF/D78tGt7SfTq5uOlPls2LlPGi3XZ7yu66KLuyqafyoWqr/+2HY6yI/w/paFi3D/qR++r16k0/px8Wja3766J754txef94aIoU1eb69Xgo9h+Dts7Px8cw33ZP8Wdo8j/xo29Nf1VsV/svLS+zdR/u9c88nvp/zpPq6yKGi8Vj+dczh835mG5e5jvl3i0on4tmfJRISyP0zHjUzzl5UsApJvEFg1YkXJsibyJenmeErNhw+p2wuayTw+8Vc8KsBrYjRbl824FU3uoL5PnlrNHkZ8SwIxTBElUR/GuftGNjd69gw4xSILX+3lJ1s64HupKJ6shplL/qJXOfWe1vq5iFUw8QSClxcyk+8ZtLwZtzInHChK5cTerXsZQGK2ypSF4Y2qo8EsFgPMWL/OuWsgdjOl2RZKSsypUGj2a+lmvQnHFmwPc4eXqz4PUS+QBx5GuBB6eR0vG8tzvOdxg09vESwNwWFcx45NSVPi65A38/XzEKQ9sRg6NuHl3BLk/I+Ao380DLb4KEa72ky+73rvOUmr9+iVQF7prvsMEVK3A7/IgY2XP9PFqhSftKMybovOr5wIP3f8aaycvd99aU7x4Jmt+Q2o1duEKEs8XwVgc+trFc/k7MFpEAlVD9HO5virqb+hQJcbsJj4KXWkWZZ2f/eTdm+hLKwyvGMInxWWqjh1FNahvQsVjKGx5X+Rq2c1b5IIweWba69nVhmn/vkShapZLc9YqjmTxwV30RvDfF2VK66UbANpBfNEueRrR5w7CT4/bx/8L/Bxv3T1e3n/j2DXcom8VAo43ipWnb6PlW/AZ12/yWYJr7WgfvKpwr1FXecgrnn688f6mloxPhpA66m5X2caLGKwt9MvdvTdWu/Ua4PZ54qmI41IZtuSdcsiH8oWTk8l9EftumtR1FVTsfWRmDy5zfN3Y99zvFt190nm8kzCOpiySYepOfiqIzHGV4f/g68d3XGh7dUzIrIs0PW/26Z4XKyUij+8zSXrz39IuIexYxniIzcFWBK7NqFk2LrQBx962g3qCToj1fN71hInwGPBPfWFliTeVAeWKQxUX1FnMLs9ZZieDarGjOxVF6TDMK2eiqGKncOniRn7YXh7lpaniaC+/yZ3JELT3g3s6galbMyXT5xysl85gIWzD4FdXlsqeLVCu4UUVtdaYfANof9wR7/4iRkRJ6l6nLK3dZceAOBVNVIshb6WHs0s02vGUjf78iQbabMEPxviMGPqVOiHYZUe06vkquoJyJhpKPhslqsXl3pdQVG4qp6nFGv1Du6zPsOiefKuumJp1p8jYxtLlqANKQ14/4lkQWUAq60vfOrDq5JJOY61nfFn3kb2UUZ9Nnqn/HHzZ4VlRTRHT1umnxw6U+wuC9nRNBstRSvQVkFzpY/TLaeGAbRz16GXs3SMdDTE5irmRVG59ikDwCnsA8KoklyWvrzxODHFUWtmnsmL+pLL/Um9wWFvntnmnFq5AsavUg6VTXeDn7UHiy9W5D6tJGzGbklbvL3zS0K0SRbCK+KSoMsyx5LnOl0btNf8oMbVlPh3EEMxONXlt8ScNg7dpNDbvc7qZPBOW4UbuesmD3AHgMnQLFEcm/Da5P/R4AnqXVWAxYPx/MeN5xFM5y4eL0WW3uDW5bug+uO7Fz5eTp2+LfsRuB39vSD3bzhwfOmHVm5/f7v2UQ8rUU+Nc++pp0D3d/thuStsubBHiyRKCD1cWv51tdrclfCPV7gLcrNjfahLbbM1tztdVfK7m4pu2RMro6jkfrrrYgm8h4sHmU/dAmx4yObIlebGteBTNfWeG2r9CIIpC15Lvw+P067J286cgv3S1eANltj6ttlgXrGUF9uzK1cJlNZAmKeWkP6yB85lWnQPB7182NWq8g8GKFHRcBSEq4kWw5JAztlX5vjfUp3DIcu9TYIL1tWUHAkhqvtoxNYNeze1bOZVVsfaIN3vu5iZHqAyKoTPveoxxBw+ewqwOBpp/YHREkT718sFbvGbx7J7UBwZ1gw9CgflrRh53g8hds9ds37oBv2ZOB/WAA0tKtVB47I3vJqeO2TD2VfCAub2VC4d92aoKjoa0onroXXLn+fClX2Jsvh/pgOPj/GWhP76Q+YcnV61myjMILJW9o/bGrhMObG698aN6GubLmgo3dclp2bsbWHT08rZcrYffEjwKbQVJSxqLzwCa6OqVyucsU2MgiCc2s5P1HQWbzCK9Cr0kCy9/46gtY9ta5bDFhVivubqggtzz07Vu+EEC16z9gJi8eVKyHL1UoU4NLahPv78HqURz+9DcTl3mya6cC+eD17trGuOa0qpPIBIfFfrq2MY467ae/M42Q0EkHH9ZmswA8wTjs227T3jWXtdU3vJylwVOoyAybc6Rfn2If3flSa4CKol6vHuJWkKr1X2EJeP2j2foo+8rt2Zs21xRn60SjT+FjmVBbJLPE1DrzWzR4cOMhsTQqD9Sh34rlpc7PXt1xZ9FdHb0vP1jf/EXbMJb7FUPcOq/BLJv0jqhN1/CvrnbCnscU92sVDSXO0wuEmeHg2YjiKg+p9Jia562X9VhMHI6UPQK68OHjj5+zWIUagauwdApHanTurP62zWn7o93XSWYeTOngDu3ahFmyszLksAp4j7gb6O6RfpaZ2RVFSr4wowzSP82IIfwUhfw5rCA7K2xhNJCO/qBZsBWPlds0SKi7fHGkj2L5++3Vv7On6P50ZztOKqoI+GEquGEwc6pfLYjRX1aItGtD3hJbeUM83PB9gigG08bileigAVFmkcOkvQ10AwxZJwTFXpQ/ZCAKWpt5ECvHeOTt5oeu/Ge36D3anPQ65MqSF5D3vnQcoiIDzi7fclLx17HwT1A2Ht1zUZxJct1VE097TmfmthWx2q1ec8LYMZo/rrrn+LnIbURsDmcvDTn71ao1DWuNOOeLl1lFengAkSrO/6nZf+y9OsL+6ozTuad4pSHtPD1/Bv23vguYzMGIxK0vhnhuJULZY8ONvOr52useKOoeQLQSn0O/PYK9DejPOBjO7i7z9X9ChBOJ0JRLhOviII3ex2m4ju7gamVe9hm/H2S/2M2KTudBG1BE1TXnc8Og3MauoGwY6a4h+HFRsf41O/OJ8yZN8vPmz5q893SyuV97GJb8swue/u1XZ98/Ia3cVNsV5q8iTYl7OYFryvdZ+M5XJWF3BHqVi7zO3BYD/0vWJRo0gkYaZbMwrf3Z+K89LSZnw3QreA3mXgh+sPDrfGryXRbo31vzg17RlJHKZFq5jlz9VvRXYZ/9p5R/r2jE9zbvN0wyQszq8Jl78VdHtTX5jhfkaTwK7J5jy5qq9W1gag0BQFhkU1d83Rtc1CTSHtOEQAjkwrQSGGu5jeli+i+5bQSO/CxM1I9uAit5/d/Ku+FeQu/HS45jaR3+U7ew+/+LVbIePUgGTbL1wbkdpzv5NhYqOalPMBZ4s5UT+Hyy06pX2Ei8SD6PqXc6htUF7hgFI3Hkd00Cji9iXTN3uanvWs7fjppu13p6HDLSskmCkte1c8iHHdqXyTFJdUaFYad33FHvB/RRl1rhL0i0ul8mx13pbtp6DGUjR7O2976MNjlIt/GnqHtg0/hpQF++NNonbMMhZkqR+e2kcS+y+W1XCxzNq8+jVUV+6zbU3wuUNJhBPLsYlJN1qfbaPVLt41mcM+NQ3nhSPA+adlTxVrefVT3336v+PO4zaxY1p1YstvWrDNUGkpuGcV1lcgTW0uh8YyWeFdvvbfPL0zbZJNjUl5xIJEqVK1TWk14Ak4uehIMFGfXI1pXPMdE4DULHkGgp8E35K4nhoeVDchyU14XIiXFfKbZKOVhKzqdeq6ra0pSyhf9UPh/+lqU2GHiHFPTyVJd8Xxha/mDDMhSmyjf8zylmQOn8M1dmqxQeriy+CS+Fzn/Qg3rktxvqdXM9NOzvE44xzZ4X82IKrfNdIPf58AhdWVwkjODg7X1oBT1Rp0sTDlScuW9Ljd9W/7HxYUVlflD1kbtgfin/rJC7dPN6MXMZwHgaoLCO5F0nq27TppE1I98rB35pflB2PwstKthamO2MuNjh5tudXkmkja18pznKPI3wd3h3dy7REXkc5a/2nRhSa5v+Zn1n92PonnVQjTiRc/km55NBNfrJn6spzq/7+dLnkpORizcE5Vkdb7Bv01y7WV8rUewq03ZRaXLNMyI0HPHor7RfSFZBqcLJ8EHleQgVZOQmsJ4Ir0zqQqjTLbSrKs2p+w9GYfJBPVyCn4PgAIsAkPbJYJ+rpheL7kX1xmtsDemHYuOCHoNZMYaznKKJbTOd+vvdaop7Wv39oDXKfGeZFl88BSCp9lBJf8WtFC3wY3tEHn0xxJci4XsRijVfOqyHN09bQVhWTecd4fpekVL9zN+HGLpA5oLm9LdGDPaeySGBcV06GDYAQx+893alFGxdJgQ5xTNATP7F7Ev4SmKXrf63kNZhPUfgu5vgYntLYzd+U9mk3w3es/FI4Ui6M+bwPYFs6/WTIS9eVgJeL2yoYklbpKXvqKVz0pJ6UKE3YO4Z9qwGYJCFgfkg3JCC/S56bqv2WuKjDu8u1JUdQQeuSw127vzFuCnWPr+oXnkJkdUeV5T4qzQ0JFqER9CMfiIcTTqo9lhz0ADyTI8PF7ZSDiQkaXrNJMVGiWKpnlR8c5ZuKKVSNSnpM6Iz2ZPQWNe9DpbkInpIyvY9JnsqbhaTeuB1njnVpwTyErqJ/y5KagY9xJuWX8HUQeomTdWbUv5ud5QQ1wb2Rm/6ICX6aKre2IW38RJpmpkInAhv3biaqlcocxxFMAf28sRv7hBHN82M9Ki331ghlkPk9TIJstPrEKppeIX8b8lHNtFMPRf39DhMkNqjB/qC9uMg8YOH5Izf5K5GAhzYy5QP3o0EOsADyvXvVgqOappe+pQ0T8RN0vJ6mQBMl67yCu7AHvhQ+0CzB45hkGxBueq6Wwg1r5fLoRbgXjOtLPJPltEw0U09k6Ffk0jS1DHVbM5K/FpPquc30DRWAj5uvf5pQ4JrPSfbhVtrTpkgMqzUrqn+211dyJabHmjH+YSSYfl/rLdexJGF6UirJJ+8HW/qCyOH8u3n5DUBi0gLcBfcuXxQPtkpBDNr0TPLdZGBVUAY9VaJftGsrxagofPKYGQFnbfbh70sSjcoZpfDxjsCTrEB+eDVkrm87FJ+gmqeuFpklGtfATpODnNwkpda3C9D/XYbZlbvdkAlonccE3nboVl8MA8jp0vE4X0u9WqAQvrIJedi6jLK5VeMuU+NyZYBcflwRWeJc7l3hhDlXH98o97lxkc5aqFGt6ix/vDXUqBA+8Czt3stt0BtYR0mqHB3DqHMEbaKgpl6nd0fOc6lfQXLEL06YmNxCCLFQ5QpOyQMWgvK1+x8fEANo8lgEj4voGO0QId0DEPIgDY22eMsp+hB3+ppHzkTIJboVhDh4kkxuDWYRVODDG5IEhVDLxYJ/mXqhhCTWOoMD5CkUK/E7dsnMAcNyoVwKT380uiB0ktjHskeMmZMKaFCQqmJosmgI+Yu92F0buiCMdchakWMxvEwn5CU4T+lGwD61/UsOeUo2zGoRlN/GEGGhS1a1dGCZlQoGdSiaQWW1p8YZ+9wQXzd8nU+ISBTLE6TRz/whJE/ET1EfnXzHFWHMHSXoNlI/LcQGs6ISwkrs5MuqjUCcBXnP73tPjXvILLOmr6A/NJQsaj94NLHul5FVnqO7z2Kkw2zhUb5Rh9GMJ1Qi9wzXsXcYdLzV0Ou6XExOOpwmghJuU0pJWtVqHWAAt++NYlMVzHQil5fOQHN2MI9KkJ7d7eVgmdZ7mFrP7h8tz4HBP983nDq3lpvs2IaLFmLGhTL3ENQM5XweKZidb3uFHCXxTw0jEXwT8GyWjsQFN6cXFCXBEBaDqZyNyG4kEJOtbzB5TWPdu3Ra86WB2C3wO40iKUtOKRewVYL5xsWBHpV7JIIV44OCEh4hJAupPfm/77jnmWh51j/FjOI525Sgqbz0lOMPRbqSX6Te6zFIblPz8Jw9yFzz9kTOnLeudhuQWxcEKGZuMvfXL/wCd2SZudtVm7Z9rnYOvVTxzxg2vTvSwAutKxA+49r0benCcogCepqUwX7bbVwBakr0fpvBjTrK98/XQpQxvhhyoejac5elp62932HtrAJCzYvPM1AXRZPjgHWsdpgPbX772gbAx6XAI5M9R9bdDnMtHg0Ni3ogclpkpsw/h+AJg97F16QEYCG6sR6hE4V9UTMvnlZCTMNhP9izZd3OTDNFH2xia7ybDMFmX1bEfYOFLQZL+Mb+zQjvONSfMV8DOEusCvQKKM4idKkoWQBdMSmYPi3uEoQCUR2leAvtaAuA6hMOMDeNaWZw/cHMU54TXRhE/YJkDbD0OuKoKFpdy6Vgo/fUYYevCklm0rQUsaO7dbBhtX3uBDVhYK7J4IJLk3eza6ktZZAf4McUyLYOPZmfuAL8N6eM75GG0oWyY4Og5PefTDrqf/6RpGv4ns6XPv1CJ+VjKhkLShG5RYk/urNpeFPFds/ypdoay+JxbsJFA4GKiIbhbDES6i5qkAISEyFhrgriSXPAlmgl/SZoWADvzJox1PEl0ZQpFGZg7fgkitSndDy9K0DRs1qq1spflKxkbI4XRpUZGEb1jMSTM22jC+lrqLPx+MF+Ns5gW0RytBTBNtqDZFKXZvQuHnPWmqwVrNC4LJPFqfDMAPNGmxPfi6vW45Z87cKTYsLOvmKxHPOrDtL/qkCeLRdnQ5rNfiPBHC+LNMMGDERr4aOhIw8DOzgWqd38O2AvTqQKMpdQ+AKdqedzHya0OxO7oysOuSSuZSDjASuFNU5Ua4fM1BxUCPUl2MCTwd2ZoQmbE5zEZAjFHMX4kDC+QU06LAyVf60WIqB+QlHRnrddOBpjWJsVjcjf/IxNWFd+C1VuQw6SJw1EWO53g761NSqW1sQ0+5T44S/xWePbayooKF5twwk2OcNrj9oKkVua/kr4HFSonc9Pl7qWdO4n4VWscm20nYck2xd0lH5qyGxB7Z39xBqlG6b/6Pe8djhykWhZMEHnu0otITerLMAoJ+kdUh/cgHb5V3SkHCU+JqKQkbDNtnH4r343geyFEToFcYps4WjodU6n3FRAokFyGqclB8vpaCQT2qwnuuAczs1h0UvyVjMEjUfxH64u+8e2XtjKbbeTvSAOIPTscymozdA8BV6qy3Cxlpt+A5baK4Y+cvBUicLGzm5IwI2exCSA5AFUI5Sy619hxr7roXp7DLqBOZpITwFBuDOQSeEn2SQ82xYPDh25BkYBCsDix4RFjZrAjbZ7l3YY9GenBMUlOUQWtueTymLkF6gXjWgepWevvoN7hKtQv90ktJGWfahrQRPmSyadThGInRZCOykahR4XVFnIlWAAk2ENgbTzhyaiwT7gRx/JllVlzbqWimdc46RqWRPqIQy28CPIDTc4kSq2X0DFalSgXYGf0keFqi4Z+vsp3Hoj0B40OZlVCRRC1Qm9H8JQGLwBP1HRjWPnaqmENcDYNGSQCNoD5ZnWT2e9OYpplx5I9VZEsnzxOMn0pQ5iIHB+DDLQsX+9VqCirU4ync/ZRqF2UD49AhVLfWYH9I9o6GHMyBsZOKHku8bhwZdvLxDDInmBeB/cvzOM1d3qD9Cuk4JE7YKNDwwneMmzQRQwsvw604QGtIgPLuSzYbWqujKtxkaAprwZ/AABLIpXgwxXBFkm3Z7EKcmtB5Edo95Ae8NMJfUzDVFil63AYIkz8EdaCbBckaQmgEmbR7CWJEZlEYeMkERSoKkc36RcYUT/F6Lp3icYo5yBIPHs8pQkFZ1NpAAIcQeVj99NoQEEDxIU4lCwb2maucuAT6xauo839RLF0rhx4ARiF5TtpZ+ccwwqDXgWZani39loAKsvTbS/lHn5tn6AXEnlF9nhdRpUgpcxN4AgmMF/eKYwx9B+EkCR94MgALyiZ4HXZk3F4SYueddFS5mEYh6ntad+Ho3Mcy8K2gHgQL/WvNTKmQfz1Gw2NaNZJLQEfFogI9m5hhojozPkE63eLzUL1PUGwNtynzUY+QO8lurk2DEzFH/B+j6EYyA//HjuMyEnM87usQVHyJ+kIZm+vIktRvg16/Gzi1AwOVTDFvHVeC1p3KA4EwWC5UAw2y+7r5DCwIYIrHChYA4YfBtVJsBbDQYTAAxcvitvZ3+2XoQED9a+Uz7ykQApTx448v9UYBMqttvkLATuBJxyOfVTiDF6PlkFnsQkEq07azssFXfbUwlGrnEoHqUsPWwBVbuLZNj/2ILR84ifAkApZnD2lseMxp30tKtpqgHSSOTN3g0xiF4EmoznM0ivCefbb59lpwT2M1KrWfOjjyLaYP1z7FcXjl8/DzKWmS7/3ToiJT+Ve6n4KLn8RIHoN0R0is40/dARLDDZKrLArqGHktAnk02dt37BPJ/IKtoSVhB11T/q4Qakz/R2w9oeYdjutP1E4uKUcOCyKJ8OkfID0clOUj1RWQmJcJR0DZHuEv4dCNwKDXF7OkUD7h6CIb8VmxUroQYusvca27f3MrckEC+zh0iRNJHOq72ecQ9g7z/oigDDE1CJuU7s+Ll59kScgUsx71geLyo7oluxUEm6BlmReh/+lyv/35wWwAUasdwbtLEqCSfhCiDbcX4T5BVw2iRLIF7z0yYaIxV/mzMCc1IDElSesEF8Ful7vPgu8F4BnBZPjnpEulIAilbjY3uwkQt7wIKnH4rpr94CF1DkzyweqgySAcsSsoFrxivouG5xB08pyGk8wYFaRqhB2qkw1icW4wmNZCJdjJu1yZIeXSxqqO65/uvT878IvAM7Ns2Vi5G8KEOkkmXEv6RWLPRfFRbvYiAgqlP5aqzvRArQlyRb4l1n4n/6YovrspnYufPxKbPBOwAhYEQSejoC66LdCJtbxObMfu2OJXIYmFfds9vYuLYg0H0jhE9Yh5BrPu5nAdhyOjccpgJNREfOKxr3lD4Ys0Y0Z5QVBc0fza/tou/qe5sSEZO1RPab6kMWjCd2Tyyf53QrgE8GsGUcwdzzg0sT3vPNv5cO0I5YuexPK2HP8NzN7efShNqjfar4hv1IU7D95d+utrLuMiG33g/wcLQFcXx+Ufe/X3s7ybjG/AlG8Khw4XvbIc+hgQ95reF9fBIcodfK8EyS3M+85fd81coCEPbFh85w3g1IHhnm/wRNxfmDrir+sZZ6z74cCqM1KTnX98x8wEWLjk8/jfcDBn/MgpQJ3cHl8cNh0LuzAFxKONDM1NWonVZtxAJIHhYLI/Ec1N2IEK53JtCsagda5dzBvZT+ZzJSJVoVmO0P7Ww9Ne46OUqGr/iyR1b3GSthWNhwX3Eg5/8XOzLuSiVo32E3ambWfC0mzySZuAv76brYmqaLfoiaGRrRDrOG/LPz5g6chXOrS4P9Ob6FOCT4qO4e+RnmmTDQC+V4Aav5xa1YAnpV/KUMlVEQWez8Nsi+2Imhh3iZhS/mTcD56dzyODPou2R8BciV3hcIWkhB9HpL0gee2sHxo1unl8iOf7kAuFn76l3JeHCGSeMD1iEqah8gmWCIiAvpHeLVIlMLlwIAmKqJ7mgQZ3pTAzgzRHoPoa8fqYinA6Ya+ZYdBEP++/31s43hnmTiU2+t6K3xcVvGytYnwVT6XrRK4hu2eWoxB/AnrGgB3HmBVDoYdZeTmKHmm3XicqhuzOGTCoiyPQ1TPdhMptDJwMlmBmPxxk8zLhXV7sSl0k3H+WImwuXCVKyYsH9tmfYmiAMzRmDmp75vqBpYJBg2bY9NdNeZCPDvvdNM5hhtDDf+gh7gJ1HPX0ppmGOLyPL68C/OVWZVBQm8K3QKHRLcScS8h5Uy/aVP48w6l6LiUpSFlocrWyWD4rYQicnl+/XlrfjzFuSkyNX0+IIkbdSbRTixnGEV7/2QBk7y7wMO8H2pGZoNHiDbWZ2A95p26X3wu/3wepgwM1Jh9t/xsYLXlHcGy86hT/XaGLuKU7mU/EpJ9lnIhV7nFXHe4r2RJIzt0AjP3WVKkyc4VEU88l0PMXghkwcWT6/SUUBJx8HO9qu1nnzR5Xw8qgcCiIXU2ZpCkBplaY5+qmQc1FCdjiXqB9CKXdN7BC968Jm+P4Rt4jrCc6d0ydXpG3RZQSGpVGvybMEjqF/m0bOUl+scWpnu00v3FhybXTAT4ggNYomWiVbuEFnci+Ybd53C9zIwW3ZGAheHv33bSASgnlMgxAkQbfUqvqIxAMNl145pCyrawsoSs0oS33mCpfyR8Up+IDNKX0yFZVdscKimMYyuQF+6MaDhCdsBQ+/24VNPEEb9Btz072lz4mUV4WQ6Cln9juTUPc3nKGPUA0xWZz5MWS6QLUXux2qqlyV6vJBWPW5mI/U1vvoJUz7+XgWxu7VoqTcBQJ8rjdOx6VVFvd3HjlK4TTer+fBZxwRHb+v5rDSkXime9IM88vb1IHoeRSSJ/7rItsXlz9xIuL2WHPEsMdt+MhNmm9avCSnl12IF2SQCU33rp5ediANA6BWDHlWmhKuswtohZYEzavJJtm0iWvKSnSRaZ/gLFncYU7qwBNU91ImLm5UX96nT558+nCETghovzMQ4md4G5/VULEEv/vU02trVnpfoL1E7O9RzdQynyMGVtj6/Vmd+OJV1xpzLzQIhTacUNYESK0o+qw4tRL2hHWil4Lo1uipuHYgPDOjnMCq4iDTNMzq+MRh79SNfOKrBdIr2Z40GoUZVi9zRzUZS5Ovz56H1zz0xDSRfJo8l40Nz+9h7J70CJMM2sU4sEI8LXM62ZN27yFY4Ox0XDGikWkVbnIruXQ1ZgncTXKZzvs8YEL1KSGq+/VphxtRAeQT9t6LdYRALkSFTiJtUGnYRYNRpNGwDrEzT8jtpiFZc4U4b+hIhCZ2Qw7McqTtzogtqH0uWZDLPuc5qvFtvA6V1A2qgJNCnRf4C2SHtFO1OZ8EgmW/li9cd4ysb07pacfCae1kwXTT28pndMa1OojnYT++UmnqH6coQn4Tgb0T5hv8fYyUajvQJGU/sIPSBYTUmHO1sZzlPmuDQleu9FqxGfBlbQGiNrWJzKlz1LM81O8we55rzvk3svL2lEyhzxBi3lNKpfQ5/wnIp9LTL5s3puRut2lWRglDqvXsRQhJnpgfOeBNFzaq5LX69zJ58+hl0N/Swcc6z48FIOf/riU7Te/LmbLGUECSlKSEDAj4+2TeGaFun4xOpVL6Gwvn00nWWfE8qydPSWP48sy9lvkZYHeULUf55CDmbO5xGQuSMBFuSlhgRU1AWC5ntZnYjw14djBepSjCYZWRq2EW52aS35zQu/RDWOTTdpqZBr6uBRHCKDJQ94VDCfcCW8oAjiuaBNPYlYDiwVSNYtBBlYckzt1bsijsdk9sEGKv3xJ7/0zoUXrJZWYmtQQpJvcEFsFfwwvTWULeNcOh6/0CnDMUjsU85QN0mfuHfvmJzBdujXkPtfEw/L4fHp/djHYynTKR517HFK0sAcK1PfVZMl6L7zi4ZSeeFqUFJLqtoIMLVT+QHL5m4Aa5onvitvecLcJo0GqmdjUcLUoEVvep+6M/77M0vU5HSv3YcY+5S+jhEoCplrdrIAvtnlgeS4M0M2QQJfvAG66tl6CxPuLI0rR4zfwt0Fmp5ve236FGe8/SOzaaqa8E58yRWVCb6DSJlLgU51RgGGxkhU6MtChJgVh9vHNC+qIMSFT8dqLOLy1DF1vLDSwQDvYtdf0GNOyeFd+e1ypr1Hh4w7/ResaBlQreK/WAGuS5ASXWO1xjjQdVEl8NBNoOJEbFaKsivVwZZbxqKXVjpT5IycqfocV0Dd5fzD9OvSijlwgGbo2zqkaB4qFx+QzHpZO5FQc61fow7V+skJ21W4ai6flLr/UyguoTN1pIQ35RUbAf3I7gAt3aW4a+p/QelE368gswbKRSdLhqHwlvx0XGQrAxl9941GiQpqQdBtqGgTfnHj+TFA6xKzTzWooymzvMSuV2VNE0AtVsQw2fq0q35T5qxuRmzyPZXWD0CKnhc9lgWr90/8DZp+riBVX9Abx/KMYXnO6mcCArC6GMhftSVRpg/z1nHTYurdqzT8StCZziLvNX5Sf+fpYgCvRgMpeAJeuSJgKNfY2oFoAU14+ZyHiztsXHrzttuPQBI1LZKWXGIOPYMUSxWLyYwCOunQb9kCs+LCq/vqpiRzGwEFpiSFpF0A1v12hdZickaewYi1X7r/vxMqOtI2dqUDuTcniC3juK3ykAmeX2friVn/MQgwAOz1+fiw2UrAh9WDM91zATvCNhdWRkz8DGiVMEnGj3c6p4TiH4tUBSpupvQkg4qmBxTcNd86t8izbI3wTdbNLwNFP2LMmFN9vwIQJq2e8785+6YjOBtFoMrHJX2Mr/SBSbZMLssFD1dmiTElNj4xhDDb0a837voIdfBaHPuDZnooGLUS+8x3A3zRlf3ypwYEilnUIgtJw30oy2zIokZmP9PZN6XwyCa+0qrQ6mq/F/5U72qABWtX+YlJeMop0sgA+rib2p+Z0SYMsenMh7WXcAoac8Z2N6BleM9C72/YJEY79Iu/04pqYojL3Vgv+FWuuXYuscQOyKAFMFpzAqd/txAKO4aAKGmqroM3245aEsd57TugXvn1LWftsN49W9Hti1V/sSXi2Ut7nupHXF1lqfTmQPGFQ8Jr0exqNyj9ky36ZJ2RNgP9t6yGd3fX7FKGww2MH/HUaz9iOVRFyez+D+KBW84KzuYh9eCCoyARPej7TCU+5NDIX8GC/sMK8iEvRBYIQ/DU7exB+MeuDJFp9r43W0xAdwcmBq1z/Ntdc8FNKRtoWTNOoc8j8UhJYQQnPsB+g+XmvpTpbH07kHJgj3z1p2/aIXGILupzRD+joKRFFwd2dZ2JHHJeQpCTgb2zGE7ox9HSd8wG1FBB96h5OpKHBQzNJ7GqGSoku71eEOONC2oMMulyIZxh9odXlFu8WhWPucVk7B1d4r4tYfMO+8WzibpFsL+/u/1Y1aQleY3xa0at5C7k9IilMt0/l95XtETv3H14d7l3x/xeFXQJsj8u5BW7KP6Vpp6JxqBH7dJ6YMF9T8+4P8wq9jQbOfqR1Tk/pNsb3TbXQP8b63VmMr+O/vag9nKDGixtJeDqv8lJL0trghTHCrogbIWp865SEysCjppynOGrGu+BbOQVlDeso9yXRBW20wCORKFJQ5q8e6thZwCku6HHJBUiYdrkEZNH7r2WEMGw0VxiwIv9/Sx3YI2vBoGJAq9ohaA9/1Rdbdwj51QGhXv9tpBvkYSdh5j49+HNLx/LPAww+8cryNLZNE1YTwVp1YMOINu1iw492akcQHRDg9EjMkQxzAtvo1EhuuLeGHRRCgeU5atqcGMRnKw81bqqK4zT0AJGaj2xb+Gf63PkQTq+COjOMY0ZJmK8jj4AdQqq4mvU9VsaHwT5yP6ijdd9xc66ReS9pWp92i4myje3Gdhm0W3TA1+FtUP9/kzZWRNgP6os07SOvqEbh53gJIV+PHjQ6T3TdG+IwJmrYtfaQu+hL2vivKmwpCVNxumzSzzXFkMawHWmlNjZlvgyX4GJ5xZ3sRq4/IOMNOd9faprJAMzKheql+Z9aOmVfrZ6iwi5TukW0kxAl/2MTUB5/JGZGEvlGZPKeD6wTsonKKMGdPkym3XeYNDa9huHV/G98R5ZRxPJbCJseug+l09KTPL1z5Hr5PCwVlDPZA9VCZkXhCqbHfgeB4zzRhdHeEP/dSKSj12+80dIZqMswM7jZZXSb6HBK9sU368Ky3DO9PNcYXLkfWC1QzYcwXShcl0H4XchJXN30C1SqTUeyCD9QFap3BLba4+0l434A2gpmeR9uV86ecj/sHf5SOeLQA7v+MfCDgjjkMpcC4eWsqG/wkykAHpHBX9RrcE42gmLbpVHQBbMW1jiPmTLbkl2/H3YKh19cf6U7LqDv4XVDXoBu0cnROQWD2LBV4w12CsPi4DRCH2l0XxGHFYimwqXBzy2GT2ilIzurYJ3faTPQsEA4V3eM7BHADLiTc+vshQEZCkHdTCQbwKX4M+/N2TQ3SsQxm6mJCai9/lmaLK75ngSqLv5SC0N/u2iH8jtIbYoN0ENmpLT3cn0p0/WmyVheu2AWtcaJs2fkItSWVQHlEDcG03WeLwJrH4l1PX1kVGRL6xkTYJUwFk1qt7jy8VX3BNpcprfcP9IZdq7DbXVuZIR6mdEfi359+xWhje/QSNJ9tH38AtSZqd7eLO2YMMKYKbW+XC9P21uv4bNsl8hEQW7+IiljUNsYeYFPCM1VzmHwVUzCdZy/vK+RqLa4cSAETa4nk5uYFlFCVvUQBXsCoirmj0k+f+p7E1VZuknVGUWG7c5Dc9+2BFsUzGCVZoOOxy2IT0TlGD96cSIkt2Z2QcEEERmbgkJFZ2iwFUSmouh1MjwA2qQnqZXBDZOx1AAse9rmM7B8NXSbzfs2N74ZWqmVcHMs+1wMExQehyVOcs4Zigy20gnypcH2yp7sKFVZI2O/dptcjf/VjienqO41a0f/jWkrsWlS7dr6FszpAevgaLKwzuEX+TkHKMd4aN+sSPuQrBD1ajkBsBKCse5JvmhBLfzLPmPnclhWP172b7z+cBDv7JyujMYGsS/u32JaVaIJLhvB2uAMS9WWYX6BcHUYMeLkgNGW0JshzF0mhOgXdNm50HqEjTjZJPf7lrZ/o8/oeUJaLxuBWHPC6UbcnTL9Gp5Bxsij/hNVzJ60UQ7PyRwy/Su+LamnSCVoUU31vPEfG84SQIT0oHI3IqbJ7FdIqdTARQcL5XLTY0Wbwp1B9KGQX3VtHf6Jovahfcv0EErfZtJRf55ske84ype4spuL030LlIYYWXJkYhnWO8f2cwQxZMtUywL6G0iSIcUXXPPejF2H1xc1Gp4p+3EAHYtdV4+lSPbqvQf/ORJ26W+RiOMY1mpark8BgFenbQJjFrVy5RHA4C6+oRrm3khoX5TRKcIcalV6TXEYvdy/Sk9+dmJNAr4jfyMSOxHR/9S6F0G2IXysUU5+gCcM2KRQwK2fE2tLxd4dxetE3sfo2SNpWfAHBI9IMTBiaXdJ4FAFeXMOnQ6I8AqBbX2/IgjP5b8E8W2SP/ER5Wch+e4LZ0erUgqFU2ZyMBOrimUJymags4oqhH4EcQ/T4XLelOMfAoA9M2zYCp2OgbTjAX6MWWkpK8wSM0m5uJtOCzWAjqCCQL9RDd7bqI3ZJp4d6vYnTczbXKVXaRaSwiShoCdtho/6/4eH9dj/nssIaP8/yNPhhftJFcdJP44uSdw+OkAe2zUSZrX5/kiROc6xoV6iEsmYdgCBRDPpuPzK++DGFsfTje2LYfgJMlFdFcirPHy/20Q86pbQHry1PugAulKLEtApMyJXdZNJmjRvbuC7FRshuHkO4qJr4iVszChm97Gt4fsoPqufY/nxS+6KtCSeUR+tOjHdQMYBAnR6XQjs/i+uKQAdZcfyE/wmlao0ECx/gCds+1wU7kgy3YvpjZAHjtJCUT2Na12DegQH01BIL1635N4VlQnXjLWJm0oioruanOXHIcZLrVsubWUCBIgzLgotZriGUTofkgA7h5SL21bXPZ2rTp2eSOt3yFR8Ja6QE+BodYQ8MOpBRwIUE/2KJ+iHbPJKKHIcTdLnfFWw+snWizk6WGMnVryptCC4E9MvZ347tKLQW280rqcvpCid31RBbEYRmRw3r2e4vrrNOrVNXqsBTOyKlGo5QYMToNW0lhrl/fJ7XLRf6Ua0fLdVpstUYlvLsZv5387bvGRdNXQ2savwa1GDsgns6c6eJYHAoN8ksrwqv/57Kgt0P/KJZJnjbsVBn4BWjUDByrs4mQJY+zsovZsj+2T4EjsJ+ukbDSJyqQceKSrcrq3B2Cadnj2mHCWaJxC3CZICTbq4G0+lGJtCz8qoS5oLdFLvgMHbRGrw8BAaIC7W2d4cNIgFKmmN92MUjKJjEtoqF7ROOVWtDjZssYHRqUyhG9PNiZdIxl5W31aHsru/VxG6vnw63n3j25oEqz5a++mauO/EB/kIqUeyMra67h7O7cJBqZWga46QYjVpjvRQZ511uRWjgQ/Ap5SI8kF5PYXAv1AGE2RbQWVx82BRNFkATYpHSie9oMQHYhKpHLiBVexRxPT3HYhhKbwtO4lYFNzFeDkUXWTiWaY7tp1QI97uNHFFwCmqIaKUqeOSxeAYtEmRu4gsUxOrdjBvuxGLY54grhzUGhKIPYCngSKxtU7qM9HPO+ccfpTFXdovNjNV6kC3OAekm83I3KeXq6fqITHivmc3AIRGcJt4sUN6WfQEiAREc06PyvcLGbRUKqWK3JXjSMXv5QcK6Q1BIWL19Ig77H+zgGkP69j2hP1LWhfFBlZ9Q9UTgH5uiqE2oMvjcsZZLxylGVAAeD+e8nHHmpgX3fBMEAylNDb/cCb1spFGMjSZjh2pvdmWKwtPf4uBmEycO8rNoD2+zSM74drNGS9wug+8g/48Peq6NJqqH8rYJlRt5O4kHwVGDM7PLUjnAjRtXYZnIaCiYNcTd0ScbeXPWjLlhHLbgfp4lhC0cFuFhrqoFeLVSdIEj2EEy7sGblnwlBXfitjNLffT+/yjPJlziKA3HAGeMIwymw4LE4JoE0PJu3PqZ29gd7n3OGUeoOwbDdBfa/e4JVAZ0WUN1zSU4bhxOy2CRAu8rSrYABvNrufXg3nH8CKXLPgRQ92XR6k3MSozdwdW3Sw4j7idHwaco/j3QsrWUHcuVWKovRmZ8QJhj6bXwn4EmqyfWTBggCyXkc5iqF4NwswHxv4bDkmxDmBZBm6T/FO8nx1YPrzWE4YZ4V7zpkqnpR+2i2cKW4cZbcGGGvNWsyQRq8uts1xtKolEKKV93Ot3FpM3uNFTgn6L6enw1PCWE1JiTXlG1U6R2D6dYGtBQp+egewUETdng5mhx/d+DWw+DcskdBLuQoR9ev4ipEYhsXVylabSdaQ0Ekcq9AmyXdpCAbcFixtBmhN1o4lkICROL/LxTsQPVCPMyAlwARXRIfOvr4Bgq1SPuBXM4KERTVHzOAvxhLbpKYw8HppImlcpKZi0cdj0Ma/iMQndTgiRlzECJn5CfWTawNtnpkbS6nANsbmirAgUQHlo38FM+TrNqEA9mLkUKi1HnVD7oC2pIzqFeJJUERRLChAXjIkFVl17CLihSKT/fsV/ryEQV2Y7MqL/K4Xcw5mx4tID4t1slMFOyovMyfgyZpIH7vc1/S6T+LvShmscDJvvDxwVGc+G5Gr0W6d+MRyNl6sy+eptroshr9ynwc+BeQTmhgtYEi7qCAKkXhVMbs44ZVXam3IvwOlNPV3zb/ZLjsPsl4V78cuxPsOY06hU+RZqnNW82wYrFEtoGGbNfWb2iRRvkAyNa4lsqQDYJac/MfjyPedZZYc1u8oSYsFNDG6Tpx68BMzxIW329D07LdNWFRHqf28fNhmMU5R73F2cojT5g9NCYyjJRe7rDKdQGLy7du12tNyqfpZnfSBd38nJCRmAciGy9b8qdma08FTABjiiYoZDr6yEaE/1UR3z2hVZ+hE+qLdyzyXr8RMu1R1ke9+31i3Q++JtslgWGezbv6yjvwhJGS54aOo/ybFJ3oamVLsH5Zg1i7Z6HuwPIpbxm9aYjvxDBb1lsQ8l27CAAa2FEdsGun1PdjNozA+C3sShYJjWAi1NSo63Ubdw9qQbbVIvtad+bYCNgsxiP9pVF9DeLFSFcqPrlV4GAaiFl+lJmFhDCnmVrD0CARs2W9Qj/QhFn+U40wEMLsb3EjpY7axmXSQzuDUQ2A4FoIo66iGOSl1UQ5CwxqgYXi67//suuKFs3kPgyr9Hscuw2Nab8jQ0yxFF7l0TAKlmHT1fGNcgKMRrQPg0p12+9UUe0eGWDVssBmCyMSaH5ctlw4kfigaZDElYioJahDoq5eHtxrZm9IOOJdoFLWPGXVJtVCpHdJR0fmBh+C9oPXue15tPQuVMVOkisr87bnUaHzJPcpZSco3OIGkrYUcqKruAhB/b0t7dYs3r6PzHY5HcRwxYNdPjxLXemeuVbMKZiRLo7FA+RF52yuDOsmgn4wV5hcRF2IUdPiWk0q1T4cQzQj70bAliA8tqIfzdgya0l/2l0TDZs8bPzBCbwYAHOQAX/kVtmgQ5jTx1nUz86EkF7CDI+hXHUS9VnkoDb0BVONZ8quYNrxCo1jvnqznJWGOLywsXf9ye1TmIVMDulsbGLBzh+q4U99Q/gp0vkW8samKPwTRc1mazzqDj+1CWVI5Ww8MSwwvECHo1O2r3MQnAkKwQvJGjcm7EyWyi1l418IZefWxq9/FB8+NpjxzD5Zbc72QOFkCZ58MaguppdRdYnh+jouv9SDPy8G1URWPdUkkphtaT1O61VCZcsXSS4WwOzwQ06dY9uEjB+XG5B+a/GrTPLCQYPEYRJ8whDDJZuRhwwPxHsLcQ/EyNvx4f198oNrAAio7q5FW0cpHtZnT16ulWj3d1UgS3fDDjizxuq5KB6dWwirDLivBsJzndOOsb8VO6cx7/2+vfe/ZwPzYUi81GLR+Sg23jPqlEIuxtS8s8/f242Qihi3uqiD3qCdK8nnbAIE9WNHuBQqASSM3t+2QQnhb3lJLL0lkDdcZWPAv+EKjf9YeC1C+t1Ee0wBATICP8QULJNTq7G1Tc1PgpjApzJMQslMxJ9Kw2NjwROQ06aLnZmGmyaHEcUWl8K8VvFTqcW7k1vYQ41HwgVnRViV5NgBRRv6927lqYGy8KJLCfuiSTHzpGAJrQC1MQT7MiDF8LkCzqRxqi7ldXFmq+l3Bu6ZAuVQSNm1r+gLVrTsxsgrHQcqZ8LcSVUUczpPdIUt0dN/dS9AgGiWVZcsIZqrZ7Qc+pLWdn3Khptn+LkypbiH3s2t0v9ghJcj3z7Hf1YUTeJeWsat0XboC+YiaQTAlKVD85FTsDgLeSADN6FclYO3ic5NFc+QM6ywUeRk8rKJy8Xq4M8X4mwbOWY0xmJ4P7WJMFGt3zRiFaugPHE6Ep8Px5J+jS4bYT7sM1aLFf9+j74W+bU4oV8MLFlI+ysLIqFMBeA8ZUHYo07ItCYbHTK73DCiE4vSlUeXAJgr9/oUl13eFtBgU3aaL+2ls6JHw2H0PKlzj9uO0v8Xkc58hOu4uV7FRSGcEI4w6JTDEdkOShhI9TnmAc7LSIvUCuuJL5MzGviRDPxf2LdVL4HJQK+x9b+1irtT/iyJqbKb6Xa/dR8cre7DPP24aWLEPqNhr8IPutrUxOSdd1Am3o6fkrFE+f9KfuWY8zAxI8sIeBAZRHya7MgzeyHOoq1aV3iHAEXWm1HfW8GAarrOZnlBR8z0UXtzjtZ8eQtorjAKwg3PiSHt8odyu4eUZzXaojDdXdEGbw8V1rrDVvxuxdc9Nbbzisbyy2FhAH+DpKoUlFGghEWiB9siMTd4V6qYji5YHr7dzcl3lYwE837NJsQnspHsjmTXW2xPRKJDNlwgFUXNZ+DkvyqLB3seW3gcppDZT8+macnDBpYAkUOczDukeWPWs1eaO+GgXvHM9cRvFT+EMSPvwD0tvdPUbWgrfyQPEmp/SPXbC5ZqOKolJotXGeg6iAMqF+rZDbh9VHArQ56J52GUDRiNgMg5B26kgTDnVJai2Eb1jfIbOuBhUoPaOw3qyp5CZsG5WKuglgdVADG5dxFeEHrWdCQW8kagY6TR8hUigAaYNS97SZVVetpN+emVMtGHml8h6r7ffjJVvSj0fRCAPCQ26Sk6o5U2T1d9vakuK1jZE4u5NCyMfy+OGUHnE+3SoUVXOx6txhbU5nxUuajWLk18/m/sbkMcEtVTSSGSYT9W82W12QPz3ZmZXUyI5xEwEpcwGWZPNatHdehj61NYzHUHeQNtUKJVzYnR3Um/cdKQyyHOD62HSg/D4m/I2+V49gCwRc0RX1fuyJV9GCWxIJPScNUbx+UZ54jUvV/ReuL7CkrhksfNvzQQsookUipMVTu8bSZdlXlz9z9/btiJKUS5mZuhcPriVafF089U4bZHWKBn+J59M4lcz/Sd+SGKA5e1pzEMLJIaO4Pll2k+ZvRGG2vUwX75OZ30q2iq1WTTd+kajiz3Xvc1dUYxR8qplGbR6O+7QNOI+IckLFSHHpWwY1ki3Hrqvs8kUULTrw9NW/dq3qGhWEmIzhKtx4Ipeq7nH1/nwfXvf51RvraWGKFPLematFH5lzqOVJsYQCswNpMVrz7JdS5jYc52vGvJ3eRYt0kz0KdCfkfGaHY6GqFqRx20f8faGbVGC3s0jG7TqugfauQtc6z9Bqq/+BzZxmHdNyDi8uwFjqJRabhqbPa93pI2tltQ5+AjxNBAhsRPYvjUDgbyR3b30Jj/raLPfdvHVQuHf7cZcAbY3e0ecD/KBGHx7z0AOLPlAVmC3ksGDW6Z3UeS0wnUWf94cWpE7ez/AgF5EVC2POieX7H4MVzbHhbrrb5sWJN/RryYiumZ7UPI4DrlVLG4jQX3i/x14BDGxhkkxdmcGgXLmFuuSBHX0sX5w89TjT496UL6rkWAHdEWF/iCid3rUpgKBbfkpYI2TgD2VGopDdg+8wt7j8tzJUPIlKwUrGgm2O2uvl2mZEdMNsB1BjUtvwaVf0k6Pc7s71vv5hOMJTIKVJNrUjTVJa8sAWcqvBwShtYAldqI7s943+KdXmXnLRxBCteS+Kcs9f/abueu+nQ187b9Ar/a/QyAl2JBZrbc8P+0xyeEj35sMUPXV0aUKf2pyyVz/r72w7gQlgPAtqB6n8NMc19NmAC0nZF0wbebibyjDbwwEB0UbrJpTlAgb6bjGfiU+fw2YGwvwGl065JFZSVceUz35+2t70wg3pU/R8T1L7GJnn02nVf6/WOAAeM83f3+Vjyx6h3jJFrfLA3FRGje554zz/NYzDf/0iKv9Vj+w6fT4FF0JL3UOVjywllji6GiuqZ2Hju/3M0XKp4v5xC35q1y+OyHr2XrfYVl+Pc+r7WNeCI9G0YtWdwT2yFw1Teo1DbExNCabplRiW1lb5G1BwJchsW+UVWEfucGuPP7v8fQxHee0aJoe+c0m0TNQHilP/v/hjkSqtj++kswm5farbmKVkFVbnJvn9n65Qcod/itLWcQVVqUaEO3PffSLQti439h+5UIQ2Qh9hNT8E3RdjcwFUYF5Lx9KCrzT1yQ+IKYc2lToqxLYvOsak067Wy0A/zMY7gk2qToUn7HAPWUdjUg6MYU0ETpQlmKD1zeWAmpS3uX5huJZ9V5AfJ3HaYsYAeqvHJGVC+QjOgAh5QuBtmGOoDJBxHc1B0nMf4DBPhgJ+Dqj1vxw8ZehkGIz1EQ7VuB1Jtk/iHe/xxHokAAOCnLSU+AoqB94Kbw6eOWHShP9Eifggte1H5zarsHh/zmKOoCzMaqZ90T3FecGQspbpvP5FHK/jUqaHLVCpS9tuS9WKzj+o0C5vm/i9DNyeaKsu0z0thJKmD5Dh6tKM267zy4f7hkQSbVKgduEpysT9lmyai71KeiJQ2T9zj+HHyvqRaM2vdc4nA+27xDMCdzJZD1khI/S3Xvv6haFpzyNZD60ZnXdnJwth3gE3gpzsaVsQaLlm2GEX40451qYOGHGgTUXvqGfPUaOkROAUbKAcwL72x9PlS96J/eD0Sl4T8g1YweblK8sDz8yj1OLXy8pTmeeXxtm9LGTAvPc4uEJd3HUPauCqzbnduum6grqV8pzgtvpdaNiJcd1DjWJbPkqgs/55mF2+2vpnPCE914y1sqsN2FxOqJqtIJ6gFq0sJVamDwzxhl5pXWLB1O39+s6TcSl6f/107U214qtqvNQbzsDMYqJhXo+80+35eLNXqrqaEoDMEGOEehraFm54KIXbv9rcECYEfFMEGEh3RezuKCydriavTxn6wYYNcOgjQZV6lYYm46iASAYpBMQMn1drXbr6qnszVxlDcJAI9SV1R0oefpw1eSGyYN9oU9jUuE2G/VYsEwkBkEizE3DuW9qs10Sp3qLL72mItRtUWZ6I3yGuT2jz+2Jt9PQgZLdTCAUQaAGSBv0Li77qJreu4eQhZP29OWU/cD+eSTNoXPw3j8y6dyP9BE+JsN7Zff/rG1CBeV085iO1r7j2FIzNBgePnmNctvTWa+xsJ7kGHCGX7K0MgTqGh5M/9yHXLffpjfOPN74NsniS5TNGRE7fP+SXPR/mfw3wJ9ukbb9EQupqKt4lPBuyFVHCpJ2rB8+sYwamrYPN5a4A+1lQd+jLhwG01JAzUAyNpwestiZbJZDOz8j5/iNk4pQm8suldmrA9J3LuqfyZENwymxNGZ2f3NWx/bh2F56Do03uguPIXvlKstorISnsRUz//7ZZw4CbVFlJ4XrlciX4DT098iYYJTMkQKp3nbFRv+iYLKhRtTj6lu1KWLb6avrFO9wAszbebZ3hAR/SJ+Z+bwzq0Q2D4BQU4+w5T3LBNS4wR01RS8iU67K86FtyKLQ72m5wQSD5LS1hhkNezABxSB2gitl6+C4kfrH72FsPRPCuWw8WFMMHhiVNt5kPqk6/o7L4AD8ZbuW2FXBfS3BQ3Kp5xxVYL7Ae77chOZJ58/EJ73HAnpqF+DZcs+pwC42whcL9G/RSJkIeqeMdWonGpNsxzE0NoAeI/BqfcF3x+bJdAcBY8r22RGRC7f7kpz7Na51K5EKkultedBZxDjr+WgE/hCBraZ/vtU/h8LK/55wS18A66D8wyPghVbZxuhDHJWLYSLcFddsiCqUXPjJDjLEcD8ltiix87rVzt6L3YE2Jk7rwgHBAW7rEFcgLxr3RtXx/ktWHpgp0CrbzfcBPcpMhCCY8OZwjZSasLthz2EHz4T8tpJu2L3kRgyIm/TUbPxPF29FF47DoUkkx6uGMo+mve3WSbcWb5C8BfDnoL5fggTkEicpFwqCJ9Bej7VFJCGCN7L9TIyX7mYTw+6GGV/om0/ImL5fawxRF4DOVrDq0Pz3z2c/F203nyjA0s7rGk2kqEL7FDLDmJExtnaUKCczQJ03NBQBVbA1e2WG7OQWVzGlgBpZI9ZgkvsP6IJ88PW8nD48g8+vncfECm0Otm91iyPNs+BFRgraBK6hTj3kGhYD0sA7tTmaSi3Rujc7+E5guqzIfaEiPPr9lmKtk479SuiCDeS8ntVTFkC2GHaot1Ppl+FxbuBAvIL0vr5HMmtTeHhwjwxw9LNJ066CIXPyMCS6ZkKTKO7CGX5DMEKgENHJEWfxKJHvArcvniuo2uRxm6qPja9qFKmu6Ms7rNYcKI+QVfUcGYI+0PlzFqwh977YsyP63fFpN7bDvM/GaSm31keZyuksiqBJXWG821ZEI/k05aM7MQHZhX+dB27ZxMzMggQlh3pxCKgZAvn7YvXVczqHAtTguWPEzFBZheBe0sF4r52kCQSX+MRsKjGrQmdday2FM35coDALOH4LsP5O0UTDjJhtsDo7T4iHmn5YhZJ/sWu3i8d4jmnido6PcjUc9Hrae9H7tV0JKSSL4vQFszY3pU2mRszkdMx+m0ClpGzc4/FKnXsTuVpB37SYTtUVXZ1oF/KNdpt4hKn53tsZ0dDdJGbmIeeL8I9XToY+KwuvNARkt5kIXRuAgYb7phLALi7z0EIfxfWpiehaVHxAiRkVDXLOFqHOcvgWahhHNqWHjVYHGSG3qlWptt9eXqIm8UtA5MR4uYvFJJH5EpaegMpUNfR2cKwC381XrzrAX9c0d9/ya+pqKklmrfuWLoxxMW5emwInQVxVETL0525FlQDvibFW49mu2FvkIyAb+ZMsr263KcObfnRPaSlZMSINNbrchDppIpQOi5RiRkONGYHMbeFly2QoSWFkwg9HUDKc661mGwJaq2K5w+oUd7hmAKgpTqaHuKgpjiX9H8OsJhU28Tbgwz0G2SNjHC+YIaqNFPGFkhlHoB3ylkDRDgQj6jaZHjPTU0zPKZk8XZE/lHPKciA8Fzlj/lIWKDgVzS3DAbpNGOGZJ5GPsdIEZ6HEIBTMcZTLIpM1IyaFyusH4UamuZGHNujdSL0GQeL3RuV3PRVhmOs/UYLNYGlxqcixovNd2epBIdQigtGEpyL9OsaOxv0/6FU1LzScY7HmELfYTrMDnpEcYb6j6Kjyidl7T7wU9kp2+sBp66OYcoV/jZkEW9uB02TNjbevEVrHHaFhiw7t3Y2OJUiFy7FAFhiW2HbNTJvSBx+lmVrMmu7XiiKaAC1KIWfYRWX+VkiwfjOACA/c+5+0VbgiQffMCu/ERn+E5PNNSMyM+0MByOYKALP/jHm4jbsCkEp542Y9knic5Vq+1IdVtxEFLfBkteqMYYZ4VyWumr3unv05+3DizvO9LTfSfY3HS2gGnPeXZx3OAK802B8u/Txze20AvTt6tKAzK1WSETcc9PSuIdAKekd/+hqH27AGIW2rfiaOdxW/5OZARrEl/TAuNB0jaKSPG7yZ2PwiBavtVshU07yfaXgsiOHNj2GtC8KHHbIoT2L75ZSKX0Q254OMoKLKq90IjUoiHCHUVR8GzHmJNv9fgcYp2JL6i21682DQsTI0HxGbn2GmMHlf51a9kVnqoqR7TBTc1NMARxyqnpQwSCArOksDJGQewUiRsujLEiHljJJQ5+os95FPBr4elQFV4Hj0wwSwbIvtM5Xgvfnq8+9AF0uqhwOhUYiLXKaCM2izTsZQnvgR8iRUArO4wYx+ISUU7mC6tkpeOoqQTTIPQn28rBx0ZMHFbmCEofsmafVNjHVmzcnpsOMHPt9Y7o/+Xv6rpTotvXdQ23fnVZBMwG03tBTkTMk5D8i+k2Tw3mHfFVfVxHo+aHfV/7t1EFydSgrYr2TkNtdAIHvKZrNvDTeBWZH6J7nXxdNCq/mwWo4g3YpKoKPtqKt4+jeMSIXeTvA6GK0hcdelXAD8XN39mHcAvek2+J/UxpF2O+fS90trfPBux90663xGZkq25uu9Ngb+KS93asxU4tTKG3b+HGzA1dqNzeTYXL3bu+kNb5nGJ7SxjuFtskhhst3zfm4fp3qaeeb8Kk6fR12Lrpsn+IPA6FtVi54RO9aYWbV95WW7oW7XjkZ25JVfx0pZsHDS2lcu0j6sq28ly6bNI2n5zNq1xzitZwt4B0zWffK2ODvq6S7QngUafciXbVIYGWAxCXacus5FdC7K8l8S6372lPpLuSwy7sQtY6qnWUFL0kcbsw9aJlcNJO2k7UIS6e4IrhsKqPUEVCaKjTB6YyXGCorw9GtRMbYimLiW8IRodB/B74LRS76Eb+62O7ZDVKAONf+oazAievm1oIs/gtkUOdj889CLr4d6DhnJu+4EjK+TiE8SHSJllB9DWWT8F/28iYt1DYkb61M1hXHbYDxy5JvD1NaOheo4WtN1WYMHO2U//j55L7ws3M0s6OuiPSPfU9olf7ryq9T4U3pc6bheyR/D6Y9ghqnXtemB5NYROk3TGg/QvVoHvxhYCU195VbRsLHYVDSG11Be5PSHXx2z4AvOmUrooJ57gR4d/+hJVixwACV8T0IM4RIKEQ7fyDOON/3eGcDy2Ksak2+yoB3p62hhmNF4yszel1CNJGZHOuBeZ7355EqAgtvu9HyWFarQsgKgSMM3qPUlBG+PcWaOp/+QsUVhfcz0i3y2cY0X+6ToHw6BBJprxkyyS99bgwC9iC0Nfy7MaMY5Ec0z1L9ylkuj0REQVq02GrGnUmaCYoySFBbxXPruSjx+naQZzEAsgZ4ZKApPaBM1MDGi4ClBdYuT6dTi/lvLyuPflxIgPhxMgfbCRPKSgBO2Wj4ZuJxEWSIgPgDI1BYWtcwyy4OhsKESuNjEA4OwA7HhC6AuAACSA2FEhpHtdH9sN9lqAkTVdwHf4yKgv4nIk0InUdrPvN4/+oAbX/xKAXWKr4gWVsfIkvcFNEDrAnE2OOk8gkydj/CVnD9uu6SWfIQU3ix1IJfgWyBOBmBMBV/EnEBO60/EN0b7Edu9AfWUi1/oZcapJtamjebmIIb1+BqWVnPG9QY7F2nO1in1R4Sijz7wsi3mruuwoCu1mDgUgOwSnaCNLf82XNCdYAeKek/vdujjiAb4+MpIoRCH1Tpr5kGlgymOpHDU4zz31M5P2BGMgDEr4nAdCijFnfgaceT4HFy9QKC7jBe7hsIjoQRkshuzcLEWLl6IPmY2t2QBKwOaCLSLK/KHiPkCyt+769PkneZgQLDWZFF3P3aFtKZlVVxCcytx8TL9miSJCy3yqKsHypmxg742xjpnD0uYMghLQ8mWZHBpT5WEFazAzAwhMHYhxvVMOHEJcghv5u59PsWWUr014I+TrS7pRgPX8moazhIs7CgEnzMRn1qXR8+AXSIw4N3mFzALHSFLg4drHoyDiD87l+/xevcqGR0z1KMrAB5iUOYCx4q7bOpNr+SJ8SMHgvtvYKh9z1T6hY5Nv/xWnyeW4kVFR9e3d6WrAtb+YSrzYJ/5SeaIbYaZpYSLk/dcab0zkJRyPE0Mr6E8vaCfqQA97MpePV5khjsO+Q2XCtmj5Eowf5f6pE2T58+aslR5CNe6HNtX2ilwxqLHGPN1K4rlUxcMtiiywih5XuRcsPIO3oIdHg/s0htfY0kMIgERL8fQ51RnsfJ8r7xjgEfloAxdScNZVGwhLaH5NwRmrWa7UlkuXmRHA/O0ty9BX4cNU06O5myUeejFs03Phq2s3lm5bHz/34AbufbO66SiFaB6F+Yean24P358bgcY9pe4w8XcBwk/E4uGi4kMtYj16EXAcaMEZF6HoHP1eF1gvHlmm2WJK4DlFR6Kg+s2BwcavGCA7bZBkkTTU1KK82tySWjkUr3aIlfOXNEwvJ16V7/Ym2BTwM1i6MY57mtw3+nzvAE9gdXI0VjzmR4ZOvoYEz0dy//ENW8fknPvfj0DawiR1fiSYJ9lf3QoJ++/MBrrgyjSHBwCfTk61OMSdmLs4Wnw9vwZ89skonuv3zu8Mdj4DmIlnpCH1IICeBFgso5aShGfjOKJu0LohdftlcWQD4q6SxIWZdsPhgMhLzpz81HpgxCx0zIlqn+5IPN950BkMb6x4xaHwMrtylUj4Mk/VGkx82gP3Xw+DGM7c5BS4HqhWR7FZQQKxrBuXhNGI9XmZJ4TVoMNPiuoL5FNeXdYKZDSbRtgWaFOhetnLxpeLGoCiaTAIUK/u6rNcmDJQd/r8hXEU8CWW96DXrE2PzVv5e7scTsgW6bwRfL+J6dBq61qcFUi8oklJm85lnasEYir66djAi1pVZrjBVgvGtWMHFTeRu/iCLxiBL7hslJgFDIGRYutGdi961Wih274r9+gc3CIKdqpiSax6zAfkcTulZk8bbkIGNhuRzgujX/pV2dkgXGtXqpevkbUl9Ku9rmsxMwB5P5OP5Ka+uU/NXw9N6jFTLyLZND4S96M8n25Mhoc9OyjHUjY6g7oWnXQpaWhkQzvaEtdmvvpm8dwM4IClkQN82YmPar5SrP2j669H1ZWsYaHaVjuD63HJR3emsJ/miQWn1zgP4t1RJBFwyUfJ7jQhdxoY8UTO1iFepAd9ATSJsBMWMzWrDz5K2Ms4FG9/lMKHgKx0yPEZx6stkq51wR46c50HptkcEzvn2vmK5Zwv0Zw+9EWZA26JbeoqkylszjEoNzkfru4U5P0HKOb+eB9vTwOmxAypW0dBtUysqoDqXi1Od7/cIYOR5JDNLySWqOHwtlzBKTc2iZNIlVV/ZGKCS11jZcG3JGhEcIAOaTqkBaahUQ6L0EbZfwFxzWE48CfBem7bO89nPN3kHMJEev1eo2w1GMWvBTYb6JlTS9q6+anKhUKj9KNP7UTaMBD6dY2ydgQXH0OznKf8IQxoaJYIgvXJd+6HjUamixvCs3qUhZlZYUHXtluhWjXD/lAUSMqOJblpgIcqm3mjajSxAuWzKI9F9Vuc8UqiyPg1tIvRbU2cn4dK71LZg7F/W+W54nFtN3w8xSnNO2gsxMFUq2kxd4eS7mOzYr9OYDabd7EzNC2o1gZoG1pc2J24cYmPL5r9XRAvErsSsaSSPOMFdBUaZzFZfNWTlC8k7dpsxYYKjqhdQ/6uOP7+Gm+etq1vSm7V5ZeKbGWLag90uRGLCqpbQDBE9+VKBQI5m8I2heSF6AJWQWwDFQwUko5+/GG9kqvswibp8qXLisdhX8Np3hMkq+c6IVi0hCTGAJR2W1s3zCjI3JciveQJjKmtm7GUtJPK55+QCIMlmeQgIk7HRrBo5bziZbHyT4LOZxtXmjouaGIXt3MHb/b1nIFx8f2WwkvN8Y2rx/RYT/PVvtVQcQsS5L2rk15bRzpD4YGo6hJdg9YdxVNI5K5U/e5qc23jpk1pI5bsqsSiGaS3qKQPzQPoWGjEOZuvYkmsImLmyqiXbmlFmZFuoM/3SV/BuhmSjciRDV/gy0NM7BDuCAfRpmoZ/8qDTsckwTbMJ2m9yWzhJS5kbmpJa9swcSiWN3MHn49Vvlq3Hfeogoiv/vwT2PHSJkP4UvV+MlzHwW23uaaVMX3hNg0jMWr7Uw6Q3TFCOHkZp9f3GN/jx3788VFOqJNapUjWu1/XqJbynIrejPseS6/JrjGIL1uJRxwysRIikJ7g6OtTK1zP4Dukbn4aS3DPAfKea7nt9AeH+MxDJA+m1LsTDt7kAjrMg6qp8dRfy44uAcK0cPMiDufwN3/wDRhyEzO1+Cc/hhpmkyvp3klQxq5GCzjDhreCMLsBytZxrVWQilQ3pIFMN0aZ8BkAfBeCUgTSpstQ7mURUGiFjNdZqpcQjFZJxDz0AAREQhCaJqiNtACnU1QihKyRJVSSdbayxhii6s4vV7FoUaYh0vnqgrb5oKfP3AQJEJZwcPjeKKhLHgSHNZm7Elcozd4vn2c/Mztb4CPvN04OGWtUqBU2I28n43LqQYtZZHjK1rf9s2ZPnEIFJYMAXh1Cnm2mdHVJCLvumMZO9K88j8TL6yqzPiQYJ8MW+dFBJEJGdp9rDDlqTgVCyWKdAP5gOl2h1uPE6NoePoSKsHdtXE6CWJcl1HA8uphVzpzfDt3TnsU7er9NEr4u2EEerEXAXI6kggba1ku/0Qu1ZjnPdXSICwcmA2yRyJPlAE3L8696kEVOmhmuSoUoeba54hpecPY4FwYGNVMNRiYGQppcQ4UvXH4q1DjoyQXt4fxQHSetx+g0TWKxrNxPLOWKUbecR7N4kZVyHFzacjC5wR7fOoUE/laBMSHg5Z0SjrJ/IqU2gNvumx4kF/IJOOWlV1IXR6BkXCB+GvoBwK/GAbUhowK7JM8vL8J7dJNgeToqvlBzAAQ16GAjcwa05ltmHqHxw+szWg1hJz5NivmFa2c2DmzL4G4IQ9ezOvW733vtWL5ZVDK+vHNpB0/lFD3cVerYzs7ctsohc+AkvyFOYY2afigK8ndrFrers90gHNNgDRU6OZWMJiIf94UVKLrSdGrrckpVqvVAq//x9QJaAXXiNP6RmfWhXn0oi4QstEwx/vzz5oIrODAlB99oZ/jmo0zu+DGpgYc5TBBkaIB99KyzWvj9TgKcMG3/0Y3k6QoQyERp4YLdKBVeUN8pkh2a42JCficDIaKYunHiYBZHhNqKSeX3BU22umZwjZY6YyV98qq2XJcFHkZVjXCczTk1OX3k5vPLfYPQToXX6Lo58H2P5bre2K7DqUF7gaF1vB84nKRJ8c0pfdx324hRjGBZPkhDVLfULZ9vcjDTFFGl+UJ4nw5xlUx7EoDhUzaWT2Rgu744OW44uI5Zx/80FAlJcHRZ88AIyw3HOdDIaffK96VDQf/4FUjB5kmtmrs6krDnow2YfofnE1HAJ1rzj2aABOr0r5WwTU+Yeizu4mk+SLAKB6CkdfT6sTV+gzfk926zZIIBp2rgO5hkdLGZCTJ+VzZGwgiyZVwdVcEcakDw1EisimMqcRkkU4otMKGWt4OJ248JCTISIXoLAN914Ao8IMOzZoybzqN5DuY8EnBNsnpXELM2XKdANhOP0I55vwJACbsz9P+e8HoE/H4rNs9HH73TSO5082ZjMzH7MhJPeTPuk9M/hxBGFgj9V5S08PRLTpJDJcqXlyezxLvfhdBKiVWdPBI5gH356iln8jb28iXHm6BGZl0z3/9cBetJSLvGbmsx7NtogbhNDZ4vfXiTB/rjWES7gO+Jq+RFAq36YafF6PuQRVD0UcvJtSGzzJqcMOkYiSvNJ/VZTL1aGyPlZW+JtjFefSqB191XQU9573zDD4yoZb+YLbTvq3jAkCJqb09A8BHLTdANSY0exik9u37J5vqIr3Zs/d+Gsq02Qc42PtY40lICXOHQgGgcKqDxHANQBB9/xEn9nPAZ61BCXZ8FbOWD3KVBGU5cFd2erC+mCTOKSC2OBX9H8vlKr+ABEI/qNWac033zZZl5yUmCayxBTVtHukldhoQbBssrSEXmo517Vzcf8Z/6Zm3H8RHsiXMTh8TWNIqDIAswH4IcWAk88Hjw0/Yci4YhbD0vnCps9G9MxTG/Ilpkf27Zug6Yz3lQjvAmXIma4U44wCA4U/9LAdjlO739Yjjx72ISJYBeUh70XXBSVNPaxTLDVKa2/z2hCOfQshlUiy33be0zldFt0k5ZlMK+qNoKPwNPHq9XYYKGtYeP2vs5OQujR0pjcQR69Fmn3skxZQo78Q8YL2cjrtmxqR10PTpeO/+YxE1tw/pjp0zUZkR2Rl58M3wIhFs47kXUgcQoLJI/wjR7ybwMBvlijceP8mMT2Q3hpnadH3BqacGG2xV+5Oq1Bc2mVlAhkvXjcEWInZsg3uAjsqrBARCnCDye9dWI81tLzlqtkz2T+mXI5RRoJDRBEHysjYYYFj75dQSO1WvcGXBZhrkifF58Jmauk1hf78hEBhZBIhuyhK2nnuhAcwWCg1bhpZjuNm3SCx+bsC9Adu5k8yVxB7bKO4IAkkPsU0bsYEoQuccveeIxaUs83hbBj1AHYJdVArF10I9XM++2EIkaiUlqYm8wq95BGtP/h2Q675NqUfp5GUS3QhZ/pyW4GF6yTSjN42YSrs884ZaiPX1l4xKdEAov/7TGa8QnsHEZVxiBl6E4VXaGyOg6F5KZ96EpcJ2y6jcSS0zNNGYLfR+pEHbqKzecbqRkSYqYm0TIn6jwV7URNvj3WiISmrucJECdVMAxMO5gyLJJaIk+0+tCkyCh40cYD+ksWcEnUpA6wmiau883LDlD85YlGOyVfqb3D6hzuvBPHtcogniambH6OsVPikVaUCLR6AoKyKzXEi+ndyKSfodYceFezBPV4PEB/ObM+aTfJ0h2a0QNoKs1qfd4Tz8n02MxVF4AKCd3VL0ikhvNdMtlFpgF+t4CUTecm2f45lNjFtOAKUhmlwiLnHPQ747cp8k61XoUW5WNFekiG/cVHMIxycsm1PANE19xAZ0nf45nS0fn5GJ0M9GEPD/AKpdLJ5ir66S2Qffz2XkzqMv1bOm0tNP9/D23JM7xo7bsT0NLS8y7odfqUEaRRJijFmsrNhi2YaswEiHDoaFgz4ri58IgZYy3MBS0LMt4rapuH62KjQ7svcVMD2zaxi+Hb9N5CBW3G70BgYLejnGGhkFEawFzZFDHGmrRrWvEj8KaTO0QC11TH4u3ZGh3h1BIBc/qef30YiOtYCkAiNymUp8nZLx652chmzGR+850HrU77ygb59ohfSQBv2flhwg1Hq4c1aiyXgD6IOGsZ2otch2TnhXxHzz3CeD/XIdDWyDfsLKAO+RrUBAXbuAAVLwZdhSDb52ZrUckV1Sfyd47wJn9uD9rKwjgn6Yjudc6sfC9HZ7UD7ZInyDvbMGb+Yer4mb+iwDXTJ3XSWebHVQZJuwenLt8GQoJHXjlSwL6B5ArF90ReG0mMafXVkUfsnWmGV7mjAoI2JqVoP7Y021hn1Xa/MWw4Zj0jtp550TKXyL7ICFbkOKbOKamFDSoqm4Gsz57EMvPgKsqknYg+ZkMsU/xD6HYCT9Oj0yiqGFJZG3g2oJOJpkxzDlmhbTwb7RedNgYaFXqqPCzxXMKOqBLYyQkoet+xa2fF1Pbu6aKiC7kT95X1keJ38ptXU4vcd7aw8kU78yRNAcEcpSBj1tX8EjgZIuQF85xErSx6ywkwV24Zpgm4CdQ7T2QgxADkWM9h13tm9UFEgaoGhmbd+zhZ0hRVNE+pFRTzCjBVggBl7hamWTYkueDlizVcHbAjt+4AMZpa7AAXEyK4uyZWLJ2qYY5NRL4FFBD0rngKT3zlK/zRy+7IyIHWVWZNiniE7mk/ZKaylVu7MHqyzbrggZQFJLf5LIx0rtUqdCSUh1nombIomBzkwzIGr1xnuxf5VkXUrukbFR4Wglip9DHUQqnUkYmZIMlJ5BMV0XB61Cmg7R5kakenb3G3S23jHKoLHPKOVAWoZf9US/oU7VmjYY7YADbVj9Idzw1Xx7LCfE6JQdh7fHd043q6EHNHSWphi2FcZYFNbe2NXDf3MldCTvPlMmpG7T0UbcKhryI211M/YbebCtbZ4fnnp02P9sfQqxbpt5oDx8KrLGl+J9hdGFFZQSlC7cmR30sSCRw+w6SjLtGgVWQJwEyQEhqfoBgrhgf2+cCSSfNSoO06i6fT35eMQwNWFDcZeZ9Ly3gfZi4HpJh1qVHcGkZSm7hIb8/6J4rEx82PXdIU6VgX82OO6q2w7J0uoQlVgIEaIS2eINWxpgyHYrVDpqa+kWVwTFPTBvbzqupkDyCEU0mNdaCzdHiziVun9htuLWIniNftTr8gQHgmu1D8DM2K07cXLZAt7COhIiNxwniPd2ficcZTq+owSTQ3utnuLEQQ7OHCc07IPU+553ko5BZRpnMvzHKLn1iHYKdrSY2OEstLYtFcH82uzh0RskHhGi9OUE20B1oKeIKL/4l0tMgAEtELLKpxs97d9o0e6rvX9aA+F5nPOjNHuEFzD7hyHt8SdWW/buRx23B/eAcQmnOZezCiBMXkgO4AeFNpRzZdi/qWMfODNzL1tg1Phs1i9TRZvTO+EPflTSr35mMoGt70Qvtpn/byTdZeRxIRqKEQF7oFkdNeTYM2yyM4vHHaco3eVxlMFSSVueHgRERKMDyv+dsxPDtIPUZVsXug6DahJwLagCBvmUR1O24/4bsVNexnpu9FUmmOv/jLC/1HlGiITxnelDy30ukYenLarBYRoRukK4HB+VgpODdOh5sWwkavNqGqbNTUtcdMU+d6XTlCqfDwGQPzCYkbuTN6MkYwtbBKwkVcrjeC4ga8MQSXrfZQ0yTu2MhFRDdlmRzvVbgonZw1WcbZik1RLP9JQZH94eI9fIX/w9KfFvueU815rJcyZLVhyaM1urAqcIEZNt3tVEBBm82YMiR0o7zPOerqeASvLCiuTQG3D9vAmpLX0Whsk5EO38GFwL9OKLObwRbrNSP0+gaAA0UQ8+m+lMoHgt0QHmbFcgRqGFKZk3hNjcoZcnIZZ0zYr8MEvt2y5il6SPqv9Rt2bcKoIKcDWjHtuY7CrhLkr0E8R5K+JlHJMlWuZtWBhWhZOR8aqydNz940PVKq+5FMWuBfUQJTQUXFdSxXBJm7Q51DadOrBKbM4xRxTv/GGberFdSU6kenTFQvV893ler4Z2IxZPUgvU6IMqzqoWwbUjyB1t1EDvc0eMGeLzJzM4TRLN0e7NctgizYlR7BgvdxGctXC8B+v9+y0KsFtN1t/4ecrOz70rW+AJd+4xcUftS4Iu38tmewdZuNeLZtUeXqrrhNYgtZ0RtzcgB8965X57Ke8qeriHpCTa0dlYw7UjrRkVv8gFKx3zyR2Wd+7JZkJuXktRYlHHOZ6joubrBavcDqoT+ap5BeHo8J9qPPW2dsI3dL3WX2RGL9KUs6kZDurppkzID5SLZtilsKyY4BtR+yLoT1mHLn71kXjKirjzZYqwXPDjwMG0NBfQxRIDlP9tSt1xV/skU2wsT8dWhH7ttb4uZKDAyfFQ2HW3fyGSnrGsUG5ILuJS3C1A5YMP85nA7DwgJ11IHjdp7bydTaX05hRStZzMjFzDcyqjYuSLdMn8KC6efnyi/IixLY+igHUfLDLVmQsU6l74v4COOadjWKkbjX0fL5jKGKbDyOvaUuF0PXnzbS2jdF1/WDatqL+EWU3Xl6HT4TdcRZ4r2ItT7NEo0vD1eG95HZIlgBxVstjP9jxRGSU/aR1UaSkgahkLAOmJCPxC4CXxlX8mUblG6JYCKCDO1AnjnZssbnT9mI5Jjds/KnrO0GfmTgNf4Xhf/jowCGDvjIAY1AyURugJ2FGTnO1skhuNbk6i+v8A+OuVLWSRmfviUTZ5W4kj9UanYasnCuThTC8eQ2phhyQEktitu38wsYdbqCJJPDSXSfRR1IOYUDXnnyLANla4ROltirXNLabHIy+7Xj5pwfINb72ymjkEFzCfvCpd+XIMrIhpfMtkjs46h89+aLtT/fkTOc962+sddwol1b5s4aoKhxa7V9pHMpS3u76xR5DzMV2ju81PvJo8Ic4q1gv4JduuI3boFXH29IsQAVLoWywAsqK4VOlOWr6MXXwmFAVYWGiETiMHE116IfhERPAAk2ulpPZxerESJpFovq/YM18CBczsq1Oj3sz99074vz2AGn8B7YxhpX+on93XhwodaFRmpChQbd+b3yZ+bOu9IRZElMgNQZeFCAdSVcsXoIbk6CBf/Z38iidxehna3GzhwMbmVaPnzPs/GPasOrvrl+bY7PvwPlcryS44pOSmlHLWLY0JZqQz0KNs1OpMozCco4CXvtj+K7ej3JFUB+AKhenrxU/NvbaNO/+OitOQdVZy9YPJuDxhvT0Q78X7Rc2HE41Hdd1rFnRDJpcwOrakWWDhGsSoR/SmgeCz4UwaW0USe12eFPp+LXwrwJQnjHM3pnHjqY2xTC0oGQ1AxZvd60uPO8LXqc4ccJL3sJkNVvkoP+9UTJnF2dVnuJQDzUwWBbzlXYlE6rRA5Bu5Q7FyrrcIsD+jBz0OxdLIUOdmnRRDlfAbUbBDR3/ZnuwD6UvlumKpCDnsF68sg+qz1vyVt9hNsJ3rFnLizmrkGsGGGvGdtNjanznlAEEc54e+9gX3VekvMBtn7gVQW8w4XiFuP34KO/NPcWdehxs24jvEb1HPjsfNiOT3NSpfnMUZ6i26lWCrcbIak2HpAEJfx5SCkMOpEeF4Ri+Oc4x0RhcoZoiMjuo/hCLoJwXFjpJYLiAW/LpE32LFklh3HYR/sM8+S9QXgHOXo3JRH2moftscQR/QrfN6gClxqmBqKctreT2LqJvQi/gr+Og2COMkEXKOzE42fU0IsNdeMKHYagCUABiPRwX4zR4FX4ZILKLJ7G6X9d0tQMTB4dZ+eYr7Jl9FQH1unB0geKWLY8u9+nqkvZlP274JDdxhONP0zX+mFvl7JRdGcBgX+Xzg/VZRw2DckwiJq+pGz8Zt/bWwR4ftrbK74T6MnfTdLQIQmqLhxAopNeQaDFoYosgmTkLZrRHjPrnWjeMZmyLoJA7OOLuc5iohGTiZgiGDusgcgHH4TDhLFpA5Q8w+HkhDOW0Gsodbr1hGg4Ht+uZAKdzMrzkDpzIBqbBd5U6RSu4WnR9DHEu2b+N94JFikDtqS52N7TAbBtcwD3dmgIHXYUMISGwBMaApboHK5BIw3ZeGobWvDG7fF3b7ZxDEbHrVRsSODED99+ushJVdEy/5xKsnpSrT3zm5sR64FLdkaPl1un+SIjJm5KH4Tp7vff/9TN5Pjrjm3nFH66/N6OL8eb0AIOy5zZFIEsbr0cUZHcbIdEuazw2zVmjJOqI72UzjDFtfqNp7X9NOGJ3j50IwwigFYEBdR8eFhwcejRPt1P4s3cPfNOPM6983oty3qNLbeiMVlpSGJjb/PY7j6kcfB6roJJgzzBELa7SiSdVAiB5ZT6rMQbznbf//RzW1phzad6UzPdb6yRPNgmbbp0e+Cb4pr3ZhXmnMmihe4L11bVsoMbHkjCvhcNX7jWIma3e3+RCJHKPqdQAH/k1DWq2bDwXI7LLyeZ56fVIkxDdCWXzh30MXMvyk8rAQfrWTADnrGOKpZnyqhZglfLwuEbBz5VaL0aUwOr90d4d3b/77pT194wcZZcVmk1FdhLH/1Dk6ybGXi4k6MuGf+iKc3Uvs5H8lQrmeSeQFmxge1RBfOdakbvI78PhQuZeu/pevB6osJjIeMR0cCcr3NBUGrQPH76au6GPLdBmgZLSYcsph4qhXlfRUq7t13P7WKyALJ00Rwn+0Emm2uAJwTJgz9Q8Fzckw1RoKah/a4xj0uQM60TgCiA2DYCo6IJY4s/sBlCCKIfed9XA7Qo4FmE4VI4ErWHazBy1fO7ZOyMq2lwFbqmJp1zC+wl642rmFUTJjNU8vWhA1roqvkfzc+rgLWv0UPKVY+vzqr0cFLNZuEc79d+ZZh3GjE/6M1fztLgMXJfrXzYIvZZxoF/BWzebHcRzeL73cWm+waiDt4BQ+5K7i1XkuYdfsBMW4vjUzDjvrIP65y/wXwDkFDZMCjoluLOm3VbJEBeL02/V6CkZLMqeBmNcldiqy2FjhPkAyMlSiCaPJJgGFKyyqdyVTq1MXUBgs8dSXWxr8E0ngX3COfFdlydWb9kqL352s0eZEVPPJIod0ZnGXu3PlvuL3K+GMHcOEzQON4/uorZNN+GD7uEhSzFtWEgt0mwiYncla0vgllopSnAz+5Vc18dm7NE1P7RtBOwwKmuzXBmUaLHGjNKNkT/UB8mDPMGd3dKA6cPlTTmrE4GtqKY+z83UChKT7f3obblsO9n0eS7Q1TsFfQspSvYBL5Fz2W09Q+dcB6KvV90Hp0pkd5MInQ0q05lFYMz8er/kPU48xGOCQNmGjreP0oWRb3zXjCYFlXXl1LbsiBVZ4RaY/OD01iQQyLBkxcvz5giRtvPGRdFtG+xRpF+wHKG6J6wHzexyqksnXXKrd+O5eib4yI2/eSCQXxDwr58XTRiExF+n1Ds0v61b6Dr1AYbAVq2XCwXjCVuOZreGj21Ozp2PTYEMnYCT8RClvWrE3qIu0k/CQSZBw3jyK6UltOLHnPDLl/MPKmwiMkT2hlphzivMkQSoysszvZpVrptS7WVVnEtCLGuuyFBWy4mW+O6cUxD/pKFSmZ9mc3Fh881pS50ro7qoTRGSzHUTTfMaoHUESs/KM7MmbbO/r2t6/QoboRUMVMyuSoN8RDNVZMTiBhyMAmqWqM2oVbTOixJLn3sPVXacCLskYl229GEx3tC8oiaGsxWRNidb6cCatJxTJIaTm6rys4DUog0MYs535c08MjHKRM9+BKBmy47vl6fS+TRx+eMMUcKEVOW9oj6asjTAlOs3/EU0WPwp0iu/zp2AI4fl1z2o7An+wPlB6YimDx9epzOC8seNRlIBjf+qp/JTiIYvc22XF9PQMsHATBV//wj+ljw+PtPk/e1ExKI0UMCeCkAgeESMm27Mf/dq9vE6sYzNJOhVcVvC++j9gCx5cafV5LtNcbcE6K4TmCK0K7ofAkOZ0e6poYxl83oKHZoEvzmyxP/h3PG22iPznPV6gzrH2FevL87OpX5CTGUn/Kf9Hxo6USLt0S2SIt4mGfj4701CDc8EHqjdD2vR3ufraam/fRcuG6ho+VP/r76XqIFsol7DB13VRoRTUO8lx7GyHh1cO+npppACh3uK9dwMAENg6OHTKEk+iBk+Sax2bZPd6QL5MsxyOy3ckBDNJDVx4pTpIrH6xR0/rWJ8LjLt2/gdjX0vAnjZUim6QoJbK4DIBmw1Wf30fWm4othYoDqw+NSy/HlILO4XBTcQivJcGviZ+sI1x61HbnDMqsKNVsYjS3pnKS4pb6HWB1CyOnegTNm0DUvZS2KsW9yjor2xycbPo0vn2l8Fb7TQ53NbfzSEXlSWLlMUPiJmXNJoy5+lA4YjN3WstOmpDjA+bRTHtg2dw0+QtoNLh83YKUhdNnc00AuZXQ2l8pXit3I/vJImLu+kOhn1KT3n8DBexIM6bxSp7MEl335s1UKq19FYve4sR6QTxnaFzrZzeNaJEvBhsxRE5NH05W12EkJEiPHq8zCmK/dlej5Ly5/dk7Orwsu4unnCqeJ7inZ2Bwn3gzFQL/+dfr3EAH95P7LS+y12PqGP/fJ5t9+1+WmRtOhfbzZYdooS81mNnwWNt9m21GE22hlWuJ4pAMr530Q9vPxWja2xuERUyPF1WKVarFavViJU6+9XP0zAqzeIsDV2uNqUh3dg8aq4irt4d2n+M1B7f2kY8GXio1x45QCaFRIOQeHzbIrwgS7DwXzS7PIgykbPNtbidwAoDGTBVoyPXRFPy1NH/T84bN2yiTJFHRhXIDeq7Pi7SALn+4Vss3Zy8nOZN+G/DPxLwhrWzyg4qF2cw4CSwDtcPfWZBpzjzkUyprNYyQP0gVAvVC2g5vOayQL7qwOe/89+Hbtb5O70OErGXDJj4aM66UYR9WP0/nRuX3gMnHK2W8AFLg6bQeV9BcMo3AAnfBkuIgQlHEOzJJGwEtDctMhjw+QjnxQHstAasfh1ptpmDsly9s3L0b6on19e5Anz/ldQOHh6M7vxnyVb1Z5snuAmih3CuezieswzY6UgPZ+wmAOLFGYwyv/qZwM2mxN4xhlPq551n1EG/x0ZPtnpGtT3UUdR68bc5+1XVvCm+zzhEXqqMeGXI1qUjepce4ExJlb6cUoa2WU3cwEREfI2BPlmZZmoSUHhP+9eNmS8bvqe2wW9W85JVN9z5t7KQulJa/e4v6dcrnsVofGeShZz2W4WhAf+OJyyoRg3wu8pD68k5Z5pnag0jZHnTdgH7Oh50L5HTaVxqUirUfcDqmCJ/hZhbo0E9oGrHOh/MXhpX3wJY0LeZh36MJ6HP2iB3vSNKAhBHTZA8sKNsaaEc+O7WlZadVjXxLPj05hlLT9DUa8nHmQCiWOMnEfOAyQWlaTMmwmxZV6uki5nMwg95tie5xJ07VT81fO9or64+8VL3WIMfuzw6MPQcLxpXzcGL95hs31TorV8J0Yw6HgJ/Y0ppv9JvntIueNPtxnOPZZ0StJM84/GOpavHcmRk463Yjb6vQlvfJ4yTZkYCD6PNuE1mWVMVkQNOW3p7BWe3JKZ/TKG+L0+/vD9igHPmr9N7jf4J4P+3FOcrdYuam93cUSYa5KIvqYFmt5QIv8EDFa10Xi8PdZ2HKanQUtie8ZkOvMG+lICe4a52J5OvbsfsUT+X7BlOSLVM7P5YWjYUn4gS9DXB4BCEVSgTmM4SJe+W/9Tn8lKLIQe/mrqD+gQPW/wVB1pY033flkAIwI42dlhbEGLpK8+DFJqePeZWWmPbZ7bFmjiDHOWUzJJaaeDL2XiIm+SxUkbHkC+1fQAjgc0h35zCCjC1r4dIYNJh0Dw9ckDFs1e9022v1amotarPWaVWjKyMfMWLrARRYC8EIoxtX5Yltn5gyaZ+E+qz0d8Tw6XoRImNpakWL6QIc2/N810u12+cy39vGxjW3VTU38pCit8SBAnCvRITfSoav62vepvUK6JJbJYX8Luqh455eKH1yJsTq0GQLmy+KYePcNmoeC64kpYXFLIxO0tfrkVZpQISh/u4qzeJJa8/BFyRBCz8wiOTiDuLCAomEjyR6N/+iREiwtbpjR0gOhPnKrOCSpnUZSzNrdTwtI/JcjFdzGwLpohK1ptrFMq969vT6kfDg1KZYGd3nVdEBBt8imHjhh+SJLq7zC+Ndmkt2QQmcMaMKwqDTlRiRsvSuOjqV7ks686Dr2xyVyZBwsBQSkTh3vZgOmnStLWZaW6CNhgn+kVoPRYBlw+dzWKNRYJwT5zk+/hfc2WG7rQn7TFcBrvFQiLQp6PjVw2l3RCXF4GkMclHXgEzSsEpJMD5ANBvk9dh0jKgR7Jkpqcd1tBRjcn5JBqoTBQCgMuIfHE6wL5/RL5myBcQyYBSO90YeVD40yGCnOyE6tSbJPIik38jDc5QUcH2ZlNvcTkhlSGRUocvqvJThuqnJR9lIyqSGjXuPZtZoa2QU+vfMaFabkrmtyNJnIcZMvSNfts5sGjWuUN/Mb8vlvN51bSLHEWLyendYH8GVp3uDbVVrLYaIu1CYY5Ec27iH1/WjoSNtp5TWwZG4L1hGcK1cRpguvSktAHWOIZnkvLr7nKn66e8/SZtt4pEIvUCRYY8kRmDvpCE9SSQFi7LawuiS13nPCuKvJIhPchiXPYlpWfy4sUhzJjbL7sx5ij1Pkr7oR6ZM1C3sAmNQ+VisBrZuZ97CHKei5jpjC0Fk2/M1Q8Ea3ad6VB2DSKpVg1eZYxbud4euw5Xypp5c14KNH4CzNDhdCs9UuLrIGlrMCxWAdGCphplouDdljjkg15bCrob1BUJKzxIgIPyI/kJK3LrI/B7VGmIN+hm/l1+XcsbdMmi2qjOu/ayIQcxOQFwo1JjbENMHiNVt1xr5BuBgZUpL1OEZiC7+F6WLd+LizYgZ7FPxAcBG+D+Pgh5bjg4MD+aT0KBCmvmcHUpUFStjCZNWqPSvYqVP2/nnZDjSWCQPtZowS50l4sxPHwkQSMbmkMWpfFsllNQXBYVZmHLqeF6V5Z4Rkhvpndzzobm5q98pLn7pdV5SOzk9H2FWbYAmpMk+4/EomCh3WUpa5bRL6BSOHyyjdsNgnF32XxEPdOGe6AIWCIBXlhnFt9w+ipCdXhVvXiot1k0DqG9Bl8VpX034w1XuMRJA9hP3GUWl3l2ZcnoFFwQGV9JGWNuQC+gyTosDzUPUCYuRVaGP4B5jqxzn5QljCv42JF/OhUeo4Z3NxLq5qs0TpJlzmDXCNK9IITV8nOOJMGKRhc8SK4hWjeAylfAtTlgJuG+nOq7okQL40APgNBNh5oksUqntMvTy2TRNI2KJOssd+pAkB2QoYDXkwsOSF5rscbbtjpMDDicVqKFiooktN/ki5cyuRMwHuwFmNgoF/VHaThZN+bABrn4y8Bpujyzy1m9ksyeDEj2oe9RCaoLMc9iUknkwwzFUJ7RMMM1cEBM2aFc2F0SwPAArCNbHgyHKp8RsAciRTbpxTRdoChTO+/R/umC3vnV9moOgwsRMjvBDI0XfzJQXeu+V5ldgrnjHqjIhe4nUk3RO3ThJtlssuqF0Ymsv437sdKHuydy2jZ20PVY+dX4EcTHTVSRoGH9Qaxb0ZYDkVdpm4YBYsfhssMTgfdP9CDIoPRiXmAebmGdMUiF/QkerLO6W1qaH28VT8RO+GxP6llqZx/A2LwY+vmhPxDQrXDbygaB7SGqQdXE/e95g1xlPW+iPzbD2NQZD7HBDxodfA8rwX+J+uwwxD5mcCBnakJQddvWhrCs7M7fj7jfphBW+aMmABXGSxlFuTHD4bt+U8R2ftFuVhOURbFqEN9wAoJZg5Z3klro0BM9HcFChXojemeAj34GINAfxkUBxquHhS9ML4oxVdVibR1LiMYObyAUUIJ8ob5pJVBg4eTp27uztW8HXQsysNZq4wEMtwMoOVoKwxZ1dTfqpOL5seacE+QRnzEjPZIA7tWM6+qU/lPHf2HLp9KT3v4hlPmj237gzu3BJ3X0kt/uBemJRXsf50odR6jlOOfmSdgI13X6oGsKego84zzBPV0DVmKMihbRpHWL6UW+AVB25NVWacxQAUFQXV0KAoM4JxI+MvBUZXbAjKE8A/9fD/NAhMoB8LS33GcAFCkrkAk0xSI0JubEVr7hGOgXik4N8euIy/7bOggPDADJ9RIWGTo7YbC3EEI8/4QQ9vzPVxjB1QT7TZQfUu+xUTZqSHCGZ8CsBHbvBApv2Ud5QnH2UQbpO8LRdQqihQwMzKw2Drwi86qlUaDHAE0cIl05gv+k1lV5OHLaTPKrE6dOQB+coyq1tCRL+pNgx9xbc85RcVFGPwwgndzi3HgGXiJRmA54e84ts6qSa+8Vtew3G/vCwTdbO/x9Pt1JzSXJLFRRGMuGL0ZrgabNUPqS2puYTR6FH/GWpHQNPhCfzKLktm38O9/+NOSf2Xy98bJjn4/84eXhRl1dX1ouyqVlgrZd+v+dRwV2tFdxNaDKrLtiiyajwiK8L6EwvpNyRDgGC4b7TVrxyZnN7JVQb5VuOjOCkGnd+1gOXbVZSf6yHVxekn5FAp2L4x6z7DzgT5+qicDa57M67sSmD1euTdTp/5Y6ZF4sk1trKJZ/J29OAigr2QSTSEqtDB005r+2gMP3D2YdQOgPzkEoqeUr+vSW9TP/XvvF9Oawa4udevCQkL8s69qr98bAd7J1xXn1DysUX/NNuPat3vULd9s95XHfC7G6EmXGC6tqGShNc5q1krdTQ/RmyOtmpDGNQ1+Dg1vhlvvtnfeMXECxR1P7P8iyzxgw+gi++Ouv1N7d11o7sGyqeqH+Gu6WjzKjFmif23BAp0Dc/JgwTOgzUIb7jvf0lrp2ZOpXpQ1p1T1GAykkesBoWgNbcetTuGU+wpoxLD5przj6SPYTdTRsdsp3v7yyvV9roFcCRB7tBrZLSxF+nd5JLo79v8clJ+yIv+71/aOYY0+UcL6AvPqfjSu0c19a+uML/QL/HDq4EhN2ziTxCt09oniJOnXQUduV5i93Mtzc+/Hy743ccWQbx9v/RB6H4HC3b4zRIt19imyPqOaWG8pvdKTlzRkCKjwO4ntwAWDmbX8MVaM0pC4tleb+gvp3E2cJvbDQ/miUN9pI4I3urUw8bEmR3G3vHH2Cou1meH39L9rKdbCowKh2ZQOuf4B0BhUFR85fnfD+YtC0mQ0D2qWhVZBvUshHOWVvaNv89q99l991YsHy4lu+EsuWMeKobQfcFuZ5pwkxGCwp5Njv2+x//wY5z7zyQZNkNV1+QdZ1OjYp1A9V/l+rbJgkTr15tXv99Q96+dbxbff6QUGZGcZe5f9c/p+ynG1RsiDe3IW44DRSMUdkNVSvHkUDLR2SfFLbfFLLLrZ+SSER09T3w+Jw6zcm75gjDgNrlrvwIhJNaW2D+7eYYHjofDFWBx8m+Hn3T8FOOHXu365pcO3yzKnnW6z6Q+W39jjyP+EHMjsIbo8AXoiPQ/FiD7xqVzw+Pp/98QbjagP7MLgo0cUW4UMMeu26p+x/b9mDIWW1163P5/AMwvtvl/i2BxBPJ+ChqgnNU8puGtv6awCPlnPsYdG+QAmPMAHaz+G/nVP8QJD/B8IwC2AOTMNweI9irsgLM2k7I5YwL2Yr3oDkvedix780offLNyMG8GSK0AtuOS+7Jkg/neZ/958s+bvv6n20LYIOFQiJe8bjR9bgRTvnKPw8qsNsTNCE3t90igwJ9fbAp6mlKQZGT757iymcgYXCDF4oP68oGCVDuDeAZgP5HfEP7xv2aLbg9eHj67BexROadCjZvUhac2c/11MMwzFalc7NpxV/RzkIkxLTgq7aHoD7lNmdAWi7wnXS8Ml+NgJvATOTYOhv5jQ1gRqEioSFjLGo7iBWuQBXUBT9y+Z2LGoQYpG1H5b1TjqmaMm6js8VItxGY6K9oSTNuPyWHccej/ZXQipE4SgPqeVoaMmGBrHjaDKR4DlTbx6IKFiwRmGeTGAPZ0O8zNWZHnOhxZJ4PK5JilrGOspdeXyj19ye1/0rooX7RtkFNpUcIVCEtXw48gyXHcLvenE/9++2r+J3q5Xrb6EorKe4TgvmGAQ++KkqXyddj3lUmrVPUfiT2gYhM3etPW6AFfOiIf0TkYf2QX9OvbmJ7VmdAp1U0uZBrg0i9rnx3viU9882q9Hee3O/ixSVGYSPKbhYIPE1JPCanHQdagAigGman8lDnehA6Kj/YNocRGEc7cehGJ96cUerwlSZd3d7SBJ21Ip+HQczJ/OoXfwJPSda75sWiunI8MNgJWnsPanFboFy5FOH3RMnc1MWR6uHllMQUGmhL/exvN33U0cE0eMAgzAQxpgUfqLrzPmggnMXsOIuzcodgVDfKKb/yXF0Nc8Mkpn5IqveGrOZY+7iIG7EO5/8262FLdC++fLV11IMllVw5sWvLdjNStdNx+mtCd5p3Wj0QDH7woXxua/G2SA+/LFa7WCiCn490OAn6QKtbKOB+5JM9hlZNIbbcWrcNVDdMl9vp1eoSqtmNggtjs1R5Tyubwmk+jGTfPAM/JAGpjibxkPkJmVNrt2xRxOjCsua6NEytmNu5aGdCTd8pXsCciNk+MQMv6/AT49s5kqsqPRfP3LBpgywQ4gU3GswB8Ek5ohn2nGJFQLxvP55adV9/wdIPZ7OYihKTJPu3cpixWpNsnH9mXHtzuZOg2kuNWCNdNTDKrqLNj5GZsCJBBGalru648aFEX8rM+O4VtudOdkzr5Kh/+ZcR7Ehd5j0LcpmiCwJ8a3egdPcZmJvkcyZ6hyJh1gm2S3G7TawiQATvVlglhj2gRNqtg1t/H0cyuP9/ZGIARrJh4sxgL/hbJ6G8S7o5Wd0G3GAt7oksNRYH0CNDA0iVTejp0yruiT6K9VSQwjtJi+MqRmccKZ0Ul82B4Mz23Bl2YQENuv+iy2Ppkk7JqMeWxf5Wna1mrnU17YU8sx+jzxIu9dVM30Gmv+SHl1H5QprXDD1r17RCrzYTfWO/brc9l3yqrUPY5ncsq93BDdtOblZpp5mNXk7hLu549jTyPMeg1hzl65CZ8bm7MAn6c55GXwiANnTUmvFIUsUWifNl1VTdSJTK5IdGgLLshSWj4iVS8z5VMb4itm2JlvgIZDPF+vowYInWqstaKXlXoCZCdwOei+04Cq1FfyNZSu6mnOUjA4NBSoGhtG2EKhH6uKkZRg+vInPpzSBfcMZ5hPINE8fmpNeXJPbkJOFAtmdr+VT8z4vc+9rE6GxNMfAi8qPMaUPVRYvp0v1vxXOlfH/kBPBubm/j+/GPW8c7RL/S9QVCSpiP5J6PG4TUsD/nwGnB/9Vrlxsn24QEtAbGwjup8lxqvUGqwFIHcKuFUJ5PeTifa+8Bf7eqgyC6FFSPB/Lj6leDznGp8xK9SsU2CiF384BTcRkmyrONFPpKOkrWASUPueTSbXs0JBo9AY/ZbkHuEwFADaCTqJz3ePTatO1Cr6lRbH/QTXUGD/zBAbSR2O/RM2WFD/+dQdxdxrYYhTHYfMvoaqK4emKT4jg/dlcOAjMD28fKQibZXrfW/+2iu9B+N5mPRMOCBq409nAMuN0ZggJeHwPNeHNZgAr9JQjBAl1W8uajuRPo2EUgqut86RmK+vlXLlBF1wL4iBDE9tpauMMS8vurMmbt9dytQ9X0AEcIWnox3OkGIXK2uvJM/q74JJabG+696ff9ZqoXc2HQJQ86JoS5+69SgNTGhaj+taLD2bpRkz4BGt3j3wooC8yQ2TGqcRfzhTF9zpELwS7EofpwKACs7xYtRtKbLjV0+ttXPJZzQDtfPMXr5BVe8njLX4f4ATHuqWgUH1gNy7dJH/dVGAp1zyzPPnClaWA/nZvXiWRVnvqp8KZRSbK3Y20zVcCt0TDNd7SL3vqV+tT2x8JtgJxLs4vkPSB9hZQTENUkHMZOvOfbdRNHIpJr3vcJDed8eN/tOTNr4BGE5o6IV/w/wLFw0J7mUv5Am/dcmfZ241jdYxK62JXCsQoJT8n4vPV5PyVWDE6OW0ex5a3VQRH8ZYH2Bh4zmtQXpD6EmHR/LSnFuIiI1FJBBPNgN2l+TFeQaVrkRX8uSshkhblTk1wqav+HPW5Y2Ye8rgfhAEDwTiAXLPEjHsZh4pzx0Dl2C/taLjFOrjjfQLh1VNqjMo5MyZYn3pIAL3fMLUWif3InSGwp7bSShrVsHmLPM/UE+NzFStr9qgxbaebUbvq+eP8UFjnp93aIYlVEjG73/hsWgLEPkIJ1Jqt2nRniUvr3+uU+1/bvGlYuDfxqVPkkEE87wkqr0euTTvSlQ7ak9eT2tk1P0gmXEYzB5nIdWil6aSERIjw1nyXZF0N0n4F8Y5ewi29MN8J+DhdKzE3zDk8V1oD4R/bkITlh3VP37Mrpq7mASA2I3podVxQbavklXsw+n84Jp3Q/BPu68wT1WDLu7COngjApV1p+C/ND/CC4yfv21dG64LXpYvX5ggt4/BjHe3776Yqfv3bvrvgar0DMAGr8QtnvrQzge98cdc3xo2h7jrk5suDXlf7+DRau7xoahvfKZVx6TmU960koQXaUPJqqFM/xNJ+bC5mDdihv5iIXgVKq3MKVttvccOWMlgkwfOUzg17wyQQr/fG/WsraBd0XlFrw7RcLYQYFPJz4uOyliY5UumY8XSFEgXObZtEQSI2YCcQGAx/Q8vKZvdEnEG2vTv/K7Sm3Dl8O2QK0Bnls6k0cRG2aYMbN5EoSZcMPzRQGqx+ctCF7x+WaenSFaZ5+HcL3Zc2C+50ODQBgSLUI0xGZEVIvRkvloEhuGlSaS/8AC0el+IlTBoGH1iIVNLMKcTwsY7qArhpuVfHlRluQ6scMdmvLmWbV51SLvXrzWbbubkA8nKlL1z07NrTWAMAaB1mh+9Kl6HkscVwPffZNa7SWzf7wC0dyWYRmuMfDPQvU4yrATTVxAl4nfsvUPxPu2ZL88wrtZk11bbE/WTi6gTyyC6oWmOOh1LRq8Y5itQU46oMHQiF5Pv+iJCPf/RcXfTtuDg2HT/dW0kRlB9euwwPKrg2b7P+58F5jj57OHaqTw71JLLueOr9a9I2T5O/nqp08cN7j94pG7Y/DkY55SqS+p0idglv0PiODrixYe5tM7breuj9Ul4sO9L1kTpWz7t1qgz2n6yax+karD0VhJuEoOHr+Ogwnlsql4M2XgzCZhywc0hldNUXKWIeOuA5+/PK/wHV2dC4SGoPFYhG74P3yAtnfTYaU4STfjScs62i20/iKxJChACDDC27TaEicDLi74lItjIpvwvsWLjq9jb1YA/vaS6COPLunLVqjTLYlVbPnX86OqZwUrvJCqtR/Mx814m4MxYt0OEF9I6ePQJXMa4+XIP9E7yXXZJdjbRBRLvs2wjPxftQKv9qw/NJt5jfGIKpiP9Ip1T/3dWXqGpf0r3Pd8vpZl7IUqpaML7lxRKC6cANKpuWi44iWafsWGQa48sgNUVOyfBc3PSnNLktBAZZMYW9hTeY0cu5L1UpzRB0zKvuRo1aEnxrPbWhQ/RyB489sht+2FdNF80BjY/IBelKkfJ3DHCPkMg3NbFhfbbzBFDTiMzu11ixv1rgVKyy8cpvCKdYqwoqhDW1wUYm+oGls50SFrgMJkiJsP+HtTyuZWi8c0Tov4WxskpiUXhRKxUiC7OH7alURggBcydpVocgHjF+28Q/Q7l9npojEaveAt6aYZUU+BE7FdlRBsuVb+Kz4lhWRLB/lKROnIuhbW4uKBywLgQMHpK1PRqxJ5JHb9915yYPREvnT6Qysz9u+H04BUKaet9ueDPf1ttw91rTeG6pDSzifa1Fq3hFL13gyo+S8Rub3Z4/w8yLRUy01TYEVBokQfxM0GvYko3yKDP1LNoFuACKAw4+cu1tp6lpWwB7OTUUO9RMp8me00qit9k3DzClApghQXdS2mI50yq3Q10mI9pxgysJowmbT0o/0bzP29uRSbqjGS8Ikp+qwUckjEHwhE5FWy8DQzsPBnp22p5/t2hwmyVMWndVPgkaMF8MJb0nvsuNOy8A8V3qn1rIUh+aa8kOP89xUMKICROLd2is7xb5aVTXSYmZD4DCTm8MlJoxEAbdqX/9CzMEbxmlJ1GnCIyAqWIs1uOpXC9ATlF3h7q+PufHhQc33P+zU3dWIihjEOIE7LGTJZHcYhh+fB7LHTiXlfFreBGc1oTMj14KhbNX6ddwvzFZcScxFPYXLA0+4ECGf5QcWEN53FubpwXqEQwYRuIGQc6kaGxa1ELQFvN1TKHr32FWOQPo7OhWJDHTf/YjHAaAMpSMsKYjqgMlXr2UgRSTknKXyZ52WwYFq8UCCUbu8UhhvoyiXeOU9ESUFR0iLENyZXT+G+yFlNTfAJKH99nzyDfTFUAHYTYddSGCA+ThYx2nScgnFE2IxQf+YadP/HcgSjP8ao9qjZ+CjZ5+NWsEFJtkxRoqsCFSch6/STpzwQrQny//iM7teYrndKBWIBQdoQq6jLRQasKK0OsOxZeyH9q3Q7MPFSSwqXDd9XCN++eSPPPaf4aHL7hWfNnYQQdSdEyG+R8SxlF0q8QwtXp7T8k2Rcw0CilmoQapPXmcLNtYaSVCGbCj7ZvR/QIF8T7tnnJLTFOCZJPA6mS4GhDYdpV+EqjoGkK5Y5cYIS7WIE/1M2/eE6bFO/Xeede/VZHU4TGcYZeV5BlltvQxY9HeHWEFJfKqXds6Het4S5DqH3N82TJlnXudfgcA+/I0rwEj3dFofr4Wg1jpo1GqJF7LYJPYkN0xYcLT0zBApvEKiK77wSqoojHwXACxcZLDhyoqJ8CGL7t2fz0ysoj77u+/kdequnXdKaXK+5gIbJO6wx6NIEjzVu34TWny6V82k7DJDcmbTxrFAPFZbyS51Rg+AlHwM6+0rQiaeSPjARfmNZZXejOhjgQXb1Ry2Xk1IhhFf9BZnnfIQ9zkeNwxUWBDhi/JLwg5nW01BYniTCP0953oo8LZzYKS7MZFEjftKvA8sPwSzkLBkpPaKIhbU8ABgAoeiT1PyMbuRQHAADeq4kW9LaG3q0d2IjYZArsEnAxgWsAR1TV+eBXzMT6vMCUYRZlm0L8iE1cNgS1dXcs4HN4+/JPIRgZmCQDVlZ7Dh5+msUQWpdLpyLlQlg1kxzbvEn5njBxcymSZDODsKXmiuBPrsy5i5MiLFhDMq6AnmbSegDlCT3G24yQI9VPaIGNUpYTWNK//fKDowaxY3RZSmZFOTKdYdwyGFKDEi7iIXjrjcQtw9c6Am6m4FkXChNfqDq0T8qhf1GN9peGK0wXZpt7mrDpRHLHsxFOrXcwKrHpTKg2yuvFtY8s+TEy0qw+NEZCo4gx0/nNOpQ6EGNliKFzNGcF6qjGT0QP6RYAqpYCGMoJrHeyKIg8c9XzfllKfnqYvHnxCDtqZKb+ZEXbeuAFTxYMMINvvShAdVAV4RUPT8PGMyLCOWKgNRNx4BE+lACy2IGRHNlNoLJIj2RR61XhaovdssV7bTJe5hQDvkzIr1ZV3WcKqbGRh4zeMVq8FTdJMFAYf+OFuoc9yC+8CifuPy0CN+PF2dXBvLjvmN8X04mxRKmV09vb2Ze9YrR8Hk0xZOfmN1dgZuZnjyScXTXa6NfL69VM1KasDsKUjEkGgMIS5U+RtVTjtTbhy8GzechsPNKHccMZCAc7JyUFBYFjXMXc1/k+NAkDvMBoGQ4abdjPKaF5sYP7flgv++5vG8kqEX3Y9GwmgBZzr2hGNB+NzjMw+OidYpDC7eabz1Q820j2XX1qkytGON6yqhhDkHvRKMjefgTc+jOFQ56Vzt0lMe8wHGnRUuCeY9975r22QhwNhE+zXNpv9N2ZR3d1ix9VfEKexI57LhytCIVu0niqpi+MKLsXqq9wUjq2LyO2AQR5r0n8GGG8MO3HvXPlAxJuuXhiXw7PQ4tyegDXbc7LVwHwqaJBQ9pgrbDnlA928kKyruODKWxYRzO4JT8Ga/yiXt4qVwhaxxJq8hLNfkjTUCGDaWaIynANGMzlM8qjVqirHoTMnOJ6vP4vIFlILjT0ZwuNolxoLwTD/2JJzTwxBChtVBn086419tVPBzRoNrhEM7jnYc52GGnKvipyRNuVkj/9J+I700nntmeErkPc56xTczY64fXDa8Tbhie5pQf7PVA9xkRrnq7Ya8AtFdtZmKoE0hi/hINvL2RnZ6HFGIDNrMadjC3Enqnr1M2vrx+eAPhdS43uHSf9MbvGXbNRqY9h0kPK7Yy0mbS6Eri0q745FYvXBTUUWBvf2DXA0kHwu2IV035umD9lGpdaWWp1nuRcqVe8qpUdaoFohGbyqCKm4g2CwPz2TXoiHhU7a0qHQtK/tE+dtlLiKL0TWqZPe/CnWxuR4l2mnKUyGpeL+i00aO+dzloqcj6JXDwA1/dP17M8R2EDoBuh19eP3pmo8m03+u0FTdLeh9thr+wBQ6AW8EL0ITucocqdirFCRYlnvkV378G9ebwfgWD78ZotqiLZ+q4bTQ8NQBUwNnxF7kcVNPwOF22LKoJ4Ekcci65d8vYHiQVp/XaV8Rjtg86ksib4zJwTqkH6gS7QzqYu4naKV+vu0HcqE/cteBGXtHTEqYQ6NfSJnj16KYlt9Wf6fZarz1lnLZhzxJbcL+GMRvXcfBY6uLFIzp2MfZmuOWyf0pwgpKqoq/U2UYObQzwo3ghHfUNHuIOXVQv4pU8ZXH8st4nuriLLyJmsZfOvEZIhmA0vPy7opxnDuqcogP31YbEg2yWGwMad8hnzC3a74U8gTb96aA56uGKw6wzq+c4Ck3Xi36mGzvkKnd0HA48A5BAOQRSQXndAGRcuK8Sqh8gaFYgpWWd2yoNSMItCeFjTh8R970N+fo3QWG6XMN4spLQkPJL96u+6qvhWti4O+Do+wNVXr8kW3fvYpHcn6qXfyXVdBu82lvXb/rMtT7G7nYXURdU9Hu4Hl8tP7WQl7U67GA6WK93OUzBl0EOeAH/dOFK2RlNlqgScTA8FE6cvo495k8xqL+DoZ8SOa9dm4hCP5wIWD9TWfvGvi9T6nXHOpGzdfUoL9V9ZP5NssAUQKUrgEd+eUTXH1DnIJuGit5BAi6j0JX0YMwiay8IGVCsTXi1LTmseHXoGfBZ8Hr3Aq6Fq/dr9yLgFTY3U1Yz2DRCFVra8XWpe4ltNKji8rIxRXQQNNIfI60272aODgCZke5txHxHNOadZ/UUOL5QgP04bEf3NSZ/nqc2G4MMjoC42zEYAM4U3goo6pglpC48kpueE5E9OSe+o5DwtJfrycqg+ukOZKcTw3F5x59v+Pcu95QyNmIv8EGyRSsKxTWIA05daMpzTe9rGW3eqHMzvZhOW5HUJT+7pXVTXj/rCjjdLPx/Va4ewxx9oh4vIAevmPA9TzJduhQ0cUK4FXDJv0nus3xhwDF+IRxjXuGP7onLvmhqPqzwxiCDeuEKNMucvvwp4uacTDyOTxc0QgGGhXJLFzQtWD9TO9VspL2JWxwlnHX0hs7FHS3wwWMN5uLWhNSK0CfD22qgrXHD5IJpnmrze36KxxWUfOKzXAKGwKcwdXCYc9hw9cyUM0EvHkVGo9+V0NtcC1iJsnMfqxO87r4/cdJ0v/fhp/QIuDhSaHHDcOulJiD3l7+iy1Ha3d2ou93Tpu7d93ZFeXb2kZ3ME4yozSli6duUkNu3VyVZ5XoCLq7E1TRr0REMfZmvC6ODaF+sdwcWjOkf6IKE/DECfeMwzl2y2wTKzq1aihVrkwJ2b8JqrG/OiQxfxnaj3Qx3ZAF/HM3G3FC+4ZwgJs10nZVzp4YVEZW1uMAIIVMk4JzL8orTG9keyvki4dWN4HX3sDCcY+gNw5G7+deYZxEPZg3gJpiiMebKjHk0yVyZAcgfBvSEiZs42/xp8RwHRafEwhVMKD0FjuagDinBccsV15p76UxhmPjtWrA0k1v97T7d2HRj09q0Os0StQBaY7Ijysvjytn1QjAdI4CXFouVWH4dxp5ZjobZn1MzIiZkRj1BDWujimyMTvO4zuDWW/lzj0Qm1G3Kx1TD9xBibMnkVawjjtfEV753aLXdpNrkPgZe59cMx0c/EnSs1kvrxuF1Qync8tZ/fw0uCdU0IvafvMba2FZjMrhug9a5GDYK9/K1TkXqB9CesWBOfbJNjzDHFdK/8/7rWDyHFHMaPblClm29PRcQeuyfOf7Flt3XNojueZWu16uWnPjWMcsXsCqaOsxNtHgP066NZt9fOH2txSW9yW8Y/fXq/UaVPJ6hU1olbKm7Cv5itQ2QRbhduUbuVspp8tXRJiYOJNvlB4ReFQ8Nh/J7yhVm1ZMXbnJC7XZNZZcqzrhfYMpBKLf7mvIxgQzfYjCU5ey0UNFyFrihU51qyS5+I9xzy6uuxhig+G7xB2ypYd/2wPfO2Fyvf7jrailx+PRfH1x7eHtK7RDd7LFvIWSPfNL1FsYtEUCi3xj3VoVMgwD30C1j5fw7lakOb19qnlwGGuyW4zG6bq3Kuyt/I5esBF/dENB+D1ZEp9ZxCh5PIEtVeC6YR8nrcZQB4t10sbDpsD/pcODgSlwq0DquJ5Yl+g274Ec1IxQ6Kr0rfDci2onIMNRdA+Yxfd0kwdnJP+XSy6UTI0x26p/VjgmXaGKSF9m47bbBt3TzJzA1Kj27fzgFe+iJ//gU+MlXm7ah8jEadla7dH/1z7Hd+Kla0Javl2vzZpWfihzXVGkt/O1eSuhC7U1/0ksJBWwRzwCA1F7rLwfg4aNFk+hr/8yZX2zS46fufD2zT82/NFJtTq2YtKdnnZW7NpNMvRgHu/STzhaivU7uukmsJ77DOjqcx8tCbnO99mc0zJGePcZMLdMqKRwDxYqupIxS9NSGd/4f3KKzJLxZj1sDV1DJj3pbD5cXnyHbMvp3WT9v3zT/vUp+CuwTyTDiQzCIuCDUEFkCaaPH+rB6ILnF+0PgOe8R5rh7Epw1796Vsn32Wdt6ImDvAr0bpVQc6Gh+ZtXNOM/AgP3HcDVXi8cF7fXGiZ1ZRdSxtZAwBEtkQOBLIYciProR3dx6X1LMTtpHTqGFzKEFm91A5zxZXkUEcLlALC/FUkZx9FIb/p2cnrLOT59OW5dOWxveGfnsXe3Dw75tE7X3z7/fjSNf1+Zfnwq+7lwfTK3uRUvBm6dx2EGVfv8U9u7bmEePmN2vIAkqwz8AFzzBQic6Fhb8JGsSSqoc2bFuP5nNP0xrE+0f1a9yhTZf4qpunnWbH1/1V/3m+DGe/3H/Zvn98v8WflRcyNh9734+3v18uPv5e/Wi4BeTSyUP8b9fXDr1i/oYm//zTwv/yykXhVvsdqv7qzjcxNNt0aiuPcQ/9YkG/xV0IiF4/CxG+hMY/1hvd9VybL+788fzi14z9Afvr0B8601pI+MrrP/4p5smWdk136g9jOaaGWPXsTUp17PxofE0O9o6MVyFbH0YoSQfQHzNrWv1xxfSPp48HDfr26DfuelhtD4FuSDeba+Em/loizPjs9V2CMqZ8y/n0w1C/8yhwZ/F029Iek2nK+7hfASeupuVCvlPsQGirqPi49La8l2/Lr3iz+9pdUajQAjXf6f0x9Yd9Rve0IsEaiAVLaoeX9TTpQcZGZgF/K49rWOcwgya0+8LVA2Mmtk2+O82VA20KZoOYdMYUPxP+EkkD6bb4odTkccdUtC3BLUGUJPfJM+8WhV6BuZM6ntpW96lK3jT6raGYKaYeEQW8/T9PlXxc4IqgULhzwuqBgGt7jMLthdChcm3UQbw6qNVfbWKAbUH3WAsgI/tEy+iUzjuHYpuUafux/yDE166DMx9/KtG3YVim5hPcoiy9mfnNeV1KQGoM8bJzwsVFn+k44CVOF4tFJfyVxBKX5BfDQqEEwTxtla9kVhNyfAvJgo+MggIQcxyi6ahqu3KWKVEHxg1Ds3LnTaWzUSYGogLKnXwgeMGhvz1huLvXNQ29IX0zYciFyFELhv9qUUV8RuIOhfaA+UHhLP23Vc04C8J9V93HSz4frzfpfWbKdijg67amk4sX3U+KE9G8+CVcP9CjUv09Sa1rdILIN/dOVXrU1I1WtOanRRZHv3aP/LNDKx9KrFu42tdOozy8zOvYVOnN7sxWJ/rTxcPp6evwW9cNxaulUpN13JAbZ37Me/aHB8czQel8k9xYVrihUv/MIf9h+BD8pvfXH9y6btRGyAlhONz7lnFQXjvXbcyxzKZnE/an1lHnN/O/WsUTXmRW5LuEE9Oo8nYkh/dyqQMJeznB3eNpMdgXqG0LRKIlp55AamrppLI9oJlvQEbBU9+YZRH3p9UvNfOF6RZj3i84H6POrDibE5OGEO/VAxzj1MTx/g+XUSQXoKQGpU0ku3T7yuDTBT73ePV8Yf3U4QPaSQ8055UiWBbWf/zZqy/4aF+uPQPkgAJr3SbnZVT4JLd0iSfj9G1Eyr9Ku6N/fK+q2j7ibpsxNiOQP0mdxAj7+y1zW+xIMlxL1/hFfdrxvktms/hXcHA0Blp9t4MddT7XPwlag7JzvUySuyzSNEdmXpiqxRU/nP8zkM6r0fBxsQBmh6kchrweTKB/luzkl/qR5pfRBQK6z8Qk+g7+fi99K9tSr4Xw2U6aI+vTTMcmBw3SlWTVIS50P+DzLVbVe7qsNoCAXu2CUgv4xQkNdRdd789q2JuCqeI+Nk0zfRTajB427BsKoUMEXypoTQaE047tnviEJfd+XT9jPThP9KfEPZ9Q/izs50t7h6S6WLqpBJdPqmfo8slPpQoN/CNodRHqGngykA7l/TKFxNkiP0A9CIJvqARaZEeA9O2+X0tWv6B3Lk/x5k6u5dBFQO5+iZ0yulaplM5mvhDxE0/chcExQbMeeurc405dw1vzRBe4j/53k7nbML+DjVCGl8afvorhJIN7OgRmg+Bg6Q4LD3E6admo6Nc+NGEnN1I19qiFbBiZ/CkjsSWhpxD7vlgZGjTDkRgHaR7yEUfNuBog+6FZIT80oWw8dHUhZ/54OuCKc+h8bGr7xbaJkn7p4x2qzJBn/pHtiB9dhLim7Zpurpf1VjdNeHKHPmPSAK1GRp21imzDguuPgZHA+T5db1pou4j8W2C2DeJWBOgLyJUkmSgt9GixbOgRDJ+zn9DuybZQG6TYbH4HCFTNTg6xBaRmDGpSwHaonwPattIwJJVwbSrscOQRyBoVdpDpcVLuJyWYmJIOrIA+RyAZKVFm/zRisndK1xcglnP4AYX3oYRvarOzk76filEWcDWyQ4db8PEorGS/lyfQ/pulWnByH+F5GVqhNkvLZaN2nRKojtTPjaFdvK/xwq0hq3WkhiEyFalfomOnfulUV0mvQm26poIikq4rXDiCs50l7cPN+LSB/fbcrLRRk9CKHEbf4Ip/follpWwVaXhKyjnPeTmLXxKNNbnkqALijbS+PcAbO8aVssmloQcS4reD2p8AU+9zajwLhQ5dVU0iJx04yc3C/EzON2vDGAT5ctAnWsUJnKxeV4LYl94TIG72/S+D8fr9CxzPlzWugne7t6K35SzBJNXhdUAQy+JJSlco/Ga8WQfcAW4ZV9SUjdJj4b0G+Nzp1/D+zHgIeq/GQ1TQRAn3rvKG+fuL8GlRsRtu8+klNZcmnzH6Kkcwz2O+hIjetNZXOYRscGFwBhKPbGAwDYsdcic4TgV5XfKGktQXkyCiXG0tIUJWvR0bAtSBM4zaxB7G84vGtkaY2EhaLnA61b3YTTC7RT37fZrMF3iBSBZmHOuBof+vPYWk0XjV07t1Tx/ol/7T7IxLbX3NEO3P9m0BJzzqI3Vd6ieY36x5sIhr4hnVZ24Ev8EA6w27EjCfiW+902yehNvIUMbNL77Ssn+4n7v1XH9JRf4kPVv9oktcgcttmFi0UYw/br/0BvffMGd9eGR5Nn4qT3vP59RyEAvdGSVj2gZa+7W765+1MBJjgN8Suzs63Vw/sfYMmzkT5xI99sj6SBcOBTffoMDLoFZuLhL34KRVYoeJaaT1RYJsNBInDYlg9Mkg4wAObRIWsglfxOl9xLhZkRFQ2OIv26+AC+SQJM2WPR3I1piXPsQaPFQItlCym3wxQlSXMbwAQSE2dCuceDcAcnsw6JXyMTVb/9OZ+PHuKvaVb3F6p1PjeM8p/+Ji8bxscf4JpPl2S7GoHc9i9vhpA/vvvvlpfP568FnTNdp3h/biJY1hDmQa+tGjdnXW2kVj36ATf/aLiUJr5Cw6dXF+RPXLg4AED1nNs3HFvjdZbfa4mv/MUZs5k+2pYqa3Gj2ydTmFFVkn29blqKAbb8u2PhoxadTQ1zP9eUkhFIL4/4Oj8LUJR/iQAYg9TB+FnACDvHe/KUSeD7FG0WBUTAnGy0034VjnvQYrGDak1eOOrX0n9T+1J8OsxwcKMyBNmXAEm1hdSGIJDL4in/o+2ClEb4UhNtI7qcKsBUFIdeh7XZq4Ut+ninevolLBO8hZRCkpzPTg5YDbCeV6PA5+rsp0axk6vH0nDo6UcKfsh6LrCDaphMB2Xxp1bzJHZq99SxdPKKXW79Tb6ZhtKDjqnQOBYGxAUfw9HHMv1ovykT8lmT/OcngHghW66wZZ5peTj1dLf9cGxvVwF8ab9OjxsSBNxKPd+g3F7LvXZTWu21lyJDJVHu5C3Tj/KagrFVcDH1zIzjvPl0Ez7V+44G6gSygrgvYG5/t89htIXXjdnGvOjSmg36qOd80BgO3zLBdMpbuTnez+L07jQ7q0NdNe8kPS2isdfQ2SmVgTEZa2EzHW0Ubm5DdnGoQhSQRNfwsBVwNCskx4/WVn+jio1nHKI7EtYvGZTFUb5UTGXWLeD8D0ZokJQNUYRlVhqSoJGKBVda2NYbrSSkIUWv/WXq/+CFUDciQuz2It0crwOdQYKeGbRIorN2Llzo8UdqLA73MwuId7CN5lxff/YJ758KiylcSzR7pY14iv2rIfXgKYJskP0Mbkn1wbiW/tVw3L7qap+B0GzlowQhQQdZg7xtYxaZjqn6sf8DAL8NhXvfOniTdzZxQnW68TLgzlDpItg2NRSVsJooz6aKznfoH8ttwm6eIAeFeJOWYewkMa3nt/Bpdda813+Zq4PBLAJL9DLAGVytszbe56qdnAGM5bVQJvIdJPh5eUOiANv4WtH3sbR7y2DrXpdM9WP+6W0UfIjOK3A4EuAv+DgLFBVEHnMDQy+/qvcFHV4bDoYwcD3whDz238ncDdQ/xYwPInol/GgDtwAdZn+BbaM3G8xtilWMsgEAJL9mZv/xj/JqiX2TOzXaTxLwa5xY76h3OspKipCsLRcWUeT1hvQsuxqeH37ZtZ6gV+X08qRWse3EjNm9BoIiF2Kbrj87Y9SZ5uuaS818H2kay1lYha9KmYzXEkNebtCy6vLmkqRpO67TfSEYfOO5Pw916nGCHTW1VgyUWf+uBDFJ/bZTLqdvUzJZDaE+7znJAHTgg4YxWEV6KvVfMfMBG+yVp3Er6C9iudoicqvXXIIUCae+RIMpzxjGYatitlcWOaEhHof1pa2pNE3O+xVmFxTtrEC6oZeF3c4WufBsYIoKl2bdpQep+vCzwLU5NffE+IEV8QahNvJma9hd/5TttGjjGRds5xu7MszscIVe9vrECdYkR1wdgfnV/rEPHTzvpJg7roLDWb6UDZ7gi7xgayjvVU0IwOTv7SaIXcKG1wGsbqa+UvjS/1jbybTwt3fkU774XDZGlLNIihLv+rsg59v2frGfTD8qtUbex5pr4/6qG7ksNm6P07ZOqSG6uoTlG7dgDutHARTWeluPJklf06jKtrdP6i7SK2kqOfhhSKMZq/tNRq/HNosnab4GTs5h08Gex7Aj4GxJDbkS89fJLwsyop0OAuT1iegLTGqf8kBTW2Q+13ta8SVNDgfnDkhuUd78C2mYvvsixpcwLkOWaZyKJ9HG9pq8315Ta8+E3NrAVWxulxZKBEVayHlzcRebKTqE5f8Eg7pvGVL4+N3kZ4QRXhLO3gDxTrz05h4NUt6UWKZSmMWnrhZOxW5175NzfxE2CkOnUnKHe21Mh6wAnhUZgd0nftQTaAmg5iDuOwzgxD0q7xODnNELqQ5das16ivGt2KP7Jt8Ernd45nPmqtV46GtXNoGZWRBR8UGYTkTUMJFGDUW4GD4UoJIFgRCI+hNEyVbp7sC4DG0O4qKj38Cc+qJQWsQdk1GQI5Rfueh/ZLf+hlWJS8lEUn9BjxAlLk41gVW90CFHyvwPTKT0bkU2mbs4BIJoJIOLEK26ZbBVLfh/PpG6kCAEAK+s/uA5KCI8f+OhH2B6mIFios4DgwKSVtg/PMOSkU51hDqO8ADmq3ce3hhpKV2lKFq6nRI1Kj/Gm1RVGtrvsYjMmGU/tS/fv9i+mMRsrJJby0iZuHesAz6dO3kwj31qH54sqwotWLrGE80UeaqRZE4p3Yj1ffLJG5qrVVCHFUJXEkoSN4kdIY6mVxXLI4sckiyWQxo+Q8bFr1FYZvduQPofBPwgbL1hpsBECTIptbH8QiHJUaGtTj01s6ZLf4SpjcVTm+qaD84zR+YdzmmSBWhkghXVhnf8OMs3jhgnMLaFJXy/Cau2K+eZNyMV+o3+crV3zUzqYx3Yl2XD7LSy2Jgs1yAgE4yNB/imOnDjEWvBhE9RjzMeEea23N8HtGEHvsCPQkIpjSGDsne61a5dJMAyMKHJ64i0UE8dbhctyX1ty1kWso+zK+njd6JlcaY082wG4XfFcbVBGFaaXZtfq8awZj5MxSj/oz/ckqMGCt+QKrGhx+dblsmbVXzVhBk+yai1GJjSGKdgBmcd3/6IpJxZmH9BIt/T4TXwBkedGlVpN7mdSXuXkaBULQ++n0hJ1usI9yontxwv1y5RZUJ7VjQCl/faGbarXMpjwYDUFwTwXPKtZTrGILUTnp2XBiF57pTSHhul2M+/nfQx+H84bq8u615cGsiBVXeFfeqTddDdq8gC0WonEyTpZ0Np7S66LpA1DNKfEg6XfS08sj6/RUEkLanVMO1xbqQ0hUWDLCoYDFVUUs+Mqm2TWZ4mcg9pU4fBxomAJ23Yh/dbK5IqmLPDZkrRSCtoUCYEaiKTVFm2tQ7+SuUK9InmvvKwDKgxxdGWM5tahnySu4PwHTfsvc4ChSwYPbwUh16EXdiqo5QqPdRXbSKbE05UxrSAoSf+0OoJ0iRp69RYJ6QpBTyc7T5Q0AbriSqHXAG3rLCh5J1+G8+W066F8YsSrlDmoPOjLYjHoy1hzCQQKtQzTdtUJaNEAHKmdskgcRLVynoVDMI/UCdkpDvRavZKdQnjsKx4MTtme9E4WgOLLlzNrWMdWPD/cdiqtvA9tTemIJyBkR6unQQwHzwAW2rhLMDJY/YSV7EIP0G0Cfqqox7SHVSOGN+FM5T0CmRmze32wyJ1InKV6ieucsh11YzTJEvj2I0kkcpEVeuz3yr5dChlJSZdtZX2yaJAhLhaWxAClQRRDJkNAg2/sNIkBClITTptAM711STYUiYiTOf7mCYgpzBekYQMt9QKb9sHm/wkJ65FEYD0KFJiXsDXbS+ohTctAS0H5pRAPvodbQOJKy9pjPwu+W+DQ3t5Tk833rp+teP/FxNA326FH41k8t/WclGYjjvqRw15oLyXN0nPLG5L/fPYb+r1aTa4d1/uBEa1ImkcC1dD/2NTLNUHm9S7SAo4Co3gjpDYHaTD0SUvNb38AoePuFUjtRo9GpkteRaFMPhKykX3dKXye7AdlPjWt/+BRuYPN7qTOfX4sZJuyyxt4hZHx2JYh5OIOT1sf2ewBTGBmil8QryVhrq4dE4kHUXxiVK7OWOqVzPwJVnbj7frfkBn2crDnVG2Lpp4dfx9i5szowcHvb4Ep+8Hqadx42Wl3AsqYBD2xdji/Cw7vO0EJGNsGedOGlt2s2brdWrkG6Jil6GMlM2cr8Y6Vcs6mfmtyCGhvopD0HHLSD7TYYuQRV1lzwrCUZh5/5ZOpxDLclImG4H0/QZYc7nHOi7JB7Q95Y8gidgK7sqKcKU8ahicGxcDwFCoTcJkg3KYz5pCMNUORXPdD9Q9JgddJtMW1qZL/S7r2H5OcqNvSz5pw8+VISKyz2Byc/vsokSjTLSJf0wcOD3NQGhtLbeEM4x10RY2yWrVVED1ny4IV11Q2GBzM/rTB6Jywne1Be9ogb1kJHDsJTp+H2Eyh48vKd0f0b3BJGHFJfe5quDzPLk6Jl82/qy/HoHE99QdjRFR7yQVqi7CDC1rh7q+NkC/1ClTDRoFVeKq5Ei+6Aubw2yKUB324+hDyHolAU5zKgOiE9FQJfAk0YDPwWm5IgbCVGpBAF1kVbxc2/EOLMeGCjRp/+AAgE4xD0Vrl9sODFF2gEpAZ0/C3L0osD12Y9qNvJ7GmpgXzUh1RrnpoIOytpnqZIHihpPqAEsmSoIBUeT2XlFPiT81Px8zkuzXdnenQVb+5bjVer5ZrlYxk0RzCpBTGpBTnZa+PVXi+ezpsc70WNwjHguRi/R6Zod3i43IxIWQ9Pjvf4gLZ6O0pC8lLp85cDyaHDNgOjJ0q9LUYDFJmiH/0Ud7+RFWaAntrsn9/YZ7AhVs8W9crU82N8j+YLTqjzEJQV3rw+QsKBKCwKGp8TodJ0YuEeyZvUzVfPCJmXbR4NDkAld1YcSIrHVm4vvbEJ83jnd1cZ8dStErzHcCnuj33iajQ4TB3qOFyH+vVbf082AX7PHYnzjOBDmwGkic73/C5l59VgQ+2IbmclnGp9tjZXItGadIcxge7tmtpfzCTwJEVEMviz2tmi7g671jvQX18d6tow6zF4jPvDWB8qPzVmTbTZcCrstOd1DHbuBWUdCut+A7XoL1t8Krl2wooCdoxtExpywTaDIGpxSxyM8km4vKIUBtlbCSnoX4HSpvZElYvcv59WwW7WtdiqhdZrb6twu2sawA6MMz39FPbNuflQexOCHdcqJ/1MAZb3+xjiul3A4agZmTk3rrSRdj0MdqCGMsRc/cKseLnfskUSCv1fHjjUVPn9xbmziTVOEwxYZiL+QqPwyVNfMb/yfYyFIxUNRAAyZyE32HibDH0Syj01HMUyBvLt1C93b1It1cfl5ivDYsE2T8/cOQMg6/Tg7dnVIZdXF5cuIqhCJWg7sXezlgzwVD+TM5S9LxA8QjhHBeobxi4uY4QJY9anMqDQ+O9HQfuShZWfMQRMoZ/lkhprhoaPJYkg+9BbVcKOEfBroZcftF3HTkIbgeMtKiuud4i0nAcIrAemui81PRRiEq0PS+2iti+XHyQ6qKqraIHJAInzcazHppMIZlLMQJgTuKdtO/LwCAsKBtnLLmXL8cEGUSiEs+HzJ5rCzvvlYBYZftvZWpJsmNmPShKLkY53LTwisNgjg1zvDCzUp5TGBE0JD+RUSoFRZ9EVBsZgX+k30WMT5NG0Iy1lE0HrLHMjyk4BaEZrl3Ns+kuhmkb9mq5YwtpsmHHX/8Chbj++fBSd3A39pyAV89dnmdWWzary3oVXVBiXgw0m3TnHrbXph80ZN+5xsjCYmGHstq2nXrNRfp9W4NslVfbY59EWIk6ZGtfbQQYrHJV1ShOfzwv4sd/3fmuNZYikw4oIFUFeZ8RswNe/hhCam7hKv59m8UX9KIWpiixO7m55pIVGxwpv8G2cctLdAYLQzDma6y0iBA1kYTgGFJoRLJcV0EMFvb4IoHV+f6jfg7Qhv528lieothhcoUT6xdZYhzwbwWny7BlsJ8M38dPq/yzvL5nLs206A/n78B0TSDbk6sUBMC/Z5nt1YgEN1oixxGiauD8nG1wUrp/iracvXOge/T2LZl77aROa9HXqzo3HHStv/3VoIiYpul3QgdfJbpbZL4XPhT62RhmYcdJlMhOa/qs5bPCFrpLs5AkB0LiIfwdYHE4g5TEJAoALXptcZI8OL4pdBNkE2h2HjhpRuwMutxnUJlI+4c5EAVGWQrqBOXtRCp0sptGPOZLZsusjoI1tpZAOGTBdkhYNKNrRIsdVH3HkumAPa/Zns1QFVGopqK0lwumgRCw2EuGxwgk+FgfrEX2hE15UuLvUVUi1rKZvKlvIZJ81qmrhL/X7s/S+zV2Uw3NlV/W5yDHwzuhq/2f/9U9ZH5x2OjzqQkQWmLADS2bnvFZAz8X8sXzk4F8UdDZKWxspHj+Tqi+bYR6uf0fmcWIBLLAGGgsV18P/KaXPmXyLDbv1QdmI0zhT3VDmnvkTiBnnqjmfb/WPRjoYbnZRAzEuL9FW+3aChj/+kwuGAxDbsujnzz/E7BcvLoQjAuX4F+2ENyU41cA4kdwaT6uF+I0/VtcvjeUHMiJ+DmDDIiDAO+xJeBwq5bqXSDdVznlUEELMq/Iw+yVKPAXa2i8PEH5WTq0OdgFffYtvU3U9KbGTpZ9H4PoXZR6txPbF9d73pneyantmn7IB8A9co/H24wld55OWULUZINLXovLj3q167LEUa10oXV766DFRo0tMdQTF/bKgXApbPRLLn+5jY9Q9TLsgALlxzX6IljsyGsGrzrQsS1XKAHWQgfH+eLeOhpuirJwIdr7xnwqb/5mmKSrOQjuiv1KvJXY138qC8YdjW9eEWr+KI67t/6g0uCxMLT5kZhFb+zgoOh7Y0b/zZmlL0sHfsId45PlB2RBiGeq8qCiitFEzKsqhwNXIJG5kW9Z+WiwGX1gWOlbceGTsS9/wAXxbYJ/RFgPPpvb7XgRgiT7dMJky6nDBY/7NkG3KSPq65EeQJcTmJv9QWFT0vgCAqov44r9fQFSRHlaGRGmcTugxqr+4WeQfbx0gJNE/SbhYfS/xiMq+r9z/2I8OlL3P52g/eE9i3LzAte37JdvyHfL+Y14fogXmfl3rd0zroHECXx1Dy1vfW3uQ409L8ow5Y/10RO5Vg5dtfQQ3ovl7F5BvmS66L29PSaB8ddYcuO3A4rkZr5N09EfAA==","base64")).toString()),n_)});var Vi={};Yt(Vi,{convertToZip:()=>cct,extractArchiveTo:()=>Act,makeArchiveFromDirectory:()=>lct});async function lct(t,{baseFs:e=new xn,prefixPath:r=wt.root,compressionLevel:o,inMemory:a=!1}={}){let n;if(a)n=new os(null,{level:o});else{let A=await ae.mktempPromise(),p=V.join(A,"archive.zip");n=new os(p,{create:!0,level:o})}let u=V.resolve(wt.root,r);return await n.copyPromise(u,t,{baseFs:e,stableTime:!0,stableSort:!0}),n}async function cct(t,e){let r=await ae.mktempPromise(),o=V.join(r,"archive.zip");return spe||(spe=new Tb((0,lpe.getContent)())),await spe.run({tmpFile:o,tgz:t,opts:e}),new os(o,{level:e.compressionLevel})}async function*uct(t){let e=new ape.default.Parse,r=new ope.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on("entry",o=>{r.write(o)}),e.on("error",o=>{r.destroy(o)}),e.on("close",()=>{r.destroyed||r.end()}),e.end(t);for await(let o of r){let a=o;yield a,a.resume()}}async function Act(t,e,{stripComponents:r=0,prefixPath:o=wt.dot}={}){function a(n){if(n.path[0]==="/")return!0;let u=n.path.split(/\//g);return!!(u.some(A=>A==="..")||u.length<=r)}for await(let n of uct(t)){if(a(n))continue;let u=V.normalize(Ae.toPortablePath(n.path)).replace(/\/$/,"").split(/\//g);if(u.length<=r)continue;let A=u.slice(r).join("/"),p=V.join(o,A),h=420;switch((n.type==="Directory"||((n.mode??0)&73)!==0)&&(h|=73),n.type){case"Directory":e.mkdirpSync(V.dirname(p),{chmod:493,utimes:[Ii.SAFE_TIME,Ii.SAFE_TIME]}),e.mkdirSync(p,{mode:h}),e.utimesSync(p,Ii.SAFE_TIME,Ii.SAFE_TIME);break;case"OldFile":case"File":e.mkdirpSync(V.dirname(p),{chmod:493,utimes:[Ii.SAFE_TIME,Ii.SAFE_TIME]}),e.writeFileSync(p,await Gy(n),{mode:h}),e.utimesSync(p,Ii.SAFE_TIME,Ii.SAFE_TIME);break;case"SymbolicLink":e.mkdirpSync(V.dirname(p),{chmod:493,utimes:[Ii.SAFE_TIME,Ii.SAFE_TIME]}),e.symlinkSync(n.linkpath,p),e.lutimesSync(p,Ii.SAFE_TIME,Ii.SAFE_TIME);break}}return e}var ope,ape,lpe,spe,cpe=dt(()=>{bt();Oc();ope=Ie("stream"),ape=tt($fe());rpe();Gl();lpe=tt(ipe())});var Ape=U((i_,upe)=>{(function(t,e){typeof i_=="object"?upe.exports=e():typeof define=="function"&&define.amd?define(e):t.treeify=e()})(i_,function(){function t(a,n){var u=n?"\u2514":"\u251C";return a?u+="\u2500 ":u+="\u2500\u2500\u2510",u}function e(a,n){var u=[];for(var A in a)!a.hasOwnProperty(A)||n&&typeof a[A]=="function"||u.push(A);return u}function r(a,n,u,A,p,h,C){var w="",v=0,b,E,R=A.slice(0);if(R.push([n,u])&&A.length>0&&(A.forEach(function(_,J){J>0&&(w+=(_[1]?" ":"\u2502")+" "),!E&&_[0]===n&&(E=!0)}),w+=t(a,u)+a,p&&(typeof n!="object"||n instanceof Date)&&(w+=": "+n),E&&(w+=" (circular ref.)"),C(w)),!E&&typeof n=="object"){var L=e(n,h);L.forEach(function(_){b=++v===L.length,r(_,n[_],b,R,p,h,C)})}}var o={};return o.asLines=function(a,n,u,A){var p=typeof u!="function"?u:!1;r(".",a,!1,[],n,p,A||u)},o.asTree=function(a,n,u){var A="";return r(".",a,!1,[],n,u,function(p){A+=p+` | 186 | `).reduce(xat,Object.create(null)),xat=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+" ").length);let o=e.split("="),a=o.shift().replace(/^SCHILY\.(dev|ino|nlink)/,"$1");if(!a)return t;let n=o.join("=");return t[a]=/^([A-Z]+\.)?([mac]|birth|creation)time$/.test(a)?new Date(n*1e3):/^[0-9]+$/.test(n)?+n:n,t};Vue.exports=F1});var qE=U((o4t,Jue)=>{Jue.exports=t=>{let e=t.length-1,r=-1;for(;e>-1&&t.charAt(e)==="/";)r=e,e--;return r===-1?t:t.slice(0,r)}});var eb=U((a4t,zue)=>{"use strict";zue.exports=t=>class extends t{warn(e,r,o={}){this.file&&(o.file=this.file),this.cwd&&(o.cwd=this.cwd),o.code=r instanceof Error&&r.code||e,o.tarCode=e,!this.strict&&o.recoverable!==!1?(r instanceof Error&&(o=Object.assign(r,o),r=r.message),this.emit("warn",o.tarCode,r,o)):r instanceof Error?this.emit("error",Object.assign(r,o)):this.emit("error",Object.assign(new Error(`${e}: ${r}`),o))}}});var i3=U((c4t,Xue)=>{"use strict";var tb=["|","<",">","?",":"],n3=tb.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),bat=new Map(tb.map((t,e)=>[t,n3[e]])),Qat=new Map(n3.map((t,e)=>[t,tb[e]]));Xue.exports={encode:t=>tb.reduce((e,r)=>e.split(r).join(bat.get(r)),t),decode:t=>n3.reduce((e,r)=>e.split(r).join(Qat.get(r)),t)}});var s3=U((u4t,$ue)=>{var{isAbsolute:kat,parse:Zue}=Ie("path").win32;$ue.exports=t=>{let e="",r=Zue(t);for(;kat(t)||r.root;){let o=t.charAt(0)==="/"&&t.slice(0,4)!=="//?/"?"/":r.root;t=t.substr(o.length),e+=o,r=Zue(t)}return[e,t]}});var tAe=U((A4t,eAe)=>{"use strict";eAe.exports=(t,e,r)=>(t&=4095,r&&(t=(t|384)&-19),e&&(t&256&&(t|=64),t&32&&(t|=8),t&4&&(t|=1)),t)});var g3=U((h4t,gAe)=>{"use strict";var lAe=LE(),cAe=$x(),uAe=HE(),lA=Ie("fs"),rAe=Ie("path"),aA=UE(),Fat=qE(),AAe=(t,e)=>e?(t=aA(t).replace(/^\.(\/|$)/,""),Fat(e)+"/"+t):aA(t),Rat=16*1024*1024,nAe=Symbol("process"),iAe=Symbol("file"),sAe=Symbol("directory"),a3=Symbol("symlink"),oAe=Symbol("hardlink"),R1=Symbol("header"),rb=Symbol("read"),l3=Symbol("lstat"),nb=Symbol("onlstat"),c3=Symbol("onread"),u3=Symbol("onreadlink"),A3=Symbol("openfile"),f3=Symbol("onopenfile"),d0=Symbol("close"),ib=Symbol("mode"),p3=Symbol("awaitDrain"),o3=Symbol("ondrain"),cA=Symbol("prefix"),aAe=Symbol("hadError"),fAe=eb(),Tat=i3(),pAe=s3(),hAe=tAe(),sb=fAe(class extends lAe{constructor(e,r){if(r=r||{},super(r),typeof e!="string")throw new TypeError("path is required");this.path=aA(e),this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid()||0,this.myuser=process.env.USER||"",this.maxReadSize=r.maxReadSize||Rat,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=aA(r.cwd||process.cwd()),this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.mtime=r.mtime||null,this.prefix=r.prefix?aA(r.prefix):null,this.fd=null,this.blockLen=null,this.blockRemain=null,this.buf=null,this.offset=null,this.length=null,this.pos=null,this.remain=null,typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let o=!1;if(!this.preservePaths){let[a,n]=pAe(this.path);a&&(this.path=n,o=a)}this.win32=!!r.win32||process.platform==="win32",this.win32&&(this.path=Tat.decode(this.path.replace(/\\/g,"/")),e=e.replace(/\\/g,"/")),this.absolute=aA(r.absolute||rAe.resolve(this.cwd,e)),this.path===""&&(this.path="./"),o&&this.warn("TAR_ENTRY_INFO",`stripping ${o} from absolute path`,{entry:this,path:o+this.path}),this.statCache.has(this.absolute)?this[nb](this.statCache.get(this.absolute)):this[l3]()}emit(e,...r){return e==="error"&&(this[aAe]=!0),super.emit(e,...r)}[l3](){lA.lstat(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[nb](r)})}[nb](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=Lat(e),this.emit("stat",e),this[nAe]()}[nAe](){switch(this.type){case"File":return this[iAe]();case"Directory":return this[sAe]();case"SymbolicLink":return this[a3]();default:return this.end()}}[ib](e){return hAe(e,this.type==="Directory",this.portable)}[cA](e){return AAe(e,this.prefix)}[R1](){this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.header=new uAe({path:this[cA](this.path),linkpath:this.type==="Link"?this[cA](this.linkpath):this.linkpath,mode:this[ib](this.stat.mode),uid:this.portable?null:this.stat.uid,gid:this.portable?null:this.stat.gid,size:this.stat.size,mtime:this.noMtime?null:this.mtime||this.stat.mtime,type:this.type,uname:this.portable?null:this.stat.uid===this.myuid?this.myuser:"",atime:this.portable?null:this.stat.atime,ctime:this.portable?null:this.stat.ctime}),this.header.encode()&&!this.noPax&&super.write(new cAe({atime:this.portable?null:this.header.atime,ctime:this.portable?null:this.header.ctime,gid:this.portable?null:this.header.gid,mtime:this.noMtime?null:this.mtime||this.header.mtime,path:this[cA](this.path),linkpath:this.type==="Link"?this[cA](this.linkpath):this.linkpath,size:this.header.size,uid:this.portable?null:this.header.uid,uname:this.portable?null:this.header.uname,dev:this.portable?null:this.stat.dev,ino:this.portable?null:this.stat.ino,nlink:this.portable?null:this.stat.nlink}).encode()),super.write(this.header.block)}[sAe](){this.path.substr(-1)!=="/"&&(this.path+="/"),this.stat.size=0,this[R1](),this.end()}[a3](){lA.readlink(this.absolute,(e,r)=>{if(e)return this.emit("error",e);this[u3](r)})}[u3](e){this.linkpath=aA(e),this[R1](),this.end()}[oAe](e){this.type="Link",this.linkpath=aA(rAe.relative(this.cwd,e)),this.stat.size=0,this[R1](),this.end()}[iAe](){if(this.stat.nlink>1){let e=this.stat.dev+":"+this.stat.ino;if(this.linkCache.has(e)){let r=this.linkCache.get(e);if(r.indexOf(this.cwd)===0)return this[oAe](r)}this.linkCache.set(e,this.absolute)}if(this[R1](),this.stat.size===0)return this.end();this[A3]()}[A3](){lA.open(this.absolute,"r",(e,r)=>{if(e)return this.emit("error",e);this[f3](r)})}[f3](e){if(this.fd=e,this[aAe])return this[d0]();this.blockLen=512*Math.ceil(this.stat.size/512),this.blockRemain=this.blockLen;let r=Math.min(this.blockLen,this.maxReadSize);this.buf=Buffer.allocUnsafe(r),this.offset=0,this.pos=0,this.remain=this.stat.size,this.length=this.buf.length,this[rb]()}[rb](){let{fd:e,buf:r,offset:o,length:a,pos:n}=this;lA.read(e,r,o,a,n,(u,A)=>{if(u)return this[d0](()=>this.emit("error",u));this[c3](A)})}[d0](e){lA.close(this.fd,e)}[c3](e){if(e<=0&&this.remain>0){let a=new Error("encountered unexpected EOF");return a.path=this.absolute,a.syscall="read",a.code="EOF",this[d0](()=>this.emit("error",a))}if(e>this.remain){let a=new Error("did not encounter expected EOF");return a.path=this.absolute,a.syscall="read",a.code="EOF",this[d0](()=>this.emit("error",a))}if(e===this.remain)for(let a=e;a<this.length&&e<this.blockRemain;a++)this.buf[a+this.offset]=0,e++,this.remain++;let r=this.offset===0&&e===this.buf.length?this.buf:this.buf.slice(this.offset,this.offset+e);this.write(r)?this[o3]():this[p3](()=>this[o3]())}[p3](e){this.once("drain",e)}write(e){if(this.blockRemain<e.length){let r=new Error("writing more data than expected");return r.path=this.absolute,this.emit("error",r)}return this.remain-=e.length,this.blockRemain-=e.length,this.pos+=e.length,this.offset+=e.length,super.write(e)}[o3](){if(!this.remain)return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),this[d0](e=>e?this.emit("error",e):this.end());this.offset>=this.length&&(this.buf=Buffer.allocUnsafe(Math.min(this.blockRemain,this.buf.length)),this.offset=0),this.length=this.buf.length-this.offset,this[rb]()}}),h3=class extends sb{[l3](){this[nb](lA.lstatSync(this.absolute))}[a3](){this[u3](lA.readlinkSync(this.absolute))}[A3](){this[f3](lA.openSync(this.absolute,"r"))}[rb](){let e=!0;try{let{fd:r,buf:o,offset:a,length:n,pos:u}=this,A=lA.readSync(r,o,a,n,u);this[c3](A),e=!1}finally{if(e)try{this[d0](()=>{})}catch{}}}[p3](e){e()}[d0](e){lA.closeSync(this.fd),e()}},Nat=fAe(class extends lAe{constructor(e,r){r=r||{},super(r),this.preservePaths=!!r.preservePaths,this.portable=!!r.portable,this.strict=!!r.strict,this.noPax=!!r.noPax,this.noMtime=!!r.noMtime,this.readEntry=e,this.type=e.type,this.type==="Directory"&&this.portable&&(this.noMtime=!0),this.prefix=r.prefix||null,this.path=aA(e.path),this.mode=this[ib](e.mode),this.uid=this.portable?null:e.uid,this.gid=this.portable?null:e.gid,this.uname=this.portable?null:e.uname,this.gname=this.portable?null:e.gname,this.size=e.size,this.mtime=this.noMtime?null:r.mtime||e.mtime,this.atime=this.portable?null:e.atime,this.ctime=this.portable?null:e.ctime,this.linkpath=aA(e.linkpath),typeof r.onwarn=="function"&&this.on("warn",r.onwarn);let o=!1;if(!this.preservePaths){let[a,n]=pAe(this.path);a&&(this.path=n,o=a)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new uAe({path:this[cA](this.path),linkpath:this.type==="Link"?this[cA](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),o&&this.warn("TAR_ENTRY_INFO",`stripping ${o} from absolute path`,{entry:this,path:o+this.path}),this.header.encode()&&!this.noPax&&super.write(new cAe({atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime,gid:this.portable?null:this.gid,mtime:this.noMtime?null:this.mtime,path:this[cA](this.path),linkpath:this.type==="Link"?this[cA](this.linkpath):this.linkpath,size:this.size,uid:this.portable?null:this.uid,uname:this.portable?null:this.uname,dev:this.portable?null:this.readEntry.dev,ino:this.portable?null:this.readEntry.ino,nlink:this.portable?null:this.readEntry.nlink}).encode()),super.write(this.header.block),e.pipe(this)}[cA](e){return AAe(e,this.prefix)}[ib](e){return hAe(e,this.type==="Directory",this.portable)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error("writing more to entry than is appropriate");return this.blockRemain-=r,super.write(e)}end(){return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),super.end()}});sb.Sync=h3;sb.Tar=Nat;var Lat=t=>t.isFile()?"File":t.isDirectory()?"Directory":t.isSymbolicLink()?"SymbolicLink":"Unsupported";gAe.exports=sb});var gb=U((d4t,wAe)=>{"use strict";var pb=class{constructor(e,r){this.path=e||"./",this.absolute=r,this.entry=null,this.stat=null,this.readdir=null,this.pending=!1,this.ignore=!1,this.piped=!1}},Oat=LE(),Mat=VU(),Uat=Xx(),v3=g3(),_at=v3.Sync,Hat=v3.Tar,qat=pS(),dAe=Buffer.alloc(1024),lb=Symbol("onStat"),ob=Symbol("ended"),uA=Symbol("queue"),jE=Symbol("current"),Ud=Symbol("process"),ab=Symbol("processing"),mAe=Symbol("processJob"),AA=Symbol("jobs"),d3=Symbol("jobDone"),ub=Symbol("addFSEntry"),yAe=Symbol("addTarEntry"),C3=Symbol("stat"),I3=Symbol("readdir"),Ab=Symbol("onreaddir"),fb=Symbol("pipe"),EAe=Symbol("entry"),m3=Symbol("entryOpt"),w3=Symbol("writeEntryClass"),IAe=Symbol("write"),y3=Symbol("ondrain"),hb=Ie("fs"),CAe=Ie("path"),jat=eb(),E3=UE(),D3=jat(class extends Oat{constructor(e){super(e),e=e||Object.create(null),this.opt=e,this.file=e.file||"",this.cwd=e.cwd||process.cwd(),this.maxReadSize=e.maxReadSize,this.preservePaths=!!e.preservePaths,this.strict=!!e.strict,this.noPax=!!e.noPax,this.prefix=E3(e.prefix||""),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[w3]=v3,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),this.portable=!!e.portable,this.zip=null,e.gzip?(typeof e.gzip!="object"&&(e.gzip={}),this.portable&&(e.gzip.portable=!0),this.zip=new Mat.Gzip(e.gzip),this.zip.on("data",r=>super.write(r)),this.zip.on("end",r=>super.end()),this.zip.on("drain",r=>this[y3]()),this.on("resume",r=>this.zip.resume())):this.on("drain",this[y3]),this.noDirRecurse=!!e.noDirRecurse,this.follow=!!e.follow,this.noMtime=!!e.noMtime,this.mtime=e.mtime||null,this.filter=typeof e.filter=="function"?e.filter:r=>!0,this[uA]=new qat,this[AA]=0,this.jobs=+e.jobs||4,this[ab]=!1,this[ob]=!1}[IAe](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[ob]=!0,this[Ud](),this}write(e){if(this[ob])throw new Error("write after end");return e instanceof Uat?this[yAe](e):this[ub](e),this.flowing}[yAe](e){let r=E3(CAe.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let o=new pb(e.path,r,!1);o.entry=new Hat(e,this[m3](o)),o.entry.on("end",a=>this[d3](o)),this[AA]+=1,this[uA].push(o)}this[Ud]()}[ub](e){let r=E3(CAe.resolve(this.cwd,e));this[uA].push(new pb(e,r)),this[Ud]()}[C3](e){e.pending=!0,this[AA]+=1;let r=this.follow?"stat":"lstat";hb[r](e.absolute,(o,a)=>{e.pending=!1,this[AA]-=1,o?this.emit("error",o):this[lb](e,a)})}[lb](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[Ud]()}[I3](e){e.pending=!0,this[AA]+=1,hb.readdir(e.absolute,(r,o)=>{if(e.pending=!1,this[AA]-=1,r)return this.emit("error",r);this[Ab](e,o)})}[Ab](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[Ud]()}[Ud](){if(!this[ab]){this[ab]=!0;for(let e=this[uA].head;e!==null&&this[AA]<this.jobs;e=e.next)if(this[mAe](e.value),e.value.ignore){let r=e.next;this[uA].removeNode(e),e.next=r}this[ab]=!1,this[ob]&&!this[uA].length&&this[AA]===0&&(this.zip?this.zip.end(dAe):(super.write(dAe),super.end()))}}get[jE](){return this[uA]&&this[uA].head&&this[uA].head.value}[d3](e){this[uA].shift(),this[AA]-=1,this[Ud]()}[mAe](e){if(!e.pending){if(e.entry){e===this[jE]&&!e.piped&&this[fb](e);return}if(e.stat||(this.statCache.has(e.absolute)?this[lb](e,this.statCache.get(e.absolute)):this[C3](e)),!!e.stat&&!e.ignore&&!(!this.noDirRecurse&&e.stat.isDirectory()&&!e.readdir&&(this.readdirCache.has(e.absolute)?this[Ab](e,this.readdirCache.get(e.absolute)):this[I3](e),!e.readdir))){if(e.entry=this[EAe](e),!e.entry){e.ignore=!0;return}e===this[jE]&&!e.piped&&this[fb](e)}}}[m3](e){return{onwarn:(r,o,a)=>this.warn(r,o,a),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix}}[EAe](e){this[AA]+=1;try{return new this[w3](e.path,this[m3](e)).on("end",()=>this[d3](e)).on("error",r=>this.emit("error",r))}catch(r){this.emit("error",r)}}[y3](){this[jE]&&this[jE].entry&&this[jE].entry.resume()}[fb](e){e.piped=!0,e.readdir&&e.readdir.forEach(a=>{let n=e.path,u=n==="./"?"":n.replace(/\/*$/,"/");this[ub](u+a)});let r=e.entry,o=this.zip;o?r.on("data",a=>{o.write(a)||r.pause()}):r.on("data",a=>{super.write(a)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),B3=class extends D3{constructor(e){super(e),this[w3]=_at}pause(){}resume(){}[C3](e){let r=this.follow?"statSync":"lstatSync";this[lb](e,hb[r](e.absolute))}[I3](e,r){this[Ab](e,hb.readdirSync(e.absolute))}[fb](e){let r=e.entry,o=this.zip;e.readdir&&e.readdir.forEach(a=>{let n=e.path,u=n==="./"?"":n.replace(/\/*$/,"/");this[ub](u+a)}),o?r.on("data",a=>{o.write(a)}):r.on("data",a=>{super[IAe](a)})}};D3.Sync=B3;wAe.exports=D3});var XE=U(N1=>{"use strict";var Gat=LE(),Wat=Ie("events").EventEmitter,Fa=Ie("fs"),x3=Fa.writev;if(!x3){let t=process.binding("fs"),e=t.FSReqWrap||t.FSReqCallback;x3=(r,o,a,n)=>{let u=(p,h)=>n(p,h,o),A=new e;A.oncomplete=u,t.writeBuffers(r,o,a,A)}}var JE=Symbol("_autoClose"),zc=Symbol("_close"),T1=Symbol("_ended"),Mn=Symbol("_fd"),BAe=Symbol("_finished"),y0=Symbol("_flags"),S3=Symbol("_flush"),b3=Symbol("_handleChunk"),Q3=Symbol("_makeBuf"),Cb=Symbol("_mode"),db=Symbol("_needDrain"),KE=Symbol("_onerror"),zE=Symbol("_onopen"),P3=Symbol("_onread"),WE=Symbol("_onwrite"),E0=Symbol("_open"),Gf=Symbol("_path"),_d=Symbol("_pos"),fA=Symbol("_queue"),YE=Symbol("_read"),vAe=Symbol("_readSize"),m0=Symbol("_reading"),mb=Symbol("_remain"),DAe=Symbol("_size"),yb=Symbol("_write"),GE=Symbol("_writing"),Eb=Symbol("_defaultFlag"),VE=Symbol("_errored"),Ib=class extends Gat{constructor(e,r){if(r=r||{},super(r),this.readable=!0,this.writable=!1,typeof e!="string")throw new TypeError("path must be a string");this[VE]=!1,this[Mn]=typeof r.fd=="number"?r.fd:null,this[Gf]=e,this[vAe]=r.readSize||16*1024*1024,this[m0]=!1,this[DAe]=typeof r.size=="number"?r.size:1/0,this[mb]=this[DAe],this[JE]=typeof r.autoClose=="boolean"?r.autoClose:!0,typeof this[Mn]=="number"?this[YE]():this[E0]()}get fd(){return this[Mn]}get path(){return this[Gf]}write(){throw new TypeError("this is a readable stream")}end(){throw new TypeError("this is a readable stream")}[E0](){Fa.open(this[Gf],"r",(e,r)=>this[zE](e,r))}[zE](e,r){e?this[KE](e):(this[Mn]=r,this.emit("open",r),this[YE]())}[Q3](){return Buffer.allocUnsafe(Math.min(this[vAe],this[mb]))}[YE](){if(!this[m0]){this[m0]=!0;let e=this[Q3]();if(e.length===0)return process.nextTick(()=>this[P3](null,0,e));Fa.read(this[Mn],e,0,e.length,null,(r,o,a)=>this[P3](r,o,a))}}[P3](e,r,o){this[m0]=!1,e?this[KE](e):this[b3](r,o)&&this[YE]()}[zc](){if(this[JE]&&typeof this[Mn]=="number"){let e=this[Mn];this[Mn]=null,Fa.close(e,r=>r?this.emit("error",r):this.emit("close"))}}[KE](e){this[m0]=!0,this[zc](),this.emit("error",e)}[b3](e,r){let o=!1;return this[mb]-=e,e>0&&(o=super.write(e<r.length?r.slice(0,e):r)),(e===0||this[mb]<=0)&&(o=!1,this[zc](),super.end()),o}emit(e,r){switch(e){case"prefinish":case"finish":break;case"drain":typeof this[Mn]=="number"&&this[YE]();break;case"error":return this[VE]?void 0:(this[VE]=!0,super.emit(e,r));default:return super.emit(e,r)}}},k3=class extends Ib{[E0](){let e=!0;try{this[zE](null,Fa.openSync(this[Gf],"r")),e=!1}finally{e&&this[zc]()}}[YE](){let e=!0;try{if(!this[m0]){this[m0]=!0;do{let r=this[Q3](),o=r.length===0?0:Fa.readSync(this[Mn],r,0,r.length,null);if(!this[b3](o,r))break}while(!0);this[m0]=!1}e=!1}finally{e&&this[zc]()}}[zc](){if(this[JE]&&typeof this[Mn]=="number"){let e=this[Mn];this[Mn]=null,Fa.closeSync(e),this.emit("close")}}},wb=class extends Wat{constructor(e,r){r=r||{},super(r),this.readable=!1,this.writable=!0,this[VE]=!1,this[GE]=!1,this[T1]=!1,this[db]=!1,this[fA]=[],this[Gf]=e,this[Mn]=typeof r.fd=="number"?r.fd:null,this[Cb]=r.mode===void 0?438:r.mode,this[_d]=typeof r.start=="number"?r.start:null,this[JE]=typeof r.autoClose=="boolean"?r.autoClose:!0;let o=this[_d]!==null?"r+":"w";this[Eb]=r.flags===void 0,this[y0]=this[Eb]?o:r.flags,this[Mn]===null&&this[E0]()}emit(e,r){if(e==="error"){if(this[VE])return;this[VE]=!0}return super.emit(e,r)}get fd(){return this[Mn]}get path(){return this[Gf]}[KE](e){this[zc](),this[GE]=!0,this.emit("error",e)}[E0](){Fa.open(this[Gf],this[y0],this[Cb],(e,r)=>this[zE](e,r))}[zE](e,r){this[Eb]&&this[y0]==="r+"&&e&&e.code==="ENOENT"?(this[y0]="w",this[E0]()):e?this[KE](e):(this[Mn]=r,this.emit("open",r),this[S3]())}end(e,r){return e&&this.write(e,r),this[T1]=!0,!this[GE]&&!this[fA].length&&typeof this[Mn]=="number"&&this[WE](null,0),this}write(e,r){return typeof e=="string"&&(e=Buffer.from(e,r)),this[T1]?(this.emit("error",new Error("write() after end()")),!1):this[Mn]===null||this[GE]||this[fA].length?(this[fA].push(e),this[db]=!0,!1):(this[GE]=!0,this[yb](e),!0)}[yb](e){Fa.write(this[Mn],e,0,e.length,this[_d],(r,o)=>this[WE](r,o))}[WE](e,r){e?this[KE](e):(this[_d]!==null&&(this[_d]+=r),this[fA].length?this[S3]():(this[GE]=!1,this[T1]&&!this[BAe]?(this[BAe]=!0,this[zc](),this.emit("finish")):this[db]&&(this[db]=!1,this.emit("drain"))))}[S3](){if(this[fA].length===0)this[T1]&&this[WE](null,0);else if(this[fA].length===1)this[yb](this[fA].pop());else{let e=this[fA];this[fA]=[],x3(this[Mn],e,this[_d],(r,o)=>this[WE](r,o))}}[zc](){if(this[JE]&&typeof this[Mn]=="number"){let e=this[Mn];this[Mn]=null,Fa.close(e,r=>r?this.emit("error",r):this.emit("close"))}}},F3=class extends wb{[E0](){let e;if(this[Eb]&&this[y0]==="r+")try{e=Fa.openSync(this[Gf],this[y0],this[Cb])}catch(r){if(r.code==="ENOENT")return this[y0]="w",this[E0]();throw r}else e=Fa.openSync(this[Gf],this[y0],this[Cb]);this[zE](null,e)}[zc](){if(this[JE]&&typeof this[Mn]=="number"){let e=this[Mn];this[Mn]=null,Fa.closeSync(e),this.emit("close")}}[yb](e){let r=!0;try{this[WE](null,Fa.writeSync(this[Mn],e,0,e.length,this[_d])),r=!1}finally{if(r)try{this[zc]()}catch{}}}};N1.ReadStream=Ib;N1.ReadStreamSync=k3;N1.WriteStream=wb;N1.WriteStreamSync=F3});var bb=U((E4t,FAe)=>{"use strict";var Yat=eb(),Kat=HE(),Vat=Ie("events"),Jat=pS(),zat=1024*1024,Xat=Xx(),SAe=$x(),Zat=VU(),R3=Buffer.from([31,139]),nc=Symbol("state"),Hd=Symbol("writeEntry"),Wf=Symbol("readEntry"),T3=Symbol("nextEntry"),PAe=Symbol("processEntry"),ic=Symbol("extendedHeader"),L1=Symbol("globalExtendedHeader"),C0=Symbol("meta"),xAe=Symbol("emitMeta"),li=Symbol("buffer"),Yf=Symbol("queue"),qd=Symbol("ended"),bAe=Symbol("emittedEnd"),jd=Symbol("emit"),Ra=Symbol("unzip"),Bb=Symbol("consumeChunk"),vb=Symbol("consumeChunkSub"),N3=Symbol("consumeBody"),QAe=Symbol("consumeMeta"),kAe=Symbol("consumeHeader"),Db=Symbol("consuming"),L3=Symbol("bufferConcat"),O3=Symbol("maybeEnd"),O1=Symbol("writing"),I0=Symbol("aborted"),Sb=Symbol("onDone"),Gd=Symbol("sawValidEntry"),Pb=Symbol("sawNullBlock"),xb=Symbol("sawEOF"),$at=t=>!0;FAe.exports=Yat(class extends Vat{constructor(e){e=e||{},super(e),this.file=e.file||"",this[Gd]=null,this.on(Sb,r=>{(this[nc]==="begin"||this[Gd]===!1)&&this.warn("TAR_BAD_ARCHIVE","Unrecognized archive format")}),e.ondone?this.on(Sb,e.ondone):this.on(Sb,r=>{this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||zat,this.filter=typeof e.filter=="function"?e.filter:$at,this.writable=!0,this.readable=!1,this[Yf]=new Jat,this[li]=null,this[Wf]=null,this[Hd]=null,this[nc]="begin",this[C0]="",this[ic]=null,this[L1]=null,this[qd]=!1,this[Ra]=null,this[I0]=!1,this[Pb]=!1,this[xb]=!1,typeof e.onwarn=="function"&&this.on("warn",e.onwarn),typeof e.onentry=="function"&&this.on("entry",e.onentry)}[kAe](e,r){this[Gd]===null&&(this[Gd]=!1);let o;try{o=new Kat(e,r,this[ic],this[L1])}catch(a){return this.warn("TAR_ENTRY_INVALID",a)}if(o.nullBlock)this[Pb]?(this[xb]=!0,this[nc]==="begin"&&(this[nc]="header"),this[jd]("eof")):(this[Pb]=!0,this[jd]("nullBlock"));else if(this[Pb]=!1,!o.cksumValid)this.warn("TAR_ENTRY_INVALID","checksum failure",{header:o});else if(!o.path)this.warn("TAR_ENTRY_INVALID","path is required",{header:o});else{let a=o.type;if(/^(Symbolic)?Link$/.test(a)&&!o.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath required",{header:o});else if(!/^(Symbolic)?Link$/.test(a)&&o.linkpath)this.warn("TAR_ENTRY_INVALID","linkpath forbidden",{header:o});else{let n=this[Hd]=new Xat(o,this[ic],this[L1]);if(!this[Gd])if(n.remain){let u=()=>{n.invalid||(this[Gd]=!0)};n.on("end",u)}else this[Gd]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[jd]("ignoredEntry",n),this[nc]="ignore",n.resume()):n.size>0&&(this[C0]="",n.on("data",u=>this[C0]+=u),this[nc]="meta"):(this[ic]=null,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[jd]("ignoredEntry",n),this[nc]=n.remain?"ignore":"header",n.resume()):(n.remain?this[nc]="body":(this[nc]="header",n.end()),this[Wf]?this[Yf].push(n):(this[Yf].push(n),this[T3]())))}}}[PAe](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[Wf]=e,this.emit("entry",e),e.emittedEnd||(e.on("end",o=>this[T3]()),r=!1)):(this[Wf]=null,r=!1),r}[T3](){do;while(this[PAe](this[Yf].shift()));if(!this[Yf].length){let e=this[Wf];!e||e.flowing||e.size===e.remain?this[O1]||this.emit("drain"):e.once("drain",o=>this.emit("drain"))}}[N3](e,r){let o=this[Hd],a=o.blockRemain,n=a>=e.length&&r===0?e:e.slice(r,r+a);return o.write(n),o.blockRemain||(this[nc]="header",this[Hd]=null,o.end()),n.length}[QAe](e,r){let o=this[Hd],a=this[N3](e,r);return this[Hd]||this[xAe](o),a}[jd](e,r,o){!this[Yf].length&&!this[Wf]?this.emit(e,r,o):this[Yf].push([e,r,o])}[xAe](e){switch(this[jd]("meta",this[C0]),e.type){case"ExtendedHeader":case"OldExtendedHeader":this[ic]=SAe.parse(this[C0],this[ic],!1);break;case"GlobalExtendedHeader":this[L1]=SAe.parse(this[C0],this[L1],!0);break;case"NextFileHasLongPath":case"OldGnuLongPath":this[ic]=this[ic]||Object.create(null),this[ic].path=this[C0].replace(/\0.*/,"");break;case"NextFileHasLongLinkpath":this[ic]=this[ic]||Object.create(null),this[ic].linkpath=this[C0].replace(/\0.*/,"");break;default:throw new Error("unknown meta: "+e.type)}}abort(e){this[I0]=!0,this.emit("abort",e),this.warn("TAR_ABORT",e,{recoverable:!1})}write(e){if(this[I0])return;if(this[Ra]===null&&e){if(this[li]&&(e=Buffer.concat([this[li],e]),this[li]=null),e.length<R3.length)return this[li]=e,!0;for(let o=0;this[Ra]===null&&o<R3.length;o++)e[o]!==R3[o]&&(this[Ra]=!1);if(this[Ra]===null){let o=this[qd];this[qd]=!1,this[Ra]=new Zat.Unzip,this[Ra].on("data",n=>this[Bb](n)),this[Ra].on("error",n=>this.abort(n)),this[Ra].on("end",n=>{this[qd]=!0,this[Bb]()}),this[O1]=!0;let a=this[Ra][o?"end":"write"](e);return this[O1]=!1,a}}this[O1]=!0,this[Ra]?this[Ra].write(e):this[Bb](e),this[O1]=!1;let r=this[Yf].length?!1:this[Wf]?this[Wf].flowing:!0;return!r&&!this[Yf].length&&this[Wf].once("drain",o=>this.emit("drain")),r}[L3](e){e&&!this[I0]&&(this[li]=this[li]?Buffer.concat([this[li],e]):e)}[O3](){if(this[qd]&&!this[bAe]&&!this[I0]&&!this[Db]){this[bAe]=!0;let e=this[Hd];if(e&&e.blockRemain){let r=this[li]?this[li].length:0;this.warn("TAR_BAD_ARCHIVE",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[li]&&e.write(this[li]),e.end()}this[jd](Sb)}}[Bb](e){if(this[Db])this[L3](e);else if(!e&&!this[li])this[O3]();else{if(this[Db]=!0,this[li]){this[L3](e);let r=this[li];this[li]=null,this[vb](r)}else this[vb](e);for(;this[li]&&this[li].length>=512&&!this[I0]&&!this[xb];){let r=this[li];this[li]=null,this[vb](r)}this[Db]=!1}(!this[li]||this[qd])&&this[O3]()}[vb](e){let r=0,o=e.length;for(;r+512<=o&&!this[I0]&&!this[xb];)switch(this[nc]){case"begin":case"header":this[kAe](e,r),r+=512;break;case"ignore":case"body":r+=this[N3](e,r);break;case"meta":r+=this[QAe](e,r);break;default:throw new Error("invalid state: "+this[nc])}r<o&&(this[li]?this[li]=Buffer.concat([e.slice(r),this[li]]):this[li]=e.slice(r))}end(e){this[I0]||(this[Ra]?this[Ra].end(e):(this[qd]=!0,this.write(e)))}})});var Qb=U((C4t,LAe)=>{"use strict";var elt=TE(),TAe=bb(),ZE=Ie("fs"),tlt=XE(),RAe=Ie("path"),M3=qE();LAe.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let o=elt(t);if(o.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!o.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&nlt(o,e),o.noResume||rlt(o),o.file&&o.sync?ilt(o):o.file?slt(o,r):NAe(o)};var rlt=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},nlt=(t,e)=>{let r=new Map(e.map(n=>[M3(n),!0])),o=t.filter,a=(n,u)=>{let A=u||RAe.parse(n).root||".",p=n===A?!1:r.has(n)?r.get(n):a(RAe.dirname(n),A);return r.set(n,p),p};t.filter=o?(n,u)=>o(n,u)&&a(M3(n)):n=>a(M3(n))},ilt=t=>{let e=NAe(t),r=t.file,o=!0,a;try{let n=ZE.statSync(r),u=t.maxReadSize||16*1024*1024;if(n.size<u)e.end(ZE.readFileSync(r));else{let A=0,p=Buffer.allocUnsafe(u);for(a=ZE.openSync(r,"r");A<n.size;){let h=ZE.readSync(a,p,0,u,A);A+=h,e.write(p.slice(0,h))}e.end()}o=!1}finally{if(o&&a)try{ZE.closeSync(a)}catch{}}},slt=(t,e)=>{let r=new TAe(t),o=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((u,A)=>{r.on("error",A),r.on("end",u),ZE.stat(a,(p,h)=>{if(p)A(p);else{let C=new tlt.ReadStream(a,{readSize:o,size:h.size});C.on("error",A),C.pipe(r)}})});return e?n.then(e,e):n},NAe=t=>new TAe(t)});var qAe=U((I4t,HAe)=>{"use strict";var olt=TE(),kb=gb(),OAe=XE(),MAe=Qb(),UAe=Ie("path");HAe.exports=(t,e,r)=>{if(typeof e=="function"&&(r=e),Array.isArray(t)&&(e=t,t={}),!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");e=Array.from(e);let o=olt(t);if(o.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!o.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return o.file&&o.sync?alt(o,e):o.file?llt(o,e,r):o.sync?clt(o,e):ult(o,e)};var alt=(t,e)=>{let r=new kb.Sync(t),o=new OAe.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(o),_Ae(r,e)},llt=(t,e,r)=>{let o=new kb(t),a=new OAe.WriteStream(t.file,{mode:t.mode||438});o.pipe(a);let n=new Promise((u,A)=>{a.on("error",A),a.on("close",u),o.on("error",A)});return U3(o,e),r?n.then(r,r):n},_Ae=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?MAe({file:UAe.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:o=>t.add(o)}):t.add(r)}),t.end()},U3=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return MAe({file:UAe.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:o=>t.add(o)}).then(o=>U3(t,e));t.add(r)}t.end()},clt=(t,e)=>{let r=new kb.Sync(t);return _Ae(r,e),r},ult=(t,e)=>{let r=new kb(t);return U3(r,e),r}});var _3=U((w4t,JAe)=>{"use strict";var Alt=TE(),jAe=gb(),hl=Ie("fs"),GAe=XE(),WAe=Qb(),YAe=Ie("path"),KAe=HE();JAe.exports=(t,e,r)=>{let o=Alt(t);if(!o.file)throw new TypeError("file is required");if(o.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),o.sync?flt(o,e):hlt(o,e,r)};var flt=(t,e)=>{let r=new jAe.Sync(t),o=!0,a,n;try{try{a=hl.openSync(t.file,"r+")}catch(p){if(p.code==="ENOENT")a=hl.openSync(t.file,"w+");else throw p}let u=hl.fstatSync(a),A=Buffer.alloc(512);e:for(n=0;n<u.size;n+=512){for(let C=0,w=0;C<512;C+=w){if(w=hl.readSync(a,A,C,A.length-C,n+C),n===0&&A[0]===31&&A[1]===139)throw new Error("cannot append to compressed archives");if(!w)break e}let p=new KAe(A);if(!p.cksumValid)break;let h=512*Math.ceil(p.size/512);if(n+h+512>u.size)break;n+=h,t.mtimeCache&&t.mtimeCache.set(p.path,p.mtime)}o=!1,plt(t,r,n,a,e)}finally{if(o)try{hl.closeSync(a)}catch{}}},plt=(t,e,r,o,a)=>{let n=new GAe.WriteStreamSync(t.file,{fd:o,start:r});e.pipe(n),glt(e,a)},hlt=(t,e,r)=>{e=Array.from(e);let o=new jAe(t),a=(u,A,p)=>{let h=(E,R)=>{E?hl.close(u,L=>p(E)):p(null,R)},C=0;if(A===0)return h(null,0);let w=0,v=Buffer.alloc(512),b=(E,R)=>{if(E)return h(E);if(w+=R,w<512&&R)return hl.read(u,v,w,v.length-w,C+w,b);if(C===0&&v[0]===31&&v[1]===139)return h(new Error("cannot append to compressed archives"));if(w<512)return h(null,C);let L=new KAe(v);if(!L.cksumValid)return h(null,C);let _=512*Math.ceil(L.size/512);if(C+_+512>A||(C+=_+512,C>=A))return h(null,C);t.mtimeCache&&t.mtimeCache.set(L.path,L.mtime),w=0,hl.read(u,v,0,512,C,b)};hl.read(u,v,0,512,C,b)},n=new Promise((u,A)=>{o.on("error",A);let p="r+",h=(C,w)=>{if(C&&C.code==="ENOENT"&&p==="r+")return p="w+",hl.open(t.file,p,h);if(C)return A(C);hl.fstat(w,(v,b)=>{if(v)return hl.close(w,()=>A(v));a(w,b.size,(E,R)=>{if(E)return A(E);let L=new GAe.WriteStream(t.file,{fd:w,start:R});o.pipe(L),L.on("error",A),L.on("close",u),VAe(o,e)})})};hl.open(t.file,p,h)});return r?n.then(r,r):n},glt=(t,e)=>{e.forEach(r=>{r.charAt(0)==="@"?WAe({file:YAe.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:o=>t.add(o)}):t.add(r)}),t.end()},VAe=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)==="@")return WAe({file:YAe.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:o=>t.add(o)}).then(o=>VAe(t,e));t.add(r)}t.end()}});var XAe=U((B4t,zAe)=>{"use strict";var dlt=TE(),mlt=_3();zAe.exports=(t,e,r)=>{let o=dlt(t);if(!o.file)throw new TypeError("file is required");if(o.gzip)throw new TypeError("cannot append to compressed archives");if(!e||!Array.isArray(e)||!e.length)throw new TypeError("no files or directories specified");return e=Array.from(e),ylt(o),mlt(o,e,r)};var ylt=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,o)=>e(r,o)&&!(t.mtimeCache.get(r)>o.mtime):(r,o)=>!(t.mtimeCache.get(r)>o.mtime)}});var efe=U((v4t,$Ae)=>{var{promisify:ZAe}=Ie("util"),w0=Ie("fs"),Elt=t=>{if(!t)t={mode:511,fs:w0};else if(typeof t=="object")t={mode:511,fs:w0,...t};else if(typeof t=="number")t={mode:t,fs:w0};else if(typeof t=="string")t={mode:parseInt(t,8),fs:w0};else throw new TypeError("invalid options argument");return t.mkdir=t.mkdir||t.fs.mkdir||w0.mkdir,t.mkdirAsync=ZAe(t.mkdir),t.stat=t.stat||t.fs.stat||w0.stat,t.statAsync=ZAe(t.stat),t.statSync=t.statSync||t.fs.statSync||w0.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||w0.mkdirSync,t};$Ae.exports=Elt});var rfe=U((D4t,tfe)=>{var Clt=process.platform,{resolve:Ilt,parse:wlt}=Ie("path"),Blt=t=>{if(/\0/.test(t))throw Object.assign(new TypeError("path must be a string without null bytes"),{path:t,code:"ERR_INVALID_ARG_VALUE"});if(t=Ilt(t),Clt==="win32"){let e=/[*|"<>?:]/,{root:r}=wlt(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error("Illegal characters in path."),{path:t,code:"EINVAL"})}return t};tfe.exports=Blt});var afe=U((S4t,ofe)=>{var{dirname:nfe}=Ie("path"),ife=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(o=>o.isDirectory()?r:void 0,o=>o.code==="ENOENT"?ife(t,nfe(e),e):void 0),sfe=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(o){return o.code==="ENOENT"?sfe(t,nfe(e),e):void 0}};ofe.exports={findMade:ife,findMadeSync:sfe}});var j3=U((P4t,cfe)=>{var{dirname:lfe}=Ie("path"),H3=(t,e,r)=>{e.recursive=!1;let o=lfe(t);return o===t?e.mkdirAsync(t,e).catch(a=>{if(a.code!=="EISDIR")throw a}):e.mkdirAsync(t,e).then(()=>r||t,a=>{if(a.code==="ENOENT")return H3(o,e).then(n=>H3(t,e,n));if(a.code!=="EEXIST"&&a.code!=="EROFS")throw a;return e.statAsync(t).then(n=>{if(n.isDirectory())return r;throw a},()=>{throw a})})},q3=(t,e,r)=>{let o=lfe(t);if(e.recursive=!1,o===t)try{return e.mkdirSync(t,e)}catch(a){if(a.code!=="EISDIR")throw a;return}try{return e.mkdirSync(t,e),r||t}catch(a){if(a.code==="ENOENT")return q3(t,e,q3(o,e,r));if(a.code!=="EEXIST"&&a.code!=="EROFS")throw a;try{if(!e.statSync(t).isDirectory())throw a}catch{throw a}}};cfe.exports={mkdirpManual:H3,mkdirpManualSync:q3}});var ffe=U((x4t,Afe)=>{var{dirname:ufe}=Ie("path"),{findMade:vlt,findMadeSync:Dlt}=afe(),{mkdirpManual:Slt,mkdirpManualSync:Plt}=j3(),xlt=(t,e)=>(e.recursive=!0,ufe(t)===t?e.mkdirAsync(t,e):vlt(e,t).then(o=>e.mkdirAsync(t,e).then(()=>o).catch(a=>{if(a.code==="ENOENT")return Slt(t,e);throw a}))),blt=(t,e)=>{if(e.recursive=!0,ufe(t)===t)return e.mkdirSync(t,e);let o=Dlt(e,t);try{return e.mkdirSync(t,e),o}catch(a){if(a.code==="ENOENT")return Plt(t,e);throw a}};Afe.exports={mkdirpNative:xlt,mkdirpNativeSync:blt}});var dfe=U((b4t,gfe)=>{var pfe=Ie("fs"),Qlt=process.version,G3=Qlt.replace(/^v/,"").split("."),hfe=+G3[0]>10||+G3[0]==10&&+G3[1]>=12,klt=hfe?t=>t.mkdir===pfe.mkdir:()=>!1,Flt=hfe?t=>t.mkdirSync===pfe.mkdirSync:()=>!1;gfe.exports={useNative:klt,useNativeSync:Flt}});var wfe=U((Q4t,Ife)=>{var $E=efe(),eC=rfe(),{mkdirpNative:mfe,mkdirpNativeSync:yfe}=ffe(),{mkdirpManual:Efe,mkdirpManualSync:Cfe}=j3(),{useNative:Rlt,useNativeSync:Tlt}=dfe(),tC=(t,e)=>(t=eC(t),e=$E(e),Rlt(e)?mfe(t,e):Efe(t,e)),Nlt=(t,e)=>(t=eC(t),e=$E(e),Tlt(e)?yfe(t,e):Cfe(t,e));tC.sync=Nlt;tC.native=(t,e)=>mfe(eC(t),$E(e));tC.manual=(t,e)=>Efe(eC(t),$E(e));tC.nativeSync=(t,e)=>yfe(eC(t),$E(e));tC.manualSync=(t,e)=>Cfe(eC(t),$E(e));Ife.exports=tC});var bfe=U((k4t,xfe)=>{"use strict";var sc=Ie("fs"),Wd=Ie("path"),Llt=sc.lchown?"lchown":"chown",Olt=sc.lchownSync?"lchownSync":"chownSync",vfe=sc.lchown&&!process.version.match(/v1[1-9]+\./)&&!process.version.match(/v10\.[6-9]/),Bfe=(t,e,r)=>{try{return sc[Olt](t,e,r)}catch(o){if(o.code!=="ENOENT")throw o}},Mlt=(t,e,r)=>{try{return sc.chownSync(t,e,r)}catch(o){if(o.code!=="ENOENT")throw o}},Ult=vfe?(t,e,r,o)=>a=>{!a||a.code!=="EISDIR"?o(a):sc.chown(t,e,r,o)}:(t,e,r,o)=>o,W3=vfe?(t,e,r)=>{try{return Bfe(t,e,r)}catch(o){if(o.code!=="EISDIR")throw o;Mlt(t,e,r)}}:(t,e,r)=>Bfe(t,e,r),_lt=process.version,Dfe=(t,e,r)=>sc.readdir(t,e,r),Hlt=(t,e)=>sc.readdirSync(t,e);/^v4\./.test(_lt)&&(Dfe=(t,e,r)=>sc.readdir(t,r));var Fb=(t,e,r,o)=>{sc[Llt](t,e,r,Ult(t,e,r,a=>{o(a&&a.code!=="ENOENT"?a:null)}))},Sfe=(t,e,r,o,a)=>{if(typeof e=="string")return sc.lstat(Wd.resolve(t,e),(n,u)=>{if(n)return a(n.code!=="ENOENT"?n:null);u.name=e,Sfe(t,u,r,o,a)});if(e.isDirectory())Y3(Wd.resolve(t,e.name),r,o,n=>{if(n)return a(n);let u=Wd.resolve(t,e.name);Fb(u,r,o,a)});else{let n=Wd.resolve(t,e.name);Fb(n,r,o,a)}},Y3=(t,e,r,o)=>{Dfe(t,{withFileTypes:!0},(a,n)=>{if(a){if(a.code==="ENOENT")return o();if(a.code!=="ENOTDIR"&&a.code!=="ENOTSUP")return o(a)}if(a||!n.length)return Fb(t,e,r,o);let u=n.length,A=null,p=h=>{if(!A){if(h)return o(A=h);if(--u===0)return Fb(t,e,r,o)}};n.forEach(h=>Sfe(t,h,e,r,p))})},qlt=(t,e,r,o)=>{if(typeof e=="string")try{let a=sc.lstatSync(Wd.resolve(t,e));a.name=e,e=a}catch(a){if(a.code==="ENOENT")return;throw a}e.isDirectory()&&Pfe(Wd.resolve(t,e.name),r,o),W3(Wd.resolve(t,e.name),r,o)},Pfe=(t,e,r)=>{let o;try{o=Hlt(t,{withFileTypes:!0})}catch(a){if(a.code==="ENOENT")return;if(a.code==="ENOTDIR"||a.code==="ENOTSUP")return W3(t,e,r);throw a}return o&&o.length&&o.forEach(a=>qlt(t,a,e,r)),W3(t,e,r)};xfe.exports=Y3;Y3.sync=Pfe});var Rfe=U((F4t,K3)=>{"use strict";var Qfe=wfe(),oc=Ie("fs"),Rb=Ie("path"),kfe=bfe(),Xc=UE(),Tb=class extends Error{constructor(e,r){super("Cannot extract through symbolic link"),this.path=r,this.symlink=e}get name(){return"SylinkError"}},Nb=class extends Error{constructor(e,r){super(r+": Cannot cd into '"+e+"'"),this.path=e,this.code=r}get name(){return"CwdError"}},Lb=(t,e)=>t.get(Xc(e)),M1=(t,e,r)=>t.set(Xc(e),r),jlt=(t,e)=>{oc.stat(t,(r,o)=>{(r||!o.isDirectory())&&(r=new Nb(t,r&&r.code||"ENOTDIR")),e(r)})};K3.exports=(t,e,r)=>{t=Xc(t);let o=e.umask,a=e.mode|448,n=(a&o)!==0,u=e.uid,A=e.gid,p=typeof u=="number"&&typeof A=="number"&&(u!==e.processUid||A!==e.processGid),h=e.preserve,C=e.unlink,w=e.cache,v=Xc(e.cwd),b=(L,_)=>{L?r(L):(M1(w,t,!0),_&&p?kfe(_,u,A,V=>b(V)):n?oc.chmod(t,a,r):r())};if(w&&Lb(w,t)===!0)return b();if(t===v)return jlt(t,b);if(h)return Qfe(t,{mode:a}).then(L=>b(null,L),b);let R=Xc(Rb.relative(v,t)).split("/");Ob(v,R,a,w,C,v,null,b)};var Ob=(t,e,r,o,a,n,u,A)=>{if(!e.length)return A(null,u);let p=e.shift(),h=Xc(Rb.resolve(t+"/"+p));if(Lb(o,h))return Ob(h,e,r,o,a,n,u,A);oc.mkdir(h,r,Ffe(h,e,r,o,a,n,u,A))},Ffe=(t,e,r,o,a,n,u,A)=>p=>{p?oc.lstat(t,(h,C)=>{if(h)h.path=h.path&&Xc(h.path),A(h);else if(C.isDirectory())Ob(t,e,r,o,a,n,u,A);else if(a)oc.unlink(t,w=>{if(w)return A(w);oc.mkdir(t,r,Ffe(t,e,r,o,a,n,u,A))});else{if(C.isSymbolicLink())return A(new Tb(t,t+"/"+e.join("/")));A(p)}}):(u=u||t,Ob(t,e,r,o,a,n,u,A))},Glt=t=>{let e=!1,r="ENOTDIR";try{e=oc.statSync(t).isDirectory()}catch(o){r=o.code}finally{if(!e)throw new Nb(t,r)}};K3.exports.sync=(t,e)=>{t=Xc(t);let r=e.umask,o=e.mode|448,a=(o&r)!==0,n=e.uid,u=e.gid,A=typeof n=="number"&&typeof u=="number"&&(n!==e.processUid||u!==e.processGid),p=e.preserve,h=e.unlink,C=e.cache,w=Xc(e.cwd),v=L=>{M1(C,t,!0),L&&A&&kfe.sync(L,n,u),a&&oc.chmodSync(t,o)};if(C&&Lb(C,t)===!0)return v();if(t===w)return Glt(w),v();if(p)return v(Qfe.sync(t,o));let E=Xc(Rb.relative(w,t)).split("/"),R=null;for(let L=E.shift(),_=w;L&&(_+="/"+L);L=E.shift())if(_=Xc(Rb.resolve(_)),!Lb(C,_))try{oc.mkdirSync(_,o),R=R||_,M1(C,_,!0)}catch{let re=oc.lstatSync(_);if(re.isDirectory()){M1(C,_,!0);continue}else if(h){oc.unlinkSync(_),oc.mkdirSync(_,o),R=R||_,M1(C,_,!0);continue}else if(re.isSymbolicLink())return new Tb(_,_+"/"+E.join("/"))}return v(R)}});var J3=U((R4t,Tfe)=>{var V3=Object.create(null),{hasOwnProperty:Wlt}=Object.prototype;Tfe.exports=t=>(Wlt.call(V3,t)||(V3[t]=t.normalize("NFKD")),V3[t])});var Mfe=U((T4t,Ofe)=>{var Nfe=Ie("assert"),Ylt=J3(),Klt=qE(),{join:Lfe}=Ie("path"),Vlt=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Jlt=Vlt==="win32";Ofe.exports=()=>{let t=new Map,e=new Map,r=h=>h.split("/").slice(0,-1).reduce((w,v)=>(w.length&&(v=Lfe(w[w.length-1],v)),w.push(v||"/"),w),[]),o=new Set,a=h=>{let C=e.get(h);if(!C)throw new Error("function does not have any path reservations");return{paths:C.paths.map(w=>t.get(w)),dirs:[...C.dirs].map(w=>t.get(w))}},n=h=>{let{paths:C,dirs:w}=a(h);return C.every(v=>v[0]===h)&&w.every(v=>v[0]instanceof Set&&v[0].has(h))},u=h=>o.has(h)||!n(h)?!1:(o.add(h),h(()=>A(h)),!0),A=h=>{if(!o.has(h))return!1;let{paths:C,dirs:w}=e.get(h),v=new Set;return C.forEach(b=>{let E=t.get(b);Nfe.equal(E[0],h),E.length===1?t.delete(b):(E.shift(),typeof E[0]=="function"?v.add(E[0]):E[0].forEach(R=>v.add(R)))}),w.forEach(b=>{let E=t.get(b);Nfe(E[0]instanceof Set),E[0].size===1&&E.length===1?t.delete(b):E[0].size===1?(E.shift(),v.add(E[0])):E[0].delete(h)}),o.delete(h),v.forEach(b=>u(b)),!0};return{check:n,reserve:(h,C)=>{h=Jlt?["win32 parallelization disabled"]:h.map(v=>Ylt(Klt(Lfe(v))).toLowerCase());let w=new Set(h.map(v=>r(v)).reduce((v,b)=>v.concat(b)));return e.set(C,{dirs:w,paths:h}),h.forEach(v=>{let b=t.get(v);b?b.push(C):t.set(v,[C])}),w.forEach(v=>{let b=t.get(v);b?b[b.length-1]instanceof Set?b[b.length-1].add(C):b.push(new Set([C])):t.set(v,[new Set([C])])}),u(C)}}}});var Hfe=U((N4t,_fe)=>{var zlt=process.platform,Xlt=zlt==="win32",Zlt=global.__FAKE_TESTING_FS__||Ie("fs"),{O_CREAT:$lt,O_TRUNC:ect,O_WRONLY:tct,UV_FS_O_FILEMAP:Ufe=0}=Zlt.constants,rct=Xlt&&!!Ufe,nct=512*1024,ict=Ufe|ect|$lt|tct;_fe.exports=rct?t=>t<nct?ict:"w":()=>"w"});var i_=U((L4t,tpe)=>{"use strict";var sct=Ie("assert"),oct=bb(),En=Ie("fs"),act=XE(),Kf=Ie("path"),Zfe=Rfe(),qfe=i3(),lct=Mfe(),cct=s3(),gl=UE(),uct=qE(),Act=J3(),jfe=Symbol("onEntry"),Z3=Symbol("checkFs"),Gfe=Symbol("checkFs2"),_b=Symbol("pruneCache"),$3=Symbol("isReusable"),ac=Symbol("makeFs"),e_=Symbol("file"),t_=Symbol("directory"),Hb=Symbol("link"),Wfe=Symbol("symlink"),Yfe=Symbol("hardlink"),Kfe=Symbol("unsupported"),Vfe=Symbol("checkPath"),B0=Symbol("mkdir"),ko=Symbol("onError"),Mb=Symbol("pending"),Jfe=Symbol("pend"),rC=Symbol("unpend"),z3=Symbol("ended"),X3=Symbol("maybeClose"),r_=Symbol("skip"),U1=Symbol("doChown"),_1=Symbol("uid"),H1=Symbol("gid"),q1=Symbol("checkedCwd"),$fe=Ie("crypto"),epe=Hfe(),fct=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,j1=fct==="win32",pct=(t,e)=>{if(!j1)return En.unlink(t,e);let r=t+".DELETE."+$fe.randomBytes(16).toString("hex");En.rename(t,r,o=>{if(o)return e(o);En.unlink(r,e)})},hct=t=>{if(!j1)return En.unlinkSync(t);let e=t+".DELETE."+$fe.randomBytes(16).toString("hex");En.renameSync(t,e),En.unlinkSync(e)},zfe=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,Xfe=t=>Act(uct(gl(t))).toLowerCase(),gct=(t,e)=>{e=Xfe(e);for(let r of t.keys()){let o=Xfe(r);(o===e||o.indexOf(e+"/")===0)&&t.delete(r)}},dct=t=>{for(let e of t.keys())t.delete(e)},G1=class extends oct{constructor(e){if(e||(e={}),e.ondone=r=>{this[z3]=!0,this[X3]()},super(e),this[q1]=!1,this.reservations=lct(),this.transform=typeof e.transform=="function"?e.transform:null,this.writable=!0,this.readable=!1,this[Mb]=0,this[z3]=!1,this.dirCache=e.dirCache||new Map,typeof e.uid=="number"||typeof e.gid=="number"){if(typeof e.uid!="number"||typeof e.gid!="number")throw new TypeError("cannot set owner without number uid and gid");if(e.preserveOwner)throw new TypeError("cannot preserve owner in archive and also set owner explicitly");this.uid=e.uid,this.gid=e.gid,this.setOwner=!0}else this.uid=null,this.gid=null,this.setOwner=!1;e.preserveOwner===void 0&&typeof e.uid!="number"?this.preserveOwner=process.getuid&&process.getuid()===0:this.preserveOwner=!!e.preserveOwner,this.processUid=(this.preserveOwner||this.setOwner)&&process.getuid?process.getuid():null,this.processGid=(this.preserveOwner||this.setOwner)&&process.getgid?process.getgid():null,this.forceChown=e.forceChown===!0,this.win32=!!e.win32||j1,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=gl(Kf.resolve(e.cwd||process.cwd())),this.strip=+e.strip||0,this.processUmask=e.noChmod?0:process.umask(),this.umask=typeof e.umask=="number"?e.umask:this.processUmask,this.dmode=e.dmode||511&~this.umask,this.fmode=e.fmode||438&~this.umask,this.on("entry",r=>this[jfe](r))}warn(e,r,o={}){return(e==="TAR_BAD_ARCHIVE"||e==="TAR_ABORT")&&(o.recoverable=!1),super.warn(e,r,o)}[X3](){this[z3]&&this[Mb]===0&&(this.emit("prefinish"),this.emit("finish"),this.emit("end"),this.emit("close"))}[Vfe](e){if(this.strip){let r=gl(e.path).split("/");if(r.length<this.strip)return!1;if(e.path=r.slice(this.strip).join("/"),e.type==="Link"){let o=gl(e.linkpath).split("/");if(o.length>=this.strip)e.linkpath=o.slice(this.strip).join("/");else return!1}}if(!this.preservePaths){let r=gl(e.path),o=r.split("/");if(o.includes("..")||j1&&/^[a-z]:\.\.$/i.test(o[0]))return this.warn("TAR_ENTRY_ERROR","path contains '..'",{entry:e,path:r}),!1;let[a,n]=cct(r);a&&(e.path=n,this.warn("TAR_ENTRY_INFO",`stripping ${a} from absolute path`,{entry:e,path:r}))}if(Kf.isAbsolute(e.path)?e.absolute=gl(Kf.resolve(e.path)):e.absolute=gl(Kf.resolve(this.cwd,e.path)),!this.preservePaths&&e.absolute.indexOf(this.cwd+"/")!==0&&e.absolute!==this.cwd)return this.warn("TAR_ENTRY_ERROR","path escaped extraction target",{entry:e,path:gl(e.path),resolvedPath:e.absolute,cwd:this.cwd}),!1;if(e.absolute===this.cwd&&e.type!=="Directory"&&e.type!=="GNUDumpDir")return!1;if(this.win32){let{root:r}=Kf.win32.parse(e.absolute);e.absolute=r+qfe.encode(e.absolute.substr(r.length));let{root:o}=Kf.win32.parse(e.path);e.path=o+qfe.encode(e.path.substr(o.length))}return!0}[jfe](e){if(!this[Vfe](e))return e.resume();switch(sct.equal(typeof e.absolute,"string"),e.type){case"Directory":case"GNUDumpDir":e.mode&&(e.mode=e.mode|448);case"File":case"OldFile":case"ContiguousFile":case"Link":case"SymbolicLink":return this[Z3](e);case"CharacterDevice":case"BlockDevice":case"FIFO":default:return this[Kfe](e)}}[ko](e,r){e.name==="CwdError"?this.emit("error",e):(this.warn("TAR_ENTRY_ERROR",e,{entry:r}),this[rC](),r.resume())}[B0](e,r,o){Zfe(gl(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r,noChmod:this.noChmod},o)}[U1](e){return this.forceChown||this.preserveOwner&&(typeof e.uid=="number"&&e.uid!==this.processUid||typeof e.gid=="number"&&e.gid!==this.processGid)||typeof this.uid=="number"&&this.uid!==this.processUid||typeof this.gid=="number"&&this.gid!==this.processGid}[_1](e){return zfe(this.uid,e.uid,this.processUid)}[H1](e){return zfe(this.gid,e.gid,this.processGid)}[e_](e,r){let o=e.mode&4095||this.fmode,a=new act.WriteStream(e.absolute,{flags:epe(e.size),mode:o,autoClose:!1});a.on("error",p=>{a.fd&&En.close(a.fd,()=>{}),a.write=()=>!0,this[ko](p,e),r()});let n=1,u=p=>{if(p){a.fd&&En.close(a.fd,()=>{}),this[ko](p,e),r();return}--n===0&&En.close(a.fd,h=>{h?this[ko](h,e):this[rC](),r()})};a.on("finish",p=>{let h=e.absolute,C=a.fd;if(e.mtime&&!this.noMtime){n++;let w=e.atime||new Date,v=e.mtime;En.futimes(C,w,v,b=>b?En.utimes(h,w,v,E=>u(E&&b)):u())}if(this[U1](e)){n++;let w=this[_1](e),v=this[H1](e);En.fchown(C,w,v,b=>b?En.chown(h,w,v,E=>u(E&&b)):u())}u()});let A=this.transform&&this.transform(e)||e;A!==e&&(A.on("error",p=>{this[ko](p,e),r()}),e.pipe(A)),A.pipe(a)}[t_](e,r){let o=e.mode&4095||this.dmode;this[B0](e.absolute,o,a=>{if(a){this[ko](a,e),r();return}let n=1,u=A=>{--n===0&&(r(),this[rC](),e.resume())};e.mtime&&!this.noMtime&&(n++,En.utimes(e.absolute,e.atime||new Date,e.mtime,u)),this[U1](e)&&(n++,En.chown(e.absolute,this[_1](e),this[H1](e),u)),u()})}[Kfe](e){e.unsupported=!0,this.warn("TAR_ENTRY_UNSUPPORTED",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[Wfe](e,r){this[Hb](e,e.linkpath,"symlink",r)}[Yfe](e,r){let o=gl(Kf.resolve(this.cwd,e.linkpath));this[Hb](e,o,"link",r)}[Jfe](){this[Mb]++}[rC](){this[Mb]--,this[X3]()}[r_](e){this[rC](),e.resume()}[$3](e,r){return e.type==="File"&&!this.unlink&&r.isFile()&&r.nlink<=1&&!j1}[Z3](e){this[Jfe]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,o=>this[Gfe](e,o))}[_b](e){e.type==="SymbolicLink"?dct(this.dirCache):e.type!=="Directory"&&gct(this.dirCache,e.absolute)}[Gfe](e,r){this[_b](e);let o=A=>{this[_b](e),r(A)},a=()=>{this[B0](this.cwd,this.dmode,A=>{if(A){this[ko](A,e),o();return}this[q1]=!0,n()})},n=()=>{if(e.absolute!==this.cwd){let A=gl(Kf.dirname(e.absolute));if(A!==this.cwd)return this[B0](A,this.dmode,p=>{if(p){this[ko](p,e),o();return}u()})}u()},u=()=>{En.lstat(e.absolute,(A,p)=>{if(p&&(this.keep||this.newer&&p.mtime>e.mtime)){this[r_](e),o();return}if(A||this[$3](e,p))return this[ac](null,e,o);if(p.isDirectory()){if(e.type==="Directory"){let h=!this.noChmod&&e.mode&&(p.mode&4095)!==e.mode,C=w=>this[ac](w,e,o);return h?En.chmod(e.absolute,e.mode,C):C()}if(e.absolute!==this.cwd)return En.rmdir(e.absolute,h=>this[ac](h,e,o))}if(e.absolute===this.cwd)return this[ac](null,e,o);pct(e.absolute,h=>this[ac](h,e,o))})};this[q1]?n():a()}[ac](e,r,o){if(e){this[ko](e,r),o();return}switch(r.type){case"File":case"OldFile":case"ContiguousFile":return this[e_](r,o);case"Link":return this[Yfe](r,o);case"SymbolicLink":return this[Wfe](r,o);case"Directory":case"GNUDumpDir":return this[t_](r,o)}}[Hb](e,r,o,a){En[o](r,e.absolute,n=>{n?this[ko](n,e):(this[rC](),e.resume()),a()})}},Ub=t=>{try{return[null,t()]}catch(e){return[e,null]}},n_=class extends G1{[ac](e,r){return super[ac](e,r,()=>{})}[Z3](e){if(this[_b](e),!this[q1]){let n=this[B0](this.cwd,this.dmode);if(n)return this[ko](n,e);this[q1]=!0}if(e.absolute!==this.cwd){let n=gl(Kf.dirname(e.absolute));if(n!==this.cwd){let u=this[B0](n,this.dmode);if(u)return this[ko](u,e)}}let[r,o]=Ub(()=>En.lstatSync(e.absolute));if(o&&(this.keep||this.newer&&o.mtime>e.mtime))return this[r_](e);if(r||this[$3](e,o))return this[ac](null,e);if(o.isDirectory()){if(e.type==="Directory"){let u=!this.noChmod&&e.mode&&(o.mode&4095)!==e.mode,[A]=u?Ub(()=>{En.chmodSync(e.absolute,e.mode)}):[];return this[ac](A,e)}let[n]=Ub(()=>En.rmdirSync(e.absolute));this[ac](n,e)}let[a]=e.absolute===this.cwd?[]:Ub(()=>hct(e.absolute));this[ac](a,e)}[e_](e,r){let o=e.mode&4095||this.fmode,a=A=>{let p;try{En.closeSync(n)}catch(h){p=h}(A||p)&&this[ko](A||p,e),r()},n;try{n=En.openSync(e.absolute,epe(e.size),o)}catch(A){return a(A)}let u=this.transform&&this.transform(e)||e;u!==e&&(u.on("error",A=>this[ko](A,e)),e.pipe(u)),u.on("data",A=>{try{En.writeSync(n,A,0,A.length)}catch(p){a(p)}}),u.on("end",A=>{let p=null;if(e.mtime&&!this.noMtime){let h=e.atime||new Date,C=e.mtime;try{En.futimesSync(n,h,C)}catch(w){try{En.utimesSync(e.absolute,h,C)}catch{p=w}}}if(this[U1](e)){let h=this[_1](e),C=this[H1](e);try{En.fchownSync(n,h,C)}catch(w){try{En.chownSync(e.absolute,h,C)}catch{p=p||w}}}a(p)})}[t_](e,r){let o=e.mode&4095||this.dmode,a=this[B0](e.absolute,o);if(a){this[ko](a,e),r();return}if(e.mtime&&!this.noMtime)try{En.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch{}if(this[U1](e))try{En.chownSync(e.absolute,this[_1](e),this[H1](e))}catch{}r(),e.resume()}[B0](e,r){try{return Zfe.sync(gl(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(o){return o}}[Hb](e,r,o,a){try{En[o+"Sync"](r,e.absolute),a(),e.resume()}catch(n){return this[ko](n,e)}}};G1.Sync=n_;tpe.exports=G1});var ope=U((O4t,spe)=>{"use strict";var mct=TE(),qb=i_(),npe=Ie("fs"),ipe=XE(),rpe=Ie("path"),s_=qE();spe.exports=(t,e,r)=>{typeof t=="function"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e=="function"&&(r=e,e=null),e?e=Array.from(e):e=[];let o=mct(t);if(o.sync&&typeof r=="function")throw new TypeError("callback not supported for sync tar functions");if(!o.file&&typeof r=="function")throw new TypeError("callback only supported with file option");return e.length&&yct(o,e),o.file&&o.sync?Ect(o):o.file?Cct(o,r):o.sync?Ict(o):wct(o)};var yct=(t,e)=>{let r=new Map(e.map(n=>[s_(n),!0])),o=t.filter,a=(n,u)=>{let A=u||rpe.parse(n).root||".",p=n===A?!1:r.has(n)?r.get(n):a(rpe.dirname(n),A);return r.set(n,p),p};t.filter=o?(n,u)=>o(n,u)&&a(s_(n)):n=>a(s_(n))},Ect=t=>{let e=new qb.Sync(t),r=t.file,o=npe.statSync(r),a=t.maxReadSize||16*1024*1024;new ipe.ReadStreamSync(r,{readSize:a,size:o.size}).pipe(e)},Cct=(t,e)=>{let r=new qb(t),o=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((u,A)=>{r.on("error",A),r.on("close",u),npe.stat(a,(p,h)=>{if(p)A(p);else{let C=new ipe.ReadStream(a,{readSize:o,size:h.size});C.on("error",A),C.pipe(r)}})});return e?n.then(e,e):n},Ict=t=>new qb.Sync(t),wct=t=>new qb(t)});var ape=U(fs=>{"use strict";fs.c=fs.create=qAe();fs.r=fs.replace=_3();fs.t=fs.list=Qb();fs.u=fs.update=XAe();fs.x=fs.extract=ope();fs.Pack=gb();fs.Unpack=i_();fs.Parse=bb();fs.ReadEntry=Xx();fs.WriteEntry=g3();fs.Header=HE();fs.Pax=$x();fs.types=XU()});var lpe,cpe,v0,jb,upe=dt(()=>{lpe=tt(nd()),cpe=Ie("worker_threads");d1();v0=Symbol("kTaskInfo"),jb=class{constructor(e){this.source=e;this.workers=[];this.limit=(0,lpe.default)(X4());this.cleanupInterval=setInterval(()=>{if(this.limit.pendingCount===0&&this.limit.activeCount===0){let r=this.workers.pop();r?r.terminate():clearInterval(this.cleanupInterval)}},5e3).unref()}createWorker(){this.cleanupInterval.refresh();let e=new cpe.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,"--unhandled-rejections=strict"]});return e.on("message",r=>{if(!e[v0])throw new Error("Assertion failed: Worker sent a result without having a task assigned");e[v0].resolve(r),e[v0]=null,e.unref(),this.workers.push(e)}),e.on("error",r=>{var o;(o=e[v0])==null||o.reject(r),e[v0]=null}),e.on("exit",r=>{var o;r!==0&&((o=e[v0])==null||o.reject(new Error(`Worker exited with code ${r}`))),e[v0]=null}),e}run(e){return this.limit(()=>{let r=this.workers.pop()??this.createWorker();return r.ref(),new Promise((o,a)=>{r[v0]={resolve:o,reject:a},r.postMessage(e)})})}}});var fpe=U((_4t,Ape)=>{var o_;Ape.exports.getContent=()=>(typeof o_>"u"&&(o_=Ie("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),o_)});var Ji={};Yt(Ji,{convertToZip:()=>vct,extractArchiveTo:()=>Sct,makeArchiveFromDirectory:()=>Bct});async function Bct(t,{baseFs:e=new xn,prefixPath:r=wt.root,compressionLevel:o,inMemory:a=!1}={}){let n;if(a)n=new os(null,{level:o});else{let A=await oe.mktempPromise(),p=J.join(A,"archive.zip");n=new os(p,{create:!0,level:o})}let u=J.resolve(wt.root,r);return await n.copyPromise(u,t,{baseFs:e,stableTime:!0,stableSort:!0}),n}async function vct(t,e){let r=await oe.mktempPromise(),o=J.join(r,"archive.zip");return ppe||(ppe=new jb((0,dpe.getContent)())),await ppe.run({tmpFile:o,tgz:t,opts:e}),new os(o,{level:e.compressionLevel})}async function*Dct(t){let e=new gpe.default.Parse,r=new hpe.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on("entry",o=>{r.write(o)}),e.on("error",o=>{r.destroy(o)}),e.on("close",()=>{r.destroyed||r.end()}),e.end(t);for await(let o of r){let a=o;yield a,a.resume()}}async function Sct(t,e,{stripComponents:r=0,prefixPath:o=wt.dot}={}){function a(n){if(n.path[0]==="/")return!0;let u=n.path.split(/\//g);return!!(u.some(A=>A==="..")||u.length<=r)}for await(let n of Dct(t)){if(a(n))continue;let u=J.normalize(ue.toPortablePath(n.path)).replace(/\/$/,"").split(/\//g);if(u.length<=r)continue;let A=u.slice(r).join("/"),p=J.join(o,A),h=420;switch((n.type==="Directory"||((n.mode??0)&73)!==0)&&(h|=73),n.type){case"Directory":e.mkdirpSync(J.dirname(p),{chmod:493,utimes:[Ii.SAFE_TIME,Ii.SAFE_TIME]}),e.mkdirSync(p,{mode:h}),e.utimesSync(p,Ii.SAFE_TIME,Ii.SAFE_TIME);break;case"OldFile":case"File":e.mkdirpSync(J.dirname(p),{chmod:493,utimes:[Ii.SAFE_TIME,Ii.SAFE_TIME]}),e.writeFileSync(p,await Jy(n),{mode:h}),e.utimesSync(p,Ii.SAFE_TIME,Ii.SAFE_TIME);break;case"SymbolicLink":e.mkdirpSync(J.dirname(p),{chmod:493,utimes:[Ii.SAFE_TIME,Ii.SAFE_TIME]}),e.symlinkSync(n.linkpath,p),e.lutimesSync(p,Ii.SAFE_TIME,Ii.SAFE_TIME);break}}return e}var hpe,gpe,dpe,ppe,mpe=dt(()=>{St();Hc();hpe=Ie("stream"),gpe=tt(ape());upe();Vl();dpe=tt(fpe())});var Epe=U((a_,ype)=>{(function(t,e){typeof a_=="object"?ype.exports=e():typeof define=="function"&&define.amd?define(e):t.treeify=e()})(a_,function(){function t(a,n){var u=n?"\u2514":"\u251C";return a?u+="\u2500 ":u+="\u2500\u2500\u2510",u}function e(a,n){var u=[];for(var A in a)!a.hasOwnProperty(A)||n&&typeof a[A]=="function"||u.push(A);return u}function r(a,n,u,A,p,h,C){var w="",v=0,b,E,R=A.slice(0);if(R.push([n,u])&&A.length>0&&(A.forEach(function(_,V){V>0&&(w+=(_[1]?" ":"\u2502")+" "),!E&&_[0]===n&&(E=!0)}),w+=t(a,u)+a,p&&(typeof n!="object"||n instanceof Date)&&(w+=": "+n),E&&(w+=" (circular ref.)"),C(w)),!E&&typeof n=="object"){var L=e(n,h);L.forEach(function(_){b=++v===L.length,r(_,n[_],b,R,p,h,C)})}}var o={};return o.asLines=function(a,n,u,A){var p=typeof u!="function"?u:!1;r(".",a,!1,[],n,p,A||u)},o.asTree=function(a,n,u){var A="";return r(".",a,!1,[],n,u,function(p){A+=p+` |
187 | `}),A},o})});var Xo={};Yt(Xo,{emitList:()=>fct,emitTree:()=>gpe,treeNodeToJson:()=>hpe,treeNodeToTreeify:()=>ppe});function ppe(t,{configuration:e}){let r={},o=(a,n)=>{let u=Array.isArray(a)?a.entries():Object.entries(a);for(let[A,{label:p,value:h,children:C}]of u){let w=[];typeof p<"u"&&w.push(jS(e,p,2)),typeof h<"u"&&w.push(Kt(e,h[0],h[1])),w.length===0&&w.push(jS(e,`${A}`,2));let v=w.join(": "),b=n[v]={};typeof C<"u"&&o(C,b)}};if(typeof t.children>"u")throw new Error("The root node must only contain children");return o(t.children,r),r}function hpe(t){let e=r=>{if(typeof r.children>"u"){if(typeof r.value>"u")throw new Error("Assertion failed: Expected a value to be set if the children are missing");return hd(r.value[0],r.value[1])}let o=Array.isArray(r.children)?r.children.entries():Object.entries(r.children??{}),a=Array.isArray(r.children)?[]:{};for(let[n,u]of o)a[n]=e(u);return typeof r.value>"u"?a:{value:hd(r.value[0],r.value[1]),children:a}};return e(t)}function fct(t,{configuration:e,stdout:r,json:o}){let a=t.map(n=>({value:n}));gpe({children:a},{configuration:e,stdout:r,json:o})}function gpe(t,{configuration:e,stdout:r,json:o,separators:a=0}){if(o){let u=Array.isArray(t.children)?t.children.values():Object.values(t.children??{});for(let A of u)r.write(`${JSON.stringify(hpe(A))} | 187 | `}),A},o})});var $o={};Yt($o,{emitList:()=>Pct,emitTree:()=>Bpe,treeNodeToJson:()=>wpe,treeNodeToTreeify:()=>Ipe});function Ipe(t,{configuration:e}){let r={},o=(a,n)=>{let u=Array.isArray(a)?a.entries():Object.entries(a);for(let[A,{label:p,value:h,children:C}]of u){let w=[];typeof p<"u"&&w.push(ZS(e,p,2)),typeof h<"u"&&w.push(Kt(e,h[0],h[1])),w.length===0&&w.push(ZS(e,`${A}`,2));let v=w.join(": "),b=n[v]={};typeof C<"u"&&o(C,b)}};if(typeof t.children>"u")throw new Error("The root node must only contain children");return o(t.children,r),r}function wpe(t){let e=r=>{if(typeof r.children>"u"){if(typeof r.value>"u")throw new Error("Assertion failed: Expected a value to be set if the children are missing");return yd(r.value[0],r.value[1])}let o=Array.isArray(r.children)?r.children.entries():Object.entries(r.children??{}),a=Array.isArray(r.children)?[]:{};for(let[n,u]of o)a[n]=e(u);return typeof r.value>"u"?a:{value:yd(r.value[0],r.value[1]),children:a}};return e(t)}function Pct(t,{configuration:e,stdout:r,json:o}){let a=t.map(n=>({value:n}));Bpe({children:a},{configuration:e,stdout:r,json:o})}function Bpe(t,{configuration:e,stdout:r,json:o,separators:a=0}){if(o){let u=Array.isArray(t.children)?t.children.values():Object.values(t.children??{});for(let A of u)r.write(`${JSON.stringify(wpe(A))} |
188 | `);return}let n=(0,fpe.asTree)(ppe(t,{configuration:e}),!1,!1);if(a>=1&&(n=n.replace(/^([├└]─)/gm,`\u2502 | 188 | `);return}let n=(0,Cpe.asTree)(Ipe(t,{configuration:e}),!1,!1);if(a>=1&&(n=n.replace(/^([├└]─)/gm,`\u2502 |
189 | $1`).replace(/^│\n/,"")),a>=2)for(let u=0;u<2;++u)n=n.replace(/^([│ ].{2}[├│ ].{2}[^\n]+\n)(([│ ]).{2}[├└].{2}[^\n]*\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3 \u2502 | 189 | $1`).replace(/^│\n/,"")),a>=2)for(let u=0;u<2;++u)n=n.replace(/^([│ ].{2}[├│ ].{2}[^\n]+\n)(([│ ]).{2}[├└].{2}[^\n]*\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3 \u2502 |
190 | $2`).replace(/^│\n/,"");if(a>=3)throw new Error("Only the first two levels are accepted by treeUtils.emitTree");r.write(n)}var fpe,dpe=dt(()=>{fpe=tt(Ape());Yl()});function s_(t){let e=t.indexOf("/");return e!==-1?t.slice(0,e):null}function hct(t){let e=t.indexOf("/");return e!==-1?t.slice(e+1):t}var mpe,o_,pct,Ur,ype=dt(()=>{bt();bt();Oc();mpe=Ie("crypto"),o_=tt(Ie("fs"));Jl();e0();Gl();Ks();pct=9,Ur=class{constructor(e,{configuration:r,immutable:o=r.get("enableImmutableCache"),check:a=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.cacheId=`-${(0,mpe.randomBytes)(8).toString("hex")}.tmp`;this.configuration=r,this.cwd=e,this.immutable=o,this.check=a;let n=r.get("cacheKeyOverride");if(n!==null)this.cacheKey=`${n}`;else{let u=r.get("compressionLevel"),A=u!==oy?`c${u}`:"";this.cacheKey=[pct,A].join("")}}static async find(e,{immutable:r,check:o}={}){let a=new Ur(e.get("cacheFolder"),{configuration:e,immutable:r,check:o});return await a.setup(),a}get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null;let e=`${this.configuration.get("globalFolder")}/cache`;return e!==this.cwd?e:null}getVersionFilename(e){return`${rE(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,r){let a=hct(r).slice(0,10);return`${rE(e)}-${a}.zip`}getLocatorPath(e,r,o={}){var n;return this.mirrorCwd===null||((n=o.unstablePackages)==null?void 0:n.has(e.locatorHash))?V.resolve(this.cwd,this.getVersionFilename(e)):r===null||s_(r)!==this.cacheKey?null:V.resolve(this.cwd,this.getChecksumFilename(e,r))}getLocatorMirrorPath(e){let r=this.mirrorCwd;return r!==null?V.resolve(r,this.getVersionFilename(e)):null}async setup(){if(!this.configuration.get("enableGlobalCache"))if(this.immutable){if(!await ae.existsPromise(this.cwd))throw new Jt(56,"Cache path does not exist.")}else{await ae.mkdirPromise(this.cwd,{recursive:!0});let e=V.resolve(this.cwd,".gitignore");await ae.changeFilePromise(e,`/.gitignore | 190 | $2`).replace(/^│\n/,"");if(a>=3)throw new Error("Only the first two levels are accepted by treeUtils.emitTree");r.write(n)}var Cpe,vpe=dt(()=>{Cpe=tt(Epe());zl()});function l_(t){let e=t.indexOf("/");return e!==-1?t.slice(0,e):null}function bct(t){let e=t.indexOf("/");return e!==-1?t.slice(e+1):t}var Dpe,c_,xct,Ur,Spe=dt(()=>{St();St();Hc();Dpe=Ie("crypto"),c_=tt(Ie("fs"));Zl();n0();Vl();Ks();xct=9,Ur=class{constructor(e,{configuration:r,immutable:o=r.get("enableImmutableCache"),check:a=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.cacheId=`-${(0,Dpe.randomBytes)(8).toString("hex")}.tmp`;this.configuration=r,this.cwd=e,this.immutable=o,this.check=a;let n=r.get("cacheKeyOverride");if(n!==null)this.cacheKey=`${n}`;else{let u=r.get("compressionLevel"),A=u!==Ay?`c${u}`:"";this.cacheKey=[xct,A].join("")}}static async find(e,{immutable:r,check:o}={}){let a=new Ur(e.get("cacheFolder"),{configuration:e,immutable:r,check:o});return await a.setup(),a}get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null;let e=`${this.configuration.get("globalFolder")}/cache`;return e!==this.cwd?e:null}getVersionFilename(e){return`${aE(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,r){let a=bct(r).slice(0,10);return`${aE(e)}-${a}.zip`}getLocatorPath(e,r,o={}){var n;return this.mirrorCwd===null||((n=o.unstablePackages)==null?void 0:n.has(e.locatorHash))?J.resolve(this.cwd,this.getVersionFilename(e)):r===null||l_(r)!==this.cacheKey?null:J.resolve(this.cwd,this.getChecksumFilename(e,r))}getLocatorMirrorPath(e){let r=this.mirrorCwd;return r!==null?J.resolve(r,this.getVersionFilename(e)):null}async setup(){if(!this.configuration.get("enableGlobalCache"))if(this.immutable){if(!await oe.existsPromise(this.cwd))throw new Vt(56,"Cache path does not exist.")}else{await oe.mkdirPromise(this.cwd,{recursive:!0});let e=J.resolve(this.cwd,".gitignore");await oe.changeFilePromise(e,`/.gitignore |
191 | *.flock | 191 | *.flock |
192 | *.tmp | 192 | *.tmp |
193 | `)}(this.mirrorCwd||!this.immutable)&&await ae.mkdirPromise(this.mirrorCwd||this.cwd,{recursive:!0})}async fetchPackageFromCache(e,r,{onHit:o,onMiss:a,loader:n,...u}){var ge;let A=this.getLocatorMirrorPath(e),p=new xn,h=()=>{let le=new os,Pe=V.join(wt.root,pM(e));return le.mkdirSync(Pe,{recursive:!0}),le.writeJsonSync(V.join(Pe,Lr.manifest),{name:nn(e),mocked:!0}),le},C=async(le,Pe=null)=>{var De;if(Pe===null&&((De=u.unstablePackages)==null?void 0:De.has(e.locatorHash)))return{isValid:!0,hash:null};let g=!u.skipIntegrityCheck||!r?`${this.cacheKey}/${await IP(le)}`:r;if(Pe!==null){let Ee=!u.skipIntegrityCheck||!r?`${this.cacheKey}/${await IP(Pe)}`:r;if(g!==Ee)throw new Jt(18,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}if(r!==null&&g!==r){let Ee;switch(this.check?Ee="throw":s_(r)!==s_(g)?Ee="update":Ee=this.configuration.get("checksumBehavior"),Ee){case"ignore":return{isValid:!0,hash:r};case"update":return{isValid:!0,hash:g};case"reset":return{isValid:!1,hash:r};default:case"throw":throw new Jt(18,"The remote archive doesn't match the expected checksum")}}return{isValid:!0,hash:g}},w=async le=>{if(!n)throw new Error(`Cache check required but no loader configured for ${kr(this.configuration,e)}`);let Pe=await n(),g=Pe.getRealPath();Pe.saveAndClose(),await ae.chmodPromise(g,420);let De=await C(le,g);if(!De.isValid)throw new Error("Assertion failed: Expected a valid checksum");return De.hash},v=async()=>{if(A===null||!await ae.existsPromise(A)){let le=await n(),Pe=le.getRealPath();return le.saveAndClose(),{source:"loader",path:Pe}}return{source:"mirror",path:A}},b=async()=>{if(!n)throw new Error(`Cache entry required but missing for ${kr(this.configuration,e)}`);if(this.immutable)throw new Jt(56,`Cache entry required but missing for ${kr(this.configuration,e)}`);let{path:le,source:Pe}=await v(),g=(await C(le)).hash,De=this.getLocatorPath(e,g,u);if(!De)throw new Error("Assertion failed: Expected the cache path to be available");let Ee=[];Pe!=="mirror"&&A!==null&&Ee.push(async()=>{let ne=`${A}${this.cacheId}`;await ae.copyFilePromise(le,ne,o_.default.constants.COPYFILE_FICLONE),await ae.chmodPromise(ne,420),await ae.renamePromise(ne,A)}),(!u.mirrorWriteOnly||A===null)&&Ee.push(async()=>{let ne=`${De}${this.cacheId}`;await ae.copyFilePromise(le,ne,o_.default.constants.COPYFILE_FICLONE),await ae.chmodPromise(ne,420),await ae.renamePromise(ne,De)});let de=u.mirrorWriteOnly?A??De:De;return await Promise.all(Ee.map(ne=>ne())),[!1,de,g]},E=async()=>{let Pe=(async()=>{var Z;let g=this.getLocatorPath(e,r,u),De=g!==null?this.markedFiles.has(g)||await p.existsPromise(g):!1,Ee=!!((Z=u.mockedPackages)!=null&&Z.has(e.locatorHash))&&(!this.check||!De),de=Ee||De,ne=de?o:a;if(ne&&ne(),de){let me=null,be=g;if(!Ee)if(this.check)me=await w(be);else{let ut=await C(be);if(ut.isValid)me=ut.hash;else return b()}return[Ee,be,me]}else return b()})();this.mutexes.set(e.locatorHash,Pe);try{return await Pe}finally{this.mutexes.delete(e.locatorHash)}};for(let le;le=this.mutexes.get(e.locatorHash);)await le;let[R,L,_]=await E();R||this.markedFiles.add(L);let J,re=R?()=>h():()=>new os(L,{baseFs:p,readOnly:!0}),oe=new ty(()=>fL(()=>J=re(),le=>`Failed to open the cache entry for ${kr(this.configuration,e)}: ${le}`),V),pe=new qu(L,{baseFs:oe,pathUtils:V}),he=()=>{J==null||J.discardAndClose()},ve=(ge=u.unstablePackages)!=null&&ge.has(e.locatorHash)?null:_;return[pe,he,ve]}}});var Nb,Epe=dt(()=>{Nb=(r=>(r[r.SCRIPT=0]="SCRIPT",r[r.SHELLCODE=1]="SHELLCODE",r))(Nb||{})});var gct,ZE,a_=dt(()=>{bt();Ol();r0();Ks();gct=[[/^(git(?:\+(?:https|ssh))?:\/\/.*(?:\.git)?)#(.*)$/,(t,e,r,o)=>`${r}#commit=${o}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(t,e,r="",o,a)=>`https://${r}github.com/${o}.git#commit=${a}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(t,e,r="",o,a)=>`https://${r}github.com/${o}.git#commit=${a}`],[/^https?:\/\/[^/]+\/(?:[^/]+\/)*(?:@.+(?:\/|(?:%2f)))?([^/]+)\/(?:-|download)\/\1-[^/]+\.tgz(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.pkg\.github\.com\/download\/(?:@[^/]+)\/(?:[^/]+)\/(?:[^/]+)\/(?:[0-9a-f]+)(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.fontawesome\.com\/(?:@[^/]+)\/([^/]+)\/-\/([^/]+)\/\1-\2.tgz(?:#|$)/,t=>`npm:${t}`],[/^https?:\/\/[^/]+\/.*\/(@[^/]+)\/([^/]+)\/-\/\1\/\2-(?:[.\d\w-]+)\.tgz(?:#|$)/,(t,e)=>DP({protocol:"npm:",source:null,selector:t,params:{__archiveUrl:e}})],[/^[^/]+\.tgz#[0-9a-f]+$/,t=>`npm:${t}`]],ZE=class{constructor(e){this.resolver=e;this.resolutions=null}async setup(e,{report:r}){let o=V.join(e.cwd,e.configuration.get("lockfileFilename"));if(!ae.existsSync(o))return;let a=await ae.readFilePromise(o,"utf8"),n=Yi(a);if(Object.prototype.hasOwnProperty.call(n,"__metadata"))return;let u=this.resolutions=new Map;for(let A of Object.keys(n)){let p=Yw(A);if(!p){r.reportWarning(14,`Failed to parse the string "${A}" into a proper descriptor`);continue}let h=jc(p.range)?mn(p,`npm:${p.range}`):p,{version:C,resolved:w}=n[A];if(!w)continue;let v;for(let[E,R]of gct){let L=w.match(E);if(L){v=R(C,...L);break}}if(!v){r.reportWarning(14,`${Ln(e.configuration,h)}: Only some patterns can be imported from legacy lockfiles (not "${w}")`);continue}let b=h;try{let E=Id(h.range),R=Yw(E.selector,!0);R&&(b=R)}catch{}u.set(h.descriptorHash,us(b,v))}}supportsDescriptor(e,r){return this.resolutions?this.resolutions.has(e.descriptorHash):!1}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!this.resolutions)throw new Error("Assertion failed: The resolution store should have been setup");let a=this.resolutions.get(e.descriptorHash);if(!a)throw new Error("Assertion failed: The resolution should have been registered");let n=lM(a),u=o.project.configuration.normalizeDependency(n);return await this.resolver.getCandidates(u,r,o)}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}}});var fA,Cpe=dt(()=>{Jl();kx();Yl();fA=class extends Vs{constructor({configuration:r,stdout:o,suggestInstall:a=!0}){super();this.errorCount=0;Ow(this,{configuration:r}),this.configuration=r,this.stdout=o,this.suggestInstall=a}static async start(r,o){let a=new this(r);try{await o(a)}catch(n){a.reportExceptionOnce(n)}finally{await a.finalize()}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(r){}reportCacheMiss(r){}startSectionSync(r,o){return o()}async startSectionPromise(r,o){return await o()}startTimerSync(r,o,a){return(typeof o=="function"?o:a)()}async startTimerPromise(r,o,a){return await(typeof o=="function"?o:a)()}async startCacheReport(r){return await r()}reportSeparator(){}reportInfo(r,o){}reportWarning(r,o){}reportError(r,o){this.errorCount+=1,this.stdout.write(`${Kt(this.configuration,"\u27A4","redBright")} ${this.formatNameWithHyperlink(r)}: ${o} | 193 | `)}(this.mirrorCwd||!this.immutable)&&await oe.mkdirPromise(this.mirrorCwd||this.cwd,{recursive:!0})}async fetchPackageFromCache(e,r,{onHit:o,onMiss:a,loader:n,...u}){var ge;let A=this.getLocatorMirrorPath(e),p=new xn,h=()=>{let le=new os,Pe=J.join(wt.root,dM(e));return le.mkdirSync(Pe,{recursive:!0}),le.writeJsonSync(J.join(Pe,Lr.manifest),{name:nn(e),mocked:!0}),le},C=async(le,Pe=null)=>{var ve;if(Pe===null&&((ve=u.unstablePackages)==null?void 0:ve.has(e.locatorHash)))return{isValid:!0,hash:null};let g=!u.skipIntegrityCheck||!r?`${this.cacheKey}/${await QP(le)}`:r;if(Pe!==null){let Ee=!u.skipIntegrityCheck||!r?`${this.cacheKey}/${await QP(Pe)}`:r;if(g!==Ee)throw new Vt(18,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}if(r!==null&&g!==r){let Ee;switch(this.check?Ee="throw":l_(r)!==l_(g)?Ee="update":Ee=this.configuration.get("checksumBehavior"),Ee){case"ignore":return{isValid:!0,hash:r};case"update":return{isValid:!0,hash:g};case"reset":return{isValid:!1,hash:r};default:case"throw":throw new Vt(18,"The remote archive doesn't match the expected checksum")}}return{isValid:!0,hash:g}},w=async le=>{if(!n)throw new Error(`Cache check required but no loader configured for ${kr(this.configuration,e)}`);let Pe=await n(),g=Pe.getRealPath();Pe.saveAndClose(),await oe.chmodPromise(g,420);let ve=await C(le,g);if(!ve.isValid)throw new Error("Assertion failed: Expected a valid checksum");return ve.hash},v=async()=>{if(A===null||!await oe.existsPromise(A)){let le=await n(),Pe=le.getRealPath();return le.saveAndClose(),{source:"loader",path:Pe}}return{source:"mirror",path:A}},b=async()=>{if(!n)throw new Error(`Cache entry required but missing for ${kr(this.configuration,e)}`);if(this.immutable)throw new Vt(56,`Cache entry required but missing for ${kr(this.configuration,e)}`);let{path:le,source:Pe}=await v(),g=(await C(le)).hash,ve=this.getLocatorPath(e,g,u);if(!ve)throw new Error("Assertion failed: Expected the cache path to be available");let Ee=[];Pe!=="mirror"&&A!==null&&Ee.push(async()=>{let ne=`${A}${this.cacheId}`;await oe.copyFilePromise(le,ne,c_.default.constants.COPYFILE_FICLONE),await oe.chmodPromise(ne,420),await oe.renamePromise(ne,A)}),(!u.mirrorWriteOnly||A===null)&&Ee.push(async()=>{let ne=`${ve}${this.cacheId}`;await oe.copyFilePromise(le,ne,c_.default.constants.COPYFILE_FICLONE),await oe.chmodPromise(ne,420),await oe.renamePromise(ne,ve)});let de=u.mirrorWriteOnly?A??ve:ve;return await Promise.all(Ee.map(ne=>ne())),[!1,de,g]},E=async()=>{let Pe=(async()=>{var Z;let g=this.getLocatorPath(e,r,u),ve=g!==null?this.markedFiles.has(g)||await p.existsPromise(g):!1,Ee=!!((Z=u.mockedPackages)!=null&&Z.has(e.locatorHash))&&(!this.check||!ve),de=Ee||ve,ne=de?o:a;if(ne&&ne(),de){let me=null,be=g;if(!Ee)if(this.check)me=await w(be);else{let ut=await C(be);if(ut.isValid)me=ut.hash;else return b()}return[Ee,be,me]}else return b()})();this.mutexes.set(e.locatorHash,Pe);try{return await Pe}finally{this.mutexes.delete(e.locatorHash)}};for(let le;le=this.mutexes.get(e.locatorHash);)await le;let[R,L,_]=await E();R||this.markedFiles.add(L);let V,re=R?()=>h():()=>new os(L,{baseFs:p,readOnly:!0}),ae=new oy(()=>gL(()=>V=re(),le=>`Failed to open the cache entry for ${kr(this.configuration,e)}: ${le}`),J),he=new ju(L,{baseFs:ae,pathUtils:J}),pe=()=>{V==null||V.discardAndClose()},De=(ge=u.unstablePackages)!=null&&ge.has(e.locatorHash)?null:_;return[he,pe,De]}}});var Gb,Ppe=dt(()=>{Gb=(r=>(r[r.SCRIPT=0]="SCRIPT",r[r.SHELLCODE=1]="SHELLCODE",r))(Gb||{})});var Qct,nC,u_=dt(()=>{St();Hl();s0();Ks();Qct=[[/^(git(?:\+(?:https|ssh))?:\/\/.*(?:\.git)?)#(.*)$/,(t,e,r,o)=>`${r}#commit=${o}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(t,e,r="",o,a)=>`https://${r}github.com/${o}.git#commit=${a}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(t,e,r="",o,a)=>`https://${r}github.com/${o}.git#commit=${a}`],[/^https?:\/\/[^/]+\/(?:[^/]+\/)*(?:@.+(?:\/|(?:%2f)))?([^/]+)\/(?:-|download)\/\1-[^/]+\.tgz(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.pkg\.github\.com\/download\/(?:@[^/]+)\/(?:[^/]+)\/(?:[^/]+)\/(?:[0-9a-f]+)(?:#|$)/,t=>`npm:${t}`],[/^https:\/\/npm\.fontawesome\.com\/(?:@[^/]+)\/([^/]+)\/-\/([^/]+)\/\1-\2.tgz(?:#|$)/,t=>`npm:${t}`],[/^https?:\/\/[^/]+\/.*\/(@[^/]+)\/([^/]+)\/-\/\1\/\2-(?:[.\d\w-]+)\.tgz(?:#|$)/,(t,e)=>TP({protocol:"npm:",source:null,selector:t,params:{__archiveUrl:e}})],[/^[^/]+\.tgz#[0-9a-f]+$/,t=>`npm:${t}`]],nC=class{constructor(e){this.resolver=e;this.resolutions=null}async setup(e,{report:r}){let o=J.join(e.cwd,e.configuration.get("lockfileFilename"));if(!oe.existsSync(o))return;let a=await oe.readFilePromise(o,"utf8"),n=Yi(a);if(Object.prototype.hasOwnProperty.call(n,"__metadata"))return;let u=this.resolutions=new Map;for(let A of Object.keys(n)){let p=Xw(A);if(!p){r.reportWarning(14,`Failed to parse the string "${A}" into a proper descriptor`);continue}let h=cl(p.range)?mn(p,`npm:${p.range}`):p,{version:C,resolved:w}=n[A];if(!w)continue;let v;for(let[E,R]of Qct){let L=w.match(E);if(L){v=R(C,...L);break}}if(!v){r.reportWarning(14,`${Ln(e.configuration,h)}: Only some patterns can be imported from legacy lockfiles (not "${w}")`);continue}let b=h;try{let E=Dd(h.range),R=Xw(E.selector,!0);R&&(b=R)}catch{}u.set(h.descriptorHash,us(b,v))}}supportsDescriptor(e,r){return this.resolutions?this.resolutions.has(e.descriptorHash):!1}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!this.resolutions)throw new Error("Assertion failed: The resolution store should have been setup");let a=this.resolutions.get(e.descriptorHash);if(!a)throw new Error("Assertion failed: The resolution should have been registered");let n=AM(a),u=o.project.configuration.normalizeDependency(n);return await this.resolver.getCandidates(u,r,o)}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}}});var pA,xpe=dt(()=>{Zl();_x();zl();pA=class extends Js{constructor({configuration:r,stdout:o,suggestInstall:a=!0}){super();this.errorCount=0;qw(this,{configuration:r}),this.configuration=r,this.stdout=o,this.suggestInstall=a}static async start(r,o){let a=new this(r);try{await o(a)}catch(n){a.reportExceptionOnce(n)}finally{await a.finalize()}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(r){}reportCacheMiss(r){}startSectionSync(r,o){return o()}async startSectionPromise(r,o){return await o()}startTimerSync(r,o,a){return(typeof o=="function"?o:a)()}async startTimerPromise(r,o,a){return await(typeof o=="function"?o:a)()}async startCacheReport(r){return await r()}reportSeparator(){}reportInfo(r,o){}reportWarning(r,o){}reportError(r,o){this.errorCount+=1,this.stdout.write(`${Kt(this.configuration,"\u27A4","redBright")} ${this.formatNameWithHyperlink(r)}: ${o} |
194 | `)}reportProgress(r){return{...Promise.resolve().then(async()=>{for await(let{}of r);}),stop:()=>{}}}reportJson(r){}async finalize(){this.errorCount>0&&(this.stdout.write(` | 194 | `)}reportProgress(r){return{...Promise.resolve().then(async()=>{for await(let{}of r);}),stop:()=>{}}}reportJson(r){}async finalize(){this.errorCount>0&&(this.stdout.write(` |
195 | `),this.stdout.write(`${Kt(this.configuration,"\u27A4","redBright")} Errors happened when preparing the environment required to run this command. | 195 | `),this.stdout.write(`${Kt(this.configuration,"\u27A4","redBright")} Errors happened when preparing the environment required to run this command. |
196 | `),this.suggestInstall&&this.stdout.write(`${Kt(this.configuration,"\u27A4","redBright")} This might be caused by packages being missing from the lockfile, in which case running "yarn install" might help. | 196 | `),this.suggestInstall&&this.stdout.write(`${Kt(this.configuration,"\u27A4","redBright")} This might be caused by packages being missing from the lockfile, in which case running "yarn install" might help. |
197 | `))}formatNameWithHyperlink(r){return CU(r,{configuration:this.configuration,json:!1})}}});var $E,l_=dt(()=>{Ks();$E=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return!!(r.project.storedResolutions.get(e.descriptorHash)||r.project.originalPackages.has(BP(e).locatorHash))}supportsLocator(e,r){return!!(r.project.originalPackages.has(e.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(e,r){throw new Error("The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,o){let a=o.project.storedResolutions.get(e.descriptorHash);if(a){let u=o.project.originalPackages.get(a);if(u)return[u]}let n=o.project.originalPackages.get(BP(e).locatorHash);if(n)return[n];throw new Error("Resolution expected from the lockfile data")}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let o=r.project.originalPackages.get(e.locatorHash);if(!o)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return o}}});function Gf(){}function dct(t,e,r,o,a){for(var n=0,u=e.length,A=0,p=0;n<u;n++){var h=e[n];if(h.removed){if(h.value=t.join(o.slice(p,p+h.count)),p+=h.count,n&&e[n-1].added){var w=e[n-1];e[n-1]=e[n],e[n]=w}}else{if(!h.added&&a){var C=r.slice(A,A+h.count);C=C.map(function(b,E){var R=o[p+E];return R.length>b.length?R:b}),h.value=t.join(C)}else h.value=t.join(r.slice(A,A+h.count));A+=h.count,h.added||(p+=h.count)}}var v=e[u-1];return u>1&&typeof v.value=="string"&&(v.added||v.removed)&&t.equals("",v.value)&&(e[u-2].value+=v.value,e.pop()),e}function mct(t){return{newPos:t.newPos,components:t.components.slice(0)}}function yct(t,e){if(typeof t=="function")e.callback=t;else if(t)for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}function Bpe(t,e,r){return r=yct(r,{ignoreWhitespace:!0}),p_.diff(t,e,r)}function Ect(t,e,r){return h_.diff(t,e,r)}function Lb(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Lb=function(e){return typeof e}:Lb=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Lb(t)}function c_(t){return wct(t)||Bct(t)||vct(t)||Dct()}function wct(t){if(Array.isArray(t))return u_(t)}function Bct(t){if(typeof Symbol<"u"&&Symbol.iterator in Object(t))return Array.from(t)}function vct(t,e){if(!!t){if(typeof t=="string")return u_(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return u_(t,e)}}function u_(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,o=new Array(e);r<e;r++)o[r]=t[r];return o}function Dct(){throw new TypeError(`Invalid attempt to spread non-iterable instance. | 197 | `))}formatNameWithHyperlink(r){return BU(r,{configuration:this.configuration,json:!1})}}});var iC,A_=dt(()=>{Ks();iC=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return!!(r.project.storedResolutions.get(e.descriptorHash)||r.project.originalPackages.has(FP(e).locatorHash))}supportsLocator(e,r){return!!(r.project.originalPackages.has(e.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(e,r){throw new Error("The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,o){let a=o.project.storedResolutions.get(e.descriptorHash);if(a){let u=o.project.originalPackages.get(a);if(u)return[u]}let n=o.project.originalPackages.get(FP(e).locatorHash);if(n)return[n];throw new Error("Resolution expected from the lockfile data")}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let o=r.project.originalPackages.get(e.locatorHash);if(!o)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return o}}});function Vf(){}function kct(t,e,r,o,a){for(var n=0,u=e.length,A=0,p=0;n<u;n++){var h=e[n];if(h.removed){if(h.value=t.join(o.slice(p,p+h.count)),p+=h.count,n&&e[n-1].added){var w=e[n-1];e[n-1]=e[n],e[n]=w}}else{if(!h.added&&a){var C=r.slice(A,A+h.count);C=C.map(function(b,E){var R=o[p+E];return R.length>b.length?R:b}),h.value=t.join(C)}else h.value=t.join(r.slice(A,A+h.count));A+=h.count,h.added||(p+=h.count)}}var v=e[u-1];return u>1&&typeof v.value=="string"&&(v.added||v.removed)&&t.equals("",v.value)&&(e[u-2].value+=v.value,e.pop()),e}function Fct(t){return{newPos:t.newPos,components:t.components.slice(0)}}function Rct(t,e){if(typeof t=="function")e.callback=t;else if(t)for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}function kpe(t,e,r){return r=Rct(r,{ignoreWhitespace:!0}),d_.diff(t,e,r)}function Tct(t,e,r){return m_.diff(t,e,r)}function Wb(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Wb=function(e){return typeof e}:Wb=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Wb(t)}function f_(t){return Oct(t)||Mct(t)||Uct(t)||_ct()}function Oct(t){if(Array.isArray(t))return p_(t)}function Mct(t){if(typeof Symbol<"u"&&Symbol.iterator in Object(t))return Array.from(t)}function Uct(t,e){if(!!t){if(typeof t=="string")return p_(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return p_(t,e)}}function p_(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,o=new Array(e);r<e;r++)o[r]=t[r];return o}function _ct(){throw new TypeError(`Invalid attempt to spread non-iterable instance. |
198 | In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function A_(t,e,r,o,a){e=e||[],r=r||[],o&&(t=o(a,t));var n;for(n=0;n<e.length;n+=1)if(e[n]===t)return r[n];var u;if(Sct.call(t)==="[object Array]"){for(e.push(t),u=new Array(t.length),r.push(u),n=0;n<t.length;n+=1)u[n]=A_(t[n],e,r,o,a);return e.pop(),r.pop(),u}if(t&&t.toJSON&&(t=t.toJSON()),Lb(t)==="object"&&t!==null){e.push(t),u={},r.push(u);var A=[],p;for(p in t)t.hasOwnProperty(p)&&A.push(p);for(A.sort(),n=0;n<A.length;n+=1)p=A[n],u[p]=A_(t[p],e,r,o,p);e.pop(),r.pop()}else u=t;return u}function vpe(t,e,r,o,a,n,u){u||(u={}),typeof u.context>"u"&&(u.context=4);var A=Ect(r,o,u);if(!A)return;A.push({value:"",lines:[]});function p(_){return _.map(function(J){return" "+J})}for(var h=[],C=0,w=0,v=[],b=1,E=1,R=function(J){var re=A[J],oe=re.lines||re.value.replace(/\n$/,"").split(` | 198 | In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function h_(t,e,r,o,a){e=e||[],r=r||[],o&&(t=o(a,t));var n;for(n=0;n<e.length;n+=1)if(e[n]===t)return r[n];var u;if(Hct.call(t)==="[object Array]"){for(e.push(t),u=new Array(t.length),r.push(u),n=0;n<t.length;n+=1)u[n]=h_(t[n],e,r,o,a);return e.pop(),r.pop(),u}if(t&&t.toJSON&&(t=t.toJSON()),Wb(t)==="object"&&t!==null){e.push(t),u={},r.push(u);var A=[],p;for(p in t)t.hasOwnProperty(p)&&A.push(p);for(A.sort(),n=0;n<A.length;n+=1)p=A[n],u[p]=h_(t[p],e,r,o,p);e.pop(),r.pop()}else u=t;return u}function Fpe(t,e,r,o,a,n,u){u||(u={}),typeof u.context>"u"&&(u.context=4);var A=Tct(r,o,u);if(!A)return;A.push({value:"",lines:[]});function p(_){return _.map(function(V){return" "+V})}for(var h=[],C=0,w=0,v=[],b=1,E=1,R=function(V){var re=A[V],ae=re.lines||re.value.replace(/\n$/,"").split(` |
199 | `);if(re.lines=oe,re.added||re.removed){var pe;if(!C){var he=A[J-1];C=b,w=E,he&&(v=u.context>0?p(he.lines.slice(-u.context)):[],C-=v.length,w-=v.length)}(pe=v).push.apply(pe,c_(oe.map(function(de){return(re.added?"+":"-")+de}))),re.added?E+=oe.length:b+=oe.length}else{if(C)if(oe.length<=u.context*2&&J<A.length-2){var ve;(ve=v).push.apply(ve,c_(p(oe)))}else{var ge,le=Math.min(oe.length,u.context);(ge=v).push.apply(ge,c_(p(oe.slice(0,le))));var Pe={oldStart:C,oldLines:b-C+le,newStart:w,newLines:E-w+le,lines:v};if(J>=A.length-2&&oe.length<=u.context){var g=/\n$/.test(r),De=/\n$/.test(o),Ee=oe.length==0&&v.length>Pe.oldLines;!g&&Ee&&r.length>0&&v.splice(Pe.oldLines,0,"\\ No newline at end of file"),(!g&&!Ee||!De)&&v.push("\\ No newline at end of file")}h.push(Pe),C=0,w=0,v=[]}b+=oe.length,E+=oe.length}},L=0;L<A.length;L++)R(L);return{oldFileName:t,newFileName:e,oldHeader:a,newHeader:n,hunks:h}}var Y4t,Ipe,wpe,p_,h_,Cct,Ict,Sct,U1,f_,g_=dt(()=>{Gf.prototype={diff:function(e,r){var o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=o.callback;typeof o=="function"&&(a=o,o={}),this.options=o;var n=this;function u(R){return a?(setTimeout(function(){a(void 0,R)},0),!0):R}e=this.castInput(e),r=this.castInput(r),e=this.removeEmpty(this.tokenize(e)),r=this.removeEmpty(this.tokenize(r));var A=r.length,p=e.length,h=1,C=A+p;o.maxEditLength&&(C=Math.min(C,o.maxEditLength));var w=[{newPos:-1,components:[]}],v=this.extractCommon(w[0],r,e,0);if(w[0].newPos+1>=A&&v+1>=p)return u([{value:this.join(r),count:r.length}]);function b(){for(var R=-1*h;R<=h;R+=2){var L=void 0,_=w[R-1],J=w[R+1],re=(J?J.newPos:0)-R;_&&(w[R-1]=void 0);var oe=_&&_.newPos+1<A,pe=J&&0<=re&&re<p;if(!oe&&!pe){w[R]=void 0;continue}if(!oe||pe&&_.newPos<J.newPos?(L=mct(J),n.pushComponent(L.components,void 0,!0)):(L=_,L.newPos++,n.pushComponent(L.components,!0,void 0)),re=n.extractCommon(L,r,e,R),L.newPos+1>=A&&re+1>=p)return u(dct(n,L.components,r,e,n.useLongestToken));w[R]=L}h++}if(a)(function R(){setTimeout(function(){if(h>C)return a();b()||R()},0)})();else for(;h<=C;){var E=b();if(E)return E}},pushComponent:function(e,r,o){var a=e[e.length-1];a&&a.added===r&&a.removed===o?e[e.length-1]={count:a.count+1,added:r,removed:o}:e.push({count:1,added:r,removed:o})},extractCommon:function(e,r,o,a){for(var n=r.length,u=o.length,A=e.newPos,p=A-a,h=0;A+1<n&&p+1<u&&this.equals(r[A+1],o[p+1]);)A++,p++,h++;return h&&e.components.push({count:h}),e.newPos=A,p},equals:function(e,r){return this.options.comparator?this.options.comparator(e,r):e===r||this.options.ignoreCase&&e.toLowerCase()===r.toLowerCase()},removeEmpty:function(e){for(var r=[],o=0;o<e.length;o++)e[o]&&r.push(e[o]);return r},castInput:function(e){return e},tokenize:function(e){return e.split("")},join:function(e){return e.join("")}};Y4t=new Gf;Ipe=/^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/,wpe=/\S/,p_=new Gf;p_.equals=function(t,e){return this.options.ignoreCase&&(t=t.toLowerCase(),e=e.toLowerCase()),t===e||this.options.ignoreWhitespace&&!wpe.test(t)&&!wpe.test(e)};p_.tokenize=function(t){for(var e=t.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/),r=0;r<e.length-1;r++)!e[r+1]&&e[r+2]&&Ipe.test(e[r])&&Ipe.test(e[r+2])&&(e[r]+=e[r+2],e.splice(r+1,2),r--);return e};h_=new Gf;h_.tokenize=function(t){var e=[],r=t.split(/(\n|\r\n)/);r[r.length-1]||r.pop();for(var o=0;o<r.length;o++){var a=r[o];o%2&&!this.options.newlineIsToken?e[e.length-1]+=a:(this.options.ignoreWhitespace&&(a=a.trim()),e.push(a))}return e};Cct=new Gf;Cct.tokenize=function(t){return t.split(/(\S.+?[.!?])(?=\s+|$)/)};Ict=new Gf;Ict.tokenize=function(t){return t.split(/([{}:;,]|\s+)/)};Sct=Object.prototype.toString,U1=new Gf;U1.useLongestToken=!0;U1.tokenize=h_.tokenize;U1.castInput=function(t){var e=this.options,r=e.undefinedReplacement,o=e.stringifyReplacer,a=o===void 0?function(n,u){return typeof u>"u"?r:u}:o;return typeof t=="string"?t:JSON.stringify(A_(t,null,null,a),a," ")};U1.equals=function(t,e){return Gf.prototype.equals.call(U1,t.replace(/,([\r\n])/g,"$1"),e.replace(/,([\r\n])/g,"$1"))};f_=new Gf;f_.tokenize=function(t){return t.slice()};f_.join=f_.removeEmpty=function(t){return t}});var Spe=U((J4t,Dpe)=>{var Pct=jl(),xct=oE(),bct=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Qct=/^\w*$/;function kct(t,e){if(Pct(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||xct(t)?!0:Qct.test(t)||!bct.test(t)||e!=null&&t in Object(e)}Dpe.exports=kct});var bpe=U((V4t,xpe)=>{var Ppe=wS(),Fct="Expected a function";function d_(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(Fct);var r=function(){var o=arguments,a=e?e.apply(this,o):o[0],n=r.cache;if(n.has(a))return n.get(a);var u=t.apply(this,o);return r.cache=n.set(a,u)||n,u};return r.cache=new(d_.Cache||Ppe),r}d_.Cache=Ppe;xpe.exports=d_});var kpe=U((z4t,Qpe)=>{var Rct=bpe(),Tct=500;function Nct(t){var e=Rct(t,function(o){return r.size===Tct&&r.clear(),o}),r=e.cache;return e}Qpe.exports=Nct});var m_=U((X4t,Fpe)=>{var Lct=kpe(),Oct=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Mct=/\\(\\)?/g,Uct=Lct(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(Oct,function(r,o,a,n){e.push(a?n.replace(Mct,"$1"):o||r)}),e});Fpe.exports=Uct});var qd=U((Z4t,Rpe)=>{var _ct=jl(),Hct=Spe(),qct=m_(),jct=C1();function Gct(t,e){return _ct(t)?t:Hct(t,e)?[t]:qct(jct(t))}Rpe.exports=Gct});var eC=U(($4t,Tpe)=>{var Wct=oE(),Yct=1/0;function Kct(t){if(typeof t=="string"||Wct(t))return t;var e=t+"";return e=="0"&&1/t==-Yct?"-0":e}Tpe.exports=Kct});var Ob=U((eUt,Npe)=>{var Jct=qd(),Vct=eC();function zct(t,e){e=Jct(e,t);for(var r=0,o=e.length;t!=null&&r<o;)t=t[Vct(e[r++])];return r&&r==o?t:void 0}Npe.exports=zct});var y_=U((tUt,Ope)=>{var Xct=US(),Zct=qd(),$ct=Sw(),Lpe=il(),eut=eC();function tut(t,e,r,o){if(!Lpe(t))return t;e=Zct(e,t);for(var a=-1,n=e.length,u=n-1,A=t;A!=null&&++a<n;){var p=eut(e[a]),h=r;if(p==="__proto__"||p==="constructor"||p==="prototype")return t;if(a!=u){var C=A[p];h=o?o(C,p,A):void 0,h===void 0&&(h=Lpe(C)?C:$ct(e[a+1])?[]:{})}Xct(A,p,h),A=A[p]}return t}Ope.exports=tut});var Upe=U((rUt,Mpe)=>{var rut=Ob(),nut=y_(),iut=qd();function sut(t,e,r){for(var o=-1,a=e.length,n={};++o<a;){var u=e[o],A=rut(t,u);r(A,u)&&nut(n,iut(u,t),A)}return n}Mpe.exports=sut});var Hpe=U((nUt,_pe)=>{function out(t,e){return t!=null&&e in Object(t)}_pe.exports=out});var E_=U((iUt,qpe)=>{var aut=qd(),lut=Bw(),cut=jl(),uut=Sw(),Aut=PS(),fut=eC();function put(t,e,r){e=aut(e,t);for(var o=-1,a=e.length,n=!1;++o<a;){var u=fut(e[o]);if(!(n=t!=null&&r(t,u)))break;t=t[u]}return n||++o!=a?n:(a=t==null?0:t.length,!!a&&Aut(a)&&uut(u,a)&&(cut(t)||lut(t)))}qpe.exports=put});var Gpe=U((sUt,jpe)=>{var hut=Hpe(),gut=E_();function dut(t,e){return t!=null&&gut(t,e,hut)}jpe.exports=dut});var Ype=U((oUt,Wpe)=>{var mut=Upe(),yut=Gpe();function Eut(t,e){return mut(t,e,function(r,o){return yut(t,o)})}Wpe.exports=Eut});var zpe=U((aUt,Vpe)=>{var Kpe=cd(),Cut=Bw(),Iut=jl(),Jpe=Kpe?Kpe.isConcatSpreadable:void 0;function wut(t){return Iut(t)||Cut(t)||!!(Jpe&&t&&t[Jpe])}Vpe.exports=wut});var $pe=U((lUt,Zpe)=>{var But=DS(),vut=zpe();function Xpe(t,e,r,o,a){var n=-1,u=t.length;for(r||(r=vut),a||(a=[]);++n<u;){var A=t[n];e>0&&r(A)?e>1?Xpe(A,e-1,r,o,a):But(a,A):o||(a[a.length]=A)}return a}Zpe.exports=Xpe});var t0e=U((cUt,e0e)=>{var Dut=$pe();function Sut(t){var e=t==null?0:t.length;return e?Dut(t,1):[]}e0e.exports=Sut});var C_=U((uUt,r0e)=>{var Put=t0e(),xut=iL(),but=sL();function Qut(t){return but(xut(t,void 0,Put),t+"")}r0e.exports=Qut});var i0e=U((AUt,n0e)=>{var kut=Ype(),Fut=C_(),Rut=Fut(function(t,e){return t==null?{}:kut(t,e)});n0e.exports=Rut});var Mb,s0e=dt(()=>{Jl();Mb=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return this.resolver.supportsDescriptor(e,r)}supportsLocator(e,r){return this.resolver.supportsLocator(e,r)}shouldPersistResolution(e,r){return this.resolver.shouldPersistResolution(e,r)}bindDescriptor(e,r,o){return this.resolver.bindDescriptor(e,r,o)}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,o){throw new Jt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async getSatisfying(e,r,o,a){throw new Jt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async resolve(e,r){throw new Jt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}}});var xi,I_=dt(()=>{Jl();xi=class extends Vs{reportCacheHit(e){}reportCacheMiss(e){}startSectionSync(e,r){return r()}async startSectionPromise(e,r){return await r()}startTimerSync(e,r,o){return(typeof r=="function"?r:o)()}async startTimerPromise(e,r,o){return await(typeof r=="function"?r:o)()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){}reportProgress(e){return{...Promise.resolve().then(async()=>{for await(let{}of e);}),stop:()=>{}}}reportJson(e){}async finalize(){}}});var o0e,tC,w_=dt(()=>{bt();o0e=tt(sM());sE();wd();Yl();e0();r0();Ks();tC=class{constructor(e,{project:r}){this.workspacesCwds=new Set;this.project=r,this.cwd=e}async setup(){this.manifest=await Nt.tryFind(this.cwd)??new Nt,this.relativeCwd=V.relative(this.project.cwd,this.cwd)||wt.dot;let e=this.manifest.name?this.manifest.name:rA(null,`${this.computeCandidateName()}-${Js(this.relativeCwd).substring(0,6)}`),r=this.manifest.version?this.manifest.version:"0.0.0";this.locator=us(e,r),this.anchoredDescriptor=mn(this.locator,`${oi.protocol}${this.relativeCwd}`),this.anchoredLocator=us(this.locator,`${oi.protocol}${this.relativeCwd}`);let o=this.manifest.workspaceDefinitions.map(({pattern:n})=>n),a=await(0,o0e.default)(o,{cwd:Ae.fromPortablePath(this.cwd),expandDirectories:!1,onlyDirectories:!0,onlyFiles:!1,ignore:["**/node_modules","**/.git","**/.yarn"]});a.sort();for(let n of a){let u=V.resolve(this.cwd,Ae.toPortablePath(n));ae.existsSync(V.join(u,"package.json"))&&this.workspacesCwds.add(u)}}get anchoredPackage(){let e=this.project.storedPackages.get(this.anchoredLocator.locatorHash);if(!e)throw new Error(`Assertion failed: Expected workspace ${Jw(this.project.configuration,this)} (${Kt(this.project.configuration,V.join(this.cwd,Lr.manifest),Bt.PATH)}) to have been resolved. Run "yarn install" to update the lockfile`);return e}accepts(e){let r=e.indexOf(":"),o=r!==-1?e.slice(0,r+1):null,a=r!==-1?e.slice(r+1):e;if(o===oi.protocol&&V.normalize(a)===this.relativeCwd||o===oi.protocol&&(a==="*"||a==="^"||a==="~"))return!0;let n=jc(a);return n?o===oi.protocol?n.test(this.manifest.version??"0.0.0"):this.project.configuration.get("enableTransparentWorkspaces")&&this.manifest.version!==null?n.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?"root-workspace":`${V.basename(this.cwd)}`||"unnamed-workspace"}getRecursiveWorkspaceDependencies({dependencies:e=Nt.hardDependencies}={}){let r=new Set,o=a=>{for(let n of e)for(let u of a.manifest[n].values()){let A=this.project.tryWorkspaceByDescriptor(u);A===null||r.has(A)||(r.add(A),o(A))}};return o(this),r}getRecursiveWorkspaceDependents({dependencies:e=Nt.hardDependencies}={}){let r=new Set,o=a=>{for(let n of this.project.workspaces)e.some(A=>[...n.manifest[A].values()].some(p=>{let h=this.project.tryWorkspaceByDescriptor(p);return h!==null&&Ww(h.anchoredLocator,a.anchoredLocator)}))&&!r.has(n)&&(r.add(n),o(n))};return o(this),r}getRecursiveWorkspaceChildren(){let e=[];for(let r of this.workspacesCwds){let o=this.project.workspacesByCwd.get(r);o&&e.push(o,...o.getRecursiveWorkspaceChildren())}return e}async persistManifest(){let e={};this.manifest.exportTo(e);let r=V.join(this.cwd,Nt.fileName),o=`${JSON.stringify(e,null,this.manifest.indent)} | 199 | `);if(re.lines=ae,re.added||re.removed){var he;if(!C){var pe=A[V-1];C=b,w=E,pe&&(v=u.context>0?p(pe.lines.slice(-u.context)):[],C-=v.length,w-=v.length)}(he=v).push.apply(he,f_(ae.map(function(de){return(re.added?"+":"-")+de}))),re.added?E+=ae.length:b+=ae.length}else{if(C)if(ae.length<=u.context*2&&V<A.length-2){var De;(De=v).push.apply(De,f_(p(ae)))}else{var ge,le=Math.min(ae.length,u.context);(ge=v).push.apply(ge,f_(p(ae.slice(0,le))));var Pe={oldStart:C,oldLines:b-C+le,newStart:w,newLines:E-w+le,lines:v};if(V>=A.length-2&&ae.length<=u.context){var g=/\n$/.test(r),ve=/\n$/.test(o),Ee=ae.length==0&&v.length>Pe.oldLines;!g&&Ee&&r.length>0&&v.splice(Pe.oldLines,0,"\\ No newline at end of file"),(!g&&!Ee||!ve)&&v.push("\\ No newline at end of file")}h.push(Pe),C=0,w=0,v=[]}b+=ae.length,E+=ae.length}},L=0;L<A.length;L++)R(L);return{oldFileName:t,newFileName:e,oldHeader:a,newHeader:n,hunks:h}}var uUt,bpe,Qpe,d_,m_,Nct,Lct,Hct,W1,g_,y_=dt(()=>{Vf.prototype={diff:function(e,r){var o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=o.callback;typeof o=="function"&&(a=o,o={}),this.options=o;var n=this;function u(R){return a?(setTimeout(function(){a(void 0,R)},0),!0):R}e=this.castInput(e),r=this.castInput(r),e=this.removeEmpty(this.tokenize(e)),r=this.removeEmpty(this.tokenize(r));var A=r.length,p=e.length,h=1,C=A+p;o.maxEditLength&&(C=Math.min(C,o.maxEditLength));var w=[{newPos:-1,components:[]}],v=this.extractCommon(w[0],r,e,0);if(w[0].newPos+1>=A&&v+1>=p)return u([{value:this.join(r),count:r.length}]);function b(){for(var R=-1*h;R<=h;R+=2){var L=void 0,_=w[R-1],V=w[R+1],re=(V?V.newPos:0)-R;_&&(w[R-1]=void 0);var ae=_&&_.newPos+1<A,he=V&&0<=re&&re<p;if(!ae&&!he){w[R]=void 0;continue}if(!ae||he&&_.newPos<V.newPos?(L=Fct(V),n.pushComponent(L.components,void 0,!0)):(L=_,L.newPos++,n.pushComponent(L.components,!0,void 0)),re=n.extractCommon(L,r,e,R),L.newPos+1>=A&&re+1>=p)return u(kct(n,L.components,r,e,n.useLongestToken));w[R]=L}h++}if(a)(function R(){setTimeout(function(){if(h>C)return a();b()||R()},0)})();else for(;h<=C;){var E=b();if(E)return E}},pushComponent:function(e,r,o){var a=e[e.length-1];a&&a.added===r&&a.removed===o?e[e.length-1]={count:a.count+1,added:r,removed:o}:e.push({count:1,added:r,removed:o})},extractCommon:function(e,r,o,a){for(var n=r.length,u=o.length,A=e.newPos,p=A-a,h=0;A+1<n&&p+1<u&&this.equals(r[A+1],o[p+1]);)A++,p++,h++;return h&&e.components.push({count:h}),e.newPos=A,p},equals:function(e,r){return this.options.comparator?this.options.comparator(e,r):e===r||this.options.ignoreCase&&e.toLowerCase()===r.toLowerCase()},removeEmpty:function(e){for(var r=[],o=0;o<e.length;o++)e[o]&&r.push(e[o]);return r},castInput:function(e){return e},tokenize:function(e){return e.split("")},join:function(e){return e.join("")}};uUt=new Vf;bpe=/^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/,Qpe=/\S/,d_=new Vf;d_.equals=function(t,e){return this.options.ignoreCase&&(t=t.toLowerCase(),e=e.toLowerCase()),t===e||this.options.ignoreWhitespace&&!Qpe.test(t)&&!Qpe.test(e)};d_.tokenize=function(t){for(var e=t.split(/([^\S\r\n]+|[()[\]{}'"\r\n]|\b)/),r=0;r<e.length-1;r++)!e[r+1]&&e[r+2]&&bpe.test(e[r])&&bpe.test(e[r+2])&&(e[r]+=e[r+2],e.splice(r+1,2),r--);return e};m_=new Vf;m_.tokenize=function(t){var e=[],r=t.split(/(\n|\r\n)/);r[r.length-1]||r.pop();for(var o=0;o<r.length;o++){var a=r[o];o%2&&!this.options.newlineIsToken?e[e.length-1]+=a:(this.options.ignoreWhitespace&&(a=a.trim()),e.push(a))}return e};Nct=new Vf;Nct.tokenize=function(t){return t.split(/(\S.+?[.!?])(?=\s+|$)/)};Lct=new Vf;Lct.tokenize=function(t){return t.split(/([{}:;,]|\s+)/)};Hct=Object.prototype.toString,W1=new Vf;W1.useLongestToken=!0;W1.tokenize=m_.tokenize;W1.castInput=function(t){var e=this.options,r=e.undefinedReplacement,o=e.stringifyReplacer,a=o===void 0?function(n,u){return typeof u>"u"?r:u}:o;return typeof t=="string"?t:JSON.stringify(h_(t,null,null,a),a," ")};W1.equals=function(t,e){return Vf.prototype.equals.call(W1,t.replace(/,([\r\n])/g,"$1"),e.replace(/,([\r\n])/g,"$1"))};g_=new Vf;g_.tokenize=function(t){return t.slice()};g_.join=g_.removeEmpty=function(t){return t}});var Tpe=U((fUt,Rpe)=>{var qct=Kl(),jct=AE(),Gct=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Wct=/^\w*$/;function Yct(t,e){if(qct(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||jct(t)?!0:Wct.test(t)||!Gct.test(t)||e!=null&&t in Object(e)}Rpe.exports=Yct});var Ope=U((pUt,Lpe)=>{var Npe=kS(),Kct="Expected a function";function E_(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(Kct);var r=function(){var o=arguments,a=e?e.apply(this,o):o[0],n=r.cache;if(n.has(a))return n.get(a);var u=t.apply(this,o);return r.cache=n.set(a,u)||n,u};return r.cache=new(E_.Cache||Npe),r}E_.Cache=Npe;Lpe.exports=E_});var Upe=U((hUt,Mpe)=>{var Vct=Ope(),Jct=500;function zct(t){var e=Vct(t,function(o){return r.size===Jct&&r.clear(),o}),r=e.cache;return e}Mpe.exports=zct});var C_=U((gUt,_pe)=>{var Xct=Upe(),Zct=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,$ct=/\\(\\)?/g,eut=Xct(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(Zct,function(r,o,a,n){e.push(a?n.replace($ct,"$1"):o||r)}),e});_pe.exports=eut});var Yd=U((dUt,Hpe)=>{var tut=Kl(),rut=Tpe(),nut=C_(),iut=S1();function sut(t,e){return tut(t)?t:rut(t,e)?[t]:nut(iut(t))}Hpe.exports=sut});var sC=U((mUt,qpe)=>{var out=AE(),aut=1/0;function lut(t){if(typeof t=="string"||out(t))return t;var e=t+"";return e=="0"&&1/t==-aut?"-0":e}qpe.exports=lut});var Yb=U((yUt,jpe)=>{var cut=Yd(),uut=sC();function Aut(t,e){e=cut(e,t);for(var r=0,o=e.length;t!=null&&r<o;)t=t[uut(e[r++])];return r&&r==o?t:void 0}jpe.exports=Aut});var I_=U((EUt,Wpe)=>{var fut=VS(),put=Yd(),hut=kw(),Gpe=al(),gut=sC();function dut(t,e,r,o){if(!Gpe(t))return t;e=put(e,t);for(var a=-1,n=e.length,u=n-1,A=t;A!=null&&++a<n;){var p=gut(e[a]),h=r;if(p==="__proto__"||p==="constructor"||p==="prototype")return t;if(a!=u){var C=A[p];h=o?o(C,p,A):void 0,h===void 0&&(h=Gpe(C)?C:hut(e[a+1])?[]:{})}fut(A,p,h),A=A[p]}return t}Wpe.exports=dut});var Kpe=U((CUt,Ype)=>{var mut=Yb(),yut=I_(),Eut=Yd();function Cut(t,e,r){for(var o=-1,a=e.length,n={};++o<a;){var u=e[o],A=mut(t,u);r(A,u)&&yut(n,Eut(u,t),A)}return n}Ype.exports=Cut});var Jpe=U((IUt,Vpe)=>{function Iut(t,e){return t!=null&&e in Object(t)}Vpe.exports=Iut});var w_=U((wUt,zpe)=>{var wut=Yd(),But=xw(),vut=Kl(),Dut=kw(),Sut=OS(),Put=sC();function xut(t,e,r){e=wut(e,t);for(var o=-1,a=e.length,n=!1;++o<a;){var u=Put(e[o]);if(!(n=t!=null&&r(t,u)))break;t=t[u]}return n||++o!=a?n:(a=t==null?0:t.length,!!a&&Sut(a)&&Dut(u,a)&&(vut(t)||But(t)))}zpe.exports=xut});var Zpe=U((BUt,Xpe)=>{var but=Jpe(),Qut=w_();function kut(t,e){return t!=null&&Qut(t,e,but)}Xpe.exports=kut});var e0e=U((vUt,$pe)=>{var Fut=Kpe(),Rut=Zpe();function Tut(t,e){return Fut(t,e,function(r,o){return Rut(t,o)})}$pe.exports=Tut});var i0e=U((DUt,n0e)=>{var t0e=pd(),Nut=xw(),Lut=Kl(),r0e=t0e?t0e.isConcatSpreadable:void 0;function Out(t){return Lut(t)||Nut(t)||!!(r0e&&t&&t[r0e])}n0e.exports=Out});var a0e=U((SUt,o0e)=>{var Mut=NS(),Uut=i0e();function s0e(t,e,r,o,a){var n=-1,u=t.length;for(r||(r=Uut),a||(a=[]);++n<u;){var A=t[n];e>0&&r(A)?e>1?s0e(A,e-1,r,o,a):Mut(a,A):o||(a[a.length]=A)}return a}o0e.exports=s0e});var c0e=U((PUt,l0e)=>{var _ut=a0e();function Hut(t){var e=t==null?0:t.length;return e?_ut(t,1):[]}l0e.exports=Hut});var B_=U((xUt,u0e)=>{var qut=c0e(),jut=aL(),Gut=lL();function Wut(t){return Gut(jut(t,void 0,qut),t+"")}u0e.exports=Wut});var f0e=U((bUt,A0e)=>{var Yut=e0e(),Kut=B_(),Vut=Kut(function(t,e){return t==null?{}:Yut(t,e)});A0e.exports=Vut});var Kb,p0e=dt(()=>{Zl();Kb=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return this.resolver.supportsDescriptor(e,r)}supportsLocator(e,r){return this.resolver.supportsLocator(e,r)}shouldPersistResolution(e,r){return this.resolver.shouldPersistResolution(e,r)}bindDescriptor(e,r,o){return this.resolver.bindDescriptor(e,r,o)}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,o){throw new Vt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async getSatisfying(e,r,o,a){throw new Vt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}async resolve(e,r){throw new Vt(20,`This package doesn't seem to be present in your lockfile; run "yarn install" to update the lockfile`)}}});var xi,v_=dt(()=>{Zl();xi=class extends Js{reportCacheHit(e){}reportCacheMiss(e){}startSectionSync(e,r){return r()}async startSectionPromise(e,r){return await r()}startTimerSync(e,r,o){return(typeof r=="function"?r:o)()}async startTimerPromise(e,r,o){return await(typeof r=="function"?r:o)()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){}reportProgress(e){return{...Promise.resolve().then(async()=>{for await(let{}of e);}),stop:()=>{}}}reportJson(e){}async finalize(){}}});var h0e,oC,D_=dt(()=>{St();h0e=tt(lM());uE();Sd();zl();n0();s0();Ks();oC=class{constructor(e,{project:r}){this.workspacesCwds=new Set;this.project=r,this.cwd=e}async setup(){this.manifest=await Nt.tryFind(this.cwd)??new Nt,this.relativeCwd=J.relative(this.project.cwd,this.cwd)||wt.dot;let e=this.manifest.name?this.manifest.name:nA(null,`${this.computeCandidateName()}-${Vs(this.relativeCwd).substring(0,6)}`),r=this.manifest.version?this.manifest.version:"0.0.0";this.locator=us(e,r),this.anchoredDescriptor=mn(this.locator,`${Gn.protocol}${this.relativeCwd}`),this.anchoredLocator=us(this.locator,`${Gn.protocol}${this.relativeCwd}`);let o=this.manifest.workspaceDefinitions.map(({pattern:n})=>n);if(o.length===0)return;let a=await(0,h0e.default)(o,{cwd:ue.fromPortablePath(this.cwd),expandDirectories:!1,onlyDirectories:!0,onlyFiles:!1,ignore:["**/node_modules","**/.git","**/.yarn"]});a.sort(),await a.reduce(async(n,u)=>{let A=J.resolve(this.cwd,ue.toPortablePath(u)),p=await oe.existsPromise(J.join(A,"package.json"));await n,p&&this.workspacesCwds.add(A)},Promise.resolve())}get anchoredPackage(){let e=this.project.storedPackages.get(this.anchoredLocator.locatorHash);if(!e)throw new Error(`Assertion failed: Expected workspace ${$w(this.project.configuration,this)} (${Kt(this.project.configuration,J.join(this.cwd,Lr.manifest),Bt.PATH)}) to have been resolved. Run "yarn install" to update the lockfile`);return e}accepts(e){let r=e.indexOf(":"),o=r!==-1?e.slice(0,r+1):null,a=r!==-1?e.slice(r+1):e;if(o===Gn.protocol&&J.normalize(a)===this.relativeCwd||o===Gn.protocol&&(a==="*"||a==="^"||a==="~"))return!0;let n=cl(a);return n?o===Gn.protocol?n.test(this.manifest.version??"0.0.0"):this.project.configuration.get("enableTransparentWorkspaces")&&this.manifest.version!==null?n.test(this.manifest.version):!1:!1}computeCandidateName(){return this.cwd===this.project.cwd?"root-workspace":`${J.basename(this.cwd)}`||"unnamed-workspace"}getRecursiveWorkspaceDependencies({dependencies:e=Nt.hardDependencies}={}){let r=new Set,o=a=>{for(let n of e)for(let u of a.manifest[n].values()){let A=this.project.tryWorkspaceByDescriptor(u);A===null||r.has(A)||(r.add(A),o(A))}};return o(this),r}getRecursiveWorkspaceDependents({dependencies:e=Nt.hardDependencies}={}){let r=new Set,o=a=>{for(let n of this.project.workspaces)e.some(A=>[...n.manifest[A].values()].some(p=>{let h=this.project.tryWorkspaceByDescriptor(p);return h!==null&&zw(h.anchoredLocator,a.anchoredLocator)}))&&!r.has(n)&&(r.add(n),o(n))};return o(this),r}getRecursiveWorkspaceChildren(){let e=[];for(let r of this.workspacesCwds){let o=this.project.workspacesByCwd.get(r);o&&e.push(o,...o.getRecursiveWorkspaceChildren())}return e}async persistManifest(){let e={};this.manifest.exportTo(e);let r=J.join(this.cwd,Nt.fileName),o=`${JSON.stringify(e,null,this.manifest.indent)} |
200 | `;await ae.changeFilePromise(r,o,{automaticNewlines:!0}),this.manifest.raw=e}}});function Uut({project:t,allDescriptors:e,allResolutions:r,allPackages:o,accessibleLocators:a=new Set,optionalBuilds:n=new Set,peerRequirements:u=new Map,volatileDescriptors:A=new Set,report:p}){let h=new Map,C=[],w=new Map,v=new Map,b=new Map,E=new Map,R=new Map,L=new Map(t.workspaces.map(ge=>{let le=ge.anchoredLocator.locatorHash,Pe=o.get(le);if(typeof Pe>"u")throw new Error("Assertion failed: The workspace should have an associated package");return[le,Hw(Pe)]})),_=()=>{let ge=ae.mktempSync(),le=V.join(ge,"stacktrace.log"),Pe=String(C.length+1).length,g=C.map((De,Ee)=>`${`${Ee+1}.`.padStart(Pe," ")} ${Wl(De)} | 200 | `;await oe.changeFilePromise(r,o,{automaticNewlines:!0}),this.manifest.raw=e}}});function eAt({project:t,allDescriptors:e,allResolutions:r,allPackages:o,accessibleLocators:a=new Set,optionalBuilds:n=new Set,peerRequirements:u=new Map,volatileDescriptors:A=new Set,report:p}){let h=new Map,C=[],w=new Map,v=new Map,b=new Map,E=new Map,R=new Map,L=new Map(t.workspaces.map(ge=>{let le=ge.anchoredLocator.locatorHash,Pe=o.get(le);if(typeof Pe>"u")throw new Error("Assertion failed: The workspace should have an associated package");return[le,Yw(Pe)]})),_=()=>{let ge=oe.mktempSync(),le=J.join(ge,"stacktrace.log"),Pe=String(C.length+1).length,g=C.map((ve,Ee)=>`${`${Ee+1}.`.padStart(Pe," ")} ${Jl(ve)} |
201 | `).join("");throw ae.writeFileSync(le,g),ae.detachTemp(ge),new Jt(45,`Encountered a stack overflow when resolving peer dependencies; cf ${Ae.fromPortablePath(le)}`)},J=ge=>{let le=r.get(ge.descriptorHash);if(typeof le>"u")throw new Error("Assertion failed: The resolution should have been registered");let Pe=o.get(le);if(!Pe)throw new Error("Assertion failed: The package could not be found");return Pe},re=(ge,le,Pe,{top:g,optional:De})=>{C.length>1e3&&_(),C.push(le);let Ee=oe(ge,le,Pe,{top:g,optional:De});return C.pop(),Ee},oe=(ge,le,Pe,{top:g,optional:De})=>{if(a.has(le.locatorHash))return;a.add(le.locatorHash),De||n.delete(le.locatorHash);let Ee=o.get(le.locatorHash);if(!Ee)throw new Error(`Assertion failed: The package (${kr(t.configuration,le)}) should have been registered`);let de=[],ne=[],Z=[],me=[],be=[];for(let H of Array.from(Ee.dependencies.values())){if(Ee.peerDependencies.has(H.identHash)&&Ee.locatorHash!==g)continue;if(xf(H))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");A.delete(H.descriptorHash);let yt=De;if(!yt){let Le=Ee.dependenciesMeta.get(nn(H));if(typeof Le<"u"){let x=Le.get(null);typeof x<"u"&&x.optional&&(yt=!0)}}let Me=r.get(H.descriptorHash);if(!Me)throw new Error(`Assertion failed: The resolution (${Ln(t.configuration,H)}) should have been registered`);let Te=L.get(Me)||o.get(Me);if(!Te)throw new Error(`Assertion failed: The package (${Me}, resolved from ${Ln(t.configuration,H)}) should have been registered`);if(Te.peerDependencies.size===0){re(H,Te,new Map,{top:g,optional:yt});continue}let Qe,Ue,je=new Set,At;ne.push(()=>{Qe=uM(H,le.locatorHash),Ue=AM(Te,le.locatorHash),Ee.dependencies.delete(H.identHash),Ee.dependencies.set(Qe.identHash,Qe),r.set(Qe.descriptorHash,Ue.locatorHash),e.set(Qe.descriptorHash,Qe),o.set(Ue.locatorHash,Ue),de.push([Te,Qe,Ue])}),Z.push(()=>{At=new Map;for(let Le of Ue.peerDependencies.values()){let x=Ee.dependencies.get(Le.identHash);if(!x&&Gw(le,Le)&&(ge.identHash===le.identHash?x=ge:(x=mn(le,ge.range),e.set(x.descriptorHash,x),r.set(x.descriptorHash,le.locatorHash),A.delete(x.descriptorHash))),(!x||x.range==="missing:")&&Ue.dependencies.has(Le.identHash)){Ue.peerDependencies.delete(Le.identHash);continue}x||(x=mn(Le,"missing:")),Ue.dependencies.set(x.identHash,x),xf(x)&&pd(b,x.descriptorHash).add(Ue.locatorHash),w.set(x.identHash,x),x.range==="missing:"&&je.add(x.identHash),At.set(Le.identHash,Pe.get(Le.identHash)??Ue.locatorHash)}Ue.dependencies=new Map(Sa(Ue.dependencies,([Le,x])=>nn(x)))}),me.push(()=>{if(!o.has(Ue.locatorHash))return;let Le=h.get(Te.locatorHash);typeof Le=="number"&&Le>=2&&_();let x=h.get(Te.locatorHash),I=typeof x<"u"?x+1:1;h.set(Te.locatorHash,I),re(Qe,Ue,At,{top:g,optional:yt}),h.set(Te.locatorHash,I-1)}),be.push(()=>{let Le=Ee.dependencies.get(H.identHash);if(typeof Le>"u")throw new Error("Assertion failed: Expected the peer dependency to have been turned into a dependency");let x=r.get(Le.descriptorHash);if(typeof x>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");if(pd(R,x).add(le.locatorHash),!!o.has(Ue.locatorHash)){for(let I of Ue.peerDependencies.values()){let P=At.get(I.identHash);if(typeof P>"u")throw new Error("Assertion failed: Expected the peer dependency ident to be registered");Hy(qy(E,P),nn(I)).push(Ue.locatorHash)}for(let I of je)Ue.dependencies.delete(I)}})}for(let H of[...ne,...Z])H();let ut;do{ut=!0;for(let[H,yt,Me]of de){let Te=qy(v,H.locatorHash),Qe=Js(...[...Me.dependencies.values()].map(Le=>{let x=Le.range!=="missing:"?r.get(Le.descriptorHash):"missing:";if(typeof x>"u")throw new Error(`Assertion failed: Expected the resolution for ${Ln(t.configuration,Le)} to have been registered`);return x===g?`${x} (top)`:x}),yt.identHash),Ue=Te.get(Qe);if(typeof Ue>"u"){Te.set(Qe,yt);continue}if(Ue===yt)continue;o.delete(Me.locatorHash),e.delete(yt.descriptorHash),r.delete(yt.descriptorHash),a.delete(Me.locatorHash);let je=b.get(yt.descriptorHash)||[],At=[Ee.locatorHash,...je];b.delete(yt.descriptorHash);for(let Le of At){let x=o.get(Le);typeof x>"u"||(x.dependencies.get(yt.identHash).descriptorHash!==Ue.descriptorHash&&(ut=!1),x.dependencies.set(yt.identHash,Ue))}}}while(!ut);for(let H of[...me,...be])H()};for(let ge of t.workspaces){let le=ge.anchoredLocator;A.delete(ge.anchoredDescriptor.descriptorHash),re(ge.anchoredDescriptor,le,new Map,{top:le.locatorHash,optional:!1})}let pe;(Pe=>(Pe[Pe.NotProvided=0]="NotProvided",Pe[Pe.NotCompatible=1]="NotCompatible"))(pe||(pe={}));let he=[];for(let[ge,le]of R){let Pe=o.get(ge);if(typeof Pe>"u")throw new Error("Assertion failed: Expected the root to be registered");let g=E.get(ge);if(!(typeof g>"u"))for(let De of le){let Ee=o.get(De);if(!(typeof Ee>"u"))for(let[de,ne]of g){let Z=Ys(de);if(Ee.peerDependencies.has(Z.identHash))continue;let me=`p${Js(De,de,ge).slice(0,5)}`;u.set(me,{subject:De,requested:Z,rootRequester:ge,allRequesters:ne});let be=Pe.dependencies.get(Z.identHash);if(typeof be<"u"){let ut=J(be),H=ut.version??"0.0.0",yt=new Set;for(let Te of ne){let Qe=o.get(Te);if(typeof Qe>"u")throw new Error("Assertion failed: Expected the link to be registered");let Ue=Qe.peerDependencies.get(Z.identHash);if(typeof Ue>"u")throw new Error("Assertion failed: Expected the ident to be registered");yt.add(Ue.range)}[...yt].every(Te=>{if(Te.startsWith(oi.protocol)){if(!t.tryWorkspaceByLocator(ut))return!1;Te=Te.slice(oi.protocol.length),(Te==="^"||Te==="~")&&(Te="*")}return Bd(H,Te)})||he.push({type:1,subject:Ee,requested:Z,requester:Pe,version:H,hash:me,requirementCount:ne.length})}else{let ut=Pe.peerDependenciesMeta.get(de);ut!=null&&ut.optional||he.push({type:0,subject:Ee,requested:Z,requester:Pe,hash:me})}}}}let ve=[ge=>fM(ge.subject),ge=>nn(ge.requested),ge=>`${ge.type}`];p==null||p.startSectionSync({reportFooter:()=>{p.reportWarning(0,`Some peer dependencies are incorrectly met; run ${Kt(t.configuration,"yarn explain peer-requirements <hash>",Bt.CODE)} for details, where ${Kt(t.configuration,"<hash>",Bt.CODE)} is the six-letter p-prefixed code`)},skipIfEmpty:!0},()=>{for(let ge of Sa(he,ve))switch(ge.type){case 0:p.reportWarning(2,`${kr(t.configuration,ge.subject)} doesn't provide ${cs(t.configuration,ge.requested)} (${Kt(t.configuration,ge.hash,Bt.CODE)}), requested by ${cs(t.configuration,ge.requester)}`);break;case 1:{let le=ge.requirementCount>1?"and some of its descendants request":"requests";p.reportWarning(60,`${kr(t.configuration,ge.subject)} provides ${cs(t.configuration,ge.requested)} (${Kt(t.configuration,ge.hash,Bt.CODE)}) with version ${Kw(t.configuration,ge.version)}, which doesn't satisfy what ${cs(t.configuration,ge.requester)} ${le}`)}break}})}var Ub,_b,u0e,A0e,D_,v_,S_,a0e,Tut,Nut,l0e,Lut,Out,Mut,fl,B_,c0e,St,f0e=dt(()=>{bt();bt();Ol();_t();Ub=Ie("crypto");g_();_b=tt(i0e()),u0e=tt($g()),A0e=tt(ii()),D_=Ie("util"),v_=tt(Ie("v8")),S_=tt(Ie("zlib"));p1();a_();l_();sE();yM();Jl();s0e();I_();wd();w_();RP();Yl();e0();Gl();A1();vU();r0();Ks();a0e=7,Tut=2,Nut=/ *, */g,l0e=/\/$/,Lut=32,Out=(0,D_.promisify)(S_.default.gzip),Mut=(0,D_.promisify)(S_.default.gunzip),fl=(r=>(r.UpdateLockfile="update-lockfile",r.SkipBuild="skip-build",r))(fl||{}),B_={restoreLinkersCustomData:["linkersCustomData"],restoreResolutions:["accessibleLocators","conditionalLocators","disabledLocators","optionalBuilds","storedDescriptors","storedResolutions","storedPackages","lockFileChecksum"],restoreBuildState:["storedBuildState"]},c0e=t=>Js(`${Tut}`,t),St=class{constructor(e,{configuration:r}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.linkersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=r,this.cwd=e}static async find(e,r){var E,R,L;if(!e.projectCwd)throw new ot(`No project found in ${r}`);let o=e.projectCwd,a=r,n=null;for(;n!==e.projectCwd;){if(n=a,ae.existsSync(V.join(n,Lr.manifest))){o=n;break}a=V.dirname(n)}let u=new St(e.projectCwd,{configuration:e});(E=Xe.telemetry)==null||E.reportProject(u.cwd),await u.setupResolutions(),await u.setupWorkspaces(),(R=Xe.telemetry)==null||R.reportWorkspaceCount(u.workspaces.length),(L=Xe.telemetry)==null||L.reportDependencyCount(u.workspaces.reduce((_,J)=>_+J.manifest.dependencies.size+J.manifest.devDependencies.size,0));let A=u.tryWorkspaceByCwd(o);if(A)return{project:u,workspace:A,locator:A.anchoredLocator};let p=await u.findLocatorForLocation(`${o}/`,{strict:!0});if(p)return{project:u,locator:p,workspace:null};let h=Kt(e,u.cwd,Bt.PATH),C=Kt(e,V.relative(u.cwd,o),Bt.PATH),w=`- If ${h} isn't intended to be a project, remove any yarn.lock and/or package.json file there.`,v=`- If ${h} is intended to be a project, it might be that you forgot to list ${C} in its workspace configuration.`,b=`- Finally, if ${h} is fine and you intend ${C} to be treated as a completely separate project (not even a workspace), create an empty yarn.lock file in it.`;throw new ot(`The nearest package directory (${Kt(e,o,Bt.PATH)}) doesn't seem to be part of the project declared in ${Kt(e,u.cwd,Bt.PATH)}. | 201 | `).join("");throw oe.writeFileSync(le,g),oe.detachTemp(ge),new Vt(45,`Encountered a stack overflow when resolving peer dependencies; cf ${ue.fromPortablePath(le)}`)},V=ge=>{let le=r.get(ge.descriptorHash);if(typeof le>"u")throw new Error("Assertion failed: The resolution should have been registered");let Pe=o.get(le);if(!Pe)throw new Error("Assertion failed: The package could not be found");return Pe},re=(ge,le,Pe,{top:g,optional:ve})=>{C.length>1e3&&_(),C.push(le);let Ee=ae(ge,le,Pe,{top:g,optional:ve});return C.pop(),Ee},ae=(ge,le,Pe,{top:g,optional:ve})=>{if(a.has(le.locatorHash))return;a.add(le.locatorHash),ve||n.delete(le.locatorHash);let Ee=o.get(le.locatorHash);if(!Ee)throw new Error(`Assertion failed: The package (${kr(t.configuration,le)}) should have been registered`);let de=[],ne=[],Z=[],me=[],be=[];for(let H of Array.from(Ee.dependencies.values())){if(Ee.peerDependencies.has(H.identHash)&&Ee.locatorHash!==g)continue;if(kf(H))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");A.delete(H.descriptorHash);let yt=ve;if(!yt){let Oe=Ee.dependenciesMeta.get(nn(H));if(typeof Oe<"u"){let x=Oe.get(null);typeof x<"u"&&x.optional&&(yt=!0)}}let Me=r.get(H.descriptorHash);if(!Me)throw new Error(`Assertion failed: The resolution (${Ln(t.configuration,H)}) should have been registered`);let Te=L.get(Me)||o.get(Me);if(!Te)throw new Error(`Assertion failed: The package (${Me}, resolved from ${Ln(t.configuration,H)}) should have been registered`);if(Te.peerDependencies.size===0){re(H,Te,new Map,{top:g,optional:yt});continue}let Qe,_e,qe=new Set,At;ne.push(()=>{Qe=pM(H,le.locatorHash),_e=hM(Te,le.locatorHash),Ee.dependencies.delete(H.identHash),Ee.dependencies.set(Qe.identHash,Qe),r.set(Qe.descriptorHash,_e.locatorHash),e.set(Qe.descriptorHash,Qe),o.set(_e.locatorHash,_e),de.push([Te,Qe,_e])}),Z.push(()=>{At=new Map;for(let Oe of _e.peerDependencies.values()){let x=Ee.dependencies.get(Oe.identHash);if(!x&&Jw(le,Oe)&&(ge.identHash===le.identHash?x=ge:(x=mn(le,ge.range),e.set(x.descriptorHash,x),r.set(x.descriptorHash,le.locatorHash),A.delete(x.descriptorHash))),(!x||x.range==="missing:")&&_e.dependencies.has(Oe.identHash)){_e.peerDependencies.delete(Oe.identHash);continue}x||(x=mn(Oe,"missing:")),_e.dependencies.set(x.identHash,x),kf(x)&&md(b,x.descriptorHash).add(_e.locatorHash),w.set(x.identHash,x),x.range==="missing:"&&qe.add(x.identHash),At.set(Oe.identHash,Pe.get(Oe.identHash)??_e.locatorHash)}_e.dependencies=new Map(xa(_e.dependencies,([Oe,x])=>nn(x)))}),me.push(()=>{if(!o.has(_e.locatorHash))return;let Oe=h.get(Te.locatorHash);typeof Oe=="number"&&Oe>=2&&_();let x=h.get(Te.locatorHash),I=typeof x<"u"?x+1:1;h.set(Te.locatorHash,I),re(Qe,_e,At,{top:g,optional:yt}),h.set(Te.locatorHash,I-1)}),be.push(()=>{let Oe=Ee.dependencies.get(H.identHash);if(typeof Oe>"u")throw new Error("Assertion failed: Expected the peer dependency to have been turned into a dependency");let x=r.get(Oe.descriptorHash);if(typeof x>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");if(md(R,x).add(le.locatorHash),!!o.has(_e.locatorHash)){for(let I of _e.peerDependencies.values()){let P=At.get(I.identHash);if(typeof P>"u")throw new Error("Assertion failed: Expected the peer dependency ident to be registered");Yy(Ky(E,P),nn(I)).push(_e.locatorHash)}for(let I of qe)_e.dependencies.delete(I)}})}for(let H of[...ne,...Z])H();let ut;do{ut=!0;for(let[H,yt,Me]of de){let Te=Ky(v,H.locatorHash),Qe=Vs(...[...Me.dependencies.values()].map(Oe=>{let x=Oe.range!=="missing:"?r.get(Oe.descriptorHash):"missing:";if(typeof x>"u")throw new Error(`Assertion failed: Expected the resolution for ${Ln(t.configuration,Oe)} to have been registered`);return x===g?`${x} (top)`:x}),yt.identHash),_e=Te.get(Qe);if(typeof _e>"u"){Te.set(Qe,yt);continue}if(_e===yt)continue;o.delete(Me.locatorHash),e.delete(yt.descriptorHash),r.delete(yt.descriptorHash),a.delete(Me.locatorHash);let qe=b.get(yt.descriptorHash)||[],At=[Ee.locatorHash,...qe];b.delete(yt.descriptorHash);for(let Oe of At){let x=o.get(Oe);typeof x>"u"||(x.dependencies.get(yt.identHash).descriptorHash!==_e.descriptorHash&&(ut=!1),x.dependencies.set(yt.identHash,_e))}}}while(!ut);for(let H of[...me,...be])H()};for(let ge of t.workspaces){let le=ge.anchoredLocator;A.delete(ge.anchoredDescriptor.descriptorHash),re(ge.anchoredDescriptor,le,new Map,{top:le.locatorHash,optional:!1})}let he;(Pe=>(Pe[Pe.NotProvided=0]="NotProvided",Pe[Pe.NotCompatible=1]="NotCompatible"))(he||(he={}));let pe=[];for(let[ge,le]of R){let Pe=o.get(ge);if(typeof Pe>"u")throw new Error("Assertion failed: Expected the root to be registered");let g=E.get(ge);if(!(typeof g>"u"))for(let ve of le){let Ee=o.get(ve);if(!(typeof Ee>"u"))for(let[de,ne]of g){let Z=Ys(de);if(Ee.peerDependencies.has(Z.identHash))continue;let me=`p${Vs(ve,de,ge).slice(0,5)}`;u.set(me,{subject:ve,requested:Z,rootRequester:ge,allRequesters:ne});let be=Pe.dependencies.get(Z.identHash);if(typeof be<"u"){let ut=V(be),H=ut.version??"0.0.0",yt=new Set;for(let Te of ne){let Qe=o.get(Te);if(typeof Qe>"u")throw new Error("Assertion failed: Expected the link to be registered");let _e=Qe.peerDependencies.get(Z.identHash);if(typeof _e>"u")throw new Error("Assertion failed: Expected the ident to be registered");yt.add(_e.range)}[...yt].every(Te=>{if(Te.startsWith(Gn.protocol)){if(!t.tryWorkspaceByLocator(ut))return!1;Te=Te.slice(Gn.protocol.length),(Te==="^"||Te==="~")&&(Te="*")}return Pd(H,Te)})||pe.push({type:1,subject:Ee,requested:Z,requester:Pe,version:H,hash:me,requirementCount:ne.length})}else{let ut=Pe.peerDependenciesMeta.get(de);ut!=null&&ut.optional||pe.push({type:0,subject:Ee,requested:Z,requester:Pe,hash:me})}}}}let De=[ge=>gM(ge.subject),ge=>nn(ge.requested),ge=>`${ge.type}`];p==null||p.startSectionSync({reportFooter:()=>{p.reportWarning(0,`Some peer dependencies are incorrectly met; run ${Kt(t.configuration,"yarn explain peer-requirements <hash>",Bt.CODE)} for details, where ${Kt(t.configuration,"<hash>",Bt.CODE)} is the six-letter p-prefixed code`)},skipIfEmpty:!0},()=>{for(let ge of xa(pe,De))switch(ge.type){case 0:p.reportWarning(2,`${kr(t.configuration,ge.subject)} doesn't provide ${cs(t.configuration,ge.requested)} (${Kt(t.configuration,ge.hash,Bt.CODE)}), requested by ${cs(t.configuration,ge.requester)}`);break;case 1:{let le=ge.requirementCount>1?"and some of its descendants request":"requests";p.reportWarning(60,`${kr(t.configuration,ge.subject)} provides ${cs(t.configuration,ge.requested)} (${Kt(t.configuration,ge.hash,Bt.CODE)}) with version ${Zw(t.configuration,ge.version)}, which doesn't satisfy what ${cs(t.configuration,ge.requester)} ${le}`)}break}})}var Vb,Jb,zb,y0e,x_,P_,b_,g0e,Jut,zut,d0e,Xut,Zut,$ut,dl,S_,m0e,Pt,E0e=dt(()=>{St();St();Hl();_t();Vb=Ie("crypto");y_();Jb=tt(f0e()),zb=tt(nd()),y0e=tt(si()),x_=Ie("util"),P_=tt(Ie("v8")),b_=tt(Ie("zlib"));E1();u_();A_();uE();IM();Zl();p0e();v_();Sd();D_();qP();zl();n0();Vl();d1();PU();s0();Ks();g0e=7,Jut=2,zut=/ *, */g,d0e=/\/$/,Xut=32,Zut=(0,x_.promisify)(b_.default.gzip),$ut=(0,x_.promisify)(b_.default.gunzip),dl=(r=>(r.UpdateLockfile="update-lockfile",r.SkipBuild="skip-build",r))(dl||{}),S_={restoreLinkersCustomData:["linkersCustomData"],restoreResolutions:["accessibleLocators","conditionalLocators","disabledLocators","optionalBuilds","storedDescriptors","storedResolutions","storedPackages","lockFileChecksum"],restoreBuildState:["storedBuildState"]},m0e=t=>Vs(`${Jut}`,t),Pt=class{constructor(e,{configuration:r}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.linkersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=r,this.cwd=e}static async find(e,r){var E,R,L;if(!e.projectCwd)throw new ot(`No project found in ${r}`);let o=e.projectCwd,a=r,n=null;for(;n!==e.projectCwd;){if(n=a,oe.existsSync(J.join(n,Lr.manifest))){o=n;break}a=J.dirname(n)}let u=new Pt(e.projectCwd,{configuration:e});(E=Xe.telemetry)==null||E.reportProject(u.cwd),await u.setupResolutions(),await u.setupWorkspaces(),(R=Xe.telemetry)==null||R.reportWorkspaceCount(u.workspaces.length),(L=Xe.telemetry)==null||L.reportDependencyCount(u.workspaces.reduce((_,V)=>_+V.manifest.dependencies.size+V.manifest.devDependencies.size,0));let A=u.tryWorkspaceByCwd(o);if(A)return{project:u,workspace:A,locator:A.anchoredLocator};let p=await u.findLocatorForLocation(`${o}/`,{strict:!0});if(p)return{project:u,locator:p,workspace:null};let h=Kt(e,u.cwd,Bt.PATH),C=Kt(e,J.relative(u.cwd,o),Bt.PATH),w=`- If ${h} isn't intended to be a project, remove any yarn.lock and/or package.json file there.`,v=`- If ${h} is intended to be a project, it might be that you forgot to list ${C} in its workspace configuration.`,b=`- Finally, if ${h} is fine and you intend ${C} to be treated as a completely separate project (not even a workspace), create an empty yarn.lock file in it.`;throw new ot(`The nearest package directory (${Kt(e,o,Bt.PATH)}) doesn't seem to be part of the project declared in ${Kt(e,u.cwd,Bt.PATH)}. |
202 | 202 | ||
203 | ${[w,v,b].join(` | 203 | ${[w,v,b].join(` |
204 | `)}`)}async setupResolutions(){this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=V.join(this.cwd,this.configuration.get("lockfileFilename")),r=this.configuration.get("defaultLanguageName");if(ae.existsSync(e)){let o=await ae.readFilePromise(e,"utf8");this.lockFileChecksum=c0e(o);let a=Yi(o);if(a.__metadata){let n=a.__metadata.version,u=a.__metadata.cacheKey;this.lockfileNeedsRefresh=n<a0e;for(let A of Object.keys(a)){if(A==="__metadata")continue;let p=a[A];if(typeof p.resolution>"u")throw new Error(`Assertion failed: Expected the lockfile entry to have a resolution field (${A})`);let h=bf(p.resolution,!0),C=new Nt;C.load(p,{yamlCompatibilityMode:!0});let w=C.version,v=C.languageName||r,b=p.linkType.toUpperCase(),E=p.conditions??null,R=C.dependencies,L=C.peerDependencies,_=C.dependenciesMeta,J=C.peerDependenciesMeta,re=C.bin;if(p.checksum!=null){let pe=typeof u<"u"&&!p.checksum.includes("/")?`${u}/${p.checksum}`:p.checksum;this.storedChecksums.set(h.locatorHash,pe)}let oe={...h,version:w,languageName:v,linkType:b,conditions:E,dependencies:R,peerDependencies:L,dependenciesMeta:_,peerDependenciesMeta:J,bin:re};this.originalPackages.set(oe.locatorHash,oe);for(let pe of A.split(Nut)){let he=t0(pe);n<=6&&(he=this.configuration.normalizeDependency(he),he=mn(he,he.range.replace(/^patch:[^@]+@(?!npm(:|%3A))/,"$1npm%3A"))),this.storedDescriptors.set(he.descriptorHash,he),this.storedResolutions.set(he.descriptorHash,h.locatorHash)}}}}}async setupWorkspaces(){this.workspaces=[],this.workspacesByCwd=new Map,this.workspacesByIdent=new Map;let e=[this.cwd];for(;e.length>0;){let r=e;e=[];for(let o of r){if(this.workspacesByCwd.has(o))continue;let a=await this.addWorkspace(o);for(let n of a.workspacesCwds)e.push(n)}}}async addWorkspace(e){let r=new tC(e,{project:this});await r.setup();let o=this.workspacesByIdent.get(r.locator.identHash);if(typeof o<"u")throw new Error(`Duplicate workspace name ${cs(this.configuration,r.locator)}: ${Ae.fromPortablePath(e)} conflicts with ${Ae.fromPortablePath(o.cwd)}`);return this.workspaces.push(r),this.workspacesByCwd.set(e,r),this.workspacesByIdent.set(r.locator.identHash,r),r}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){V.isAbsolute(e)||(e=V.resolve(this.cwd,e)),e=V.normalize(e).replace(/\/+$/,"");let r=this.workspacesByCwd.get(e);return r||null}getWorkspaceByCwd(e){let r=this.tryWorkspaceByCwd(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByFilePath(e){let r=null;for(let o of this.workspaces)V.relative(o.cwd,e).startsWith("../")||r&&r.cwd.length>=o.cwd.length||(r=o);return r||null}getWorkspaceByFilePath(e){let r=this.tryWorkspaceByFilePath(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByIdent(e){let r=this.workspacesByIdent.get(e.identHash);return typeof r>"u"?null:r}getWorkspaceByIdent(e){let r=this.tryWorkspaceByIdent(e);if(!r)throw new Error(`Workspace not found (${cs(this.configuration,e)})`);return r}tryWorkspaceByDescriptor(e){let r=this.tryWorkspaceByIdent(e);return r===null||(xf(e)&&(e=qw(e)),!r.accepts(e.range))?null:r}getWorkspaceByDescriptor(e){let r=this.tryWorkspaceByDescriptor(e);if(r===null)throw new Error(`Workspace not found (${Ln(this.configuration,e)})`);return r}tryWorkspaceByLocator(e){let r=this.tryWorkspaceByIdent(e);return r===null||(qc(e)&&(e=jw(e)),r.locator.locatorHash!==e.locatorHash&&r.anchoredLocator.locatorHash!==e.locatorHash)?null:r}getWorkspaceByLocator(e){let r=this.tryWorkspaceByLocator(e);if(!r)throw new Error(`Workspace not found (${kr(this.configuration,e)})`);return r}forgetResolution(e){let r=a=>{this.storedResolutions.delete(a),this.storedDescriptors.delete(a)},o=a=>{this.originalPackages.delete(a),this.storedPackages.delete(a),this.accessibleLocators.delete(a)};if("descriptorHash"in e){let a=this.storedResolutions.get(e.descriptorHash);r(e.descriptorHash);let n=new Set(this.storedResolutions.values());typeof a<"u"&&!n.has(a)&&o(a)}if("locatorHash"in e){o(e.locatorHash);for(let[a,n]of this.storedResolutions)n===e.locatorHash&&r(a)}}forgetTransientResolutions(){let e=this.configuration.makeResolver();for(let r of this.originalPackages.values()){let o;try{o=e.shouldPersistResolution(r,{project:this,resolver:e})}catch{o=!1}o||this.forgetResolution(r)}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[r,o]of e.dependencies)xf(o)&&e.dependencies.set(r,qw(o))}getDependencyMeta(e,r){let o={},n=this.topLevelWorkspace.manifest.dependenciesMeta.get(nn(e));if(!n)return o;let u=n.get(null);if(u&&Object.assign(o,u),r===null||!A0e.default.valid(r))return o;for(let[A,p]of n)A!==null&&A===r&&Object.assign(o,p);return o}async findLocatorForLocation(e,{strict:r=!1}={}){let o=new xi,a=this.configuration.getLinkers(),n={project:this,report:o};for(let u of a){let A=await u.findPackageLocator(e,n);if(A){if(r&&(await u.findPackageLocation(A,n)).replace(l0e,"")!==e.replace(l0e,""))continue;return A}}return null}async loadUserConfig(){let e=V.join(this.cwd,"yarn.config.js");return await ae.existsPromise(e)?Kp(e):null}async preparePackage(e,{resolver:r,resolveOptions:o}){let a=this.configuration.normalizePackage(e);for(let[n,u]of a.dependencies){let A=await this.configuration.reduceHook(h=>h.reduceDependency,u,this,a,u,{resolver:r,resolveOptions:o});if(!Gw(u,A))throw new Error("Assertion failed: The descriptor ident cannot be changed through aliases");let p=r.bindDescriptor(A,a,o);a.dependencies.set(n,p)}return a}async resolveEverything(e){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error("Workspaces must have been setup before calling this function");this.forgetVirtualResolutions(),e.lockfileOnly||this.forgetTransientResolutions();let r=e.resolver||this.configuration.makeResolver(),o=new ZE(r);await o.setup(this,{report:e.report});let a=e.lockfileOnly?[new Mb(r)]:[o,r],n=new vd([new $E(r),...a]),u=new vd([...a]),A=this.configuration.makeFetcher(),p=e.lockfileOnly?{project:this,report:e.report,resolver:n}:{project:this,report:e.report,resolver:n,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:A,cacheOptions:{mirrorWriteOnly:!0}}},h=new Map,C=new Map,w=new Map,v=new Map,b=new Map,E=new Map,R=this.topLevelWorkspace.anchoredLocator,L=new Set,_=[],J=K4(),re=this.configuration.getSupportedArchitectures();await e.report.startProgressPromise(Vs.progressViaTitle(),async Pe=>{let g=async Z=>{let me=await jy(async()=>await n.resolve(Z,p),H=>`${kr(this.configuration,Z)}: ${H}`);if(!Ww(Z,me))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${kr(this.configuration,Z)} to ${kr(this.configuration,me)})`);v.set(me.locatorHash,me);let be=await this.preparePackage(me,{resolver:n,resolveOptions:p}),ut=_c([...be.dependencies.values()].map(H=>ne(H)));return _.push(ut),ut.catch(()=>{}),C.set(be.locatorHash,be),be},De=async Z=>{let me=b.get(Z.locatorHash);if(typeof me<"u")return me;let be=Promise.resolve().then(()=>g(Z));return b.set(Z.locatorHash,be),be},Ee=async(Z,me)=>{let be=await ne(me);return h.set(Z.descriptorHash,Z),w.set(Z.descriptorHash,be.locatorHash),be},de=async Z=>{Pe.setTitle(Ln(this.configuration,Z));let me=this.resolutionAliases.get(Z.descriptorHash);if(typeof me<"u")return Ee(Z,this.storedDescriptors.get(me));let be=n.getResolutionDependencies(Z,p),ut=Object.fromEntries(await _c(Object.entries(be).map(async([Me,Te])=>{let Qe=n.bindDescriptor(Te,R,p),Ue=await ne(Qe);return L.add(Ue.locatorHash),[Me,Ue]}))),yt=(await jy(async()=>await n.getCandidates(Z,ut,p),Me=>`${Ln(this.configuration,Z)}: ${Me}`))[0];if(typeof yt>"u")throw new Jt(82,`${Ln(this.configuration,Z)}: No candidates found`);if(e.checkResolutions){let{locators:Me}=await u.getSatisfying(Z,ut,[yt],{...p,resolver:u});if(!Me.find(Te=>Te.locatorHash===yt.locatorHash))throw new Jt(78,`Invalid resolution ${Mw(this.configuration,Z,yt)}`)}return h.set(Z.descriptorHash,Z),w.set(Z.descriptorHash,yt.locatorHash),De(yt)},ne=Z=>{let me=E.get(Z.descriptorHash);if(typeof me<"u")return me;h.set(Z.descriptorHash,Z);let be=Promise.resolve().then(()=>de(Z));return E.set(Z.descriptorHash,be),be};for(let Z of this.workspaces){let me=Z.anchoredDescriptor;_.push(ne(me))}for(;_.length>0;){let Z=[..._];_.length=0,await _c(Z)}});let oe=new Set(this.resolutionAliases.values()),pe=new Set(C.keys()),he=new Set,ve=new Map;Uut({project:this,report:e.report,accessibleLocators:he,volatileDescriptors:oe,optionalBuilds:pe,peerRequirements:ve,allDescriptors:h,allResolutions:w,allPackages:C});for(let Pe of L)pe.delete(Pe);for(let Pe of oe)h.delete(Pe),w.delete(Pe);let ge=new Set,le=new Set;for(let Pe of C.values())Pe.conditions!=null&&(!pe.has(Pe.locatorHash)||(xP(Pe,re)||(xP(Pe,J)&&e.report.reportWarningOnce(77,`${kr(this.configuration,Pe)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${Kt(this.configuration,"supportedArchitectures",Bt.SETTING)} setting`),le.add(Pe.locatorHash)),ge.add(Pe.locatorHash)));this.storedResolutions=w,this.storedDescriptors=h,this.storedPackages=C,this.accessibleLocators=he,this.conditionalLocators=ge,this.disabledLocators=le,this.originalPackages=v,this.optionalBuilds=pe,this.peerRequirements=ve}async fetchEverything({cache:e,report:r,fetcher:o,mode:a}){let n={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},u=o||this.configuration.makeFetcher(),A={checksums:this.storedChecksums,project:this,cache:e,fetcher:u,report:r,cacheOptions:n},p=Array.from(new Set(Sa(this.storedResolutions.values(),[v=>{let b=this.storedPackages.get(v);if(!b)throw new Error("Assertion failed: The locator should have been registered");return Wl(b)}])));a==="update-lockfile"&&(p=p.filter(v=>!this.storedChecksums.has(v)));let h=!1,C=Vs.progressViaCounter(p.length);await r.reportProgress(C);let w=(0,u0e.default)(Lut);if(await r.startCacheReport(async()=>{await _c(p.map(v=>w(async()=>{let b=this.storedPackages.get(v);if(!b)throw new Error("Assertion failed: The locator should have been registered");if(qc(b))return;let E;try{E=await u.fetch(b,A)}catch(R){R.message=`${kr(this.configuration,b)}: ${R.message}`,r.reportExceptionOnce(R),h=R;return}E.checksum!=null?this.storedChecksums.set(b.locatorHash,E.checksum):this.storedChecksums.delete(b.locatorHash),E.releaseFs&&E.releaseFs()}).finally(()=>{C.tick()})))}),h)throw h}async linkEverything({cache:e,report:r,fetcher:o,mode:a}){var De,Ee;let n={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},u=o||this.configuration.makeFetcher(),A={checksums:this.storedChecksums,project:this,cache:e,fetcher:u,report:r,cacheOptions:n},p=this.configuration.getLinkers(),h={project:this,report:r},C=new Map(p.map(de=>{let ne=de.makeInstaller(h),Z=de.getCustomDataKey(),me=this.linkersCustomData.get(Z);return typeof me<"u"&&ne.attachCustomData(me),[de,ne]})),w=new Map,v=new Map,b=new Map,E=new Map(await _c([...this.accessibleLocators].map(async de=>{let ne=this.storedPackages.get(de);if(!ne)throw new Error("Assertion failed: The locator should have been registered");return[de,await u.fetch(ne,A)]}))),R=[];for(let de of this.accessibleLocators){let ne=this.storedPackages.get(de);if(typeof ne>"u")throw new Error("Assertion failed: The locator should have been registered");let Z=E.get(ne.locatorHash);if(typeof Z>"u")throw new Error("Assertion failed: The fetch result should have been registered");let me=[],be=H=>{me.push(H)},ut=this.tryWorkspaceByLocator(ne);if(ut!==null){let H=[],{scripts:yt}=ut.manifest;for(let Te of["preinstall","install","postinstall"])yt.has(Te)&&H.push([0,Te]);try{for(let[Te,Qe]of C)if(Te.supportsPackage(ne,h)&&(await Qe.installPackage(ne,Z,{holdFetchResult:be})).buildDirective!==null)throw new Error("Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core")}finally{me.length===0?(De=Z.releaseFs)==null||De.call(Z):R.push(_c(me).catch(()=>{}).then(()=>{var Te;(Te=Z.releaseFs)==null||Te.call(Z)}))}let Me=V.join(Z.packageFs.getRealPath(),Z.prefixPath);v.set(ne.locatorHash,Me),!qc(ne)&&H.length>0&&b.set(ne.locatorHash,{directives:H,buildLocations:[Me]})}else{let H=p.find(Te=>Te.supportsPackage(ne,h));if(!H)throw new Jt(12,`${kr(this.configuration,ne)} isn't supported by any available linker`);let yt=C.get(H);if(!yt)throw new Error("Assertion failed: The installer should have been registered");let Me;try{Me=await yt.installPackage(ne,Z,{holdFetchResult:be})}finally{me.length===0?(Ee=Z.releaseFs)==null||Ee.call(Z):R.push(_c(me).then(()=>{}).then(()=>{var Te;(Te=Z.releaseFs)==null||Te.call(Z)}))}w.set(ne.locatorHash,H),v.set(ne.locatorHash,Me.packageLocation),Me.buildDirective&&Me.buildDirective.length>0&&Me.packageLocation&&b.set(ne.locatorHash,{directives:Me.buildDirective,buildLocations:[Me.packageLocation]})}}let L=new Map;for(let de of this.accessibleLocators){let ne=this.storedPackages.get(de);if(!ne)throw new Error("Assertion failed: The locator should have been registered");let Z=this.tryWorkspaceByLocator(ne)!==null,me=async(be,ut)=>{let H=v.get(ne.locatorHash);if(typeof H>"u")throw new Error(`Assertion failed: The package (${kr(this.configuration,ne)}) should have been registered`);let yt=[];for(let Me of ne.dependencies.values()){let Te=this.storedResolutions.get(Me.descriptorHash);if(typeof Te>"u")throw new Error(`Assertion failed: The resolution (${Ln(this.configuration,Me)}, from ${kr(this.configuration,ne)})should have been registered`);let Qe=this.storedPackages.get(Te);if(typeof Qe>"u")throw new Error(`Assertion failed: The package (${Te}, resolved from ${Ln(this.configuration,Me)}) should have been registered`);let Ue=this.tryWorkspaceByLocator(Qe)===null?w.get(Te):null;if(typeof Ue>"u")throw new Error(`Assertion failed: The package (${Te}, resolved from ${Ln(this.configuration,Me)}) should have been registered`);Ue===be||Ue===null?v.get(Qe.locatorHash)!==null&&yt.push([Me,Qe]):!Z&&H!==null&&Hy(L,Te).push(H)}H!==null&&await ut.attachInternalDependencies(ne,yt)};if(Z)for(let[be,ut]of C)be.supportsPackage(ne,h)&&await me(be,ut);else{let be=w.get(ne.locatorHash);if(!be)throw new Error("Assertion failed: The linker should have been found");let ut=C.get(be);if(!ut)throw new Error("Assertion failed: The installer should have been registered");await me(be,ut)}}for(let[de,ne]of L){let Z=this.storedPackages.get(de);if(!Z)throw new Error("Assertion failed: The package should have been registered");let me=w.get(Z.locatorHash);if(!me)throw new Error("Assertion failed: The linker should have been found");let be=C.get(me);if(!be)throw new Error("Assertion failed: The installer should have been registered");await be.attachExternalDependents(Z,ne)}let _=new Map;for(let[de,ne]of C){let Z=await ne.finalizeInstall();for(let me of(Z==null?void 0:Z.records)??[])b.set(me.locatorHash,{directives:me.buildDirective,buildLocations:me.buildLocations});typeof(Z==null?void 0:Z.customData)<"u"&&_.set(de.getCustomDataKey(),Z.customData)}if(this.linkersCustomData=_,await _c(R),a==="skip-build")return;let J=new Set(this.storedPackages.keys()),re=new Set(b.keys());for(let de of re)J.delete(de);let oe=(0,Ub.createHash)("sha512");oe.update(process.versions.node),await this.configuration.triggerHook(de=>de.globalHashGeneration,this,de=>{oe.update("\0"),oe.update(de)});let pe=oe.digest("hex"),he=new Map,ve=de=>{let ne=he.get(de.locatorHash);if(typeof ne<"u")return ne;let Z=this.storedPackages.get(de.locatorHash);if(typeof Z>"u")throw new Error("Assertion failed: The package should have been registered");let me=(0,Ub.createHash)("sha512");me.update(de.locatorHash),he.set(de.locatorHash,"<recursive>");for(let be of Z.dependencies.values()){let ut=this.storedResolutions.get(be.descriptorHash);if(typeof ut>"u")throw new Error(`Assertion failed: The resolution (${Ln(this.configuration,be)}) should have been registered`);let H=this.storedPackages.get(ut);if(typeof H>"u")throw new Error("Assertion failed: The package should have been registered");me.update(ve(H))}return ne=me.digest("hex"),he.set(de.locatorHash,ne),ne},ge=(de,ne)=>{let Z=(0,Ub.createHash)("sha512");Z.update(pe),Z.update(ve(de));for(let me of ne)Z.update(me);return Z.digest("hex")},le=new Map,Pe=!1,g=de=>{let ne=new Set([de.locatorHash]);for(let Z of ne){let me=this.storedPackages.get(Z);if(!me)throw new Error("Assertion failed: The package should have been registered");for(let be of me.dependencies.values()){let ut=this.storedResolutions.get(be.descriptorHash);if(!ut)throw new Error(`Assertion failed: The resolution (${Ln(this.configuration,be)}) should have been registered`);if(ut!==de.locatorHash&&re.has(ut))return!1;let H=this.storedPackages.get(ut);if(!H)throw new Error("Assertion failed: The package should have been registered");let yt=this.tryWorkspaceByLocator(H);if(yt){if(yt.anchoredLocator.locatorHash!==de.locatorHash&&re.has(yt.anchoredLocator.locatorHash))return!1;ne.add(yt.anchoredLocator.locatorHash)}ne.add(ut)}}return!0};for(;re.size>0;){let de=re.size,ne=[];for(let Z of re){let me=this.storedPackages.get(Z);if(!me)throw new Error("Assertion failed: The package should have been registered");if(!g(me))continue;let be=b.get(me.locatorHash);if(!be)throw new Error("Assertion failed: The build directive should have been registered");let ut=ge(me,be.buildLocations);if(this.storedBuildState.get(me.locatorHash)===ut){le.set(me.locatorHash,ut),re.delete(Z);continue}Pe||(await this.persistInstallStateFile(),Pe=!0),this.storedBuildState.has(me.locatorHash)?r.reportInfo(8,`${kr(this.configuration,me)} must be rebuilt because its dependency tree changed`):r.reportInfo(7,`${kr(this.configuration,me)} must be built because it never has been before or the last one failed`);let H=be.buildLocations.map(async yt=>{if(!V.isAbsolute(yt))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${yt})`);for(let[Me,Te]of be.directives){let Qe=`# This file contains the result of Yarn building a package (${Wl(me)}) | 204 | `)}`)}async setupResolutions(){this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=J.join(this.cwd,this.configuration.get("lockfileFilename")),r=this.configuration.get("defaultLanguageName");if(oe.existsSync(e)){let o=await oe.readFilePromise(e,"utf8");this.lockFileChecksum=m0e(o);let a=Yi(o);if(a.__metadata){let n=a.__metadata.version,u=a.__metadata.cacheKey;this.lockfileNeedsRefresh=n<g0e;for(let A of Object.keys(a)){if(A==="__metadata")continue;let p=a[A];if(typeof p.resolution>"u")throw new Error(`Assertion failed: Expected the lockfile entry to have a resolution field (${A})`);let h=Ff(p.resolution,!0),C=new Nt;C.load(p,{yamlCompatibilityMode:!0});let w=C.version,v=C.languageName||r,b=p.linkType.toUpperCase(),E=p.conditions??null,R=C.dependencies,L=C.peerDependencies,_=C.dependenciesMeta,V=C.peerDependenciesMeta,re=C.bin;if(p.checksum!=null){let he=typeof u<"u"&&!p.checksum.includes("/")?`${u}/${p.checksum}`:p.checksum;this.storedChecksums.set(h.locatorHash,he)}let ae={...h,version:w,languageName:v,linkType:b,conditions:E,dependencies:R,peerDependencies:L,dependenciesMeta:_,peerDependenciesMeta:V,bin:re};this.originalPackages.set(ae.locatorHash,ae);for(let he of A.split(zut)){let pe=i0(he);n<=6&&(pe=this.configuration.normalizeDependency(pe),pe=mn(pe,pe.range.replace(/^patch:[^@]+@(?!npm(:|%3A))/,"$1npm%3A"))),this.storedDescriptors.set(pe.descriptorHash,pe),this.storedResolutions.set(pe.descriptorHash,h.locatorHash)}}}}}async setupWorkspaces(){this.workspaces=[],this.workspacesByCwd=new Map,this.workspacesByIdent=new Map;let e=new Set,r=(0,zb.default)(4),o=async(a,n)=>{if(e.has(n))return a;e.add(n);let u=new oC(n,{project:this});await r(()=>u.setup());let A=a.then(()=>{this.addWorkspace(u)});return Array.from(u.workspacesCwds).reduce(o,A)};await o(Promise.resolve(),this.cwd)}addWorkspace(e){let r=this.workspacesByIdent.get(e.locator.identHash);if(typeof r<"u")throw new Error(`Duplicate workspace name ${cs(this.configuration,e.locator)}: ${ue.fromPortablePath(e.cwd)} conflicts with ${ue.fromPortablePath(r.cwd)}`);this.workspaces.push(e),this.workspacesByCwd.set(e.cwd,e),this.workspacesByIdent.set(e.locator.identHash,e)}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){J.isAbsolute(e)||(e=J.resolve(this.cwd,e)),e=J.normalize(e).replace(/\/+$/,"");let r=this.workspacesByCwd.get(e);return r||null}getWorkspaceByCwd(e){let r=this.tryWorkspaceByCwd(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByFilePath(e){let r=null;for(let o of this.workspaces)J.relative(o.cwd,e).startsWith("../")||r&&r.cwd.length>=o.cwd.length||(r=o);return r||null}getWorkspaceByFilePath(e){let r=this.tryWorkspaceByFilePath(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByIdent(e){let r=this.workspacesByIdent.get(e.identHash);return typeof r>"u"?null:r}getWorkspaceByIdent(e){let r=this.tryWorkspaceByIdent(e);if(!r)throw new Error(`Workspace not found (${cs(this.configuration,e)})`);return r}tryWorkspaceByDescriptor(e){if(e.range.startsWith(Gn.protocol)){let o=e.range.slice(Gn.protocol.length);if(o!=="^"&&o!=="~"&&o!=="*"&&!cl(o))return this.tryWorkspaceByCwd(o)}let r=this.tryWorkspaceByIdent(e);return r===null||(kf(e)&&(e=Kw(e)),!r.accepts(e.range))?null:r}getWorkspaceByDescriptor(e){let r=this.tryWorkspaceByDescriptor(e);if(r===null)throw new Error(`Workspace not found (${Ln(this.configuration,e)})`);return r}tryWorkspaceByLocator(e){let r=this.tryWorkspaceByIdent(e);return r===null||(Yc(e)&&(e=Vw(e)),r.locator.locatorHash!==e.locatorHash&&r.anchoredLocator.locatorHash!==e.locatorHash)?null:r}getWorkspaceByLocator(e){let r=this.tryWorkspaceByLocator(e);if(!r)throw new Error(`Workspace not found (${kr(this.configuration,e)})`);return r}deleteDescriptor(e){this.storedResolutions.delete(e),this.storedDescriptors.delete(e)}deleteLocator(e){this.originalPackages.delete(e),this.storedPackages.delete(e),this.accessibleLocators.delete(e)}forgetResolution(e){if("descriptorHash"in e){let r=this.storedResolutions.get(e.descriptorHash);this.deleteDescriptor(e.descriptorHash);let o=new Set(this.storedResolutions.values());typeof r<"u"&&!o.has(r)&&this.deleteLocator(r)}if("locatorHash"in e){this.deleteLocator(e.locatorHash);for(let[r,o]of this.storedResolutions)o===e.locatorHash&&this.deleteDescriptor(r)}}forgetTransientResolutions(){let e=this.configuration.makeResolver(),r=new Map;for(let[o,a]of this.storedResolutions.entries()){let n=r.get(a);n||r.set(a,n=new Set),n.add(o)}for(let o of this.originalPackages.values()){let a;try{a=e.shouldPersistResolution(o,{project:this,resolver:e})}catch{a=!1}if(!a){this.deleteLocator(o.locatorHash);let n=r.get(o.locatorHash);if(n){r.delete(o.locatorHash);for(let u of n)this.deleteDescriptor(u)}}}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[r,o]of e.dependencies)kf(o)&&e.dependencies.set(r,Kw(o))}getDependencyMeta(e,r){let o={},n=this.topLevelWorkspace.manifest.dependenciesMeta.get(nn(e));if(!n)return o;let u=n.get(null);if(u&&Object.assign(o,u),r===null||!y0e.default.valid(r))return o;for(let[A,p]of n)A!==null&&A===r&&Object.assign(o,p);return o}async findLocatorForLocation(e,{strict:r=!1}={}){let o=new xi,a=this.configuration.getLinkers(),n={project:this,report:o};for(let u of a){let A=await u.findPackageLocator(e,n);if(A){if(r&&(await u.findPackageLocation(A,n)).replace(d0e,"")!==e.replace(d0e,""))continue;return A}}return null}async loadUserConfig(){let e=J.join(this.cwd,"yarn.config.js");return await oe.existsPromise(e)?zp(e):null}async preparePackage(e,{resolver:r,resolveOptions:o}){let a=this.configuration.normalizePackage(e);for(let[n,u]of a.dependencies){let A=await this.configuration.reduceHook(h=>h.reduceDependency,u,this,a,u,{resolver:r,resolveOptions:o});if(!Jw(u,A))throw new Error("Assertion failed: The descriptor ident cannot be changed through aliases");let p=r.bindDescriptor(A,a,o);a.dependencies.set(n,p)}return a}async resolveEverything(e){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error("Workspaces must have been setup before calling this function");this.forgetVirtualResolutions(),e.lockfileOnly||this.forgetTransientResolutions();let r=e.resolver||this.configuration.makeResolver(),o=new nC(r);await o.setup(this,{report:e.report});let a=e.lockfileOnly?[new Kb(r)]:[o,r],n=new xd([new iC(r),...a]),u=new xd([...a]),A=this.configuration.makeFetcher(),p=e.lockfileOnly?{project:this,report:e.report,resolver:n}:{project:this,report:e.report,resolver:n,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:A,cacheOptions:{mirrorWriteOnly:!0}}},h=new Map,C=new Map,w=new Map,v=new Map,b=new Map,E=new Map,R=this.topLevelWorkspace.anchoredLocator,L=new Set,_=[],V=z4(),re=this.configuration.getSupportedArchitectures();await e.report.startProgressPromise(Js.progressViaTitle(),async Pe=>{let g=async Z=>{let me=await Vy(async()=>await n.resolve(Z,p),H=>`${kr(this.configuration,Z)}: ${H}`);if(!zw(Z,me))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${kr(this.configuration,Z)} to ${kr(this.configuration,me)})`);v.set(me.locatorHash,me);let be=await this.preparePackage(me,{resolver:n,resolveOptions:p}),ut=Gc([...be.dependencies.values()].map(H=>ne(H)));return _.push(ut),ut.catch(()=>{}),C.set(be.locatorHash,be),be},ve=async Z=>{let me=b.get(Z.locatorHash);if(typeof me<"u")return me;let be=Promise.resolve().then(()=>g(Z));return b.set(Z.locatorHash,be),be},Ee=async(Z,me)=>{let be=await ne(me);return h.set(Z.descriptorHash,Z),w.set(Z.descriptorHash,be.locatorHash),be},de=async Z=>{Pe.setTitle(Ln(this.configuration,Z));let me=this.resolutionAliases.get(Z.descriptorHash);if(typeof me<"u")return Ee(Z,this.storedDescriptors.get(me));let be=n.getResolutionDependencies(Z,p),ut=Object.fromEntries(await Gc(Object.entries(be).map(async([Me,Te])=>{let Qe=n.bindDescriptor(Te,R,p),_e=await ne(Qe);return L.add(_e.locatorHash),[Me,_e]}))),yt=(await Vy(async()=>await n.getCandidates(Z,ut,p),Me=>`${Ln(this.configuration,Z)}: ${Me}`))[0];if(typeof yt>"u")throw new Vt(82,`${Ln(this.configuration,Z)}: No candidates found`);if(e.checkResolutions){let{locators:Me}=await u.getSatisfying(Z,ut,[yt],{...p,resolver:u});if(!Me.find(Te=>Te.locatorHash===yt.locatorHash))throw new Vt(78,`Invalid resolution ${jw(this.configuration,Z,yt)}`)}return h.set(Z.descriptorHash,Z),w.set(Z.descriptorHash,yt.locatorHash),ve(yt)},ne=Z=>{let me=E.get(Z.descriptorHash);if(typeof me<"u")return me;h.set(Z.descriptorHash,Z);let be=Promise.resolve().then(()=>de(Z));return E.set(Z.descriptorHash,be),be};for(let Z of this.workspaces){let me=Z.anchoredDescriptor;_.push(ne(me))}for(;_.length>0;){let Z=[..._];_.length=0,await Gc(Z)}});let ae=new Set(this.resolutionAliases.values()),he=new Set(C.keys()),pe=new Set,De=new Map;eAt({project:this,report:e.report,accessibleLocators:pe,volatileDescriptors:ae,optionalBuilds:he,peerRequirements:De,allDescriptors:h,allResolutions:w,allPackages:C});for(let Pe of L)he.delete(Pe);for(let Pe of ae)h.delete(Pe),w.delete(Pe);let ge=new Set,le=new Set;for(let Pe of C.values())Pe.conditions!=null&&(!he.has(Pe.locatorHash)||(OP(Pe,re)||(OP(Pe,V)&&e.report.reportWarningOnce(77,`${kr(this.configuration,Pe)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${Kt(this.configuration,"supportedArchitectures",Bt.SETTING)} setting`),le.add(Pe.locatorHash)),ge.add(Pe.locatorHash)));this.storedResolutions=w,this.storedDescriptors=h,this.storedPackages=C,this.accessibleLocators=pe,this.conditionalLocators=ge,this.disabledLocators=le,this.originalPackages=v,this.optionalBuilds=he,this.peerRequirements=De}async fetchEverything({cache:e,report:r,fetcher:o,mode:a}){let n={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},u=o||this.configuration.makeFetcher(),A={checksums:this.storedChecksums,project:this,cache:e,fetcher:u,report:r,cacheOptions:n},p=Array.from(new Set(xa(this.storedResolutions.values(),[v=>{let b=this.storedPackages.get(v);if(!b)throw new Error("Assertion failed: The locator should have been registered");return Jl(b)}])));a==="update-lockfile"&&(p=p.filter(v=>!this.storedChecksums.has(v)));let h=!1,C=Js.progressViaCounter(p.length);await r.reportProgress(C);let w=(0,zb.default)(Xut);if(await r.startCacheReport(async()=>{await Gc(p.map(v=>w(async()=>{let b=this.storedPackages.get(v);if(!b)throw new Error("Assertion failed: The locator should have been registered");if(Yc(b))return;let E;try{E=await u.fetch(b,A)}catch(R){R.message=`${kr(this.configuration,b)}: ${R.message}`,r.reportExceptionOnce(R),h=R;return}E.checksum!=null?this.storedChecksums.set(b.locatorHash,E.checksum):this.storedChecksums.delete(b.locatorHash),E.releaseFs&&E.releaseFs()}).finally(()=>{C.tick()})))}),h)throw h}async linkEverything({cache:e,report:r,fetcher:o,mode:a}){var ve,Ee;let n={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},u=o||this.configuration.makeFetcher(),A={checksums:this.storedChecksums,project:this,cache:e,fetcher:u,report:r,cacheOptions:n},p=this.configuration.getLinkers(),h={project:this,report:r},C=new Map(p.map(de=>{let ne=de.makeInstaller(h),Z=de.getCustomDataKey(),me=this.linkersCustomData.get(Z);return typeof me<"u"&&ne.attachCustomData(me),[de,ne]})),w=new Map,v=new Map,b=new Map,E=new Map(await Gc([...this.accessibleLocators].map(async de=>{let ne=this.storedPackages.get(de);if(!ne)throw new Error("Assertion failed: The locator should have been registered");return[de,await u.fetch(ne,A)]}))),R=[];for(let de of this.accessibleLocators){let ne=this.storedPackages.get(de);if(typeof ne>"u")throw new Error("Assertion failed: The locator should have been registered");let Z=E.get(ne.locatorHash);if(typeof Z>"u")throw new Error("Assertion failed: The fetch result should have been registered");let me=[],be=H=>{me.push(H)},ut=this.tryWorkspaceByLocator(ne);if(ut!==null){let H=[],{scripts:yt}=ut.manifest;for(let Te of["preinstall","install","postinstall"])yt.has(Te)&&H.push([0,Te]);try{for(let[Te,Qe]of C)if(Te.supportsPackage(ne,h)&&(await Qe.installPackage(ne,Z,{holdFetchResult:be})).buildDirective!==null)throw new Error("Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core")}finally{me.length===0?(ve=Z.releaseFs)==null||ve.call(Z):R.push(Gc(me).catch(()=>{}).then(()=>{var Te;(Te=Z.releaseFs)==null||Te.call(Z)}))}let Me=J.join(Z.packageFs.getRealPath(),Z.prefixPath);v.set(ne.locatorHash,Me),!Yc(ne)&&H.length>0&&b.set(ne.locatorHash,{directives:H,buildLocations:[Me]})}else{let H=p.find(Te=>Te.supportsPackage(ne,h));if(!H)throw new Vt(12,`${kr(this.configuration,ne)} isn't supported by any available linker`);let yt=C.get(H);if(!yt)throw new Error("Assertion failed: The installer should have been registered");let Me;try{Me=await yt.installPackage(ne,Z,{holdFetchResult:be})}finally{me.length===0?(Ee=Z.releaseFs)==null||Ee.call(Z):R.push(Gc(me).then(()=>{}).then(()=>{var Te;(Te=Z.releaseFs)==null||Te.call(Z)}))}w.set(ne.locatorHash,H),v.set(ne.locatorHash,Me.packageLocation),Me.buildDirective&&Me.buildDirective.length>0&&Me.packageLocation&&b.set(ne.locatorHash,{directives:Me.buildDirective,buildLocations:[Me.packageLocation]})}}let L=new Map;for(let de of this.accessibleLocators){let ne=this.storedPackages.get(de);if(!ne)throw new Error("Assertion failed: The locator should have been registered");let Z=this.tryWorkspaceByLocator(ne)!==null,me=async(be,ut)=>{let H=v.get(ne.locatorHash);if(typeof H>"u")throw new Error(`Assertion failed: The package (${kr(this.configuration,ne)}) should have been registered`);let yt=[];for(let Me of ne.dependencies.values()){let Te=this.storedResolutions.get(Me.descriptorHash);if(typeof Te>"u")throw new Error(`Assertion failed: The resolution (${Ln(this.configuration,Me)}, from ${kr(this.configuration,ne)})should have been registered`);let Qe=this.storedPackages.get(Te);if(typeof Qe>"u")throw new Error(`Assertion failed: The package (${Te}, resolved from ${Ln(this.configuration,Me)}) should have been registered`);let _e=this.tryWorkspaceByLocator(Qe)===null?w.get(Te):null;if(typeof _e>"u")throw new Error(`Assertion failed: The package (${Te}, resolved from ${Ln(this.configuration,Me)}) should have been registered`);_e===be||_e===null?v.get(Qe.locatorHash)!==null&&yt.push([Me,Qe]):!Z&&H!==null&&Yy(L,Te).push(H)}H!==null&&await ut.attachInternalDependencies(ne,yt)};if(Z)for(let[be,ut]of C)be.supportsPackage(ne,h)&&await me(be,ut);else{let be=w.get(ne.locatorHash);if(!be)throw new Error("Assertion failed: The linker should have been found");let ut=C.get(be);if(!ut)throw new Error("Assertion failed: The installer should have been registered");await me(be,ut)}}for(let[de,ne]of L){let Z=this.storedPackages.get(de);if(!Z)throw new Error("Assertion failed: The package should have been registered");let me=w.get(Z.locatorHash);if(!me)throw new Error("Assertion failed: The linker should have been found");let be=C.get(me);if(!be)throw new Error("Assertion failed: The installer should have been registered");await be.attachExternalDependents(Z,ne)}let _=new Map;for(let[de,ne]of C){let Z=await ne.finalizeInstall();for(let me of(Z==null?void 0:Z.records)??[])b.set(me.locatorHash,{directives:me.buildDirective,buildLocations:me.buildLocations});typeof(Z==null?void 0:Z.customData)<"u"&&_.set(de.getCustomDataKey(),Z.customData)}if(this.linkersCustomData=_,await Gc(R),a==="skip-build")return;let V=new Set(this.storedPackages.keys()),re=new Set(b.keys());for(let de of re)V.delete(de);let ae=(0,Vb.createHash)("sha512");ae.update(process.versions.node),await this.configuration.triggerHook(de=>de.globalHashGeneration,this,de=>{ae.update("\0"),ae.update(de)});let he=ae.digest("hex"),pe=new Map,De=de=>{let ne=pe.get(de.locatorHash);if(typeof ne<"u")return ne;let Z=this.storedPackages.get(de.locatorHash);if(typeof Z>"u")throw new Error("Assertion failed: The package should have been registered");let me=(0,Vb.createHash)("sha512");me.update(de.locatorHash),pe.set(de.locatorHash,"<recursive>");for(let be of Z.dependencies.values()){let ut=this.storedResolutions.get(be.descriptorHash);if(typeof ut>"u")throw new Error(`Assertion failed: The resolution (${Ln(this.configuration,be)}) should have been registered`);let H=this.storedPackages.get(ut);if(typeof H>"u")throw new Error("Assertion failed: The package should have been registered");me.update(De(H))}return ne=me.digest("hex"),pe.set(de.locatorHash,ne),ne},ge=(de,ne)=>{let Z=(0,Vb.createHash)("sha512");Z.update(he),Z.update(De(de));for(let me of ne)Z.update(me);return Z.digest("hex")},le=new Map,Pe=!1,g=de=>{let ne=new Set([de.locatorHash]);for(let Z of ne){let me=this.storedPackages.get(Z);if(!me)throw new Error("Assertion failed: The package should have been registered");for(let be of me.dependencies.values()){let ut=this.storedResolutions.get(be.descriptorHash);if(!ut)throw new Error(`Assertion failed: The resolution (${Ln(this.configuration,be)}) should have been registered`);if(ut!==de.locatorHash&&re.has(ut))return!1;let H=this.storedPackages.get(ut);if(!H)throw new Error("Assertion failed: The package should have been registered");let yt=this.tryWorkspaceByLocator(H);if(yt){if(yt.anchoredLocator.locatorHash!==de.locatorHash&&re.has(yt.anchoredLocator.locatorHash))return!1;ne.add(yt.anchoredLocator.locatorHash)}ne.add(ut)}}return!0};for(;re.size>0;){let de=re.size,ne=[];for(let Z of re){let me=this.storedPackages.get(Z);if(!me)throw new Error("Assertion failed: The package should have been registered");if(!g(me))continue;let be=b.get(me.locatorHash);if(!be)throw new Error("Assertion failed: The build directive should have been registered");let ut=ge(me,be.buildLocations);if(this.storedBuildState.get(me.locatorHash)===ut){le.set(me.locatorHash,ut),re.delete(Z);continue}Pe||(await this.persistInstallStateFile(),Pe=!0),this.storedBuildState.has(me.locatorHash)?r.reportInfo(8,`${kr(this.configuration,me)} must be rebuilt because its dependency tree changed`):r.reportInfo(7,`${kr(this.configuration,me)} must be built because it never has been before or the last one failed`);let H=be.buildLocations.map(async yt=>{if(!J.isAbsolute(yt))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${yt})`);for(let[Me,Te]of be.directives){let Qe=`# This file contains the result of Yarn building a package (${Jl(me)}) |
205 | `;switch(Me){case 0:Qe+=`# Script name: ${Te} | 205 | `;switch(Me){case 0:Qe+=`# Script name: ${Te} |
206 | `;break;case 1:Qe+=`# Script code: ${Te} | 206 | `;break;case 1:Qe+=`# Script code: ${Te} |
207 | `;break}let Ue=null;if(!await ae.mktempPromise(async At=>{let Le=V.join(At,"build.log"),{stdout:x,stderr:I}=this.configuration.getSubprocessStreams(Le,{header:Qe,prefix:kr(this.configuration,me),report:r}),P;try{switch(Me){case 0:P=await Fx(me,Te,[],{cwd:yt,project:this,stdin:Ue,stdout:x,stderr:I});break;case 1:P=await wU(me,Te,[],{cwd:yt,project:this,stdin:Ue,stdout:x,stderr:I});break}}catch(F){I.write(F.stack),P=1}if(x.end(),I.end(),P===0)return!0;ae.detachTemp(At);let y=`${kr(this.configuration,me)} couldn't be built successfully (exit code ${Kt(this.configuration,P,Bt.NUMBER)}, logs can be found here: ${Kt(this.configuration,Le,Bt.PATH)})`;return this.optionalBuilds.has(me.locatorHash)?(r.reportInfo(9,y),!0):(r.reportError(9,y),!1)}))return!1}return!0});ne.push(...H,Promise.allSettled(H).then(yt=>{re.delete(Z),yt.every(Me=>Me.status==="fulfilled"&&Me.value===!0)&&le.set(me.locatorHash,ut)}))}if(await _c(ne),de===re.size){let Z=Array.from(re).map(me=>{let be=this.storedPackages.get(me);if(!be)throw new Error("Assertion failed: The package should have been registered");return kr(this.configuration,be)}).join(", ");r.reportError(3,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${Z})`);break}}this.storedBuildState=le}async install(e){var p,h;let r=this.configuration.get("nodeLinker");(p=Xe.telemetry)==null||p.reportInstall(r);let o=!1;if(await e.report.startTimerPromise("Project validation",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(C=>C.validateProject,this,{reportWarning:(C,w)=>{e.report.reportWarning(C,w)},reportError:(C,w)=>{e.report.reportError(C,w),o=!0}})}),o)return;for(let C of this.configuration.packageExtensions.values())for(let[,w]of C)for(let v of w)v.status="inactive";let a=V.join(this.cwd,this.configuration.get("lockfileFilename")),n=null;if(e.immutable)try{n=await ae.readFilePromise(a,"utf8")}catch(C){throw C.code==="ENOENT"?new Jt(28,"The lockfile would have been created by this install, which is explicitly forbidden."):C}await e.report.startTimerPromise("Resolution step",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise("Post-resolution validation",{skipIfEmpty:!0},async()=>{for(let[,C]of this.configuration.packageExtensions)for(let[,w]of C)for(let v of w)if(v.userProvided){let b=Kt(this.configuration,v,Bt.PACKAGE_EXTENSION);switch(v.status){case"inactive":e.report.reportWarning(68,`${b}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case"redundant":e.report.reportWarning(69,`${b}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(n!==null){let C=Rg(n,this.generateLockfile());if(C!==n){let w=vpe(a,a,n,C,void 0,void 0,{maxEditLength:100});if(w){e.report.reportSeparator();for(let v of w.hunks){e.report.reportInfo(null,`@@ -${v.oldStart},${v.oldLines} +${v.newStart},${v.newLines} @@`);for(let b of v.lines)b.startsWith("+")?e.report.reportError(28,Kt(this.configuration,b,Bt.ADDED)):b.startsWith("-")?e.report.reportError(28,Kt(this.configuration,b,Bt.REMOVED)):e.report.reportInfo(null,Kt(this.configuration,b,"grey"))}e.report.reportSeparator()}throw new Jt(28,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(let C of this.configuration.packageExtensions.values())for(let[,w]of C)for(let v of w)v.userProvided&&v.status==="active"&&((h=Xe.telemetry)==null||h.reportPackageExtension(hd(v,Bt.PACKAGE_EXTENSION)));await e.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(e),(typeof e.persistProject>"u"||e.persistProject)&&e.mode!=="update-lockfile"&&await this.cacheCleanup(e)});let u=e.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],A=await Promise.all(u.map(async C=>wP(C,{cwd:this.cwd})));(typeof e.persistProject>"u"||e.persistProject)&&await this.persist(),await e.report.startTimerPromise("Link step",async()=>{if(e.mode==="update-lockfile"){e.report.reportWarning(73,`Skipped due to ${Kt(this.configuration,"mode=update-lockfile",Bt.CODE)}`);return}await this.linkEverything(e);let C=await Promise.all(u.map(async w=>wP(w,{cwd:this.cwd})));for(let w=0;w<u.length;++w)A[w]!==C[w]&&e.report.reportError(64,`The checksum for ${u[w]} has been modified by this install, which is explicitly forbidden.`)}),await this.persistInstallStateFile(),await this.configuration.triggerHook(C=>C.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[a,n]of this.storedResolutions.entries()){let u=e.get(n);u||e.set(n,u=new Set),u.add(a)}let r={};r.__metadata={version:a0e,cacheKey:void 0};for(let[a,n]of e.entries()){let u=this.originalPackages.get(a);if(!u)continue;let A=[];for(let v of n){let b=this.storedDescriptors.get(v);if(!b)throw new Error("Assertion failed: The descriptor should have been registered");A.push(b)}let p=A.map(v=>xa(v)).sort().join(", "),h=new Nt;h.version=u.linkType==="HARD"?u.version:"0.0.0-use.local",h.languageName=u.languageName,h.dependencies=new Map(u.dependencies),h.peerDependencies=new Map(u.peerDependencies),h.dependenciesMeta=new Map(u.dependenciesMeta),h.peerDependenciesMeta=new Map(u.peerDependenciesMeta),h.bin=new Map(u.bin);let C,w=this.storedChecksums.get(u.locatorHash);if(typeof w<"u"){let v=w.indexOf("/");if(v===-1)throw new Error("Assertion failed: Expected the checksum to reference its cache key");let b=w.slice(0,v),E=w.slice(v+1);typeof r.__metadata.cacheKey>"u"&&(r.__metadata.cacheKey=b),b===r.__metadata.cacheKey?C=E:C=w}r[p]={...h.exportTo({},{compatibilityMode:!1}),linkType:u.linkType.toLowerCase(),resolution:Wl(u),checksum:C,conditions:u.conditions||void 0}}return`${[`# This file is generated by running "yarn install" inside your project. | 207 | `;break}let _e=null;if(!await oe.mktempPromise(async At=>{let Oe=J.join(At,"build.log"),{stdout:x,stderr:I}=this.configuration.getSubprocessStreams(Oe,{header:Qe,prefix:kr(this.configuration,me),report:r}),P;try{switch(Me){case 0:P=await Hx(me,Te,[],{cwd:yt,project:this,stdin:_e,stdout:x,stderr:I});break;case 1:P=await DU(me,Te,[],{cwd:yt,project:this,stdin:_e,stdout:x,stderr:I});break}}catch(F){I.write(F.stack),P=1}if(x.end(),I.end(),P===0)return!0;oe.detachTemp(At);let y=`${kr(this.configuration,me)} couldn't be built successfully (exit code ${Kt(this.configuration,P,Bt.NUMBER)}, logs can be found here: ${Kt(this.configuration,Oe,Bt.PATH)})`;return this.optionalBuilds.has(me.locatorHash)?(r.reportInfo(9,y),!0):(r.reportError(9,y),!1)}))return!1}return!0});ne.push(...H,Promise.allSettled(H).then(yt=>{re.delete(Z),yt.every(Me=>Me.status==="fulfilled"&&Me.value===!0)&&le.set(me.locatorHash,ut)}))}if(await Gc(ne),de===re.size){let Z=Array.from(re).map(me=>{let be=this.storedPackages.get(me);if(!be)throw new Error("Assertion failed: The package should have been registered");return kr(this.configuration,be)}).join(", ");r.reportError(3,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${Z})`);break}}this.storedBuildState=le}async install(e){var h,C;let r=this.configuration.get("nodeLinker");(h=Xe.telemetry)==null||h.reportInstall(r);let o=!1;if(await e.report.startTimerPromise("Project validation",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(w=>w.validateProject,this,{reportWarning:(w,v)=>{e.report.reportWarning(w,v)},reportError:(w,v)=>{e.report.reportError(w,v),o=!0}})}),o)return;for(let w of this.configuration.packageExtensions.values())for(let[,v]of w)for(let b of v)b.status="inactive";let a=J.join(this.cwd,this.configuration.get("lockfileFilename")),n=null;if(e.immutable)try{n=await oe.readFilePromise(a,"utf8")}catch(w){throw w.code==="ENOENT"?new Vt(28,"The lockfile would have been created by this install, which is explicitly forbidden."):w}await e.report.startTimerPromise("Resolution step",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise("Post-resolution validation",{skipIfEmpty:!0},async()=>{for(let[,w]of this.configuration.packageExtensions)for(let[,v]of w)for(let b of v)if(b.userProvided){let E=Kt(this.configuration,b,Bt.PACKAGE_EXTENSION);switch(b.status){case"inactive":e.report.reportWarning(68,`${E}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case"redundant":e.report.reportWarning(69,`${E}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(n!==null){let w=Og(n,this.generateLockfile());if(w!==n){let v=Fpe(a,a,n,w,void 0,void 0,{maxEditLength:100});if(v){e.report.reportSeparator();for(let b of v.hunks){e.report.reportInfo(null,`@@ -${b.oldStart},${b.oldLines} +${b.newStart},${b.newLines} @@`);for(let E of b.lines)E.startsWith("+")?e.report.reportError(28,Kt(this.configuration,E,Bt.ADDED)):E.startsWith("-")?e.report.reportError(28,Kt(this.configuration,E,Bt.REMOVED)):e.report.reportInfo(null,Kt(this.configuration,E,"grey"))}e.report.reportSeparator()}throw new Vt(28,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(let w of this.configuration.packageExtensions.values())for(let[,v]of w)for(let b of v)b.userProvided&&b.status==="active"&&((C=Xe.telemetry)==null||C.reportPackageExtension(yd(b,Bt.PACKAGE_EXTENSION)));await e.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(e),(typeof e.persistProject>"u"||e.persistProject)&&e.mode!=="update-lockfile"&&await this.cacheCleanup(e)});let u=e.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],A=await Promise.all(u.map(async w=>kP(w,{cwd:this.cwd})));(typeof e.persistProject>"u"||e.persistProject)&&await this.persist(),await e.report.startTimerPromise("Link step",async()=>{if(e.mode==="update-lockfile"){e.report.reportWarning(73,`Skipped due to ${Kt(this.configuration,"mode=update-lockfile",Bt.CODE)}`);return}await this.linkEverything(e);let w=await Promise.all(u.map(async v=>kP(v,{cwd:this.cwd})));for(let v=0;v<u.length;++v)A[v]!==w[v]&&e.report.reportError(64,`The checksum for ${u[v]} has been modified by this install, which is explicitly forbidden.`)}),await this.persistInstallStateFile();let p=!1;await e.report.startTimerPromise("Post-install validation",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(w=>w.validateProjectAfterInstall,this,{reportWarning:(w,v)=>{e.report.reportWarning(w,v)},reportError:(w,v)=>{e.report.reportError(w,v),p=!0}})}),!p&&await this.configuration.triggerHook(w=>w.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[a,n]of this.storedResolutions.entries()){let u=e.get(n);u||e.set(n,u=new Set),u.add(a)}let r={};r.__metadata={version:g0e,cacheKey:void 0};for(let[a,n]of e.entries()){let u=this.originalPackages.get(a);if(!u)continue;let A=[];for(let v of n){let b=this.storedDescriptors.get(v);if(!b)throw new Error("Assertion failed: The descriptor should have been registered");A.push(b)}let p=A.map(v=>Qa(v)).sort().join(", "),h=new Nt;h.version=u.linkType==="HARD"?u.version:"0.0.0-use.local",h.languageName=u.languageName,h.dependencies=new Map(u.dependencies),h.peerDependencies=new Map(u.peerDependencies),h.dependenciesMeta=new Map(u.dependenciesMeta),h.peerDependenciesMeta=new Map(u.peerDependenciesMeta),h.bin=new Map(u.bin);let C,w=this.storedChecksums.get(u.locatorHash);if(typeof w<"u"){let v=w.indexOf("/");if(v===-1)throw new Error("Assertion failed: Expected the checksum to reference its cache key");let b=w.slice(0,v),E=w.slice(v+1);typeof r.__metadata.cacheKey>"u"&&(r.__metadata.cacheKey=b),b===r.__metadata.cacheKey?C=E:C=w}r[p]={...h.exportTo({},{compatibilityMode:!1}),linkType:u.linkType.toLowerCase(),resolution:Jl(u),checksum:C,conditions:u.conditions||void 0}}return`${[`# This file is generated by running "yarn install" inside your project. |
208 | `,`# Manual changes might be lost - proceed with caution! | 208 | `,`# Manual changes might be lost - proceed with caution! |
209 | `].join("")} | 209 | `].join("")} |
210 | `+Ia(r)}async persistLockfile(){let e=V.join(this.cwd,this.configuration.get("lockfileFilename")),r="";try{r=await ae.readFilePromise(e,"utf8")}catch{}let o=this.generateLockfile(),a=Rg(r,o);a!==r&&(await ae.writeFilePromise(e,a),this.lockFileChecksum=c0e(a),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let u of Object.values(B_))e.push(...u);let r=(0,_b.default)(this,e),o=v_.default.serialize(r),a=Js(o);if(this.installStateChecksum===a)return;let n=this.configuration.get("installStatePath");await ae.mkdirPromise(V.dirname(n),{recursive:!0}),await ae.writeFilePromise(n,await Out(o)),this.installStateChecksum=a}async restoreInstallState({restoreLinkersCustomData:e=!0,restoreResolutions:r=!0,restoreBuildState:o=!0}={}){let a=this.configuration.get("installStatePath"),n;try{let u=await Mut(await ae.readFilePromise(a));n=v_.default.deserialize(u),this.installStateChecksum=Js(u)}catch{r&&await this.applyLightResolution();return}e&&typeof n.linkersCustomData<"u"&&(this.linkersCustomData=n.linkersCustomData),o&&Object.assign(this,(0,_b.default)(n,B_.restoreBuildState)),r&&(n.lockFileChecksum===this.lockFileChecksum?Object.assign(this,(0,_b.default)(n,B_.restoreResolutions)):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new xi}),await this.persistInstallStateFile()}async persist(){await this.persistLockfile();for(let e of this.workspacesByCwd.values())await e.persistManifest()}async cacheCleanup({cache:e,report:r}){if(this.configuration.get("enableGlobalCache"))return;let o=new Set([".gitignore"]);if(!xM(e.cwd,this.cwd)||!await ae.existsPromise(e.cwd))return;let a=this.configuration.get("preferAggregateCacheInfo"),n=0,u=null;for(let A of await ae.readdirPromise(e.cwd)){if(o.has(A))continue;let p=V.resolve(e.cwd,A);e.markedFiles.has(p)||(u=A,e.immutable?r.reportError(56,`${Kt(this.configuration,V.basename(p),"magenta")} appears to be unused and would be marked for deletion, but the cache is immutable`):(a?n+=1:r.reportInfo(19,`${Kt(this.configuration,V.basename(p),"magenta")} appears to be unused - removing`),await ae.removePromise(p)))}a&&n!==0&&r.reportInfo(19,n>1?`${n} packages appeared to be unused and were removed`:`${u} appeared to be unused and was removed`)}}});var rC,p0e=dt(()=>{bt();e0();cx();Gl();rC=class{constructor(e,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.configuration=e;let o=this.getRegistryPath();this.isNew=!ae.existsSync(o),this.sendReport(r),this.startBuffer()}reportVersion(e){this.reportValue("version",e.replace(/-git\..*/,"-git"))}reportCommandName(e){this.reportValue("commandName",e||"<none>")}reportPluginName(e){this.reportValue("pluginName",e)}reportProject(e){this.reportEnumerator("projectCount",e)}reportInstall(e){this.reportHit("installCount",e)}reportPackageExtension(e){this.reportValue("packageExtension",e)}reportWorkspaceCount(e){this.reportValue("workspaceCount",String(e))}reportDependencyCount(e){this.reportValue("dependencyCount",String(e))}reportValue(e,r){pd(this.values,e).add(r)}reportEnumerator(e,r){pd(this.enumerators,e).add(Js(r))}reportHit(e,r="*"){let o=qy(this.hits,e),a=Bf(o,r,()=>0);o.set(r,a+1)}getRegistryPath(){let e=this.configuration.get("globalFolder");return V.join(e,"telemetry.json")}sendReport(e){let r=this.getRegistryPath(),o;try{o=ae.readJsonSync(r)}catch{o={}}let a=Date.now(),n=this.configuration.get("telemetryInterval")*24*60*60*1e3,A=(o.lastUpdate??a+n+Math.floor(n*Math.random()))+n;if(A>a&&o.lastUpdate!=null)return;try{ae.mkdirSync(V.dirname(r),{recursive:!0}),ae.writeJsonSync(r,{lastUpdate:a})}catch{return}if(A>a||!o.blocks)return;let p=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,h=C=>W4(p,C,{configuration:this.configuration}).catch(()=>{});for(let[C,w]of Object.entries(o.blocks??{})){if(Object.keys(w).length===0)continue;let v=w;v.userId=C,v.reportType="primary";for(let R of Object.keys(v.enumerators??{}))v.enumerators[R]=v.enumerators[R].length;h(v);let b=new Map,E=20;for(let[R,L]of Object.entries(v.values))L.length>0&&b.set(R,L.slice(0,E));for(;b.size>0;){let R={};R.userId=C,R.reportType="secondary",R.metrics={};for(let[L,_]of b)R.metrics[L]=_.shift(),_.length===0&&b.delete(L);h(R)}}}applyChanges(){let e=this.getRegistryPath(),r;try{r=ae.readJsonSync(e)}catch{r={}}let o=this.configuration.get("telemetryUserId")??"*",a=r.blocks=r.blocks??{},n=a[o]=a[o]??{};for(let u of this.hits.keys()){let A=n.hits=n.hits??{},p=A[u]=A[u]??{};for(let[h,C]of this.hits.get(u))p[h]=(p[h]??0)+C}for(let u of["values","enumerators"])for(let A of this[u].keys()){let p=n[u]=n[u]??{};p[A]=[...new Set([...p[A]??[],...this[u].get(A)??[]])]}ae.mkdirSync(V.dirname(e),{recursive:!0}),ae.writeJsonSync(e,r)}startBuffer(){process.on("exit",()=>{try{this.applyChanges()}catch{}})}}});var _1={};Yt(_1,{BuildType:()=>Nb,Cache:()=>Ur,Configuration:()=>Xe,DEFAULT_LOCK_FILENAME:()=>$4,DEFAULT_RC_FILENAME:()=>Z4,FormatType:()=>rce,InstallMode:()=>fl,LegacyMigrationResolver:()=>ZE,LightReport:()=>fA,LinkType:()=>Wy,LockfileResolver:()=>$E,Manifest:()=>Nt,MessageName:()=>dr,MultiFetcher:()=>aE,PackageExtensionStatus:()=>dL,PackageExtensionType:()=>gL,Project:()=>St,ProjectLookup:()=>rU,Report:()=>Vs,ReportError:()=>Jt,SettingsType:()=>f1,StreamReport:()=>Ct,TAG_REGEXP:()=>DE,TelemetryManager:()=>rC,ThrowReport:()=>xi,VirtualFetcher:()=>lE,WindowsLinkType:()=>dx,Workspace:()=>tC,WorkspaceFetcher:()=>uE,WorkspaceResolver:()=>oi,YarnVersion:()=>On,execUtils:()=>Mr,folderUtils:()=>FP,formatUtils:()=>ye,hashUtils:()=>bn,httpUtils:()=>ln,miscUtils:()=>Ye,nodeUtils:()=>As,parseMessageName:()=>YD,scriptUtils:()=>sn,semverUtils:()=>Tr,stringifyMessageName:()=>Ku,structUtils:()=>Y,tgzUtils:()=>Vi,treeUtils:()=>Xo});var Ke=dt(()=>{Ax();RP();Yl();e0();cx();Gl();A1();vU();r0();Ks();cpe();dpe();ype();p1();p1();Epe();a_();Cpe();l_();sE();KD();mM();f0e();Jl();kx();p0e();I_();EM();CM();wd();w_();IU();yne()});var E0e=U((H3t,q1)=>{"use strict";var qut=process.env.TERM_PROGRAM==="Hyper",jut=process.platform==="win32",d0e=process.platform==="linux",b_={ballotDisabled:"\u2612",ballotOff:"\u2610",ballotOn:"\u2611",bullet:"\u2022",bulletWhite:"\u25E6",fullBlock:"\u2588",heart:"\u2764",identicalTo:"\u2261",line:"\u2500",mark:"\u203B",middot:"\xB7",minus:"\uFF0D",multiplication:"\xD7",obelus:"\xF7",pencilDownRight:"\u270E",pencilRight:"\u270F",pencilUpRight:"\u2710",percent:"%",pilcrow2:"\u2761",pilcrow:"\xB6",plusMinus:"\xB1",section:"\xA7",starsOff:"\u2606",starsOn:"\u2605",upDownArrow:"\u2195"},m0e=Object.assign({},b_,{check:"\u221A",cross:"\xD7",ellipsisLarge:"...",ellipsis:"...",info:"i",question:"?",questionSmall:"?",pointer:">",pointerSmall:"\xBB",radioOff:"( )",radioOn:"(*)",warning:"\u203C"}),y0e=Object.assign({},b_,{ballotCross:"\u2718",check:"\u2714",cross:"\u2716",ellipsisLarge:"\u22EF",ellipsis:"\u2026",info:"\u2139",question:"?",questionFull:"\uFF1F",questionSmall:"\uFE56",pointer:d0e?"\u25B8":"\u276F",pointerSmall:d0e?"\u2023":"\u203A",radioOff:"\u25EF",radioOn:"\u25C9",warning:"\u26A0"});q1.exports=jut&&!qut?m0e:y0e;Reflect.defineProperty(q1.exports,"common",{enumerable:!1,value:b_});Reflect.defineProperty(q1.exports,"windows",{enumerable:!1,value:m0e});Reflect.defineProperty(q1.exports,"other",{enumerable:!1,value:y0e})});var Vc=U((q3t,Q_)=>{"use strict";var Gut=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),Wut=/[\u001b\u009b][[\]#;?()]*(?:(?:(?:[^\W_]*;?[^\W_]*)\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,C0e=()=>{let t={enabled:!0,visible:!0,styles:{},keys:{}};"FORCE_COLOR"in process.env&&(t.enabled=process.env.FORCE_COLOR!=="0");let e=n=>{let u=n.open=`\x1B[${n.codes[0]}m`,A=n.close=`\x1B[${n.codes[1]}m`,p=n.regex=new RegExp(`\\u001b\\[${n.codes[1]}m`,"g");return n.wrap=(h,C)=>{h.includes(A)&&(h=h.replace(p,A+u));let w=u+h+A;return C?w.replace(/\r*\n/g,`${A}$&${u}`):w},n},r=(n,u,A)=>typeof n=="function"?n(u):n.wrap(u,A),o=(n,u)=>{if(n===""||n==null)return"";if(t.enabled===!1)return n;if(t.visible===!1)return"";let A=""+n,p=A.includes(` | 210 | `+Ba(r)}async persistLockfile(){let e=J.join(this.cwd,this.configuration.get("lockfileFilename")),r="";try{r=await oe.readFilePromise(e,"utf8")}catch{}let o=this.generateLockfile(),a=Og(r,o);a!==r&&(await oe.writeFilePromise(e,a),this.lockFileChecksum=m0e(a),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let u of Object.values(S_))e.push(...u);let r=(0,Jb.default)(this,e),o=P_.default.serialize(r),a=Vs(o);if(this.installStateChecksum===a)return;let n=this.configuration.get("installStatePath");await oe.mkdirPromise(J.dirname(n),{recursive:!0}),await oe.writeFilePromise(n,await Zut(o)),this.installStateChecksum=a}async restoreInstallState({restoreLinkersCustomData:e=!0,restoreResolutions:r=!0,restoreBuildState:o=!0}={}){let a=this.configuration.get("installStatePath"),n;try{let u=await $ut(await oe.readFilePromise(a));n=P_.default.deserialize(u),this.installStateChecksum=Vs(u)}catch{r&&await this.applyLightResolution();return}e&&typeof n.linkersCustomData<"u"&&(this.linkersCustomData=n.linkersCustomData),o&&Object.assign(this,(0,Jb.default)(n,S_.restoreBuildState)),r&&(n.lockFileChecksum===this.lockFileChecksum?Object.assign(this,(0,Jb.default)(n,S_.restoreResolutions)):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new xi}),await this.persistInstallStateFile()}async persist(){let e=(0,zb.default)(4);await Promise.all([this.persistLockfile(),...this.workspaces.map(r=>e(()=>r.persistManifest()))])}async cacheCleanup({cache:e,report:r}){if(this.configuration.get("enableGlobalCache"))return;let o=new Set([".gitignore"]);if(!kM(e.cwd,this.cwd)||!await oe.existsPromise(e.cwd))return;let a=this.configuration.get("preferAggregateCacheInfo"),n=0,u=null;for(let A of await oe.readdirPromise(e.cwd)){if(o.has(A))continue;let p=J.resolve(e.cwd,A);e.markedFiles.has(p)||(u=A,e.immutable?r.reportError(56,`${Kt(this.configuration,J.basename(p),"magenta")} appears to be unused and would be marked for deletion, but the cache is immutable`):(a?n+=1:r.reportInfo(19,`${Kt(this.configuration,J.basename(p),"magenta")} appears to be unused - removing`),await oe.removePromise(p)))}a&&n!==0&&r.reportInfo(19,n>1?`${n} packages appeared to be unused and were removed`:`${u} appeared to be unused and was removed`)}}});var aC,C0e=dt(()=>{St();n0();yx();Vl();aC=class{constructor(e,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.configuration=e;let o=this.getRegistryPath();this.isNew=!oe.existsSync(o),this.sendReport(r),this.startBuffer()}reportVersion(e){this.reportValue("version",e.replace(/-git\..*/,"-git"))}reportCommandName(e){this.reportValue("commandName",e||"<none>")}reportPluginName(e){this.reportValue("pluginName",e)}reportProject(e){this.reportEnumerator("projectCount",e)}reportInstall(e){this.reportHit("installCount",e)}reportPackageExtension(e){this.reportValue("packageExtension",e)}reportWorkspaceCount(e){this.reportValue("workspaceCount",String(e))}reportDependencyCount(e){this.reportValue("dependencyCount",String(e))}reportValue(e,r){md(this.values,e).add(r)}reportEnumerator(e,r){md(this.enumerators,e).add(Vs(r))}reportHit(e,r="*"){let o=Ky(this.hits,e),a=Sf(o,r,()=>0);o.set(r,a+1)}getRegistryPath(){let e=this.configuration.get("globalFolder");return J.join(e,"telemetry.json")}sendReport(e){let r=this.getRegistryPath(),o;try{o=oe.readJsonSync(r)}catch{o={}}let a=Date.now(),n=this.configuration.get("telemetryInterval")*24*60*60*1e3,A=(o.lastUpdate??a+n+Math.floor(n*Math.random()))+n;if(A>a&&o.lastUpdate!=null)return;try{oe.mkdirSync(J.dirname(r),{recursive:!0}),oe.writeJsonSync(r,{lastUpdate:a})}catch{return}if(A>a||!o.blocks)return;let p=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,h=C=>V4(p,C,{configuration:this.configuration}).catch(()=>{});for(let[C,w]of Object.entries(o.blocks??{})){if(Object.keys(w).length===0)continue;let v=w;v.userId=C,v.reportType="primary";for(let R of Object.keys(v.enumerators??{}))v.enumerators[R]=v.enumerators[R].length;h(v);let b=new Map,E=20;for(let[R,L]of Object.entries(v.values))L.length>0&&b.set(R,L.slice(0,E));for(;b.size>0;){let R={};R.userId=C,R.reportType="secondary",R.metrics={};for(let[L,_]of b)R.metrics[L]=_.shift(),_.length===0&&b.delete(L);h(R)}}}applyChanges(){let e=this.getRegistryPath(),r;try{r=oe.readJsonSync(e)}catch{r={}}let o=this.configuration.get("telemetryUserId")??"*",a=r.blocks=r.blocks??{},n=a[o]=a[o]??{};for(let u of this.hits.keys()){let A=n.hits=n.hits??{},p=A[u]=A[u]??{};for(let[h,C]of this.hits.get(u))p[h]=(p[h]??0)+C}for(let u of["values","enumerators"])for(let A of this[u].keys()){let p=n[u]=n[u]??{};p[A]=[...new Set([...p[A]??[],...this[u].get(A)??[]])]}oe.mkdirSync(J.dirname(e),{recursive:!0}),oe.writeJsonSync(e,r)}startBuffer(){process.on("exit",()=>{try{this.applyChanges()}catch{}})}}});var Y1={};Yt(Y1,{BuildType:()=>Gb,Cache:()=>Ur,Configuration:()=>Xe,DEFAULT_LOCK_FILENAME:()=>rU,DEFAULT_RC_FILENAME:()=>tU,FormatType:()=>uce,InstallMode:()=>dl,LEGACY_PLUGINS:()=>m1,LegacyMigrationResolver:()=>nC,LightReport:()=>pA,LinkType:()=>zy,LockfileResolver:()=>iC,Manifest:()=>Nt,MessageName:()=>dr,MultiFetcher:()=>fE,PackageExtensionStatus:()=>EL,PackageExtensionType:()=>yL,Project:()=>Pt,ProjectLookup:()=>sU,Report:()=>Js,ReportError:()=>Vt,SettingsType:()=>y1,StreamReport:()=>Ct,TAG_REGEXP:()=>QE,TelemetryManager:()=>aC,ThrowReport:()=>xi,VirtualFetcher:()=>pE,WindowsLinkType:()=>Dx,Workspace:()=>oC,WorkspaceFetcher:()=>gE,WorkspaceResolver:()=>Gn,YarnVersion:()=>On,execUtils:()=>Mr,folderUtils:()=>HP,formatUtils:()=>ye,hashUtils:()=>bn,httpUtils:()=>ln,miscUtils:()=>We,nodeUtils:()=>As,parseMessageName:()=>tS,scriptUtils:()=>sn,semverUtils:()=>Tr,stringifyMessageName:()=>Vu,structUtils:()=>Y,tgzUtils:()=>Ji,treeUtils:()=>$o});var Ke=dt(()=>{Cx();qP();zl();n0();yx();Vl();d1();PU();s0();Ks();mpe();vpe();Spe();E1();E1();Ppe();u_();xpe();A_();uE();rS();CM();E0e();Zl();_x();C0e();v_();wM();BM();Sd();D_();vU();Sne()});var S0e=U((i_t,V1)=>{"use strict";var nAt=process.env.TERM_PROGRAM==="Hyper",iAt=process.platform==="win32",B0e=process.platform==="linux",F_={ballotDisabled:"\u2612",ballotOff:"\u2610",ballotOn:"\u2611",bullet:"\u2022",bulletWhite:"\u25E6",fullBlock:"\u2588",heart:"\u2764",identicalTo:"\u2261",line:"\u2500",mark:"\u203B",middot:"\xB7",minus:"\uFF0D",multiplication:"\xD7",obelus:"\xF7",pencilDownRight:"\u270E",pencilRight:"\u270F",pencilUpRight:"\u2710",percent:"%",pilcrow2:"\u2761",pilcrow:"\xB6",plusMinus:"\xB1",section:"\xA7",starsOff:"\u2606",starsOn:"\u2605",upDownArrow:"\u2195"},v0e=Object.assign({},F_,{check:"\u221A",cross:"\xD7",ellipsisLarge:"...",ellipsis:"...",info:"i",question:"?",questionSmall:"?",pointer:">",pointerSmall:"\xBB",radioOff:"( )",radioOn:"(*)",warning:"\u203C"}),D0e=Object.assign({},F_,{ballotCross:"\u2718",check:"\u2714",cross:"\u2716",ellipsisLarge:"\u22EF",ellipsis:"\u2026",info:"\u2139",question:"?",questionFull:"\uFF1F",questionSmall:"\uFE56",pointer:B0e?"\u25B8":"\u276F",pointerSmall:B0e?"\u2023":"\u203A",radioOff:"\u25EF",radioOn:"\u25C9",warning:"\u26A0"});V1.exports=iAt&&!nAt?v0e:D0e;Reflect.defineProperty(V1.exports,"common",{enumerable:!1,value:F_});Reflect.defineProperty(V1.exports,"windows",{enumerable:!1,value:v0e});Reflect.defineProperty(V1.exports,"other",{enumerable:!1,value:D0e})});var Zc=U((s_t,R_)=>{"use strict";var sAt=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),oAt=/[\u001b\u009b][[\]#;?()]*(?:(?:(?:[^\W_]*;?[^\W_]*)\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,P0e=()=>{let t={enabled:!0,visible:!0,styles:{},keys:{}};"FORCE_COLOR"in process.env&&(t.enabled=process.env.FORCE_COLOR!=="0");let e=n=>{let u=n.open=`\x1B[${n.codes[0]}m`,A=n.close=`\x1B[${n.codes[1]}m`,p=n.regex=new RegExp(`\\u001b\\[${n.codes[1]}m`,"g");return n.wrap=(h,C)=>{h.includes(A)&&(h=h.replace(p,A+u));let w=u+h+A;return C?w.replace(/\r*\n/g,`${A}$&${u}`):w},n},r=(n,u,A)=>typeof n=="function"?n(u):n.wrap(u,A),o=(n,u)=>{if(n===""||n==null)return"";if(t.enabled===!1)return n;if(t.visible===!1)return"";let A=""+n,p=A.includes(` |
211 | `),h=u.length;for(h>0&&u.includes("unstyle")&&(u=[...new Set(["unstyle",...u])].reverse());h-- >0;)A=r(t.styles[u[h]],A,p);return A},a=(n,u,A)=>{t.styles[n]=e({name:n,codes:u}),(t.keys[A]||(t.keys[A]=[])).push(n),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(h){t.alias(n,h)},get(){let h=C=>o(C,h.stack);return Reflect.setPrototypeOf(h,t),h.stack=this.stack?this.stack.concat(n):[n],h}})};return a("reset",[0,0],"modifier"),a("bold",[1,22],"modifier"),a("dim",[2,22],"modifier"),a("italic",[3,23],"modifier"),a("underline",[4,24],"modifier"),a("inverse",[7,27],"modifier"),a("hidden",[8,28],"modifier"),a("strikethrough",[9,29],"modifier"),a("black",[30,39],"color"),a("red",[31,39],"color"),a("green",[32,39],"color"),a("yellow",[33,39],"color"),a("blue",[34,39],"color"),a("magenta",[35,39],"color"),a("cyan",[36,39],"color"),a("white",[37,39],"color"),a("gray",[90,39],"color"),a("grey",[90,39],"color"),a("bgBlack",[40,49],"bg"),a("bgRed",[41,49],"bg"),a("bgGreen",[42,49],"bg"),a("bgYellow",[43,49],"bg"),a("bgBlue",[44,49],"bg"),a("bgMagenta",[45,49],"bg"),a("bgCyan",[46,49],"bg"),a("bgWhite",[47,49],"bg"),a("blackBright",[90,39],"bright"),a("redBright",[91,39],"bright"),a("greenBright",[92,39],"bright"),a("yellowBright",[93,39],"bright"),a("blueBright",[94,39],"bright"),a("magentaBright",[95,39],"bright"),a("cyanBright",[96,39],"bright"),a("whiteBright",[97,39],"bright"),a("bgBlackBright",[100,49],"bgBright"),a("bgRedBright",[101,49],"bgBright"),a("bgGreenBright",[102,49],"bgBright"),a("bgYellowBright",[103,49],"bgBright"),a("bgBlueBright",[104,49],"bgBright"),a("bgMagentaBright",[105,49],"bgBright"),a("bgCyanBright",[106,49],"bgBright"),a("bgWhiteBright",[107,49],"bgBright"),t.ansiRegex=Wut,t.hasColor=t.hasAnsi=n=>(t.ansiRegex.lastIndex=0,typeof n=="string"&&n!==""&&t.ansiRegex.test(n)),t.alias=(n,u)=>{let A=typeof u=="string"?t[u]:u;if(typeof A!="function")throw new TypeError("Expected alias to be the name of an existing color (string) or a function");A.stack||(Reflect.defineProperty(A,"name",{value:n}),t.styles[n]=A,A.stack=[n]),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(p){t.alias(n,p)},get(){let p=h=>o(h,p.stack);return Reflect.setPrototypeOf(p,t),p.stack=this.stack?this.stack.concat(A.stack):A.stack,p}})},t.theme=n=>{if(!Gut(n))throw new TypeError("Expected theme to be an object");for(let u of Object.keys(n))t.alias(u,n[u]);return t},t.alias("unstyle",n=>typeof n=="string"&&n!==""?(t.ansiRegex.lastIndex=0,n.replace(t.ansiRegex,"")):""),t.alias("noop",n=>n),t.none=t.clear=t.noop,t.stripColor=t.unstyle,t.symbols=E0e(),t.define=a,t};Q_.exports=C0e();Q_.exports.create=C0e});var Fo=U($r=>{"use strict";var Yut=Object.prototype.toString,ic=Vc(),I0e=!1,k_=[],w0e={yellow:"blue",cyan:"red",green:"magenta",black:"white",blue:"yellow",red:"cyan",magenta:"green",white:"black"};$r.longest=(t,e)=>t.reduce((r,o)=>Math.max(r,e?o[e].length:o.length),0);$r.hasColor=t=>!!t&&ic.hasColor(t);var jb=$r.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);$r.nativeType=t=>Yut.call(t).slice(8,-1).toLowerCase().replace(/\s/g,"");$r.isAsyncFn=t=>$r.nativeType(t)==="asyncfunction";$r.isPrimitive=t=>t!=null&&typeof t!="object"&&typeof t!="function";$r.resolve=(t,e,...r)=>typeof e=="function"?e.call(t,...r):e;$r.scrollDown=(t=[])=>[...t.slice(1),t[0]];$r.scrollUp=(t=[])=>[t.pop(),...t];$r.reorder=(t=[])=>{let e=t.slice();return e.sort((r,o)=>r.index>o.index?1:r.index<o.index?-1:0),e};$r.swap=(t,e,r)=>{let o=t.length,a=r===o?0:r<0?o-1:r,n=t[e];t[e]=t[a],t[a]=n};$r.width=(t,e=80)=>{let r=t&&t.columns?t.columns:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[0]),process.platform==="win32"?r-1:r};$r.height=(t,e=20)=>{let r=t&&t.rows?t.rows:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[1]),r};$r.wordWrap=(t,e={})=>{if(!t)return t;typeof e=="number"&&(e={width:e});let{indent:r="",newline:o=` | 211 | `),h=u.length;for(h>0&&u.includes("unstyle")&&(u=[...new Set(["unstyle",...u])].reverse());h-- >0;)A=r(t.styles[u[h]],A,p);return A},a=(n,u,A)=>{t.styles[n]=e({name:n,codes:u}),(t.keys[A]||(t.keys[A]=[])).push(n),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(h){t.alias(n,h)},get(){let h=C=>o(C,h.stack);return Reflect.setPrototypeOf(h,t),h.stack=this.stack?this.stack.concat(n):[n],h}})};return a("reset",[0,0],"modifier"),a("bold",[1,22],"modifier"),a("dim",[2,22],"modifier"),a("italic",[3,23],"modifier"),a("underline",[4,24],"modifier"),a("inverse",[7,27],"modifier"),a("hidden",[8,28],"modifier"),a("strikethrough",[9,29],"modifier"),a("black",[30,39],"color"),a("red",[31,39],"color"),a("green",[32,39],"color"),a("yellow",[33,39],"color"),a("blue",[34,39],"color"),a("magenta",[35,39],"color"),a("cyan",[36,39],"color"),a("white",[37,39],"color"),a("gray",[90,39],"color"),a("grey",[90,39],"color"),a("bgBlack",[40,49],"bg"),a("bgRed",[41,49],"bg"),a("bgGreen",[42,49],"bg"),a("bgYellow",[43,49],"bg"),a("bgBlue",[44,49],"bg"),a("bgMagenta",[45,49],"bg"),a("bgCyan",[46,49],"bg"),a("bgWhite",[47,49],"bg"),a("blackBright",[90,39],"bright"),a("redBright",[91,39],"bright"),a("greenBright",[92,39],"bright"),a("yellowBright",[93,39],"bright"),a("blueBright",[94,39],"bright"),a("magentaBright",[95,39],"bright"),a("cyanBright",[96,39],"bright"),a("whiteBright",[97,39],"bright"),a("bgBlackBright",[100,49],"bgBright"),a("bgRedBright",[101,49],"bgBright"),a("bgGreenBright",[102,49],"bgBright"),a("bgYellowBright",[103,49],"bgBright"),a("bgBlueBright",[104,49],"bgBright"),a("bgMagentaBright",[105,49],"bgBright"),a("bgCyanBright",[106,49],"bgBright"),a("bgWhiteBright",[107,49],"bgBright"),t.ansiRegex=oAt,t.hasColor=t.hasAnsi=n=>(t.ansiRegex.lastIndex=0,typeof n=="string"&&n!==""&&t.ansiRegex.test(n)),t.alias=(n,u)=>{let A=typeof u=="string"?t[u]:u;if(typeof A!="function")throw new TypeError("Expected alias to be the name of an existing color (string) or a function");A.stack||(Reflect.defineProperty(A,"name",{value:n}),t.styles[n]=A,A.stack=[n]),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(p){t.alias(n,p)},get(){let p=h=>o(h,p.stack);return Reflect.setPrototypeOf(p,t),p.stack=this.stack?this.stack.concat(A.stack):A.stack,p}})},t.theme=n=>{if(!sAt(n))throw new TypeError("Expected theme to be an object");for(let u of Object.keys(n))t.alias(u,n[u]);return t},t.alias("unstyle",n=>typeof n=="string"&&n!==""?(t.ansiRegex.lastIndex=0,n.replace(t.ansiRegex,"")):""),t.alias("noop",n=>n),t.none=t.clear=t.noop,t.stripColor=t.unstyle,t.symbols=S0e(),t.define=a,t};R_.exports=P0e();R_.exports.create=P0e});var Fo=U($r=>{"use strict";var aAt=Object.prototype.toString,lc=Zc(),x0e=!1,T_=[],b0e={yellow:"blue",cyan:"red",green:"magenta",black:"white",blue:"yellow",red:"cyan",magenta:"green",white:"black"};$r.longest=(t,e)=>t.reduce((r,o)=>Math.max(r,e?o[e].length:o.length),0);$r.hasColor=t=>!!t&&lc.hasColor(t);var $b=$r.isObject=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);$r.nativeType=t=>aAt.call(t).slice(8,-1).toLowerCase().replace(/\s/g,"");$r.isAsyncFn=t=>$r.nativeType(t)==="asyncfunction";$r.isPrimitive=t=>t!=null&&typeof t!="object"&&typeof t!="function";$r.resolve=(t,e,...r)=>typeof e=="function"?e.call(t,...r):e;$r.scrollDown=(t=[])=>[...t.slice(1),t[0]];$r.scrollUp=(t=[])=>[t.pop(),...t];$r.reorder=(t=[])=>{let e=t.slice();return e.sort((r,o)=>r.index>o.index?1:r.index<o.index?-1:0),e};$r.swap=(t,e,r)=>{let o=t.length,a=r===o?0:r<0?o-1:r,n=t[e];t[e]=t[a],t[a]=n};$r.width=(t,e=80)=>{let r=t&&t.columns?t.columns:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[0]),process.platform==="win32"?r-1:r};$r.height=(t,e=20)=>{let r=t&&t.rows?t.rows:e;return t&&typeof t.getWindowSize=="function"&&(r=t.getWindowSize()[1]),r};$r.wordWrap=(t,e={})=>{if(!t)return t;typeof e=="number"&&(e={width:e});let{indent:r="",newline:o=` |
212 | `+r,width:a=80}=e,n=(o+r).match(/[^\S\n]/g)||[];a-=n.length;let u=`.{1,${a}}([\\s\\u200B]+|$)|[^\\s\\u200B]+?([\\s\\u200B]+|$)`,A=t.trim(),p=new RegExp(u,"g"),h=A.match(p)||[];return h=h.map(C=>C.replace(/\n$/,"")),e.padEnd&&(h=h.map(C=>C.padEnd(a," "))),e.padStart&&(h=h.map(C=>C.padStart(a," "))),r+h.join(o)};$r.unmute=t=>{let e=t.stack.find(o=>ic.keys.color.includes(o));return e?ic[e]:t.stack.find(o=>o.slice(2)==="bg")?ic[e.slice(2)]:o=>o};$r.pascal=t=>t?t[0].toUpperCase()+t.slice(1):"";$r.inverse=t=>{if(!t||!t.stack)return t;let e=t.stack.find(o=>ic.keys.color.includes(o));if(e){let o=ic["bg"+$r.pascal(e)];return o?o.black:t}let r=t.stack.find(o=>o.slice(0,2)==="bg");return r?ic[r.slice(2).toLowerCase()]||t:ic.none};$r.complement=t=>{if(!t||!t.stack)return t;let e=t.stack.find(o=>ic.keys.color.includes(o)),r=t.stack.find(o=>o.slice(0,2)==="bg");if(e&&!r)return ic[w0e[e]||e];if(r){let o=r.slice(2).toLowerCase(),a=w0e[o];return a&&ic["bg"+$r.pascal(a)]||t}return ic.none};$r.meridiem=t=>{let e=t.getHours(),r=t.getMinutes(),o=e>=12?"pm":"am";e=e%12;let a=e===0?12:e,n=r<10?"0"+r:r;return a+":"+n+" "+o};$r.set=(t={},e="",r)=>e.split(".").reduce((o,a,n,u)=>{let A=u.length-1>n?o[a]||{}:r;return!$r.isObject(A)&&n<u.length-1&&(A={}),o[a]=A},t);$r.get=(t={},e="",r)=>{let o=t[e]==null?e.split(".").reduce((a,n)=>a&&a[n],t):t[e];return o??r};$r.mixin=(t,e)=>{if(!jb(t))return e;if(!jb(e))return t;for(let r of Object.keys(e)){let o=Object.getOwnPropertyDescriptor(e,r);if(o.hasOwnProperty("value"))if(t.hasOwnProperty(r)&&jb(o.value)){let a=Object.getOwnPropertyDescriptor(t,r);jb(a.value)?t[r]=$r.merge({},t[r],e[r]):Reflect.defineProperty(t,r,o)}else Reflect.defineProperty(t,r,o);else Reflect.defineProperty(t,r,o)}return t};$r.merge=(...t)=>{let e={};for(let r of t)$r.mixin(e,r);return e};$r.mixinEmitter=(t,e)=>{let r=e.constructor.prototype;for(let o of Object.keys(r)){let a=r[o];typeof a=="function"?$r.define(t,o,a.bind(e)):$r.define(t,o,a)}};$r.onExit=t=>{let e=(r,o)=>{I0e||(I0e=!0,k_.forEach(a=>a()),r===!0&&process.exit(128+o))};k_.length===0&&(process.once("SIGTERM",e.bind(null,!0,15)),process.once("SIGINT",e.bind(null,!0,2)),process.once("exit",e)),k_.push(t)};$r.define=(t,e,r)=>{Reflect.defineProperty(t,e,{value:r})};$r.defineExport=(t,e,r)=>{let o;Reflect.defineProperty(t,e,{enumerable:!0,configurable:!0,set(a){o=a},get(){return o?o():r()}})}});var B0e=U(sC=>{"use strict";sC.ctrl={a:"first",b:"backward",c:"cancel",d:"deleteForward",e:"last",f:"forward",g:"reset",i:"tab",k:"cutForward",l:"reset",n:"newItem",m:"cancel",j:"submit",p:"search",r:"remove",s:"save",u:"undo",w:"cutLeft",x:"toggleCursor",v:"paste"};sC.shift={up:"shiftUp",down:"shiftDown",left:"shiftLeft",right:"shiftRight",tab:"prev"};sC.fn={up:"pageUp",down:"pageDown",left:"pageLeft",right:"pageRight",delete:"deleteForward"};sC.option={b:"backward",f:"forward",d:"cutRight",left:"cutLeft",up:"altUp",down:"altDown"};sC.keys={pageup:"pageUp",pagedown:"pageDown",home:"home",end:"end",cancel:"cancel",delete:"deleteForward",backspace:"delete",down:"down",enter:"submit",escape:"cancel",left:"left",space:"space",number:"number",return:"submit",right:"right",tab:"next",up:"up"}});var S0e=U((W3t,D0e)=>{"use strict";var v0e=Ie("readline"),Kut=B0e(),Jut=/^(?:\x1b)([a-zA-Z0-9])$/,Vut=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,zut={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"};function Xut(t){return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(t)}function Zut(t){return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(t)}var Gb=(t="",e={})=>{let r,o={name:e.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t,...e};if(Buffer.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t="\x1B"+String(t)):t=String(t):t!==void 0&&typeof t!="string"?t=String(t):t||(t=o.sequence||""),o.sequence=o.sequence||t||o.name,t==="\r")o.raw=void 0,o.name="return";else if(t===` | 212 | `+r,width:a=80}=e,n=(o+r).match(/[^\S\n]/g)||[];a-=n.length;let u=`.{1,${a}}([\\s\\u200B]+|$)|[^\\s\\u200B]+?([\\s\\u200B]+|$)`,A=t.trim(),p=new RegExp(u,"g"),h=A.match(p)||[];return h=h.map(C=>C.replace(/\n$/,"")),e.padEnd&&(h=h.map(C=>C.padEnd(a," "))),e.padStart&&(h=h.map(C=>C.padStart(a," "))),r+h.join(o)};$r.unmute=t=>{let e=t.stack.find(o=>lc.keys.color.includes(o));return e?lc[e]:t.stack.find(o=>o.slice(2)==="bg")?lc[e.slice(2)]:o=>o};$r.pascal=t=>t?t[0].toUpperCase()+t.slice(1):"";$r.inverse=t=>{if(!t||!t.stack)return t;let e=t.stack.find(o=>lc.keys.color.includes(o));if(e){let o=lc["bg"+$r.pascal(e)];return o?o.black:t}let r=t.stack.find(o=>o.slice(0,2)==="bg");return r?lc[r.slice(2).toLowerCase()]||t:lc.none};$r.complement=t=>{if(!t||!t.stack)return t;let e=t.stack.find(o=>lc.keys.color.includes(o)),r=t.stack.find(o=>o.slice(0,2)==="bg");if(e&&!r)return lc[b0e[e]||e];if(r){let o=r.slice(2).toLowerCase(),a=b0e[o];return a&&lc["bg"+$r.pascal(a)]||t}return lc.none};$r.meridiem=t=>{let e=t.getHours(),r=t.getMinutes(),o=e>=12?"pm":"am";e=e%12;let a=e===0?12:e,n=r<10?"0"+r:r;return a+":"+n+" "+o};$r.set=(t={},e="",r)=>e.split(".").reduce((o,a,n,u)=>{let A=u.length-1>n?o[a]||{}:r;return!$r.isObject(A)&&n<u.length-1&&(A={}),o[a]=A},t);$r.get=(t={},e="",r)=>{let o=t[e]==null?e.split(".").reduce((a,n)=>a&&a[n],t):t[e];return o??r};$r.mixin=(t,e)=>{if(!$b(t))return e;if(!$b(e))return t;for(let r of Object.keys(e)){let o=Object.getOwnPropertyDescriptor(e,r);if(o.hasOwnProperty("value"))if(t.hasOwnProperty(r)&&$b(o.value)){let a=Object.getOwnPropertyDescriptor(t,r);$b(a.value)?t[r]=$r.merge({},t[r],e[r]):Reflect.defineProperty(t,r,o)}else Reflect.defineProperty(t,r,o);else Reflect.defineProperty(t,r,o)}return t};$r.merge=(...t)=>{let e={};for(let r of t)$r.mixin(e,r);return e};$r.mixinEmitter=(t,e)=>{let r=e.constructor.prototype;for(let o of Object.keys(r)){let a=r[o];typeof a=="function"?$r.define(t,o,a.bind(e)):$r.define(t,o,a)}};$r.onExit=t=>{let e=(r,o)=>{x0e||(x0e=!0,T_.forEach(a=>a()),r===!0&&process.exit(128+o))};T_.length===0&&(process.once("SIGTERM",e.bind(null,!0,15)),process.once("SIGINT",e.bind(null,!0,2)),process.once("exit",e)),T_.push(t)};$r.define=(t,e,r)=>{Reflect.defineProperty(t,e,{value:r})};$r.defineExport=(t,e,r)=>{let o;Reflect.defineProperty(t,e,{enumerable:!0,configurable:!0,set(a){o=a},get(){return o?o():r()}})}});var Q0e=U(uC=>{"use strict";uC.ctrl={a:"first",b:"backward",c:"cancel",d:"deleteForward",e:"last",f:"forward",g:"reset",i:"tab",k:"cutForward",l:"reset",n:"newItem",m:"cancel",j:"submit",p:"search",r:"remove",s:"save",u:"undo",w:"cutLeft",x:"toggleCursor",v:"paste"};uC.shift={up:"shiftUp",down:"shiftDown",left:"shiftLeft",right:"shiftRight",tab:"prev"};uC.fn={up:"pageUp",down:"pageDown",left:"pageLeft",right:"pageRight",delete:"deleteForward"};uC.option={b:"backward",f:"forward",d:"cutRight",left:"cutLeft",up:"altUp",down:"altDown"};uC.keys={pageup:"pageUp",pagedown:"pageDown",home:"home",end:"end",cancel:"cancel",delete:"deleteForward",backspace:"delete",down:"down",enter:"submit",escape:"cancel",left:"left",space:"space",number:"number",return:"submit",right:"right",tab:"next",up:"up"}});var R0e=U((l_t,F0e)=>{"use strict";var k0e=Ie("readline"),lAt=Q0e(),cAt=/^(?:\x1b)([a-zA-Z0-9])$/,uAt=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,AAt={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"};function fAt(t){return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(t)}function pAt(t){return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(t)}var eQ=(t="",e={})=>{let r,o={name:e.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t,...e};if(Buffer.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t="\x1B"+String(t)):t=String(t):t!==void 0&&typeof t!="string"?t=String(t):t||(t=o.sequence||""),o.sequence=o.sequence||t||o.name,t==="\r")o.raw=void 0,o.name="return";else if(t===` |
213 | `)o.name="enter";else if(t===" ")o.name="tab";else if(t==="\b"||t==="\x7F"||t==="\x1B\x7F"||t==="\x1B\b")o.name="backspace",o.meta=t.charAt(0)==="\x1B";else if(t==="\x1B"||t==="\x1B\x1B")o.name="escape",o.meta=t.length===2;else if(t===" "||t==="\x1B ")o.name="space",o.meta=t.length===2;else if(t<="")o.name=String.fromCharCode(t.charCodeAt(0)+"a".charCodeAt(0)-1),o.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")o.name="number";else if(t.length===1&&t>="a"&&t<="z")o.name=t;else if(t.length===1&&t>="A"&&t<="Z")o.name=t.toLowerCase(),o.shift=!0;else if(r=Jut.exec(t))o.meta=!0,o.shift=/^[A-Z]$/.test(r[1]);else if(r=Vut.exec(t)){let a=[...t];a[0]==="\x1B"&&a[1]==="\x1B"&&(o.option=!0);let n=[r[1],r[2],r[4],r[6]].filter(Boolean).join(""),u=(r[3]||r[5]||1)-1;o.ctrl=!!(u&4),o.meta=!!(u&10),o.shift=!!(u&1),o.code=n,o.name=zut[n],o.shift=Xut(n)||o.shift,o.ctrl=Zut(n)||o.ctrl}return o};Gb.listen=(t={},e)=>{let{stdin:r}=t;if(!r||r!==process.stdin&&!r.isTTY)throw new Error("Invalid stream passed");let o=v0e.createInterface({terminal:!0,input:r});v0e.emitKeypressEvents(r,o);let a=(A,p)=>e(A,Gb(A,p),o),n=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on("keypress",a),o.resume(),()=>{r.isTTY&&r.setRawMode(n),r.removeListener("keypress",a),o.pause(),o.close()}};Gb.action=(t,e,r)=>{let o={...Kut,...r};return e.ctrl?(e.action=o.ctrl[e.name],e):e.option&&o.option?(e.action=o.option[e.name],e):e.shift?(e.action=o.shift[e.name],e):(e.action=o.keys[e.name],e)};D0e.exports=Gb});var x0e=U((Y3t,P0e)=>{"use strict";P0e.exports=t=>{t.timers=t.timers||{};let e=t.options.timers;if(!!e)for(let r of Object.keys(e)){let o=e[r];typeof o=="number"&&(o={interval:o}),$ut(t,r,o)}};function $ut(t,e,r={}){let o=t.timers[e]={name:e,start:Date.now(),ms:0,tick:0},a=r.interval||120;o.frames=r.frames||[],o.loading=!0;let n=setInterval(()=>{o.ms=Date.now()-o.start,o.tick++,t.render()},a);return o.stop=()=>{o.loading=!1,clearInterval(n)},Reflect.defineProperty(o,"interval",{value:n}),t.once("close",()=>o.stop()),o.stop}});var Q0e=U((K3t,b0e)=>{"use strict";var{define:eAt,width:tAt}=Fo(),F_=class{constructor(e){let r=e.options;eAt(this,"_prompt",e),this.type=e.type,this.name=e.name,this.message="",this.header="",this.footer="",this.error="",this.hint="",this.input="",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt="",this.buffer="",this.width=tAt(r.stdout||process.stdout),Object.assign(this,r),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=e.symbols,this.styles=e.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let e={...this};return e.status=this.status,e.buffer=Buffer.from(e.buffer),delete e.clone,e}set color(e){this._color=e}get color(){let e=this.prompt.styles;if(this.cancelled)return e.cancelled;if(this.submitted)return e.submitted;let r=this._color||e[this.status];return typeof r=="function"?r:e.pending}set loading(e){this._loading=e}get loading(){return typeof this._loading=="boolean"?this._loading:this.loadingChoices?"choices":!1}get status(){return this.cancelled?"cancelled":this.submitted?"submitted":"pending"}};b0e.exports=F_});var F0e=U((J3t,k0e)=>{"use strict";var R_=Fo(),Xs=Vc(),T_={default:Xs.noop,noop:Xs.noop,set inverse(t){this._inverse=t},get inverse(){return this._inverse||R_.inverse(this.primary)},set complement(t){this._complement=t},get complement(){return this._complement||R_.complement(this.primary)},primary:Xs.cyan,success:Xs.green,danger:Xs.magenta,strong:Xs.bold,warning:Xs.yellow,muted:Xs.dim,disabled:Xs.gray,dark:Xs.dim.gray,underline:Xs.underline,set info(t){this._info=t},get info(){return this._info||this.primary},set em(t){this._em=t},get em(){return this._em||this.primary.underline},set heading(t){this._heading=t},get heading(){return this._heading||this.muted.underline},set pending(t){this._pending=t},get pending(){return this._pending||this.primary},set submitted(t){this._submitted=t},get submitted(){return this._submitted||this.success},set cancelled(t){this._cancelled=t},get cancelled(){return this._cancelled||this.danger},set typing(t){this._typing=t},get typing(){return this._typing||this.dim},set placeholder(t){this._placeholder=t},get placeholder(){return this._placeholder||this.primary.dim},set highlight(t){this._highlight=t},get highlight(){return this._highlight||this.inverse}};T_.merge=(t={})=>{t.styles&&typeof t.styles.enabled=="boolean"&&(Xs.enabled=t.styles.enabled),t.styles&&typeof t.styles.visible=="boolean"&&(Xs.visible=t.styles.visible);let e=R_.merge({},T_,t.styles);delete e.merge;for(let r of Object.keys(Xs))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>Xs[r]});for(let r of Object.keys(Xs.styles))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>Xs[r]});return e};k0e.exports=T_});var T0e=U((V3t,R0e)=>{"use strict";var N_=process.platform==="win32",Wf=Vc(),rAt=Fo(),L_={...Wf.symbols,upDownDoubleArrow:"\u21D5",upDownDoubleArrow2:"\u2B0D",upDownArrow:"\u2195",asterisk:"*",asterism:"\u2042",bulletWhite:"\u25E6",electricArrow:"\u2301",ellipsisLarge:"\u22EF",ellipsisSmall:"\u2026",fullBlock:"\u2588",identicalTo:"\u2261",indicator:Wf.symbols.check,leftAngle:"\u2039",mark:"\u203B",minus:"\u2212",multiplication:"\xD7",obelus:"\xF7",percent:"%",pilcrow:"\xB6",pilcrow2:"\u2761",pencilUpRight:"\u2710",pencilDownRight:"\u270E",pencilRight:"\u270F",plus:"+",plusMinus:"\xB1",pointRight:"\u261E",rightAngle:"\u203A",section:"\xA7",hexagon:{off:"\u2B21",on:"\u2B22",disabled:"\u2B22"},ballot:{on:"\u2611",off:"\u2610",disabled:"\u2612"},stars:{on:"\u2605",off:"\u2606",disabled:"\u2606"},folder:{on:"\u25BC",off:"\u25B6",disabled:"\u25B6"},prefix:{pending:Wf.symbols.question,submitted:Wf.symbols.check,cancelled:Wf.symbols.cross},separator:{pending:Wf.symbols.pointerSmall,submitted:Wf.symbols.middot,cancelled:Wf.symbols.middot},radio:{off:N_?"( )":"\u25EF",on:N_?"(*)":"\u25C9",disabled:N_?"(|)":"\u24BE"},numbers:["\u24EA","\u2460","\u2461","\u2462","\u2463","\u2464","\u2465","\u2466","\u2467","\u2468","\u2469","\u246A","\u246B","\u246C","\u246D","\u246E","\u246F","\u2470","\u2471","\u2472","\u2473","\u3251","\u3252","\u3253","\u3254","\u3255","\u3256","\u3257","\u3258","\u3259","\u325A","\u325B","\u325C","\u325D","\u325E","\u325F","\u32B1","\u32B2","\u32B3","\u32B4","\u32B5","\u32B6","\u32B7","\u32B8","\u32B9","\u32BA","\u32BB","\u32BC","\u32BD","\u32BE","\u32BF"]};L_.merge=t=>{let e=rAt.merge({},Wf.symbols,L_,t.symbols);return delete e.merge,e};R0e.exports=L_});var L0e=U((z3t,N0e)=>{"use strict";var nAt=F0e(),iAt=T0e(),sAt=Fo();N0e.exports=t=>{t.options=sAt.merge({},t.options.theme,t.options),t.symbols=iAt.merge(t.options),t.styles=nAt.merge(t.options)}});var H0e=U((U0e,_0e)=>{"use strict";var O0e=process.env.TERM_PROGRAM==="Apple_Terminal",oAt=Vc(),O_=Fo(),zc=_0e.exports=U0e,Bi="\x1B[",M0e="\x07",M_=!1,B0=zc.code={bell:M0e,beep:M0e,beginning:`${Bi}G`,down:`${Bi}J`,esc:Bi,getPosition:`${Bi}6n`,hide:`${Bi}?25l`,line:`${Bi}2K`,lineEnd:`${Bi}K`,lineStart:`${Bi}1K`,restorePosition:Bi+(O0e?"8":"u"),savePosition:Bi+(O0e?"7":"s"),screen:`${Bi}2J`,show:`${Bi}?25h`,up:`${Bi}1J`},jd=zc.cursor={get hidden(){return M_},hide(){return M_=!0,B0.hide},show(){return M_=!1,B0.show},forward:(t=1)=>`${Bi}${t}C`,backward:(t=1)=>`${Bi}${t}D`,nextLine:(t=1)=>`${Bi}E`.repeat(t),prevLine:(t=1)=>`${Bi}F`.repeat(t),up:(t=1)=>t?`${Bi}${t}A`:"",down:(t=1)=>t?`${Bi}${t}B`:"",right:(t=1)=>t?`${Bi}${t}C`:"",left:(t=1)=>t?`${Bi}${t}D`:"",to(t,e){return e?`${Bi}${e+1};${t+1}H`:`${Bi}${t+1}G`},move(t=0,e=0){let r="";return r+=t<0?jd.left(-t):t>0?jd.right(t):"",r+=e<0?jd.up(-e):e>0?jd.down(e):"",r},restore(t={}){let{after:e,cursor:r,initial:o,input:a,prompt:n,size:u,value:A}=t;if(o=O_.isPrimitive(o)?String(o):"",a=O_.isPrimitive(a)?String(a):"",A=O_.isPrimitive(A)?String(A):"",u){let p=zc.cursor.up(u)+zc.cursor.to(n.length),h=a.length-r;return h>0&&(p+=zc.cursor.left(h)),p}if(A||e){let p=!a&&!!o?-o.length:-a.length+r;return e&&(p-=e.length),a===""&&o&&!n.includes(o)&&(p+=o.length),zc.cursor.move(p)}}},U_=zc.erase={screen:B0.screen,up:B0.up,down:B0.down,line:B0.line,lineEnd:B0.lineEnd,lineStart:B0.lineStart,lines(t){let e="";for(let r=0;r<t;r++)e+=zc.erase.line+(r<t-1?zc.cursor.up(1):"");return t&&(e+=zc.code.beginning),e}};zc.clear=(t="",e=process.stdout.columns)=>{if(!e)return U_.line+jd.to(0);let r=n=>[...oAt.unstyle(n)].length,o=t.split(/\r?\n/),a=0;for(let n of o)a+=1+Math.floor(Math.max(r(n)-1,0)/e);return(U_.line+jd.prevLine()).repeat(a-1)+U_.line+jd.to(0)}});var oC=U((X3t,j0e)=>{"use strict";var aAt=Ie("events"),q0e=Vc(),__=S0e(),lAt=x0e(),cAt=Q0e(),uAt=L0e(),Fa=Fo(),Gd=H0e(),j1=class extends aAt{constructor(e={}){super(),this.name=e.name,this.type=e.type,this.options=e,uAt(this),lAt(this),this.state=new cAt(this),this.initial=[e.initial,e.default].find(r=>r!=null),this.stdout=e.stdout||process.stdout,this.stdin=e.stdin||process.stdin,this.scale=e.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=fAt(this.options.margin),this.setMaxListeners(0),AAt(this)}async keypress(e,r={}){this.keypressed=!0;let o=__.action(e,__(e,r),this.options.actions);this.state.keypress=o,this.emit("keypress",e,o),this.emit("state",this.state.clone());let a=this.options[o.action]||this[o.action]||this.dispatch;if(typeof a=="function")return await a.call(this,e,o);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit("alert"):this.stdout.write(Gd.code.beep)}cursorHide(){this.stdout.write(Gd.cursor.hide()),Fa.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(Gd.cursor.show())}write(e){!e||(this.stdout&&this.state.show!==!1&&this.stdout.write(e),this.state.buffer+=e)}clear(e=0){let r=this.state.buffer;this.state.buffer="",!(!r&&!e||this.options.show===!1)&&this.stdout.write(Gd.cursor.down(e)+Gd.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:e,after:r,rest:o}=this.sections(),{cursor:a,initial:n="",input:u="",value:A=""}=this,p=this.state.size=o.length,h={after:r,cursor:a,initial:n,input:u,prompt:e,size:p,value:A},C=Gd.cursor.restore(h);C&&this.stdout.write(C)}sections(){let{buffer:e,input:r,prompt:o}=this.state;o=q0e.unstyle(o);let a=q0e.unstyle(e),n=a.indexOf(o),u=a.slice(0,n),p=a.slice(n).split(` | 213 | `)o.name="enter";else if(t===" ")o.name="tab";else if(t==="\b"||t==="\x7F"||t==="\x1B\x7F"||t==="\x1B\b")o.name="backspace",o.meta=t.charAt(0)==="\x1B";else if(t==="\x1B"||t==="\x1B\x1B")o.name="escape",o.meta=t.length===2;else if(t===" "||t==="\x1B ")o.name="space",o.meta=t.length===2;else if(t<="")o.name=String.fromCharCode(t.charCodeAt(0)+"a".charCodeAt(0)-1),o.ctrl=!0;else if(t.length===1&&t>="0"&&t<="9")o.name="number";else if(t.length===1&&t>="a"&&t<="z")o.name=t;else if(t.length===1&&t>="A"&&t<="Z")o.name=t.toLowerCase(),o.shift=!0;else if(r=cAt.exec(t))o.meta=!0,o.shift=/^[A-Z]$/.test(r[1]);else if(r=uAt.exec(t)){let a=[...t];a[0]==="\x1B"&&a[1]==="\x1B"&&(o.option=!0);let n=[r[1],r[2],r[4],r[6]].filter(Boolean).join(""),u=(r[3]||r[5]||1)-1;o.ctrl=!!(u&4),o.meta=!!(u&10),o.shift=!!(u&1),o.code=n,o.name=AAt[n],o.shift=fAt(n)||o.shift,o.ctrl=pAt(n)||o.ctrl}return o};eQ.listen=(t={},e)=>{let{stdin:r}=t;if(!r||r!==process.stdin&&!r.isTTY)throw new Error("Invalid stream passed");let o=k0e.createInterface({terminal:!0,input:r});k0e.emitKeypressEvents(r,o);let a=(A,p)=>e(A,eQ(A,p),o),n=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on("keypress",a),o.resume(),()=>{r.isTTY&&r.setRawMode(n),r.removeListener("keypress",a),o.pause(),o.close()}};eQ.action=(t,e,r)=>{let o={...lAt,...r};return e.ctrl?(e.action=o.ctrl[e.name],e):e.option&&o.option?(e.action=o.option[e.name],e):e.shift?(e.action=o.shift[e.name],e):(e.action=o.keys[e.name],e)};F0e.exports=eQ});var N0e=U((c_t,T0e)=>{"use strict";T0e.exports=t=>{t.timers=t.timers||{};let e=t.options.timers;if(!!e)for(let r of Object.keys(e)){let o=e[r];typeof o=="number"&&(o={interval:o}),hAt(t,r,o)}};function hAt(t,e,r={}){let o=t.timers[e]={name:e,start:Date.now(),ms:0,tick:0},a=r.interval||120;o.frames=r.frames||[],o.loading=!0;let n=setInterval(()=>{o.ms=Date.now()-o.start,o.tick++,t.render()},a);return o.stop=()=>{o.loading=!1,clearInterval(n)},Reflect.defineProperty(o,"interval",{value:n}),t.once("close",()=>o.stop()),o.stop}});var O0e=U((u_t,L0e)=>{"use strict";var{define:gAt,width:dAt}=Fo(),N_=class{constructor(e){let r=e.options;gAt(this,"_prompt",e),this.type=e.type,this.name=e.name,this.message="",this.header="",this.footer="",this.error="",this.hint="",this.input="",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt="",this.buffer="",this.width=dAt(r.stdout||process.stdout),Object.assign(this,r),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=e.symbols,this.styles=e.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let e={...this};return e.status=this.status,e.buffer=Buffer.from(e.buffer),delete e.clone,e}set color(e){this._color=e}get color(){let e=this.prompt.styles;if(this.cancelled)return e.cancelled;if(this.submitted)return e.submitted;let r=this._color||e[this.status];return typeof r=="function"?r:e.pending}set loading(e){this._loading=e}get loading(){return typeof this._loading=="boolean"?this._loading:this.loadingChoices?"choices":!1}get status(){return this.cancelled?"cancelled":this.submitted?"submitted":"pending"}};L0e.exports=N_});var U0e=U((A_t,M0e)=>{"use strict";var L_=Fo(),Xs=Zc(),O_={default:Xs.noop,noop:Xs.noop,set inverse(t){this._inverse=t},get inverse(){return this._inverse||L_.inverse(this.primary)},set complement(t){this._complement=t},get complement(){return this._complement||L_.complement(this.primary)},primary:Xs.cyan,success:Xs.green,danger:Xs.magenta,strong:Xs.bold,warning:Xs.yellow,muted:Xs.dim,disabled:Xs.gray,dark:Xs.dim.gray,underline:Xs.underline,set info(t){this._info=t},get info(){return this._info||this.primary},set em(t){this._em=t},get em(){return this._em||this.primary.underline},set heading(t){this._heading=t},get heading(){return this._heading||this.muted.underline},set pending(t){this._pending=t},get pending(){return this._pending||this.primary},set submitted(t){this._submitted=t},get submitted(){return this._submitted||this.success},set cancelled(t){this._cancelled=t},get cancelled(){return this._cancelled||this.danger},set typing(t){this._typing=t},get typing(){return this._typing||this.dim},set placeholder(t){this._placeholder=t},get placeholder(){return this._placeholder||this.primary.dim},set highlight(t){this._highlight=t},get highlight(){return this._highlight||this.inverse}};O_.merge=(t={})=>{t.styles&&typeof t.styles.enabled=="boolean"&&(Xs.enabled=t.styles.enabled),t.styles&&typeof t.styles.visible=="boolean"&&(Xs.visible=t.styles.visible);let e=L_.merge({},O_,t.styles);delete e.merge;for(let r of Object.keys(Xs))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>Xs[r]});for(let r of Object.keys(Xs.styles))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>Xs[r]});return e};M0e.exports=O_});var H0e=U((f_t,_0e)=>{"use strict";var M_=process.platform==="win32",Jf=Zc(),mAt=Fo(),U_={...Jf.symbols,upDownDoubleArrow:"\u21D5",upDownDoubleArrow2:"\u2B0D",upDownArrow:"\u2195",asterisk:"*",asterism:"\u2042",bulletWhite:"\u25E6",electricArrow:"\u2301",ellipsisLarge:"\u22EF",ellipsisSmall:"\u2026",fullBlock:"\u2588",identicalTo:"\u2261",indicator:Jf.symbols.check,leftAngle:"\u2039",mark:"\u203B",minus:"\u2212",multiplication:"\xD7",obelus:"\xF7",percent:"%",pilcrow:"\xB6",pilcrow2:"\u2761",pencilUpRight:"\u2710",pencilDownRight:"\u270E",pencilRight:"\u270F",plus:"+",plusMinus:"\xB1",pointRight:"\u261E",rightAngle:"\u203A",section:"\xA7",hexagon:{off:"\u2B21",on:"\u2B22",disabled:"\u2B22"},ballot:{on:"\u2611",off:"\u2610",disabled:"\u2612"},stars:{on:"\u2605",off:"\u2606",disabled:"\u2606"},folder:{on:"\u25BC",off:"\u25B6",disabled:"\u25B6"},prefix:{pending:Jf.symbols.question,submitted:Jf.symbols.check,cancelled:Jf.symbols.cross},separator:{pending:Jf.symbols.pointerSmall,submitted:Jf.symbols.middot,cancelled:Jf.symbols.middot},radio:{off:M_?"( )":"\u25EF",on:M_?"(*)":"\u25C9",disabled:M_?"(|)":"\u24BE"},numbers:["\u24EA","\u2460","\u2461","\u2462","\u2463","\u2464","\u2465","\u2466","\u2467","\u2468","\u2469","\u246A","\u246B","\u246C","\u246D","\u246E","\u246F","\u2470","\u2471","\u2472","\u2473","\u3251","\u3252","\u3253","\u3254","\u3255","\u3256","\u3257","\u3258","\u3259","\u325A","\u325B","\u325C","\u325D","\u325E","\u325F","\u32B1","\u32B2","\u32B3","\u32B4","\u32B5","\u32B6","\u32B7","\u32B8","\u32B9","\u32BA","\u32BB","\u32BC","\u32BD","\u32BE","\u32BF"]};U_.merge=t=>{let e=mAt.merge({},Jf.symbols,U_,t.symbols);return delete e.merge,e};_0e.exports=U_});var j0e=U((p_t,q0e)=>{"use strict";var yAt=U0e(),EAt=H0e(),CAt=Fo();q0e.exports=t=>{t.options=CAt.merge({},t.options.theme,t.options),t.symbols=EAt.merge(t.options),t.styles=yAt.merge(t.options)}});var V0e=U((Y0e,K0e)=>{"use strict";var G0e=process.env.TERM_PROGRAM==="Apple_Terminal",IAt=Zc(),__=Fo(),$c=K0e.exports=Y0e,Bi="\x1B[",W0e="\x07",H_=!1,D0=$c.code={bell:W0e,beep:W0e,beginning:`${Bi}G`,down:`${Bi}J`,esc:Bi,getPosition:`${Bi}6n`,hide:`${Bi}?25l`,line:`${Bi}2K`,lineEnd:`${Bi}K`,lineStart:`${Bi}1K`,restorePosition:Bi+(G0e?"8":"u"),savePosition:Bi+(G0e?"7":"s"),screen:`${Bi}2J`,show:`${Bi}?25h`,up:`${Bi}1J`},Kd=$c.cursor={get hidden(){return H_},hide(){return H_=!0,D0.hide},show(){return H_=!1,D0.show},forward:(t=1)=>`${Bi}${t}C`,backward:(t=1)=>`${Bi}${t}D`,nextLine:(t=1)=>`${Bi}E`.repeat(t),prevLine:(t=1)=>`${Bi}F`.repeat(t),up:(t=1)=>t?`${Bi}${t}A`:"",down:(t=1)=>t?`${Bi}${t}B`:"",right:(t=1)=>t?`${Bi}${t}C`:"",left:(t=1)=>t?`${Bi}${t}D`:"",to(t,e){return e?`${Bi}${e+1};${t+1}H`:`${Bi}${t+1}G`},move(t=0,e=0){let r="";return r+=t<0?Kd.left(-t):t>0?Kd.right(t):"",r+=e<0?Kd.up(-e):e>0?Kd.down(e):"",r},restore(t={}){let{after:e,cursor:r,initial:o,input:a,prompt:n,size:u,value:A}=t;if(o=__.isPrimitive(o)?String(o):"",a=__.isPrimitive(a)?String(a):"",A=__.isPrimitive(A)?String(A):"",u){let p=$c.cursor.up(u)+$c.cursor.to(n.length),h=a.length-r;return h>0&&(p+=$c.cursor.left(h)),p}if(A||e){let p=!a&&!!o?-o.length:-a.length+r;return e&&(p-=e.length),a===""&&o&&!n.includes(o)&&(p+=o.length),$c.cursor.move(p)}}},q_=$c.erase={screen:D0.screen,up:D0.up,down:D0.down,line:D0.line,lineEnd:D0.lineEnd,lineStart:D0.lineStart,lines(t){let e="";for(let r=0;r<t;r++)e+=$c.erase.line+(r<t-1?$c.cursor.up(1):"");return t&&(e+=$c.code.beginning),e}};$c.clear=(t="",e=process.stdout.columns)=>{if(!e)return q_.line+Kd.to(0);let r=n=>[...IAt.unstyle(n)].length,o=t.split(/\r?\n/),a=0;for(let n of o)a+=1+Math.floor(Math.max(r(n)-1,0)/e);return(q_.line+Kd.prevLine()).repeat(a-1)+q_.line+Kd.to(0)}});var AC=U((h_t,z0e)=>{"use strict";var wAt=Ie("events"),J0e=Zc(),j_=R0e(),BAt=N0e(),vAt=O0e(),DAt=j0e(),Ta=Fo(),Vd=V0e(),J1=class extends wAt{constructor(e={}){super(),this.name=e.name,this.type=e.type,this.options=e,DAt(this),BAt(this),this.state=new vAt(this),this.initial=[e.initial,e.default].find(r=>r!=null),this.stdout=e.stdout||process.stdout,this.stdin=e.stdin||process.stdin,this.scale=e.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=PAt(this.options.margin),this.setMaxListeners(0),SAt(this)}async keypress(e,r={}){this.keypressed=!0;let o=j_.action(e,j_(e,r),this.options.actions);this.state.keypress=o,this.emit("keypress",e,o),this.emit("state",this.state.clone());let a=this.options[o.action]||this[o.action]||this.dispatch;if(typeof a=="function")return await a.call(this,e,o);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit("alert"):this.stdout.write(Vd.code.beep)}cursorHide(){this.stdout.write(Vd.cursor.hide()),Ta.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(Vd.cursor.show())}write(e){!e||(this.stdout&&this.state.show!==!1&&this.stdout.write(e),this.state.buffer+=e)}clear(e=0){let r=this.state.buffer;this.state.buffer="",!(!r&&!e||this.options.show===!1)&&this.stdout.write(Vd.cursor.down(e)+Vd.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:e,after:r,rest:o}=this.sections(),{cursor:a,initial:n="",input:u="",value:A=""}=this,p=this.state.size=o.length,h={after:r,cursor:a,initial:n,input:u,prompt:e,size:p,value:A},C=Vd.cursor.restore(h);C&&this.stdout.write(C)}sections(){let{buffer:e,input:r,prompt:o}=this.state;o=J0e.unstyle(o);let a=J0e.unstyle(e),n=a.indexOf(o),u=a.slice(0,n),p=a.slice(n).split(` |
214 | `),h=p[0],C=p[p.length-1],v=(o+(r?" "+r:"")).length,b=v<h.length?h.slice(v+1):"";return{header:u,prompt:h,after:b,rest:p.slice(1),last:C}}async submit(){this.state.submitted=!0,this.state.validating=!0,this.options.onSubmit&&await this.options.onSubmit.call(this,this.name,this.value,this);let e=this.state.error||await this.validate(this.value,this.state);if(e!==!0){let r=` | 214 | `),h=p[0],C=p[p.length-1],v=(o+(r?" "+r:"")).length,b=v<h.length?h.slice(v+1):"";return{header:u,prompt:h,after:b,rest:p.slice(1),last:C}}async submit(){this.state.submitted=!0,this.state.validating=!0,this.options.onSubmit&&await this.options.onSubmit.call(this,this.name,this.value,this);let e=this.state.error||await this.validate(this.value,this.state);if(e!==!0){let r=` |
215 | `+this.symbols.pointer+" ";typeof e=="string"?r+=e.trim():r+="Invalid input",this.state.error=` | 215 | `+this.symbols.pointer+" ";typeof e=="string"?r+=e.trim():r+="Invalid input",this.state.error=` |
216 | `+this.styles.danger(r),this.state.submitted=!1,await this.render(),await this.alert(),this.state.validating=!1,this.state.error=void 0;return}this.state.validating=!1,await this.render(),await this.close(),this.value=await this.result(this.value),this.emit("submit",this.value)}async cancel(e){this.state.cancelled=this.state.submitted=!0,await this.render(),await this.close(),typeof this.options.onCancel=="function"&&await this.options.onCancel.call(this,this.name,this.value,this),this.emit("cancel",await this.error(e))}async close(){this.state.closed=!0;try{let e=this.sections(),r=Math.ceil(e.prompt.length/this.width);e.rest&&this.write(Gd.cursor.down(e.rest.length)),this.write(` | 216 | `+this.styles.danger(r),this.state.submitted=!1,await this.render(),await this.alert(),this.state.validating=!1,this.state.error=void 0;return}this.state.validating=!1,await this.render(),await this.close(),this.value=await this.result(this.value),this.emit("submit",this.value)}async cancel(e){this.state.cancelled=this.state.submitted=!0,await this.render(),await this.close(),typeof this.options.onCancel=="function"&&await this.options.onCancel.call(this,this.name,this.value,this),this.emit("cancel",await this.error(e))}async close(){this.state.closed=!0;try{let e=this.sections(),r=Math.ceil(e.prompt.length/this.width);e.rest&&this.write(Vd.cursor.down(e.rest.length)),this.write(` |
217 | `.repeat(r))}catch{}this.emit("close")}start(){!this.stop&&this.options.show!==!1&&(this.stop=__.listen(this,this.keypress.bind(this)),this.once("close",this.stop))}async skip(){return this.skipped=this.options.skip===!0,typeof this.options.skip=="function"&&(this.skipped=await this.options.skip.call(this,this.name,this.value)),this.skipped}async initialize(){let{format:e,options:r,result:o}=this;if(this.format=()=>e.call(this,this.value),this.result=()=>o.call(this,this.value),typeof r.initial=="function"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun=="function"&&await r.onRun.call(this,this),typeof r.onSubmit=="function"){let a=r.onSubmit.bind(this),n=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await a(this.name,this.value,this),n())}await this.start(),await this.render()}render(){throw new Error("expected prompt to have a custom render method")}run(){return new Promise(async(e,r)=>{if(this.once("submit",e),this.once("cancel",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit("run")})}async element(e,r,o){let{options:a,state:n,symbols:u,timers:A}=this,p=A&&A[e];n.timer=p;let h=a[e]||n[e]||u[e],C=r&&r[e]!=null?r[e]:await h;if(C==="")return C;let w=await this.resolve(C,n,r,o);return!w&&r&&r[e]?this.resolve(h,n,r,o):w}async prefix(){let e=await this.element("prefix")||this.symbols,r=this.timers&&this.timers.prefix,o=this.state;return o.timer=r,Fa.isObject(e)&&(e=e[o.status]||e.pending),Fa.hasColor(e)?e:(this.styles[o.status]||this.styles.pending)(e)}async message(){let e=await this.element("message");return Fa.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element("separator")||this.symbols,r=this.timers&&this.timers.separator,o=this.state;o.timer=r;let a=e[o.status]||e.pending||o.separator,n=await this.resolve(a,o);return Fa.isObject(n)&&(n=n[o.status]||n.pending),Fa.hasColor(n)?n:this.styles.muted(n)}async pointer(e,r){let o=await this.element("pointer",e,r);if(typeof o=="string"&&Fa.hasColor(o))return o;if(o){let a=this.styles,n=this.index===r,u=n?a.primary:h=>h,A=await this.resolve(o[n?"on":"off"]||o,this.state),p=Fa.hasColor(A)?A:u(A);return n?p:" ".repeat(A.length)}}async indicator(e,r){let o=await this.element("indicator",e,r);if(typeof o=="string"&&Fa.hasColor(o))return o;if(o){let a=this.styles,n=e.enabled===!0,u=n?a.success:a.dark,A=o[n?"on":"off"]||o;return Fa.hasColor(A)?A:u(A)}return""}body(){return null}footer(){if(this.state.status==="pending")return this.element("footer")}header(){if(this.state.status==="pending")return this.element("header")}async hint(){if(this.state.status==="pending"&&!this.isValue(this.state.input)){let e=await this.element("hint");return Fa.hasColor(e)?e:this.styles.muted(e)}}error(e){return this.state.submitted?"":e||this.state.error}format(e){return e}result(e){return e}validate(e){return this.options.required===!0?this.isValue(e):!0}isValue(e){return e!=null&&e!==""}resolve(e,...r){return Fa.resolve(this,e,...r)}get base(){return j1.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||Fa.height(this.stdout,25)}get width(){return this.options.columns||Fa.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(e){this.state.cursor=e}get cursor(){return this.state.cursor}set input(e){this.state.input=e}get input(){return this.state.input}set value(e){this.state.value=e}get value(){let{input:e,value:r}=this.state,o=[r,e].find(this.isValue.bind(this));return this.isValue(o)?o:this.initial}static get prompt(){return e=>new this(e).run()}};function AAt(t){let e=a=>t[a]===void 0||typeof t[a]=="function",r=["actions","choices","initial","margin","roles","styles","symbols","theme","timers","value"],o=["body","footer","error","header","hint","indicator","message","prefix","separator","skip"];for(let a of Object.keys(t.options)){if(r.includes(a)||/^on[A-Z]/.test(a))continue;let n=t.options[a];typeof n=="function"&&e(a)?o.includes(a)||(t[a]=n.bind(t)):typeof t[a]!="function"&&(t[a]=n)}}function fAt(t){typeof t=="number"&&(t=[t,t,t,t]);let e=[].concat(t||[]),r=a=>a%2===0?` | 217 | `.repeat(r))}catch{}this.emit("close")}start(){!this.stop&&this.options.show!==!1&&(this.stop=j_.listen(this,this.keypress.bind(this)),this.once("close",this.stop))}async skip(){return this.skipped=this.options.skip===!0,typeof this.options.skip=="function"&&(this.skipped=await this.options.skip.call(this,this.name,this.value)),this.skipped}async initialize(){let{format:e,options:r,result:o}=this;if(this.format=()=>e.call(this,this.value),this.result=()=>o.call(this,this.value),typeof r.initial=="function"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun=="function"&&await r.onRun.call(this,this),typeof r.onSubmit=="function"){let a=r.onSubmit.bind(this),n=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await a(this.name,this.value,this),n())}await this.start(),await this.render()}render(){throw new Error("expected prompt to have a custom render method")}run(){return new Promise(async(e,r)=>{if(this.once("submit",e),this.once("cancel",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit("run")})}async element(e,r,o){let{options:a,state:n,symbols:u,timers:A}=this,p=A&&A[e];n.timer=p;let h=a[e]||n[e]||u[e],C=r&&r[e]!=null?r[e]:await h;if(C==="")return C;let w=await this.resolve(C,n,r,o);return!w&&r&&r[e]?this.resolve(h,n,r,o):w}async prefix(){let e=await this.element("prefix")||this.symbols,r=this.timers&&this.timers.prefix,o=this.state;return o.timer=r,Ta.isObject(e)&&(e=e[o.status]||e.pending),Ta.hasColor(e)?e:(this.styles[o.status]||this.styles.pending)(e)}async message(){let e=await this.element("message");return Ta.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element("separator")||this.symbols,r=this.timers&&this.timers.separator,o=this.state;o.timer=r;let a=e[o.status]||e.pending||o.separator,n=await this.resolve(a,o);return Ta.isObject(n)&&(n=n[o.status]||n.pending),Ta.hasColor(n)?n:this.styles.muted(n)}async pointer(e,r){let o=await this.element("pointer",e,r);if(typeof o=="string"&&Ta.hasColor(o))return o;if(o){let a=this.styles,n=this.index===r,u=n?a.primary:h=>h,A=await this.resolve(o[n?"on":"off"]||o,this.state),p=Ta.hasColor(A)?A:u(A);return n?p:" ".repeat(A.length)}}async indicator(e,r){let o=await this.element("indicator",e,r);if(typeof o=="string"&&Ta.hasColor(o))return o;if(o){let a=this.styles,n=e.enabled===!0,u=n?a.success:a.dark,A=o[n?"on":"off"]||o;return Ta.hasColor(A)?A:u(A)}return""}body(){return null}footer(){if(this.state.status==="pending")return this.element("footer")}header(){if(this.state.status==="pending")return this.element("header")}async hint(){if(this.state.status==="pending"&&!this.isValue(this.state.input)){let e=await this.element("hint");return Ta.hasColor(e)?e:this.styles.muted(e)}}error(e){return this.state.submitted?"":e||this.state.error}format(e){return e}result(e){return e}validate(e){return this.options.required===!0?this.isValue(e):!0}isValue(e){return e!=null&&e!==""}resolve(e,...r){return Ta.resolve(this,e,...r)}get base(){return J1.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||Ta.height(this.stdout,25)}get width(){return this.options.columns||Ta.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(e){this.state.cursor=e}get cursor(){return this.state.cursor}set input(e){this.state.input=e}get input(){return this.state.input}set value(e){this.state.value=e}get value(){let{input:e,value:r}=this.state,o=[r,e].find(this.isValue.bind(this));return this.isValue(o)?o:this.initial}static get prompt(){return e=>new this(e).run()}};function SAt(t){let e=a=>t[a]===void 0||typeof t[a]=="function",r=["actions","choices","initial","margin","roles","styles","symbols","theme","timers","value"],o=["body","footer","error","header","hint","indicator","message","prefix","separator","skip"];for(let a of Object.keys(t.options)){if(r.includes(a)||/^on[A-Z]/.test(a))continue;let n=t.options[a];typeof n=="function"&&e(a)?o.includes(a)||(t[a]=n.bind(t)):typeof t[a]!="function"&&(t[a]=n)}}function PAt(t){typeof t=="number"&&(t=[t,t,t,t]);let e=[].concat(t||[]),r=a=>a%2===0?` |
218 | `:" ",o=[];for(let a=0;a<4;a++){let n=r(a);e[a]?o.push(n.repeat(e[a])):o.push("")}return o}j0e.exports=j1});var Y0e=U((Z3t,W0e)=>{"use strict";var pAt=Fo(),G0e={default(t,e){return e},checkbox(t,e){throw new Error("checkbox role is not implemented yet")},editable(t,e){throw new Error("editable role is not implemented yet")},expandable(t,e){throw new Error("expandable role is not implemented yet")},heading(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||"",e},input(t,e){throw new Error("input role is not implemented yet")},option(t,e){return G0e.default(t,e)},radio(t,e){throw new Error("radio role is not implemented yet")},separator(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||t.symbols.line.repeat(5),e},spacer(t,e){return e}};W0e.exports=(t,e={})=>{let r=pAt.merge({},G0e,e.roles);return r[t]||r.default}});var G1=U(($3t,V0e)=>{"use strict";var hAt=Vc(),gAt=oC(),dAt=Y0e(),Wb=Fo(),{reorder:H_,scrollUp:mAt,scrollDown:yAt,isObject:K0e,swap:EAt}=Wb,q_=class extends gAt{constructor(e){super(e),this.cursorHide(),this.maxSelected=e.maxSelected||1/0,this.multiple=e.multiple||!1,this.initial=e.initial||0,this.delay=e.delay||0,this.longest=0,this.num=""}async initialize(){typeof this.options.initial=="function"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:e,initial:r,autofocus:o,suggest:a}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(n=>n.enabled=!1),typeof a!="function"&&this.selectable.length===0)throw new Error("At least one choice must be selectable");K0e(r)&&(r=Object.keys(r)),Array.isArray(r)?(o!=null&&(this.index=this.findIndex(o)),r.forEach(n=>this.enable(this.find(n))),await this.render()):(o!=null&&(r=o),typeof r=="string"&&(r=this.findIndex(r)),typeof r=="number"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,r){this.state.loadingChoices=!0;let o=[],a=0,n=async(u,A)=>{typeof u=="function"&&(u=await u.call(this)),u instanceof Promise&&(u=await u);for(let p=0;p<u.length;p++){let h=u[p]=await this.toChoice(u[p],a++,A);o.push(h),h.choices&&await n(h.choices,h)}return o};return n(e,r).then(u=>(this.state.loadingChoices=!1,u))}async toChoice(e,r,o){if(typeof e=="function"&&(e=await e.call(this,this)),e instanceof Promise&&(e=await e),typeof e=="string"&&(e={name:e}),e.normalized)return e;e.normalized=!0;let a=e.value;if(e=dAt(e.role,this.options)(this,e),typeof e.disabled=="string"&&!e.hint&&(e.hint=e.disabled,e.disabled=!0),e.disabled===!0&&e.hint==null&&(e.hint="(disabled)"),e.index!=null)return e;e.name=e.name||e.key||e.title||e.value||e.message,e.message=e.message||e.name||"",e.value=[e.value,e.name].find(this.isValue.bind(this)),e.input="",e.index=r,e.cursor=0,Wb.define(e,"parent",o),e.level=o?o.level+1:1,e.indent==null&&(e.indent=o?o.indent+" ":e.indent||""),e.path=o?o.path+"."+e.name:e.name,e.enabled=!!(this.multiple&&!this.isDisabled(e)&&(e.enabled||this.isSelected(e))),this.isDisabled(e)||(this.longest=Math.max(this.longest,hAt.unstyle(e.message).length));let u={...e};return e.reset=(A=u.input,p=u.value)=>{for(let h of Object.keys(u))e[h]=u[h];e.input=A,e.value=p},a==null&&typeof e.initial=="function"&&(e.input=await e.initial.call(this,this.state,e,r)),e}async onChoice(e,r){this.emit("choice",e,r,this),typeof e.onChoice=="function"&&await e.onChoice.call(this,this.state,e,r)}async addChoice(e,r,o){let a=await this.toChoice(e,r,o);return this.choices.push(a),this.index=this.choices.length-1,this.limit=this.choices.length,a}async newItem(e,r,o){let a={name:"New choice name?",editable:!0,newChoice:!0,...e},n=await this.addChoice(a,r,o);return n.updateChoice=()=>{delete n.newChoice,n.name=n.message=n.input,n.input="",n.cursor=0},this.render()}indent(e){return e.indent==null?e.level>1?" ".repeat(e.level-1):"":e.indent}dispatch(e,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(e,r){return typeof r!="boolean"&&(r=e.enabled),r&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=r&&!this.isDisabled(e),e)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelected<this.choices.length)return this.alert();let e=this.selectable.every(r=>r.enabled);return this.choices.forEach(r=>r.enabled=!e),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(e=>e.enabled=!e.enabled),this.render())}g(e=this.focused){return this.choices.some(r=>!!r.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,r){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!="boolean"&&(r=!e.enabled),e.enabled=r,e.choices&&e.choices.forEach(a=>this.toggle(a,r));let o=e.parent;for(;o;){let a=o.choices.filter(n=>this.isDisabled(n));o.enabled=a.every(n=>n.enabled===!0),o=o.parent}return J0e(this,this.choices),this.emit("toggle",e,this),e}enable(e){return this.selected.length>=this.maxSelected?this.alert():(e.enabled=!this.isDisabled(e),e.choices&&e.choices.forEach(this.enable.bind(this)),e)}disable(e){return e.enabled=!1,e.choices&&e.choices.forEach(this.disable.bind(this)),e}number(e){this.num+=e;let r=o=>{let a=Number(o);if(a>this.choices.length-1)return this.alert();let n=this.focused,u=this.choices.find(A=>a===A.index);if(!u.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(u)===-1){let A=H_(this.choices),p=A.indexOf(u);if(n.index>p){let h=A.slice(p,p+this.limit),C=A.filter(w=>!h.includes(w));this.choices=h.concat(C)}else{let h=p-this.limit+1;this.choices=A.slice(h).concat(A.slice(0,h))}}return this.index=this.choices.indexOf(u),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(o=>{let a=this.choices.length,n=this.num,u=(A=!1,p)=>{clearTimeout(this.numberTimeout),A&&(p=r(n)),this.num="",o(p)};if(n==="0"||n.length===1&&Number(n+"0")>a)return u(!0);if(Number(n)>a)return u(!1,this.alert());this.numberTimeout=setTimeout(()=>u(!0),this.delay)})}home(){return this.choices=H_(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,r=H_(this.choices);return this.choices=r.slice(e).concat(r.slice(0,e)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let e=this.choices.length,r=this.visible.length,o=this.index;return this.options.scroll===!1&&o===0?this.alert():e>r&&o===0?this.scrollUp():(this.index=(o-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,r=this.visible.length,o=this.index;return this.options.scroll===!1&&o===r-1?this.alert():e>r&&o===r-1?this.scrollDown():(this.index=(o+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=mAt(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=yAt(this.choices),this.index=e,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(e){EAt(this.choices,this.index,e)}isDisabled(e=this.focused){return e&&["disabled","collapsed","hidden","completing","readonly"].some(o=>e[o]===!0)?!0:e&&e.role==="heading"}isEnabled(e=this.focused){if(Array.isArray(e))return e.every(r=>this.isEnabled(r));if(e.choices){let r=e.choices.filter(o=>!this.isDisabled(o));return e.enabled&&r.every(o=>this.isEnabled(o))}return e.enabled&&!this.isDisabled(e)}isChoice(e,r){return e.name===r||e.index===Number(r)}isSelected(e){return Array.isArray(this.initial)?this.initial.some(r=>this.isChoice(e,r)):this.isChoice(e,this.initial)}map(e=[],r="value"){return[].concat(e||[]).reduce((o,a)=>(o[a]=this.find(a,r),o),{})}filter(e,r){let a=typeof e=="function"?e:(A,p)=>[A.name,p].includes(e),u=(this.options.multiple?this.state._choices:this.choices).filter(a);return r?u.map(A=>A[r]):u}find(e,r){if(K0e(e))return r?e[r]:e;let a=typeof e=="function"?e:(u,A)=>[u.name,A].includes(e),n=this.choices.find(a);if(n)return r?n[r]:n}findIndex(e){return this.choices.indexOf(this.find(e))}async submit(){let e=this.focused;if(!e)return this.alert();if(e.newChoice)return e.input?(e.updateChoice(),this.render()):this.alert();if(this.choices.some(u=>u.newChoice))return this.alert();let{reorder:r,sort:o}=this.options,a=this.multiple===!0,n=this.selected;return n===void 0?this.alert():(Array.isArray(n)&&r!==!1&&o!==!0&&(n=Wb.reorder(n)),this.value=a?n.map(u=>u.name):n.name,super.submit())}set choices(e=[]){this.state._choices=this.state._choices||[],this.state.choices=e;for(let r of e)this.state._choices.some(o=>o.name===r.name)||this.state._choices.push(r);if(!this._initial&&this.options.initial){this._initial=!0;let r=this.initial;if(typeof r=="string"||typeof r=="number"){let o=this.find(r);o&&(this.initial=o.index,this.focus(o,!0))}}}get choices(){return J0e(this,this.state.choices||[])}set visible(e){this.state.visible=e}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(e){this.state.limit=e}get limit(){let{state:e,options:r,choices:o}=this,a=e.limit||this._limit||r.limit||o.length;return Math.min(a,this.height)}set value(e){super.value=e}get value(){return typeof super.value!="string"&&super.value===this.initial?this.input:super.value}set index(e){this.state.index=e}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let e=this.choices[this.index];return e&&this.state.submitted&&this.multiple!==!0&&(e.enabled=!0),e}get selectable(){return this.choices.filter(e=>!this.isDisabled(e))}get selected(){return this.multiple?this.enabled:this.focused}};function J0e(t,e){if(e instanceof Promise)return e;if(typeof e=="function"){if(Wb.isAsyncFn(e))return e;e=e.call(t,t)}for(let r of e){if(Array.isArray(r.choices)){let o=r.choices.filter(a=>!t.isDisabled(a));r.enabled=o.every(a=>a.enabled===!0)}t.isDisabled(r)===!0&&delete r.enabled}return e}V0e.exports=q_});var v0=U((e_t,z0e)=>{"use strict";var CAt=G1(),j_=Fo(),G_=class extends CAt{constructor(e){super(e),this.emptyError=this.options.emptyError||"No items were selected"}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}separator(){if(this.options.separator)return super.separator();let e=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():e}pointer(e,r){return!this.multiple||this.options.pointer?super.pointer(e,r):""}indicator(e,r){return this.multiple?super.indicator(e,r):""}choiceMessage(e,r){let o=this.resolve(e.message,this.state,e,r);return e.role==="heading"&&!j_.hasColor(o)&&(o=this.styles.strong(o)),this.resolve(o,this.state,e,r)}choiceSeparator(){return":"}async renderChoice(e,r){await this.onChoice(e,r);let o=this.index===r,a=await this.pointer(e,r),n=await this.indicator(e,r)+(e.pad||""),u=await this.resolve(e.hint,this.state,e,r);u&&!j_.hasColor(u)&&(u=this.styles.muted(u));let A=this.indent(e),p=await this.choiceMessage(e,r),h=()=>[this.margin[3],A+a+n,p,this.margin[1],u].filter(Boolean).join(" ");return e.role==="heading"?h():e.disabled?(j_.hasColor(p)||(p=this.styles.disabled(p)),h()):(o&&(p=this.styles.em(p)),h())}async renderChoices(){if(this.state.loading==="choices")return this.styles.warning("Loading choices");if(this.state.submitted)return"";let e=this.visible.map(async(n,u)=>await this.renderChoice(n,u)),r=await Promise.all(e);r.length||r.push(this.styles.danger("No matching choices"));let o=this.margin[0]+r.join(` | 218 | `:" ",o=[];for(let a=0;a<4;a++){let n=r(a);e[a]?o.push(n.repeat(e[a])):o.push("")}return o}z0e.exports=J1});var $0e=U((g_t,Z0e)=>{"use strict";var xAt=Fo(),X0e={default(t,e){return e},checkbox(t,e){throw new Error("checkbox role is not implemented yet")},editable(t,e){throw new Error("editable role is not implemented yet")},expandable(t,e){throw new Error("expandable role is not implemented yet")},heading(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||"",e},input(t,e){throw new Error("input role is not implemented yet")},option(t,e){return X0e.default(t,e)},radio(t,e){throw new Error("radio role is not implemented yet")},separator(t,e){return e.disabled="",e.indicator=[e.indicator," "].find(r=>r!=null),e.message=e.message||t.symbols.line.repeat(5),e},spacer(t,e){return e}};Z0e.exports=(t,e={})=>{let r=xAt.merge({},X0e,e.roles);return r[t]||r.default}});var z1=U((d_t,rhe)=>{"use strict";var bAt=Zc(),QAt=AC(),kAt=$0e(),tQ=Fo(),{reorder:G_,scrollUp:FAt,scrollDown:RAt,isObject:ehe,swap:TAt}=tQ,W_=class extends QAt{constructor(e){super(e),this.cursorHide(),this.maxSelected=e.maxSelected||1/0,this.multiple=e.multiple||!1,this.initial=e.initial||0,this.delay=e.delay||0,this.longest=0,this.num=""}async initialize(){typeof this.options.initial=="function"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:e,initial:r,autofocus:o,suggest:a}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(n=>n.enabled=!1),typeof a!="function"&&this.selectable.length===0)throw new Error("At least one choice must be selectable");ehe(r)&&(r=Object.keys(r)),Array.isArray(r)?(o!=null&&(this.index=this.findIndex(o)),r.forEach(n=>this.enable(this.find(n))),await this.render()):(o!=null&&(r=o),typeof r=="string"&&(r=this.findIndex(r)),typeof r=="number"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,r){this.state.loadingChoices=!0;let o=[],a=0,n=async(u,A)=>{typeof u=="function"&&(u=await u.call(this)),u instanceof Promise&&(u=await u);for(let p=0;p<u.length;p++){let h=u[p]=await this.toChoice(u[p],a++,A);o.push(h),h.choices&&await n(h.choices,h)}return o};return n(e,r).then(u=>(this.state.loadingChoices=!1,u))}async toChoice(e,r,o){if(typeof e=="function"&&(e=await e.call(this,this)),e instanceof Promise&&(e=await e),typeof e=="string"&&(e={name:e}),e.normalized)return e;e.normalized=!0;let a=e.value;if(e=kAt(e.role,this.options)(this,e),typeof e.disabled=="string"&&!e.hint&&(e.hint=e.disabled,e.disabled=!0),e.disabled===!0&&e.hint==null&&(e.hint="(disabled)"),e.index!=null)return e;e.name=e.name||e.key||e.title||e.value||e.message,e.message=e.message||e.name||"",e.value=[e.value,e.name].find(this.isValue.bind(this)),e.input="",e.index=r,e.cursor=0,tQ.define(e,"parent",o),e.level=o?o.level+1:1,e.indent==null&&(e.indent=o?o.indent+" ":e.indent||""),e.path=o?o.path+"."+e.name:e.name,e.enabled=!!(this.multiple&&!this.isDisabled(e)&&(e.enabled||this.isSelected(e))),this.isDisabled(e)||(this.longest=Math.max(this.longest,bAt.unstyle(e.message).length));let u={...e};return e.reset=(A=u.input,p=u.value)=>{for(let h of Object.keys(u))e[h]=u[h];e.input=A,e.value=p},a==null&&typeof e.initial=="function"&&(e.input=await e.initial.call(this,this.state,e,r)),e}async onChoice(e,r){this.emit("choice",e,r,this),typeof e.onChoice=="function"&&await e.onChoice.call(this,this.state,e,r)}async addChoice(e,r,o){let a=await this.toChoice(e,r,o);return this.choices.push(a),this.index=this.choices.length-1,this.limit=this.choices.length,a}async newItem(e,r,o){let a={name:"New choice name?",editable:!0,newChoice:!0,...e},n=await this.addChoice(a,r,o);return n.updateChoice=()=>{delete n.newChoice,n.name=n.message=n.input,n.input="",n.cursor=0},this.render()}indent(e){return e.indent==null?e.level>1?" ".repeat(e.level-1):"":e.indent}dispatch(e,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(e,r){return typeof r!="boolean"&&(r=e.enabled),r&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=r&&!this.isDisabled(e),e)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelected<this.choices.length)return this.alert();let e=this.selectable.every(r=>r.enabled);return this.choices.forEach(r=>r.enabled=!e),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(e=>e.enabled=!e.enabled),this.render())}g(e=this.focused){return this.choices.some(r=>!!r.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,r){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!="boolean"&&(r=!e.enabled),e.enabled=r,e.choices&&e.choices.forEach(a=>this.toggle(a,r));let o=e.parent;for(;o;){let a=o.choices.filter(n=>this.isDisabled(n));o.enabled=a.every(n=>n.enabled===!0),o=o.parent}return the(this,this.choices),this.emit("toggle",e,this),e}enable(e){return this.selected.length>=this.maxSelected?this.alert():(e.enabled=!this.isDisabled(e),e.choices&&e.choices.forEach(this.enable.bind(this)),e)}disable(e){return e.enabled=!1,e.choices&&e.choices.forEach(this.disable.bind(this)),e}number(e){this.num+=e;let r=o=>{let a=Number(o);if(a>this.choices.length-1)return this.alert();let n=this.focused,u=this.choices.find(A=>a===A.index);if(!u.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(u)===-1){let A=G_(this.choices),p=A.indexOf(u);if(n.index>p){let h=A.slice(p,p+this.limit),C=A.filter(w=>!h.includes(w));this.choices=h.concat(C)}else{let h=p-this.limit+1;this.choices=A.slice(h).concat(A.slice(0,h))}}return this.index=this.choices.indexOf(u),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(o=>{let a=this.choices.length,n=this.num,u=(A=!1,p)=>{clearTimeout(this.numberTimeout),A&&(p=r(n)),this.num="",o(p)};if(n==="0"||n.length===1&&Number(n+"0")>a)return u(!0);if(Number(n)>a)return u(!1,this.alert());this.numberTimeout=setTimeout(()=>u(!0),this.delay)})}home(){return this.choices=G_(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,r=G_(this.choices);return this.choices=r.slice(e).concat(r.slice(0,e)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let e=this.choices.length,r=this.visible.length,o=this.index;return this.options.scroll===!1&&o===0?this.alert():e>r&&o===0?this.scrollUp():(this.index=(o-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,r=this.visible.length,o=this.index;return this.options.scroll===!1&&o===r-1?this.alert():e>r&&o===r-1?this.scrollDown():(this.index=(o+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=FAt(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=RAt(this.choices),this.index=e,this.isDisabled()?this.down():this.render()}async shiftUp(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index-1),await this.up(),this.sorting=!1;return}return this.scrollUp(this.index)}async shiftDown(){if(this.options.sort===!0){this.sorting=!0,this.swap(this.index+1),await this.down(),this.sorting=!1;return}return this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(e){TAt(this.choices,this.index,e)}isDisabled(e=this.focused){return e&&["disabled","collapsed","hidden","completing","readonly"].some(o=>e[o]===!0)?!0:e&&e.role==="heading"}isEnabled(e=this.focused){if(Array.isArray(e))return e.every(r=>this.isEnabled(r));if(e.choices){let r=e.choices.filter(o=>!this.isDisabled(o));return e.enabled&&r.every(o=>this.isEnabled(o))}return e.enabled&&!this.isDisabled(e)}isChoice(e,r){return e.name===r||e.index===Number(r)}isSelected(e){return Array.isArray(this.initial)?this.initial.some(r=>this.isChoice(e,r)):this.isChoice(e,this.initial)}map(e=[],r="value"){return[].concat(e||[]).reduce((o,a)=>(o[a]=this.find(a,r),o),{})}filter(e,r){let a=typeof e=="function"?e:(A,p)=>[A.name,p].includes(e),u=(this.options.multiple?this.state._choices:this.choices).filter(a);return r?u.map(A=>A[r]):u}find(e,r){if(ehe(e))return r?e[r]:e;let a=typeof e=="function"?e:(u,A)=>[u.name,A].includes(e),n=this.choices.find(a);if(n)return r?n[r]:n}findIndex(e){return this.choices.indexOf(this.find(e))}async submit(){let e=this.focused;if(!e)return this.alert();if(e.newChoice)return e.input?(e.updateChoice(),this.render()):this.alert();if(this.choices.some(u=>u.newChoice))return this.alert();let{reorder:r,sort:o}=this.options,a=this.multiple===!0,n=this.selected;return n===void 0?this.alert():(Array.isArray(n)&&r!==!1&&o!==!0&&(n=tQ.reorder(n)),this.value=a?n.map(u=>u.name):n.name,super.submit())}set choices(e=[]){this.state._choices=this.state._choices||[],this.state.choices=e;for(let r of e)this.state._choices.some(o=>o.name===r.name)||this.state._choices.push(r);if(!this._initial&&this.options.initial){this._initial=!0;let r=this.initial;if(typeof r=="string"||typeof r=="number"){let o=this.find(r);o&&(this.initial=o.index,this.focus(o,!0))}}}get choices(){return the(this,this.state.choices||[])}set visible(e){this.state.visible=e}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(e){this.state.limit=e}get limit(){let{state:e,options:r,choices:o}=this,a=e.limit||this._limit||r.limit||o.length;return Math.min(a,this.height)}set value(e){super.value=e}get value(){return typeof super.value!="string"&&super.value===this.initial?this.input:super.value}set index(e){this.state.index=e}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let e=this.choices[this.index];return e&&this.state.submitted&&this.multiple!==!0&&(e.enabled=!0),e}get selectable(){return this.choices.filter(e=>!this.isDisabled(e))}get selected(){return this.multiple?this.enabled:this.focused}};function the(t,e){if(e instanceof Promise)return e;if(typeof e=="function"){if(tQ.isAsyncFn(e))return e;e=e.call(t,t)}for(let r of e){if(Array.isArray(r.choices)){let o=r.choices.filter(a=>!t.isDisabled(a));r.enabled=o.every(a=>a.enabled===!0)}t.isDisabled(r)===!0&&delete r.enabled}return e}rhe.exports=W_});var S0=U((m_t,nhe)=>{"use strict";var NAt=z1(),Y_=Fo(),K_=class extends NAt{constructor(e){super(e),this.emptyError=this.options.emptyError||"No items were selected"}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}separator(){if(this.options.separator)return super.separator();let e=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():e}pointer(e,r){return!this.multiple||this.options.pointer?super.pointer(e,r):""}indicator(e,r){return this.multiple?super.indicator(e,r):""}choiceMessage(e,r){let o=this.resolve(e.message,this.state,e,r);return e.role==="heading"&&!Y_.hasColor(o)&&(o=this.styles.strong(o)),this.resolve(o,this.state,e,r)}choiceSeparator(){return":"}async renderChoice(e,r){await this.onChoice(e,r);let o=this.index===r,a=await this.pointer(e,r),n=await this.indicator(e,r)+(e.pad||""),u=await this.resolve(e.hint,this.state,e,r);u&&!Y_.hasColor(u)&&(u=this.styles.muted(u));let A=this.indent(e),p=await this.choiceMessage(e,r),h=()=>[this.margin[3],A+a+n,p,this.margin[1],u].filter(Boolean).join(" ");return e.role==="heading"?h():e.disabled?(Y_.hasColor(p)||(p=this.styles.disabled(p)),h()):(o&&(p=this.styles.em(p)),h())}async renderChoices(){if(this.state.loading==="choices")return this.styles.warning("Loading choices");if(this.state.submitted)return"";let e=this.visible.map(async(n,u)=>await this.renderChoice(n,u)),r=await Promise.all(e);r.length||r.push(this.styles.danger("No matching choices"));let o=this.margin[0]+r.join(` |
219 | `),a;return this.options.choicesHeader&&(a=await this.resolve(this.options.choicesHeader,this.state)),[a,o].filter(Boolean).join(` | 219 | `),a;return this.options.choicesHeader&&(a=await this.resolve(this.options.choicesHeader,this.state)),[a,o].filter(Boolean).join(` |
220 | `)}format(){return!this.state.submitted||this.state.cancelled?"":Array.isArray(this.selected)?this.selected.map(e=>this.styles.primary(e.name)).join(", "):this.styles.primary(this.selected.name)}async render(){let{submitted:e,size:r}=this.state,o="",a=await this.header(),n=await this.prefix(),u=await this.separator(),A=await this.message();this.options.promptLine!==!1&&(o=[n,A,u,""].join(" "),this.state.prompt=o);let p=await this.format(),h=await this.error()||await this.hint(),C=await this.renderChoices(),w=await this.footer();p&&(o+=p),h&&!o.includes(h)&&(o+=" "+h),e&&!p&&!C.trim()&&this.multiple&&this.emptyError!=null&&(o+=this.styles.danger(this.emptyError)),this.clear(r),this.write([a,o,C,w].filter(Boolean).join(` | 220 | `)}format(){return!this.state.submitted||this.state.cancelled?"":Array.isArray(this.selected)?this.selected.map(e=>this.styles.primary(e.name)).join(", "):this.styles.primary(this.selected.name)}async render(){let{submitted:e,size:r}=this.state,o="",a=await this.header(),n=await this.prefix(),u=await this.separator(),A=await this.message();this.options.promptLine!==!1&&(o=[n,A,u,""].join(" "),this.state.prompt=o);let p=await this.format(),h=await this.error()||await this.hint(),C=await this.renderChoices(),w=await this.footer();p&&(o+=p),h&&!o.includes(h)&&(o+=" "+h),e&&!p&&!C.trim()&&this.multiple&&this.emptyError!=null&&(o+=this.styles.danger(this.emptyError)),this.clear(r),this.write([a,o,C,w].filter(Boolean).join(` |
221 | `)),this.write(this.margin[2]),this.restore()}};z0e.exports=G_});var Z0e=U((t_t,X0e)=>{"use strict";var IAt=v0(),wAt=(t,e)=>{let r=t.toLowerCase();return o=>{let n=o.toLowerCase().indexOf(r),u=e(o.slice(n,n+r.length));return n>=0?o.slice(0,n)+u+o.slice(n+r.length):o}},W_=class extends IAt{constructor(e){super(e),this.cursorShow()}moveCursor(e){this.state.cursor+=e}dispatch(e){return this.append(e)}space(e){return this.options.multiple?super.space(e):this.append(e)}append(e){let{cursor:r,input:o}=this.state;return this.input=o.slice(0,r)+e+o.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:r}=this.state;return r?(this.input=r.slice(0,e-1)+r.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:r}=this.state;return r[e]===void 0?this.alert():(this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.complete())}number(e){return this.append(e)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(e=this.input,r=this.state._choices){if(typeof this.options.suggest=="function")return this.options.suggest.call(this,e,r);let o=e.toLowerCase();return r.filter(a=>a.message.toLowerCase().includes(o))}pointer(){return""}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(e=>this.styles.primary(e.message)).join(", ");if(this.state.submitted){let e=this.value=this.input=this.focused.value;return this.styles.primary(e)}return this.input}async render(){if(this.state.status!=="pending")return super.render();let e=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,r=wAt(this.input,e),o=this.choices;this.choices=o.map(a=>({...a,message:r(a.message)})),await super.render(),this.choices=o}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};X0e.exports=W_});var K_=U((r_t,$0e)=>{"use strict";var Y_=Fo();$0e.exports=(t,e={})=>{t.cursorHide();let{input:r="",initial:o="",pos:a,showCursor:n=!0,color:u}=e,A=u||t.styles.placeholder,p=Y_.inverse(t.styles.primary),h=R=>p(t.styles.black(R)),C=r,w=" ",v=h(w);if(t.blink&&t.blink.off===!0&&(h=R=>R,v=""),n&&a===0&&o===""&&r==="")return h(w);if(n&&a===0&&(r===o||r===""))return h(o[0])+A(o.slice(1));o=Y_.isPrimitive(o)?`${o}`:"",r=Y_.isPrimitive(r)?`${r}`:"";let b=o&&o.startsWith(r)&&o!==r,E=b?h(o[r.length]):v;if(a!==r.length&&n===!0&&(C=r.slice(0,a)+h(r[a])+r.slice(a+1),E=""),n===!1&&(E=""),b){let R=t.styles.unstyle(C+E);return C+E+A(o.slice(R.length))}return C+E}});var Yb=U((n_t,ehe)=>{"use strict";var BAt=Vc(),vAt=v0(),DAt=K_(),J_=class extends vAt{constructor(e){super({...e,multiple:!0}),this.type="form",this.initial=this.options.initial,this.align=[this.options.align,"right"].find(r=>r!=null),this.emptyError="",this.values={}}async reset(e){return await super.reset(),e===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(r=>r.reset&&r.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let r=this.focused;if(!r)return this.alert();let{cursor:o,input:a}=r;return r.value=r.input=a.slice(0,o)+e+a.slice(o),r.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:r,input:o}=e;return e.value=e.input=o.slice(0,r-1)+o.slice(r),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:r,input:o}=e;if(o[r]===void 0)return this.alert();let a=`${o}`.slice(0,r)+`${o}`.slice(r+1);return e.value=e.input=a,this.render()}right(){let e=this.focused;return e?e.cursor>=e.input.length?this.alert():(e.cursor++,this.render()):this.alert()}left(){let e=this.focused;return e?e.cursor<=0?this.alert():(e.cursor--,this.render()):this.alert()}space(e,r){return this.dispatch(e,r)}number(e,r){return this.dispatch(e,r)}next(){let e=this.focused;if(!e)return this.alert();let{initial:r,input:o}=e;return r&&r.startsWith(o)&&o!==r?(e.value=e.input=r,e.cursor=e.value.length,this.render()):super.next()}prev(){let e=this.focused;return e?e.cursor===0?super.prev():(e.value=e.input="",e.cursor=0,this.render()):this.alert()}separator(){return""}format(e){return this.state.submitted?"":super.format(e)}pointer(){return""}indicator(e){return e.input?"\u29BF":"\u2299"}async choiceSeparator(e,r){let o=await this.resolve(e.separator,this.state,e,r)||":";return o?" "+this.styles.disabled(o):""}async renderChoice(e,r){await this.onChoice(e,r);let{state:o,styles:a}=this,{cursor:n,initial:u="",name:A,hint:p,input:h=""}=e,{muted:C,submitted:w,primary:v,danger:b}=a,E=p,R=this.index===r,L=e.validate||(()=>!0),_=await this.choiceSeparator(e,r),J=e.message;this.align==="right"&&(J=J.padStart(this.longest+1," ")),this.align==="left"&&(J=J.padEnd(this.longest+1," "));let re=this.values[A]=h||u,oe=h?"success":"dark";await L.call(e,re,this.state)!==!0&&(oe="danger");let pe=a[oe],he=pe(await this.indicator(e,r))+(e.pad||""),ve=this.indent(e),ge=()=>[ve,he,J+_,h,E].filter(Boolean).join(" ");if(o.submitted)return J=BAt.unstyle(J),h=w(h),E="",ge();if(e.format)h=await e.format.call(this,h,e,r);else{let le=this.styles.muted;h=DAt(this,{input:h,initial:u,pos:n,showCursor:R,color:le})}return this.isValue(h)||(h=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[A]=await e.result.call(this,re,e,r)),R&&(J=v(J)),e.error?h+=(h?" ":"")+b(e.error.trim()):e.hint&&(h+=(h?" ":"")+C(e.hint.trim())),ge()}async submit(){return this.value=this.values,super.base.submit.call(this)}};ehe.exports=J_});var V_=U((i_t,rhe)=>{"use strict";var SAt=Yb(),PAt=()=>{throw new Error("expected prompt to have a custom authenticate method")},the=(t=PAt)=>{class e extends SAt{constructor(o){super(o)}async submit(){this.value=await t.call(this,this.values,this.state),super.base.submit.call(this)}static create(o){return the(o)}}return e};rhe.exports=the()});var she=U((s_t,ihe)=>{"use strict";var xAt=V_();function bAt(t,e){return t.username===this.options.username&&t.password===this.options.password}var nhe=(t=bAt)=>{let e=[{name:"username",message:"username"},{name:"password",message:"password",format(o){return this.options.showPassword?o:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(o.length))}}];class r extends xAt.create(t){constructor(a){super({...a,choices:e})}static create(a){return nhe(a)}}return r};ihe.exports=nhe()});var Kb=U((o_t,ohe)=>{"use strict";var QAt=oC(),{isPrimitive:kAt,hasColor:FAt}=Fo(),z_=class extends QAt{constructor(e){super(e),this.cursorHide()}async initialize(){let e=await this.resolve(this.initial,this.state);this.input=await this.cast(e),await super.initialize()}dispatch(e){return this.isValue(e)?(this.input=e,this.submit()):this.alert()}format(e){let{styles:r,state:o}=this;return o.submitted?r.success(e):r.primary(e)}cast(e){return this.isTrue(e)}isTrue(e){return/^[ty1]/i.test(e)}isFalse(e){return/^[fn0]/i.test(e)}isValue(e){return kAt(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if(this.state.status==="pending"){let e=await this.element("hint");return FAt(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:r}=this.state,o=await this.prefix(),a=await this.separator(),n=await this.message(),u=this.styles.muted(this.default),A=[o,n,u,a].filter(Boolean).join(" ");this.state.prompt=A;let p=await this.header(),h=this.value=this.cast(e),C=await this.format(h),w=await this.error()||await this.hint(),v=await this.footer();w&&!A.includes(w)&&(C+=" "+w),A+=" "+C,this.clear(r),this.write([p,A,v].filter(Boolean).join(` | 221 | `)),this.write(this.margin[2]),this.restore()}};nhe.exports=K_});var she=U((y_t,ihe)=>{"use strict";var LAt=S0(),OAt=(t,e)=>{let r=t.toLowerCase();return o=>{let n=o.toLowerCase().indexOf(r),u=e(o.slice(n,n+r.length));return n>=0?o.slice(0,n)+u+o.slice(n+r.length):o}},V_=class extends LAt{constructor(e){super(e),this.cursorShow()}moveCursor(e){this.state.cursor+=e}dispatch(e){return this.append(e)}space(e){return this.options.multiple?super.space(e):this.append(e)}append(e){let{cursor:r,input:o}=this.state;return this.input=o.slice(0,r)+e+o.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:r}=this.state;return r?(this.input=r.slice(0,e-1)+r.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:r}=this.state;return r[e]===void 0?this.alert():(this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.complete())}number(e){return this.append(e)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(e=this.input,r=this.state._choices){if(typeof this.options.suggest=="function")return this.options.suggest.call(this,e,r);let o=e.toLowerCase();return r.filter(a=>a.message.toLowerCase().includes(o))}pointer(){return""}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(e=>this.styles.primary(e.message)).join(", ");if(this.state.submitted){let e=this.value=this.input=this.focused.value;return this.styles.primary(e)}return this.input}async render(){if(this.state.status!=="pending")return super.render();let e=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,r=OAt(this.input,e),o=this.choices;this.choices=o.map(a=>({...a,message:r(a.message)})),await super.render(),this.choices=o}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};ihe.exports=V_});var z_=U((E_t,ohe)=>{"use strict";var J_=Fo();ohe.exports=(t,e={})=>{t.cursorHide();let{input:r="",initial:o="",pos:a,showCursor:n=!0,color:u}=e,A=u||t.styles.placeholder,p=J_.inverse(t.styles.primary),h=R=>p(t.styles.black(R)),C=r,w=" ",v=h(w);if(t.blink&&t.blink.off===!0&&(h=R=>R,v=""),n&&a===0&&o===""&&r==="")return h(w);if(n&&a===0&&(r===o||r===""))return h(o[0])+A(o.slice(1));o=J_.isPrimitive(o)?`${o}`:"",r=J_.isPrimitive(r)?`${r}`:"";let b=o&&o.startsWith(r)&&o!==r,E=b?h(o[r.length]):v;if(a!==r.length&&n===!0&&(C=r.slice(0,a)+h(r[a])+r.slice(a+1),E=""),n===!1&&(E=""),b){let R=t.styles.unstyle(C+E);return C+E+A(o.slice(R.length))}return C+E}});var rQ=U((C_t,ahe)=>{"use strict";var MAt=Zc(),UAt=S0(),_At=z_(),X_=class extends UAt{constructor(e){super({...e,multiple:!0}),this.type="form",this.initial=this.options.initial,this.align=[this.options.align,"right"].find(r=>r!=null),this.emptyError="",this.values={}}async reset(e){return await super.reset(),e===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(r=>r.reset&&r.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let r=this.focused;if(!r)return this.alert();let{cursor:o,input:a}=r;return r.value=r.input=a.slice(0,o)+e+a.slice(o),r.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:r,input:o}=e;return e.value=e.input=o.slice(0,r-1)+o.slice(r),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:r,input:o}=e;if(o[r]===void 0)return this.alert();let a=`${o}`.slice(0,r)+`${o}`.slice(r+1);return e.value=e.input=a,this.render()}right(){let e=this.focused;return e?e.cursor>=e.input.length?this.alert():(e.cursor++,this.render()):this.alert()}left(){let e=this.focused;return e?e.cursor<=0?this.alert():(e.cursor--,this.render()):this.alert()}space(e,r){return this.dispatch(e,r)}number(e,r){return this.dispatch(e,r)}next(){let e=this.focused;if(!e)return this.alert();let{initial:r,input:o}=e;return r&&r.startsWith(o)&&o!==r?(e.value=e.input=r,e.cursor=e.value.length,this.render()):super.next()}prev(){let e=this.focused;return e?e.cursor===0?super.prev():(e.value=e.input="",e.cursor=0,this.render()):this.alert()}separator(){return""}format(e){return this.state.submitted?"":super.format(e)}pointer(){return""}indicator(e){return e.input?"\u29BF":"\u2299"}async choiceSeparator(e,r){let o=await this.resolve(e.separator,this.state,e,r)||":";return o?" "+this.styles.disabled(o):""}async renderChoice(e,r){await this.onChoice(e,r);let{state:o,styles:a}=this,{cursor:n,initial:u="",name:A,hint:p,input:h=""}=e,{muted:C,submitted:w,primary:v,danger:b}=a,E=p,R=this.index===r,L=e.validate||(()=>!0),_=await this.choiceSeparator(e,r),V=e.message;this.align==="right"&&(V=V.padStart(this.longest+1," ")),this.align==="left"&&(V=V.padEnd(this.longest+1," "));let re=this.values[A]=h||u,ae=h?"success":"dark";await L.call(e,re,this.state)!==!0&&(ae="danger");let he=a[ae],pe=he(await this.indicator(e,r))+(e.pad||""),De=this.indent(e),ge=()=>[De,pe,V+_,h,E].filter(Boolean).join(" ");if(o.submitted)return V=MAt.unstyle(V),h=w(h),E="",ge();if(e.format)h=await e.format.call(this,h,e,r);else{let le=this.styles.muted;h=_At(this,{input:h,initial:u,pos:n,showCursor:R,color:le})}return this.isValue(h)||(h=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[A]=await e.result.call(this,re,e,r)),R&&(V=v(V)),e.error?h+=(h?" ":"")+b(e.error.trim()):e.hint&&(h+=(h?" ":"")+C(e.hint.trim())),ge()}async submit(){return this.value=this.values,super.base.submit.call(this)}};ahe.exports=X_});var Z_=U((I_t,che)=>{"use strict";var HAt=rQ(),qAt=()=>{throw new Error("expected prompt to have a custom authenticate method")},lhe=(t=qAt)=>{class e extends HAt{constructor(o){super(o)}async submit(){this.value=await t.call(this,this.values,this.state),super.base.submit.call(this)}static create(o){return lhe(o)}}return e};che.exports=lhe()});var fhe=U((w_t,Ahe)=>{"use strict";var jAt=Z_();function GAt(t,e){return t.username===this.options.username&&t.password===this.options.password}var uhe=(t=GAt)=>{let e=[{name:"username",message:"username"},{name:"password",message:"password",format(o){return this.options.showPassword?o:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(o.length))}}];class r extends jAt.create(t){constructor(a){super({...a,choices:e})}static create(a){return uhe(a)}}return r};Ahe.exports=uhe()});var nQ=U((B_t,phe)=>{"use strict";var WAt=AC(),{isPrimitive:YAt,hasColor:KAt}=Fo(),$_=class extends WAt{constructor(e){super(e),this.cursorHide()}async initialize(){let e=await this.resolve(this.initial,this.state);this.input=await this.cast(e),await super.initialize()}dispatch(e){return this.isValue(e)?(this.input=e,this.submit()):this.alert()}format(e){let{styles:r,state:o}=this;return o.submitted?r.success(e):r.primary(e)}cast(e){return this.isTrue(e)}isTrue(e){return/^[ty1]/i.test(e)}isFalse(e){return/^[fn0]/i.test(e)}isValue(e){return YAt(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if(this.state.status==="pending"){let e=await this.element("hint");return KAt(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:r}=this.state,o=await this.prefix(),a=await this.separator(),n=await this.message(),u=this.styles.muted(this.default),A=[o,n,u,a].filter(Boolean).join(" ");this.state.prompt=A;let p=await this.header(),h=this.value=this.cast(e),C=await this.format(h),w=await this.error()||await this.hint(),v=await this.footer();w&&!A.includes(w)&&(C+=" "+w),A+=" "+C,this.clear(r),this.write([p,A,v].filter(Boolean).join(` |
222 | `)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};ohe.exports=z_});var lhe=U((a_t,ahe)=>{"use strict";var RAt=Kb(),X_=class extends RAt{constructor(e){super(e),this.default=this.options.default||(this.initial?"(Y/n)":"(y/N)")}};ahe.exports=X_});var uhe=U((l_t,che)=>{"use strict";var TAt=v0(),NAt=Yb(),aC=NAt.prototype,Z_=class extends TAt{constructor(e){super({...e,multiple:!0}),this.align=[this.options.align,"left"].find(r=>r!=null),this.emptyError="",this.values={}}dispatch(e,r){let o=this.focused,a=o.parent||{};return!o.editable&&!a.editable&&(e==="a"||e==="i")?super[e]():aC.dispatch.call(this,e,r)}append(e,r){return aC.append.call(this,e,r)}delete(e,r){return aC.delete.call(this,e,r)}space(e){return this.focused.editable?this.append(e):super.space()}number(e){return this.focused.editable?this.append(e):super.number(e)}next(){return this.focused.editable?aC.next.call(this):super.next()}prev(){return this.focused.editable?aC.prev.call(this):super.prev()}async indicator(e,r){let o=e.indicator||"",a=e.editable?o:super.indicator(e,r);return await this.resolve(a,this.state,e,r)||""}indent(e){return e.role==="heading"?"":e.editable?" ":" "}async renderChoice(e,r){return e.indent="",e.editable?aC.renderChoice.call(this,e,r):super.renderChoice(e,r)}error(){return""}footer(){return this.state.error}async validate(){let e=!0;for(let r of this.choices){if(typeof r.validate!="function"||r.role==="heading")continue;let o=r.parent?this.value[r.parent.name]:this.value;if(r.editable?o=r.value===r.name?r.initial||"":r.value:this.isDisabled(r)||(o=r.enabled===!0),e=await r.validate(o,this.state),e!==!0)break}return e!==!0&&(this.state.error=typeof e=="string"?e:"Invalid Input"),e}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(e=>e.newChoice))return this.alert();this.value={};for(let e of this.choices){let r=e.parent?this.value[e.parent.name]:this.value;if(e.role==="heading"){this.value[e.name]={};continue}e.editable?r[e.name]=e.value===e.name?e.initial||"":e.value:this.isDisabled(e)||(r[e.name]=e.enabled===!0)}return this.base.submit.call(this)}};che.exports=Z_});var Wd=U((c_t,Ahe)=>{"use strict";var LAt=oC(),OAt=K_(),{isPrimitive:MAt}=Fo(),$_=class extends LAt{constructor(e){super(e),this.initial=MAt(this.initial)?String(this.initial):"",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,r={}){let o=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name==="return"&&(!o||o.name!=="return")?this.append(` | 222 | `)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};phe.exports=$_});var ghe=U((v_t,hhe)=>{"use strict";var VAt=nQ(),e8=class extends VAt{constructor(e){super(e),this.default=this.options.default||(this.initial?"(Y/n)":"(y/N)")}};hhe.exports=e8});var mhe=U((D_t,dhe)=>{"use strict";var JAt=S0(),zAt=rQ(),fC=zAt.prototype,t8=class extends JAt{constructor(e){super({...e,multiple:!0}),this.align=[this.options.align,"left"].find(r=>r!=null),this.emptyError="",this.values={}}dispatch(e,r){let o=this.focused,a=o.parent||{};return!o.editable&&!a.editable&&(e==="a"||e==="i")?super[e]():fC.dispatch.call(this,e,r)}append(e,r){return fC.append.call(this,e,r)}delete(e,r){return fC.delete.call(this,e,r)}space(e){return this.focused.editable?this.append(e):super.space()}number(e){return this.focused.editable?this.append(e):super.number(e)}next(){return this.focused.editable?fC.next.call(this):super.next()}prev(){return this.focused.editable?fC.prev.call(this):super.prev()}async indicator(e,r){let o=e.indicator||"",a=e.editable?o:super.indicator(e,r);return await this.resolve(a,this.state,e,r)||""}indent(e){return e.role==="heading"?"":e.editable?" ":" "}async renderChoice(e,r){return e.indent="",e.editable?fC.renderChoice.call(this,e,r):super.renderChoice(e,r)}error(){return""}footer(){return this.state.error}async validate(){let e=!0;for(let r of this.choices){if(typeof r.validate!="function"||r.role==="heading")continue;let o=r.parent?this.value[r.parent.name]:this.value;if(r.editable?o=r.value===r.name?r.initial||"":r.value:this.isDisabled(r)||(o=r.enabled===!0),e=await r.validate(o,this.state),e!==!0)break}return e!==!0&&(this.state.error=typeof e=="string"?e:"Invalid Input"),e}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(e=>e.newChoice))return this.alert();this.value={};for(let e of this.choices){let r=e.parent?this.value[e.parent.name]:this.value;if(e.role==="heading"){this.value[e.name]={};continue}e.editable?r[e.name]=e.value===e.name?e.initial||"":e.value:this.isDisabled(e)||(r[e.name]=e.enabled===!0)}return this.base.submit.call(this)}};dhe.exports=t8});var Jd=U((S_t,yhe)=>{"use strict";var XAt=AC(),ZAt=z_(),{isPrimitive:$At}=Fo(),r8=class extends XAt{constructor(e){super(e),this.initial=$At(this.initial)?String(this.initial):"",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,r={}){let o=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name==="return"&&(!o||o.name!=="return")?this.append(` |
223 | `,r):super.keypress(e,r)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value="",this.cursor=0,this.render()}dispatch(e,r){if(!e||r.ctrl||r.code)return this.alert();this.append(e)}append(e){let{cursor:r,input:o}=this.state;this.input=`${o}`.slice(0,r)+e+`${o}`.slice(r),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:r}=this.state;if(e<=0)return this.alert();this.input=`${r}`.slice(0,e-1)+`${r}`.slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:r}=this.state;if(r[e]===void 0)return this.alert();this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.render()}cutForward(){let e=this.cursor;if(this.input.length<=e)return this.alert();this.state.clipboard.push(this.input.slice(e)),this.input=this.input.slice(0,e),this.render()}cutLeft(){let e=this.cursor;if(e===0)return this.alert();let r=this.input.slice(0,e),o=this.input.slice(e),a=r.split(" ");this.state.clipboard.push(a.pop()),this.input=a.join(" "),this.cursor=this.input.length,this.input+=o,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let e=this.initial!=null?String(this.initial):"";if(!e||!e.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(e){return!!e}async format(e=this.value){let r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||r):OAt(this,{input:e,initial:r,pos:this.cursor})}async render(){let e=this.state.size,r=await this.prefix(),o=await this.separator(),a=await this.message(),n=[r,a,o].filter(Boolean).join(" ");this.state.prompt=n;let u=await this.header(),A=await this.format(),p=await this.error()||await this.hint(),h=await this.footer();p&&!A.includes(p)&&(A+=" "+p),n+=" "+A,this.clear(e),this.write([u,n,h].filter(Boolean).join(` | 223 | `,r):super.keypress(e,r)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value="",this.cursor=0,this.render()}dispatch(e,r){if(!e||r.ctrl||r.code)return this.alert();this.append(e)}append(e){let{cursor:r,input:o}=this.state;this.input=`${o}`.slice(0,r)+e+`${o}`.slice(r),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:r}=this.state;if(e<=0)return this.alert();this.input=`${r}`.slice(0,e-1)+`${r}`.slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:r}=this.state;if(r[e]===void 0)return this.alert();this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.render()}cutForward(){let e=this.cursor;if(this.input.length<=e)return this.alert();this.state.clipboard.push(this.input.slice(e)),this.input=this.input.slice(0,e),this.render()}cutLeft(){let e=this.cursor;if(e===0)return this.alert();let r=this.input.slice(0,e),o=this.input.slice(e),a=r.split(" ");this.state.clipboard.push(a.pop()),this.input=a.join(" "),this.cursor=this.input.length,this.input+=o,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let e=this.initial!=null?String(this.initial):"";if(!e||!e.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(e){return!!e}async format(e=this.value){let r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||r):ZAt(this,{input:e,initial:r,pos:this.cursor})}async render(){let e=this.state.size,r=await this.prefix(),o=await this.separator(),a=await this.message(),n=[r,a,o].filter(Boolean).join(" ");this.state.prompt=n;let u=await this.header(),A=await this.format(),p=await this.error()||await this.hint(),h=await this.footer();p&&!A.includes(p)&&(A+=" "+p),n+=" "+A,this.clear(e),this.write([u,n,h].filter(Boolean).join(` |
224 | `)),this.restore()}};Ahe.exports=$_});var phe=U((u_t,fhe)=>{"use strict";var UAt=t=>t.filter((e,r)=>t.lastIndexOf(e)===r),Jb=t=>UAt(t).filter(Boolean);fhe.exports=(t,e={},r="")=>{let{past:o=[],present:a=""}=e,n,u;switch(t){case"prev":case"undo":return n=o.slice(0,o.length-1),u=o[o.length-1]||"",{past:Jb([r,...n]),present:u};case"next":case"redo":return n=o.slice(1),u=o[0]||"",{past:Jb([...n,r]),present:u};case"save":return{past:Jb([...o,r]),present:""};case"remove":return u=Jb(o.filter(A=>A!==r)),a="",u.length&&(a=u.pop()),{past:u,present:a};default:throw new Error(`Invalid action: "${t}"`)}}});var t8=U((A_t,ghe)=>{"use strict";var _At=Wd(),hhe=phe(),e8=class extends _At{constructor(e){super(e);let r=this.options.history;if(r&&r.store){let o=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get("values")||{past:[],present:o},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=hhe(e,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion("prev")}altDown(){return this.completion("next")}prev(){return this.save(),super.prev()}save(){!this.store||(this.data=hhe("save",this.data,this.input),this.store.set("values",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};ghe.exports=e8});var mhe=U((f_t,dhe)=>{"use strict";var HAt=Wd(),r8=class extends HAt{format(){return""}};dhe.exports=r8});var Ehe=U((p_t,yhe)=>{"use strict";var qAt=Wd(),n8=class extends qAt{constructor(e={}){super(e),this.sep=this.options.separator||/, */,this.initial=e.initial||""}split(e=this.value){return e?String(e).split(this.sep):[]}format(){let e=this.state.submitted?this.styles.primary:r=>r;return this.list.map(e).join(", ")}async submit(e){let r=this.state.error||await this.validate(this.list,this.state);return r!==!0?(this.state.error=r,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};yhe.exports=n8});var Ihe=U((h_t,Che)=>{"use strict";var jAt=v0(),i8=class extends jAt{constructor(e){super({...e,multiple:!0})}};Che.exports=i8});var o8=U((g_t,whe)=>{"use strict";var GAt=Wd(),s8=class extends GAt{constructor(e={}){super({style:"number",...e}),this.min=this.isValue(e.min)?this.toNumber(e.min):-1/0,this.max=this.isValue(e.max)?this.toNumber(e.max):1/0,this.delay=e.delay!=null?e.delay:1e3,this.float=e.float!==!1,this.round=e.round===!0||e.float===!1,this.major=e.major||10,this.minor=e.minor||1,this.initial=e.initial!=null?e.initial:"",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(e){return!/[-+.]/.test(e)||e==="."&&this.input.includes(".")?this.alert("invalid number"):super.append(e)}number(e){return super.append(e)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(e){let r=e||this.minor,o=this.toNumber(this.input);return o>this.max+r?this.alert():(this.input=`${o+r}`,this.render())}down(e){let r=e||this.minor,o=this.toNumber(this.input);return o<this.min-r?this.alert():(this.input=`${o-r}`,this.render())}shiftDown(){return this.down(this.major)}shiftUp(){return this.up(this.major)}format(e=this.input){return typeof this.options.format=="function"?this.options.format.call(this,e):this.styles.info(e)}toNumber(e=""){return this.float?+e:Math.round(+e)}isValue(e){return/^[-+]?[0-9]+((\.)|(\.[0-9]+))?$/.test(e)}submit(){let e=[this.input,this.initial].find(r=>this.isValue(r));return this.value=this.toNumber(e||0),super.submit()}};whe.exports=s8});var vhe=U((d_t,Bhe)=>{Bhe.exports=o8()});var She=U((m_t,Dhe)=>{"use strict";var WAt=Wd(),a8=class extends WAt{constructor(e){super(e),this.cursorShow()}format(e=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(e.length)):""}};Dhe.exports=a8});var bhe=U((y_t,xhe)=>{"use strict";var YAt=Vc(),KAt=G1(),Phe=Fo(),l8=class extends KAt{constructor(e={}){super(e),this.widths=[].concat(e.messageWidth||50),this.align=[].concat(e.align||"left"),this.linebreak=e.linebreak||!1,this.edgeLength=e.edgeLength||3,this.newline=e.newline||` | 224 | `)),this.restore()}};yhe.exports=r8});var Che=U((P_t,Ehe)=>{"use strict";var eft=t=>t.filter((e,r)=>t.lastIndexOf(e)===r),iQ=t=>eft(t).filter(Boolean);Ehe.exports=(t,e={},r="")=>{let{past:o=[],present:a=""}=e,n,u;switch(t){case"prev":case"undo":return n=o.slice(0,o.length-1),u=o[o.length-1]||"",{past:iQ([r,...n]),present:u};case"next":case"redo":return n=o.slice(1),u=o[0]||"",{past:iQ([...n,r]),present:u};case"save":return{past:iQ([...o,r]),present:""};case"remove":return u=iQ(o.filter(A=>A!==r)),a="",u.length&&(a=u.pop()),{past:u,present:a};default:throw new Error(`Invalid action: "${t}"`)}}});var i8=U((x_t,whe)=>{"use strict";var tft=Jd(),Ihe=Che(),n8=class extends tft{constructor(e){super(e);let r=this.options.history;if(r&&r.store){let o=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get("values")||{past:[],present:o},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=Ihe(e,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion("prev")}altDown(){return this.completion("next")}prev(){return this.save(),super.prev()}save(){!this.store||(this.data=Ihe("save",this.data,this.input),this.store.set("values",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};whe.exports=n8});var vhe=U((b_t,Bhe)=>{"use strict";var rft=Jd(),s8=class extends rft{format(){return""}};Bhe.exports=s8});var She=U((Q_t,Dhe)=>{"use strict";var nft=Jd(),o8=class extends nft{constructor(e={}){super(e),this.sep=this.options.separator||/, */,this.initial=e.initial||""}split(e=this.value){return e?String(e).split(this.sep):[]}format(){let e=this.state.submitted?this.styles.primary:r=>r;return this.list.map(e).join(", ")}async submit(e){let r=this.state.error||await this.validate(this.list,this.state);return r!==!0?(this.state.error=r,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}};Dhe.exports=o8});var xhe=U((k_t,Phe)=>{"use strict";var ift=S0(),a8=class extends ift{constructor(e){super({...e,multiple:!0})}};Phe.exports=a8});var c8=U((F_t,bhe)=>{"use strict";var sft=Jd(),l8=class extends sft{constructor(e={}){super({style:"number",...e}),this.min=this.isValue(e.min)?this.toNumber(e.min):-1/0,this.max=this.isValue(e.max)?this.toNumber(e.max):1/0,this.delay=e.delay!=null?e.delay:1e3,this.float=e.float!==!1,this.round=e.round===!0||e.float===!1,this.major=e.major||10,this.minor=e.minor||1,this.initial=e.initial!=null?e.initial:"",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(e){return!/[-+.]/.test(e)||e==="."&&this.input.includes(".")?this.alert("invalid number"):super.append(e)}number(e){return super.append(e)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(e){let r=e||this.minor,o=this.toNumber(this.input);return o>this.max+r?this.alert():(this.input=`${o+r}`,this.render())}down(e){let r=e||this.minor,o=this.toNumber(this.input);return o<this.min-r?this.alert():(this.input=`${o-r}`,this.render())}shiftDown(){return this.down(this.major)}shiftUp(){return this.up(this.major)}format(e=this.input){return typeof this.options.format=="function"?this.options.format.call(this,e):this.styles.info(e)}toNumber(e=""){return this.float?+e:Math.round(+e)}isValue(e){return/^[-+]?[0-9]+((\.)|(\.[0-9]+))?$/.test(e)}submit(){let e=[this.input,this.initial].find(r=>this.isValue(r));return this.value=this.toNumber(e||0),super.submit()}};bhe.exports=l8});var khe=U((R_t,Qhe)=>{Qhe.exports=c8()});var Rhe=U((T_t,Fhe)=>{"use strict";var oft=Jd(),u8=class extends oft{constructor(e){super(e),this.cursorShow()}format(e=this.input){return this.keypressed?(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(e.length)):""}};Fhe.exports=u8});var Lhe=U((N_t,Nhe)=>{"use strict";var aft=Zc(),lft=z1(),The=Fo(),A8=class extends lft{constructor(e={}){super(e),this.widths=[].concat(e.messageWidth||50),this.align=[].concat(e.align||"left"),this.linebreak=e.linebreak||!1,this.edgeLength=e.edgeLength||3,this.newline=e.newline||` |
225 | `;let r=e.startNumber||1;typeof this.scale=="number"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((o,a)=>({name:a+r})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let e=0;for(let r of this.choices){e=Math.max(e,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let o=0;o<this.scale.length;o++)r.scale.push({index:o})}this.widths[0]=Math.min(this.widths[0],e+3)}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}heading(e,r,o){return this.styles.strong(e)}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIndex>=this.scale.length-1?this.alert():(e.scaleIndex++,this.render())}left(){let e=this.focused;return e.scaleIndex<=0?this.alert():(e.scaleIndex--,this.render())}indent(){return""}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.index)).join(", "):""}pointer(){return""}renderScaleKey(){return this.scaleKey===!1||this.state.submitted?"":["",...this.scale.map(o=>` ${o.name} - ${o.message}`)].map(o=>this.styles.muted(o)).join(` | 225 | `;let r=e.startNumber||1;typeof this.scale=="number"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((o,a)=>({name:a+r})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let e=0;for(let r of this.choices){e=Math.max(e,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let o=0;o<this.scale.length;o++)r.scale.push({index:o})}this.widths[0]=Math.min(this.widths[0],e+3)}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}heading(e,r,o){return this.styles.strong(e)}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIndex>=this.scale.length-1?this.alert():(e.scaleIndex++,this.render())}left(){let e=this.focused;return e.scaleIndex<=0?this.alert():(e.scaleIndex--,this.render())}indent(){return""}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.index)).join(", "):""}pointer(){return""}renderScaleKey(){return this.scaleKey===!1||this.state.submitted?"":["",...this.scale.map(o=>` ${o.name} - ${o.message}`)].map(o=>this.styles.muted(o)).join(` |
226 | `)}renderScaleHeading(e){let r=this.scale.map(p=>p.name);typeof this.options.renderScaleHeading=="function"&&(r=this.options.renderScaleHeading.call(this,e));let o=this.scaleLength-r.join("").length,a=Math.round(o/(r.length-1)),u=r.map(p=>this.styles.strong(p)).join(" ".repeat(a)),A=" ".repeat(this.widths[0]);return this.margin[3]+A+this.margin[1]+u}scaleIndicator(e,r,o){if(typeof this.options.scaleIndicator=="function")return this.options.scaleIndicator.call(this,e,r,o);let a=e.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):a?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,r){let o=e.scale.map(n=>this.scaleIndicator(e,n,r)),a=this.term==="Hyper"?"":" ";return o.join(a+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,r){await this.onChoice(e,r);let o=this.index===r,a=await this.pointer(e,r),n=await e.hint;n&&!Phe.hasColor(n)&&(n=this.styles.muted(n));let u=E=>this.margin[3]+E.replace(/\s+$/,"").padEnd(this.widths[0]," "),A=this.newline,p=this.indent(e),h=await this.resolve(e.message,this.state,e,r),C=await this.renderScale(e,r),w=this.margin[1]+this.margin[3];this.scaleLength=YAt.unstyle(C).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-w.length);let b=Phe.wordWrap(h,{width:this.widths[0],newline:A}).split(` | 226 | `)}renderScaleHeading(e){let r=this.scale.map(p=>p.name);typeof this.options.renderScaleHeading=="function"&&(r=this.options.renderScaleHeading.call(this,e));let o=this.scaleLength-r.join("").length,a=Math.round(o/(r.length-1)),u=r.map(p=>this.styles.strong(p)).join(" ".repeat(a)),A=" ".repeat(this.widths[0]);return this.margin[3]+A+this.margin[1]+u}scaleIndicator(e,r,o){if(typeof this.options.scaleIndicator=="function")return this.options.scaleIndicator.call(this,e,r,o);let a=e.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):a?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,r){let o=e.scale.map(n=>this.scaleIndicator(e,n,r)),a=this.term==="Hyper"?"":" ";return o.join(a+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,r){await this.onChoice(e,r);let o=this.index===r,a=await this.pointer(e,r),n=await e.hint;n&&!The.hasColor(n)&&(n=this.styles.muted(n));let u=E=>this.margin[3]+E.replace(/\s+$/,"").padEnd(this.widths[0]," "),A=this.newline,p=this.indent(e),h=await this.resolve(e.message,this.state,e,r),C=await this.renderScale(e,r),w=this.margin[1]+this.margin[3];this.scaleLength=aft.unstyle(C).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-w.length);let b=The.wordWrap(h,{width:this.widths[0],newline:A}).split(` |
227 | `).map(E=>u(E)+this.margin[1]);return o&&(C=this.styles.info(C),b=b.map(E=>this.styles.info(E))),b[0]+=C,this.linebreak&&b.push(""),[p+a,b.join(` | 227 | `).map(E=>u(E)+this.margin[1]);return o&&(C=this.styles.info(C),b=b.map(E=>this.styles.info(E))),b[0]+=C,this.linebreak&&b.push(""),[p+a,b.join(` |
228 | `)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return"";this.tableize();let e=this.visible.map(async(a,n)=>await this.renderChoice(a,n)),r=await Promise.all(e),o=await this.renderScaleHeading();return this.margin[0]+[o,...r.map(a=>a.join(" "))].join(` | 228 | `)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return"";this.tableize();let e=this.visible.map(async(a,n)=>await this.renderChoice(a,n)),r=await Promise.all(e),o=await this.renderScaleHeading();return this.margin[0]+[o,...r.map(a=>a.join(" "))].join(` |
229 | `)}async render(){let{submitted:e,size:r}=this.state,o=await this.prefix(),a=await this.separator(),n=await this.message(),u="";this.options.promptLine!==!1&&(u=[o,n,a,""].join(" "),this.state.prompt=u);let A=await this.header(),p=await this.format(),h=await this.renderScaleKey(),C=await this.error()||await this.hint(),w=await this.renderChoices(),v=await this.footer(),b=this.emptyError;p&&(u+=p),C&&!u.includes(C)&&(u+=" "+C),e&&!p&&!w.trim()&&this.multiple&&b!=null&&(u+=this.styles.danger(b)),this.clear(r),this.write([A,u,h,w,v].filter(Boolean).join(` | 229 | `)}async render(){let{submitted:e,size:r}=this.state,o=await this.prefix(),a=await this.separator(),n=await this.message(),u="";this.options.promptLine!==!1&&(u=[o,n,a,""].join(" "),this.state.prompt=u);let A=await this.header(),p=await this.format(),h=await this.renderScaleKey(),C=await this.error()||await this.hint(),w=await this.renderChoices(),v=await this.footer(),b=this.emptyError;p&&(u+=p),C&&!u.includes(C)&&(u+=" "+C),e&&!p&&!w.trim()&&this.multiple&&b!=null&&(u+=this.styles.danger(b)),this.clear(r),this.write([A,u,h,w,v].filter(Boolean).join(` |
230 | `)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIndex;return this.base.submit.call(this)}};xhe.exports=l8});var Fhe=U((E_t,khe)=>{"use strict";var Qhe=Vc(),JAt=(t="")=>typeof t=="string"?t.replace(/^['"]|['"]$/g,""):"",u8=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=JAt(e.initial||this.field.initial||""),this.message=e.message||this.name,this.cursor=0,this.input="",this.lines=[]}},VAt=async(t={},e={},r=o=>o)=>{let o=new Set,a=t.fields||[],n=t.template,u=[],A=[],p=[],h=1;typeof n=="function"&&(n=await n());let C=-1,w=()=>n[++C],v=()=>n[C+1],b=E=>{E.line=h,u.push(E)};for(b({type:"bos",value:""});C<n.length-1;){let E=w();if(/^[^\S\n ]$/.test(E)){b({type:"text",value:E});continue}if(E===` | 230 | `)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIndex;return this.base.submit.call(this)}};Nhe.exports=A8});var Uhe=U((L_t,Mhe)=>{"use strict";var Ohe=Zc(),cft=(t="")=>typeof t=="string"?t.replace(/^['"]|['"]$/g,""):"",p8=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=cft(e.initial||this.field.initial||""),this.message=e.message||this.name,this.cursor=0,this.input="",this.lines=[]}},uft=async(t={},e={},r=o=>o)=>{let o=new Set,a=t.fields||[],n=t.template,u=[],A=[],p=[],h=1;typeof n=="function"&&(n=await n());let C=-1,w=()=>n[++C],v=()=>n[C+1],b=E=>{E.line=h,u.push(E)};for(b({type:"bos",value:""});C<n.length-1;){let E=w();if(/^[^\S\n ]$/.test(E)){b({type:"text",value:E});continue}if(E===` |
231 | `){b({type:"newline",value:E}),h++;continue}if(E==="\\"){E+=w(),b({type:"text",value:E});continue}if((E==="$"||E==="#"||E==="{")&&v()==="{"){let L=w();E+=L;let _={type:"template",open:E,inner:"",close:"",value:E},J;for(;J=w();){if(J==="}"){v()==="}"&&(J+=w()),_.value+=J,_.close=J;break}J===":"?(_.initial="",_.key=_.inner):_.initial!==void 0&&(_.initial+=J),_.value+=J,_.inner+=J}_.template=_.open+(_.initial||_.inner)+_.close,_.key=_.key||_.inner,e.hasOwnProperty(_.key)&&(_.initial=e[_.key]),_=r(_),b(_),p.push(_.key),o.add(_.key);let re=A.find(oe=>oe.name===_.key);_.field=a.find(oe=>oe.name===_.key),re||(re=new u8(_),A.push(re)),re.lines.push(_.line-1);continue}let R=u[u.length-1];R.type==="text"&&R.line===h?R.value+=E:b({type:"text",value:E})}return b({type:"eos",value:""}),{input:n,tabstops:u,unique:o,keys:p,items:A}};khe.exports=async t=>{let e=t.options,r=new Set(e.required===!0?[]:e.required||[]),o={...e.values,...e.initial},{tabstops:a,items:n,keys:u}=await VAt(e,o),A=c8("result",t,e),p=c8("format",t,e),h=c8("validate",t,e,!0),C=t.isValue.bind(t);return async(w={},v=!1)=>{let b=0;w.required=r,w.items=n,w.keys=u,w.output="";let E=async(J,re,oe,pe)=>{let he=await h(J,re,oe,pe);return he===!1?"Invalid field "+oe.name:he};for(let J of a){let re=J.value,oe=J.key;if(J.type!=="template"){re&&(w.output+=re);continue}if(J.type==="template"){let pe=n.find(Pe=>Pe.name===oe);e.required===!0&&w.required.add(pe.name);let he=[pe.input,w.values[pe.value],pe.value,re].find(C),ge=(pe.field||{}).message||J.inner;if(v){let Pe=await E(w.values[oe],w,pe,b);if(Pe&&typeof Pe=="string"||Pe===!1){w.invalid.set(oe,Pe);continue}w.invalid.delete(oe);let g=await A(w.values[oe],w,pe,b);w.output+=Qhe.unstyle(g);continue}pe.placeholder=!1;let le=re;re=await p(re,w,pe,b),he!==re?(w.values[oe]=he,re=t.styles.typing(he),w.missing.delete(ge)):(w.values[oe]=void 0,he=`<${ge}>`,re=t.styles.primary(he),pe.placeholder=!0,w.required.has(oe)&&w.missing.add(ge)),w.missing.has(ge)&&w.validating&&(re=t.styles.warning(he)),w.invalid.has(oe)&&w.validating&&(re=t.styles.danger(he)),b===w.index&&(le!==re?re=t.styles.underline(re):re=t.styles.heading(Qhe.unstyle(re))),b++}re&&(w.output+=re)}let R=w.output.split(` | 231 | `){b({type:"newline",value:E}),h++;continue}if(E==="\\"){E+=w(),b({type:"text",value:E});continue}if((E==="$"||E==="#"||E==="{")&&v()==="{"){let L=w();E+=L;let _={type:"template",open:E,inner:"",close:"",value:E},V;for(;V=w();){if(V==="}"){v()==="}"&&(V+=w()),_.value+=V,_.close=V;break}V===":"?(_.initial="",_.key=_.inner):_.initial!==void 0&&(_.initial+=V),_.value+=V,_.inner+=V}_.template=_.open+(_.initial||_.inner)+_.close,_.key=_.key||_.inner,e.hasOwnProperty(_.key)&&(_.initial=e[_.key]),_=r(_),b(_),p.push(_.key),o.add(_.key);let re=A.find(ae=>ae.name===_.key);_.field=a.find(ae=>ae.name===_.key),re||(re=new p8(_),A.push(re)),re.lines.push(_.line-1);continue}let R=u[u.length-1];R.type==="text"&&R.line===h?R.value+=E:b({type:"text",value:E})}return b({type:"eos",value:""}),{input:n,tabstops:u,unique:o,keys:p,items:A}};Mhe.exports=async t=>{let e=t.options,r=new Set(e.required===!0?[]:e.required||[]),o={...e.values,...e.initial},{tabstops:a,items:n,keys:u}=await uft(e,o),A=f8("result",t,e),p=f8("format",t,e),h=f8("validate",t,e,!0),C=t.isValue.bind(t);return async(w={},v=!1)=>{let b=0;w.required=r,w.items=n,w.keys=u,w.output="";let E=async(V,re,ae,he)=>{let pe=await h(V,re,ae,he);return pe===!1?"Invalid field "+ae.name:pe};for(let V of a){let re=V.value,ae=V.key;if(V.type!=="template"){re&&(w.output+=re);continue}if(V.type==="template"){let he=n.find(Pe=>Pe.name===ae);e.required===!0&&w.required.add(he.name);let pe=[he.input,w.values[he.value],he.value,re].find(C),ge=(he.field||{}).message||V.inner;if(v){let Pe=await E(w.values[ae],w,he,b);if(Pe&&typeof Pe=="string"||Pe===!1){w.invalid.set(ae,Pe);continue}w.invalid.delete(ae);let g=await A(w.values[ae],w,he,b);w.output+=Ohe.unstyle(g);continue}he.placeholder=!1;let le=re;re=await p(re,w,he,b),pe!==re?(w.values[ae]=pe,re=t.styles.typing(pe),w.missing.delete(ge)):(w.values[ae]=void 0,pe=`<${ge}>`,re=t.styles.primary(pe),he.placeholder=!0,w.required.has(ae)&&w.missing.add(ge)),w.missing.has(ge)&&w.validating&&(re=t.styles.warning(pe)),w.invalid.has(ae)&&w.validating&&(re=t.styles.danger(pe)),b===w.index&&(le!==re?re=t.styles.underline(re):re=t.styles.heading(Ohe.unstyle(re))),b++}re&&(w.output+=re)}let R=w.output.split(` |
232 | `).map(J=>" "+J),L=n.length,_=0;for(let J of n)w.invalid.has(J.name)&&J.lines.forEach(re=>{R[re][0]===" "&&(R[re]=w.styles.danger(w.symbols.bullet)+R[re].slice(1))}),t.isValue(w.values[J.name])&&_++;return w.completed=(_/L*100).toFixed(0),w.output=R.join(` | 232 | `).map(V=>" "+V),L=n.length,_=0;for(let V of n)w.invalid.has(V.name)&&V.lines.forEach(re=>{R[re][0]===" "&&(R[re]=w.styles.danger(w.symbols.bullet)+R[re].slice(1))}),t.isValue(w.values[V.name])&&_++;return w.completed=(_/L*100).toFixed(0),w.output=R.join(` |
233 | `),w.output}};function c8(t,e,r,o){return(a,n,u,A)=>typeof u.field[t]=="function"?u.field[t].call(e,a,n,u,A):[o,a].find(p=>e.isValue(p))}});var The=U((C_t,Rhe)=>{"use strict";var zAt=Vc(),XAt=Fhe(),ZAt=oC(),A8=class extends ZAt{constructor(e){super(e),this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await XAt(this),await super.initialize()}async reset(e){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},e!==!0&&(await this.initialize(),await this.render())}moveCursor(e){let r=this.getItem();this.cursor+=e,r.cursor+=e}dispatch(e,r){if(!r.code&&!r.ctrl&&e!=null&&this.getItem()){this.append(e,r);return}this.alert()}append(e,r){let o=this.getItem(),a=o.input.slice(0,this.cursor),n=o.input.slice(this.cursor);this.input=o.input=`${a}${e}${n}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let r=e.input.slice(this.cursor),o=e.input.slice(0,this.cursor-1);this.input=e.input=`${o}${r}`,this.moveCursor(-1),this.render()}increment(e){return e>=this.state.keys.length-1?0:e+1}decrement(e){return e<=0?this.state.keys.length-1:e-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(e){let r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:e,keys:r=[],submitted:o,size:a}=this.state,n=[this.options.newline,` | 233 | `),w.output}};function f8(t,e,r,o){return(a,n,u,A)=>typeof u.field[t]=="function"?u.field[t].call(e,a,n,u,A):[o,a].find(p=>e.isValue(p))}});var Hhe=U((O_t,_he)=>{"use strict";var Aft=Zc(),fft=Uhe(),pft=AC(),h8=class extends pft{constructor(e){super(e),this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await fft(this),await super.initialize()}async reset(e){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},e!==!0&&(await this.initialize(),await this.render())}moveCursor(e){let r=this.getItem();this.cursor+=e,r.cursor+=e}dispatch(e,r){if(!r.code&&!r.ctrl&&e!=null&&this.getItem()){this.append(e,r);return}this.alert()}append(e,r){let o=this.getItem(),a=o.input.slice(0,this.cursor),n=o.input.slice(this.cursor);this.input=o.input=`${a}${e}${n}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let r=e.input.slice(this.cursor),o=e.input.slice(0,this.cursor-1);this.input=e.input=`${o}${r}`,this.moveCursor(-1),this.render()}increment(e){return e>=this.state.keys.length-1?0:e+1}decrement(e){return e<=0?this.state.keys.length-1:e-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(e){let r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:e,keys:r=[],submitted:o,size:a}=this.state,n=[this.options.newline,` |
234 | `].find(J=>J!=null),u=await this.prefix(),A=await this.separator(),p=await this.message(),h=[u,p,A].filter(Boolean).join(" ");this.state.prompt=h;let C=await this.header(),w=await this.error()||"",v=await this.hint()||"",b=o?"":await this.interpolate(this.state),E=this.state.key=r[e]||"",R=await this.format(E),L=await this.footer();R&&(h+=" "+R),v&&!R&&this.state.completed===0&&(h+=" "+v),this.clear(a);let _=[C,h,b,L,w.trim()];this.write(_.filter(Boolean).join(n)),this.restore()}getItem(e){let{items:r,keys:o,index:a}=this.state,n=r.find(u=>u.name===o[a]);return n&&n.input!=null&&(this.input=n.input,this.cursor=n.cursor),n}async submit(){typeof this.interpolate!="function"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:e,missing:r,output:o,values:a}=this.state;if(e.size){let A="";for(let[p,h]of e)A+=`Invalid ${p}: ${h} | 234 | `].find(V=>V!=null),u=await this.prefix(),A=await this.separator(),p=await this.message(),h=[u,p,A].filter(Boolean).join(" ");this.state.prompt=h;let C=await this.header(),w=await this.error()||"",v=await this.hint()||"",b=o?"":await this.interpolate(this.state),E=this.state.key=r[e]||"",R=await this.format(E),L=await this.footer();R&&(h+=" "+R),v&&!R&&this.state.completed===0&&(h+=" "+v),this.clear(a);let _=[C,h,b,L,w.trim()];this.write(_.filter(Boolean).join(n)),this.restore()}getItem(e){let{items:r,keys:o,index:a}=this.state,n=r.find(u=>u.name===o[a]);return n&&n.input!=null&&(this.input=n.input,this.cursor=n.cursor),n}async submit(){typeof this.interpolate!="function"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:e,missing:r,output:o,values:a}=this.state;if(e.size){let A="";for(let[p,h]of e)A+=`Invalid ${p}: ${h} |
235 | `;return this.state.error=A,super.submit()}if(r.size)return this.state.error="Required: "+[...r.keys()].join(", "),super.submit();let u=zAt.unstyle(o).split(` | 235 | `;return this.state.error=A,super.submit()}if(r.size)return this.state.error="Required: "+[...r.keys()].join(", "),super.submit();let u=Aft.unstyle(o).split(` |
236 | `).map(A=>A.slice(1)).join(` | 236 | `).map(A=>A.slice(1)).join(` |
237 | `);return this.value={values:a,result:u},super.submit()}};Rhe.exports=A8});var Lhe=U((I_t,Nhe)=>{"use strict";var $At="(Use <shift>+<up/down> to sort)",eft=v0(),f8=class extends eft{constructor(e){super({...e,reorder:!1,sort:!0,multiple:!0}),this.state.hint=[this.options.hint,$At].find(this.isValue.bind(this))}indicator(){return""}async renderChoice(e,r){let o=await super.renderChoice(e,r),a=this.symbols.identicalTo+" ",n=this.index===r&&this.sorting?this.styles.muted(a):" ";return this.options.drag===!1&&(n=""),this.options.numbered===!0?n+`${r+1} - `+o:n+o}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};Nhe.exports=f8});var Mhe=U((w_t,Ohe)=>{"use strict";var tft=G1(),p8=class extends tft{constructor(e={}){if(super(e),this.emptyError=e.emptyError||"No items were selected",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=["","4 - Strongly Agree","3 - Agree","2 - Neutral","1 - Disagree","0 - Strongly Disagree",""];r=r.map(o=>this.styles.muted(o)),this.state.header=r.join(` | 237 | `);return this.value={values:a,result:u},super.submit()}};_he.exports=h8});var jhe=U((M_t,qhe)=>{"use strict";var hft="(Use <shift>+<up/down> to sort)",gft=S0(),g8=class extends gft{constructor(e){super({...e,reorder:!1,sort:!0,multiple:!0}),this.state.hint=[this.options.hint,hft].find(this.isValue.bind(this))}indicator(){return""}async renderChoice(e,r){let o=await super.renderChoice(e,r),a=this.symbols.identicalTo+" ",n=this.index===r&&this.sorting?this.styles.muted(a):" ";return this.options.drag===!1&&(n=""),this.options.numbered===!0?n+`${r+1} - `+o:n+o}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};qhe.exports=g8});var Whe=U((U_t,Ghe)=>{"use strict";var dft=z1(),d8=class extends dft{constructor(e={}){if(super(e),this.emptyError=e.emptyError||"No items were selected",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=["","4 - Strongly Agree","3 - Agree","2 - Neutral","1 - Disagree","0 - Strongly Disagree",""];r=r.map(o=>this.styles.muted(o)),this.state.header=r.join(` |
238 | `)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...e);for(let o of r)o.scale=rft(5,this.options),o.scaleIdx=2;return r}dispatch(){this.alert()}space(){let e=this.focused,r=e.scale[e.scaleIdx],o=r.selected;return e.scale.forEach(a=>a.selected=!1),r.selected=!o,this.render()}indicator(){return""}pointer(){return""}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIdx>=e.scale.length-1?this.alert():(e.scaleIdx++,this.render())}left(){let e=this.focused;return e.scaleIdx<=0?this.alert():(e.scaleIdx--,this.render())}indent(){return" "}async renderChoice(e,r){await this.onChoice(e,r);let o=this.index===r,a=this.term==="Hyper",n=a?9:8,u=a?"":" ",A=this.symbols.line.repeat(n),p=" ".repeat(n+(a?0:1)),h=re=>(re?this.styles.success("\u25C9"):"\u25EF")+u,C=r+1+".",w=o?this.styles.heading:this.styles.noop,v=await this.resolve(e.message,this.state,e,r),b=this.indent(e),E=b+e.scale.map((re,oe)=>h(oe===e.scaleIdx)).join(A),R=re=>re===e.scaleIdx?w(re):re,L=b+e.scale.map((re,oe)=>R(oe)).join(p),_=()=>[C,v].filter(Boolean).join(" "),J=()=>[_(),E,L," "].filter(Boolean).join(` | 238 | `)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...e);for(let o of r)o.scale=mft(5,this.options),o.scaleIdx=2;return r}dispatch(){this.alert()}space(){let e=this.focused,r=e.scale[e.scaleIdx],o=r.selected;return e.scale.forEach(a=>a.selected=!1),r.selected=!o,this.render()}indicator(){return""}pointer(){return""}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIdx>=e.scale.length-1?this.alert():(e.scaleIdx++,this.render())}left(){let e=this.focused;return e.scaleIdx<=0?this.alert():(e.scaleIdx--,this.render())}indent(){return" "}async renderChoice(e,r){await this.onChoice(e,r);let o=this.index===r,a=this.term==="Hyper",n=a?9:8,u=a?"":" ",A=this.symbols.line.repeat(n),p=" ".repeat(n+(a?0:1)),h=re=>(re?this.styles.success("\u25C9"):"\u25EF")+u,C=r+1+".",w=o?this.styles.heading:this.styles.noop,v=await this.resolve(e.message,this.state,e,r),b=this.indent(e),E=b+e.scale.map((re,ae)=>h(ae===e.scaleIdx)).join(A),R=re=>re===e.scaleIdx?w(re):re,L=b+e.scale.map((re,ae)=>R(ae)).join(p),_=()=>[C,v].filter(Boolean).join(" "),V=()=>[_(),E,L," "].filter(Boolean).join(` |
239 | `);return o&&(E=this.styles.cyan(E),L=this.styles.cyan(L)),J()}async renderChoices(){if(this.state.submitted)return"";let e=this.visible.map(async(o,a)=>await this.renderChoice(o,a)),r=await Promise.all(e);return r.length||r.push(this.styles.danger("No matching choices")),r.join(` | 239 | `);return o&&(E=this.styles.cyan(E),L=this.styles.cyan(L)),V()}async renderChoices(){if(this.state.submitted)return"";let e=this.visible.map(async(o,a)=>await this.renderChoice(o,a)),r=await Promise.all(e);return r.length||r.push(this.styles.danger("No matching choices")),r.join(` |
240 | `)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(", "):""}async render(){let{submitted:e,size:r}=this.state,o=await this.prefix(),a=await this.separator(),n=await this.message(),u=[o,n,a].filter(Boolean).join(" ");this.state.prompt=u;let A=await this.header(),p=await this.format(),h=await this.error()||await this.hint(),C=await this.renderChoices(),w=await this.footer();(p||!h)&&(u+=" "+p),h&&!u.includes(h)&&(u+=" "+h),e&&!p&&!C&&this.multiple&&this.type!=="form"&&(u+=this.styles.danger(this.emptyError)),this.clear(r),this.write([u,A,C,w].filter(Boolean).join(` | 240 | `)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(", "):""}async render(){let{submitted:e,size:r}=this.state,o=await this.prefix(),a=await this.separator(),n=await this.message(),u=[o,n,a].filter(Boolean).join(" ");this.state.prompt=u;let A=await this.header(),p=await this.format(),h=await this.error()||await this.hint(),C=await this.renderChoices(),w=await this.footer();(p||!h)&&(u+=" "+p),h&&!u.includes(h)&&(u+=" "+h),e&&!p&&!C&&this.multiple&&this.type!=="form"&&(u+=this.styles.danger(this.emptyError)),this.clear(r),this.write([u,A,C,w].filter(Boolean).join(` |
241 | `)),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIdx;return this.base.submit.call(this)}};function rft(t,e={}){if(Array.isArray(e.scale))return e.scale.map(o=>({...o}));let r=[];for(let o=1;o<t+1;o++)r.push({i:o,selected:!1});return r}Ohe.exports=p8});var _he=U((B_t,Uhe)=>{Uhe.exports=t8()});var qhe=U((v_t,Hhe)=>{"use strict";var nft=Kb(),h8=class extends nft{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||"no",this.enabled=this.options.enabled||"yes",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(e="",r){switch(e.toLowerCase()){case" ":return this.toggle();case"1":case"y":case"t":return this.enable();case"0":case"n":case"f":return this.disable();default:return this.alert()}}format(){let e=o=>this.styles.primary.underline(o);return[this.value?this.disabled:e(this.disabled),this.value?e(this.enabled):this.enabled].join(this.styles.muted(" / "))}async render(){let{size:e}=this.state,r=await this.header(),o=await this.prefix(),a=await this.separator(),n=await this.message(),u=await this.format(),A=await this.error()||await this.hint(),p=await this.footer(),h=[o,n,a,u].join(" ");this.state.prompt=h,A&&!h.includes(A)&&(h+=" "+A),this.clear(e),this.write([r,h,p].filter(Boolean).join(` | 241 | `)),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIdx;return this.base.submit.call(this)}};function mft(t,e={}){if(Array.isArray(e.scale))return e.scale.map(o=>({...o}));let r=[];for(let o=1;o<t+1;o++)r.push({i:o,selected:!1});return r}Ghe.exports=d8});var Khe=U((__t,Yhe)=>{Yhe.exports=i8()});var Jhe=U((H_t,Vhe)=>{"use strict";var yft=nQ(),m8=class extends yft{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||"no",this.enabled=this.options.enabled||"yes",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(e="",r){switch(e.toLowerCase()){case" ":return this.toggle();case"1":case"y":case"t":return this.enable();case"0":case"n":case"f":return this.disable();default:return this.alert()}}format(){let e=o=>this.styles.primary.underline(o);return[this.value?this.disabled:e(this.disabled),this.value?e(this.enabled):this.enabled].join(this.styles.muted(" / "))}async render(){let{size:e}=this.state,r=await this.header(),o=await this.prefix(),a=await this.separator(),n=await this.message(),u=await this.format(),A=await this.error()||await this.hint(),p=await this.footer(),h=[o,n,a,u].join(" ");this.state.prompt=h,A&&!h.includes(A)&&(h+=" "+A),this.clear(e),this.write([r,h,p].filter(Boolean).join(` |
242 | `)),this.write(this.margin[2]),this.restore()}};Hhe.exports=h8});var Ghe=U((D_t,jhe)=>{"use strict";var ift=v0(),g8=class extends ift{constructor(e){if(super(e),typeof this.options.correctChoice!="number"||this.options.correctChoice<0)throw new Error("Please specify the index of the correct answer from the list of choices")}async toChoices(e,r){let o=await super.toChoices(e,r);if(o.length<2)throw new Error("Please give at least two choices to the user");if(this.options.correctChoice>o.length)throw new Error("Please specify the index of the correct answer from the list of choices");return o}check(e){return e.index===this.options.correctChoice}async result(e){return{selectedAnswer:e,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};jhe.exports=g8});var Yhe=U(d8=>{"use strict";var Whe=Fo(),ps=(t,e)=>{Whe.defineExport(d8,t,e),Whe.defineExport(d8,t.toLowerCase(),e)};ps("AutoComplete",()=>Z0e());ps("BasicAuth",()=>she());ps("Confirm",()=>lhe());ps("Editable",()=>uhe());ps("Form",()=>Yb());ps("Input",()=>t8());ps("Invisible",()=>mhe());ps("List",()=>Ehe());ps("MultiSelect",()=>Ihe());ps("Numeral",()=>vhe());ps("Password",()=>She());ps("Scale",()=>bhe());ps("Select",()=>v0());ps("Snippet",()=>The());ps("Sort",()=>Lhe());ps("Survey",()=>Mhe());ps("Text",()=>_he());ps("Toggle",()=>qhe());ps("Quiz",()=>Ghe())});var Jhe=U((P_t,Khe)=>{Khe.exports={ArrayPrompt:G1(),AuthPrompt:V_(),BooleanPrompt:Kb(),NumberPrompt:o8(),StringPrompt:Wd()}});var Y1=U((x_t,zhe)=>{"use strict";var Vhe=Ie("assert"),y8=Ie("events"),D0=Fo(),Xc=class extends y8{constructor(e,r){super(),this.options=D0.merge({},e),this.answers={...r}}register(e,r){if(D0.isObject(e)){for(let a of Object.keys(e))this.register(a,e[a]);return this}Vhe.equal(typeof r,"function","expected a function");let o=e.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[o]=r:this.prompts[o]=r(this.Prompt,this),this}async prompt(e=[]){for(let r of[].concat(e))try{typeof r=="function"&&(r=await r.call(this)),await this.ask(D0.merge({},this.options,r))}catch(o){return Promise.reject(o)}return this.answers}async ask(e){typeof e=="function"&&(e=await e.call(this));let r=D0.merge({},this.options,e),{type:o,name:a}=e,{set:n,get:u}=D0;if(typeof o=="function"&&(o=await o.call(this,e,this.answers)),!o)return this.answers[a];Vhe(this.prompts[o],`Prompt "${o}" is not registered`);let A=new this.prompts[o](r),p=u(this.answers,a);A.state.answers=this.answers,A.enquirer=this,a&&A.on("submit",C=>{this.emit("answer",a,C,A),n(this.answers,a,C)});let h=A.emit.bind(A);return A.emit=(...C)=>(this.emit.call(this,...C),h(...C)),this.emit("prompt",A,this),r.autofill&&p!=null?(A.value=A.input=p,r.autofill==="show"&&await A.submit()):p=A.value=await A.run(),p}use(e){return e.call(this,this),this}set Prompt(e){this._Prompt=e}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(e){this._Prompt=e}static get Prompt(){return this._Prompt||oC()}static get prompts(){return Yhe()}static get types(){return Jhe()}static get prompt(){let e=(r,...o)=>{let a=new this(...o),n=a.emit.bind(a);return a.emit=(...u)=>(e.emit(...u),n(...u)),a.prompt(r)};return D0.mixinEmitter(e,new y8),e}};D0.mixinEmitter(Xc,new y8);var m8=Xc.prompts;for(let t of Object.keys(m8)){let e=t.toLowerCase(),r=o=>new m8[t](o).run();Xc.prompt[e]=r,Xc[e]=r,Xc[t]||Reflect.defineProperty(Xc,t,{get:()=>m8[t]})}var W1=t=>{D0.defineExport(Xc,t,()=>Xc.types[t])};W1("ArrayPrompt");W1("AuthPrompt");W1("BooleanPrompt");W1("NumberPrompt");W1("StringPrompt");zhe.exports=Xc});var z1=U((u8t,nge)=>{var uft=Ob();function Aft(t,e,r){var o=t==null?void 0:uft(t,e);return o===void 0?r:o}nge.exports=Aft});var oge=U((d8t,sge)=>{function fft(t,e){for(var r=-1,o=t==null?0:t.length;++r<o&&e(t[r],r,t)!==!1;);return t}sge.exports=fft});var lge=U((m8t,age)=>{var pft=fd(),hft=RS();function gft(t,e){return t&&pft(e,hft(e),t)}age.exports=gft});var uge=U((y8t,cge)=>{var dft=fd(),mft=_y();function yft(t,e){return t&&dft(e,mft(e),t)}cge.exports=yft});var fge=U((E8t,Age)=>{var Eft=fd(),Cft=SS();function Ift(t,e){return Eft(t,Cft(t),e)}Age.exports=Ift});var v8=U((C8t,pge)=>{var wft=DS(),Bft=MS(),vft=SS(),Dft=UN(),Sft=Object.getOwnPropertySymbols,Pft=Sft?function(t){for(var e=[];t;)wft(e,vft(t)),t=Bft(t);return e}:Dft;pge.exports=Pft});var gge=U((I8t,hge)=>{var xft=fd(),bft=v8();function Qft(t,e){return xft(t,bft(t),e)}hge.exports=Qft});var D8=U((w8t,dge)=>{var kft=MN(),Fft=v8(),Rft=_y();function Tft(t){return kft(t,Rft,Fft)}dge.exports=Tft});var yge=U((B8t,mge)=>{var Nft=Object.prototype,Lft=Nft.hasOwnProperty;function Oft(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&Lft.call(t,"index")&&(r.index=t.index,r.input=t.input),r}mge.exports=Oft});var Cge=U((v8t,Ege)=>{var Mft=LS();function Uft(t,e){var r=e?Mft(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}Ege.exports=Uft});var wge=U((D8t,Ige)=>{var _ft=/\w*$/;function Hft(t){var e=new t.constructor(t.source,_ft.exec(t));return e.lastIndex=t.lastIndex,e}Ige.exports=Hft});var Pge=U((S8t,Sge)=>{var Bge=cd(),vge=Bge?Bge.prototype:void 0,Dge=vge?vge.valueOf:void 0;function qft(t){return Dge?Object(Dge.call(t)):{}}Sge.exports=qft});var bge=U((P8t,xge)=>{var jft=LS(),Gft=Cge(),Wft=wge(),Yft=Pge(),Kft=$N(),Jft="[object Boolean]",Vft="[object Date]",zft="[object Map]",Xft="[object Number]",Zft="[object RegExp]",$ft="[object Set]",ept="[object String]",tpt="[object Symbol]",rpt="[object ArrayBuffer]",npt="[object DataView]",ipt="[object Float32Array]",spt="[object Float64Array]",opt="[object Int8Array]",apt="[object Int16Array]",lpt="[object Int32Array]",cpt="[object Uint8Array]",upt="[object Uint8ClampedArray]",Apt="[object Uint16Array]",fpt="[object Uint32Array]";function ppt(t,e,r){var o=t.constructor;switch(e){case rpt:return jft(t);case Jft:case Vft:return new o(+t);case npt:return Gft(t,r);case ipt:case spt:case opt:case apt:case lpt:case cpt:case upt:case Apt:case fpt:return Kft(t,r);case zft:return new o;case Xft:case ept:return new o(t);case Zft:return Wft(t);case $ft:return new o;case tpt:return Yft(t)}}xge.exports=ppt});var kge=U((x8t,Qge)=>{var hpt=Qw(),gpt=zu(),dpt="[object Map]";function mpt(t){return gpt(t)&&hpt(t)==dpt}Qge.exports=mpt});var Nge=U((b8t,Tge)=>{var ypt=kge(),Ept=xS(),Fge=bS(),Rge=Fge&&Fge.isMap,Cpt=Rge?Ept(Rge):ypt;Tge.exports=Cpt});var Oge=U((Q8t,Lge)=>{var Ipt=Qw(),wpt=zu(),Bpt="[object Set]";function vpt(t){return wpt(t)&&Ipt(t)==Bpt}Lge.exports=vpt});var Hge=U((k8t,_ge)=>{var Dpt=Oge(),Spt=xS(),Mge=bS(),Uge=Mge&&Mge.isSet,Ppt=Uge?Spt(Uge):Dpt;_ge.exports=Ppt});var S8=U((F8t,Wge)=>{var xpt=BS(),bpt=oge(),Qpt=US(),kpt=lge(),Fpt=uge(),Rpt=ZN(),Tpt=OS(),Npt=fge(),Lpt=gge(),Opt=jN(),Mpt=D8(),Upt=Qw(),_pt=yge(),Hpt=bge(),qpt=eL(),jpt=jl(),Gpt=Dw(),Wpt=Nge(),Ypt=il(),Kpt=Hge(),Jpt=RS(),Vpt=_y(),zpt=1,Xpt=2,Zpt=4,qge="[object Arguments]",$pt="[object Array]",e0t="[object Boolean]",t0t="[object Date]",r0t="[object Error]",jge="[object Function]",n0t="[object GeneratorFunction]",i0t="[object Map]",s0t="[object Number]",Gge="[object Object]",o0t="[object RegExp]",a0t="[object Set]",l0t="[object String]",c0t="[object Symbol]",u0t="[object WeakMap]",A0t="[object ArrayBuffer]",f0t="[object DataView]",p0t="[object Float32Array]",h0t="[object Float64Array]",g0t="[object Int8Array]",d0t="[object Int16Array]",m0t="[object Int32Array]",y0t="[object Uint8Array]",E0t="[object Uint8ClampedArray]",C0t="[object Uint16Array]",I0t="[object Uint32Array]",zn={};zn[qge]=zn[$pt]=zn[A0t]=zn[f0t]=zn[e0t]=zn[t0t]=zn[p0t]=zn[h0t]=zn[g0t]=zn[d0t]=zn[m0t]=zn[i0t]=zn[s0t]=zn[Gge]=zn[o0t]=zn[a0t]=zn[l0t]=zn[c0t]=zn[y0t]=zn[E0t]=zn[C0t]=zn[I0t]=!0;zn[r0t]=zn[jge]=zn[u0t]=!1;function zb(t,e,r,o,a,n){var u,A=e&zpt,p=e&Xpt,h=e&Zpt;if(r&&(u=a?r(t,o,a,n):r(t)),u!==void 0)return u;if(!Ypt(t))return t;var C=jpt(t);if(C){if(u=_pt(t),!A)return Tpt(t,u)}else{var w=Upt(t),v=w==jge||w==n0t;if(Gpt(t))return Rpt(t,A);if(w==Gge||w==qge||v&&!a){if(u=p||v?{}:qpt(t),!A)return p?Lpt(t,Fpt(u,t)):Npt(t,kpt(u,t))}else{if(!zn[w])return a?t:{};u=Hpt(t,w,A)}}n||(n=new xpt);var b=n.get(t);if(b)return b;n.set(t,u),Kpt(t)?t.forEach(function(L){u.add(zb(L,e,r,L,t,n))}):Wpt(t)&&t.forEach(function(L,_){u.set(_,zb(L,e,r,_,t,n))});var E=h?p?Mpt:Opt:p?Vpt:Jpt,R=C?void 0:E(t);return bpt(R||t,function(L,_){R&&(_=L,L=t[_]),Qpt(u,_,zb(L,e,r,_,t,n))}),u}Wge.exports=zb});var P8=U((R8t,Yge)=>{var w0t=S8(),B0t=1,v0t=4;function D0t(t){return w0t(t,B0t|v0t)}Yge.exports=D0t});var x8=U((T8t,Kge)=>{var S0t=y_();function P0t(t,e,r){return t==null?t:S0t(t,e,r)}Kge.exports=P0t});var Zge=U((_8t,Xge)=>{var x0t=Object.prototype,b0t=x0t.hasOwnProperty;function Q0t(t,e){return t!=null&&b0t.call(t,e)}Xge.exports=Q0t});var ede=U((H8t,$ge)=>{var k0t=Zge(),F0t=E_();function R0t(t,e){return t!=null&&F0t(t,e,k0t)}$ge.exports=R0t});var rde=U((q8t,tde)=>{function T0t(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}tde.exports=T0t});var ide=U((j8t,nde)=>{var N0t=Ob(),L0t=gU();function O0t(t,e){return e.length<2?t:N0t(t,L0t(e,0,-1))}nde.exports=O0t});var Q8=U((G8t,sde)=>{var M0t=qd(),U0t=rde(),_0t=ide(),H0t=eC();function q0t(t,e){return e=M0t(e,t),t=_0t(t,e),t==null||delete t[H0t(U0t(e))]}sde.exports=q0t});var k8=U((W8t,ode)=>{var j0t=Q8();function G0t(t,e){return t==null?!0:j0t(t,e)}ode.exports=G0t});var Ade=U((CHt,K0t)=>{K0t.exports={name:"@yarnpkg/cli",version:"4.0.0-rc.37",stableVersion:"3.3.1",license:"BSD-2-Clause",main:"./sources/index.ts",exports:{".":"./sources/index.ts","./polyfills":"./sources/polyfills.ts","./package.json":"./package.json"},dependencies:{"@yarnpkg/core":"workspace:^","@yarnpkg/fslib":"workspace:^","@yarnpkg/libzip":"workspace:^","@yarnpkg/parsers":"workspace:^","@yarnpkg/plugin-compat":"workspace:^","@yarnpkg/plugin-constraints":"workspace:^","@yarnpkg/plugin-dlx":"workspace:^","@yarnpkg/plugin-essentials":"workspace:^","@yarnpkg/plugin-exec":"workspace:^","@yarnpkg/plugin-file":"workspace:^","@yarnpkg/plugin-git":"workspace:^","@yarnpkg/plugin-github":"workspace:^","@yarnpkg/plugin-http":"workspace:^","@yarnpkg/plugin-init":"workspace:^","@yarnpkg/plugin-interactive-tools":"workspace:^","@yarnpkg/plugin-link":"workspace:^","@yarnpkg/plugin-nm":"workspace:^","@yarnpkg/plugin-npm":"workspace:^","@yarnpkg/plugin-npm-cli":"workspace:^","@yarnpkg/plugin-pack":"workspace:^","@yarnpkg/plugin-patch":"workspace:^","@yarnpkg/plugin-pnp":"workspace:^","@yarnpkg/plugin-pnpm":"workspace:^","@yarnpkg/plugin-stage":"workspace:^","@yarnpkg/plugin-typescript":"workspace:^","@yarnpkg/plugin-version":"workspace:^","@yarnpkg/plugin-workspace-tools":"workspace:^","@yarnpkg/shell":"workspace:^","ci-info":"^3.2.0",clipanion:"^3.2.0-rc.10",semver:"^7.1.2",tslib:"^2.4.0",typanion:"^3.3.0"},devDependencies:{"@types/semver":"^7.1.0","@yarnpkg/builder":"workspace:^","@yarnpkg/monorepo":"workspace:^","@yarnpkg/pnpify":"workspace:^",micromatch:"^4.0.2"},peerDependencies:{"@yarnpkg/core":"workspace:^"},scripts:{postpack:"rm -rf lib",prepack:'run build:compile "$(pwd)"',"build:cli+hook":"run build:pnp:hook && builder build bundle","build:cli":"builder build bundle","run:cli":"builder run","update-local":"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/"},publishConfig:{main:"./lib/index.js",bin:null,exports:{".":"./lib/index.js","./package.json":"./package.json"}},files:["/lib/**/*","!/lib/pluginConfiguration.*","!/lib/cli.*"],"@yarnpkg/builder":{bundles:{standard:["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-constraints","@yarnpkg/plugin-dlx","@yarnpkg/plugin-exec","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools"]}},repository:{type:"git",url:"ssh://git@github.com/yarnpkg/berry.git",directory:"packages/yarnpkg-cli"},engines:{node:">=14.15.0"}}});var _8=U((zjt,vde)=>{"use strict";vde.exports=function(e,r){r===!0&&(r=0);var o="";if(typeof e=="string")try{o=new URL(e).protocol}catch{}else e&&e.constructor===URL&&(o=e.protocol);var a=o.split(/\:|\+/).filter(Boolean);return typeof r=="number"?a[r]:a}});var Sde=U((Xjt,Dde)=>{"use strict";var cht=_8();function uht(t){var e={protocols:[],protocol:null,port:null,resource:"",host:"",user:"",password:"",pathname:"",hash:"",search:"",href:t,query:{},parse_failed:!1};try{var r=new URL(t);e.protocols=cht(r),e.protocol=e.protocols[0],e.port=r.port,e.resource=r.hostname,e.host=r.host,e.user=r.username||"",e.password=r.password||"",e.pathname=r.pathname,e.hash=r.hash.slice(1),e.search=r.search.slice(1),e.href=r.href,e.query=Object.fromEntries(r.searchParams)}catch{e.protocols=["file"],e.protocol=e.protocols[0],e.port="",e.resource="",e.user="",e.pathname="",e.hash="",e.search="",e.href=t,e.query={},e.parse_failed=!0}return e}Dde.exports=uht});var bde=U((Zjt,xde)=>{"use strict";var Aht=Sde();function fht(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var pht=fht(Aht),hht="text/plain",ght="us-ascii",Pde=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),dht=(t,{stripHash:e})=>{let r=/^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(t);if(!r)throw new Error(`Invalid URL: ${t}`);let{type:o,data:a,hash:n}=r.groups,u=o.split(";");n=e?"":n;let A=!1;u[u.length-1]==="base64"&&(u.pop(),A=!0);let p=(u.shift()||"").toLowerCase(),C=[...u.map(w=>{let[v,b=""]=w.split("=").map(E=>E.trim());return v==="charset"&&(b=b.toLowerCase(),b===ght)?"":`${v}${b?`=${b}`:""}`}).filter(Boolean)];return A&&C.push("base64"),(C.length>0||p&&p!==hht)&&C.unshift(p),`data:${C.join(";")},${A?a.trim():a}${n?`#${n}`:""}`};function mht(t,e){if(e={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},t=t.trim(),/^data:/i.test(t))return dht(t,e);if(/^view-source:/i.test(t))throw new Error("`view-source:` is not supported as it is a non-standard protocol");let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let a=new URL(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&a.protocol==="https:"&&(a.protocol="http:"),e.forceHttps&&a.protocol==="http:"&&(a.protocol="https:"),e.stripAuthentication&&(a.username="",a.password=""),e.stripHash?a.hash="":e.stripTextFragment&&(a.hash=a.hash.replace(/#?:~:text.*?$/i,"")),a.pathname){let u=/\b[a-z][a-z\d+\-.]{1,50}:\/\//g,A=0,p="";for(;;){let C=u.exec(a.pathname);if(!C)break;let w=C[0],v=C.index,b=a.pathname.slice(A,v);p+=b.replace(/\/{2,}/g,"/"),p+=w,A=v+w.length}let h=a.pathname.slice(A,a.pathname.length);p+=h.replace(/\/{2,}/g,"/"),a.pathname=p}if(a.pathname)try{a.pathname=decodeURI(a.pathname)}catch{}if(e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let u=a.pathname.split("/"),A=u[u.length-1];Pde(A,e.removeDirectoryIndex)&&(u=u.slice(0,-1),a.pathname=u.slice(1).join("/")+"/")}if(a.hostname&&(a.hostname=a.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.(?!www\.)[a-z\-\d]{1,63}\.[a-z.\-\d]{2,63}$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let u of[...a.searchParams.keys()])Pde(u,e.removeQueryParameters)&&a.searchParams.delete(u);if(e.removeQueryParameters===!0&&(a.search=""),e.sortQueryParameters){a.searchParams.sort();try{a.search=decodeURIComponent(a.search)}catch{}}e.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\/$/,""));let n=t;return t=a.toString(),!e.removeSingleSlash&&a.pathname==="/"&&!n.endsWith("/")&&a.hash===""&&(t=t.replace(/\/$/,"")),(e.removeTrailingSlash||a.pathname==="/")&&a.hash===""&&e.removeSingleSlash&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t}var H8=(t,e=!1)=>{let r=/^(?:([a-z_][a-z0-9_-]{0,31})@|https?:\/\/)([\w\.\-@]+)[\/:]([\~,\.\w,\-,\_,\/]+?(?:\.git|\/)?)$/,o=n=>{let u=new Error(n);throw u.subject_url=t,u};(typeof t!="string"||!t.trim())&&o("Invalid url."),t.length>H8.MAX_INPUT_LENGTH&&o("Input exceeds maximum length. If needed, change the value of parseUrl.MAX_INPUT_LENGTH."),e&&(typeof e!="object"&&(e={stripHash:!1}),t=mht(t,e));let a=pht.default(t);if(a.parse_failed){let n=a.href.match(r);n?(a.protocols=["ssh"],a.protocol="ssh",a.resource=n[2],a.host=n[2],a.user=n[1],a.pathname=`/${n[3]}`,a.parse_failed=!1):o("URL parsing failed.")}return a};H8.MAX_INPUT_LENGTH=2048;xde.exports=H8});var Fde=U(($jt,kde)=>{"use strict";var yht=_8();function Qde(t){if(Array.isArray(t))return t.indexOf("ssh")!==-1||t.indexOf("rsync")!==-1;if(typeof t!="string")return!1;var e=yht(t);if(t=t.substring(t.indexOf("://")+3),Qde(e))return!0;var r=new RegExp(".([a-zA-Z\\d]+):(\\d+)/");return!t.match(r)&&t.indexOf("@")<t.indexOf(":")}kde.exports=Qde});var Nde=U((e9t,Tde)=>{"use strict";var Eht=bde(),Rde=Fde();function Cht(t){var e=Eht(t);return e.token="",e.password==="x-oauth-basic"?e.token=e.user:e.user==="x-token-auth"&&(e.token=e.password),Rde(e.protocols)||e.protocols.length===0&&Rde(t)?e.protocol="ssh":e.protocols.length?e.protocol=e.protocols[0]:(e.protocol="file",e.protocols=["file"]),e.href=e.href.replace(/\/$/,""),e}Tde.exports=Cht});var Ode=U((t9t,Lde)=>{"use strict";var Iht=Nde();function q8(t){if(typeof t!="string")throw new Error("The url must be a string.");var e=/^([a-z\d-]{1,39})\/([-\.\w]{1,100})$/i;e.test(t)&&(t="https://github.com/"+t);var r=Iht(t),o=r.resource.split("."),a=null;switch(r.toString=function(L){return q8.stringify(this,L)},r.source=o.length>2?o.slice(1-o.length).join("."):r.source=r.resource,r.git_suffix=/\.git$/.test(r.pathname),r.name=decodeURIComponent((r.pathname||r.href).replace(/(^\/)|(\/$)/g,"").replace(/\.git$/,"")),r.owner=decodeURIComponent(r.user),r.source){case"git.cloudforge.com":r.owner=r.user,r.organization=o[0],r.source="cloudforge.com";break;case"visualstudio.com":if(r.resource==="vs-ssh.visualstudio.com"){a=r.name.split("/"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3],r.full_name=a[2]+"/"+a[3]);break}else{a=r.name.split("/"),a.length===2?(r.owner=a[1],r.name=a[1],r.full_name="_git/"+r.name):a.length===3?(r.name=a[2],a[0]==="DefaultCollection"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+"/_git/"+r.name):(r.owner=a[0],r.full_name=r.owner+"/_git/"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+"/"+r.owner+"/_git/"+r.name);break}case"dev.azure.com":case"azure.com":if(r.resource==="ssh.dev.azure.com"){a=r.name.split("/"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3]);break}else{a=r.name.split("/"),a.length===5?(r.organization=a[0],r.owner=a[1],r.name=a[4],r.full_name="_git/"+r.name):a.length===3?(r.name=a[2],a[0]==="DefaultCollection"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+"/_git/"+r.name):(r.owner=a[0],r.full_name=r.owner+"/_git/"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+"/"+r.owner+"/_git/"+r.name),r.query&&r.query.path&&(r.filepath=r.query.path.replace(/^\/+/g,"")),r.query&&r.query.version&&(r.ref=r.query.version.replace(/^GB/,""));break}default:a=r.name.split("/");var n=a.length-1;if(a.length>=2){var u=a.indexOf("-",2),A=a.indexOf("blob",2),p=a.indexOf("tree",2),h=a.indexOf("commit",2),C=a.indexOf("src",2),w=a.indexOf("raw",2),v=a.indexOf("edit",2);n=u>0?u-1:A>0?A-1:p>0?p-1:h>0?h-1:C>0?C-1:w>0?w-1:v>0?v-1:n,r.owner=a.slice(0,n).join("/"),r.name=a[n],h&&(r.commit=a[n+2])}r.ref="",r.filepathtype="",r.filepath="";var b=a.length>n&&a[n+1]==="-"?n+1:n;a.length>b+2&&["raw","src","blob","tree","edit"].indexOf(a[b+1])>=0&&(r.filepathtype=a[b+1],r.ref=a[b+2],a.length>b+3&&(r.filepath=a.slice(b+3).join("/"))),r.organization=r.owner;break}r.full_name||(r.full_name=r.owner,r.name&&(r.full_name&&(r.full_name+="/"),r.full_name+=r.name)),r.owner.startsWith("scm/")&&(r.source="bitbucket-server",r.owner=r.owner.replace("scm/",""),r.organization=r.owner,r.full_name=r.owner+"/"+r.name);var E=/(projects|users)\/(.*?)\/repos\/(.*?)((\/.*$)|$)/,R=E.exec(r.pathname);return R!=null&&(r.source="bitbucket-server",R[1]==="users"?r.owner="~"+R[2]:r.owner=R[2],r.organization=r.owner,r.name=R[3],a=R[4].split("/"),a.length>1&&(["raw","browse"].indexOf(a[1])>=0?(r.filepathtype=a[1],a.length>2&&(r.filepath=a.slice(2).join("/"))):a[1]==="commits"&&a.length>2&&(r.commit=a[2])),r.full_name=r.owner+"/"+r.name,r.query.at?r.ref=r.query.at:r.ref=""),r}q8.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join("+"):t.protocol);var r=t.port?":"+t.port:"",o=t.user||"git",a=t.git_suffix?".git":"";switch(e){case"ssh":return r?"ssh://"+o+"@"+t.resource+r+"/"+t.full_name+a:o+"@"+t.resource+":"+t.full_name+a;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+o+"@"+t.resource+r+"/"+t.full_name+a;case"http":case"https":var n=t.token?wht(t):t.user&&(t.protocols.includes("http")||t.protocols.includes("https"))?t.user+"@":"";return e+"://"+n+t.resource+r+"/"+Bht(t)+a;default:return t.href}};function wht(t){switch(t.source){case"bitbucket.org":return"x-token-auth:"+t.token+"@";default:return t.token+"@"}}function Bht(t){switch(t.source){case"bitbucket-server":return"scm/"+t.full_name;default:return""+t.full_name}}Lde.exports=q8});var $de=U((T5t,Zde)=>{var Rht=Dx(),Tht=OS(),Nht=jl(),Lht=oE(),Oht=m_(),Mht=eC(),Uht=C1();function _ht(t){return Nht(t)?Rht(t,Mht):Lht(t)?[t]:Tht(Oht(Uht(t)))}Zde.exports=_ht});function Ght(t,e){return e===1&&jht.has(t[0])}function i2(t){let e=Array.isArray(t)?t:(0,rme.default)(t);return e.map((o,a)=>Hht.test(o)?`[${o}]`:qht.test(o)&&!Ght(e,a)?`.${o}`:`[${JSON.stringify(o)}]`).join("").replace(/^\./,"")}function Wht(t,e){let r=[];if(e.methodName!==null&&r.push(ye.pretty(t,e.methodName,ye.Type.CODE)),e.file!==null){let o=[];o.push(ye.pretty(t,e.file,ye.Type.PATH)),e.line!==null&&(o.push(ye.pretty(t,e.line,ye.Type.NUMBER)),e.column!==null&&o.push(ye.pretty(t,e.line,ye.Type.NUMBER))),r.push(`(${o.join(ye.pretty(t,":","grey"))})`)}return r.join(" ")}function eQ(t,{manifestUpdates:e,reportedErrors:r},{fix:o}={}){var u;let a=new Map,n=new Map;for(let[A,p]of e){let h=((u=r.get(A))==null?void 0:u.map(b=>({text:b,fixable:!1})))??[],C=!1,w=t.getWorkspaceByCwd(A),v=w.manifest.exportTo({});for(let[b,E]of p){if(E.size>1){let R=[...E].map(([L,_])=>{let J=ye.pretty(t.configuration,L,ye.Type.INSPECT),re=_.size>0?Wht(t.configuration,_.values().next().value):null;return re!==null?` | 242 | `)),this.write(this.margin[2]),this.restore()}};Vhe.exports=m8});var Xhe=U((q_t,zhe)=>{"use strict";var Eft=S0(),y8=class extends Eft{constructor(e){if(super(e),typeof this.options.correctChoice!="number"||this.options.correctChoice<0)throw new Error("Please specify the index of the correct answer from the list of choices")}async toChoices(e,r){let o=await super.toChoices(e,r);if(o.length<2)throw new Error("Please give at least two choices to the user");if(this.options.correctChoice>o.length)throw new Error("Please specify the index of the correct answer from the list of choices");return o}check(e){return e.index===this.options.correctChoice}async result(e){return{selectedAnswer:e,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};zhe.exports=y8});var $he=U(E8=>{"use strict";var Zhe=Fo(),ps=(t,e)=>{Zhe.defineExport(E8,t,e),Zhe.defineExport(E8,t.toLowerCase(),e)};ps("AutoComplete",()=>she());ps("BasicAuth",()=>fhe());ps("Confirm",()=>ghe());ps("Editable",()=>mhe());ps("Form",()=>rQ());ps("Input",()=>i8());ps("Invisible",()=>vhe());ps("List",()=>She());ps("MultiSelect",()=>xhe());ps("Numeral",()=>khe());ps("Password",()=>Rhe());ps("Scale",()=>Lhe());ps("Select",()=>S0());ps("Snippet",()=>Hhe());ps("Sort",()=>jhe());ps("Survey",()=>Whe());ps("Text",()=>Khe());ps("Toggle",()=>Jhe());ps("Quiz",()=>Xhe())});var tge=U((G_t,ege)=>{ege.exports={ArrayPrompt:z1(),AuthPrompt:Z_(),BooleanPrompt:nQ(),NumberPrompt:c8(),StringPrompt:Jd()}});var Z1=U((W_t,nge)=>{"use strict";var rge=Ie("assert"),I8=Ie("events"),P0=Fo(),eu=class extends I8{constructor(e,r){super(),this.options=P0.merge({},e),this.answers={...r}}register(e,r){if(P0.isObject(e)){for(let a of Object.keys(e))this.register(a,e[a]);return this}rge.equal(typeof r,"function","expected a function");let o=e.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[o]=r:this.prompts[o]=r(this.Prompt,this),this}async prompt(e=[]){for(let r of[].concat(e))try{typeof r=="function"&&(r=await r.call(this)),await this.ask(P0.merge({},this.options,r))}catch(o){return Promise.reject(o)}return this.answers}async ask(e){typeof e=="function"&&(e=await e.call(this));let r=P0.merge({},this.options,e),{type:o,name:a}=e,{set:n,get:u}=P0;if(typeof o=="function"&&(o=await o.call(this,e,this.answers)),!o)return this.answers[a];rge(this.prompts[o],`Prompt "${o}" is not registered`);let A=new this.prompts[o](r),p=u(this.answers,a);A.state.answers=this.answers,A.enquirer=this,a&&A.on("submit",C=>{this.emit("answer",a,C,A),n(this.answers,a,C)});let h=A.emit.bind(A);return A.emit=(...C)=>(this.emit.call(this,...C),h(...C)),this.emit("prompt",A,this),r.autofill&&p!=null?(A.value=A.input=p,r.autofill==="show"&&await A.submit()):p=A.value=await A.run(),p}use(e){return e.call(this,this),this}set Prompt(e){this._Prompt=e}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(e){this._Prompt=e}static get Prompt(){return this._Prompt||AC()}static get prompts(){return $he()}static get types(){return tge()}static get prompt(){let e=(r,...o)=>{let a=new this(...o),n=a.emit.bind(a);return a.emit=(...u)=>(e.emit(...u),n(...u)),a.prompt(r)};return P0.mixinEmitter(e,new I8),e}};P0.mixinEmitter(eu,new I8);var C8=eu.prompts;for(let t of Object.keys(C8)){let e=t.toLowerCase(),r=o=>new C8[t](o).run();eu.prompt[e]=r,eu[e]=r,eu[t]||Reflect.defineProperty(eu,t,{get:()=>C8[t]})}var X1=t=>{P0.defineExport(eu,t,()=>eu.types[t])};X1("ArrayPrompt");X1("AuthPrompt");X1("BooleanPrompt");X1("NumberPrompt");X1("StringPrompt");nge.exports=eu});var r2=U((P8t,uge)=>{var Dft=Yb();function Sft(t,e,r){var o=t==null?void 0:Dft(t,e);return o===void 0?r:o}uge.exports=Sft});var pge=U((R8t,fge)=>{function Pft(t,e){for(var r=-1,o=t==null?0:t.length;++r<o&&e(t[r],r,t)!==!1;);return t}fge.exports=Pft});var gge=U((T8t,hge)=>{var xft=dd(),bft=qS();function Qft(t,e){return t&&xft(e,bft(e),t)}hge.exports=Qft});var mge=U((N8t,dge)=>{var kft=dd(),Fft=Wy();function Rft(t,e){return t&&kft(e,Fft(e),t)}dge.exports=Rft});var Ege=U((L8t,yge)=>{var Tft=dd(),Nft=LS();function Lft(t,e){return Tft(t,Nft(t),e)}yge.exports=Lft});var P8=U((O8t,Cge)=>{var Oft=NS(),Mft=KS(),Uft=LS(),_ft=qN(),Hft=Object.getOwnPropertySymbols,qft=Hft?function(t){for(var e=[];t;)Oft(e,Uft(t)),t=Mft(t);return e}:_ft;Cge.exports=qft});var wge=U((M8t,Ige)=>{var jft=dd(),Gft=P8();function Wft(t,e){return jft(t,Gft(t),e)}Ige.exports=Wft});var x8=U((U8t,Bge)=>{var Yft=HN(),Kft=P8(),Vft=Wy();function Jft(t){return Yft(t,Vft,Kft)}Bge.exports=Jft});var Dge=U((_8t,vge)=>{var zft=Object.prototype,Xft=zft.hasOwnProperty;function Zft(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&Xft.call(t,"index")&&(r.index=t.index,r.input=t.input),r}vge.exports=Zft});var Pge=U((H8t,Sge)=>{var $ft=WS();function ept(t,e){var r=e?$ft(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}Sge.exports=ept});var bge=U((q8t,xge)=>{var tpt=/\w*$/;function rpt(t){var e=new t.constructor(t.source,tpt.exec(t));return e.lastIndex=t.lastIndex,e}xge.exports=rpt});var Tge=U((j8t,Rge)=>{var Qge=pd(),kge=Qge?Qge.prototype:void 0,Fge=kge?kge.valueOf:void 0;function npt(t){return Fge?Object(Fge.call(t)):{}}Rge.exports=npt});var Lge=U((G8t,Nge)=>{var ipt=WS(),spt=Pge(),opt=bge(),apt=Tge(),lpt=rL(),cpt="[object Boolean]",upt="[object Date]",Apt="[object Map]",fpt="[object Number]",ppt="[object RegExp]",hpt="[object Set]",gpt="[object String]",dpt="[object Symbol]",mpt="[object ArrayBuffer]",ypt="[object DataView]",Ept="[object Float32Array]",Cpt="[object Float64Array]",Ipt="[object Int8Array]",wpt="[object Int16Array]",Bpt="[object Int32Array]",vpt="[object Uint8Array]",Dpt="[object Uint8ClampedArray]",Spt="[object Uint16Array]",Ppt="[object Uint32Array]";function xpt(t,e,r){var o=t.constructor;switch(e){case mpt:return ipt(t);case cpt:case upt:return new o(+t);case ypt:return spt(t,r);case Ept:case Cpt:case Ipt:case wpt:case Bpt:case vpt:case Dpt:case Spt:case Ppt:return lpt(t,r);case Apt:return new o;case fpt:case gpt:return new o(t);case ppt:return opt(t);case hpt:return new o;case dpt:return apt(t)}}Nge.exports=xpt});var Mge=U((W8t,Oge)=>{var bpt=Nw(),Qpt=Xu(),kpt="[object Map]";function Fpt(t){return Qpt(t)&&bpt(t)==kpt}Oge.exports=Fpt});var qge=U((Y8t,Hge)=>{var Rpt=Mge(),Tpt=MS(),Uge=US(),_ge=Uge&&Uge.isMap,Npt=_ge?Tpt(_ge):Rpt;Hge.exports=Npt});var Gge=U((K8t,jge)=>{var Lpt=Nw(),Opt=Xu(),Mpt="[object Set]";function Upt(t){return Opt(t)&&Lpt(t)==Mpt}jge.exports=Upt});var Vge=U((V8t,Kge)=>{var _pt=Gge(),Hpt=MS(),Wge=US(),Yge=Wge&&Wge.isSet,qpt=Yge?Hpt(Yge):_pt;Kge.exports=qpt});var b8=U((J8t,Zge)=>{var jpt=RS(),Gpt=pge(),Wpt=VS(),Ypt=gge(),Kpt=mge(),Vpt=tL(),Jpt=YS(),zpt=Ege(),Xpt=wge(),Zpt=YN(),$pt=x8(),e0t=Nw(),t0t=Dge(),r0t=Lge(),n0t=nL(),i0t=Kl(),s0t=Qw(),o0t=qge(),a0t=al(),l0t=Vge(),c0t=qS(),u0t=Wy(),A0t=1,f0t=2,p0t=4,Jge="[object Arguments]",h0t="[object Array]",g0t="[object Boolean]",d0t="[object Date]",m0t="[object Error]",zge="[object Function]",y0t="[object GeneratorFunction]",E0t="[object Map]",C0t="[object Number]",Xge="[object Object]",I0t="[object RegExp]",w0t="[object Set]",B0t="[object String]",v0t="[object Symbol]",D0t="[object WeakMap]",S0t="[object ArrayBuffer]",P0t="[object DataView]",x0t="[object Float32Array]",b0t="[object Float64Array]",Q0t="[object Int8Array]",k0t="[object Int16Array]",F0t="[object Int32Array]",R0t="[object Uint8Array]",T0t="[object Uint8ClampedArray]",N0t="[object Uint16Array]",L0t="[object Uint32Array]",Xn={};Xn[Jge]=Xn[h0t]=Xn[S0t]=Xn[P0t]=Xn[g0t]=Xn[d0t]=Xn[x0t]=Xn[b0t]=Xn[Q0t]=Xn[k0t]=Xn[F0t]=Xn[E0t]=Xn[C0t]=Xn[Xge]=Xn[I0t]=Xn[w0t]=Xn[B0t]=Xn[v0t]=Xn[R0t]=Xn[T0t]=Xn[N0t]=Xn[L0t]=!0;Xn[m0t]=Xn[zge]=Xn[D0t]=!1;function oQ(t,e,r,o,a,n){var u,A=e&A0t,p=e&f0t,h=e&p0t;if(r&&(u=a?r(t,o,a,n):r(t)),u!==void 0)return u;if(!a0t(t))return t;var C=i0t(t);if(C){if(u=t0t(t),!A)return Jpt(t,u)}else{var w=e0t(t),v=w==zge||w==y0t;if(s0t(t))return Vpt(t,A);if(w==Xge||w==Jge||v&&!a){if(u=p||v?{}:n0t(t),!A)return p?Xpt(t,Kpt(u,t)):zpt(t,Ypt(u,t))}else{if(!Xn[w])return a?t:{};u=r0t(t,w,A)}}n||(n=new jpt);var b=n.get(t);if(b)return b;n.set(t,u),l0t(t)?t.forEach(function(L){u.add(oQ(L,e,r,L,t,n))}):o0t(t)&&t.forEach(function(L,_){u.set(_,oQ(L,e,r,_,t,n))});var E=h?p?$pt:Zpt:p?u0t:c0t,R=C?void 0:E(t);return Gpt(R||t,function(L,_){R&&(_=L,L=t[_]),Wpt(u,_,oQ(L,e,r,_,t,n))}),u}Zge.exports=oQ});var Q8=U((z8t,$ge)=>{var O0t=b8(),M0t=1,U0t=4;function _0t(t){return O0t(t,M0t|U0t)}$ge.exports=_0t});var k8=U((X8t,ede)=>{var H0t=I_();function q0t(t,e,r){return t==null?t:H0t(t,e,r)}ede.exports=q0t});var sde=U((nHt,ide)=>{var j0t=Object.prototype,G0t=j0t.hasOwnProperty;function W0t(t,e){return t!=null&&G0t.call(t,e)}ide.exports=W0t});var ade=U((iHt,ode)=>{var Y0t=sde(),K0t=w_();function V0t(t,e){return t!=null&&K0t(t,e,Y0t)}ode.exports=V0t});var cde=U((sHt,lde)=>{function J0t(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}lde.exports=J0t});var Ade=U((oHt,ude)=>{var z0t=Yb(),X0t=yU();function Z0t(t,e){return e.length<2?t:z0t(t,X0t(e,0,-1))}ude.exports=Z0t});var R8=U((aHt,fde)=>{var $0t=Yd(),eht=cde(),tht=Ade(),rht=sC();function nht(t,e){return e=$0t(e,t),t=tht(t,e),t==null||delete t[rht(eht(e))]}fde.exports=nht});var T8=U((lHt,pde)=>{var iht=R8();function sht(t,e){return t==null?!0:iht(t,e)}pde.exports=sht});var yde=U((OHt,lht)=>{lht.exports={name:"@yarnpkg/cli",version:"4.0.0-rc.45",stableVersion:"3.5.1",license:"BSD-2-Clause",main:"./sources/index.ts",exports:{".":"./sources/index.ts","./polyfills":"./sources/polyfills.ts","./package.json":"./package.json"},dependencies:{"@yarnpkg/core":"workspace:^","@yarnpkg/fslib":"workspace:^","@yarnpkg/libzip":"workspace:^","@yarnpkg/parsers":"workspace:^","@yarnpkg/plugin-compat":"workspace:^","@yarnpkg/plugin-constraints":"workspace:^","@yarnpkg/plugin-dlx":"workspace:^","@yarnpkg/plugin-essentials":"workspace:^","@yarnpkg/plugin-exec":"workspace:^","@yarnpkg/plugin-file":"workspace:^","@yarnpkg/plugin-git":"workspace:^","@yarnpkg/plugin-github":"workspace:^","@yarnpkg/plugin-http":"workspace:^","@yarnpkg/plugin-init":"workspace:^","@yarnpkg/plugin-interactive-tools":"workspace:^","@yarnpkg/plugin-link":"workspace:^","@yarnpkg/plugin-nm":"workspace:^","@yarnpkg/plugin-npm":"workspace:^","@yarnpkg/plugin-npm-cli":"workspace:^","@yarnpkg/plugin-pack":"workspace:^","@yarnpkg/plugin-patch":"workspace:^","@yarnpkg/plugin-pnp":"workspace:^","@yarnpkg/plugin-pnpm":"workspace:^","@yarnpkg/plugin-stage":"workspace:^","@yarnpkg/plugin-typescript":"workspace:^","@yarnpkg/plugin-version":"workspace:^","@yarnpkg/plugin-workspace-tools":"workspace:^","@yarnpkg/shell":"workspace:^","ci-info":"^3.2.0",clipanion:"^3.2.0-rc.10",semver:"^7.1.2",tslib:"^2.4.0",typanion:"^3.3.0"},devDependencies:{"@types/semver":"^7.1.0","@yarnpkg/builder":"workspace:^","@yarnpkg/monorepo":"workspace:^","@yarnpkg/pnpify":"workspace:^",micromatch:"^4.0.2"},peerDependencies:{"@yarnpkg/core":"workspace:^"},scripts:{postpack:"rm -rf lib",prepack:'run build:compile "$(pwd)"',"build:cli+hook":"run build:pnp:hook && builder build bundle","build:cli":"builder build bundle","run:cli":"builder run","update-local":"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/"},publishConfig:{main:"./lib/index.js",bin:null,exports:{".":"./lib/index.js","./package.json":"./package.json"}},files:["/lib/**/*","!/lib/pluginConfiguration.*","!/lib/cli.*"],"@yarnpkg/builder":{bundles:{standard:["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-constraints","@yarnpkg/plugin-dlx","@yarnpkg/plugin-exec","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools"]}},repository:{type:"git",url:"ssh://git@github.com/yarnpkg/berry.git",directory:"packages/yarnpkg-cli"},engines:{node:">=14.15.0"}}});var j8=U((pGt,kde)=>{"use strict";kde.exports=function(e,r){r===!0&&(r=0);var o="";if(typeof e=="string")try{o=new URL(e).protocol}catch{}else e&&e.constructor===URL&&(o=e.protocol);var a=o.split(/\:|\+/).filter(Boolean);return typeof r=="number"?a[r]:a}});var Rde=U((hGt,Fde)=>{"use strict";var Dht=j8();function Sht(t){var e={protocols:[],protocol:null,port:null,resource:"",host:"",user:"",password:"",pathname:"",hash:"",search:"",href:t,query:{},parse_failed:!1};try{var r=new URL(t);e.protocols=Dht(r),e.protocol=e.protocols[0],e.port=r.port,e.resource=r.hostname,e.host=r.host,e.user=r.username||"",e.password=r.password||"",e.pathname=r.pathname,e.hash=r.hash.slice(1),e.search=r.search.slice(1),e.href=r.href,e.query=Object.fromEntries(r.searchParams)}catch{e.protocols=["file"],e.protocol=e.protocols[0],e.port="",e.resource="",e.user="",e.pathname="",e.hash="",e.search="",e.href=t,e.query={},e.parse_failed=!0}return e}Fde.exports=Sht});var Lde=U((gGt,Nde)=>{"use strict";var Pht=Rde();function xht(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var bht=xht(Pht),Qht="text/plain",kht="us-ascii",Tde=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),Fht=(t,{stripHash:e})=>{let r=/^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(t);if(!r)throw new Error(`Invalid URL: ${t}`);let{type:o,data:a,hash:n}=r.groups,u=o.split(";");n=e?"":n;let A=!1;u[u.length-1]==="base64"&&(u.pop(),A=!0);let p=(u.shift()||"").toLowerCase(),C=[...u.map(w=>{let[v,b=""]=w.split("=").map(E=>E.trim());return v==="charset"&&(b=b.toLowerCase(),b===kht)?"":`${v}${b?`=${b}`:""}`}).filter(Boolean)];return A&&C.push("base64"),(C.length>0||p&&p!==Qht)&&C.unshift(p),`data:${C.join(";")},${A?a.trim():a}${n?`#${n}`:""}`};function Rht(t,e){if(e={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},t=t.trim(),/^data:/i.test(t))return Fht(t,e);if(/^view-source:/i.test(t))throw new Error("`view-source:` is not supported as it is a non-standard protocol");let r=t.startsWith("//");!r&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let a=new URL(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&a.protocol==="https:"&&(a.protocol="http:"),e.forceHttps&&a.protocol==="http:"&&(a.protocol="https:"),e.stripAuthentication&&(a.username="",a.password=""),e.stripHash?a.hash="":e.stripTextFragment&&(a.hash=a.hash.replace(/#?:~:text.*?$/i,"")),a.pathname){let u=/\b[a-z][a-z\d+\-.]{1,50}:\/\//g,A=0,p="";for(;;){let C=u.exec(a.pathname);if(!C)break;let w=C[0],v=C.index,b=a.pathname.slice(A,v);p+=b.replace(/\/{2,}/g,"/"),p+=w,A=v+w.length}let h=a.pathname.slice(A,a.pathname.length);p+=h.replace(/\/{2,}/g,"/"),a.pathname=p}if(a.pathname)try{a.pathname=decodeURI(a.pathname)}catch{}if(e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let u=a.pathname.split("/"),A=u[u.length-1];Tde(A,e.removeDirectoryIndex)&&(u=u.slice(0,-1),a.pathname=u.slice(1).join("/")+"/")}if(a.hostname&&(a.hostname=a.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.(?!www\.)[a-z\-\d]{1,63}\.[a-z.\-\d]{2,63}$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let u of[...a.searchParams.keys()])Tde(u,e.removeQueryParameters)&&a.searchParams.delete(u);if(e.removeQueryParameters===!0&&(a.search=""),e.sortQueryParameters){a.searchParams.sort();try{a.search=decodeURIComponent(a.search)}catch{}}e.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\/$/,""));let n=t;return t=a.toString(),!e.removeSingleSlash&&a.pathname==="/"&&!n.endsWith("/")&&a.hash===""&&(t=t.replace(/\/$/,"")),(e.removeTrailingSlash||a.pathname==="/")&&a.hash===""&&e.removeSingleSlash&&(t=t.replace(/\/$/,"")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t}var G8=(t,e=!1)=>{let r=/^(?:([a-z_][a-z0-9_-]{0,31})@|https?:\/\/)([\w\.\-@]+)[\/:]([\~,\.\w,\-,\_,\/]+?(?:\.git|\/)?)$/,o=n=>{let u=new Error(n);throw u.subject_url=t,u};(typeof t!="string"||!t.trim())&&o("Invalid url."),t.length>G8.MAX_INPUT_LENGTH&&o("Input exceeds maximum length. If needed, change the value of parseUrl.MAX_INPUT_LENGTH."),e&&(typeof e!="object"&&(e={stripHash:!1}),t=Rht(t,e));let a=bht.default(t);if(a.parse_failed){let n=a.href.match(r);n?(a.protocols=["ssh"],a.protocol="ssh",a.resource=n[2],a.host=n[2],a.user=n[1],a.pathname=`/${n[3]}`,a.parse_failed=!1):o("URL parsing failed.")}return a};G8.MAX_INPUT_LENGTH=2048;Nde.exports=G8});var Ude=U((dGt,Mde)=>{"use strict";var Tht=j8();function Ode(t){if(Array.isArray(t))return t.indexOf("ssh")!==-1||t.indexOf("rsync")!==-1;if(typeof t!="string")return!1;var e=Tht(t);if(t=t.substring(t.indexOf("://")+3),Ode(e))return!0;var r=new RegExp(".([a-zA-Z\\d]+):(\\d+)/");return!t.match(r)&&t.indexOf("@")<t.indexOf(":")}Mde.exports=Ode});var qde=U((mGt,Hde)=>{"use strict";var Nht=Lde(),_de=Ude();function Lht(t){var e=Nht(t);return e.token="",e.password==="x-oauth-basic"?e.token=e.user:e.user==="x-token-auth"&&(e.token=e.password),_de(e.protocols)||e.protocols.length===0&&_de(t)?e.protocol="ssh":e.protocols.length?e.protocol=e.protocols[0]:(e.protocol="file",e.protocols=["file"]),e.href=e.href.replace(/\/$/,""),e}Hde.exports=Lht});var Gde=U((yGt,jde)=>{"use strict";var Oht=qde();function W8(t){if(typeof t!="string")throw new Error("The url must be a string.");var e=/^([a-z\d-]{1,39})\/([-\.\w]{1,100})$/i;e.test(t)&&(t="https://github.com/"+t);var r=Oht(t),o=r.resource.split("."),a=null;switch(r.toString=function(L){return W8.stringify(this,L)},r.source=o.length>2?o.slice(1-o.length).join("."):r.source=r.resource,r.git_suffix=/\.git$/.test(r.pathname),r.name=decodeURIComponent((r.pathname||r.href).replace(/(^\/)|(\/$)/g,"").replace(/\.git$/,"")),r.owner=decodeURIComponent(r.user),r.source){case"git.cloudforge.com":r.owner=r.user,r.organization=o[0],r.source="cloudforge.com";break;case"visualstudio.com":if(r.resource==="vs-ssh.visualstudio.com"){a=r.name.split("/"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3],r.full_name=a[2]+"/"+a[3]);break}else{a=r.name.split("/"),a.length===2?(r.owner=a[1],r.name=a[1],r.full_name="_git/"+r.name):a.length===3?(r.name=a[2],a[0]==="DefaultCollection"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+"/_git/"+r.name):(r.owner=a[0],r.full_name=r.owner+"/_git/"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+"/"+r.owner+"/_git/"+r.name);break}case"dev.azure.com":case"azure.com":if(r.resource==="ssh.dev.azure.com"){a=r.name.split("/"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3]);break}else{a=r.name.split("/"),a.length===5?(r.organization=a[0],r.owner=a[1],r.name=a[4],r.full_name="_git/"+r.name):a.length===3?(r.name=a[2],a[0]==="DefaultCollection"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+"/_git/"+r.name):(r.owner=a[0],r.full_name=r.owner+"/_git/"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+"/"+r.owner+"/_git/"+r.name),r.query&&r.query.path&&(r.filepath=r.query.path.replace(/^\/+/g,"")),r.query&&r.query.version&&(r.ref=r.query.version.replace(/^GB/,""));break}default:a=r.name.split("/");var n=a.length-1;if(a.length>=2){var u=a.indexOf("-",2),A=a.indexOf("blob",2),p=a.indexOf("tree",2),h=a.indexOf("commit",2),C=a.indexOf("src",2),w=a.indexOf("raw",2),v=a.indexOf("edit",2);n=u>0?u-1:A>0?A-1:p>0?p-1:h>0?h-1:C>0?C-1:w>0?w-1:v>0?v-1:n,r.owner=a.slice(0,n).join("/"),r.name=a[n],h&&(r.commit=a[n+2])}r.ref="",r.filepathtype="",r.filepath="";var b=a.length>n&&a[n+1]==="-"?n+1:n;a.length>b+2&&["raw","src","blob","tree","edit"].indexOf(a[b+1])>=0&&(r.filepathtype=a[b+1],r.ref=a[b+2],a.length>b+3&&(r.filepath=a.slice(b+3).join("/"))),r.organization=r.owner;break}r.full_name||(r.full_name=r.owner,r.name&&(r.full_name&&(r.full_name+="/"),r.full_name+=r.name)),r.owner.startsWith("scm/")&&(r.source="bitbucket-server",r.owner=r.owner.replace("scm/",""),r.organization=r.owner,r.full_name=r.owner+"/"+r.name);var E=/(projects|users)\/(.*?)\/repos\/(.*?)((\/.*$)|$)/,R=E.exec(r.pathname);return R!=null&&(r.source="bitbucket-server",R[1]==="users"?r.owner="~"+R[2]:r.owner=R[2],r.organization=r.owner,r.name=R[3],a=R[4].split("/"),a.length>1&&(["raw","browse"].indexOf(a[1])>=0?(r.filepathtype=a[1],a.length>2&&(r.filepath=a.slice(2).join("/"))):a[1]==="commits"&&a.length>2&&(r.commit=a[2])),r.full_name=r.owner+"/"+r.name,r.query.at?r.ref=r.query.at:r.ref=""),r}W8.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join("+"):t.protocol);var r=t.port?":"+t.port:"",o=t.user||"git",a=t.git_suffix?".git":"";switch(e){case"ssh":return r?"ssh://"+o+"@"+t.resource+r+"/"+t.full_name+a:o+"@"+t.resource+":"+t.full_name+a;case"git+ssh":case"ssh+git":case"ftp":case"ftps":return e+"://"+o+"@"+t.resource+r+"/"+t.full_name+a;case"http":case"https":var n=t.token?Mht(t):t.user&&(t.protocols.includes("http")||t.protocols.includes("https"))?t.user+"@":"";return e+"://"+n+t.resource+r+"/"+Uht(t)+a;default:return t.href}};function Mht(t){switch(t.source){case"bitbucket.org":return"x-token-auth:"+t.token+"@";default:return t.token+"@"}}function Uht(t){switch(t.source){case"bitbucket-server":return"scm/"+t.full_name;default:return""+t.full_name}}jde.exports=W8});var ome=U((J9t,sme)=>{var Jht=Tx(),zht=YS(),Xht=Kl(),Zht=AE(),$ht=C_(),egt=sC(),tgt=S1();function rgt(t){return Xht(t)?Jht(t,egt):Zht(t)?[t]:zht($ht(tgt(t)))}sme.exports=rgt});function ogt(t,e){return e===1&&sgt.has(t[0])}function u2(t){let e=Array.isArray(t)?t:(0,cme.default)(t);return e.map((o,a)=>ngt.test(o)?`[${o}]`:igt.test(o)&&!ogt(e,a)?`.${o}`:`[${JSON.stringify(o)}]`).join("").replace(/^\./,"")}function agt(t,e){let r=[];if(e.methodName!==null&&r.push(ye.pretty(t,e.methodName,ye.Type.CODE)),e.file!==null){let o=[];o.push(ye.pretty(t,e.file,ye.Type.PATH)),e.line!==null&&(o.push(ye.pretty(t,e.line,ye.Type.NUMBER)),e.column!==null&&o.push(ye.pretty(t,e.line,ye.Type.NUMBER))),r.push(`(${o.join(ye.pretty(t,":","grey"))})`)}return r.join(" ")}function uQ(t,{manifestUpdates:e,reportedErrors:r},{fix:o}={}){var u;let a=new Map,n=new Map;for(let[A,p]of e){let h=((u=r.get(A))==null?void 0:u.map(b=>({text:b,fixable:!1})))??[],C=!1,w=t.getWorkspaceByCwd(A),v=w.manifest.exportTo({});for(let[b,E]of p){if(E.size>1){let R=[...E].map(([L,_])=>{let V=ye.pretty(t.configuration,L,ye.Type.INSPECT),re=_.size>0?agt(t.configuration,_.values().next().value):null;return re!==null?` |
243 | ${J} at ${re}`:` | 243 | ${V} at ${re}`:` |
244 | ${J}`}).join("");h.push({text:`Conflict detected in constraint targeting ${ye.pretty(t.configuration,b,ye.Type.CODE)}; conflicting values are:${R}`,fixable:!1})}else{let[[R]]=E,L=(0,eme.default)(v,b);if(L===R)continue;if(!o){let _=typeof L>"u"?`Missing field ${ye.pretty(t.configuration,b,ye.Type.CODE)}; expected ${ye.pretty(t.configuration,R,ye.Type.INSPECT)}`:typeof R>"u"?`Extraneous field ${ye.pretty(t.configuration,b,ye.Type.CODE)} currently set to ${ye.pretty(t.configuration,L,ye.Type.INSPECT)}`:`Invalid field ${ye.pretty(t.configuration,b,ye.Type.CODE)}; expected ${ye.pretty(t.configuration,R,ye.Type.INSPECT)}, found ${ye.pretty(t.configuration,L,ye.Type.INSPECT)}`;h.push({text:_,fixable:!0});continue}typeof R>"u"?(0,nme.default)(v,b):(0,tme.default)(v,b,R),C=!0}C&&a.set(w,v)}h.length>0&&n.set(w,h)}return{changedWorkspaces:a,remainingErrors:n}}var eme,tme,rme,nme,n2,Hht,qht,jht,s2=dt(()=>{Ke();eme=tt(z1()),tme=tt(x8()),rme=tt($de()),nme=tt(k8()),n2=class{constructor(e){this.indexedFields=e;this.items=[];this.indexes={};this.clear()}clear(){this.items=[];for(let e of this.indexedFields)this.indexes[e]=new Map}insert(e){this.items.push(e);for(let r of this.indexedFields){let o=Object.prototype.hasOwnProperty.call(e,r)?e[r]:void 0;if(typeof o>"u")continue;Ye.getArrayWithDefault(this.indexes[r],o).push(e)}return e}find(e){if(typeof e>"u")return this.items;let r=Object.entries(e);if(r.length===0)return this.items;let o=[],a;for(let[u,A]of r){let p=u,h=Object.prototype.hasOwnProperty.call(this.indexes,p)?this.indexes[p]:void 0;if(typeof h>"u"){o.push([p,A]);continue}let C=new Set(h.get(A)??[]);if(C.size===0)return[];if(typeof a>"u")a=C;else for(let w of a)C.has(w)||a.delete(w);if(a.size===0)break}let n=[...a??[]];return o.length>0&&(n=n.filter(u=>{for(let[A,p]of o)if(!(typeof p<"u"?Object.prototype.hasOwnProperty.call(u,A)&&u[A]===p:Object.prototype.hasOwnProperty.call(u,A)===!1))return!1;return!0})),n}},Hht=/^[0-9]+$/,qht=/^[a-zA-Z0-9_]+$/,jht=new Set(["scripts",...Nt.allDependencies])});var ime=U((j5t,nH)=>{var Yht;(function(t){var e=function(){return{"append/2":[new t.type.Rule(new t.type.Term("append",[new t.type.Var("X"),new t.type.Var("L")]),new t.type.Term("foldl",[new t.type.Term("append",[]),new t.type.Var("X"),new t.type.Term("[]",[]),new t.type.Var("L")]))],"append/3":[new t.type.Rule(new t.type.Term("append",[new t.type.Term("[]",[]),new t.type.Var("X"),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("append",[new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("S")])]),new t.type.Term("append",[new t.type.Var("T"),new t.type.Var("X"),new t.type.Var("S")]))],"member/2":[new t.type.Rule(new t.type.Term("member",[new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("_")])]),null),new t.type.Rule(new t.type.Term("member",[new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("_"),new t.type.Var("Xs")])]),new t.type.Term("member",[new t.type.Var("X"),new t.type.Var("Xs")]))],"permutation/2":[new t.type.Rule(new t.type.Term("permutation",[new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("permutation",[new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("permutation",[new t.type.Var("T"),new t.type.Var("P")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("P")]),new t.type.Term("append",[new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("Y")]),new t.type.Var("S")])])]))],"maplist/2":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("X")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("Xs")])]))],"maplist/3":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs")])]))],"maplist/4":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs")])]))],"maplist/5":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds")])]))],"maplist/6":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")]),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Es")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D"),new t.type.Var("E")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds"),new t.type.Var("Es")])]))],"maplist/7":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")]),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Es")]),new t.type.Term(".",[new t.type.Var("F"),new t.type.Var("Fs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D"),new t.type.Var("E"),new t.type.Var("F")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds"),new t.type.Var("Es"),new t.type.Var("Fs")])]))],"maplist/8":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")]),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Es")]),new t.type.Term(".",[new t.type.Var("F"),new t.type.Var("Fs")]),new t.type.Term(".",[new t.type.Var("G"),new t.type.Var("Gs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D"),new t.type.Var("E"),new t.type.Var("F"),new t.type.Var("G")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds"),new t.type.Var("Es"),new t.type.Var("Fs"),new t.type.Var("Gs")])]))],"include/3":[new t.type.Rule(new t.type.Term("include",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("include",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("L")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P"),new t.type.Var("A")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("A"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Term("[]",[])]),new t.type.Var("B")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("F"),new t.type.Var("B")]),new t.type.Term(",",[new t.type.Term(";",[new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("F")]),new t.type.Term(",",[new t.type.Term("=",[new t.type.Var("L"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("S")])]),new t.type.Term("!",[])])]),new t.type.Term("=",[new t.type.Var("L"),new t.type.Var("S")])]),new t.type.Term("include",[new t.type.Var("P"),new t.type.Var("T"),new t.type.Var("S")])])])])]))],"exclude/3":[new t.type.Rule(new t.type.Term("exclude",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("exclude",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("exclude",[new t.type.Var("P"),new t.type.Var("T"),new t.type.Var("E")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P"),new t.type.Var("L")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("L"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Term("[]",[])]),new t.type.Var("Q")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("R"),new t.type.Var("Q")]),new t.type.Term(";",[new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("R")]),new t.type.Term(",",[new t.type.Term("!",[]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("E")])])]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("E")])])])])])])]))],"foldl/4":[new t.type.Rule(new t.type.Term("foldl",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Var("I"),new t.type.Var("I")]),null),new t.type.Rule(new t.type.Term("foldl",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("I"),new t.type.Var("R")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P"),new t.type.Var("L")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("L"),new t.type.Term(".",[new t.type.Var("I"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])])])]),new t.type.Var("L2")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P2"),new t.type.Var("L2")]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P2")]),new t.type.Term("foldl",[new t.type.Var("P"),new t.type.Var("T"),new t.type.Var("X"),new t.type.Var("R")])])])])]))],"select/3":[new t.type.Rule(new t.type.Term("select",[new t.type.Var("E"),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Xs")]),new t.type.Var("Xs")]),null),new t.type.Rule(new t.type.Term("select",[new t.type.Var("E"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Ys")])]),new t.type.Term("select",[new t.type.Var("E"),new t.type.Var("Xs"),new t.type.Var("Ys")]))],"sum_list/2":[new t.type.Rule(new t.type.Term("sum_list",[new t.type.Term("[]",[]),new t.type.Num(0,!1)]),null),new t.type.Rule(new t.type.Term("sum_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("sum_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term("is",[new t.type.Var("S"),new t.type.Term("+",[new t.type.Var("X"),new t.type.Var("Y")])])]))],"max_list/2":[new t.type.Rule(new t.type.Term("max_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])]),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("max_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("max_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term(";",[new t.type.Term(",",[new t.type.Term(">=",[new t.type.Var("X"),new t.type.Var("Y")]),new t.type.Term(",",[new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("X")]),new t.type.Term("!",[])])]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("Y")])])]))],"min_list/2":[new t.type.Rule(new t.type.Term("min_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])]),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("min_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("min_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term(";",[new t.type.Term(",",[new t.type.Term("=<",[new t.type.Var("X"),new t.type.Var("Y")]),new t.type.Term(",",[new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("X")]),new t.type.Term("!",[])])]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("Y")])])]))],"prod_list/2":[new t.type.Rule(new t.type.Term("prod_list",[new t.type.Term("[]",[]),new t.type.Num(1,!1)]),null),new t.type.Rule(new t.type.Term("prod_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("prod_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term("is",[new t.type.Var("S"),new t.type.Term("*",[new t.type.Var("X"),new t.type.Var("Y")])])]))],"last/2":[new t.type.Rule(new t.type.Term("last",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])]),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("last",[new t.type.Term(".",[new t.type.Var("_"),new t.type.Var("Xs")]),new t.type.Var("X")]),new t.type.Term("last",[new t.type.Var("Xs"),new t.type.Var("X")]))],"prefix/2":[new t.type.Rule(new t.type.Term("prefix",[new t.type.Var("Part"),new t.type.Var("Whole")]),new t.type.Term("append",[new t.type.Var("Part"),new t.type.Var("_"),new t.type.Var("Whole")]))],"nth0/3":[new t.type.Rule(new t.type.Term("nth0",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")])]),new t.type.Term(",",[new t.type.Term(">=",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")]),new t.type.Term("!",[])])])]))],"nth1/3":[new t.type.Rule(new t.type.Term("nth1",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")])]),new t.type.Term(",",[new t.type.Term(">",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")]),new t.type.Term("!",[])])])]))],"nth0/4":[new t.type.Rule(new t.type.Term("nth0",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")])]),new t.type.Term(",",[new t.type.Term(">=",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term("!",[])])])]))],"nth1/4":[new t.type.Rule(new t.type.Term("nth1",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")])]),new t.type.Term(",",[new t.type.Term(">",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term("!",[])])])]))],"nth/5":[new t.type.Rule(new t.type.Term("nth",[new t.type.Var("N"),new t.type.Var("N"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("X"),new t.type.Var("Xs")]),null),new t.type.Rule(new t.type.Term("nth",[new t.type.Var("N"),new t.type.Var("O"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("Y"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Ys")])]),new t.type.Term(",",[new t.type.Term("is",[new t.type.Var("M"),new t.type.Term("+",[new t.type.Var("N"),new t.type.Num(1,!1)])]),new t.type.Term("nth",[new t.type.Var("M"),new t.type.Var("O"),new t.type.Var("Xs"),new t.type.Var("Y"),new t.type.Var("Ys")])]))],"length/2":function(o,a,n){var u=n.args[0],A=n.args[1];if(!t.type.is_variable(A)&&!t.type.is_integer(A))o.throw_error(t.error.type("integer",A,n.indicator));else if(t.type.is_integer(A)&&A.value<0)o.throw_error(t.error.domain("not_less_than_zero",A,n.indicator));else{var p=new t.type.Term("length",[u,new t.type.Num(0,!1),A]);t.type.is_integer(A)&&(p=new t.type.Term(",",[p,new t.type.Term("!",[])])),o.prepend([new t.type.State(a.goal.replace(p),a.substitution,a)])}},"length/3":[new t.type.Rule(new t.type.Term("length",[new t.type.Term("[]",[]),new t.type.Var("N"),new t.type.Var("N")]),null),new t.type.Rule(new t.type.Term("length",[new t.type.Term(".",[new t.type.Var("_"),new t.type.Var("X")]),new t.type.Var("A"),new t.type.Var("N")]),new t.type.Term(",",[new t.type.Term("succ",[new t.type.Var("A"),new t.type.Var("B")]),new t.type.Term("length",[new t.type.Var("X"),new t.type.Var("B"),new t.type.Var("N")])]))],"replicate/3":function(o,a,n){var u=n.args[0],A=n.args[1],p=n.args[2];if(t.type.is_variable(A))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_integer(A))o.throw_error(t.error.type("integer",A,n.indicator));else if(A.value<0)o.throw_error(t.error.domain("not_less_than_zero",A,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))o.throw_error(t.error.type("list",p,n.indicator));else{for(var h=new t.type.Term("[]"),C=0;C<A.value;C++)h=new t.type.Term(".",[u,h]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[h,p])),a.substitution,a)])}},"sort/2":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type("list",A,n.indicator));else{for(var p=[],h=u;h.indicator==="./2";)p.push(h.args[0]),h=h.args[1];if(t.type.is_variable(h))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(h))o.throw_error(t.error.type("list",u,n.indicator));else{for(var C=p.sort(t.compare),w=C.length-1;w>0;w--)C[w].equals(C[w-1])&&C.splice(w,1);for(var v=new t.type.Term("[]"),w=C.length-1;w>=0;w--)v=new t.type.Term(".",[C[w],v]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[v,A])),a.substitution,a)])}}},"msort/2":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type("list",A,n.indicator));else{for(var p=[],h=u;h.indicator==="./2";)p.push(h.args[0]),h=h.args[1];if(t.type.is_variable(h))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(h))o.throw_error(t.error.type("list",u,n.indicator));else{for(var C=p.sort(t.compare),w=new t.type.Term("[]"),v=C.length-1;v>=0;v--)w=new t.type.Term(".",[C[v],w]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[w,A])),a.substitution,a)])}}},"keysort/2":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type("list",A,n.indicator));else{for(var p=[],h,C=u;C.indicator==="./2";){if(h=C.args[0],t.type.is_variable(h)){o.throw_error(t.error.instantiation(n.indicator));return}else if(!t.type.is_term(h)||h.indicator!=="-/2"){o.throw_error(t.error.type("pair",h,n.indicator));return}h.args[0].pair=h.args[1],p.push(h.args[0]),C=C.args[1]}if(t.type.is_variable(C))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(C))o.throw_error(t.error.type("list",u,n.indicator));else{for(var w=p.sort(t.compare),v=new t.type.Term("[]"),b=w.length-1;b>=0;b--)v=new t.type.Term(".",[new t.type.Term("-",[w[b],w[b].pair]),v]),delete w[b].pair;o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[v,A])),a.substitution,a)])}}},"take/3":function(o,a,n){var u=n.args[0],A=n.args[1],p=n.args[2];if(t.type.is_variable(A)||t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(A))o.throw_error(t.error.type("list",A,n.indicator));else if(!t.type.is_integer(u))o.throw_error(t.error.type("integer",u,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))o.throw_error(t.error.type("list",p,n.indicator));else{for(var h=u.value,C=[],w=A;h>0&&w.indicator==="./2";)C.push(w.args[0]),w=w.args[1],h--;if(h===0){for(var v=new t.type.Term("[]"),h=C.length-1;h>=0;h--)v=new t.type.Term(".",[C[h],v]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[v,p])),a.substitution,a)])}}},"drop/3":function(o,a,n){var u=n.args[0],A=n.args[1],p=n.args[2];if(t.type.is_variable(A)||t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(A))o.throw_error(t.error.type("list",A,n.indicator));else if(!t.type.is_integer(u))o.throw_error(t.error.type("integer",u,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))o.throw_error(t.error.type("list",p,n.indicator));else{for(var h=u.value,C=[],w=A;h>0&&w.indicator==="./2";)C.push(w.args[0]),w=w.args[1],h--;h===0&&o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[w,p])),a.substitution,a)])}},"reverse/2":function(o,a,n){var u=n.args[0],A=n.args[1],p=t.type.is_instantiated_list(u),h=t.type.is_instantiated_list(A);if(t.type.is_variable(u)&&t.type.is_variable(A))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(u)&&!t.type.is_fully_list(u))o.throw_error(t.error.type("list",u,n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type("list",A,n.indicator));else if(!p&&!h)o.throw_error(t.error.instantiation(n.indicator));else{for(var C=p?u:A,w=new t.type.Term("[]",[]);C.indicator==="./2";)w=new t.type.Term(".",[C.args[0],w]),C=C.args[1];o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[w,p?A:u])),a.substitution,a)])}},"list_to_set/2":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else{for(var p=u,h=[];p.indicator==="./2";)h.push(p.args[0]),p=p.args[1];if(t.type.is_variable(p))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_term(p)||p.indicator!=="[]/0")o.throw_error(t.error.type("list",u,n.indicator));else{for(var C=[],w=new t.type.Term("[]",[]),v,b=0;b<h.length;b++){v=!1;for(var E=0;E<C.length&&!v;E++)v=t.compare(h[b],C[E])===0;v||C.push(h[b])}for(b=C.length-1;b>=0;b--)w=new t.type.Term(".",[C[b],w]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[A,w])),a.substitution,a)])}}}}},r=["append/2","append/3","member/2","permutation/2","maplist/2","maplist/3","maplist/4","maplist/5","maplist/6","maplist/7","maplist/8","include/3","exclude/3","foldl/4","sum_list/2","max_list/2","min_list/2","prod_list/2","last/2","prefix/2","nth0/3","nth1/3","nth0/4","nth1/4","length/2","replicate/3","select/3","sort/2","msort/2","keysort/2","take/3","drop/3","reverse/2","list_to_set/2"];typeof nH<"u"?nH.exports=function(o){t=o,new t.type.Module("lists",e(),r)}:new t.type.Module("lists",e(),r)})(Yht)});var Eme=U(qr=>{"use strict";var Zd=process.platform==="win32",iH="aes-256-cbc",Kht="sha256",ame="The current environment doesn't support interactive reading from TTY.",Un=Ie("fs"),sme=process.binding("tty_wrap").TTY,oH=Ie("child_process"),sh=Ie("path"),aH={prompt:"> ",hideEchoBack:!1,mask:"*",limit:[],limitMessage:"Input another, please.$<( [)limit(])>",defaultInput:"",trueValue:[],falseValue:[],caseSensitive:!1,keepWhitespace:!1,encoding:"utf8",bufferSize:1024,print:void 0,history:!0,cd:!1,phContent:void 0,preCheck:void 0},Kf="none",$c,fC,ome=!1,ih,rQ,sH,Jht=0,fH="",Xd=[],nQ,lme=!1,lH=!1,o2=!1;function cme(t){function e(r){return r.replace(/[^\w\u0080-\uFFFF]/g,function(o){return"#"+o.charCodeAt(0)+";"})}return rQ.concat(function(r){var o=[];return Object.keys(r).forEach(function(a){r[a]==="boolean"?t[a]&&o.push("--"+a):r[a]==="string"&&t[a]&&o.push("--"+a,e(t[a]))}),o}({display:"string",displayOnly:"boolean",keyIn:"boolean",hideEchoBack:"boolean",mask:"string",limit:"string",caseSensitive:"boolean"}))}function Vht(t,e){function r(_){var J,re="",oe;for(sH=sH||Ie("os").tmpdir();;){J=sh.join(sH,_+re);try{oe=Un.openSync(J,"wx")}catch(pe){if(pe.code==="EEXIST"){re++;continue}else throw pe}Un.closeSync(oe);break}return J}var o,a,n,u={},A,p,h=r("readline-sync.stdout"),C=r("readline-sync.stderr"),w=r("readline-sync.exit"),v=r("readline-sync.done"),b=Ie("crypto"),E,R,L;E=b.createHash(Kht),E.update(""+process.pid+Jht+++Math.random()),L=E.digest("hex"),R=b.createDecipher(iH,L),o=cme(t),Zd?(a=process.env.ComSpec||"cmd.exe",process.env.Q='"',n=["/V:ON","/S","/C","(%Q%"+a+"%Q% /V:ON /S /C %Q%%Q%"+ih+"%Q%"+o.map(function(_){return" %Q%"+_+"%Q%"}).join("")+" & (echo !ERRORLEVEL!)>%Q%"+w+"%Q%%Q%) 2>%Q%"+C+"%Q% |%Q%"+process.execPath+"%Q% %Q%"+__dirname+"\\encrypt.js%Q% %Q%"+iH+"%Q% %Q%"+L+"%Q% >%Q%"+h+"%Q% & (echo 1)>%Q%"+v+"%Q%"]):(a="/bin/sh",n=["-c",'("'+ih+'"'+o.map(function(_){return" '"+_.replace(/'/g,"'\\''")+"'"}).join("")+'; echo $?>"'+w+'") 2>"'+C+'" |"'+process.execPath+'" "'+__dirname+'/encrypt.js" "'+iH+'" "'+L+'" >"'+h+'"; echo 1 >"'+v+'"']),o2&&o2("_execFileSync",o);try{oH.spawn(a,n,e)}catch(_){u.error=new Error(_.message),u.error.method="_execFileSync - spawn",u.error.program=a,u.error.args=n}for(;Un.readFileSync(v,{encoding:t.encoding}).trim()!=="1";);return(A=Un.readFileSync(w,{encoding:t.encoding}).trim())==="0"?u.input=R.update(Un.readFileSync(h,{encoding:"binary"}),"hex",t.encoding)+R.final(t.encoding):(p=Un.readFileSync(C,{encoding:t.encoding}).trim(),u.error=new Error(ame+(p?` | 244 | ${V}`}).join("");h.push({text:`Conflict detected in constraint targeting ${ye.pretty(t.configuration,b,ye.Type.CODE)}; conflicting values are:${R}`,fixable:!1})}else{let[[R]]=E,L=(0,ame.default)(v,b);if(L===R)continue;if(!o){let _=typeof L>"u"?`Missing field ${ye.pretty(t.configuration,b,ye.Type.CODE)}; expected ${ye.pretty(t.configuration,R,ye.Type.INSPECT)}`:typeof R>"u"?`Extraneous field ${ye.pretty(t.configuration,b,ye.Type.CODE)} currently set to ${ye.pretty(t.configuration,L,ye.Type.INSPECT)}`:`Invalid field ${ye.pretty(t.configuration,b,ye.Type.CODE)}; expected ${ye.pretty(t.configuration,R,ye.Type.INSPECT)}, found ${ye.pretty(t.configuration,L,ye.Type.INSPECT)}`;h.push({text:_,fixable:!0});continue}typeof R>"u"?(0,ume.default)(v,b):(0,lme.default)(v,b,R),C=!0}C&&a.set(w,v)}h.length>0&&n.set(w,h)}return{changedWorkspaces:a,remainingErrors:n}}function Ame(t,{configuration:e}){let r={children:[]};for(let[o,a]of t){let n=[];for(let A of a){let p=A.text.split(/\n/);A.fixable&&(p[0]=`${ye.pretty(e,"\u2699","gray")} ${p[0]}`),n.push({value:ye.tuple(ye.Type.NO_HINT,p[0]),children:p.slice(1).map(h=>({value:ye.tuple(ye.Type.NO_HINT,h)}))})}let u={value:ye.tuple(ye.Type.LOCATOR,o.anchoredLocator),children:We.sortMap(n,A=>A.value[1])};r.children.push(u)}return r.children=We.sortMap(r.children,o=>o.value[1]),r}var ame,lme,cme,ume,c2,ngt,igt,sgt,A2=dt(()=>{Ke();ame=tt(r2()),lme=tt(k8()),cme=tt(ome()),ume=tt(T8()),c2=class{constructor(e){this.indexedFields=e;this.items=[];this.indexes={};this.clear()}clear(){this.items=[];for(let e of this.indexedFields)this.indexes[e]=new Map}insert(e){this.items.push(e);for(let r of this.indexedFields){let o=Object.prototype.hasOwnProperty.call(e,r)?e[r]:void 0;if(typeof o>"u")continue;We.getArrayWithDefault(this.indexes[r],o).push(e)}return e}find(e){if(typeof e>"u")return this.items;let r=Object.entries(e);if(r.length===0)return this.items;let o=[],a;for(let[u,A]of r){let p=u,h=Object.prototype.hasOwnProperty.call(this.indexes,p)?this.indexes[p]:void 0;if(typeof h>"u"){o.push([p,A]);continue}let C=new Set(h.get(A)??[]);if(C.size===0)return[];if(typeof a>"u")a=C;else for(let w of a)C.has(w)||a.delete(w);if(a.size===0)break}let n=[...a??[]];return o.length>0&&(n=n.filter(u=>{for(let[A,p]of o)if(!(typeof p<"u"?Object.prototype.hasOwnProperty.call(u,A)&&u[A]===p:Object.prototype.hasOwnProperty.call(u,A)===!1))return!1;return!0})),n}},ngt=/^[0-9]+$/,igt=/^[a-zA-Z0-9_]+$/,sgt=new Set(["scripts",...Nt.allDependencies])});var fme=U((s5t,oH)=>{var lgt;(function(t){var e=function(){return{"append/2":[new t.type.Rule(new t.type.Term("append",[new t.type.Var("X"),new t.type.Var("L")]),new t.type.Term("foldl",[new t.type.Term("append",[]),new t.type.Var("X"),new t.type.Term("[]",[]),new t.type.Var("L")]))],"append/3":[new t.type.Rule(new t.type.Term("append",[new t.type.Term("[]",[]),new t.type.Var("X"),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("append",[new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("S")])]),new t.type.Term("append",[new t.type.Var("T"),new t.type.Var("X"),new t.type.Var("S")]))],"member/2":[new t.type.Rule(new t.type.Term("member",[new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("_")])]),null),new t.type.Rule(new t.type.Term("member",[new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("_"),new t.type.Var("Xs")])]),new t.type.Term("member",[new t.type.Var("X"),new t.type.Var("Xs")]))],"permutation/2":[new t.type.Rule(new t.type.Term("permutation",[new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("permutation",[new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("permutation",[new t.type.Var("T"),new t.type.Var("P")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("P")]),new t.type.Term("append",[new t.type.Var("X"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("Y")]),new t.type.Var("S")])])]))],"maplist/2":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("X")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("Xs")])]))],"maplist/3":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs")])]))],"maplist/4":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs")])]))],"maplist/5":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds")])]))],"maplist/6":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")]),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Es")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D"),new t.type.Var("E")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds"),new t.type.Var("Es")])]))],"maplist/7":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")]),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Es")]),new t.type.Term(".",[new t.type.Var("F"),new t.type.Var("Fs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D"),new t.type.Var("E"),new t.type.Var("F")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds"),new t.type.Var("Es"),new t.type.Var("Fs")])]))],"maplist/8":[new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("A"),new t.type.Var("As")]),new t.type.Term(".",[new t.type.Var("B"),new t.type.Var("Bs")]),new t.type.Term(".",[new t.type.Var("C"),new t.type.Var("Cs")]),new t.type.Term(".",[new t.type.Var("D"),new t.type.Var("Ds")]),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Es")]),new t.type.Term(".",[new t.type.Var("F"),new t.type.Var("Fs")]),new t.type.Term(".",[new t.type.Var("G"),new t.type.Var("Gs")])]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P"),new t.type.Var("A"),new t.type.Var("B"),new t.type.Var("C"),new t.type.Var("D"),new t.type.Var("E"),new t.type.Var("F"),new t.type.Var("G")]),new t.type.Term("maplist",[new t.type.Var("P"),new t.type.Var("As"),new t.type.Var("Bs"),new t.type.Var("Cs"),new t.type.Var("Ds"),new t.type.Var("Es"),new t.type.Var("Fs"),new t.type.Var("Gs")])]))],"include/3":[new t.type.Rule(new t.type.Term("include",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("include",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("L")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P"),new t.type.Var("A")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("A"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Term("[]",[])]),new t.type.Var("B")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("F"),new t.type.Var("B")]),new t.type.Term(",",[new t.type.Term(";",[new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("F")]),new t.type.Term(",",[new t.type.Term("=",[new t.type.Var("L"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("S")])]),new t.type.Term("!",[])])]),new t.type.Term("=",[new t.type.Var("L"),new t.type.Var("S")])]),new t.type.Term("include",[new t.type.Var("P"),new t.type.Var("T"),new t.type.Var("S")])])])])]))],"exclude/3":[new t.type.Rule(new t.type.Term("exclude",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Term("[]",[])]),null),new t.type.Rule(new t.type.Term("exclude",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("exclude",[new t.type.Var("P"),new t.type.Var("T"),new t.type.Var("E")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P"),new t.type.Var("L")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("L"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Term("[]",[])]),new t.type.Var("Q")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("R"),new t.type.Var("Q")]),new t.type.Term(";",[new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("R")]),new t.type.Term(",",[new t.type.Term("!",[]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("E")])])]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("E")])])])])])])]))],"foldl/4":[new t.type.Rule(new t.type.Term("foldl",[new t.type.Var("_"),new t.type.Term("[]",[]),new t.type.Var("I"),new t.type.Var("I")]),null),new t.type.Rule(new t.type.Term("foldl",[new t.type.Var("P"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Var("T")]),new t.type.Var("I"),new t.type.Var("R")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P"),new t.type.Var("L")]),new t.type.Term(",",[new t.type.Term("append",[new t.type.Var("L"),new t.type.Term(".",[new t.type.Var("I"),new t.type.Term(".",[new t.type.Var("H"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])])])]),new t.type.Var("L2")]),new t.type.Term(",",[new t.type.Term("=..",[new t.type.Var("P2"),new t.type.Var("L2")]),new t.type.Term(",",[new t.type.Term("call",[new t.type.Var("P2")]),new t.type.Term("foldl",[new t.type.Var("P"),new t.type.Var("T"),new t.type.Var("X"),new t.type.Var("R")])])])])]))],"select/3":[new t.type.Rule(new t.type.Term("select",[new t.type.Var("E"),new t.type.Term(".",[new t.type.Var("E"),new t.type.Var("Xs")]),new t.type.Var("Xs")]),null),new t.type.Rule(new t.type.Term("select",[new t.type.Var("E"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Ys")])]),new t.type.Term("select",[new t.type.Var("E"),new t.type.Var("Xs"),new t.type.Var("Ys")]))],"sum_list/2":[new t.type.Rule(new t.type.Term("sum_list",[new t.type.Term("[]",[]),new t.type.Num(0,!1)]),null),new t.type.Rule(new t.type.Term("sum_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("sum_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term("is",[new t.type.Var("S"),new t.type.Term("+",[new t.type.Var("X"),new t.type.Var("Y")])])]))],"max_list/2":[new t.type.Rule(new t.type.Term("max_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])]),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("max_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("max_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term(";",[new t.type.Term(",",[new t.type.Term(">=",[new t.type.Var("X"),new t.type.Var("Y")]),new t.type.Term(",",[new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("X")]),new t.type.Term("!",[])])]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("Y")])])]))],"min_list/2":[new t.type.Rule(new t.type.Term("min_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])]),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("min_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("min_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term(";",[new t.type.Term(",",[new t.type.Term("=<",[new t.type.Var("X"),new t.type.Var("Y")]),new t.type.Term(",",[new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("X")]),new t.type.Term("!",[])])]),new t.type.Term("=",[new t.type.Var("S"),new t.type.Var("Y")])])]))],"prod_list/2":[new t.type.Rule(new t.type.Term("prod_list",[new t.type.Term("[]",[]),new t.type.Num(1,!1)]),null),new t.type.Rule(new t.type.Term("prod_list",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("S")]),new t.type.Term(",",[new t.type.Term("prod_list",[new t.type.Var("Xs"),new t.type.Var("Y")]),new t.type.Term("is",[new t.type.Var("S"),new t.type.Term("*",[new t.type.Var("X"),new t.type.Var("Y")])])]))],"last/2":[new t.type.Rule(new t.type.Term("last",[new t.type.Term(".",[new t.type.Var("X"),new t.type.Term("[]",[])]),new t.type.Var("X")]),null),new t.type.Rule(new t.type.Term("last",[new t.type.Term(".",[new t.type.Var("_"),new t.type.Var("Xs")]),new t.type.Var("X")]),new t.type.Term("last",[new t.type.Var("Xs"),new t.type.Var("X")]))],"prefix/2":[new t.type.Rule(new t.type.Term("prefix",[new t.type.Var("Part"),new t.type.Var("Whole")]),new t.type.Term("append",[new t.type.Var("Part"),new t.type.Var("_"),new t.type.Var("Whole")]))],"nth0/3":[new t.type.Rule(new t.type.Term("nth0",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")])]),new t.type.Term(",",[new t.type.Term(">=",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")]),new t.type.Term("!",[])])])]))],"nth1/3":[new t.type.Rule(new t.type.Term("nth1",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")])]),new t.type.Term(",",[new t.type.Term(">",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("_")]),new t.type.Term("!",[])])])]))],"nth0/4":[new t.type.Rule(new t.type.Term("nth0",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")])]),new t.type.Term(",",[new t.type.Term(">=",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(0,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term("!",[])])])]))],"nth1/4":[new t.type.Rule(new t.type.Term("nth1",[new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term(";",[new t.type.Term("->",[new t.type.Term("var",[new t.type.Var("X")]),new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")])]),new t.type.Term(",",[new t.type.Term(">",[new t.type.Var("X"),new t.type.Num(0,!1)]),new t.type.Term(",",[new t.type.Term("nth",[new t.type.Num(1,!1),new t.type.Var("X"),new t.type.Var("Y"),new t.type.Var("Z"),new t.type.Var("W")]),new t.type.Term("!",[])])])]))],"nth/5":[new t.type.Rule(new t.type.Term("nth",[new t.type.Var("N"),new t.type.Var("N"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("X"),new t.type.Var("Xs")]),null),new t.type.Rule(new t.type.Term("nth",[new t.type.Var("N"),new t.type.Var("O"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Xs")]),new t.type.Var("Y"),new t.type.Term(".",[new t.type.Var("X"),new t.type.Var("Ys")])]),new t.type.Term(",",[new t.type.Term("is",[new t.type.Var("M"),new t.type.Term("+",[new t.type.Var("N"),new t.type.Num(1,!1)])]),new t.type.Term("nth",[new t.type.Var("M"),new t.type.Var("O"),new t.type.Var("Xs"),new t.type.Var("Y"),new t.type.Var("Ys")])]))],"length/2":function(o,a,n){var u=n.args[0],A=n.args[1];if(!t.type.is_variable(A)&&!t.type.is_integer(A))o.throw_error(t.error.type("integer",A,n.indicator));else if(t.type.is_integer(A)&&A.value<0)o.throw_error(t.error.domain("not_less_than_zero",A,n.indicator));else{var p=new t.type.Term("length",[u,new t.type.Num(0,!1),A]);t.type.is_integer(A)&&(p=new t.type.Term(",",[p,new t.type.Term("!",[])])),o.prepend([new t.type.State(a.goal.replace(p),a.substitution,a)])}},"length/3":[new t.type.Rule(new t.type.Term("length",[new t.type.Term("[]",[]),new t.type.Var("N"),new t.type.Var("N")]),null),new t.type.Rule(new t.type.Term("length",[new t.type.Term(".",[new t.type.Var("_"),new t.type.Var("X")]),new t.type.Var("A"),new t.type.Var("N")]),new t.type.Term(",",[new t.type.Term("succ",[new t.type.Var("A"),new t.type.Var("B")]),new t.type.Term("length",[new t.type.Var("X"),new t.type.Var("B"),new t.type.Var("N")])]))],"replicate/3":function(o,a,n){var u=n.args[0],A=n.args[1],p=n.args[2];if(t.type.is_variable(A))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_integer(A))o.throw_error(t.error.type("integer",A,n.indicator));else if(A.value<0)o.throw_error(t.error.domain("not_less_than_zero",A,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))o.throw_error(t.error.type("list",p,n.indicator));else{for(var h=new t.type.Term("[]"),C=0;C<A.value;C++)h=new t.type.Term(".",[u,h]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[h,p])),a.substitution,a)])}},"sort/2":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type("list",A,n.indicator));else{for(var p=[],h=u;h.indicator==="./2";)p.push(h.args[0]),h=h.args[1];if(t.type.is_variable(h))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(h))o.throw_error(t.error.type("list",u,n.indicator));else{for(var C=p.sort(t.compare),w=C.length-1;w>0;w--)C[w].equals(C[w-1])&&C.splice(w,1);for(var v=new t.type.Term("[]"),w=C.length-1;w>=0;w--)v=new t.type.Term(".",[C[w],v]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[v,A])),a.substitution,a)])}}},"msort/2":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type("list",A,n.indicator));else{for(var p=[],h=u;h.indicator==="./2";)p.push(h.args[0]),h=h.args[1];if(t.type.is_variable(h))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(h))o.throw_error(t.error.type("list",u,n.indicator));else{for(var C=p.sort(t.compare),w=new t.type.Term("[]"),v=C.length-1;v>=0;v--)w=new t.type.Term(".",[C[v],w]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[w,A])),a.substitution,a)])}}},"keysort/2":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type("list",A,n.indicator));else{for(var p=[],h,C=u;C.indicator==="./2";){if(h=C.args[0],t.type.is_variable(h)){o.throw_error(t.error.instantiation(n.indicator));return}else if(!t.type.is_term(h)||h.indicator!=="-/2"){o.throw_error(t.error.type("pair",h,n.indicator));return}h.args[0].pair=h.args[1],p.push(h.args[0]),C=C.args[1]}if(t.type.is_variable(C))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(C))o.throw_error(t.error.type("list",u,n.indicator));else{for(var w=p.sort(t.compare),v=new t.type.Term("[]"),b=w.length-1;b>=0;b--)v=new t.type.Term(".",[new t.type.Term("-",[w[b],w[b].pair]),v]),delete w[b].pair;o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[v,A])),a.substitution,a)])}}},"take/3":function(o,a,n){var u=n.args[0],A=n.args[1],p=n.args[2];if(t.type.is_variable(A)||t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(A))o.throw_error(t.error.type("list",A,n.indicator));else if(!t.type.is_integer(u))o.throw_error(t.error.type("integer",u,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))o.throw_error(t.error.type("list",p,n.indicator));else{for(var h=u.value,C=[],w=A;h>0&&w.indicator==="./2";)C.push(w.args[0]),w=w.args[1],h--;if(h===0){for(var v=new t.type.Term("[]"),h=C.length-1;h>=0;h--)v=new t.type.Term(".",[C[h],v]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[v,p])),a.substitution,a)])}}},"drop/3":function(o,a,n){var u=n.args[0],A=n.args[1],p=n.args[2];if(t.type.is_variable(A)||t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(A))o.throw_error(t.error.type("list",A,n.indicator));else if(!t.type.is_integer(u))o.throw_error(t.error.type("integer",u,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))o.throw_error(t.error.type("list",p,n.indicator));else{for(var h=u.value,C=[],w=A;h>0&&w.indicator==="./2";)C.push(w.args[0]),w=w.args[1],h--;h===0&&o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[w,p])),a.substitution,a)])}},"reverse/2":function(o,a,n){var u=n.args[0],A=n.args[1],p=t.type.is_instantiated_list(u),h=t.type.is_instantiated_list(A);if(t.type.is_variable(u)&&t.type.is_variable(A))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(u)&&!t.type.is_fully_list(u))o.throw_error(t.error.type("list",u,n.indicator));else if(!t.type.is_variable(A)&&!t.type.is_fully_list(A))o.throw_error(t.error.type("list",A,n.indicator));else if(!p&&!h)o.throw_error(t.error.instantiation(n.indicator));else{for(var C=p?u:A,w=new t.type.Term("[]",[]);C.indicator==="./2";)w=new t.type.Term(".",[C.args[0],w]),C=C.args[1];o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[w,p?A:u])),a.substitution,a)])}},"list_to_set/2":function(o,a,n){var u=n.args[0],A=n.args[1];if(t.type.is_variable(u))o.throw_error(t.error.instantiation(n.indicator));else{for(var p=u,h=[];p.indicator==="./2";)h.push(p.args[0]),p=p.args[1];if(t.type.is_variable(p))o.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_term(p)||p.indicator!=="[]/0")o.throw_error(t.error.type("list",u,n.indicator));else{for(var C=[],w=new t.type.Term("[]",[]),v,b=0;b<h.length;b++){v=!1;for(var E=0;E<C.length&&!v;E++)v=t.compare(h[b],C[E])===0;v||C.push(h[b])}for(b=C.length-1;b>=0;b--)w=new t.type.Term(".",[C[b],w]);o.prepend([new t.type.State(a.goal.replace(new t.type.Term("=",[A,w])),a.substitution,a)])}}}}},r=["append/2","append/3","member/2","permutation/2","maplist/2","maplist/3","maplist/4","maplist/5","maplist/6","maplist/7","maplist/8","include/3","exclude/3","foldl/4","sum_list/2","max_list/2","min_list/2","prod_list/2","last/2","prefix/2","nth0/3","nth1/3","nth0/4","nth1/4","length/2","replicate/3","select/3","sort/2","msort/2","keysort/2","take/3","drop/3","reverse/2","list_to_set/2"];typeof oH<"u"?oH.exports=function(o){t=o,new t.type.Module("lists",e(),r)}:new t.type.Module("lists",e(),r)})(lgt)});var Pme=U(qr=>{"use strict";var rm=process.platform==="win32",aH="aes-256-cbc",cgt="sha256",gme="The current environment doesn't support interactive reading from TTY.",Un=Ie("fs"),pme=process.binding("tty_wrap").TTY,cH=Ie("child_process"),ah=Ie("path"),uH={prompt:"> ",hideEchoBack:!1,mask:"*",limit:[],limitMessage:"Input another, please.$<( [)limit(])>",defaultInput:"",trueValue:[],falseValue:[],caseSensitive:!1,keepWhitespace:!1,encoding:"utf8",bufferSize:1024,print:void 0,history:!0,cd:!1,phContent:void 0,preCheck:void 0},Xf="none",ru,mC,hme=!1,oh,fQ,lH,ugt=0,gH="",tm=[],pQ,dme=!1,AH=!1,f2=!1;function mme(t){function e(r){return r.replace(/[^\w\u0080-\uFFFF]/g,function(o){return"#"+o.charCodeAt(0)+";"})}return fQ.concat(function(r){var o=[];return Object.keys(r).forEach(function(a){r[a]==="boolean"?t[a]&&o.push("--"+a):r[a]==="string"&&t[a]&&o.push("--"+a,e(t[a]))}),o}({display:"string",displayOnly:"boolean",keyIn:"boolean",hideEchoBack:"boolean",mask:"string",limit:"string",caseSensitive:"boolean"}))}function Agt(t,e){function r(_){var V,re="",ae;for(lH=lH||Ie("os").tmpdir();;){V=ah.join(lH,_+re);try{ae=Un.openSync(V,"wx")}catch(he){if(he.code==="EEXIST"){re++;continue}else throw he}Un.closeSync(ae);break}return V}var o,a,n,u={},A,p,h=r("readline-sync.stdout"),C=r("readline-sync.stderr"),w=r("readline-sync.exit"),v=r("readline-sync.done"),b=Ie("crypto"),E,R,L;E=b.createHash(cgt),E.update(""+process.pid+ugt+++Math.random()),L=E.digest("hex"),R=b.createDecipher(aH,L),o=mme(t),rm?(a=process.env.ComSpec||"cmd.exe",process.env.Q='"',n=["/V:ON","/S","/C","(%Q%"+a+"%Q% /V:ON /S /C %Q%%Q%"+oh+"%Q%"+o.map(function(_){return" %Q%"+_+"%Q%"}).join("")+" & (echo !ERRORLEVEL!)>%Q%"+w+"%Q%%Q%) 2>%Q%"+C+"%Q% |%Q%"+process.execPath+"%Q% %Q%"+__dirname+"\\encrypt.js%Q% %Q%"+aH+"%Q% %Q%"+L+"%Q% >%Q%"+h+"%Q% & (echo 1)>%Q%"+v+"%Q%"]):(a="/bin/sh",n=["-c",'("'+oh+'"'+o.map(function(_){return" '"+_.replace(/'/g,"'\\''")+"'"}).join("")+'; echo $?>"'+w+'") 2>"'+C+'" |"'+process.execPath+'" "'+__dirname+'/encrypt.js" "'+aH+'" "'+L+'" >"'+h+'"; echo 1 >"'+v+'"']),f2&&f2("_execFileSync",o);try{cH.spawn(a,n,e)}catch(_){u.error=new Error(_.message),u.error.method="_execFileSync - spawn",u.error.program=a,u.error.args=n}for(;Un.readFileSync(v,{encoding:t.encoding}).trim()!=="1";);return(A=Un.readFileSync(w,{encoding:t.encoding}).trim())==="0"?u.input=R.update(Un.readFileSync(h,{encoding:"binary"}),"hex",t.encoding)+R.final(t.encoding):(p=Un.readFileSync(C,{encoding:t.encoding}).trim(),u.error=new Error(gme+(p?` |
245 | `+p:"")),u.error.method="_execFileSync",u.error.program=a,u.error.args=n,u.error.extMessage=p,u.error.exitCode=+A),Un.unlinkSync(h),Un.unlinkSync(C),Un.unlinkSync(w),Un.unlinkSync(v),u}function zht(t){var e,r={},o,a={env:process.env,encoding:t.encoding};if(ih||(Zd?process.env.PSModulePath?(ih="powershell.exe",rQ=["-ExecutionPolicy","Bypass","-File",__dirname+"\\read.ps1"]):(ih="cscript.exe",rQ=["//nologo",__dirname+"\\read.cs.js"]):(ih="/bin/sh",rQ=[__dirname+"/read.sh"])),Zd&&!process.env.PSModulePath&&(a.stdio=[process.stdin]),oH.execFileSync){e=cme(t),o2&&o2("execFileSync",e);try{r.input=oH.execFileSync(ih,e,a)}catch(n){o=n.stderr?(n.stderr+"").trim():"",r.error=new Error(ame+(o?` | 245 | `+p:"")),u.error.method="_execFileSync",u.error.program=a,u.error.args=n,u.error.extMessage=p,u.error.exitCode=+A),Un.unlinkSync(h),Un.unlinkSync(C),Un.unlinkSync(w),Un.unlinkSync(v),u}function fgt(t){var e,r={},o,a={env:process.env,encoding:t.encoding};if(oh||(rm?process.env.PSModulePath?(oh="powershell.exe",fQ=["-ExecutionPolicy","Bypass","-File",__dirname+"\\read.ps1"]):(oh="cscript.exe",fQ=["//nologo",__dirname+"\\read.cs.js"]):(oh="/bin/sh",fQ=[__dirname+"/read.sh"])),rm&&!process.env.PSModulePath&&(a.stdio=[process.stdin]),cH.execFileSync){e=mme(t),f2&&f2("execFileSync",e);try{r.input=cH.execFileSync(oh,e,a)}catch(n){o=n.stderr?(n.stderr+"").trim():"",r.error=new Error(gme+(o?` |
246 | `+o:"")),r.error.method="execFileSync",r.error.program=ih,r.error.args=e,r.error.extMessage=o,r.error.exitCode=n.status,r.error.code=n.code,r.error.signal=n.signal}}else r=Vht(t,a);return r.error||(r.input=r.input.replace(/^\s*'|'\s*$/g,""),t.display=""),r}function cH(t){var e="",r=t.display,o=!t.display&&t.keyIn&&t.hideEchoBack&&!t.mask;function a(){var n=zht(t);if(n.error)throw n.error;return n.input}return lH&&lH(t),function(){var n,u,A;function p(){return n||(n=process.binding("fs"),u=process.binding("constants")),n}if(typeof Kf=="string")if(Kf=null,Zd){if(A=function(h){var C=h.replace(/^\D+/,"").split("."),w=0;return(C[0]=+C[0])&&(w+=C[0]*1e4),(C[1]=+C[1])&&(w+=C[1]*100),(C[2]=+C[2])&&(w+=C[2]),w}(process.version),!(A>=20302&&A<40204||A>=5e4&&A<50100||A>=50600&&A<60200)&&process.stdin.isTTY)process.stdin.pause(),Kf=process.stdin.fd,fC=process.stdin._handle;else try{Kf=p().open("CONIN$",u.O_RDWR,parseInt("0666",8)),fC=new sme(Kf,!0)}catch{}if(process.stdout.isTTY)$c=process.stdout.fd;else{try{$c=Un.openSync("\\\\.\\CON","w")}catch{}if(typeof $c!="number")try{$c=p().open("CONOUT$",u.O_RDWR,parseInt("0666",8))}catch{}}}else{if(process.stdin.isTTY){process.stdin.pause();try{Kf=Un.openSync("/dev/tty","r"),fC=process.stdin._handle}catch{}}else try{Kf=Un.openSync("/dev/tty","r"),fC=new sme(Kf,!1)}catch{}if(process.stdout.isTTY)$c=process.stdout.fd;else try{$c=Un.openSync("/dev/tty","w")}catch{}}}(),function(){var n,u,A=!t.hideEchoBack&&!t.keyIn,p,h,C,w,v;nQ="";function b(E){return E===ome?!0:fC.setRawMode(E)!==0?!1:(ome=E,!0)}if(lme||!fC||typeof $c!="number"&&(t.display||!A)){e=a();return}if(t.display&&(Un.writeSync($c,t.display),t.display=""),!t.displayOnly){if(!b(!A)){e=a();return}for(h=t.keyIn?1:t.bufferSize,p=Buffer.allocUnsafe&&Buffer.alloc?Buffer.alloc(h):new Buffer(h),t.keyIn&&t.limit&&(u=new RegExp("[^"+t.limit+"]","g"+(t.caseSensitive?"":"i")));;){C=0;try{C=Un.readSync(Kf,p,0,h)}catch(E){if(E.code!=="EOF"){b(!1),e+=a();return}}if(C>0?(w=p.toString(t.encoding,0,C),nQ+=w):(w=` | 246 | `+o:"")),r.error.method="execFileSync",r.error.program=oh,r.error.args=e,r.error.extMessage=o,r.error.exitCode=n.status,r.error.code=n.code,r.error.signal=n.signal}}else r=Agt(t,a);return r.error||(r.input=r.input.replace(/^\s*'|'\s*$/g,""),t.display=""),r}function fH(t){var e="",r=t.display,o=!t.display&&t.keyIn&&t.hideEchoBack&&!t.mask;function a(){var n=fgt(t);if(n.error)throw n.error;return n.input}return AH&&AH(t),function(){var n,u,A;function p(){return n||(n=process.binding("fs"),u=process.binding("constants")),n}if(typeof Xf=="string")if(Xf=null,rm){if(A=function(h){var C=h.replace(/^\D+/,"").split("."),w=0;return(C[0]=+C[0])&&(w+=C[0]*1e4),(C[1]=+C[1])&&(w+=C[1]*100),(C[2]=+C[2])&&(w+=C[2]),w}(process.version),!(A>=20302&&A<40204||A>=5e4&&A<50100||A>=50600&&A<60200)&&process.stdin.isTTY)process.stdin.pause(),Xf=process.stdin.fd,mC=process.stdin._handle;else try{Xf=p().open("CONIN$",u.O_RDWR,parseInt("0666",8)),mC=new pme(Xf,!0)}catch{}if(process.stdout.isTTY)ru=process.stdout.fd;else{try{ru=Un.openSync("\\\\.\\CON","w")}catch{}if(typeof ru!="number")try{ru=p().open("CONOUT$",u.O_RDWR,parseInt("0666",8))}catch{}}}else{if(process.stdin.isTTY){process.stdin.pause();try{Xf=Un.openSync("/dev/tty","r"),mC=process.stdin._handle}catch{}}else try{Xf=Un.openSync("/dev/tty","r"),mC=new pme(Xf,!1)}catch{}if(process.stdout.isTTY)ru=process.stdout.fd;else try{ru=Un.openSync("/dev/tty","w")}catch{}}}(),function(){var n,u,A=!t.hideEchoBack&&!t.keyIn,p,h,C,w,v;pQ="";function b(E){return E===hme?!0:mC.setRawMode(E)!==0?!1:(hme=E,!0)}if(dme||!mC||typeof ru!="number"&&(t.display||!A)){e=a();return}if(t.display&&(Un.writeSync(ru,t.display),t.display=""),!t.displayOnly){if(!b(!A)){e=a();return}for(h=t.keyIn?1:t.bufferSize,p=Buffer.allocUnsafe&&Buffer.alloc?Buffer.alloc(h):new Buffer(h),t.keyIn&&t.limit&&(u=new RegExp("[^"+t.limit+"]","g"+(t.caseSensitive?"":"i")));;){C=0;try{C=Un.readSync(Xf,p,0,h)}catch(E){if(E.code!=="EOF"){b(!1),e+=a();return}}if(C>0?(w=p.toString(t.encoding,0,C),pQ+=w):(w=` |
247 | `,nQ+=String.fromCharCode(0)),w&&typeof(v=(w.match(/^(.*?)[\r\n]/)||[])[1])=="string"&&(w=v,n=!0),w&&(w=w.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/g,"")),w&&u&&(w=w.replace(u,"")),w&&(A||(t.hideEchoBack?t.mask&&Un.writeSync($c,new Array(w.length+1).join(t.mask)):Un.writeSync($c,w)),e+=w),!t.keyIn&&n||t.keyIn&&e.length>=h)break}!A&&!o&&Un.writeSync($c,` | 247 | `,pQ+=String.fromCharCode(0)),w&&typeof(v=(w.match(/^(.*?)[\r\n]/)||[])[1])=="string"&&(w=v,n=!0),w&&(w=w.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/g,"")),w&&u&&(w=w.replace(u,"")),w&&(A||(t.hideEchoBack?t.mask&&Un.writeSync(ru,new Array(w.length+1).join(t.mask)):Un.writeSync(ru,w)),e+=w),!t.keyIn&&n||t.keyIn&&e.length>=h)break}!A&&!o&&Un.writeSync(ru,` |
248 | `),b(!1)}}(),t.print&&!o&&t.print(r+(t.displayOnly?"":(t.hideEchoBack?new Array(e.length+1).join(t.mask):e)+` | 248 | `),b(!1)}}(),t.print&&!o&&t.print(r+(t.displayOnly?"":(t.hideEchoBack?new Array(e.length+1).join(t.mask):e)+` |
249 | `),t.encoding),t.displayOnly?"":fH=t.keepWhitespace||t.keyIn?e:e.trim()}function Xht(t,e){var r=[];function o(a){a!=null&&(Array.isArray(a)?a.forEach(o):(!e||e(a))&&r.push(a))}return o(t),r}function pH(t){return t.replace(/[\x00-\x7f]/g,function(e){return"\\x"+("00"+e.charCodeAt().toString(16)).substr(-2)})}function Ps(){var t=Array.prototype.slice.call(arguments),e,r;return t.length&&typeof t[0]=="boolean"&&(r=t.shift(),r&&(e=Object.keys(aH),t.unshift(aH))),t.reduce(function(o,a){return a==null||(a.hasOwnProperty("noEchoBack")&&!a.hasOwnProperty("hideEchoBack")&&(a.hideEchoBack=a.noEchoBack,delete a.noEchoBack),a.hasOwnProperty("noTrim")&&!a.hasOwnProperty("keepWhitespace")&&(a.keepWhitespace=a.noTrim,delete a.noTrim),r||(e=Object.keys(a)),e.forEach(function(n){var u;if(!!a.hasOwnProperty(n))switch(u=a[n],n){case"mask":case"limitMessage":case"defaultInput":case"encoding":u=u!=null?u+"":"",u&&n!=="limitMessage"&&(u=u.replace(/[\r\n]/g,"")),o[n]=u;break;case"bufferSize":!isNaN(u=parseInt(u,10))&&typeof u=="number"&&(o[n]=u);break;case"displayOnly":case"keyIn":case"hideEchoBack":case"caseSensitive":case"keepWhitespace":case"history":case"cd":o[n]=!!u;break;case"limit":case"trueValue":case"falseValue":o[n]=Xht(u,function(A){var p=typeof A;return p==="string"||p==="number"||p==="function"||A instanceof RegExp}).map(function(A){return typeof A=="string"?A.replace(/[\r\n]/g,""):A});break;case"print":case"phContent":case"preCheck":o[n]=typeof u=="function"?u:void 0;break;case"prompt":case"display":o[n]=u??"";break}})),o},{})}function uH(t,e,r){return e.some(function(o){var a=typeof o;return a==="string"?r?t===o:t.toLowerCase()===o.toLowerCase():a==="number"?parseFloat(t)===o:a==="function"?o(t):o instanceof RegExp?o.test(t):!1})}function hH(t,e){var r=sh.normalize(Zd?(process.env.HOMEDRIVE||"")+(process.env.HOMEPATH||""):process.env.HOME||"").replace(/[\/\\]+$/,"");return t=sh.normalize(t),e?t.replace(/^~(?=\/|\\|$)/,r):t.replace(new RegExp("^"+pH(r)+"(?=\\/|\\\\|$)",Zd?"i":""),"~")}function pC(t,e){var r="(?:\\(([\\s\\S]*?)\\))?(\\w+|.-.)(?:\\(([\\s\\S]*?)\\))?",o=new RegExp("(\\$)?(\\$<"+r+">)","g"),a=new RegExp("(\\$)?(\\$\\{"+r+"\\})","g");function n(u,A,p,h,C,w){var v;return A||typeof(v=e(C))!="string"?p:v?(h||"")+v+(w||""):""}return t.replace(o,n).replace(a,n)}function ume(t,e,r){var o,a=[],n=-1,u=0,A="",p;function h(C,w){return w.length>3?(C.push(w[0]+"..."+w[w.length-1]),p=!0):w.length&&(C=C.concat(w)),C}return o=t.reduce(function(C,w){return C.concat((w+"").split(""))},[]).reduce(function(C,w){var v,b;return e||(w=w.toLowerCase()),v=/^\d$/.test(w)?1:/^[A-Z]$/.test(w)?2:/^[a-z]$/.test(w)?3:0,r&&v===0?A+=w:(b=w.charCodeAt(0),v&&v===n&&b===u+1?a.push(w):(C=h(C,a),a=[w],n=v),u=b),C},[]),o=h(o,a),A&&(o.push(A),p=!0),{values:o,suppressed:p}}function Ame(t,e){return t.join(t.length>2?", ":e?" / ":"/")}function fme(t,e){var r,o,a={},n;if(e.phContent&&(r=e.phContent(t,e)),typeof r!="string")switch(t){case"hideEchoBack":case"mask":case"defaultInput":case"caseSensitive":case"keepWhitespace":case"encoding":case"bufferSize":case"history":case"cd":r=e.hasOwnProperty(t)?typeof e[t]=="boolean"?e[t]?"on":"off":e[t]+"":"";break;case"limit":case"trueValue":case"falseValue":o=e[e.hasOwnProperty(t+"Src")?t+"Src":t],e.keyIn?(a=ume(o,e.caseSensitive),o=a.values):o=o.filter(function(u){var A=typeof u;return A==="string"||A==="number"}),r=Ame(o,a.suppressed);break;case"limitCount":case"limitCountNotZero":r=e[e.hasOwnProperty("limitSrc")?"limitSrc":"limit"].length,r=r||t!=="limitCountNotZero"?r+"":"";break;case"lastInput":r=fH;break;case"cwd":case"CWD":case"cwdHome":r=process.cwd(),t==="CWD"?r=sh.basename(r):t==="cwdHome"&&(r=hH(r));break;case"date":case"time":case"localeDate":case"localeTime":r=new Date()["to"+t.replace(/^./,function(u){return u.toUpperCase()})+"String"]();break;default:typeof(n=(t.match(/^history_m(\d+)$/)||[])[1])=="string"&&(r=Xd[Xd.length-n]||"")}return r}function pme(t){var e=/^(.)-(.)$/.exec(t),r="",o,a,n,u;if(!e)return null;for(o=e[1].charCodeAt(0),a=e[2].charCodeAt(0),u=o<a?1:-1,n=o;n!==a+u;n+=u)r+=String.fromCharCode(n);return r}function AH(t){var e=new RegExp(/(\s*)(?:("|')(.*?)(?:\2|$)|(\S+))/g),r,o="",a=[],n;for(t=t.trim();r=e.exec(t);)n=r[3]||r[4]||"",r[1]&&(a.push(o),o=""),o+=n;return o&&a.push(o),a}function hme(t,e){return e.trueValue.length&&uH(t,e.trueValue,e.caseSensitive)?!0:e.falseValue.length&&uH(t,e.falseValue,e.caseSensitive)?!1:t}function gme(t){var e,r,o,a,n,u,A;function p(C){return fme(C,t)}function h(C){t.display+=(/[^\r\n]$/.test(t.display)?` | 249 | `),t.encoding),t.displayOnly?"":gH=t.keepWhitespace||t.keyIn?e:e.trim()}function pgt(t,e){var r=[];function o(a){a!=null&&(Array.isArray(a)?a.forEach(o):(!e||e(a))&&r.push(a))}return o(t),r}function dH(t){return t.replace(/[\x00-\x7f]/g,function(e){return"\\x"+("00"+e.charCodeAt().toString(16)).substr(-2)})}function Ps(){var t=Array.prototype.slice.call(arguments),e,r;return t.length&&typeof t[0]=="boolean"&&(r=t.shift(),r&&(e=Object.keys(uH),t.unshift(uH))),t.reduce(function(o,a){return a==null||(a.hasOwnProperty("noEchoBack")&&!a.hasOwnProperty("hideEchoBack")&&(a.hideEchoBack=a.noEchoBack,delete a.noEchoBack),a.hasOwnProperty("noTrim")&&!a.hasOwnProperty("keepWhitespace")&&(a.keepWhitespace=a.noTrim,delete a.noTrim),r||(e=Object.keys(a)),e.forEach(function(n){var u;if(!!a.hasOwnProperty(n))switch(u=a[n],n){case"mask":case"limitMessage":case"defaultInput":case"encoding":u=u!=null?u+"":"",u&&n!=="limitMessage"&&(u=u.replace(/[\r\n]/g,"")),o[n]=u;break;case"bufferSize":!isNaN(u=parseInt(u,10))&&typeof u=="number"&&(o[n]=u);break;case"displayOnly":case"keyIn":case"hideEchoBack":case"caseSensitive":case"keepWhitespace":case"history":case"cd":o[n]=!!u;break;case"limit":case"trueValue":case"falseValue":o[n]=pgt(u,function(A){var p=typeof A;return p==="string"||p==="number"||p==="function"||A instanceof RegExp}).map(function(A){return typeof A=="string"?A.replace(/[\r\n]/g,""):A});break;case"print":case"phContent":case"preCheck":o[n]=typeof u=="function"?u:void 0;break;case"prompt":case"display":o[n]=u??"";break}})),o},{})}function pH(t,e,r){return e.some(function(o){var a=typeof o;return a==="string"?r?t===o:t.toLowerCase()===o.toLowerCase():a==="number"?parseFloat(t)===o:a==="function"?o(t):o instanceof RegExp?o.test(t):!1})}function mH(t,e){var r=ah.normalize(rm?(process.env.HOMEDRIVE||"")+(process.env.HOMEPATH||""):process.env.HOME||"").replace(/[\/\\]+$/,"");return t=ah.normalize(t),e?t.replace(/^~(?=\/|\\|$)/,r):t.replace(new RegExp("^"+dH(r)+"(?=\\/|\\\\|$)",rm?"i":""),"~")}function yC(t,e){var r="(?:\\(([\\s\\S]*?)\\))?(\\w+|.-.)(?:\\(([\\s\\S]*?)\\))?",o=new RegExp("(\\$)?(\\$<"+r+">)","g"),a=new RegExp("(\\$)?(\\$\\{"+r+"\\})","g");function n(u,A,p,h,C,w){var v;return A||typeof(v=e(C))!="string"?p:v?(h||"")+v+(w||""):""}return t.replace(o,n).replace(a,n)}function yme(t,e,r){var o,a=[],n=-1,u=0,A="",p;function h(C,w){return w.length>3?(C.push(w[0]+"..."+w[w.length-1]),p=!0):w.length&&(C=C.concat(w)),C}return o=t.reduce(function(C,w){return C.concat((w+"").split(""))},[]).reduce(function(C,w){var v,b;return e||(w=w.toLowerCase()),v=/^\d$/.test(w)?1:/^[A-Z]$/.test(w)?2:/^[a-z]$/.test(w)?3:0,r&&v===0?A+=w:(b=w.charCodeAt(0),v&&v===n&&b===u+1?a.push(w):(C=h(C,a),a=[w],n=v),u=b),C},[]),o=h(o,a),A&&(o.push(A),p=!0),{values:o,suppressed:p}}function Eme(t,e){return t.join(t.length>2?", ":e?" / ":"/")}function Cme(t,e){var r,o,a={},n;if(e.phContent&&(r=e.phContent(t,e)),typeof r!="string")switch(t){case"hideEchoBack":case"mask":case"defaultInput":case"caseSensitive":case"keepWhitespace":case"encoding":case"bufferSize":case"history":case"cd":r=e.hasOwnProperty(t)?typeof e[t]=="boolean"?e[t]?"on":"off":e[t]+"":"";break;case"limit":case"trueValue":case"falseValue":o=e[e.hasOwnProperty(t+"Src")?t+"Src":t],e.keyIn?(a=yme(o,e.caseSensitive),o=a.values):o=o.filter(function(u){var A=typeof u;return A==="string"||A==="number"}),r=Eme(o,a.suppressed);break;case"limitCount":case"limitCountNotZero":r=e[e.hasOwnProperty("limitSrc")?"limitSrc":"limit"].length,r=r||t!=="limitCountNotZero"?r+"":"";break;case"lastInput":r=gH;break;case"cwd":case"CWD":case"cwdHome":r=process.cwd(),t==="CWD"?r=ah.basename(r):t==="cwdHome"&&(r=mH(r));break;case"date":case"time":case"localeDate":case"localeTime":r=new Date()["to"+t.replace(/^./,function(u){return u.toUpperCase()})+"String"]();break;default:typeof(n=(t.match(/^history_m(\d+)$/)||[])[1])=="string"&&(r=tm[tm.length-n]||"")}return r}function Ime(t){var e=/^(.)-(.)$/.exec(t),r="",o,a,n,u;if(!e)return null;for(o=e[1].charCodeAt(0),a=e[2].charCodeAt(0),u=o<a?1:-1,n=o;n!==a+u;n+=u)r+=String.fromCharCode(n);return r}function hH(t){var e=new RegExp(/(\s*)(?:("|')(.*?)(?:\2|$)|(\S+))/g),r,o="",a=[],n;for(t=t.trim();r=e.exec(t);)n=r[3]||r[4]||"",r[1]&&(a.push(o),o=""),o+=n;return o&&a.push(o),a}function wme(t,e){return e.trueValue.length&&pH(t,e.trueValue,e.caseSensitive)?!0:e.falseValue.length&&pH(t,e.falseValue,e.caseSensitive)?!1:t}function Bme(t){var e,r,o,a,n,u,A;function p(C){return Cme(C,t)}function h(C){t.display+=(/[^\r\n]$/.test(t.display)?` |
250 | `:"")+C}for(t.limitSrc=t.limit,t.displaySrc=t.display,t.limit="",t.display=pC(t.display+"",p);;){if(e=cH(t),r=!1,o="",t.defaultInput&&!e&&(e=t.defaultInput),t.history&&((a=/^\s*\!(?:\!|-1)(:p)?\s*$/.exec(e))?(n=Xd[0]||"",a[1]?r=!0:e=n,h(n+` | 250 | `:"")+C}for(t.limitSrc=t.limit,t.displaySrc=t.display,t.limit="",t.display=yC(t.display+"",p);;){if(e=fH(t),r=!1,o="",t.defaultInput&&!e&&(e=t.defaultInput),t.history&&((a=/^\s*\!(?:\!|-1)(:p)?\s*$/.exec(e))?(n=tm[0]||"",a[1]?r=!0:e=n,h(n+` |
251 | `),r||(t.displayOnly=!0,cH(t),t.displayOnly=!1)):e&&e!==Xd[Xd.length-1]&&(Xd=[e])),!r&&t.cd&&e)switch(u=AH(e),u[0].toLowerCase()){case"cd":if(u[1])try{process.chdir(hH(u[1],!0))}catch(C){h(C+"")}r=!0;break;case"pwd":h(process.cwd()),r=!0;break}if(!r&&t.preCheck&&(A=t.preCheck(e,t),e=A.res,A.forceNext&&(r=!0)),!r){if(!t.limitSrc.length||uH(e,t.limitSrc,t.caseSensitive))break;t.limitMessage&&(o=pC(t.limitMessage,p))}h((o?o+` | 251 | `),r||(t.displayOnly=!0,fH(t),t.displayOnly=!1)):e&&e!==tm[tm.length-1]&&(tm=[e])),!r&&t.cd&&e)switch(u=hH(e),u[0].toLowerCase()){case"cd":if(u[1])try{process.chdir(mH(u[1],!0))}catch(C){h(C+"")}r=!0;break;case"pwd":h(process.cwd()),r=!0;break}if(!r&&t.preCheck&&(A=t.preCheck(e,t),e=A.res,A.forceNext&&(r=!0)),!r){if(!t.limitSrc.length||pH(e,t.limitSrc,t.caseSensitive))break;t.limitMessage&&(o=yC(t.limitMessage,p))}h((o?o+` |
252 | `:"")+pC(t.displaySrc+"",p))}return hme(e,t)}qr._DBG_set_useExt=function(t){lme=t};qr._DBG_set_checkOptions=function(t){lH=t};qr._DBG_set_checkMethod=function(t){o2=t};qr._DBG_clearHistory=function(){fH="",Xd=[]};qr.setDefaultOptions=function(t){return aH=Ps(!0,t),Ps(!0)};qr.question=function(t,e){return gme(Ps(Ps(!0,e),{display:t}))};qr.prompt=function(t){var e=Ps(!0,t);return e.display=e.prompt,gme(e)};qr.keyIn=function(t,e){var r=Ps(Ps(!0,e),{display:t,keyIn:!0,keepWhitespace:!0});return r.limitSrc=r.limit.filter(function(o){var a=typeof o;return a==="string"||a==="number"}).map(function(o){return pC(o+"",pme)}),r.limit=pH(r.limitSrc.join("")),["trueValue","falseValue"].forEach(function(o){r[o]=r[o].reduce(function(a,n){var u=typeof n;return u==="string"||u==="number"?a=a.concat((n+"").split("")):a.push(n),a},[])}),r.display=pC(r.display+"",function(o){return fme(o,r)}),hme(cH(r),r)};qr.questionEMail=function(t,e){return t==null&&(t="Input e-mail address: "),qr.question(t,Ps({hideEchoBack:!1,limit:/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,limitMessage:"Input valid e-mail address, please.",trueValue:null,falseValue:null},e,{keepWhitespace:!1,cd:!1}))};qr.questionNewPassword=function(t,e){var r,o,a,n=Ps({hideEchoBack:!0,mask:"*",limitMessage:`It can include: $<charlist> | 252 | `:"")+yC(t.displaySrc+"",p))}return wme(e,t)}qr._DBG_set_useExt=function(t){dme=t};qr._DBG_set_checkOptions=function(t){AH=t};qr._DBG_set_checkMethod=function(t){f2=t};qr._DBG_clearHistory=function(){gH="",tm=[]};qr.setDefaultOptions=function(t){return uH=Ps(!0,t),Ps(!0)};qr.question=function(t,e){return Bme(Ps(Ps(!0,e),{display:t}))};qr.prompt=function(t){var e=Ps(!0,t);return e.display=e.prompt,Bme(e)};qr.keyIn=function(t,e){var r=Ps(Ps(!0,e),{display:t,keyIn:!0,keepWhitespace:!0});return r.limitSrc=r.limit.filter(function(o){var a=typeof o;return a==="string"||a==="number"}).map(function(o){return yC(o+"",Ime)}),r.limit=dH(r.limitSrc.join("")),["trueValue","falseValue"].forEach(function(o){r[o]=r[o].reduce(function(a,n){var u=typeof n;return u==="string"||u==="number"?a=a.concat((n+"").split("")):a.push(n),a},[])}),r.display=yC(r.display+"",function(o){return Cme(o,r)}),wme(fH(r),r)};qr.questionEMail=function(t,e){return t==null&&(t="Input e-mail address: "),qr.question(t,Ps({hideEchoBack:!1,limit:/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,limitMessage:"Input valid e-mail address, please.",trueValue:null,falseValue:null},e,{keepWhitespace:!1,cd:!1}))};qr.questionNewPassword=function(t,e){var r,o,a,n=Ps({hideEchoBack:!0,mask:"*",limitMessage:`It can include: $<charlist> |
253 | And the length must be: $<length>`,trueValue:null,falseValue:null,caseSensitive:!0},e,{history:!1,cd:!1,phContent:function(b){return b==="charlist"?r.text:b==="length"?o+"..."+a:null}}),u,A,p,h,C,w,v;for(e=e||{},u=pC(e.charlist?e.charlist+"":"$<!-~>",pme),(isNaN(o=parseInt(e.min,10))||typeof o!="number")&&(o=12),(isNaN(a=parseInt(e.max,10))||typeof a!="number")&&(a=24),h=new RegExp("^["+pH(u)+"]{"+o+","+a+"}$"),r=ume([u],n.caseSensitive,!0),r.text=Ame(r.values,r.suppressed),A=e.confirmMessage!=null?e.confirmMessage:"Reinput a same one to confirm it: ",p=e.unmatchMessage!=null?e.unmatchMessage:"It differs from first one. Hit only the Enter key if you want to retry from first one.",t==null&&(t="Input new password: "),C=n.limitMessage;!v;)n.limit=h,n.limitMessage=C,w=qr.question(t,n),n.limit=[w,""],n.limitMessage=p,v=qr.question(A,n);return w};function dme(t,e,r){var o;function a(n){return o=r(n),!isNaN(o)&&typeof o=="number"}return qr.question(t,Ps({limitMessage:"Input valid number, please."},e,{limit:a,cd:!1})),o}qr.questionInt=function(t,e){return dme(t,e,function(r){return parseInt(r,10)})};qr.questionFloat=function(t,e){return dme(t,e,parseFloat)};qr.questionPath=function(t,e){var r,o="",a=Ps({hideEchoBack:!1,limitMessage:`$<error( | 253 | And the length must be: $<length>`,trueValue:null,falseValue:null,caseSensitive:!0},e,{history:!1,cd:!1,phContent:function(b){return b==="charlist"?r.text:b==="length"?o+"..."+a:null}}),u,A,p,h,C,w,v;for(e=e||{},u=yC(e.charlist?e.charlist+"":"$<!-~>",Ime),(isNaN(o=parseInt(e.min,10))||typeof o!="number")&&(o=12),(isNaN(a=parseInt(e.max,10))||typeof a!="number")&&(a=24),h=new RegExp("^["+dH(u)+"]{"+o+","+a+"}$"),r=yme([u],n.caseSensitive,!0),r.text=Eme(r.values,r.suppressed),A=e.confirmMessage!=null?e.confirmMessage:"Reinput a same one to confirm it: ",p=e.unmatchMessage!=null?e.unmatchMessage:"It differs from first one. Hit only the Enter key if you want to retry from first one.",t==null&&(t="Input new password: "),C=n.limitMessage;!v;)n.limit=h,n.limitMessage=C,w=qr.question(t,n),n.limit=[w,""],n.limitMessage=p,v=qr.question(A,n);return w};function vme(t,e,r){var o;function a(n){return o=r(n),!isNaN(o)&&typeof o=="number"}return qr.question(t,Ps({limitMessage:"Input valid number, please."},e,{limit:a,cd:!1})),o}qr.questionInt=function(t,e){return vme(t,e,function(r){return parseInt(r,10)})};qr.questionFloat=function(t,e){return vme(t,e,parseFloat)};qr.questionPath=function(t,e){var r,o="",a=Ps({hideEchoBack:!1,limitMessage:`$<error( |
254 | )>Input valid path, please.$<( Min:)min>$<( Max:)max>`,history:!0,cd:!0},e,{keepWhitespace:!1,limit:function(n){var u,A,p;n=hH(n,!0),o="";function h(C){C.split(/\/|\\/).reduce(function(w,v){var b=sh.resolve(w+=v+sh.sep);if(!Un.existsSync(b))Un.mkdirSync(b);else if(!Un.statSync(b).isDirectory())throw new Error("Non directory already exists: "+b);return w},"")}try{if(u=Un.existsSync(n),r=u?Un.realpathSync(n):sh.resolve(n),!e.hasOwnProperty("exists")&&!u||typeof e.exists=="boolean"&&e.exists!==u)return o=(u?"Already exists":"No such file or directory")+": "+r,!1;if(!u&&e.create&&(e.isDirectory?h(r):(h(sh.dirname(r)),Un.closeSync(Un.openSync(r,"w"))),r=Un.realpathSync(r)),u&&(e.min||e.max||e.isFile||e.isDirectory)){if(A=Un.statSync(r),e.isFile&&!A.isFile())return o="Not file: "+r,!1;if(e.isDirectory&&!A.isDirectory())return o="Not directory: "+r,!1;if(e.min&&A.size<+e.min||e.max&&A.size>+e.max)return o="Size "+A.size+" is out of range: "+r,!1}if(typeof e.validate=="function"&&(p=e.validate(r))!==!0)return typeof p=="string"&&(o=p),!1}catch(C){return o=C+"",!1}return!0},phContent:function(n){return n==="error"?o:n!=="min"&&n!=="max"?null:e.hasOwnProperty(n)?e[n]+"":""}});return e=e||{},t==null&&(t='Input path (you can "cd" and "pwd"): '),qr.question(t,a),r};function mme(t,e){var r={},o={};return typeof t=="object"?(Object.keys(t).forEach(function(a){typeof t[a]=="function"&&(o[e.caseSensitive?a:a.toLowerCase()]=t[a])}),r.preCheck=function(a){var n;return r.args=AH(a),n=r.args[0]||"",e.caseSensitive||(n=n.toLowerCase()),r.hRes=n!=="_"&&o.hasOwnProperty(n)?o[n].apply(a,r.args.slice(1)):o.hasOwnProperty("_")?o._.apply(a,r.args):null,{res:a,forceNext:!1}},o.hasOwnProperty("_")||(r.limit=function(){var a=r.args[0]||"";return e.caseSensitive||(a=a.toLowerCase()),o.hasOwnProperty(a)})):r.preCheck=function(a){return r.args=AH(a),r.hRes=typeof t=="function"?t.apply(a,r.args):!0,{res:a,forceNext:!1}},r}qr.promptCL=function(t,e){var r=Ps({hideEchoBack:!1,limitMessage:"Requested command is not available.",caseSensitive:!1,history:!0},e),o=mme(t,r);return r.limit=o.limit,r.preCheck=o.preCheck,qr.prompt(r),o.args};qr.promptLoop=function(t,e){for(var r=Ps({hideEchoBack:!1,trueValue:null,falseValue:null,caseSensitive:!1,history:!0},e);!t(qr.prompt(r)););};qr.promptCLLoop=function(t,e){var r=Ps({hideEchoBack:!1,limitMessage:"Requested command is not available.",caseSensitive:!1,history:!0},e),o=mme(t,r);for(r.limit=o.limit,r.preCheck=o.preCheck;qr.prompt(r),!o.hRes;);};qr.promptSimShell=function(t){return qr.prompt(Ps({hideEchoBack:!1,history:!0},t,{prompt:function(){return Zd?"$<cwd>>":(process.env.USER||"")+(process.env.HOSTNAME?"@"+process.env.HOSTNAME.replace(/\..*$/,""):"")+":$<cwdHome>$ "}()}))};function yme(t,e,r){var o;return t==null&&(t="Are you sure? "),(!e||e.guide!==!1)&&(t+="")&&(t=t.replace(/\s*:?\s*$/,"")+" [y/n]: "),o=qr.keyIn(t,Ps(e,{hideEchoBack:!1,limit:r,trueValue:"y",falseValue:"n",caseSensitive:!1})),typeof o=="boolean"?o:""}qr.keyInYN=function(t,e){return yme(t,e)};qr.keyInYNStrict=function(t,e){return yme(t,e,"yn")};qr.keyInPause=function(t,e){t==null&&(t="Continue..."),(!e||e.guide!==!1)&&(t+="")&&(t=t.replace(/\s+$/,"")+" (Hit any key)"),qr.keyIn(t,Ps({limit:null},e,{hideEchoBack:!0,mask:""}))};qr.keyInSelect=function(t,e,r){var o=Ps({hideEchoBack:!1},r,{trueValue:null,falseValue:null,caseSensitive:!1,phContent:function(p){return p==="itemsCount"?t.length+"":p==="firstItem"?(t[0]+"").trim():p==="lastItem"?(t[t.length-1]+"").trim():null}}),a="",n={},u=49,A=` | 254 | )>Input valid path, please.$<( Min:)min>$<( Max:)max>`,history:!0,cd:!0},e,{keepWhitespace:!1,limit:function(n){var u,A,p;n=mH(n,!0),o="";function h(C){C.split(/\/|\\/).reduce(function(w,v){var b=ah.resolve(w+=v+ah.sep);if(!Un.existsSync(b))Un.mkdirSync(b);else if(!Un.statSync(b).isDirectory())throw new Error("Non directory already exists: "+b);return w},"")}try{if(u=Un.existsSync(n),r=u?Un.realpathSync(n):ah.resolve(n),!e.hasOwnProperty("exists")&&!u||typeof e.exists=="boolean"&&e.exists!==u)return o=(u?"Already exists":"No such file or directory")+": "+r,!1;if(!u&&e.create&&(e.isDirectory?h(r):(h(ah.dirname(r)),Un.closeSync(Un.openSync(r,"w"))),r=Un.realpathSync(r)),u&&(e.min||e.max||e.isFile||e.isDirectory)){if(A=Un.statSync(r),e.isFile&&!A.isFile())return o="Not file: "+r,!1;if(e.isDirectory&&!A.isDirectory())return o="Not directory: "+r,!1;if(e.min&&A.size<+e.min||e.max&&A.size>+e.max)return o="Size "+A.size+" is out of range: "+r,!1}if(typeof e.validate=="function"&&(p=e.validate(r))!==!0)return typeof p=="string"&&(o=p),!1}catch(C){return o=C+"",!1}return!0},phContent:function(n){return n==="error"?o:n!=="min"&&n!=="max"?null:e.hasOwnProperty(n)?e[n]+"":""}});return e=e||{},t==null&&(t='Input path (you can "cd" and "pwd"): '),qr.question(t,a),r};function Dme(t,e){var r={},o={};return typeof t=="object"?(Object.keys(t).forEach(function(a){typeof t[a]=="function"&&(o[e.caseSensitive?a:a.toLowerCase()]=t[a])}),r.preCheck=function(a){var n;return r.args=hH(a),n=r.args[0]||"",e.caseSensitive||(n=n.toLowerCase()),r.hRes=n!=="_"&&o.hasOwnProperty(n)?o[n].apply(a,r.args.slice(1)):o.hasOwnProperty("_")?o._.apply(a,r.args):null,{res:a,forceNext:!1}},o.hasOwnProperty("_")||(r.limit=function(){var a=r.args[0]||"";return e.caseSensitive||(a=a.toLowerCase()),o.hasOwnProperty(a)})):r.preCheck=function(a){return r.args=hH(a),r.hRes=typeof t=="function"?t.apply(a,r.args):!0,{res:a,forceNext:!1}},r}qr.promptCL=function(t,e){var r=Ps({hideEchoBack:!1,limitMessage:"Requested command is not available.",caseSensitive:!1,history:!0},e),o=Dme(t,r);return r.limit=o.limit,r.preCheck=o.preCheck,qr.prompt(r),o.args};qr.promptLoop=function(t,e){for(var r=Ps({hideEchoBack:!1,trueValue:null,falseValue:null,caseSensitive:!1,history:!0},e);!t(qr.prompt(r)););};qr.promptCLLoop=function(t,e){var r=Ps({hideEchoBack:!1,limitMessage:"Requested command is not available.",caseSensitive:!1,history:!0},e),o=Dme(t,r);for(r.limit=o.limit,r.preCheck=o.preCheck;qr.prompt(r),!o.hRes;);};qr.promptSimShell=function(t){return qr.prompt(Ps({hideEchoBack:!1,history:!0},t,{prompt:function(){return rm?"$<cwd>>":(process.env.USER||"")+(process.env.HOSTNAME?"@"+process.env.HOSTNAME.replace(/\..*$/,""):"")+":$<cwdHome>$ "}()}))};function Sme(t,e,r){var o;return t==null&&(t="Are you sure? "),(!e||e.guide!==!1)&&(t+="")&&(t=t.replace(/\s*:?\s*$/,"")+" [y/n]: "),o=qr.keyIn(t,Ps(e,{hideEchoBack:!1,limit:r,trueValue:"y",falseValue:"n",caseSensitive:!1})),typeof o=="boolean"?o:""}qr.keyInYN=function(t,e){return Sme(t,e)};qr.keyInYNStrict=function(t,e){return Sme(t,e,"yn")};qr.keyInPause=function(t,e){t==null&&(t="Continue..."),(!e||e.guide!==!1)&&(t+="")&&(t=t.replace(/\s+$/,"")+" (Hit any key)"),qr.keyIn(t,Ps({limit:null},e,{hideEchoBack:!0,mask:""}))};qr.keyInSelect=function(t,e,r){var o=Ps({hideEchoBack:!1},r,{trueValue:null,falseValue:null,caseSensitive:!1,phContent:function(p){return p==="itemsCount"?t.length+"":p==="firstItem"?(t[0]+"").trim():p==="lastItem"?(t[t.length-1]+"").trim():null}}),a="",n={},u=49,A=` |
255 | `;if(!Array.isArray(t)||!t.length||t.length>35)throw"`items` must be Array (max length: 35).";return t.forEach(function(p,h){var C=String.fromCharCode(u);a+=C,n[C]=h,A+="["+C+"] "+(p+"").trim()+` | 255 | `;if(!Array.isArray(t)||!t.length||t.length>35)throw"`items` must be Array (max length: 35).";return t.forEach(function(p,h){var C=String.fromCharCode(u);a+=C,n[C]=h,A+="["+C+"] "+(p+"").trim()+` |
256 | `,u=u===57?97:u+1}),(!r||r.cancel!==!1)&&(a+="0",n[0]=-1,A+="[0] "+(r&&r.cancel!=null&&typeof r.cancel!="boolean"?(r.cancel+"").trim():"CANCEL")+` | 256 | `,u=u===57?97:u+1}),(!r||r.cancel!==!1)&&(a+="0",n[0]=-1,A+="[0] "+(r&&r.cancel!=null&&typeof r.cancel!="boolean"?(r.cancel+"").trim():"CANCEL")+` |
257 | `),o.limit=a,A+=` | 257 | `),o.limit=a,A+=` |
258 | `,e==null&&(e="Choose one from list: "),(e+="")&&((!r||r.guide!==!1)&&(e=e.replace(/\s*:?\s*$/,"")+" [$<limit>]: "),A+=e),n[qr.keyIn(A,o).toLowerCase()]};qr.getRawInput=function(){return nQ};function a2(t,e){var r;return e.length&&(r={},r[t]=e[0]),qr.setDefaultOptions(r)[t]}qr.setPrint=function(){return a2("print",arguments)};qr.setPrompt=function(){return a2("prompt",arguments)};qr.setEncoding=function(){return a2("encoding",arguments)};qr.setMask=function(){return a2("mask",arguments)};qr.setBufferSize=function(){return a2("bufferSize",arguments)}});var gH=U((W5t,pl)=>{(function(){var t={major:0,minor:2,patch:66,status:"beta"};tau_file_system={files:{},open:function(I,P,y){var F=tau_file_system.files[I];if(!F){if(y==="read")return null;F={path:I,text:"",type:P,get:function(z,X){return X===this.text.length||X>this.text.length?"end_of_file":this.text.substring(X,X+z)},put:function(z,X){return X==="end_of_file"?(this.text+=z,!0):X==="past_end_of_file"?null:(this.text=this.text.substring(0,X)+z+this.text.substring(X+z.length),!0)},get_byte:function(z){if(z==="end_of_stream")return-1;var X=Math.floor(z/2);if(this.text.length<=X)return-1;var $=n(this.text[Math.floor(z/2)],0);return z%2===0?$&255:$/256>>>0},put_byte:function(z,X){var $=X==="end_of_stream"?this.text.length:Math.floor(X/2);if(this.text.length<$)return null;var ie=this.text.length===$?-1:n(this.text[Math.floor(X/2)],0);return X%2===0?(ie=ie/256>>>0,ie=(ie&255)<<8|z&255):(ie=ie&255,ie=(z&255)<<8|ie&255),this.text.length===$?this.text+=u(ie):this.text=this.text.substring(0,$)+u(ie)+this.text.substring($+1),!0},flush:function(){return!0},close:function(){var z=tau_file_system.files[this.path];return z?!0:null}},tau_file_system.files[I]=F}return y==="write"&&(F.text=""),F}},tau_user_input={buffer:"",get:function(I,P){for(var y;tau_user_input.buffer.length<I;)y=window.prompt(),y&&(tau_user_input.buffer+=y);return y=tau_user_input.buffer.substr(0,I),tau_user_input.buffer=tau_user_input.buffer.substr(I),y}},tau_user_output={put:function(I,P){return console.log(I),!0},flush:function(){return!0}},nodejs_file_system={open:function(I,P,y){var F=Ie("fs"),z=F.openSync(I,y[0]);return y==="read"&&!F.existsSync(I)?null:{get:function(X,$){var ie=new Buffer(X);return F.readSync(z,ie,0,X,$),ie.toString()},put:function(X,$){var ie=Buffer.from(X);if($==="end_of_file")F.writeSync(z,ie);else{if($==="past_end_of_file")return null;F.writeSync(z,ie,0,ie.length,$)}return!0},get_byte:function(X){return null},put_byte:function(X,$){return null},flush:function(){return!0},close:function(){return F.closeSync(z),!0}}}},nodejs_user_input={buffer:"",get:function(I,P){for(var y,F=Eme();nodejs_user_input.buffer.length<I;)nodejs_user_input.buffer+=F.question();return y=nodejs_user_input.buffer.substr(0,I),nodejs_user_input.buffer=nodejs_user_input.buffer.substr(I),y}},nodejs_user_output={put:function(I,P){return process.stdout.write(I),!0},flush:function(){return!0}};var e;Array.prototype.indexOf?e=function(I,P){return I.indexOf(P)}:e=function(I,P){for(var y=I.length,F=0;F<y;F++)if(P===I[F])return F;return-1};var r=function(I,P){if(I.length!==0){for(var y=I[0],F=I.length,z=1;z<F;z++)y=P(y,I[z]);return y}},o;Array.prototype.map?o=function(I,P){return I.map(P)}:o=function(I,P){for(var y=[],F=I.length,z=0;z<F;z++)y.push(P(I[z]));return y};var a;Array.prototype.filter?a=function(I,P){return I.filter(P)}:a=function(I,P){for(var y=[],F=I.length,z=0;z<F;z++)P(I[z])&&y.push(I[z]);return y};var n;String.prototype.codePointAt?n=function(I,P){return I.codePointAt(P)}:n=function(I,P){return I.charCodeAt(P)};var u;String.fromCodePoint?u=function(){return String.fromCodePoint.apply(null,arguments)}:u=function(){return String.fromCharCode.apply(null,arguments)};var A=0,p=1,h=/(\\a)|(\\b)|(\\f)|(\\n)|(\\r)|(\\t)|(\\v)|\\x([0-9a-fA-F]+)\\|\\([0-7]+)\\|(\\\\)|(\\')|('')|(\\")|(\\`)|(\\.)|(.)/g,C={"\\a":7,"\\b":8,"\\f":12,"\\n":10,"\\r":13,"\\t":9,"\\v":11};function w(I){var P=[],y=!1;return I.replace(h,function(F,z,X,$,ie,ke,Ne,st,ht,Ut,Xt,Pt,tn,Dr,fr,Br,jr){switch(!0){case ht!==void 0:return P.push(parseInt(ht,16)),"";case Ut!==void 0:return P.push(parseInt(Ut,8)),"";case Xt!==void 0:case Pt!==void 0:case tn!==void 0:case Dr!==void 0:case fr!==void 0:return P.push(n(F.substr(1),0)),"";case jr!==void 0:return P.push(n(jr,0)),"";case Br!==void 0:y=!0;default:return P.push(C[F]),""}}),y?null:P}function v(I,P){var y="";if(I.length<2)return I;try{I=I.replace(/\\([0-7]+)\\/g,function($,ie){return u(parseInt(ie,8))}),I=I.replace(/\\x([0-9a-fA-F]+)\\/g,function($,ie){return u(parseInt(ie,16))})}catch{return null}for(var F=0;F<I.length;F++){var z=I.charAt(F),X=I.charAt(F+1);if(z===P&&X===P)F++,y+=P;else if(z==="\\")if(["a","b","f","n","r","t","v","'",'"',"\\","a","\b","\f",` | 258 | `,e==null&&(e="Choose one from list: "),(e+="")&&((!r||r.guide!==!1)&&(e=e.replace(/\s*:?\s*$/,"")+" [$<limit>]: "),A+=e),n[qr.keyIn(A,o).toLowerCase()]};qr.getRawInput=function(){return pQ};function p2(t,e){var r;return e.length&&(r={},r[t]=e[0]),qr.setDefaultOptions(r)[t]}qr.setPrint=function(){return p2("print",arguments)};qr.setPrompt=function(){return p2("prompt",arguments)};qr.setEncoding=function(){return p2("encoding",arguments)};qr.setMask=function(){return p2("mask",arguments)};qr.setBufferSize=function(){return p2("bufferSize",arguments)}});var yH=U((a5t,ml)=>{(function(){var t={major:0,minor:2,patch:66,status:"beta"};tau_file_system={files:{},open:function(I,P,y){var F=tau_file_system.files[I];if(!F){if(y==="read")return null;F={path:I,text:"",type:P,get:function(z,X){return X===this.text.length||X>this.text.length?"end_of_file":this.text.substring(X,X+z)},put:function(z,X){return X==="end_of_file"?(this.text+=z,!0):X==="past_end_of_file"?null:(this.text=this.text.substring(0,X)+z+this.text.substring(X+z.length),!0)},get_byte:function(z){if(z==="end_of_stream")return-1;var X=Math.floor(z/2);if(this.text.length<=X)return-1;var $=n(this.text[Math.floor(z/2)],0);return z%2===0?$&255:$/256>>>0},put_byte:function(z,X){var $=X==="end_of_stream"?this.text.length:Math.floor(X/2);if(this.text.length<$)return null;var ie=this.text.length===$?-1:n(this.text[Math.floor(X/2)],0);return X%2===0?(ie=ie/256>>>0,ie=(ie&255)<<8|z&255):(ie=ie&255,ie=(z&255)<<8|ie&255),this.text.length===$?this.text+=u(ie):this.text=this.text.substring(0,$)+u(ie)+this.text.substring($+1),!0},flush:function(){return!0},close:function(){var z=tau_file_system.files[this.path];return z?!0:null}},tau_file_system.files[I]=F}return y==="write"&&(F.text=""),F}},tau_user_input={buffer:"",get:function(I,P){for(var y;tau_user_input.buffer.length<I;)y=window.prompt(),y&&(tau_user_input.buffer+=y);return y=tau_user_input.buffer.substr(0,I),tau_user_input.buffer=tau_user_input.buffer.substr(I),y}},tau_user_output={put:function(I,P){return console.log(I),!0},flush:function(){return!0}},nodejs_file_system={open:function(I,P,y){var F=Ie("fs"),z=F.openSync(I,y[0]);return y==="read"&&!F.existsSync(I)?null:{get:function(X,$){var ie=new Buffer(X);return F.readSync(z,ie,0,X,$),ie.toString()},put:function(X,$){var ie=Buffer.from(X);if($==="end_of_file")F.writeSync(z,ie);else{if($==="past_end_of_file")return null;F.writeSync(z,ie,0,ie.length,$)}return!0},get_byte:function(X){return null},put_byte:function(X,$){return null},flush:function(){return!0},close:function(){return F.closeSync(z),!0}}}},nodejs_user_input={buffer:"",get:function(I,P){for(var y,F=Pme();nodejs_user_input.buffer.length<I;)nodejs_user_input.buffer+=F.question();return y=nodejs_user_input.buffer.substr(0,I),nodejs_user_input.buffer=nodejs_user_input.buffer.substr(I),y}},nodejs_user_output={put:function(I,P){return process.stdout.write(I),!0},flush:function(){return!0}};var e;Array.prototype.indexOf?e=function(I,P){return I.indexOf(P)}:e=function(I,P){for(var y=I.length,F=0;F<y;F++)if(P===I[F])return F;return-1};var r=function(I,P){if(I.length!==0){for(var y=I[0],F=I.length,z=1;z<F;z++)y=P(y,I[z]);return y}},o;Array.prototype.map?o=function(I,P){return I.map(P)}:o=function(I,P){for(var y=[],F=I.length,z=0;z<F;z++)y.push(P(I[z]));return y};var a;Array.prototype.filter?a=function(I,P){return I.filter(P)}:a=function(I,P){for(var y=[],F=I.length,z=0;z<F;z++)P(I[z])&&y.push(I[z]);return y};var n;String.prototype.codePointAt?n=function(I,P){return I.codePointAt(P)}:n=function(I,P){return I.charCodeAt(P)};var u;String.fromCodePoint?u=function(){return String.fromCodePoint.apply(null,arguments)}:u=function(){return String.fromCharCode.apply(null,arguments)};var A=0,p=1,h=/(\\a)|(\\b)|(\\f)|(\\n)|(\\r)|(\\t)|(\\v)|\\x([0-9a-fA-F]+)\\|\\([0-7]+)\\|(\\\\)|(\\')|('')|(\\")|(\\`)|(\\.)|(.)/g,C={"\\a":7,"\\b":8,"\\f":12,"\\n":10,"\\r":13,"\\t":9,"\\v":11};function w(I){var P=[],y=!1;return I.replace(h,function(F,z,X,$,ie,ke,Ne,st,ht,Ut,Xt,xt,tn,Dr,fr,Br,jr){switch(!0){case ht!==void 0:return P.push(parseInt(ht,16)),"";case Ut!==void 0:return P.push(parseInt(Ut,8)),"";case Xt!==void 0:case xt!==void 0:case tn!==void 0:case Dr!==void 0:case fr!==void 0:return P.push(n(F.substr(1),0)),"";case jr!==void 0:return P.push(n(jr,0)),"";case Br!==void 0:y=!0;default:return P.push(C[F]),""}}),y?null:P}function v(I,P){var y="";if(I.length<2)return I;try{I=I.replace(/\\([0-7]+)\\/g,function($,ie){return u(parseInt(ie,8))}),I=I.replace(/\\x([0-9a-fA-F]+)\\/g,function($,ie){return u(parseInt(ie,16))})}catch{return null}for(var F=0;F<I.length;F++){var z=I.charAt(F),X=I.charAt(F+1);if(z===P&&X===P)F++,y+=P;else if(z==="\\")if(["a","b","f","n","r","t","v","'",'"',"\\","a","\b","\f",` |
259 | `,"\r"," ","\v"].indexOf(X)!==-1)switch(F+=1,X){case"a":y+="a";break;case"b":y+="\b";break;case"f":y+="\f";break;case"n":y+=` | 259 | `,"\r"," ","\v"].indexOf(X)!==-1)switch(F+=1,X){case"a":y+="a";break;case"b":y+="\b";break;case"f":y+="\f";break;case"n":y+=` |
260 | `;break;case"r":y+="\r";break;case"t":y+=" ";break;case"v":y+="\v";break;case"'":y+="'";break;case'"':y+='"';break;case"\\":y+="\\";break}else return null;else y+=z}return y}function b(I){for(var P="",y=0;y<I.length;y++)switch(I.charAt(y)){case"'":P+="\\'";break;case"\\":P+="\\\\";break;case"\b":P+="\\b";break;case"\f":P+="\\f";break;case` | 260 | `;break;case"r":y+="\r";break;case"t":y+=" ";break;case"v":y+="\v";break;case"'":y+="'";break;case'"':y+='"';break;case"\\":y+="\\";break}else return null;else y+=z}return y}function b(I){for(var P="",y=0;y<I.length;y++)switch(I.charAt(y)){case"'":P+="\\'";break;case"\\":P+="\\\\";break;case"\b":P+="\\b";break;case"\f":P+="\\f";break;case` |
261 | `:P+="\\n";break;case"\r":P+="\\r";break;case" ":P+="\\t";break;case"\v":P+="\\v";break;default:P+=I.charAt(y);break}return P}function E(I){var P=I.substr(2);switch(I.substr(0,2).toLowerCase()){case"0x":return parseInt(P,16);case"0b":return parseInt(P,2);case"0o":return parseInt(P,8);case"0'":return w(P)[0];default:return parseFloat(I)}}var R={whitespace:/^\s*(?:(?:%.*)|(?:\/\*(?:\n|\r|.)*?\*\/)|(?:\s+))\s*/,variable:/^(?:[A-Z_][a-zA-Z0-9_]*)/,atom:/^(\!|,|;|[a-z][0-9a-zA-Z_]*|[#\$\&\*\+\-\.\/\:\<\=\>\?\@\^\~\\]+|'(?:[^']*?(?:\\(?:x?\d+)?\\)*(?:'')*(?:\\')*)*')/,number:/^(?:0o[0-7]+|0x[0-9a-fA-F]+|0b[01]+|0'(?:''|\\[abfnrtv\\'"`]|\\x?\d+\\|[^\\])|\d+(?:\.\d+(?:[eE][+-]?\d+)?)?)/,string:/^(?:"([^"]|""|\\")*"|`([^`]|``|\\`)*`)/,l_brace:/^(?:\[)/,r_brace:/^(?:\])/,l_bracket:/^(?:\{)/,r_bracket:/^(?:\})/,bar:/^(?:\|)/,l_paren:/^(?:\()/,r_paren:/^(?:\))/};function L(I,P){return I.get_flag("char_conversion").id==="on"?P.replace(/./g,function(y){return I.get_char_conversion(y)}):P}function _(I){this.thread=I,this.text="",this.tokens=[]}_.prototype.set_last_tokens=function(I){return this.tokens=I},_.prototype.new_text=function(I){this.text=I,this.tokens=[]},_.prototype.get_tokens=function(I){var P,y=0,F=0,z=0,X=[],$=!1;if(I){var ie=this.tokens[I-1];y=ie.len,P=L(this.thread,this.text.substr(ie.len)),F=ie.line,z=ie.start}else P=this.text;if(/^\s*$/.test(P))return null;for(;P!=="";){var ke=[],Ne=!1;if(/^\n/.exec(P)!==null){F++,z=0,y++,P=P.replace(/\n/,""),$=!0;continue}for(var st in R)if(R.hasOwnProperty(st)){var ht=R[st].exec(P);ht&&ke.push({value:ht[0],name:st,matches:ht})}if(!ke.length)return this.set_last_tokens([{value:P,matches:[],name:"lexical",line:F,start:z}]);var ie=r(ke,function(Dr,fr){return Dr.value.length>=fr.value.length?Dr:fr});switch(ie.start=z,ie.line=F,P=P.replace(ie.value,""),z+=ie.value.length,y+=ie.value.length,ie.name){case"atom":ie.raw=ie.value,ie.value.charAt(0)==="'"&&(ie.value=v(ie.value.substr(1,ie.value.length-2),"'"),ie.value===null&&(ie.name="lexical",ie.value="unknown escape sequence"));break;case"number":ie.float=ie.value.substring(0,2)!=="0x"&&ie.value.match(/[.eE]/)!==null&&ie.value!=="0'.",ie.value=E(ie.value),ie.blank=Ne;break;case"string":var Ut=ie.value.charAt(0);ie.value=v(ie.value.substr(1,ie.value.length-2),Ut),ie.value===null&&(ie.name="lexical",ie.value="unknown escape sequence");break;case"whitespace":var Xt=X[X.length-1];Xt&&(Xt.space=!0),Ne=!0;continue;case"r_bracket":X.length>0&&X[X.length-1].name==="l_bracket"&&(ie=X.pop(),ie.name="atom",ie.value="{}",ie.raw="{}",ie.space=!1);break;case"r_brace":X.length>0&&X[X.length-1].name==="l_brace"&&(ie=X.pop(),ie.name="atom",ie.value="[]",ie.raw="[]",ie.space=!1);break}ie.len=y,X.push(ie),Ne=!1}var Pt=this.set_last_tokens(X);return Pt.length===0?null:Pt};function J(I,P,y,F,z){if(!P[y])return{type:A,value:x.error.syntax(P[y-1],"expression expected",!0)};var X;if(F==="0"){var $=P[y];switch($.name){case"number":return{type:p,len:y+1,value:new x.type.Num($.value,$.float)};case"variable":return{type:p,len:y+1,value:new x.type.Var($.value)};case"string":var ie;switch(I.get_flag("double_quotes").id){case"atom":ie=new H($.value,[]);break;case"codes":ie=new H("[]",[]);for(var ke=$.value.length-1;ke>=0;ke--)ie=new H(".",[new x.type.Num(n($.value,ke),!1),ie]);break;case"chars":ie=new H("[]",[]);for(var ke=$.value.length-1;ke>=0;ke--)ie=new H(".",[new x.type.Term($.value.charAt(ke),[]),ie]);break}return{type:p,len:y+1,value:ie};case"l_paren":var Pt=J(I,P,y+1,I.__get_max_priority(),!0);return Pt.type!==p?Pt:P[Pt.len]&&P[Pt.len].name==="r_paren"?(Pt.len++,Pt):{type:A,derived:!0,value:x.error.syntax(P[Pt.len]?P[Pt.len]:P[Pt.len-1],") or operator expected",!P[Pt.len])};case"l_bracket":var Pt=J(I,P,y+1,I.__get_max_priority(),!0);return Pt.type!==p?Pt:P[Pt.len]&&P[Pt.len].name==="r_bracket"?(Pt.len++,Pt.value=new H("{}",[Pt.value]),Pt):{type:A,derived:!0,value:x.error.syntax(P[Pt.len]?P[Pt.len]:P[Pt.len-1],"} or operator expected",!P[Pt.len])}}var Ne=re(I,P,y,z);return Ne.type===p||Ne.derived||(Ne=oe(I,P,y),Ne.type===p||Ne.derived)?Ne:{type:A,derived:!1,value:x.error.syntax(P[y],"unexpected token")}}var st=I.__get_max_priority(),ht=I.__get_next_priority(F),Ut=y;if(P[y].name==="atom"&&P[y+1]&&(P[y].space||P[y+1].name!=="l_paren")){var $=P[y++],Xt=I.__lookup_operator_classes(F,$.value);if(Xt&&Xt.indexOf("fy")>-1){var Pt=J(I,P,y,F,z);if(Pt.type!==A)return $.value==="-"&&!$.space&&x.type.is_number(Pt.value)?{value:new x.type.Num(-Pt.value.value,Pt.value.is_float),len:Pt.len,type:p}:{value:new x.type.Term($.value,[Pt.value]),len:Pt.len,type:p};X=Pt}else if(Xt&&Xt.indexOf("fx")>-1){var Pt=J(I,P,y,ht,z);if(Pt.type!==A)return{value:new x.type.Term($.value,[Pt.value]),len:Pt.len,type:p};X=Pt}}y=Ut;var Pt=J(I,P,y,ht,z);if(Pt.type===p){y=Pt.len;var $=P[y];if(P[y]&&(P[y].name==="atom"&&I.__lookup_operator_classes(F,$.value)||P[y].name==="bar"&&I.__lookup_operator_classes(F,"|"))){var tn=ht,Dr=F,Xt=I.__lookup_operator_classes(F,$.value);if(Xt.indexOf("xf")>-1)return{value:new x.type.Term($.value,[Pt.value]),len:++Pt.len,type:p};if(Xt.indexOf("xfx")>-1){var fr=J(I,P,y+1,tn,z);return fr.type===p?{value:new x.type.Term($.value,[Pt.value,fr.value]),len:fr.len,type:p}:(fr.derived=!0,fr)}else if(Xt.indexOf("xfy")>-1){var fr=J(I,P,y+1,Dr,z);return fr.type===p?{value:new x.type.Term($.value,[Pt.value,fr.value]),len:fr.len,type:p}:(fr.derived=!0,fr)}else if(Pt.type!==A)for(;;){y=Pt.len;var $=P[y];if($&&$.name==="atom"&&I.__lookup_operator_classes(F,$.value)){var Xt=I.__lookup_operator_classes(F,$.value);if(Xt.indexOf("yf")>-1)Pt={value:new x.type.Term($.value,[Pt.value]),len:++y,type:p};else if(Xt.indexOf("yfx")>-1){var fr=J(I,P,++y,tn,z);if(fr.type===A)return fr.derived=!0,fr;y=fr.len,Pt={value:new x.type.Term($.value,[Pt.value,fr.value]),len:y,type:p}}else break}else break}}else X={type:A,value:x.error.syntax(P[Pt.len-1],"operator expected")};return Pt}return Pt}function re(I,P,y,F){if(!P[y]||P[y].name==="atom"&&P[y].raw==="."&&!F&&(P[y].space||!P[y+1]||P[y+1].name!=="l_paren"))return{type:A,derived:!1,value:x.error.syntax(P[y-1],"unfounded token")};var z=P[y],X=[];if(P[y].name==="atom"&&P[y].raw!==","){if(y++,P[y-1].space)return{type:p,len:y,value:new x.type.Term(z.value,X)};if(P[y]&&P[y].name==="l_paren"){if(P[y+1]&&P[y+1].name==="r_paren")return{type:A,derived:!0,value:x.error.syntax(P[y+1],"argument expected")};var $=J(I,P,++y,"999",!0);if($.type===A)return $.derived?$:{type:A,derived:!0,value:x.error.syntax(P[y]?P[y]:P[y-1],"argument expected",!P[y])};for(X.push($.value),y=$.len;P[y]&&P[y].name==="atom"&&P[y].value===",";){if($=J(I,P,y+1,"999",!0),$.type===A)return $.derived?$:{type:A,derived:!0,value:x.error.syntax(P[y+1]?P[y+1]:P[y],"argument expected",!P[y+1])};X.push($.value),y=$.len}if(P[y]&&P[y].name==="r_paren")y++;else return{type:A,derived:!0,value:x.error.syntax(P[y]?P[y]:P[y-1],", or ) expected",!P[y])}}return{type:p,len:y,value:new x.type.Term(z.value,X)}}return{type:A,derived:!1,value:x.error.syntax(P[y],"term expected")}}function oe(I,P,y){if(!P[y])return{type:A,derived:!1,value:x.error.syntax(P[y-1],"[ expected")};if(P[y]&&P[y].name==="l_brace"){var F=J(I,P,++y,"999",!0),z=[F.value],X=void 0;if(F.type===A)return P[y]&&P[y].name==="r_brace"?{type:p,len:y+1,value:new x.type.Term("[]",[])}:{type:A,derived:!0,value:x.error.syntax(P[y],"] expected")};for(y=F.len;P[y]&&P[y].name==="atom"&&P[y].value===",";){if(F=J(I,P,y+1,"999",!0),F.type===A)return F.derived?F:{type:A,derived:!0,value:x.error.syntax(P[y+1]?P[y+1]:P[y],"argument expected",!P[y+1])};z.push(F.value),y=F.len}var $=!1;if(P[y]&&P[y].name==="bar"){if($=!0,F=J(I,P,y+1,"999",!0),F.type===A)return F.derived?F:{type:A,derived:!0,value:x.error.syntax(P[y+1]?P[y+1]:P[y],"argument expected",!P[y+1])};X=F.value,y=F.len}return P[y]&&P[y].name==="r_brace"?{type:p,len:y+1,value:g(z,X)}:{type:A,derived:!0,value:x.error.syntax(P[y]?P[y]:P[y-1],$?"] expected":", or | or ] expected",!P[y])}}return{type:A,derived:!1,value:x.error.syntax(P[y],"list expected")}}function pe(I,P,y){var F=P[y].line,z=J(I,P,y,I.__get_max_priority(),!1),X=null,$;if(z.type!==A)if(y=z.len,P[y]&&P[y].name==="atom"&&P[y].raw===".")if(y++,x.type.is_term(z.value)){if(z.value.indicator===":-/2"?(X=new x.type.Rule(z.value.args[0],Pe(z.value.args[1])),$={value:X,len:y,type:p}):z.value.indicator==="-->/2"?(X=ge(new x.type.Rule(z.value.args[0],z.value.args[1]),I),X.body=Pe(X.body),$={value:X,len:y,type:x.type.is_rule(X)?p:A}):(X=new x.type.Rule(z.value,null),$={value:X,len:y,type:p}),X){var ie=X.singleton_variables();ie.length>0&&I.throw_warning(x.warning.singleton(ie,X.head.indicator,F))}return $}else return{type:A,value:x.error.syntax(P[y],"callable expected")};else return{type:A,value:x.error.syntax(P[y]?P[y]:P[y-1],". or operator expected")};return z}function he(I,P,y){y=y||{},y.from=y.from?y.from:"$tau-js",y.reconsult=y.reconsult!==void 0?y.reconsult:!0;var F=new _(I),z={},X;F.new_text(P);var $=0,ie=F.get_tokens($);do{if(ie===null||!ie[$])break;var ke=pe(I,ie,$);if(ke.type===A)return new H("throw",[ke.value]);if(ke.value.body===null&&ke.value.head.indicator==="?-/1"){var Ne=new At(I.session);Ne.add_goal(ke.value.head.args[0]),Ne.answer(function(ht){x.type.is_error(ht)?I.throw_warning(ht.args[0]):(ht===!1||ht===null)&&I.throw_warning(x.warning.failed_goal(ke.value.head.args[0],ke.len))}),$=ke.len;var st=!0}else if(ke.value.body===null&&ke.value.head.indicator===":-/1"){var st=I.run_directive(ke.value.head.args[0]);$=ke.len,ke.value.head.args[0].indicator==="char_conversion/2"&&(ie=F.get_tokens($),$=0)}else{X=ke.value.head.indicator,y.reconsult!==!1&&z[X]!==!0&&!I.is_multifile_predicate(X)&&(I.session.rules[X]=a(I.session.rules[X]||[],function(Ut){return Ut.dynamic}),z[X]=!0);var st=I.add_rule(ke.value,y);$=ke.len}if(!st)return st}while(!0);return!0}function ve(I,P){var y=new _(I);y.new_text(P);var F=0;do{var z=y.get_tokens(F);if(z===null)break;var X=J(I,z,0,I.__get_max_priority(),!1);if(X.type!==A){var $=X.len,ie=$;if(z[$]&&z[$].name==="atom"&&z[$].raw===".")I.add_goal(Pe(X.value));else{var ke=z[$];return new H("throw",[x.error.syntax(ke||z[$-1],". or operator expected",!ke)])}F=X.len+1}else return new H("throw",[X.value])}while(!0);return!0}function ge(I,P){I=I.rename(P);var y=P.next_free_variable(),F=le(I.body,y,P);return F.error?F.value:(I.body=F.value,I.head.args=I.head.args.concat([y,F.variable]),I.head=new H(I.head.id,I.head.args),I)}function le(I,P,y){var F;if(x.type.is_term(I)&&I.indicator==="!/0")return{value:I,variable:P,error:!1};if(x.type.is_term(I)&&I.indicator===",/2"){var z=le(I.args[0],P,y);if(z.error)return z;var X=le(I.args[1],z.variable,y);return X.error?X:{value:new H(",",[z.value,X.value]),variable:X.variable,error:!1}}else{if(x.type.is_term(I)&&I.indicator==="{}/1")return{value:I.args[0],variable:P,error:!1};if(x.type.is_empty_list(I))return{value:new H("true",[]),variable:P,error:!1};if(x.type.is_list(I)){F=y.next_free_variable();for(var $=I,ie;$.indicator==="./2";)ie=$,$=$.args[1];return x.type.is_variable($)?{value:x.error.instantiation("DCG"),variable:P,error:!0}:x.type.is_empty_list($)?(ie.args[1]=F,{value:new H("=",[P,I]),variable:F,error:!1}):{value:x.error.type("list",I,"DCG"),variable:P,error:!0}}else return x.type.is_callable(I)?(F=y.next_free_variable(),I.args=I.args.concat([P,F]),I=new H(I.id,I.args),{value:I,variable:F,error:!1}):{value:x.error.type("callable",I,"DCG"),variable:P,error:!0}}}function Pe(I){return x.type.is_variable(I)?new H("call",[I]):x.type.is_term(I)&&[",/2",";/2","->/2"].indexOf(I.indicator)!==-1?new H(I.id,[Pe(I.args[0]),Pe(I.args[1])]):I}function g(I,P){for(var y=P||new x.type.Term("[]",[]),F=I.length-1;F>=0;F--)y=new x.type.Term(".",[I[F],y]);return y}function De(I,P){for(var y=I.length-1;y>=0;y--)I[y]===P&&I.splice(y,1)}function Ee(I){for(var P={},y=[],F=0;F<I.length;F++)I[F]in P||(y.push(I[F]),P[I[F]]=!0);return y}function de(I,P,y,F){if(I.session.rules[y]!==null){for(var z=0;z<I.session.rules[y].length;z++)if(I.session.rules[y][z]===F){I.session.rules[y].splice(z,1),I.success(P);break}}}function ne(I){return function(P,y,F){var z=F.args[0],X=F.args.slice(1,I);if(x.type.is_variable(z))P.throw_error(x.error.instantiation(P.level));else if(!x.type.is_callable(z))P.throw_error(x.error.type("callable",z,P.level));else{var $=new H(z.id,z.args.concat(X));P.prepend([new Qe(y.goal.replace($),y.substitution,y)])}}}function Z(I){for(var P=I.length-1;P>=0;P--)if(I.charAt(P)==="/")return new H("/",[new H(I.substring(0,P)),new be(parseInt(I.substring(P+1)),!1)])}function me(I){this.id=I}function be(I,P){this.is_float=P!==void 0?P:parseInt(I)!==I,this.value=this.is_float?I:parseInt(I)}var ut=0;function H(I,P,y){this.ref=y||++ut,this.id=I,this.args=P||[],this.indicator=I+"/"+this.args.length}var yt=0;function Me(I,P,y,F,z,X){this.id=yt++,this.stream=I,this.mode=P,this.alias=y,this.type=F!==void 0?F:"text",this.reposition=z!==void 0?z:!0,this.eof_action=X!==void 0?X:"eof_code",this.position=this.mode==="append"?"end_of_stream":0,this.output=this.mode==="write"||this.mode==="append",this.input=this.mode==="read"}function Te(I){I=I||{},this.links=I}function Qe(I,P,y){P=P||new Te,y=y||null,this.goal=I,this.substitution=P,this.parent=y}function Ue(I,P,y){this.head=I,this.body=P,this.dynamic=y||!1}function je(I){I=I===void 0||I<=0?1e3:I,this.rules={},this.src_predicates={},this.rename=0,this.modules=[],this.thread=new At(this),this.total_threads=1,this.renamed_variables={},this.public_predicates={},this.multifile_predicates={},this.limit=I,this.streams={user_input:new Me(typeof pl<"u"&&pl.exports?nodejs_user_input:tau_user_input,"read","user_input","text",!1,"reset"),user_output:new Me(typeof pl<"u"&&pl.exports?nodejs_user_output:tau_user_output,"write","user_output","text",!1,"eof_code")},this.file_system=typeof pl<"u"&&pl.exports?nodejs_file_system:tau_file_system,this.standard_input=this.streams.user_input,this.standard_output=this.streams.user_output,this.current_input=this.streams.user_input,this.current_output=this.streams.user_output,this.format_success=function(P){return P.substitution},this.format_error=function(P){return P.goal},this.flag={bounded:x.flag.bounded.value,max_integer:x.flag.max_integer.value,min_integer:x.flag.min_integer.value,integer_rounding_function:x.flag.integer_rounding_function.value,char_conversion:x.flag.char_conversion.value,debug:x.flag.debug.value,max_arity:x.flag.max_arity.value,unknown:x.flag.unknown.value,double_quotes:x.flag.double_quotes.value,occurs_check:x.flag.occurs_check.value,dialect:x.flag.dialect.value,version_data:x.flag.version_data.value,nodejs:x.flag.nodejs.value},this.__loaded_modules=[],this.__char_conversion={},this.__operators={1200:{":-":["fx","xfx"],"-->":["xfx"],"?-":["fx"]},1100:{";":["xfy"]},1050:{"->":["xfy"]},1e3:{",":["xfy"]},900:{"\\+":["fy"]},700:{"=":["xfx"],"\\=":["xfx"],"==":["xfx"],"\\==":["xfx"],"@<":["xfx"],"@=<":["xfx"],"@>":["xfx"],"@>=":["xfx"],"=..":["xfx"],is:["xfx"],"=:=":["xfx"],"=\\=":["xfx"],"<":["xfx"],"=<":["xfx"],">":["xfx"],">=":["xfx"]},600:{":":["xfy"]},500:{"+":["yfx"],"-":["yfx"],"/\\":["yfx"],"\\/":["yfx"]},400:{"*":["yfx"],"/":["yfx"],"//":["yfx"],rem:["yfx"],mod:["yfx"],"<<":["yfx"],">>":["yfx"]},200:{"**":["xfx"],"^":["xfy"],"-":["fy"],"+":["fy"],"\\":["fy"]}}}function At(I){this.epoch=Date.now(),this.session=I,this.session.total_threads++,this.total_steps=0,this.cpu_time=0,this.cpu_time_last=0,this.points=[],this.debugger=!1,this.debugger_states=[],this.level="top_level/0",this.__calls=[],this.current_limit=this.session.limit,this.warnings=[]}function Le(I,P,y){this.id=I,this.rules=P,this.exports=y,x.module[I]=this}Le.prototype.exports_predicate=function(I){return this.exports.indexOf(I)!==-1},me.prototype.unify=function(I,P){if(P&&e(I.variables(),this.id)!==-1&&!x.type.is_variable(I))return null;var y={};return y[this.id]=I,new Te(y)},be.prototype.unify=function(I,P){return x.type.is_number(I)&&this.value===I.value&&this.is_float===I.is_float?new Te:null},H.prototype.unify=function(I,P){if(x.type.is_term(I)&&this.indicator===I.indicator){for(var y=new Te,F=0;F<this.args.length;F++){var z=x.unify(this.args[F].apply(y),I.args[F].apply(y),P);if(z===null)return null;for(var X in z.links)y.links[X]=z.links[X];y=y.apply(z)}return y}return null},Me.prototype.unify=function(I,P){return x.type.is_stream(I)&&this.id===I.id?new Te:null},me.prototype.toString=function(I){return this.id},be.prototype.toString=function(I){return this.is_float&&e(this.value.toString(),".")===-1?this.value+".0":this.value.toString()},H.prototype.toString=function(I,P,y){if(I=I||{},I.quoted=I.quoted===void 0?!0:I.quoted,I.ignore_ops=I.ignore_ops===void 0?!1:I.ignore_ops,I.numbervars=I.numbervars===void 0?!1:I.numbervars,P=P===void 0?1200:P,y=y===void 0?"":y,I.numbervars&&this.indicator==="$VAR/1"&&x.type.is_integer(this.args[0])&&this.args[0].value>=0){var F=this.args[0].value,z=Math.floor(F/26),X=F%26;return"ABCDEFGHIJKLMNOPQRSTUVWXYZ"[X]+(z!==0?z:"")}switch(this.indicator){case"[]/0":case"{}/0":case"!/0":return this.id;case"{}/1":return"{"+this.args[0].toString(I)+"}";case"./2":for(var $="["+this.args[0].toString(I),ie=this.args[1];ie.indicator==="./2";)$+=", "+ie.args[0].toString(I),ie=ie.args[1];return ie.indicator!=="[]/0"&&($+="|"+ie.toString(I)),$+="]",$;case",/2":return"("+this.args[0].toString(I)+", "+this.args[1].toString(I)+")";default:var ke=this.id,Ne=I.session?I.session.lookup_operator(this.id,this.args.length):null;if(I.session===void 0||I.ignore_ops||Ne===null)return I.quoted&&!/^(!|,|;|[a-z][0-9a-zA-Z_]*)$/.test(ke)&&ke!=="{}"&&ke!=="[]"&&(ke="'"+b(ke)+"'"),ke+(this.args.length?"("+o(this.args,function(Xt){return Xt.toString(I)}).join(", ")+")":"");var st=Ne.priority>P.priority||Ne.priority===P.priority&&(Ne.class==="xfy"&&this.indicator!==P.indicator||Ne.class==="yfx"&&this.indicator!==P.indicator||this.indicator===P.indicator&&Ne.class==="yfx"&&y==="right"||this.indicator===P.indicator&&Ne.class==="xfy"&&y==="left");Ne.indicator=this.indicator;var ht=st?"(":"",Ut=st?")":"";return this.args.length===0?"("+this.id+")":["fy","fx"].indexOf(Ne.class)!==-1?ht+ke+" "+this.args[0].toString(I,Ne)+Ut:["yf","xf"].indexOf(Ne.class)!==-1?ht+this.args[0].toString(I,Ne)+" "+ke+Ut:ht+this.args[0].toString(I,Ne,"left")+" "+this.id+" "+this.args[1].toString(I,Ne,"right")+Ut}},Me.prototype.toString=function(I){return"<stream>("+this.id+")"},Te.prototype.toString=function(I){var P="{";for(var y in this.links)!this.links.hasOwnProperty(y)||(P!=="{"&&(P+=", "),P+=y+"/"+this.links[y].toString(I));return P+="}",P},Qe.prototype.toString=function(I){return this.goal===null?"<"+this.substitution.toString(I)+">":"<"+this.goal.toString(I)+", "+this.substitution.toString(I)+">"},Ue.prototype.toString=function(I){return this.body?this.head.toString(I)+" :- "+this.body.toString(I)+".":this.head.toString(I)+"."},je.prototype.toString=function(I){for(var P="",y=0;y<this.modules.length;y++)P+=":- use_module(library("+this.modules[y]+`)). | 261 | `:P+="\\n";break;case"\r":P+="\\r";break;case" ":P+="\\t";break;case"\v":P+="\\v";break;default:P+=I.charAt(y);break}return P}function E(I){var P=I.substr(2);switch(I.substr(0,2).toLowerCase()){case"0x":return parseInt(P,16);case"0b":return parseInt(P,2);case"0o":return parseInt(P,8);case"0'":return w(P)[0];default:return parseFloat(I)}}var R={whitespace:/^\s*(?:(?:%.*)|(?:\/\*(?:\n|\r|.)*?\*\/)|(?:\s+))\s*/,variable:/^(?:[A-Z_][a-zA-Z0-9_]*)/,atom:/^(\!|,|;|[a-z][0-9a-zA-Z_]*|[#\$\&\*\+\-\.\/\:\<\=\>\?\@\^\~\\]+|'(?:[^']*?(?:\\(?:x?\d+)?\\)*(?:'')*(?:\\')*)*')/,number:/^(?:0o[0-7]+|0x[0-9a-fA-F]+|0b[01]+|0'(?:''|\\[abfnrtv\\'"`]|\\x?\d+\\|[^\\])|\d+(?:\.\d+(?:[eE][+-]?\d+)?)?)/,string:/^(?:"([^"]|""|\\")*"|`([^`]|``|\\`)*`)/,l_brace:/^(?:\[)/,r_brace:/^(?:\])/,l_bracket:/^(?:\{)/,r_bracket:/^(?:\})/,bar:/^(?:\|)/,l_paren:/^(?:\()/,r_paren:/^(?:\))/};function L(I,P){return I.get_flag("char_conversion").id==="on"?P.replace(/./g,function(y){return I.get_char_conversion(y)}):P}function _(I){this.thread=I,this.text="",this.tokens=[]}_.prototype.set_last_tokens=function(I){return this.tokens=I},_.prototype.new_text=function(I){this.text=I,this.tokens=[]},_.prototype.get_tokens=function(I){var P,y=0,F=0,z=0,X=[],$=!1;if(I){var ie=this.tokens[I-1];y=ie.len,P=L(this.thread,this.text.substr(ie.len)),F=ie.line,z=ie.start}else P=this.text;if(/^\s*$/.test(P))return null;for(;P!=="";){var ke=[],Ne=!1;if(/^\n/.exec(P)!==null){F++,z=0,y++,P=P.replace(/\n/,""),$=!0;continue}for(var st in R)if(R.hasOwnProperty(st)){var ht=R[st].exec(P);ht&&ke.push({value:ht[0],name:st,matches:ht})}if(!ke.length)return this.set_last_tokens([{value:P,matches:[],name:"lexical",line:F,start:z}]);var ie=r(ke,function(Dr,fr){return Dr.value.length>=fr.value.length?Dr:fr});switch(ie.start=z,ie.line=F,P=P.replace(ie.value,""),z+=ie.value.length,y+=ie.value.length,ie.name){case"atom":ie.raw=ie.value,ie.value.charAt(0)==="'"&&(ie.value=v(ie.value.substr(1,ie.value.length-2),"'"),ie.value===null&&(ie.name="lexical",ie.value="unknown escape sequence"));break;case"number":ie.float=ie.value.substring(0,2)!=="0x"&&ie.value.match(/[.eE]/)!==null&&ie.value!=="0'.",ie.value=E(ie.value),ie.blank=Ne;break;case"string":var Ut=ie.value.charAt(0);ie.value=v(ie.value.substr(1,ie.value.length-2),Ut),ie.value===null&&(ie.name="lexical",ie.value="unknown escape sequence");break;case"whitespace":var Xt=X[X.length-1];Xt&&(Xt.space=!0),Ne=!0;continue;case"r_bracket":X.length>0&&X[X.length-1].name==="l_bracket"&&(ie=X.pop(),ie.name="atom",ie.value="{}",ie.raw="{}",ie.space=!1);break;case"r_brace":X.length>0&&X[X.length-1].name==="l_brace"&&(ie=X.pop(),ie.name="atom",ie.value="[]",ie.raw="[]",ie.space=!1);break}ie.len=y,X.push(ie),Ne=!1}var xt=this.set_last_tokens(X);return xt.length===0?null:xt};function V(I,P,y,F,z){if(!P[y])return{type:A,value:x.error.syntax(P[y-1],"expression expected",!0)};var X;if(F==="0"){var $=P[y];switch($.name){case"number":return{type:p,len:y+1,value:new x.type.Num($.value,$.float)};case"variable":return{type:p,len:y+1,value:new x.type.Var($.value)};case"string":var ie;switch(I.get_flag("double_quotes").id){case"atom":ie=new H($.value,[]);break;case"codes":ie=new H("[]",[]);for(var ke=$.value.length-1;ke>=0;ke--)ie=new H(".",[new x.type.Num(n($.value,ke),!1),ie]);break;case"chars":ie=new H("[]",[]);for(var ke=$.value.length-1;ke>=0;ke--)ie=new H(".",[new x.type.Term($.value.charAt(ke),[]),ie]);break}return{type:p,len:y+1,value:ie};case"l_paren":var xt=V(I,P,y+1,I.__get_max_priority(),!0);return xt.type!==p?xt:P[xt.len]&&P[xt.len].name==="r_paren"?(xt.len++,xt):{type:A,derived:!0,value:x.error.syntax(P[xt.len]?P[xt.len]:P[xt.len-1],") or operator expected",!P[xt.len])};case"l_bracket":var xt=V(I,P,y+1,I.__get_max_priority(),!0);return xt.type!==p?xt:P[xt.len]&&P[xt.len].name==="r_bracket"?(xt.len++,xt.value=new H("{}",[xt.value]),xt):{type:A,derived:!0,value:x.error.syntax(P[xt.len]?P[xt.len]:P[xt.len-1],"} or operator expected",!P[xt.len])}}var Ne=re(I,P,y,z);return Ne.type===p||Ne.derived||(Ne=ae(I,P,y),Ne.type===p||Ne.derived)?Ne:{type:A,derived:!1,value:x.error.syntax(P[y],"unexpected token")}}var st=I.__get_max_priority(),ht=I.__get_next_priority(F),Ut=y;if(P[y].name==="atom"&&P[y+1]&&(P[y].space||P[y+1].name!=="l_paren")){var $=P[y++],Xt=I.__lookup_operator_classes(F,$.value);if(Xt&&Xt.indexOf("fy")>-1){var xt=V(I,P,y,F,z);if(xt.type!==A)return $.value==="-"&&!$.space&&x.type.is_number(xt.value)?{value:new x.type.Num(-xt.value.value,xt.value.is_float),len:xt.len,type:p}:{value:new x.type.Term($.value,[xt.value]),len:xt.len,type:p};X=xt}else if(Xt&&Xt.indexOf("fx")>-1){var xt=V(I,P,y,ht,z);if(xt.type!==A)return{value:new x.type.Term($.value,[xt.value]),len:xt.len,type:p};X=xt}}y=Ut;var xt=V(I,P,y,ht,z);if(xt.type===p){y=xt.len;var $=P[y];if(P[y]&&(P[y].name==="atom"&&I.__lookup_operator_classes(F,$.value)||P[y].name==="bar"&&I.__lookup_operator_classes(F,"|"))){var tn=ht,Dr=F,Xt=I.__lookup_operator_classes(F,$.value);if(Xt.indexOf("xf")>-1)return{value:new x.type.Term($.value,[xt.value]),len:++xt.len,type:p};if(Xt.indexOf("xfx")>-1){var fr=V(I,P,y+1,tn,z);return fr.type===p?{value:new x.type.Term($.value,[xt.value,fr.value]),len:fr.len,type:p}:(fr.derived=!0,fr)}else if(Xt.indexOf("xfy")>-1){var fr=V(I,P,y+1,Dr,z);return fr.type===p?{value:new x.type.Term($.value,[xt.value,fr.value]),len:fr.len,type:p}:(fr.derived=!0,fr)}else if(xt.type!==A)for(;;){y=xt.len;var $=P[y];if($&&$.name==="atom"&&I.__lookup_operator_classes(F,$.value)){var Xt=I.__lookup_operator_classes(F,$.value);if(Xt.indexOf("yf")>-1)xt={value:new x.type.Term($.value,[xt.value]),len:++y,type:p};else if(Xt.indexOf("yfx")>-1){var fr=V(I,P,++y,tn,z);if(fr.type===A)return fr.derived=!0,fr;y=fr.len,xt={value:new x.type.Term($.value,[xt.value,fr.value]),len:y,type:p}}else break}else break}}else X={type:A,value:x.error.syntax(P[xt.len-1],"operator expected")};return xt}return xt}function re(I,P,y,F){if(!P[y]||P[y].name==="atom"&&P[y].raw==="."&&!F&&(P[y].space||!P[y+1]||P[y+1].name!=="l_paren"))return{type:A,derived:!1,value:x.error.syntax(P[y-1],"unfounded token")};var z=P[y],X=[];if(P[y].name==="atom"&&P[y].raw!==","){if(y++,P[y-1].space)return{type:p,len:y,value:new x.type.Term(z.value,X)};if(P[y]&&P[y].name==="l_paren"){if(P[y+1]&&P[y+1].name==="r_paren")return{type:A,derived:!0,value:x.error.syntax(P[y+1],"argument expected")};var $=V(I,P,++y,"999",!0);if($.type===A)return $.derived?$:{type:A,derived:!0,value:x.error.syntax(P[y]?P[y]:P[y-1],"argument expected",!P[y])};for(X.push($.value),y=$.len;P[y]&&P[y].name==="atom"&&P[y].value===",";){if($=V(I,P,y+1,"999",!0),$.type===A)return $.derived?$:{type:A,derived:!0,value:x.error.syntax(P[y+1]?P[y+1]:P[y],"argument expected",!P[y+1])};X.push($.value),y=$.len}if(P[y]&&P[y].name==="r_paren")y++;else return{type:A,derived:!0,value:x.error.syntax(P[y]?P[y]:P[y-1],", or ) expected",!P[y])}}return{type:p,len:y,value:new x.type.Term(z.value,X)}}return{type:A,derived:!1,value:x.error.syntax(P[y],"term expected")}}function ae(I,P,y){if(!P[y])return{type:A,derived:!1,value:x.error.syntax(P[y-1],"[ expected")};if(P[y]&&P[y].name==="l_brace"){var F=V(I,P,++y,"999",!0),z=[F.value],X=void 0;if(F.type===A)return P[y]&&P[y].name==="r_brace"?{type:p,len:y+1,value:new x.type.Term("[]",[])}:{type:A,derived:!0,value:x.error.syntax(P[y],"] expected")};for(y=F.len;P[y]&&P[y].name==="atom"&&P[y].value===",";){if(F=V(I,P,y+1,"999",!0),F.type===A)return F.derived?F:{type:A,derived:!0,value:x.error.syntax(P[y+1]?P[y+1]:P[y],"argument expected",!P[y+1])};z.push(F.value),y=F.len}var $=!1;if(P[y]&&P[y].name==="bar"){if($=!0,F=V(I,P,y+1,"999",!0),F.type===A)return F.derived?F:{type:A,derived:!0,value:x.error.syntax(P[y+1]?P[y+1]:P[y],"argument expected",!P[y+1])};X=F.value,y=F.len}return P[y]&&P[y].name==="r_brace"?{type:p,len:y+1,value:g(z,X)}:{type:A,derived:!0,value:x.error.syntax(P[y]?P[y]:P[y-1],$?"] expected":", or | or ] expected",!P[y])}}return{type:A,derived:!1,value:x.error.syntax(P[y],"list expected")}}function he(I,P,y){var F=P[y].line,z=V(I,P,y,I.__get_max_priority(),!1),X=null,$;if(z.type!==A)if(y=z.len,P[y]&&P[y].name==="atom"&&P[y].raw===".")if(y++,x.type.is_term(z.value)){if(z.value.indicator===":-/2"?(X=new x.type.Rule(z.value.args[0],Pe(z.value.args[1])),$={value:X,len:y,type:p}):z.value.indicator==="-->/2"?(X=ge(new x.type.Rule(z.value.args[0],z.value.args[1]),I),X.body=Pe(X.body),$={value:X,len:y,type:x.type.is_rule(X)?p:A}):(X=new x.type.Rule(z.value,null),$={value:X,len:y,type:p}),X){var ie=X.singleton_variables();ie.length>0&&I.throw_warning(x.warning.singleton(ie,X.head.indicator,F))}return $}else return{type:A,value:x.error.syntax(P[y],"callable expected")};else return{type:A,value:x.error.syntax(P[y]?P[y]:P[y-1],". or operator expected")};return z}function pe(I,P,y){y=y||{},y.from=y.from?y.from:"$tau-js",y.reconsult=y.reconsult!==void 0?y.reconsult:!0;var F=new _(I),z={},X;F.new_text(P);var $=0,ie=F.get_tokens($);do{if(ie===null||!ie[$])break;var ke=he(I,ie,$);if(ke.type===A)return new H("throw",[ke.value]);if(ke.value.body===null&&ke.value.head.indicator==="?-/1"){var Ne=new At(I.session);Ne.add_goal(ke.value.head.args[0]),Ne.answer(function(ht){x.type.is_error(ht)?I.throw_warning(ht.args[0]):(ht===!1||ht===null)&&I.throw_warning(x.warning.failed_goal(ke.value.head.args[0],ke.len))}),$=ke.len;var st=!0}else if(ke.value.body===null&&ke.value.head.indicator===":-/1"){var st=I.run_directive(ke.value.head.args[0]);$=ke.len,ke.value.head.args[0].indicator==="char_conversion/2"&&(ie=F.get_tokens($),$=0)}else{X=ke.value.head.indicator,y.reconsult!==!1&&z[X]!==!0&&!I.is_multifile_predicate(X)&&(I.session.rules[X]=a(I.session.rules[X]||[],function(Ut){return Ut.dynamic}),z[X]=!0);var st=I.add_rule(ke.value,y);$=ke.len}if(!st)return st}while(!0);return!0}function De(I,P){var y=new _(I);y.new_text(P);var F=0;do{var z=y.get_tokens(F);if(z===null)break;var X=V(I,z,0,I.__get_max_priority(),!1);if(X.type!==A){var $=X.len,ie=$;if(z[$]&&z[$].name==="atom"&&z[$].raw===".")I.add_goal(Pe(X.value));else{var ke=z[$];return new H("throw",[x.error.syntax(ke||z[$-1],". or operator expected",!ke)])}F=X.len+1}else return new H("throw",[X.value])}while(!0);return!0}function ge(I,P){I=I.rename(P);var y=P.next_free_variable(),F=le(I.body,y,P);return F.error?F.value:(I.body=F.value,I.head.args=I.head.args.concat([y,F.variable]),I.head=new H(I.head.id,I.head.args),I)}function le(I,P,y){var F;if(x.type.is_term(I)&&I.indicator==="!/0")return{value:I,variable:P,error:!1};if(x.type.is_term(I)&&I.indicator===",/2"){var z=le(I.args[0],P,y);if(z.error)return z;var X=le(I.args[1],z.variable,y);return X.error?X:{value:new H(",",[z.value,X.value]),variable:X.variable,error:!1}}else{if(x.type.is_term(I)&&I.indicator==="{}/1")return{value:I.args[0],variable:P,error:!1};if(x.type.is_empty_list(I))return{value:new H("true",[]),variable:P,error:!1};if(x.type.is_list(I)){F=y.next_free_variable();for(var $=I,ie;$.indicator==="./2";)ie=$,$=$.args[1];return x.type.is_variable($)?{value:x.error.instantiation("DCG"),variable:P,error:!0}:x.type.is_empty_list($)?(ie.args[1]=F,{value:new H("=",[P,I]),variable:F,error:!1}):{value:x.error.type("list",I,"DCG"),variable:P,error:!0}}else return x.type.is_callable(I)?(F=y.next_free_variable(),I.args=I.args.concat([P,F]),I=new H(I.id,I.args),{value:I,variable:F,error:!1}):{value:x.error.type("callable",I,"DCG"),variable:P,error:!0}}}function Pe(I){return x.type.is_variable(I)?new H("call",[I]):x.type.is_term(I)&&[",/2",";/2","->/2"].indexOf(I.indicator)!==-1?new H(I.id,[Pe(I.args[0]),Pe(I.args[1])]):I}function g(I,P){for(var y=P||new x.type.Term("[]",[]),F=I.length-1;F>=0;F--)y=new x.type.Term(".",[I[F],y]);return y}function ve(I,P){for(var y=I.length-1;y>=0;y--)I[y]===P&&I.splice(y,1)}function Ee(I){for(var P={},y=[],F=0;F<I.length;F++)I[F]in P||(y.push(I[F]),P[I[F]]=!0);return y}function de(I,P,y,F){if(I.session.rules[y]!==null){for(var z=0;z<I.session.rules[y].length;z++)if(I.session.rules[y][z]===F){I.session.rules[y].splice(z,1),I.success(P);break}}}function ne(I){return function(P,y,F){var z=F.args[0],X=F.args.slice(1,I);if(x.type.is_variable(z))P.throw_error(x.error.instantiation(P.level));else if(!x.type.is_callable(z))P.throw_error(x.error.type("callable",z,P.level));else{var $=new H(z.id,z.args.concat(X));P.prepend([new Qe(y.goal.replace($),y.substitution,y)])}}}function Z(I){for(var P=I.length-1;P>=0;P--)if(I.charAt(P)==="/")return new H("/",[new H(I.substring(0,P)),new be(parseInt(I.substring(P+1)),!1)])}function me(I){this.id=I}function be(I,P){this.is_float=P!==void 0?P:parseInt(I)!==I,this.value=this.is_float?I:parseInt(I)}var ut=0;function H(I,P,y){this.ref=y||++ut,this.id=I,this.args=P||[],this.indicator=I+"/"+this.args.length}var yt=0;function Me(I,P,y,F,z,X){this.id=yt++,this.stream=I,this.mode=P,this.alias=y,this.type=F!==void 0?F:"text",this.reposition=z!==void 0?z:!0,this.eof_action=X!==void 0?X:"eof_code",this.position=this.mode==="append"?"end_of_stream":0,this.output=this.mode==="write"||this.mode==="append",this.input=this.mode==="read"}function Te(I){I=I||{},this.links=I}function Qe(I,P,y){P=P||new Te,y=y||null,this.goal=I,this.substitution=P,this.parent=y}function _e(I,P,y){this.head=I,this.body=P,this.dynamic=y||!1}function qe(I){I=I===void 0||I<=0?1e3:I,this.rules={},this.src_predicates={},this.rename=0,this.modules=[],this.thread=new At(this),this.total_threads=1,this.renamed_variables={},this.public_predicates={},this.multifile_predicates={},this.limit=I,this.streams={user_input:new Me(typeof ml<"u"&&ml.exports?nodejs_user_input:tau_user_input,"read","user_input","text",!1,"reset"),user_output:new Me(typeof ml<"u"&&ml.exports?nodejs_user_output:tau_user_output,"write","user_output","text",!1,"eof_code")},this.file_system=typeof ml<"u"&&ml.exports?nodejs_file_system:tau_file_system,this.standard_input=this.streams.user_input,this.standard_output=this.streams.user_output,this.current_input=this.streams.user_input,this.current_output=this.streams.user_output,this.format_success=function(P){return P.substitution},this.format_error=function(P){return P.goal},this.flag={bounded:x.flag.bounded.value,max_integer:x.flag.max_integer.value,min_integer:x.flag.min_integer.value,integer_rounding_function:x.flag.integer_rounding_function.value,char_conversion:x.flag.char_conversion.value,debug:x.flag.debug.value,max_arity:x.flag.max_arity.value,unknown:x.flag.unknown.value,double_quotes:x.flag.double_quotes.value,occurs_check:x.flag.occurs_check.value,dialect:x.flag.dialect.value,version_data:x.flag.version_data.value,nodejs:x.flag.nodejs.value},this.__loaded_modules=[],this.__char_conversion={},this.__operators={1200:{":-":["fx","xfx"],"-->":["xfx"],"?-":["fx"]},1100:{";":["xfy"]},1050:{"->":["xfy"]},1e3:{",":["xfy"]},900:{"\\+":["fy"]},700:{"=":["xfx"],"\\=":["xfx"],"==":["xfx"],"\\==":["xfx"],"@<":["xfx"],"@=<":["xfx"],"@>":["xfx"],"@>=":["xfx"],"=..":["xfx"],is:["xfx"],"=:=":["xfx"],"=\\=":["xfx"],"<":["xfx"],"=<":["xfx"],">":["xfx"],">=":["xfx"]},600:{":":["xfy"]},500:{"+":["yfx"],"-":["yfx"],"/\\":["yfx"],"\\/":["yfx"]},400:{"*":["yfx"],"/":["yfx"],"//":["yfx"],rem:["yfx"],mod:["yfx"],"<<":["yfx"],">>":["yfx"]},200:{"**":["xfx"],"^":["xfy"],"-":["fy"],"+":["fy"],"\\":["fy"]}}}function At(I){this.epoch=Date.now(),this.session=I,this.session.total_threads++,this.total_steps=0,this.cpu_time=0,this.cpu_time_last=0,this.points=[],this.debugger=!1,this.debugger_states=[],this.level="top_level/0",this.__calls=[],this.current_limit=this.session.limit,this.warnings=[]}function Oe(I,P,y){this.id=I,this.rules=P,this.exports=y,x.module[I]=this}Oe.prototype.exports_predicate=function(I){return this.exports.indexOf(I)!==-1},me.prototype.unify=function(I,P){if(P&&e(I.variables(),this.id)!==-1&&!x.type.is_variable(I))return null;var y={};return y[this.id]=I,new Te(y)},be.prototype.unify=function(I,P){return x.type.is_number(I)&&this.value===I.value&&this.is_float===I.is_float?new Te:null},H.prototype.unify=function(I,P){if(x.type.is_term(I)&&this.indicator===I.indicator){for(var y=new Te,F=0;F<this.args.length;F++){var z=x.unify(this.args[F].apply(y),I.args[F].apply(y),P);if(z===null)return null;for(var X in z.links)y.links[X]=z.links[X];y=y.apply(z)}return y}return null},Me.prototype.unify=function(I,P){return x.type.is_stream(I)&&this.id===I.id?new Te:null},me.prototype.toString=function(I){return this.id},be.prototype.toString=function(I){return this.is_float&&e(this.value.toString(),".")===-1?this.value+".0":this.value.toString()},H.prototype.toString=function(I,P,y){if(I=I||{},I.quoted=I.quoted===void 0?!0:I.quoted,I.ignore_ops=I.ignore_ops===void 0?!1:I.ignore_ops,I.numbervars=I.numbervars===void 0?!1:I.numbervars,P=P===void 0?1200:P,y=y===void 0?"":y,I.numbervars&&this.indicator==="$VAR/1"&&x.type.is_integer(this.args[0])&&this.args[0].value>=0){var F=this.args[0].value,z=Math.floor(F/26),X=F%26;return"ABCDEFGHIJKLMNOPQRSTUVWXYZ"[X]+(z!==0?z:"")}switch(this.indicator){case"[]/0":case"{}/0":case"!/0":return this.id;case"{}/1":return"{"+this.args[0].toString(I)+"}";case"./2":for(var $="["+this.args[0].toString(I),ie=this.args[1];ie.indicator==="./2";)$+=", "+ie.args[0].toString(I),ie=ie.args[1];return ie.indicator!=="[]/0"&&($+="|"+ie.toString(I)),$+="]",$;case",/2":return"("+this.args[0].toString(I)+", "+this.args[1].toString(I)+")";default:var ke=this.id,Ne=I.session?I.session.lookup_operator(this.id,this.args.length):null;if(I.session===void 0||I.ignore_ops||Ne===null)return I.quoted&&!/^(!|,|;|[a-z][0-9a-zA-Z_]*)$/.test(ke)&&ke!=="{}"&&ke!=="[]"&&(ke="'"+b(ke)+"'"),ke+(this.args.length?"("+o(this.args,function(Xt){return Xt.toString(I)}).join(", ")+")":"");var st=Ne.priority>P.priority||Ne.priority===P.priority&&(Ne.class==="xfy"&&this.indicator!==P.indicator||Ne.class==="yfx"&&this.indicator!==P.indicator||this.indicator===P.indicator&&Ne.class==="yfx"&&y==="right"||this.indicator===P.indicator&&Ne.class==="xfy"&&y==="left");Ne.indicator=this.indicator;var ht=st?"(":"",Ut=st?")":"";return this.args.length===0?"("+this.id+")":["fy","fx"].indexOf(Ne.class)!==-1?ht+ke+" "+this.args[0].toString(I,Ne)+Ut:["yf","xf"].indexOf(Ne.class)!==-1?ht+this.args[0].toString(I,Ne)+" "+ke+Ut:ht+this.args[0].toString(I,Ne,"left")+" "+this.id+" "+this.args[1].toString(I,Ne,"right")+Ut}},Me.prototype.toString=function(I){return"<stream>("+this.id+")"},Te.prototype.toString=function(I){var P="{";for(var y in this.links)!this.links.hasOwnProperty(y)||(P!=="{"&&(P+=", "),P+=y+"/"+this.links[y].toString(I));return P+="}",P},Qe.prototype.toString=function(I){return this.goal===null?"<"+this.substitution.toString(I)+">":"<"+this.goal.toString(I)+", "+this.substitution.toString(I)+">"},_e.prototype.toString=function(I){return this.body?this.head.toString(I)+" :- "+this.body.toString(I)+".":this.head.toString(I)+"."},qe.prototype.toString=function(I){for(var P="",y=0;y<this.modules.length;y++)P+=":- use_module(library("+this.modules[y]+`)). |
262 | `;P+=` | 262 | `;P+=` |
263 | `;for(key in this.rules)for(y=0;y<this.rules[key].length;y++)P+=this.rules[key][y].toString(I),P+=` | 263 | `;for(key in this.rules)for(y=0;y<this.rules[key].length;y++)P+=this.rules[key][y].toString(I),P+=` |
264 | `;return P},me.prototype.clone=function(){return new me(this.id)},be.prototype.clone=function(){return new be(this.value,this.is_float)},H.prototype.clone=function(){return new H(this.id,o(this.args,function(I){return I.clone()}))},Me.prototype.clone=function(){return new Stram(this.stream,this.mode,this.alias,this.type,this.reposition,this.eof_action)},Te.prototype.clone=function(){var I={};for(var P in this.links)!this.links.hasOwnProperty(P)||(I[P]=this.links[P].clone());return new Te(I)},Qe.prototype.clone=function(){return new Qe(this.goal.clone(),this.substitution.clone(),this.parent)},Ue.prototype.clone=function(){return new Ue(this.head.clone(),this.body!==null?this.body.clone():null)},me.prototype.equals=function(I){return x.type.is_variable(I)&&this.id===I.id},be.prototype.equals=function(I){return x.type.is_number(I)&&this.value===I.value&&this.is_float===I.is_float},H.prototype.equals=function(I){if(!x.type.is_term(I)||this.indicator!==I.indicator)return!1;for(var P=0;P<this.args.length;P++)if(!this.args[P].equals(I.args[P]))return!1;return!0},Me.prototype.equals=function(I){return x.type.is_stream(I)&&this.id===I.id},Te.prototype.equals=function(I){var P;if(!x.type.is_substitution(I))return!1;for(P in this.links)if(!!this.links.hasOwnProperty(P)&&(!I.links[P]||!this.links[P].equals(I.links[P])))return!1;for(P in I.links)if(!!I.links.hasOwnProperty(P)&&!this.links[P])return!1;return!0},Qe.prototype.equals=function(I){return x.type.is_state(I)&&this.goal.equals(I.goal)&&this.substitution.equals(I.substitution)&&this.parent===I.parent},Ue.prototype.equals=function(I){return x.type.is_rule(I)&&this.head.equals(I.head)&&(this.body===null&&I.body===null||this.body!==null&&this.body.equals(I.body))},me.prototype.rename=function(I){return I.get_free_variable(this)},be.prototype.rename=function(I){return this},H.prototype.rename=function(I){return new H(this.id,o(this.args,function(P){return P.rename(I)}))},Me.prototype.rename=function(I){return this},Ue.prototype.rename=function(I){return new Ue(this.head.rename(I),this.body!==null?this.body.rename(I):null)},me.prototype.variables=function(){return[this.id]},be.prototype.variables=function(){return[]},H.prototype.variables=function(){return[].concat.apply([],o(this.args,function(I){return I.variables()}))},Me.prototype.variables=function(){return[]},Ue.prototype.variables=function(){return this.body===null?this.head.variables():this.head.variables().concat(this.body.variables())},me.prototype.apply=function(I){return I.lookup(this.id)?I.lookup(this.id):this},be.prototype.apply=function(I){return this},H.prototype.apply=function(I){if(this.indicator==="./2"){for(var P=[],y=this;y.indicator==="./2";)P.push(y.args[0].apply(I)),y=y.args[1];for(var F=y.apply(I),z=P.length-1;z>=0;z--)F=new H(".",[P[z],F]);return F}return new H(this.id,o(this.args,function(X){return X.apply(I)}),this.ref)},Me.prototype.apply=function(I){return this},Ue.prototype.apply=function(I){return new Ue(this.head.apply(I),this.body!==null?this.body.apply(I):null)},Te.prototype.apply=function(I){var P,y={};for(P in this.links)!this.links.hasOwnProperty(P)||(y[P]=this.links[P].apply(I));return new Te(y)},H.prototype.select=function(){for(var I=this;I.indicator===",/2";)I=I.args[0];return I},H.prototype.replace=function(I){return this.indicator===",/2"?this.args[0].indicator===",/2"?new H(",",[this.args[0].replace(I),this.args[1]]):I===null?this.args[1]:new H(",",[I,this.args[1]]):I},H.prototype.search=function(I){if(x.type.is_term(I)&&I.ref!==void 0&&this.ref===I.ref)return!0;for(var P=0;P<this.args.length;P++)if(x.type.is_term(this.args[P])&&this.args[P].search(I))return!0;return!1},je.prototype.get_current_input=function(){return this.current_input},At.prototype.get_current_input=function(){return this.session.get_current_input()},je.prototype.get_current_output=function(){return this.current_output},At.prototype.get_current_output=function(){return this.session.get_current_output()},je.prototype.set_current_input=function(I){this.current_input=I},At.prototype.set_current_input=function(I){return this.session.set_current_input(I)},je.prototype.set_current_output=function(I){this.current_input=I},At.prototype.set_current_output=function(I){return this.session.set_current_output(I)},je.prototype.get_stream_by_alias=function(I){return this.streams[I]},At.prototype.get_stream_by_alias=function(I){return this.session.get_stream_by_alias(I)},je.prototype.file_system_open=function(I,P,y){return this.file_system.open(I,P,y)},At.prototype.file_system_open=function(I,P,y){return this.session.file_system_open(I,P,y)},je.prototype.get_char_conversion=function(I){return this.__char_conversion[I]||I},At.prototype.get_char_conversion=function(I){return this.session.get_char_conversion(I)},je.prototype.parse=function(I){return this.thread.parse(I)},At.prototype.parse=function(I){var P=new _(this);P.new_text(I);var y=P.get_tokens();if(y===null)return!1;var F=J(this,y,0,this.__get_max_priority(),!1);return F.len!==y.length?!1:{value:F.value,expr:F,tokens:y}},je.prototype.get_flag=function(I){return this.flag[I]},At.prototype.get_flag=function(I){return this.session.get_flag(I)},je.prototype.add_rule=function(I,P){return P=P||{},P.from=P.from?P.from:"$tau-js",this.src_predicates[I.head.indicator]=P.from,this.rules[I.head.indicator]||(this.rules[I.head.indicator]=[]),this.rules[I.head.indicator].push(I),this.public_predicates.hasOwnProperty(I.head.indicator)||(this.public_predicates[I.head.indicator]=!1),!0},At.prototype.add_rule=function(I,P){return this.session.add_rule(I,P)},je.prototype.run_directive=function(I){this.thread.run_directive(I)},At.prototype.run_directive=function(I){return x.type.is_directive(I)?(x.directive[I.indicator](this,I),!0):!1},je.prototype.__get_max_priority=function(){return"1200"},At.prototype.__get_max_priority=function(){return this.session.__get_max_priority()},je.prototype.__get_next_priority=function(I){var P=0;I=parseInt(I);for(var y in this.__operators)if(!!this.__operators.hasOwnProperty(y)){var F=parseInt(y);F>P&&F<I&&(P=F)}return P.toString()},At.prototype.__get_next_priority=function(I){return this.session.__get_next_priority(I)},je.prototype.__lookup_operator_classes=function(I,P){return this.__operators.hasOwnProperty(I)&&this.__operators[I][P]instanceof Array&&this.__operators[I][P]||!1},At.prototype.__lookup_operator_classes=function(I,P){return this.session.__lookup_operator_classes(I,P)},je.prototype.lookup_operator=function(I,P){for(var y in this.__operators)if(this.__operators[y][I]){for(var F=0;F<this.__operators[y][I].length;F++)if(P===0||this.__operators[y][I][F].length===P+1)return{priority:y,class:this.__operators[y][I][F]}}return null},At.prototype.lookup_operator=function(I,P){return this.session.lookup_operator(I,P)},je.prototype.throw_warning=function(I){this.thread.throw_warning(I)},At.prototype.throw_warning=function(I){this.warnings.push(I)},je.prototype.get_warnings=function(){return this.thread.get_warnings()},At.prototype.get_warnings=function(){return this.warnings},je.prototype.add_goal=function(I,P){this.thread.add_goal(I,P)},At.prototype.add_goal=function(I,P,y){y=y||null,P===!0&&(this.points=[]);for(var F=I.variables(),z={},X=0;X<F.length;X++)z[F[X]]=new me(F[X]);this.points.push(new Qe(I,new Te(z),y))},je.prototype.consult=function(I,P){return this.thread.consult(I,P)},At.prototype.consult=function(I,P){var y="";if(typeof I=="string"){y=I;var F=y.length;if(y.substring(F-3,F)===".pl"&&document.getElementById(y)){var z=document.getElementById(y),X=z.getAttribute("type");X!==null&&X.replace(/ /g,"").toLowerCase()==="text/prolog"&&(y=z.text)}}else if(I.nodeName)switch(I.nodeName.toLowerCase()){case"input":case"textarea":y=I.value;break;default:y=I.innerHTML;break}else return!1;return this.warnings=[],he(this,y,P)},je.prototype.query=function(I){return this.thread.query(I)},At.prototype.query=function(I){return this.points=[],this.debugger_points=[],ve(this,I)},je.prototype.head_point=function(){return this.thread.head_point()},At.prototype.head_point=function(){return this.points[this.points.length-1]},je.prototype.get_free_variable=function(I){return this.thread.get_free_variable(I)},At.prototype.get_free_variable=function(I){var P=[];if(I.id==="_"||this.session.renamed_variables[I.id]===void 0){for(this.session.rename++,this.points.length>0&&(P=this.head_point().substitution.domain());e(P,x.format_variable(this.session.rename))!==-1;)this.session.rename++;if(I.id==="_")return new me(x.format_variable(this.session.rename));this.session.renamed_variables[I.id]=x.format_variable(this.session.rename)}return new me(this.session.renamed_variables[I.id])},je.prototype.next_free_variable=function(){return this.thread.next_free_variable()},At.prototype.next_free_variable=function(){this.session.rename++;var I=[];for(this.points.length>0&&(I=this.head_point().substitution.domain());e(I,x.format_variable(this.session.rename))!==-1;)this.session.rename++;return new me(x.format_variable(this.session.rename))},je.prototype.is_public_predicate=function(I){return!this.public_predicates.hasOwnProperty(I)||this.public_predicates[I]===!0},At.prototype.is_public_predicate=function(I){return this.session.is_public_predicate(I)},je.prototype.is_multifile_predicate=function(I){return this.multifile_predicates.hasOwnProperty(I)&&this.multifile_predicates[I]===!0},At.prototype.is_multifile_predicate=function(I){return this.session.is_multifile_predicate(I)},je.prototype.prepend=function(I){return this.thread.prepend(I)},At.prototype.prepend=function(I){for(var P=I.length-1;P>=0;P--)this.points.push(I[P])},je.prototype.success=function(I,P){return this.thread.success(I,P)},At.prototype.success=function(I,y){var y=typeof y>"u"?I:y;this.prepend([new Qe(I.goal.replace(null),I.substitution,y)])},je.prototype.throw_error=function(I){return this.thread.throw_error(I)},At.prototype.throw_error=function(I){this.prepend([new Qe(new H("throw",[I]),new Te,null,null)])},je.prototype.step_rule=function(I,P){return this.thread.step_rule(I,P)},At.prototype.step_rule=function(I,P){var y=P.indicator;if(I==="user"&&(I=null),I===null&&this.session.rules.hasOwnProperty(y))return this.session.rules[y];for(var F=I===null?this.session.modules:e(this.session.modules,I)===-1?[]:[I],z=0;z<F.length;z++){var X=x.module[F[z]];if(X.rules.hasOwnProperty(y)&&(X.rules.hasOwnProperty(this.level)||X.exports_predicate(y)))return x.module[F[z]].rules[y]}return null},je.prototype.step=function(){return this.thread.step()},At.prototype.step=function(){if(this.points.length!==0){var I=!1,P=this.points.pop();if(this.debugger&&this.debugger_states.push(P),x.type.is_term(P.goal)){var y=P.goal.select(),F=null,z=[];if(y!==null){this.total_steps++;for(var X=P;X.parent!==null&&X.parent.goal.search(y);)X=X.parent;if(this.level=X.parent===null?"top_level/0":X.parent.goal.select().indicator,x.type.is_term(y)&&y.indicator===":/2"&&(F=y.args[0].id,y=y.args[1]),F===null&&x.type.is_builtin(y))this.__call_indicator=y.indicator,I=x.predicate[y.indicator](this,P,y);else{var $=this.step_rule(F,y);if($===null)this.session.rules.hasOwnProperty(y.indicator)||(this.get_flag("unknown").id==="error"?this.throw_error(x.error.existence("procedure",y.indicator,this.level)):this.get_flag("unknown").id==="warning"&&this.throw_warning("unknown procedure "+y.indicator+" (from "+this.level+")"));else if($ instanceof Function)I=$(this,P,y);else{for(var ie in $)if(!!$.hasOwnProperty(ie)){var ke=$[ie];this.session.renamed_variables={},ke=ke.rename(this);var Ne=this.get_flag("occurs_check").indicator==="true/0",st=new Qe,ht=x.unify(y,ke.head,Ne);ht!==null&&(st.goal=P.goal.replace(ke.body),st.goal!==null&&(st.goal=st.goal.apply(ht)),st.substitution=P.substitution.apply(ht),st.parent=P,z.push(st))}this.prepend(z)}}}}else x.type.is_variable(P.goal)?this.throw_error(x.error.instantiation(this.level)):this.throw_error(x.error.type("callable",P.goal,this.level));return I}},je.prototype.answer=function(I){return this.thread.answer(I)},At.prototype.answer=function(I){I=I||function(P){},this.__calls.push(I),!(this.__calls.length>1)&&this.again()},je.prototype.answers=function(I,P,y){return this.thread.answers(I,P,y)},At.prototype.answers=function(I,P,y){var F=P||1e3,z=this;if(P<=0){y&&y();return}this.answer(function(X){I(X),X!==!1?setTimeout(function(){z.answers(I,P-1,y)},1):y&&y()})},je.prototype.again=function(I){return this.thread.again(I)},At.prototype.again=function(I){for(var P,y=Date.now();this.__calls.length>0;){for(this.warnings=[],I!==!1&&(this.current_limit=this.session.limit);this.current_limit>0&&this.points.length>0&&this.head_point().goal!==null&&!x.type.is_error(this.head_point().goal);)if(this.current_limit--,this.step()===!0)return;var F=Date.now();this.cpu_time_last=F-y,this.cpu_time+=this.cpu_time_last;var z=this.__calls.shift();this.current_limit<=0?z(null):this.points.length===0?z(!1):x.type.is_error(this.head_point().goal)?(P=this.session.format_error(this.points.pop()),this.points=[],z(P)):(this.debugger&&this.debugger_states.push(this.head_point()),P=this.session.format_success(this.points.pop()),z(P))}},je.prototype.unfold=function(I){if(I.body===null)return!1;var P=I.head,y=I.body,F=y.select(),z=new At(this),X=[];z.add_goal(F),z.step();for(var $=z.points.length-1;$>=0;$--){var ie=z.points[$],ke=P.apply(ie.substitution),Ne=y.replace(ie.goal);Ne!==null&&(Ne=Ne.apply(ie.substitution)),X.push(new Ue(ke,Ne))}var st=this.rules[P.indicator],ht=e(st,I);return X.length>0&&ht!==-1?(st.splice.apply(st,[ht,1].concat(X)),!0):!1},At.prototype.unfold=function(I){return this.session.unfold(I)},me.prototype.interpret=function(I){return x.error.instantiation(I.level)},be.prototype.interpret=function(I){return this},H.prototype.interpret=function(I){return x.type.is_unitary_list(this)?this.args[0].interpret(I):x.operate(I,this)},me.prototype.compare=function(I){return this.id<I.id?-1:this.id>I.id?1:0},be.prototype.compare=function(I){if(this.value===I.value&&this.is_float===I.is_float)return 0;if(this.value<I.value||this.value===I.value&&this.is_float&&!I.is_float)return-1;if(this.value>I.value)return 1},H.prototype.compare=function(I){if(this.args.length<I.args.length||this.args.length===I.args.length&&this.id<I.id)return-1;if(this.args.length>I.args.length||this.args.length===I.args.length&&this.id>I.id)return 1;for(var P=0;P<this.args.length;P++){var y=x.compare(this.args[P],I.args[P]);if(y!==0)return y}return 0},Te.prototype.lookup=function(I){return this.links[I]?this.links[I]:null},Te.prototype.filter=function(I){var P={};for(var y in this.links)if(!!this.links.hasOwnProperty(y)){var F=this.links[y];I(y,F)&&(P[y]=F)}return new Te(P)},Te.prototype.exclude=function(I){var P={};for(var y in this.links)!this.links.hasOwnProperty(y)||e(I,y)===-1&&(P[y]=this.links[y]);return new Te(P)},Te.prototype.add=function(I,P){this.links[I]=P},Te.prototype.domain=function(I){var P=I===!0?function(z){return z}:function(z){return new me(z)},y=[];for(var F in this.links)y.push(P(F));return y},me.prototype.compile=function(){return'new pl.type.Var("'+this.id.toString()+'")'},be.prototype.compile=function(){return"new pl.type.Num("+this.value.toString()+", "+this.is_float.toString()+")"},H.prototype.compile=function(){return'new pl.type.Term("'+this.id.replace(/"/g,'\\"')+'", ['+o(this.args,function(I){return I.compile()})+"])"},Ue.prototype.compile=function(){return"new pl.type.Rule("+this.head.compile()+", "+(this.body===null?"null":this.body.compile())+")"},je.prototype.compile=function(){var I,P=[],y;for(var F in this.rules)if(!!this.rules.hasOwnProperty(F)){var z=this.rules[F];y=[],I='"'+F+'": [';for(var X=0;X<z.length;X++)y.push(z[X].compile());I+=y.join(),I+="]",P.push(I)}return"{"+P.join()+"};"},me.prototype.toJavaScript=function(){},be.prototype.toJavaScript=function(){return this.value},H.prototype.toJavaScript=function(){if(this.args.length===0&&this.indicator!=="[]/0")return this.id;if(x.type.is_list(this)){for(var I=[],P=this,y;P.indicator==="./2";){if(y=P.args[0].toJavaScript(),y===void 0)return;I.push(y),P=P.args[1]}if(P.indicator==="[]/0")return I}},Ue.prototype.singleton_variables=function(){var I=this.head.variables(),P={},y=[];this.body!==null&&(I=I.concat(this.body.variables()));for(var F=0;F<I.length;F++)P[I[F]]===void 0&&(P[I[F]]=0),P[I[F]]++;for(var z in P)z!=="_"&&P[z]===1&&y.push(z);return y};var x={__env:typeof pl<"u"&&pl.exports?global:window,module:{},version:t,parser:{tokenizer:_,expression:J},utils:{str_indicator:Z,codePointAt:n,fromCodePoint:u},statistics:{getCountTerms:function(){return ut}},fromJavaScript:{test:{boolean:function(I){return I===!0||I===!1},number:function(I){return typeof I=="number"},string:function(I){return typeof I=="string"},list:function(I){return I instanceof Array},variable:function(I){return I===void 0},any:function(I){return!0}},conversion:{boolean:function(I){return new H(I?"true":"false",[])},number:function(I){return new be(I,I%1!==0)},string:function(I){return new H(I,[])},list:function(I){for(var P=[],y,F=0;F<I.length;F++){if(y=x.fromJavaScript.apply(I[F]),y===void 0)return;P.push(y)}return g(P)},variable:function(I){return new me("_")},any:function(I){}},apply:function(I){for(var P in x.fromJavaScript.test)if(P!=="any"&&x.fromJavaScript.test[P](I))return x.fromJavaScript.conversion[P](I);return x.fromJavaScript.conversion.any(I)}},type:{Var:me,Num:be,Term:H,Rule:Ue,State:Qe,Stream:Me,Module:Le,Thread:At,Session:je,Substitution:Te,order:[me,be,H,Me],compare:function(I,P){var y=e(x.type.order,I.constructor),F=e(x.type.order,P.constructor);if(y<F)return-1;if(y>F)return 1;if(I.constructor===be){if(I.is_float&&P.is_float)return 0;if(I.is_float)return-1;if(P.is_float)return 1}return 0},is_substitution:function(I){return I instanceof Te},is_state:function(I){return I instanceof Qe},is_rule:function(I){return I instanceof Ue},is_variable:function(I){return I instanceof me},is_stream:function(I){return I instanceof Me},is_anonymous_var:function(I){return I instanceof me&&I.id==="_"},is_callable:function(I){return I instanceof H},is_number:function(I){return I instanceof be},is_integer:function(I){return I instanceof be&&!I.is_float},is_float:function(I){return I instanceof be&&I.is_float},is_term:function(I){return I instanceof H},is_atom:function(I){return I instanceof H&&I.args.length===0},is_ground:function(I){if(I instanceof me)return!1;if(I instanceof H){for(var P=0;P<I.args.length;P++)if(!x.type.is_ground(I.args[P]))return!1}return!0},is_atomic:function(I){return I instanceof H&&I.args.length===0||I instanceof be},is_compound:function(I){return I instanceof H&&I.args.length>0},is_list:function(I){return I instanceof H&&(I.indicator==="[]/0"||I.indicator==="./2")},is_empty_list:function(I){return I instanceof H&&I.indicator==="[]/0"},is_non_empty_list:function(I){return I instanceof H&&I.indicator==="./2"},is_fully_list:function(I){for(;I instanceof H&&I.indicator==="./2";)I=I.args[1];return I instanceof me||I instanceof H&&I.indicator==="[]/0"},is_instantiated_list:function(I){for(;I instanceof H&&I.indicator==="./2";)I=I.args[1];return I instanceof H&&I.indicator==="[]/0"},is_unitary_list:function(I){return I instanceof H&&I.indicator==="./2"&&I.args[1]instanceof H&&I.args[1].indicator==="[]/0"},is_character:function(I){return I instanceof H&&(I.id.length===1||I.id.length>0&&I.id.length<=2&&n(I.id,0)>=65536)},is_character_code:function(I){return I instanceof be&&!I.is_float&&I.value>=0&&I.value<=1114111},is_byte:function(I){return I instanceof be&&!I.is_float&&I.value>=0&&I.value<=255},is_operator:function(I){return I instanceof H&&x.arithmetic.evaluation[I.indicator]},is_directive:function(I){return I instanceof H&&x.directive[I.indicator]!==void 0},is_builtin:function(I){return I instanceof H&&x.predicate[I.indicator]!==void 0},is_error:function(I){return I instanceof H&&I.indicator==="throw/1"},is_predicate_indicator:function(I){return I instanceof H&&I.indicator==="//2"&&I.args[0]instanceof H&&I.args[0].args.length===0&&I.args[1]instanceof be&&I.args[1].is_float===!1},is_flag:function(I){return I instanceof H&&I.args.length===0&&x.flag[I.id]!==void 0},is_value_flag:function(I,P){if(!x.type.is_flag(I))return!1;for(var y in x.flag[I.id].allowed)if(!!x.flag[I.id].allowed.hasOwnProperty(y)&&x.flag[I.id].allowed[y].equals(P))return!0;return!1},is_io_mode:function(I){return x.type.is_atom(I)&&["read","write","append"].indexOf(I.id)!==-1},is_stream_option:function(I){return x.type.is_term(I)&&(I.indicator==="alias/1"&&x.type.is_atom(I.args[0])||I.indicator==="reposition/1"&&x.type.is_atom(I.args[0])&&(I.args[0].id==="true"||I.args[0].id==="false")||I.indicator==="type/1"&&x.type.is_atom(I.args[0])&&(I.args[0].id==="text"||I.args[0].id==="binary")||I.indicator==="eof_action/1"&&x.type.is_atom(I.args[0])&&(I.args[0].id==="error"||I.args[0].id==="eof_code"||I.args[0].id==="reset"))},is_stream_position:function(I){return x.type.is_integer(I)&&I.value>=0||x.type.is_atom(I)&&(I.id==="end_of_stream"||I.id==="past_end_of_stream")},is_stream_property:function(I){return x.type.is_term(I)&&(I.indicator==="input/0"||I.indicator==="output/0"||I.indicator==="alias/1"&&(x.type.is_variable(I.args[0])||x.type.is_atom(I.args[0]))||I.indicator==="file_name/1"&&(x.type.is_variable(I.args[0])||x.type.is_atom(I.args[0]))||I.indicator==="position/1"&&(x.type.is_variable(I.args[0])||x.type.is_stream_position(I.args[0]))||I.indicator==="reposition/1"&&(x.type.is_variable(I.args[0])||x.type.is_atom(I.args[0])&&(I.args[0].id==="true"||I.args[0].id==="false"))||I.indicator==="type/1"&&(x.type.is_variable(I.args[0])||x.type.is_atom(I.args[0])&&(I.args[0].id==="text"||I.args[0].id==="binary"))||I.indicator==="mode/1"&&(x.type.is_variable(I.args[0])||x.type.is_atom(I.args[0])&&(I.args[0].id==="read"||I.args[0].id==="write"||I.args[0].id==="append"))||I.indicator==="eof_action/1"&&(x.type.is_variable(I.args[0])||x.type.is_atom(I.args[0])&&(I.args[0].id==="error"||I.args[0].id==="eof_code"||I.args[0].id==="reset"))||I.indicator==="end_of_stream/1"&&(x.type.is_variable(I.args[0])||x.type.is_atom(I.args[0])&&(I.args[0].id==="at"||I.args[0].id==="past"||I.args[0].id==="not")))},is_streamable:function(I){return I.__proto__.stream!==void 0},is_read_option:function(I){return x.type.is_term(I)&&["variables/1","variable_names/1","singletons/1"].indexOf(I.indicator)!==-1},is_write_option:function(I){return x.type.is_term(I)&&(I.indicator==="quoted/1"&&x.type.is_atom(I.args[0])&&(I.args[0].id==="true"||I.args[0].id==="false")||I.indicator==="ignore_ops/1"&&x.type.is_atom(I.args[0])&&(I.args[0].id==="true"||I.args[0].id==="false")||I.indicator==="numbervars/1"&&x.type.is_atom(I.args[0])&&(I.args[0].id==="true"||I.args[0].id==="false"))},is_close_option:function(I){return x.type.is_term(I)&&I.indicator==="force/1"&&x.type.is_atom(I.args[0])&&(I.args[0].id==="true"||I.args[0].id==="false")},is_modifiable_flag:function(I){return x.type.is_flag(I)&&x.flag[I.id].changeable},is_module:function(I){return I instanceof H&&I.indicator==="library/1"&&I.args[0]instanceof H&&I.args[0].args.length===0&&x.module[I.args[0].id]!==void 0}},arithmetic:{evaluation:{"e/0":{type_args:null,type_result:!0,fn:function(I){return Math.E}},"pi/0":{type_args:null,type_result:!0,fn:function(I){return Math.PI}},"tau/0":{type_args:null,type_result:!0,fn:function(I){return 2*Math.PI}},"epsilon/0":{type_args:null,type_result:!0,fn:function(I){return Number.EPSILON}},"+/1":{type_args:null,type_result:null,fn:function(I,P){return I}},"-/1":{type_args:null,type_result:null,fn:function(I,P){return-I}},"\\/1":{type_args:!1,type_result:!1,fn:function(I,P){return~I}},"abs/1":{type_args:null,type_result:null,fn:function(I,P){return Math.abs(I)}},"sign/1":{type_args:null,type_result:null,fn:function(I,P){return Math.sign(I)}},"float_integer_part/1":{type_args:!0,type_result:!1,fn:function(I,P){return parseInt(I)}},"float_fractional_part/1":{type_args:!0,type_result:!0,fn:function(I,P){return I-parseInt(I)}},"float/1":{type_args:null,type_result:!0,fn:function(I,P){return parseFloat(I)}},"floor/1":{type_args:!0,type_result:!1,fn:function(I,P){return Math.floor(I)}},"truncate/1":{type_args:!0,type_result:!1,fn:function(I,P){return parseInt(I)}},"round/1":{type_args:!0,type_result:!1,fn:function(I,P){return Math.round(I)}},"ceiling/1":{type_args:!0,type_result:!1,fn:function(I,P){return Math.ceil(I)}},"sin/1":{type_args:null,type_result:!0,fn:function(I,P){return Math.sin(I)}},"cos/1":{type_args:null,type_result:!0,fn:function(I,P){return Math.cos(I)}},"tan/1":{type_args:null,type_result:!0,fn:function(I,P){return Math.tan(I)}},"asin/1":{type_args:null,type_result:!0,fn:function(I,P){return Math.asin(I)}},"acos/1":{type_args:null,type_result:!0,fn:function(I,P){return Math.acos(I)}},"atan/1":{type_args:null,type_result:!0,fn:function(I,P){return Math.atan(I)}},"atan2/2":{type_args:null,type_result:!0,fn:function(I,P,y){return Math.atan2(I,P)}},"exp/1":{type_args:null,type_result:!0,fn:function(I,P){return Math.exp(I)}},"sqrt/1":{type_args:null,type_result:!0,fn:function(I,P){return Math.sqrt(I)}},"log/1":{type_args:null,type_result:!0,fn:function(I,P){return I>0?Math.log(I):x.error.evaluation("undefined",P.__call_indicator)}},"+/2":{type_args:null,type_result:null,fn:function(I,P,y){return I+P}},"-/2":{type_args:null,type_result:null,fn:function(I,P,y){return I-P}},"*/2":{type_args:null,type_result:null,fn:function(I,P,y){return I*P}},"//2":{type_args:null,type_result:!0,fn:function(I,P,y){return P?I/P:x.error.evaluation("zero_division",y.__call_indicator)}},"///2":{type_args:!1,type_result:!1,fn:function(I,P,y){return P?parseInt(I/P):x.error.evaluation("zero_division",y.__call_indicator)}},"**/2":{type_args:null,type_result:!0,fn:function(I,P,y){return Math.pow(I,P)}},"^/2":{type_args:null,type_result:null,fn:function(I,P,y){return Math.pow(I,P)}},"<</2":{type_args:!1,type_result:!1,fn:function(I,P,y){return I<<P}},">>/2":{type_args:!1,type_result:!1,fn:function(I,P,y){return I>>P}},"/\\/2":{type_args:!1,type_result:!1,fn:function(I,P,y){return I&P}},"\\//2":{type_args:!1,type_result:!1,fn:function(I,P,y){return I|P}},"xor/2":{type_args:!1,type_result:!1,fn:function(I,P,y){return I^P}},"rem/2":{type_args:!1,type_result:!1,fn:function(I,P,y){return P?I%P:x.error.evaluation("zero_division",y.__call_indicator)}},"mod/2":{type_args:!1,type_result:!1,fn:function(I,P,y){return P?I-parseInt(I/P)*P:x.error.evaluation("zero_division",y.__call_indicator)}},"max/2":{type_args:null,type_result:null,fn:function(I,P,y){return Math.max(I,P)}},"min/2":{type_args:null,type_result:null,fn:function(I,P,y){return Math.min(I,P)}}}},directive:{"dynamic/1":function(I,P){var y=P.args[0];if(x.type.is_variable(y))I.throw_error(x.error.instantiation(P.indicator));else if(!x.type.is_compound(y)||y.indicator!=="//2")I.throw_error(x.error.type("predicate_indicator",y,P.indicator));else if(x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1]))I.throw_error(x.error.instantiation(P.indicator));else if(!x.type.is_atom(y.args[0]))I.throw_error(x.error.type("atom",y.args[0],P.indicator));else if(!x.type.is_integer(y.args[1]))I.throw_error(x.error.type("integer",y.args[1],P.indicator));else{var F=P.args[0].args[0].id+"/"+P.args[0].args[1].value;I.session.public_predicates[F]=!0,I.session.rules[F]||(I.session.rules[F]=[])}},"multifile/1":function(I,P){var y=P.args[0];x.type.is_variable(y)?I.throw_error(x.error.instantiation(P.indicator)):!x.type.is_compound(y)||y.indicator!=="//2"?I.throw_error(x.error.type("predicate_indicator",y,P.indicator)):x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1])?I.throw_error(x.error.instantiation(P.indicator)):x.type.is_atom(y.args[0])?x.type.is_integer(y.args[1])?I.session.multifile_predicates[P.args[0].args[0].id+"/"+P.args[0].args[1].value]=!0:I.throw_error(x.error.type("integer",y.args[1],P.indicator)):I.throw_error(x.error.type("atom",y.args[0],P.indicator))},"set_prolog_flag/2":function(I,P){var y=P.args[0],F=P.args[1];x.type.is_variable(y)||x.type.is_variable(F)?I.throw_error(x.error.instantiation(P.indicator)):x.type.is_atom(y)?x.type.is_flag(y)?x.type.is_value_flag(y,F)?x.type.is_modifiable_flag(y)?I.session.flag[y.id]=F:I.throw_error(x.error.permission("modify","flag",y)):I.throw_error(x.error.domain("flag_value",new H("+",[y,F]),P.indicator)):I.throw_error(x.error.domain("prolog_flag",y,P.indicator)):I.throw_error(x.error.type("atom",y,P.indicator))},"use_module/1":function(I,P){var y=P.args[0];if(x.type.is_variable(y))I.throw_error(x.error.instantiation(P.indicator));else if(!x.type.is_term(y))I.throw_error(x.error.type("term",y,P.indicator));else if(x.type.is_module(y)){var F=y.args[0].id;e(I.session.modules,F)===-1&&I.session.modules.push(F)}},"char_conversion/2":function(I,P){var y=P.args[0],F=P.args[1];x.type.is_variable(y)||x.type.is_variable(F)?I.throw_error(x.error.instantiation(P.indicator)):x.type.is_character(y)?x.type.is_character(F)?y.id===F.id?delete I.session.__char_conversion[y.id]:I.session.__char_conversion[y.id]=F.id:I.throw_error(x.error.type("character",F,P.indicator)):I.throw_error(x.error.type("character",y,P.indicator))},"op/3":function(I,P){var y=P.args[0],F=P.args[1],z=P.args[2];if(x.type.is_variable(y)||x.type.is_variable(F)||x.type.is_variable(z))I.throw_error(x.error.instantiation(P.indicator));else if(!x.type.is_integer(y))I.throw_error(x.error.type("integer",y,P.indicator));else if(!x.type.is_atom(F))I.throw_error(x.error.type("atom",F,P.indicator));else if(!x.type.is_atom(z))I.throw_error(x.error.type("atom",z,P.indicator));else if(y.value<0||y.value>1200)I.throw_error(x.error.domain("operator_priority",y,P.indicator));else if(z.id===",")I.throw_error(x.error.permission("modify","operator",z,P.indicator));else if(z.id==="|"&&(y.value<1001||F.id.length!==3))I.throw_error(x.error.permission("modify","operator",z,P.indicator));else if(["fy","fx","yf","xf","xfx","yfx","xfy"].indexOf(F.id)===-1)I.throw_error(x.error.domain("operator_specifier",F,P.indicator));else{var X={prefix:null,infix:null,postfix:null};for(var $ in I.session.__operators)if(!!I.session.__operators.hasOwnProperty($)){var ie=I.session.__operators[$][z.id];ie&&(e(ie,"fx")!==-1&&(X.prefix={priority:$,type:"fx"}),e(ie,"fy")!==-1&&(X.prefix={priority:$,type:"fy"}),e(ie,"xf")!==-1&&(X.postfix={priority:$,type:"xf"}),e(ie,"yf")!==-1&&(X.postfix={priority:$,type:"yf"}),e(ie,"xfx")!==-1&&(X.infix={priority:$,type:"xfx"}),e(ie,"xfy")!==-1&&(X.infix={priority:$,type:"xfy"}),e(ie,"yfx")!==-1&&(X.infix={priority:$,type:"yfx"}))}var ke;switch(F.id){case"fy":case"fx":ke="prefix";break;case"yf":case"xf":ke="postfix";break;default:ke="infix";break}if(((X.prefix&&ke==="prefix"||X.postfix&&ke==="postfix"||X.infix&&ke==="infix")&&X[ke].type!==F.id||X.infix&&ke==="postfix"||X.postfix&&ke==="infix")&&y.value!==0)I.throw_error(x.error.permission("create","operator",z,P.indicator));else return X[ke]&&(De(I.session.__operators[X[ke].priority][z.id],F.id),I.session.__operators[X[ke].priority][z.id].length===0&&delete I.session.__operators[X[ke].priority][z.id]),y.value>0&&(I.session.__operators[y.value]||(I.session.__operators[y.value.toString()]={}),I.session.__operators[y.value][z.id]||(I.session.__operators[y.value][z.id]=[]),I.session.__operators[y.value][z.id].push(F.id)),!0}}},predicate:{"op/3":function(I,P,y){x.directive["op/3"](I,y)&&I.success(P)},"current_op/3":function(I,P,y){var F=y.args[0],z=y.args[1],X=y.args[2],$=[];for(var ie in I.session.__operators)for(var ke in I.session.__operators[ie])for(var Ne=0;Ne<I.session.__operators[ie][ke].length;Ne++)$.push(new Qe(P.goal.replace(new H(",",[new H("=",[new be(ie,!1),F]),new H(",",[new H("=",[new H(I.session.__operators[ie][ke][Ne],[]),z]),new H("=",[new H(ke,[]),X])])])),P.substitution,P));I.prepend($)},";/2":function(I,P,y){if(x.type.is_term(y.args[0])&&y.args[0].indicator==="->/2"){var F=I.points,z=I.session.format_success,X=I.session.format_error;I.session.format_success=function(Ne){return Ne.substitution},I.session.format_error=function(Ne){return Ne.goal},I.points=[new Qe(y.args[0].args[0],P.substitution,P)];var $=function(Ne){I.points=F,I.session.format_success=z,I.session.format_error=X,Ne===!1?I.prepend([new Qe(P.goal.replace(y.args[1]),P.substitution,P)]):x.type.is_error(Ne)?I.throw_error(Ne.args[0]):Ne===null?(I.prepend([P]),I.__calls.shift()(null)):I.prepend([new Qe(P.goal.replace(y.args[0].args[1]).apply(Ne),P.substitution.apply(Ne),P)])};I.__calls.unshift($)}else{var ie=new Qe(P.goal.replace(y.args[0]),P.substitution,P),ke=new Qe(P.goal.replace(y.args[1]),P.substitution,P);I.prepend([ie,ke])}},"!/0":function(I,P,y){var F,z,X=[];for(F=P,z=null;F.parent!==null&&F.parent.goal.search(y);)if(z=F,F=F.parent,F.goal!==null){var $=F.goal.select();if($&&$.id==="call"&&$.search(y)){F=z;break}}for(var ie=I.points.length-1;ie>=0;ie--){for(var ke=I.points[ie],Ne=ke.parent;Ne!==null&&Ne!==F.parent;)Ne=Ne.parent;Ne===null&&Ne!==F.parent&&X.push(ke)}I.points=X.reverse(),I.success(P)},"\\+/1":function(I,P,y){var F=y.args[0];x.type.is_variable(F)?I.throw_error(x.error.instantiation(I.level)):x.type.is_callable(F)?I.prepend([new Qe(P.goal.replace(new H(",",[new H(",",[new H("call",[F]),new H("!",[])]),new H("fail",[])])),P.substitution,P),new Qe(P.goal.replace(null),P.substitution,P)]):I.throw_error(x.error.type("callable",F,I.level))},"->/2":function(I,P,y){var F=P.goal.replace(new H(",",[y.args[0],new H(",",[new H("!"),y.args[1]])]));I.prepend([new Qe(F,P.substitution,P)])},"fail/0":function(I,P,y){},"false/0":function(I,P,y){},"true/0":function(I,P,y){I.success(P)},"call/1":ne(1),"call/2":ne(2),"call/3":ne(3),"call/4":ne(4),"call/5":ne(5),"call/6":ne(6),"call/7":ne(7),"call/8":ne(8),"once/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("call",[F]),new H("!",[])])),P.substitution,P)])},"forall/2":function(I,P,y){var F=y.args[0],z=y.args[1];I.prepend([new Qe(P.goal.replace(new H("\\+",[new H(",",[new H("call",[F]),new H("\\+",[new H("call",[z])])])])),P.substitution,P)])},"repeat/0":function(I,P,y){I.prepend([new Qe(P.goal.replace(null),P.substitution,P),P])},"throw/1":function(I,P,y){x.type.is_variable(y.args[0])?I.throw_error(x.error.instantiation(I.level)):I.throw_error(y.args[0])},"catch/3":function(I,P,y){var F=I.points;I.points=[],I.prepend([new Qe(y.args[0],P.substitution,P)]);var z=I.session.format_success,X=I.session.format_error;I.session.format_success=function(ie){return ie.substitution},I.session.format_error=function(ie){return ie.goal};var $=function(ie){var ke=I.points;if(I.points=F,I.session.format_success=z,I.session.format_error=X,x.type.is_error(ie)){for(var Ne=[],st=I.points.length-1;st>=0;st--){for(var Xt=I.points[st],ht=Xt.parent;ht!==null&&ht!==P.parent;)ht=ht.parent;ht===null&&ht!==P.parent&&Ne.push(Xt)}I.points=Ne;var Ut=I.get_flag("occurs_check").indicator==="true/0",Xt=new Qe,Pt=x.unify(ie.args[0],y.args[1],Ut);Pt!==null?(Xt.substitution=P.substitution.apply(Pt),Xt.goal=P.goal.replace(y.args[2]).apply(Pt),Xt.parent=P,I.prepend([Xt])):I.throw_error(ie.args[0])}else if(ie!==!1){for(var tn=ie===null?[]:[new Qe(P.goal.apply(ie).replace(null),P.substitution.apply(ie),P)],Dr=[],st=ke.length-1;st>=0;st--){Dr.push(ke[st]);var fr=ke[st].goal!==null?ke[st].goal.select():null;if(x.type.is_term(fr)&&fr.indicator==="!/0")break}var Br=o(Dr,function(jr){return jr.goal===null&&(jr.goal=new H("true",[])),jr=new Qe(P.goal.replace(new H("catch",[jr.goal,y.args[1],y.args[2]])),P.substitution.apply(jr.substitution),jr.parent),jr.exclude=y.args[0].variables(),jr}).reverse();I.prepend(Br),I.prepend(tn),ie===null&&(this.current_limit=0,I.__calls.shift()(null))}};I.__calls.unshift($)},"=/2":function(I,P,y){var F=I.get_flag("occurs_check").indicator==="true/0",z=new Qe,X=x.unify(y.args[0],y.args[1],F);X!==null&&(z.goal=P.goal.apply(X).replace(null),z.substitution=P.substitution.apply(X),z.parent=P,I.prepend([z]))},"unify_with_occurs_check/2":function(I,P,y){var F=new Qe,z=x.unify(y.args[0],y.args[1],!0);z!==null&&(F.goal=P.goal.apply(z).replace(null),F.substitution=P.substitution.apply(z),F.parent=P,I.prepend([F]))},"\\=/2":function(I,P,y){var F=I.get_flag("occurs_check").indicator==="true/0",z=x.unify(y.args[0],y.args[1],F);z===null&&I.success(P)},"subsumes_term/2":function(I,P,y){var F=I.get_flag("occurs_check").indicator==="true/0",z=x.unify(y.args[1],y.args[0],F);z!==null&&y.args[1].apply(z).equals(y.args[1])&&I.success(P)},"findall/3":function(I,P,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(x.type.is_variable(z))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(z))I.throw_error(x.error.type("callable",z,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_list(X))I.throw_error(x.error.type("list",X,y.indicator));else{var $=I.next_free_variable(),ie=new H(",",[z,new H("=",[$,F])]),ke=I.points,Ne=I.session.limit,st=I.session.format_success;I.session.format_success=function(Xt){return Xt.substitution},I.add_goal(ie,!0,P);var ht=[],Ut=function(Xt){if(Xt!==!1&&Xt!==null&&!x.type.is_error(Xt))I.__calls.unshift(Ut),ht.push(Xt.links[$.id]),I.session.limit=I.current_limit;else if(I.points=ke,I.session.limit=Ne,I.session.format_success=st,x.type.is_error(Xt))I.throw_error(Xt.args[0]);else if(I.current_limit>0){for(var Pt=new H("[]"),tn=ht.length-1;tn>=0;tn--)Pt=new H(".",[ht[tn],Pt]);I.prepend([new Qe(P.goal.replace(new H("=",[X,Pt])),P.substitution,P)])}};I.__calls.unshift(Ut)}},"bagof/3":function(I,P,y){var F,z=y.args[0],X=y.args[1],$=y.args[2];if(x.type.is_variable(X))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(X))I.throw_error(x.error.type("callable",X,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_list($))I.throw_error(x.error.type("list",$,y.indicator));else{var ie=I.next_free_variable(),ke;X.indicator==="^/2"?(ke=X.args[0].variables(),X=X.args[1]):ke=[],ke=ke.concat(z.variables());for(var Ne=X.variables().filter(function(Br){return e(ke,Br)===-1}),st=new H("[]"),ht=Ne.length-1;ht>=0;ht--)st=new H(".",[new me(Ne[ht]),st]);var Ut=new H(",",[X,new H("=",[ie,new H(",",[st,z])])]),Xt=I.points,Pt=I.session.limit,tn=I.session.format_success;I.session.format_success=function(Br){return Br.substitution},I.add_goal(Ut,!0,P);var Dr=[],fr=function(Br){if(Br!==!1&&Br!==null&&!x.type.is_error(Br)){I.__calls.unshift(fr);var jr=!1,Hn=Br.links[ie.id].args[0],bs=Br.links[ie.id].args[1];for(var ki in Dr)if(!!Dr.hasOwnProperty(ki)){var gs=Dr[ki];if(gs.variables.equals(Hn)){gs.answers.push(bs),jr=!0;break}}jr||Dr.push({variables:Hn,answers:[bs]}),I.session.limit=I.current_limit}else if(I.points=Xt,I.session.limit=Pt,I.session.format_success=tn,x.type.is_error(Br))I.throw_error(Br.args[0]);else if(I.current_limit>0){for(var to=[],Di=0;Di<Dr.length;Di++){Br=Dr[Di].answers;for(var Qs=new H("[]"),ro=Br.length-1;ro>=0;ro--)Qs=new H(".",[Br[ro],Qs]);to.push(new Qe(P.goal.replace(new H(",",[new H("=",[st,Dr[Di].variables]),new H("=",[$,Qs])])),P.substitution,P))}I.prepend(to)}};I.__calls.unshift(fr)}},"setof/3":function(I,P,y){var F,z=y.args[0],X=y.args[1],$=y.args[2];if(x.type.is_variable(X))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(X))I.throw_error(x.error.type("callable",X,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_list($))I.throw_error(x.error.type("list",$,y.indicator));else{var ie=I.next_free_variable(),ke;X.indicator==="^/2"?(ke=X.args[0].variables(),X=X.args[1]):ke=[],ke=ke.concat(z.variables());for(var Ne=X.variables().filter(function(Br){return e(ke,Br)===-1}),st=new H("[]"),ht=Ne.length-1;ht>=0;ht--)st=new H(".",[new me(Ne[ht]),st]);var Ut=new H(",",[X,new H("=",[ie,new H(",",[st,z])])]),Xt=I.points,Pt=I.session.limit,tn=I.session.format_success;I.session.format_success=function(Br){return Br.substitution},I.add_goal(Ut,!0,P);var Dr=[],fr=function(Br){if(Br!==!1&&Br!==null&&!x.type.is_error(Br)){I.__calls.unshift(fr);var jr=!1,Hn=Br.links[ie.id].args[0],bs=Br.links[ie.id].args[1];for(var ki in Dr)if(!!Dr.hasOwnProperty(ki)){var gs=Dr[ki];if(gs.variables.equals(Hn)){gs.answers.push(bs),jr=!0;break}}jr||Dr.push({variables:Hn,answers:[bs]}),I.session.limit=I.current_limit}else if(I.points=Xt,I.session.limit=Pt,I.session.format_success=tn,x.type.is_error(Br))I.throw_error(Br.args[0]);else if(I.current_limit>0){for(var to=[],Di=0;Di<Dr.length;Di++){Br=Dr[Di].answers.sort(x.compare);for(var Qs=new H("[]"),ro=Br.length-1;ro>=0;ro--)Qs=new H(".",[Br[ro],Qs]);to.push(new Qe(P.goal.replace(new H(",",[new H("=",[st,Dr[Di].variables]),new H("=",[$,Qs])])),P.substitution,P))}I.prepend(to)}};I.__calls.unshift(fr)}},"functor/3":function(I,P,y){var F,z=y.args[0],X=y.args[1],$=y.args[2];if(x.type.is_variable(z)&&(x.type.is_variable(X)||x.type.is_variable($)))I.throw_error(x.error.instantiation("functor/3"));else if(!x.type.is_variable($)&&!x.type.is_integer($))I.throw_error(x.error.type("integer",y.args[2],"functor/3"));else if(!x.type.is_variable(X)&&!x.type.is_atomic(X))I.throw_error(x.error.type("atomic",y.args[1],"functor/3"));else if(x.type.is_integer(X)&&x.type.is_integer($)&&$.value!==0)I.throw_error(x.error.type("atom",y.args[1],"functor/3"));else if(x.type.is_variable(z)){if(y.args[2].value>=0){for(var ie=[],ke=0;ke<$.value;ke++)ie.push(I.next_free_variable());var Ne=x.type.is_integer(X)?X:new H(X.id,ie);I.prepend([new Qe(P.goal.replace(new H("=",[z,Ne])),P.substitution,P)])}}else{var st=x.type.is_integer(z)?z:new H(z.id,[]),ht=x.type.is_integer(z)?new be(0,!1):new be(z.args.length,!1),Ut=new H(",",[new H("=",[st,X]),new H("=",[ht,$])]);I.prepend([new Qe(P.goal.replace(Ut),P.substitution,P)])}},"arg/3":function(I,P,y){if(x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1]))I.throw_error(x.error.instantiation(y.indicator));else if(y.args[0].value<0)I.throw_error(x.error.domain("not_less_than_zero",y.args[0],y.indicator));else if(!x.type.is_compound(y.args[1]))I.throw_error(x.error.type("compound",y.args[1],y.indicator));else{var F=y.args[0].value;if(F>0&&F<=y.args[1].args.length){var z=new H("=",[y.args[1].args[F-1],y.args[2]]);I.prepend([new Qe(P.goal.replace(z),P.substitution,P)])}}},"=../2":function(I,P,y){var F;if(x.type.is_variable(y.args[0])&&(x.type.is_variable(y.args[1])||x.type.is_non_empty_list(y.args[1])&&x.type.is_variable(y.args[1].args[0])))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_fully_list(y.args[1]))I.throw_error(x.error.type("list",y.args[1],y.indicator));else if(x.type.is_variable(y.args[0])){if(!x.type.is_variable(y.args[1])){var X=[];for(F=y.args[1].args[1];F.indicator==="./2";)X.push(F.args[0]),F=F.args[1];x.type.is_variable(y.args[0])&&x.type.is_variable(F)?I.throw_error(x.error.instantiation(y.indicator)):X.length===0&&x.type.is_compound(y.args[1].args[0])?I.throw_error(x.error.type("atomic",y.args[1].args[0],y.indicator)):X.length>0&&(x.type.is_compound(y.args[1].args[0])||x.type.is_number(y.args[1].args[0]))?I.throw_error(x.error.type("atom",y.args[1].args[0],y.indicator)):X.length===0?I.prepend([new Qe(P.goal.replace(new H("=",[y.args[1].args[0],y.args[0]],P)),P.substitution,P)]):I.prepend([new Qe(P.goal.replace(new H("=",[new H(y.args[1].args[0].id,X),y.args[0]])),P.substitution,P)])}}else{if(x.type.is_atomic(y.args[0]))F=new H(".",[y.args[0],new H("[]")]);else{F=new H("[]");for(var z=y.args[0].args.length-1;z>=0;z--)F=new H(".",[y.args[0].args[z],F]);F=new H(".",[new H(y.args[0].id),F])}I.prepend([new Qe(P.goal.replace(new H("=",[F,y.args[1]])),P.substitution,P)])}},"copy_term/2":function(I,P,y){var F=y.args[0].rename(I);I.prepend([new Qe(P.goal.replace(new H("=",[F,y.args[1]])),P.substitution,P.parent)])},"term_variables/2":function(I,P,y){var F=y.args[0],z=y.args[1];if(!x.type.is_fully_list(z))I.throw_error(x.error.type("list",z,y.indicator));else{var X=g(o(Ee(F.variables()),function($){return new me($)}));I.prepend([new Qe(P.goal.replace(new H("=",[z,X])),P.substitution,P)])}},"clause/2":function(I,P,y){if(x.type.is_variable(y.args[0]))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))I.throw_error(x.error.type("callable",y.args[0],y.indicator));else if(!x.type.is_variable(y.args[1])&&!x.type.is_callable(y.args[1]))I.throw_error(x.error.type("callable",y.args[1],y.indicator));else if(I.session.rules[y.args[0].indicator]!==void 0)if(I.is_public_predicate(y.args[0].indicator)){var F=[];for(var z in I.session.rules[y.args[0].indicator])if(!!I.session.rules[y.args[0].indicator].hasOwnProperty(z)){var X=I.session.rules[y.args[0].indicator][z];I.session.renamed_variables={},X=X.rename(I),X.body===null&&(X.body=new H("true"));var $=new H(",",[new H("=",[X.head,y.args[0]]),new H("=",[X.body,y.args[1]])]);F.push(new Qe(P.goal.replace($),P.substitution,P))}I.prepend(F)}else I.throw_error(x.error.permission("access","private_procedure",y.args[0].indicator,y.indicator))},"current_predicate/1":function(I,P,y){var F=y.args[0];if(!x.type.is_variable(F)&&(!x.type.is_compound(F)||F.indicator!=="//2"))I.throw_error(x.error.type("predicate_indicator",F,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_variable(F.args[0])&&!x.type.is_atom(F.args[0]))I.throw_error(x.error.type("atom",F.args[0],y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_variable(F.args[1])&&!x.type.is_integer(F.args[1]))I.throw_error(x.error.type("integer",F.args[1],y.indicator));else{var z=[];for(var X in I.session.rules)if(!!I.session.rules.hasOwnProperty(X)){var $=X.lastIndexOf("/"),ie=X.substr(0,$),ke=parseInt(X.substr($+1,X.length-($+1))),Ne=new H("/",[new H(ie),new be(ke,!1)]),st=new H("=",[Ne,F]);z.push(new Qe(P.goal.replace(st),P.substitution,P))}I.prepend(z)}},"asserta/1":function(I,P,y){if(x.type.is_variable(y.args[0]))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))I.throw_error(x.error.type("callable",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=Pe(y.args[0].args[1])):(F=y.args[0],z=null),x.type.is_callable(F)?z!==null&&!x.type.is_callable(z)?I.throw_error(x.error.type("callable",z,y.indicator)):I.is_public_predicate(F.indicator)?(I.session.rules[F.indicator]===void 0&&(I.session.rules[F.indicator]=[]),I.session.public_predicates[F.indicator]=!0,I.session.rules[F.indicator]=[new Ue(F,z,!0)].concat(I.session.rules[F.indicator]),I.success(P)):I.throw_error(x.error.permission("modify","static_procedure",F.indicator,y.indicator)):I.throw_error(x.error.type("callable",F,y.indicator))}},"assertz/1":function(I,P,y){if(x.type.is_variable(y.args[0]))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))I.throw_error(x.error.type("callable",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=Pe(y.args[0].args[1])):(F=y.args[0],z=null),x.type.is_callable(F)?z!==null&&!x.type.is_callable(z)?I.throw_error(x.error.type("callable",z,y.indicator)):I.is_public_predicate(F.indicator)?(I.session.rules[F.indicator]===void 0&&(I.session.rules[F.indicator]=[]),I.session.public_predicates[F.indicator]=!0,I.session.rules[F.indicator].push(new Ue(F,z,!0)),I.success(P)):I.throw_error(x.error.permission("modify","static_procedure",F.indicator,y.indicator)):I.throw_error(x.error.type("callable",F,y.indicator))}},"retract/1":function(I,P,y){if(x.type.is_variable(y.args[0]))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))I.throw_error(x.error.type("callable",y.args[0],y.indicator));else{var F,z;if(y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=y.args[0].args[1]):(F=y.args[0],z=new H("true")),typeof P.retract>"u")if(I.is_public_predicate(F.indicator)){if(I.session.rules[F.indicator]!==void 0){for(var X=[],$=0;$<I.session.rules[F.indicator].length;$++){I.session.renamed_variables={};var ie=I.session.rules[F.indicator][$],ke=ie.rename(I);ke.body===null&&(ke.body=new H("true",[]));var Ne=I.get_flag("occurs_check").indicator==="true/0",st=x.unify(new H(",",[F,z]),new H(",",[ke.head,ke.body]),Ne);if(st!==null){var ht=new Qe(P.goal.replace(new H(",",[new H("retract",[new H(":-",[F,z])]),new H(",",[new H("=",[F,ke.head]),new H("=",[z,ke.body])])])),P.substitution,P);ht.retract=ie,X.push(ht)}}I.prepend(X)}}else I.throw_error(x.error.permission("modify","static_procedure",F.indicator,y.indicator));else de(I,P,F.indicator,P.retract)}},"retractall/1":function(I,P,y){var F=y.args[0];x.type.is_variable(F)?I.throw_error(x.error.instantiation(y.indicator)):x.type.is_callable(F)?I.prepend([new Qe(P.goal.replace(new H(",",[new H("retract",[new x.type.Term(":-",[F,new me("_")])]),new H("fail",[])])),P.substitution,P),new Qe(P.goal.replace(null),P.substitution,P)]):I.throw_error(x.error.type("callable",F,y.indicator))},"abolish/1":function(I,P,y){if(x.type.is_variable(y.args[0])||x.type.is_term(y.args[0])&&y.args[0].indicator==="//2"&&(x.type.is_variable(y.args[0].args[0])||x.type.is_variable(y.args[0].args[1])))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_term(y.args[0])||y.args[0].indicator!=="//2")I.throw_error(x.error.type("predicate_indicator",y.args[0],y.indicator));else if(!x.type.is_atom(y.args[0].args[0]))I.throw_error(x.error.type("atom",y.args[0].args[0],y.indicator));else if(!x.type.is_integer(y.args[0].args[1]))I.throw_error(x.error.type("integer",y.args[0].args[1],y.indicator));else if(y.args[0].args[1].value<0)I.throw_error(x.error.domain("not_less_than_zero",y.args[0].args[1],y.indicator));else if(x.type.is_number(I.get_flag("max_arity"))&&y.args[0].args[1].value>I.get_flag("max_arity").value)I.throw_error(x.error.representation("max_arity",y.indicator));else{var F=y.args[0].args[0].id+"/"+y.args[0].args[1].value;I.is_public_predicate(F)?(delete I.session.rules[F],I.success(P)):I.throw_error(x.error.permission("modify","static_procedure",F,y.indicator))}},"atom_length/2":function(I,P,y){if(x.type.is_variable(y.args[0]))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_atom(y.args[0]))I.throw_error(x.error.type("atom",y.args[0],y.indicator));else if(!x.type.is_variable(y.args[1])&&!x.type.is_integer(y.args[1]))I.throw_error(x.error.type("integer",y.args[1],y.indicator));else if(x.type.is_integer(y.args[1])&&y.args[1].value<0)I.throw_error(x.error.domain("not_less_than_zero",y.args[1],y.indicator));else{var F=new be(y.args[0].id.length,!1);I.prepend([new Qe(P.goal.replace(new H("=",[F,y.args[1]])),P.substitution,P)])}},"atom_concat/3":function(I,P,y){var F,z,X=y.args[0],$=y.args[1],ie=y.args[2];if(x.type.is_variable(ie)&&(x.type.is_variable(X)||x.type.is_variable($)))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_atom(X))I.throw_error(x.error.type("atom",X,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_atom($))I.throw_error(x.error.type("atom",$,y.indicator));else if(!x.type.is_variable(ie)&&!x.type.is_atom(ie))I.throw_error(x.error.type("atom",ie,y.indicator));else{var ke=x.type.is_variable(X),Ne=x.type.is_variable($);if(!ke&&!Ne)z=new H("=",[ie,new H(X.id+$.id)]),I.prepend([new Qe(P.goal.replace(z),P.substitution,P)]);else if(ke&&!Ne)F=ie.id.substr(0,ie.id.length-$.id.length),F+$.id===ie.id&&(z=new H("=",[X,new H(F)]),I.prepend([new Qe(P.goal.replace(z),P.substitution,P)]));else if(Ne&&!ke)F=ie.id.substr(X.id.length),X.id+F===ie.id&&(z=new H("=",[$,new H(F)]),I.prepend([new Qe(P.goal.replace(z),P.substitution,P)]));else{for(var st=[],ht=0;ht<=ie.id.length;ht++){var Ut=new H(ie.id.substr(0,ht)),Xt=new H(ie.id.substr(ht));z=new H(",",[new H("=",[Ut,X]),new H("=",[Xt,$])]),st.push(new Qe(P.goal.replace(z),P.substitution,P))}I.prepend(st)}}},"sub_atom/5":function(I,P,y){var F,z=y.args[0],X=y.args[1],$=y.args[2],ie=y.args[3],ke=y.args[4];if(x.type.is_variable(z))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_integer(X))I.throw_error(x.error.type("integer",X,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_integer($))I.throw_error(x.error.type("integer",$,y.indicator));else if(!x.type.is_variable(ie)&&!x.type.is_integer(ie))I.throw_error(x.error.type("integer",ie,y.indicator));else if(x.type.is_integer(X)&&X.value<0)I.throw_error(x.error.domain("not_less_than_zero",X,y.indicator));else if(x.type.is_integer($)&&$.value<0)I.throw_error(x.error.domain("not_less_than_zero",$,y.indicator));else if(x.type.is_integer(ie)&&ie.value<0)I.throw_error(x.error.domain("not_less_than_zero",ie,y.indicator));else{var Ne=[],st=[],ht=[];if(x.type.is_variable(X))for(F=0;F<=z.id.length;F++)Ne.push(F);else Ne.push(X.value);if(x.type.is_variable($))for(F=0;F<=z.id.length;F++)st.push(F);else st.push($.value);if(x.type.is_variable(ie))for(F=0;F<=z.id.length;F++)ht.push(F);else ht.push(ie.value);var Ut=[];for(var Xt in Ne)if(!!Ne.hasOwnProperty(Xt)){F=Ne[Xt];for(var Pt in st)if(!!st.hasOwnProperty(Pt)){var tn=st[Pt],Dr=z.id.length-F-tn;if(e(ht,Dr)!==-1&&F+tn+Dr===z.id.length){var fr=z.id.substr(F,tn);if(z.id===z.id.substr(0,F)+fr+z.id.substr(F+tn,Dr)){var Br=new H("=",[new H(fr),ke]),jr=new H("=",[X,new be(F)]),Hn=new H("=",[$,new be(tn)]),bs=new H("=",[ie,new be(Dr)]),ki=new H(",",[new H(",",[new H(",",[jr,Hn]),bs]),Br]);Ut.push(new Qe(P.goal.replace(ki),P.substitution,P))}}}}I.prepend(Ut)}},"atom_chars/2":function(I,P,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_atom(F))I.throw_error(x.error.type("atom",F,y.indicator));else if(x.type.is_variable(F)){for(var ie=z,ke=x.type.is_variable(F),Ne="";ie.indicator==="./2";){if(x.type.is_character(ie.args[0]))Ne+=ie.args[0].id;else if(x.type.is_variable(ie.args[0])&&ke){I.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_variable(ie.args[0])){I.throw_error(x.error.type("character",ie.args[0],y.indicator));return}ie=ie.args[1]}x.type.is_variable(ie)&&ke?I.throw_error(x.error.instantiation(y.indicator)):!x.type.is_empty_list(ie)&&!x.type.is_variable(ie)?I.throw_error(x.error.type("list",z,y.indicator)):I.prepend([new Qe(P.goal.replace(new H("=",[new H(Ne),F])),P.substitution,P)])}else{for(var X=new H("[]"),$=F.id.length-1;$>=0;$--)X=new H(".",[new H(F.id.charAt($)),X]);I.prepend([new Qe(P.goal.replace(new H("=",[z,X])),P.substitution,P)])}},"atom_codes/2":function(I,P,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_atom(F))I.throw_error(x.error.type("atom",F,y.indicator));else if(x.type.is_variable(F)){for(var ie=z,ke=x.type.is_variable(F),Ne="";ie.indicator==="./2";){if(x.type.is_character_code(ie.args[0]))Ne+=u(ie.args[0].value);else if(x.type.is_variable(ie.args[0])&&ke){I.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_variable(ie.args[0])){I.throw_error(x.error.representation("character_code",y.indicator));return}ie=ie.args[1]}x.type.is_variable(ie)&&ke?I.throw_error(x.error.instantiation(y.indicator)):!x.type.is_empty_list(ie)&&!x.type.is_variable(ie)?I.throw_error(x.error.type("list",z,y.indicator)):I.prepend([new Qe(P.goal.replace(new H("=",[new H(Ne),F])),P.substitution,P)])}else{for(var X=new H("[]"),$=F.id.length-1;$>=0;$--)X=new H(".",[new be(n(F.id,$),!1),X]);I.prepend([new Qe(P.goal.replace(new H("=",[z,X])),P.substitution,P)])}},"char_code/2":function(I,P,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_character(F))I.throw_error(x.error.type("character",F,y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_integer(z))I.throw_error(x.error.type("integer",z,y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_character_code(z))I.throw_error(x.error.representation("character_code",y.indicator));else if(x.type.is_variable(z)){var X=new be(n(F.id,0),!1);I.prepend([new Qe(P.goal.replace(new H("=",[X,z])),P.substitution,P)])}else{var $=new H(u(z.value));I.prepend([new Qe(P.goal.replace(new H("=",[$,F])),P.substitution,P)])}},"number_chars/2":function(I,P,y){var F,z=y.args[0],X=y.args[1];if(x.type.is_variable(z)&&x.type.is_variable(X))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_number(z))I.throw_error(x.error.type("number",z,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_list(X))I.throw_error(x.error.type("list",X,y.indicator));else{var $=x.type.is_variable(z);if(!x.type.is_variable(X)){var ie=X,ke=!0;for(F="";ie.indicator==="./2";){if(x.type.is_character(ie.args[0]))F+=ie.args[0].id;else if(x.type.is_variable(ie.args[0]))ke=!1;else if(!x.type.is_variable(ie.args[0])){I.throw_error(x.error.type("character",ie.args[0],y.indicator));return}ie=ie.args[1]}if(ke=ke&&x.type.is_empty_list(ie),!x.type.is_empty_list(ie)&&!x.type.is_variable(ie)){I.throw_error(x.error.type("list",X,y.indicator));return}if(!ke&&$){I.throw_error(x.error.instantiation(y.indicator));return}else if(ke)if(x.type.is_variable(ie)&&$){I.throw_error(x.error.instantiation(y.indicator));return}else{var Ne=I.parse(F),st=Ne.value;!x.type.is_number(st)||Ne.tokens[Ne.tokens.length-1].space?I.throw_error(x.error.syntax_by_predicate("parseable_number",y.indicator)):I.prepend([new Qe(P.goal.replace(new H("=",[z,st])),P.substitution,P)]);return}}if(!$){F=z.toString();for(var ht=new H("[]"),Ut=F.length-1;Ut>=0;Ut--)ht=new H(".",[new H(F.charAt(Ut)),ht]);I.prepend([new Qe(P.goal.replace(new H("=",[X,ht])),P.substitution,P)])}}},"number_codes/2":function(I,P,y){var F,z=y.args[0],X=y.args[1];if(x.type.is_variable(z)&&x.type.is_variable(X))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_number(z))I.throw_error(x.error.type("number",z,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_list(X))I.throw_error(x.error.type("list",X,y.indicator));else{var $=x.type.is_variable(z);if(!x.type.is_variable(X)){var ie=X,ke=!0;for(F="";ie.indicator==="./2";){if(x.type.is_character_code(ie.args[0]))F+=u(ie.args[0].value);else if(x.type.is_variable(ie.args[0]))ke=!1;else if(!x.type.is_variable(ie.args[0])){I.throw_error(x.error.type("character_code",ie.args[0],y.indicator));return}ie=ie.args[1]}if(ke=ke&&x.type.is_empty_list(ie),!x.type.is_empty_list(ie)&&!x.type.is_variable(ie)){I.throw_error(x.error.type("list",X,y.indicator));return}if(!ke&&$){I.throw_error(x.error.instantiation(y.indicator));return}else if(ke)if(x.type.is_variable(ie)&&$){I.throw_error(x.error.instantiation(y.indicator));return}else{var Ne=I.parse(F),st=Ne.value;!x.type.is_number(st)||Ne.tokens[Ne.tokens.length-1].space?I.throw_error(x.error.syntax_by_predicate("parseable_number",y.indicator)):I.prepend([new Qe(P.goal.replace(new H("=",[z,st])),P.substitution,P)]);return}}if(!$){F=z.toString();for(var ht=new H("[]"),Ut=F.length-1;Ut>=0;Ut--)ht=new H(".",[new be(n(F,Ut),!1),ht]);I.prepend([new Qe(P.goal.replace(new H("=",[X,ht])),P.substitution,P)])}}},"upcase_atom/2":function(I,P,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)?I.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?!x.type.is_variable(z)&&!x.type.is_atom(z)?I.throw_error(x.error.type("atom",z,y.indicator)):I.prepend([new Qe(P.goal.replace(new H("=",[z,new H(F.id.toUpperCase(),[])])),P.substitution,P)]):I.throw_error(x.error.type("atom",F,y.indicator))},"downcase_atom/2":function(I,P,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)?I.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?!x.type.is_variable(z)&&!x.type.is_atom(z)?I.throw_error(x.error.type("atom",z,y.indicator)):I.prepend([new Qe(P.goal.replace(new H("=",[z,new H(F.id.toLowerCase(),[])])),P.substitution,P)]):I.throw_error(x.error.type("atom",F,y.indicator))},"atomic_list_concat/2":function(I,P,y){var F=y.args[0],z=y.args[1];I.prepend([new Qe(P.goal.replace(new H("atomic_list_concat",[F,new H("",[]),z])),P.substitution,P)])},"atomic_list_concat/3":function(I,P,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(x.type.is_variable(z)||x.type.is_variable(F)&&x.type.is_variable(X))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_list(F))I.throw_error(x.error.type("list",F,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_atom(X))I.throw_error(x.error.type("atom",X,y.indicator));else if(x.type.is_variable(X)){for(var ie="",ke=F;x.type.is_term(ke)&&ke.indicator==="./2";){if(!x.type.is_atom(ke.args[0])&&!x.type.is_number(ke.args[0])){I.throw_error(x.error.type("atomic",ke.args[0],y.indicator));return}ie!==""&&(ie+=z.id),x.type.is_atom(ke.args[0])?ie+=ke.args[0].id:ie+=""+ke.args[0].value,ke=ke.args[1]}ie=new H(ie,[]),x.type.is_variable(ke)?I.throw_error(x.error.instantiation(y.indicator)):!x.type.is_term(ke)||ke.indicator!=="[]/0"?I.throw_error(x.error.type("list",F,y.indicator)):I.prepend([new Qe(P.goal.replace(new H("=",[ie,X])),P.substitution,P)])}else{var $=g(o(X.id.split(z.id),function(Ne){return new H(Ne,[])}));I.prepend([new Qe(P.goal.replace(new H("=",[$,F])),P.substitution,P)])}},"@=</2":function(I,P,y){x.compare(y.args[0],y.args[1])<=0&&I.success(P)},"==/2":function(I,P,y){x.compare(y.args[0],y.args[1])===0&&I.success(P)},"\\==/2":function(I,P,y){x.compare(y.args[0],y.args[1])!==0&&I.success(P)},"@</2":function(I,P,y){x.compare(y.args[0],y.args[1])<0&&I.success(P)},"@>/2":function(I,P,y){x.compare(y.args[0],y.args[1])>0&&I.success(P)},"@>=/2":function(I,P,y){x.compare(y.args[0],y.args[1])>=0&&I.success(P)},"compare/3":function(I,P,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(!x.type.is_variable(F)&&!x.type.is_atom(F))I.throw_error(x.error.type("atom",F,y.indicator));else if(x.type.is_atom(F)&&["<",">","="].indexOf(F.id)===-1)I.throw_error(x.type.domain("order",F,y.indicator));else{var $=x.compare(z,X);$=$===0?"=":$===-1?"<":">",I.prepend([new Qe(P.goal.replace(new H("=",[F,new H($,[])])),P.substitution,P)])}},"is/2":function(I,P,y){var F=y.args[1].interpret(I);x.type.is_number(F)?I.prepend([new Qe(P.goal.replace(new H("=",[y.args[0],F],I.level)),P.substitution,P)]):I.throw_error(F)},"between/3":function(I,P,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(x.type.is_variable(F)||x.type.is_variable(z))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_integer(F))I.throw_error(x.error.type("integer",F,y.indicator));else if(!x.type.is_integer(z))I.throw_error(x.error.type("integer",z,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_integer(X))I.throw_error(x.error.type("integer",X,y.indicator));else if(x.type.is_variable(X)){var $=[new Qe(P.goal.replace(new H("=",[X,F])),P.substitution,P)];F.value<z.value&&$.push(new Qe(P.goal.replace(new H("between",[new be(F.value+1,!1),z,X])),P.substitution,P)),I.prepend($)}else F.value<=X.value&&z.value>=X.value&&I.success(P)},"succ/2":function(I,P,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)&&x.type.is_variable(z)?I.throw_error(x.error.instantiation(y.indicator)):!x.type.is_variable(F)&&!x.type.is_integer(F)?I.throw_error(x.error.type("integer",F,y.indicator)):!x.type.is_variable(z)&&!x.type.is_integer(z)?I.throw_error(x.error.type("integer",z,y.indicator)):!x.type.is_variable(F)&&F.value<0?I.throw_error(x.error.domain("not_less_than_zero",F,y.indicator)):!x.type.is_variable(z)&&z.value<0?I.throw_error(x.error.domain("not_less_than_zero",z,y.indicator)):(x.type.is_variable(z)||z.value>0)&&(x.type.is_variable(F)?I.prepend([new Qe(P.goal.replace(new H("=",[F,new be(z.value-1,!1)])),P.substitution,P)]):I.prepend([new Qe(P.goal.replace(new H("=",[z,new be(F.value+1,!1)])),P.substitution,P)]))},"=:=/2":function(I,P,y){var F=x.arithmetic_compare(I,y.args[0],y.args[1]);x.type.is_term(F)?I.throw_error(F):F===0&&I.success(P)},"=\\=/2":function(I,P,y){var F=x.arithmetic_compare(I,y.args[0],y.args[1]);x.type.is_term(F)?I.throw_error(F):F!==0&&I.success(P)},"</2":function(I,P,y){var F=x.arithmetic_compare(I,y.args[0],y.args[1]);x.type.is_term(F)?I.throw_error(F):F<0&&I.success(P)},"=</2":function(I,P,y){var F=x.arithmetic_compare(I,y.args[0],y.args[1]);x.type.is_term(F)?I.throw_error(F):F<=0&&I.success(P)},">/2":function(I,P,y){var F=x.arithmetic_compare(I,y.args[0],y.args[1]);x.type.is_term(F)?I.throw_error(F):F>0&&I.success(P)},">=/2":function(I,P,y){var F=x.arithmetic_compare(I,y.args[0],y.args[1]);x.type.is_term(F)?I.throw_error(F):F>=0&&I.success(P)},"var/1":function(I,P,y){x.type.is_variable(y.args[0])&&I.success(P)},"atom/1":function(I,P,y){x.type.is_atom(y.args[0])&&I.success(P)},"atomic/1":function(I,P,y){x.type.is_atomic(y.args[0])&&I.success(P)},"compound/1":function(I,P,y){x.type.is_compound(y.args[0])&&I.success(P)},"integer/1":function(I,P,y){x.type.is_integer(y.args[0])&&I.success(P)},"float/1":function(I,P,y){x.type.is_float(y.args[0])&&I.success(P)},"number/1":function(I,P,y){x.type.is_number(y.args[0])&&I.success(P)},"nonvar/1":function(I,P,y){x.type.is_variable(y.args[0])||I.success(P)},"ground/1":function(I,P,y){y.variables().length===0&&I.success(P)},"acyclic_term/1":function(I,P,y){for(var F=P.substitution.apply(P.substitution),z=y.args[0].variables(),X=0;X<z.length;X++)if(P.substitution.links[z[X]]!==void 0&&!P.substitution.links[z[X]].equals(F.links[z[X]]))return;I.success(P)},"callable/1":function(I,P,y){x.type.is_callable(y.args[0])&&I.success(P)},"is_list/1":function(I,P,y){for(var F=y.args[0];x.type.is_term(F)&&F.indicator==="./2";)F=F.args[1];x.type.is_term(F)&&F.indicator==="[]/0"&&I.success(P)},"current_input/1":function(I,P,y){var F=y.args[0];!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?I.throw_error(x.error.domain("stream",F,y.indicator)):(x.type.is_atom(F)&&I.get_stream_by_alias(F.id)&&(F=I.get_stream_by_alias(F.id)),I.prepend([new Qe(P.goal.replace(new H("=",[F,I.get_current_input()])),P.substitution,P)]))},"current_output/1":function(I,P,y){var F=y.args[0];!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?I.throw_error(x.error.domain("stream_or_alias",F,y.indicator)):(x.type.is_atom(F)&&I.get_stream_by_alias(F.id)&&(F=I.get_stream_by_alias(F.id)),I.prepend([new Qe(P.goal.replace(new H("=",[F,I.get_current_output()])),P.substitution,P)]))},"set_input/1":function(I,P,y){var F=y.args[0],z=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);x.type.is_variable(F)?I.throw_error(x.error.instantiation(y.indicator)):!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?I.throw_error(x.error.domain("stream_or_alias",F,y.indicator)):x.type.is_stream(z)?z.output===!0?I.throw_error(x.error.permission("input","stream",F,y.indicator)):(I.set_current_input(z),I.success(P)):I.throw_error(x.error.existence("stream",F,y.indicator))},"set_output/1":function(I,P,y){var F=y.args[0],z=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);x.type.is_variable(F)?I.throw_error(x.error.instantiation(y.indicator)):!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?I.throw_error(x.error.domain("stream_or_alias",F,y.indicator)):x.type.is_stream(z)?z.input===!0?I.throw_error(x.error.permission("output","stream",F,y.indicator)):(I.set_current_output(z),I.success(P)):I.throw_error(x.error.existence("stream",F,y.indicator))},"open/3":function(I,P,y){var F=y.args[0],z=y.args[1],X=y.args[2];I.prepend([new Qe(P.goal.replace(new H("open",[F,z,X,new H("[]",[])])),P.substitution,P)])},"open/4":function(I,P,y){var F=y.args[0],z=y.args[1],X=y.args[2],$=y.args[3];if(x.type.is_variable(F)||x.type.is_variable(z))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_atom(z))I.throw_error(x.error.type("atom",z,y.indicator));else if(!x.type.is_list($))I.throw_error(x.error.type("list",$,y.indicator));else if(!x.type.is_variable(X))I.throw_error(x.error.type("variable",X,y.indicator));else if(!x.type.is_atom(F)&&!x.type.is_streamable(F))I.throw_error(x.error.domain("source_sink",F,y.indicator));else if(!x.type.is_io_mode(z))I.throw_error(x.error.domain("io_mode",z,y.indicator));else{for(var ie={},ke=$,Ne;x.type.is_term(ke)&&ke.indicator==="./2";){if(Ne=ke.args[0],x.type.is_variable(Ne)){I.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_stream_option(Ne)){I.throw_error(x.error.domain("stream_option",Ne,y.indicator));return}ie[Ne.id]=Ne.args[0].id,ke=ke.args[1]}if(ke.indicator!=="[]/0"){x.type.is_variable(ke)?I.throw_error(x.error.instantiation(y.indicator)):I.throw_error(x.error.type("list",$,y.indicator));return}else{var st=ie.alias;if(st&&I.get_stream_by_alias(st)){I.throw_error(x.error.permission("open","source_sink",new H("alias",[new H(st,[])]),y.indicator));return}ie.type||(ie.type="text");var ht;if(x.type.is_atom(F)?ht=I.file_system_open(F.id,ie.type,z.id):ht=F.stream(ie.type,z.id),ht===!1){I.throw_error(x.error.permission("open","source_sink",F,y.indicator));return}else if(ht===null){I.throw_error(x.error.existence("source_sink",F,y.indicator));return}var Ut=new Me(ht,z.id,ie.alias,ie.type,ie.reposition==="true",ie.eof_action);st?I.session.streams[st]=Ut:I.session.streams[Ut.id]=Ut,I.prepend([new Qe(P.goal.replace(new H("=",[X,Ut])),P.substitution,P)])}}},"close/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H("close",[F,new H("[]",[])])),P.substitution,P)])},"close/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);if(x.type.is_variable(F)||x.type.is_variable(z))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_list(z))I.throw_error(x.error.type("list",z,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))I.throw_error(x.error.domain("stream_or_alias",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)I.throw_error(x.error.existence("stream",F,y.indicator));else{for(var $={},ie=z,ke;x.type.is_term(ie)&&ie.indicator==="./2";){if(ke=ie.args[0],x.type.is_variable(ke)){I.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_close_option(ke)){I.throw_error(x.error.domain("close_option",ke,y.indicator));return}$[ke.id]=ke.args[0].id==="true",ie=ie.args[1]}if(ie.indicator!=="[]/0"){x.type.is_variable(ie)?I.throw_error(x.error.instantiation(y.indicator)):I.throw_error(x.error.type("list",z,y.indicator));return}else{if(X===I.session.standard_input||X===I.session.standard_output){I.success(P);return}else X===I.session.current_input?I.session.current_input=I.session.standard_input:X===I.session.current_output&&(I.session.current_output=I.session.current_output);X.alias!==null?delete I.session.streams[X.alias]:delete I.session.streams[X.id],X.output&&X.stream.flush();var Ne=X.stream.close();X.stream=null,($.force===!0||Ne===!0)&&I.success(P)}}},"flush_output/0":function(I,P,y){I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_output",[new me("S")]),new H("flush_output",[new me("S")])])),P.substitution,P)])},"flush_output/1":function(I,P,y){var F=y.args[0],z=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);x.type.is_variable(F)?I.throw_error(x.error.instantiation(y.indicator)):!x.type.is_stream(F)&&!x.type.is_atom(F)?I.throw_error(x.error.domain("stream_or_alias",F,y.indicator)):!x.type.is_stream(z)||z.stream===null?I.throw_error(x.error.existence("stream",F,y.indicator)):F.input===!0?I.throw_error(x.error.permission("output","stream",output,y.indicator)):(z.stream.flush(),I.success(P))},"stream_property/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);if(!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F))I.throw_error(x.error.domain("stream_or_alias",F,y.indicator));else if(!x.type.is_variable(F)&&(!x.type.is_stream(X)||X.stream===null))I.throw_error(x.error.existence("stream",F,y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_stream_property(z))I.throw_error(x.error.domain("stream_property",z,y.indicator));else{var $=[],ie=[];if(!x.type.is_variable(F))$.push(X);else for(var ke in I.session.streams)$.push(I.session.streams[ke]);for(var Ne=0;Ne<$.length;Ne++){var st=[];$[Ne].filename&&st.push(new H("file_name",[new H($[Ne].file_name,[])])),st.push(new H("mode",[new H($[Ne].mode,[])])),st.push(new H($[Ne].input?"input":"output",[])),$[Ne].alias&&st.push(new H("alias",[new H($[Ne].alias,[])])),st.push(new H("position",[typeof $[Ne].position=="number"?new be($[Ne].position,!1):new H($[Ne].position,[])])),st.push(new H("end_of_stream",[new H($[Ne].position==="end_of_stream"?"at":$[Ne].position==="past_end_of_stream"?"past":"not",[])])),st.push(new H("eof_action",[new H($[Ne].eof_action,[])])),st.push(new H("reposition",[new H($[Ne].reposition?"true":"false",[])])),st.push(new H("type",[new H($[Ne].type,[])]));for(var ht=0;ht<st.length;ht++)ie.push(new Qe(P.goal.replace(new H(",",[new H("=",[x.type.is_variable(F)?F:X,$[Ne]]),new H("=",[z,st[ht]])])),P.substitution,P))}I.prepend(ie)}},"at_end_of_stream/0":function(I,P,y){I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_input",[new me("S")]),new H(",",[new H("stream_property",[new me("S"),new H("end_of_stream",[new me("E")])]),new H(",",[new H("!",[]),new H(";",[new H("=",[new me("E"),new H("at",[])]),new H("=",[new me("E"),new H("past",[])])])])])])),P.substitution,P)])},"at_end_of_stream/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("stream_property",[F,new H("end_of_stream",[new me("E")])]),new H(",",[new H("!",[]),new H(";",[new H("=",[new me("E"),new H("at",[])]),new H("=",[new me("E"),new H("past",[])])])])])),P.substitution,P)])},"set_stream_position/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);x.type.is_variable(F)||x.type.is_variable(z)?I.throw_error(x.error.instantiation(y.indicator)):!x.type.is_stream(F)&&!x.type.is_atom(F)?I.throw_error(x.error.domain("stream_or_alias",F,y.indicator)):!x.type.is_stream(X)||X.stream===null?I.throw_error(x.error.existence("stream",F,y.indicator)):x.type.is_stream_position(z)?X.reposition===!1?I.throw_error(x.error.permission("reposition","stream",F,y.indicator)):(x.type.is_integer(z)?X.position=z.value:X.position=z.id,I.success(P)):I.throw_error(x.error.domain("stream_position",z,y.indicator))},"get_char/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_input",[new me("S")]),new H("get_char",[new me("S"),F])])),P.substitution,P)])},"get_char/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);if(x.type.is_variable(F))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_character(z))I.throw_error(x.error.type("in_character",z,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))I.throw_error(x.error.domain("stream_or_alias",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)I.throw_error(x.error.existence("stream",F,y.indicator));else if(X.output)I.throw_error(x.error.permission("input","stream",F,y.indicator));else if(X.type==="binary")I.throw_error(x.error.permission("input","binary_stream",F,y.indicator));else if(X.position==="past_end_of_stream"&&X.eof_action==="error")I.throw_error(x.error.permission("input","past_end_of_stream",F,y.indicator));else{var $;if(X.position==="end_of_stream")$="end_of_file",X.position="past_end_of_stream";else{if($=X.stream.get(1,X.position),$===null){I.throw_error(x.error.representation("character",y.indicator));return}X.position++}I.prepend([new Qe(P.goal.replace(new H("=",[new H($,[]),z])),P.substitution,P)])}},"get_code/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_input",[new me("S")]),new H("get_code",[new me("S"),F])])),P.substitution,P)])},"get_code/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);if(x.type.is_variable(F))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_integer(z))I.throw_error(x.error.type("integer",char,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F))I.throw_error(x.error.domain("stream_or_alias",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)I.throw_error(x.error.existence("stream",F,y.indicator));else if(X.output)I.throw_error(x.error.permission("input","stream",F,y.indicator));else if(X.type==="binary")I.throw_error(x.error.permission("input","binary_stream",F,y.indicator));else if(X.position==="past_end_of_stream"&&X.eof_action==="error")I.throw_error(x.error.permission("input","past_end_of_stream",F,y.indicator));else{var $;if(X.position==="end_of_stream")$=-1,X.position="past_end_of_stream";else{if($=X.stream.get(1,X.position),$===null){I.throw_error(x.error.representation("character",y.indicator));return}$=n($,0),X.position++}I.prepend([new Qe(P.goal.replace(new H("=",[new be($,!1),z])),P.substitution,P)])}},"peek_char/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_input",[new me("S")]),new H("peek_char",[new me("S"),F])])),P.substitution,P)])},"peek_char/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);if(x.type.is_variable(F))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_character(z))I.throw_error(x.error.type("in_character",z,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))I.throw_error(x.error.domain("stream_or_alias",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)I.throw_error(x.error.existence("stream",F,y.indicator));else if(X.output)I.throw_error(x.error.permission("input","stream",F,y.indicator));else if(X.type==="binary")I.throw_error(x.error.permission("input","binary_stream",F,y.indicator));else if(X.position==="past_end_of_stream"&&X.eof_action==="error")I.throw_error(x.error.permission("input","past_end_of_stream",F,y.indicator));else{var $;if(X.position==="end_of_stream")$="end_of_file",X.position="past_end_of_stream";else if($=X.stream.get(1,X.position),$===null){I.throw_error(x.error.representation("character",y.indicator));return}I.prepend([new Qe(P.goal.replace(new H("=",[new H($,[]),z])),P.substitution,P)])}},"peek_code/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_input",[new me("S")]),new H("peek_code",[new me("S"),F])])),P.substitution,P)])},"peek_code/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);if(x.type.is_variable(F))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_integer(z))I.throw_error(x.error.type("integer",char,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F))I.throw_error(x.error.domain("stream_or_alias",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)I.throw_error(x.error.existence("stream",F,y.indicator));else if(X.output)I.throw_error(x.error.permission("input","stream",F,y.indicator));else if(X.type==="binary")I.throw_error(x.error.permission("input","binary_stream",F,y.indicator));else if(X.position==="past_end_of_stream"&&X.eof_action==="error")I.throw_error(x.error.permission("input","past_end_of_stream",F,y.indicator));else{var $;if(X.position==="end_of_stream")$=-1,X.position="past_end_of_stream";else{if($=X.stream.get(1,X.position),$===null){I.throw_error(x.error.representation("character",y.indicator));return}$=n($,0)}I.prepend([new Qe(P.goal.replace(new H("=",[new be($,!1),z])),P.substitution,P)])}},"put_char/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_output",[new me("S")]),new H("put_char",[new me("S"),F])])),P.substitution,P)])},"put_char/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);x.type.is_variable(F)||x.type.is_variable(z)?I.throw_error(x.error.instantiation(y.indicator)):x.type.is_character(z)?!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?I.throw_error(x.error.domain("stream_or_alias",F,y.indicator)):!x.type.is_stream(X)||X.stream===null?I.throw_error(x.error.existence("stream",F,y.indicator)):X.input?I.throw_error(x.error.permission("output","stream",F,y.indicator)):X.type==="binary"?I.throw_error(x.error.permission("output","binary_stream",F,y.indicator)):X.stream.put(z.id,X.position)&&(typeof X.position=="number"&&X.position++,I.success(P)):I.throw_error(x.error.type("character",z,y.indicator))},"put_code/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_output",[new me("S")]),new H("put_code",[new me("S"),F])])),P.substitution,P)])},"put_code/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);x.type.is_variable(F)||x.type.is_variable(z)?I.throw_error(x.error.instantiation(y.indicator)):x.type.is_integer(z)?x.type.is_character_code(z)?!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?I.throw_error(x.error.domain("stream_or_alias",F,y.indicator)):!x.type.is_stream(X)||X.stream===null?I.throw_error(x.error.existence("stream",F,y.indicator)):X.input?I.throw_error(x.error.permission("output","stream",F,y.indicator)):X.type==="binary"?I.throw_error(x.error.permission("output","binary_stream",F,y.indicator)):X.stream.put_char(u(z.value),X.position)&&(typeof X.position=="number"&&X.position++,I.success(P)):I.throw_error(x.error.representation("character_code",y.indicator)):I.throw_error(x.error.type("integer",z,y.indicator))},"nl/0":function(I,P,y){I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_output",[new me("S")]),new H("put_char",[new me("S"),new H(` | 264 | `;return P},me.prototype.clone=function(){return new me(this.id)},be.prototype.clone=function(){return new be(this.value,this.is_float)},H.prototype.clone=function(){return new H(this.id,o(this.args,function(I){return I.clone()}))},Me.prototype.clone=function(){return new Stram(this.stream,this.mode,this.alias,this.type,this.reposition,this.eof_action)},Te.prototype.clone=function(){var I={};for(var P in this.links)!this.links.hasOwnProperty(P)||(I[P]=this.links[P].clone());return new Te(I)},Qe.prototype.clone=function(){return new Qe(this.goal.clone(),this.substitution.clone(),this.parent)},_e.prototype.clone=function(){return new _e(this.head.clone(),this.body!==null?this.body.clone():null)},me.prototype.equals=function(I){return x.type.is_variable(I)&&this.id===I.id},be.prototype.equals=function(I){return x.type.is_number(I)&&this.value===I.value&&this.is_float===I.is_float},H.prototype.equals=function(I){if(!x.type.is_term(I)||this.indicator!==I.indicator)return!1;for(var P=0;P<this.args.length;P++)if(!this.args[P].equals(I.args[P]))return!1;return!0},Me.prototype.equals=function(I){return x.type.is_stream(I)&&this.id===I.id},Te.prototype.equals=function(I){var P;if(!x.type.is_substitution(I))return!1;for(P in this.links)if(!!this.links.hasOwnProperty(P)&&(!I.links[P]||!this.links[P].equals(I.links[P])))return!1;for(P in I.links)if(!!I.links.hasOwnProperty(P)&&!this.links[P])return!1;return!0},Qe.prototype.equals=function(I){return x.type.is_state(I)&&this.goal.equals(I.goal)&&this.substitution.equals(I.substitution)&&this.parent===I.parent},_e.prototype.equals=function(I){return x.type.is_rule(I)&&this.head.equals(I.head)&&(this.body===null&&I.body===null||this.body!==null&&this.body.equals(I.body))},me.prototype.rename=function(I){return I.get_free_variable(this)},be.prototype.rename=function(I){return this},H.prototype.rename=function(I){return new H(this.id,o(this.args,function(P){return P.rename(I)}))},Me.prototype.rename=function(I){return this},_e.prototype.rename=function(I){return new _e(this.head.rename(I),this.body!==null?this.body.rename(I):null)},me.prototype.variables=function(){return[this.id]},be.prototype.variables=function(){return[]},H.prototype.variables=function(){return[].concat.apply([],o(this.args,function(I){return I.variables()}))},Me.prototype.variables=function(){return[]},_e.prototype.variables=function(){return this.body===null?this.head.variables():this.head.variables().concat(this.body.variables())},me.prototype.apply=function(I){return I.lookup(this.id)?I.lookup(this.id):this},be.prototype.apply=function(I){return this},H.prototype.apply=function(I){if(this.indicator==="./2"){for(var P=[],y=this;y.indicator==="./2";)P.push(y.args[0].apply(I)),y=y.args[1];for(var F=y.apply(I),z=P.length-1;z>=0;z--)F=new H(".",[P[z],F]);return F}return new H(this.id,o(this.args,function(X){return X.apply(I)}),this.ref)},Me.prototype.apply=function(I){return this},_e.prototype.apply=function(I){return new _e(this.head.apply(I),this.body!==null?this.body.apply(I):null)},Te.prototype.apply=function(I){var P,y={};for(P in this.links)!this.links.hasOwnProperty(P)||(y[P]=this.links[P].apply(I));return new Te(y)},H.prototype.select=function(){for(var I=this;I.indicator===",/2";)I=I.args[0];return I},H.prototype.replace=function(I){return this.indicator===",/2"?this.args[0].indicator===",/2"?new H(",",[this.args[0].replace(I),this.args[1]]):I===null?this.args[1]:new H(",",[I,this.args[1]]):I},H.prototype.search=function(I){if(x.type.is_term(I)&&I.ref!==void 0&&this.ref===I.ref)return!0;for(var P=0;P<this.args.length;P++)if(x.type.is_term(this.args[P])&&this.args[P].search(I))return!0;return!1},qe.prototype.get_current_input=function(){return this.current_input},At.prototype.get_current_input=function(){return this.session.get_current_input()},qe.prototype.get_current_output=function(){return this.current_output},At.prototype.get_current_output=function(){return this.session.get_current_output()},qe.prototype.set_current_input=function(I){this.current_input=I},At.prototype.set_current_input=function(I){return this.session.set_current_input(I)},qe.prototype.set_current_output=function(I){this.current_input=I},At.prototype.set_current_output=function(I){return this.session.set_current_output(I)},qe.prototype.get_stream_by_alias=function(I){return this.streams[I]},At.prototype.get_stream_by_alias=function(I){return this.session.get_stream_by_alias(I)},qe.prototype.file_system_open=function(I,P,y){return this.file_system.open(I,P,y)},At.prototype.file_system_open=function(I,P,y){return this.session.file_system_open(I,P,y)},qe.prototype.get_char_conversion=function(I){return this.__char_conversion[I]||I},At.prototype.get_char_conversion=function(I){return this.session.get_char_conversion(I)},qe.prototype.parse=function(I){return this.thread.parse(I)},At.prototype.parse=function(I){var P=new _(this);P.new_text(I);var y=P.get_tokens();if(y===null)return!1;var F=V(this,y,0,this.__get_max_priority(),!1);return F.len!==y.length?!1:{value:F.value,expr:F,tokens:y}},qe.prototype.get_flag=function(I){return this.flag[I]},At.prototype.get_flag=function(I){return this.session.get_flag(I)},qe.prototype.add_rule=function(I,P){return P=P||{},P.from=P.from?P.from:"$tau-js",this.src_predicates[I.head.indicator]=P.from,this.rules[I.head.indicator]||(this.rules[I.head.indicator]=[]),this.rules[I.head.indicator].push(I),this.public_predicates.hasOwnProperty(I.head.indicator)||(this.public_predicates[I.head.indicator]=!1),!0},At.prototype.add_rule=function(I,P){return this.session.add_rule(I,P)},qe.prototype.run_directive=function(I){this.thread.run_directive(I)},At.prototype.run_directive=function(I){return x.type.is_directive(I)?(x.directive[I.indicator](this,I),!0):!1},qe.prototype.__get_max_priority=function(){return"1200"},At.prototype.__get_max_priority=function(){return this.session.__get_max_priority()},qe.prototype.__get_next_priority=function(I){var P=0;I=parseInt(I);for(var y in this.__operators)if(!!this.__operators.hasOwnProperty(y)){var F=parseInt(y);F>P&&F<I&&(P=F)}return P.toString()},At.prototype.__get_next_priority=function(I){return this.session.__get_next_priority(I)},qe.prototype.__lookup_operator_classes=function(I,P){return this.__operators.hasOwnProperty(I)&&this.__operators[I][P]instanceof Array&&this.__operators[I][P]||!1},At.prototype.__lookup_operator_classes=function(I,P){return this.session.__lookup_operator_classes(I,P)},qe.prototype.lookup_operator=function(I,P){for(var y in this.__operators)if(this.__operators[y][I]){for(var F=0;F<this.__operators[y][I].length;F++)if(P===0||this.__operators[y][I][F].length===P+1)return{priority:y,class:this.__operators[y][I][F]}}return null},At.prototype.lookup_operator=function(I,P){return this.session.lookup_operator(I,P)},qe.prototype.throw_warning=function(I){this.thread.throw_warning(I)},At.prototype.throw_warning=function(I){this.warnings.push(I)},qe.prototype.get_warnings=function(){return this.thread.get_warnings()},At.prototype.get_warnings=function(){return this.warnings},qe.prototype.add_goal=function(I,P){this.thread.add_goal(I,P)},At.prototype.add_goal=function(I,P,y){y=y||null,P===!0&&(this.points=[]);for(var F=I.variables(),z={},X=0;X<F.length;X++)z[F[X]]=new me(F[X]);this.points.push(new Qe(I,new Te(z),y))},qe.prototype.consult=function(I,P){return this.thread.consult(I,P)},At.prototype.consult=function(I,P){var y="";if(typeof I=="string"){y=I;var F=y.length;if(y.substring(F-3,F)===".pl"&&document.getElementById(y)){var z=document.getElementById(y),X=z.getAttribute("type");X!==null&&X.replace(/ /g,"").toLowerCase()==="text/prolog"&&(y=z.text)}}else if(I.nodeName)switch(I.nodeName.toLowerCase()){case"input":case"textarea":y=I.value;break;default:y=I.innerHTML;break}else return!1;return this.warnings=[],pe(this,y,P)},qe.prototype.query=function(I){return this.thread.query(I)},At.prototype.query=function(I){return this.points=[],this.debugger_points=[],De(this,I)},qe.prototype.head_point=function(){return this.thread.head_point()},At.prototype.head_point=function(){return this.points[this.points.length-1]},qe.prototype.get_free_variable=function(I){return this.thread.get_free_variable(I)},At.prototype.get_free_variable=function(I){var P=[];if(I.id==="_"||this.session.renamed_variables[I.id]===void 0){for(this.session.rename++,this.points.length>0&&(P=this.head_point().substitution.domain());e(P,x.format_variable(this.session.rename))!==-1;)this.session.rename++;if(I.id==="_")return new me(x.format_variable(this.session.rename));this.session.renamed_variables[I.id]=x.format_variable(this.session.rename)}return new me(this.session.renamed_variables[I.id])},qe.prototype.next_free_variable=function(){return this.thread.next_free_variable()},At.prototype.next_free_variable=function(){this.session.rename++;var I=[];for(this.points.length>0&&(I=this.head_point().substitution.domain());e(I,x.format_variable(this.session.rename))!==-1;)this.session.rename++;return new me(x.format_variable(this.session.rename))},qe.prototype.is_public_predicate=function(I){return!this.public_predicates.hasOwnProperty(I)||this.public_predicates[I]===!0},At.prototype.is_public_predicate=function(I){return this.session.is_public_predicate(I)},qe.prototype.is_multifile_predicate=function(I){return this.multifile_predicates.hasOwnProperty(I)&&this.multifile_predicates[I]===!0},At.prototype.is_multifile_predicate=function(I){return this.session.is_multifile_predicate(I)},qe.prototype.prepend=function(I){return this.thread.prepend(I)},At.prototype.prepend=function(I){for(var P=I.length-1;P>=0;P--)this.points.push(I[P])},qe.prototype.success=function(I,P){return this.thread.success(I,P)},At.prototype.success=function(I,y){var y=typeof y>"u"?I:y;this.prepend([new Qe(I.goal.replace(null),I.substitution,y)])},qe.prototype.throw_error=function(I){return this.thread.throw_error(I)},At.prototype.throw_error=function(I){this.prepend([new Qe(new H("throw",[I]),new Te,null,null)])},qe.prototype.step_rule=function(I,P){return this.thread.step_rule(I,P)},At.prototype.step_rule=function(I,P){var y=P.indicator;if(I==="user"&&(I=null),I===null&&this.session.rules.hasOwnProperty(y))return this.session.rules[y];for(var F=I===null?this.session.modules:e(this.session.modules,I)===-1?[]:[I],z=0;z<F.length;z++){var X=x.module[F[z]];if(X.rules.hasOwnProperty(y)&&(X.rules.hasOwnProperty(this.level)||X.exports_predicate(y)))return x.module[F[z]].rules[y]}return null},qe.prototype.step=function(){return this.thread.step()},At.prototype.step=function(){if(this.points.length!==0){var I=!1,P=this.points.pop();if(this.debugger&&this.debugger_states.push(P),x.type.is_term(P.goal)){var y=P.goal.select(),F=null,z=[];if(y!==null){this.total_steps++;for(var X=P;X.parent!==null&&X.parent.goal.search(y);)X=X.parent;if(this.level=X.parent===null?"top_level/0":X.parent.goal.select().indicator,x.type.is_term(y)&&y.indicator===":/2"&&(F=y.args[0].id,y=y.args[1]),F===null&&x.type.is_builtin(y))this.__call_indicator=y.indicator,I=x.predicate[y.indicator](this,P,y);else{var $=this.step_rule(F,y);if($===null)this.session.rules.hasOwnProperty(y.indicator)||(this.get_flag("unknown").id==="error"?this.throw_error(x.error.existence("procedure",y.indicator,this.level)):this.get_flag("unknown").id==="warning"&&this.throw_warning("unknown procedure "+y.indicator+" (from "+this.level+")"));else if($ instanceof Function)I=$(this,P,y);else{for(var ie in $)if(!!$.hasOwnProperty(ie)){var ke=$[ie];this.session.renamed_variables={},ke=ke.rename(this);var Ne=this.get_flag("occurs_check").indicator==="true/0",st=new Qe,ht=x.unify(y,ke.head,Ne);ht!==null&&(st.goal=P.goal.replace(ke.body),st.goal!==null&&(st.goal=st.goal.apply(ht)),st.substitution=P.substitution.apply(ht),st.parent=P,z.push(st))}this.prepend(z)}}}}else x.type.is_variable(P.goal)?this.throw_error(x.error.instantiation(this.level)):this.throw_error(x.error.type("callable",P.goal,this.level));return I}},qe.prototype.answer=function(I){return this.thread.answer(I)},At.prototype.answer=function(I){I=I||function(P){},this.__calls.push(I),!(this.__calls.length>1)&&this.again()},qe.prototype.answers=function(I,P,y){return this.thread.answers(I,P,y)},At.prototype.answers=function(I,P,y){var F=P||1e3,z=this;if(P<=0){y&&y();return}this.answer(function(X){I(X),X!==!1?setTimeout(function(){z.answers(I,P-1,y)},1):y&&y()})},qe.prototype.again=function(I){return this.thread.again(I)},At.prototype.again=function(I){for(var P,y=Date.now();this.__calls.length>0;){for(this.warnings=[],I!==!1&&(this.current_limit=this.session.limit);this.current_limit>0&&this.points.length>0&&this.head_point().goal!==null&&!x.type.is_error(this.head_point().goal);)if(this.current_limit--,this.step()===!0)return;var F=Date.now();this.cpu_time_last=F-y,this.cpu_time+=this.cpu_time_last;var z=this.__calls.shift();this.current_limit<=0?z(null):this.points.length===0?z(!1):x.type.is_error(this.head_point().goal)?(P=this.session.format_error(this.points.pop()),this.points=[],z(P)):(this.debugger&&this.debugger_states.push(this.head_point()),P=this.session.format_success(this.points.pop()),z(P))}},qe.prototype.unfold=function(I){if(I.body===null)return!1;var P=I.head,y=I.body,F=y.select(),z=new At(this),X=[];z.add_goal(F),z.step();for(var $=z.points.length-1;$>=0;$--){var ie=z.points[$],ke=P.apply(ie.substitution),Ne=y.replace(ie.goal);Ne!==null&&(Ne=Ne.apply(ie.substitution)),X.push(new _e(ke,Ne))}var st=this.rules[P.indicator],ht=e(st,I);return X.length>0&&ht!==-1?(st.splice.apply(st,[ht,1].concat(X)),!0):!1},At.prototype.unfold=function(I){return this.session.unfold(I)},me.prototype.interpret=function(I){return x.error.instantiation(I.level)},be.prototype.interpret=function(I){return this},H.prototype.interpret=function(I){return x.type.is_unitary_list(this)?this.args[0].interpret(I):x.operate(I,this)},me.prototype.compare=function(I){return this.id<I.id?-1:this.id>I.id?1:0},be.prototype.compare=function(I){if(this.value===I.value&&this.is_float===I.is_float)return 0;if(this.value<I.value||this.value===I.value&&this.is_float&&!I.is_float)return-1;if(this.value>I.value)return 1},H.prototype.compare=function(I){if(this.args.length<I.args.length||this.args.length===I.args.length&&this.id<I.id)return-1;if(this.args.length>I.args.length||this.args.length===I.args.length&&this.id>I.id)return 1;for(var P=0;P<this.args.length;P++){var y=x.compare(this.args[P],I.args[P]);if(y!==0)return y}return 0},Te.prototype.lookup=function(I){return this.links[I]?this.links[I]:null},Te.prototype.filter=function(I){var P={};for(var y in this.links)if(!!this.links.hasOwnProperty(y)){var F=this.links[y];I(y,F)&&(P[y]=F)}return new Te(P)},Te.prototype.exclude=function(I){var P={};for(var y in this.links)!this.links.hasOwnProperty(y)||e(I,y)===-1&&(P[y]=this.links[y]);return new Te(P)},Te.prototype.add=function(I,P){this.links[I]=P},Te.prototype.domain=function(I){var P=I===!0?function(z){return z}:function(z){return new me(z)},y=[];for(var F in this.links)y.push(P(F));return y},me.prototype.compile=function(){return'new pl.type.Var("'+this.id.toString()+'")'},be.prototype.compile=function(){return"new pl.type.Num("+this.value.toString()+", "+this.is_float.toString()+")"},H.prototype.compile=function(){return'new pl.type.Term("'+this.id.replace(/"/g,'\\"')+'", ['+o(this.args,function(I){return I.compile()})+"])"},_e.prototype.compile=function(){return"new pl.type.Rule("+this.head.compile()+", "+(this.body===null?"null":this.body.compile())+")"},qe.prototype.compile=function(){var I,P=[],y;for(var F in this.rules)if(!!this.rules.hasOwnProperty(F)){var z=this.rules[F];y=[],I='"'+F+'": [';for(var X=0;X<z.length;X++)y.push(z[X].compile());I+=y.join(),I+="]",P.push(I)}return"{"+P.join()+"};"},me.prototype.toJavaScript=function(){},be.prototype.toJavaScript=function(){return this.value},H.prototype.toJavaScript=function(){if(this.args.length===0&&this.indicator!=="[]/0")return this.id;if(x.type.is_list(this)){for(var I=[],P=this,y;P.indicator==="./2";){if(y=P.args[0].toJavaScript(),y===void 0)return;I.push(y),P=P.args[1]}if(P.indicator==="[]/0")return I}},_e.prototype.singleton_variables=function(){var I=this.head.variables(),P={},y=[];this.body!==null&&(I=I.concat(this.body.variables()));for(var F=0;F<I.length;F++)P[I[F]]===void 0&&(P[I[F]]=0),P[I[F]]++;for(var z in P)z!=="_"&&P[z]===1&&y.push(z);return y};var x={__env:typeof ml<"u"&&ml.exports?global:window,module:{},version:t,parser:{tokenizer:_,expression:V},utils:{str_indicator:Z,codePointAt:n,fromCodePoint:u},statistics:{getCountTerms:function(){return ut}},fromJavaScript:{test:{boolean:function(I){return I===!0||I===!1},number:function(I){return typeof I=="number"},string:function(I){return typeof I=="string"},list:function(I){return I instanceof Array},variable:function(I){return I===void 0},any:function(I){return!0}},conversion:{boolean:function(I){return new H(I?"true":"false",[])},number:function(I){return new be(I,I%1!==0)},string:function(I){return new H(I,[])},list:function(I){for(var P=[],y,F=0;F<I.length;F++){if(y=x.fromJavaScript.apply(I[F]),y===void 0)return;P.push(y)}return g(P)},variable:function(I){return new me("_")},any:function(I){}},apply:function(I){for(var P in x.fromJavaScript.test)if(P!=="any"&&x.fromJavaScript.test[P](I))return x.fromJavaScript.conversion[P](I);return x.fromJavaScript.conversion.any(I)}},type:{Var:me,Num:be,Term:H,Rule:_e,State:Qe,Stream:Me,Module:Oe,Thread:At,Session:qe,Substitution:Te,order:[me,be,H,Me],compare:function(I,P){var y=e(x.type.order,I.constructor),F=e(x.type.order,P.constructor);if(y<F)return-1;if(y>F)return 1;if(I.constructor===be){if(I.is_float&&P.is_float)return 0;if(I.is_float)return-1;if(P.is_float)return 1}return 0},is_substitution:function(I){return I instanceof Te},is_state:function(I){return I instanceof Qe},is_rule:function(I){return I instanceof _e},is_variable:function(I){return I instanceof me},is_stream:function(I){return I instanceof Me},is_anonymous_var:function(I){return I instanceof me&&I.id==="_"},is_callable:function(I){return I instanceof H},is_number:function(I){return I instanceof be},is_integer:function(I){return I instanceof be&&!I.is_float},is_float:function(I){return I instanceof be&&I.is_float},is_term:function(I){return I instanceof H},is_atom:function(I){return I instanceof H&&I.args.length===0},is_ground:function(I){if(I instanceof me)return!1;if(I instanceof H){for(var P=0;P<I.args.length;P++)if(!x.type.is_ground(I.args[P]))return!1}return!0},is_atomic:function(I){return I instanceof H&&I.args.length===0||I instanceof be},is_compound:function(I){return I instanceof H&&I.args.length>0},is_list:function(I){return I instanceof H&&(I.indicator==="[]/0"||I.indicator==="./2")},is_empty_list:function(I){return I instanceof H&&I.indicator==="[]/0"},is_non_empty_list:function(I){return I instanceof H&&I.indicator==="./2"},is_fully_list:function(I){for(;I instanceof H&&I.indicator==="./2";)I=I.args[1];return I instanceof me||I instanceof H&&I.indicator==="[]/0"},is_instantiated_list:function(I){for(;I instanceof H&&I.indicator==="./2";)I=I.args[1];return I instanceof H&&I.indicator==="[]/0"},is_unitary_list:function(I){return I instanceof H&&I.indicator==="./2"&&I.args[1]instanceof H&&I.args[1].indicator==="[]/0"},is_character:function(I){return I instanceof H&&(I.id.length===1||I.id.length>0&&I.id.length<=2&&n(I.id,0)>=65536)},is_character_code:function(I){return I instanceof be&&!I.is_float&&I.value>=0&&I.value<=1114111},is_byte:function(I){return I instanceof be&&!I.is_float&&I.value>=0&&I.value<=255},is_operator:function(I){return I instanceof H&&x.arithmetic.evaluation[I.indicator]},is_directive:function(I){return I instanceof H&&x.directive[I.indicator]!==void 0},is_builtin:function(I){return I instanceof H&&x.predicate[I.indicator]!==void 0},is_error:function(I){return I instanceof H&&I.indicator==="throw/1"},is_predicate_indicator:function(I){return I instanceof H&&I.indicator==="//2"&&I.args[0]instanceof H&&I.args[0].args.length===0&&I.args[1]instanceof be&&I.args[1].is_float===!1},is_flag:function(I){return I instanceof H&&I.args.length===0&&x.flag[I.id]!==void 0},is_value_flag:function(I,P){if(!x.type.is_flag(I))return!1;for(var y in x.flag[I.id].allowed)if(!!x.flag[I.id].allowed.hasOwnProperty(y)&&x.flag[I.id].allowed[y].equals(P))return!0;return!1},is_io_mode:function(I){return x.type.is_atom(I)&&["read","write","append"].indexOf(I.id)!==-1},is_stream_option:function(I){return x.type.is_term(I)&&(I.indicator==="alias/1"&&x.type.is_atom(I.args[0])||I.indicator==="reposition/1"&&x.type.is_atom(I.args[0])&&(I.args[0].id==="true"||I.args[0].id==="false")||I.indicator==="type/1"&&x.type.is_atom(I.args[0])&&(I.args[0].id==="text"||I.args[0].id==="binary")||I.indicator==="eof_action/1"&&x.type.is_atom(I.args[0])&&(I.args[0].id==="error"||I.args[0].id==="eof_code"||I.args[0].id==="reset"))},is_stream_position:function(I){return x.type.is_integer(I)&&I.value>=0||x.type.is_atom(I)&&(I.id==="end_of_stream"||I.id==="past_end_of_stream")},is_stream_property:function(I){return x.type.is_term(I)&&(I.indicator==="input/0"||I.indicator==="output/0"||I.indicator==="alias/1"&&(x.type.is_variable(I.args[0])||x.type.is_atom(I.args[0]))||I.indicator==="file_name/1"&&(x.type.is_variable(I.args[0])||x.type.is_atom(I.args[0]))||I.indicator==="position/1"&&(x.type.is_variable(I.args[0])||x.type.is_stream_position(I.args[0]))||I.indicator==="reposition/1"&&(x.type.is_variable(I.args[0])||x.type.is_atom(I.args[0])&&(I.args[0].id==="true"||I.args[0].id==="false"))||I.indicator==="type/1"&&(x.type.is_variable(I.args[0])||x.type.is_atom(I.args[0])&&(I.args[0].id==="text"||I.args[0].id==="binary"))||I.indicator==="mode/1"&&(x.type.is_variable(I.args[0])||x.type.is_atom(I.args[0])&&(I.args[0].id==="read"||I.args[0].id==="write"||I.args[0].id==="append"))||I.indicator==="eof_action/1"&&(x.type.is_variable(I.args[0])||x.type.is_atom(I.args[0])&&(I.args[0].id==="error"||I.args[0].id==="eof_code"||I.args[0].id==="reset"))||I.indicator==="end_of_stream/1"&&(x.type.is_variable(I.args[0])||x.type.is_atom(I.args[0])&&(I.args[0].id==="at"||I.args[0].id==="past"||I.args[0].id==="not")))},is_streamable:function(I){return I.__proto__.stream!==void 0},is_read_option:function(I){return x.type.is_term(I)&&["variables/1","variable_names/1","singletons/1"].indexOf(I.indicator)!==-1},is_write_option:function(I){return x.type.is_term(I)&&(I.indicator==="quoted/1"&&x.type.is_atom(I.args[0])&&(I.args[0].id==="true"||I.args[0].id==="false")||I.indicator==="ignore_ops/1"&&x.type.is_atom(I.args[0])&&(I.args[0].id==="true"||I.args[0].id==="false")||I.indicator==="numbervars/1"&&x.type.is_atom(I.args[0])&&(I.args[0].id==="true"||I.args[0].id==="false"))},is_close_option:function(I){return x.type.is_term(I)&&I.indicator==="force/1"&&x.type.is_atom(I.args[0])&&(I.args[0].id==="true"||I.args[0].id==="false")},is_modifiable_flag:function(I){return x.type.is_flag(I)&&x.flag[I.id].changeable},is_module:function(I){return I instanceof H&&I.indicator==="library/1"&&I.args[0]instanceof H&&I.args[0].args.length===0&&x.module[I.args[0].id]!==void 0}},arithmetic:{evaluation:{"e/0":{type_args:null,type_result:!0,fn:function(I){return Math.E}},"pi/0":{type_args:null,type_result:!0,fn:function(I){return Math.PI}},"tau/0":{type_args:null,type_result:!0,fn:function(I){return 2*Math.PI}},"epsilon/0":{type_args:null,type_result:!0,fn:function(I){return Number.EPSILON}},"+/1":{type_args:null,type_result:null,fn:function(I,P){return I}},"-/1":{type_args:null,type_result:null,fn:function(I,P){return-I}},"\\/1":{type_args:!1,type_result:!1,fn:function(I,P){return~I}},"abs/1":{type_args:null,type_result:null,fn:function(I,P){return Math.abs(I)}},"sign/1":{type_args:null,type_result:null,fn:function(I,P){return Math.sign(I)}},"float_integer_part/1":{type_args:!0,type_result:!1,fn:function(I,P){return parseInt(I)}},"float_fractional_part/1":{type_args:!0,type_result:!0,fn:function(I,P){return I-parseInt(I)}},"float/1":{type_args:null,type_result:!0,fn:function(I,P){return parseFloat(I)}},"floor/1":{type_args:!0,type_result:!1,fn:function(I,P){return Math.floor(I)}},"truncate/1":{type_args:!0,type_result:!1,fn:function(I,P){return parseInt(I)}},"round/1":{type_args:!0,type_result:!1,fn:function(I,P){return Math.round(I)}},"ceiling/1":{type_args:!0,type_result:!1,fn:function(I,P){return Math.ceil(I)}},"sin/1":{type_args:null,type_result:!0,fn:function(I,P){return Math.sin(I)}},"cos/1":{type_args:null,type_result:!0,fn:function(I,P){return Math.cos(I)}},"tan/1":{type_args:null,type_result:!0,fn:function(I,P){return Math.tan(I)}},"asin/1":{type_args:null,type_result:!0,fn:function(I,P){return Math.asin(I)}},"acos/1":{type_args:null,type_result:!0,fn:function(I,P){return Math.acos(I)}},"atan/1":{type_args:null,type_result:!0,fn:function(I,P){return Math.atan(I)}},"atan2/2":{type_args:null,type_result:!0,fn:function(I,P,y){return Math.atan2(I,P)}},"exp/1":{type_args:null,type_result:!0,fn:function(I,P){return Math.exp(I)}},"sqrt/1":{type_args:null,type_result:!0,fn:function(I,P){return Math.sqrt(I)}},"log/1":{type_args:null,type_result:!0,fn:function(I,P){return I>0?Math.log(I):x.error.evaluation("undefined",P.__call_indicator)}},"+/2":{type_args:null,type_result:null,fn:function(I,P,y){return I+P}},"-/2":{type_args:null,type_result:null,fn:function(I,P,y){return I-P}},"*/2":{type_args:null,type_result:null,fn:function(I,P,y){return I*P}},"//2":{type_args:null,type_result:!0,fn:function(I,P,y){return P?I/P:x.error.evaluation("zero_division",y.__call_indicator)}},"///2":{type_args:!1,type_result:!1,fn:function(I,P,y){return P?parseInt(I/P):x.error.evaluation("zero_division",y.__call_indicator)}},"**/2":{type_args:null,type_result:!0,fn:function(I,P,y){return Math.pow(I,P)}},"^/2":{type_args:null,type_result:null,fn:function(I,P,y){return Math.pow(I,P)}},"<</2":{type_args:!1,type_result:!1,fn:function(I,P,y){return I<<P}},">>/2":{type_args:!1,type_result:!1,fn:function(I,P,y){return I>>P}},"/\\/2":{type_args:!1,type_result:!1,fn:function(I,P,y){return I&P}},"\\//2":{type_args:!1,type_result:!1,fn:function(I,P,y){return I|P}},"xor/2":{type_args:!1,type_result:!1,fn:function(I,P,y){return I^P}},"rem/2":{type_args:!1,type_result:!1,fn:function(I,P,y){return P?I%P:x.error.evaluation("zero_division",y.__call_indicator)}},"mod/2":{type_args:!1,type_result:!1,fn:function(I,P,y){return P?I-parseInt(I/P)*P:x.error.evaluation("zero_division",y.__call_indicator)}},"max/2":{type_args:null,type_result:null,fn:function(I,P,y){return Math.max(I,P)}},"min/2":{type_args:null,type_result:null,fn:function(I,P,y){return Math.min(I,P)}}}},directive:{"dynamic/1":function(I,P){var y=P.args[0];if(x.type.is_variable(y))I.throw_error(x.error.instantiation(P.indicator));else if(!x.type.is_compound(y)||y.indicator!=="//2")I.throw_error(x.error.type("predicate_indicator",y,P.indicator));else if(x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1]))I.throw_error(x.error.instantiation(P.indicator));else if(!x.type.is_atom(y.args[0]))I.throw_error(x.error.type("atom",y.args[0],P.indicator));else if(!x.type.is_integer(y.args[1]))I.throw_error(x.error.type("integer",y.args[1],P.indicator));else{var F=P.args[0].args[0].id+"/"+P.args[0].args[1].value;I.session.public_predicates[F]=!0,I.session.rules[F]||(I.session.rules[F]=[])}},"multifile/1":function(I,P){var y=P.args[0];x.type.is_variable(y)?I.throw_error(x.error.instantiation(P.indicator)):!x.type.is_compound(y)||y.indicator!=="//2"?I.throw_error(x.error.type("predicate_indicator",y,P.indicator)):x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1])?I.throw_error(x.error.instantiation(P.indicator)):x.type.is_atom(y.args[0])?x.type.is_integer(y.args[1])?I.session.multifile_predicates[P.args[0].args[0].id+"/"+P.args[0].args[1].value]=!0:I.throw_error(x.error.type("integer",y.args[1],P.indicator)):I.throw_error(x.error.type("atom",y.args[0],P.indicator))},"set_prolog_flag/2":function(I,P){var y=P.args[0],F=P.args[1];x.type.is_variable(y)||x.type.is_variable(F)?I.throw_error(x.error.instantiation(P.indicator)):x.type.is_atom(y)?x.type.is_flag(y)?x.type.is_value_flag(y,F)?x.type.is_modifiable_flag(y)?I.session.flag[y.id]=F:I.throw_error(x.error.permission("modify","flag",y)):I.throw_error(x.error.domain("flag_value",new H("+",[y,F]),P.indicator)):I.throw_error(x.error.domain("prolog_flag",y,P.indicator)):I.throw_error(x.error.type("atom",y,P.indicator))},"use_module/1":function(I,P){var y=P.args[0];if(x.type.is_variable(y))I.throw_error(x.error.instantiation(P.indicator));else if(!x.type.is_term(y))I.throw_error(x.error.type("term",y,P.indicator));else if(x.type.is_module(y)){var F=y.args[0].id;e(I.session.modules,F)===-1&&I.session.modules.push(F)}},"char_conversion/2":function(I,P){var y=P.args[0],F=P.args[1];x.type.is_variable(y)||x.type.is_variable(F)?I.throw_error(x.error.instantiation(P.indicator)):x.type.is_character(y)?x.type.is_character(F)?y.id===F.id?delete I.session.__char_conversion[y.id]:I.session.__char_conversion[y.id]=F.id:I.throw_error(x.error.type("character",F,P.indicator)):I.throw_error(x.error.type("character",y,P.indicator))},"op/3":function(I,P){var y=P.args[0],F=P.args[1],z=P.args[2];if(x.type.is_variable(y)||x.type.is_variable(F)||x.type.is_variable(z))I.throw_error(x.error.instantiation(P.indicator));else if(!x.type.is_integer(y))I.throw_error(x.error.type("integer",y,P.indicator));else if(!x.type.is_atom(F))I.throw_error(x.error.type("atom",F,P.indicator));else if(!x.type.is_atom(z))I.throw_error(x.error.type("atom",z,P.indicator));else if(y.value<0||y.value>1200)I.throw_error(x.error.domain("operator_priority",y,P.indicator));else if(z.id===",")I.throw_error(x.error.permission("modify","operator",z,P.indicator));else if(z.id==="|"&&(y.value<1001||F.id.length!==3))I.throw_error(x.error.permission("modify","operator",z,P.indicator));else if(["fy","fx","yf","xf","xfx","yfx","xfy"].indexOf(F.id)===-1)I.throw_error(x.error.domain("operator_specifier",F,P.indicator));else{var X={prefix:null,infix:null,postfix:null};for(var $ in I.session.__operators)if(!!I.session.__operators.hasOwnProperty($)){var ie=I.session.__operators[$][z.id];ie&&(e(ie,"fx")!==-1&&(X.prefix={priority:$,type:"fx"}),e(ie,"fy")!==-1&&(X.prefix={priority:$,type:"fy"}),e(ie,"xf")!==-1&&(X.postfix={priority:$,type:"xf"}),e(ie,"yf")!==-1&&(X.postfix={priority:$,type:"yf"}),e(ie,"xfx")!==-1&&(X.infix={priority:$,type:"xfx"}),e(ie,"xfy")!==-1&&(X.infix={priority:$,type:"xfy"}),e(ie,"yfx")!==-1&&(X.infix={priority:$,type:"yfx"}))}var ke;switch(F.id){case"fy":case"fx":ke="prefix";break;case"yf":case"xf":ke="postfix";break;default:ke="infix";break}if(((X.prefix&&ke==="prefix"||X.postfix&&ke==="postfix"||X.infix&&ke==="infix")&&X[ke].type!==F.id||X.infix&&ke==="postfix"||X.postfix&&ke==="infix")&&y.value!==0)I.throw_error(x.error.permission("create","operator",z,P.indicator));else return X[ke]&&(ve(I.session.__operators[X[ke].priority][z.id],F.id),I.session.__operators[X[ke].priority][z.id].length===0&&delete I.session.__operators[X[ke].priority][z.id]),y.value>0&&(I.session.__operators[y.value]||(I.session.__operators[y.value.toString()]={}),I.session.__operators[y.value][z.id]||(I.session.__operators[y.value][z.id]=[]),I.session.__operators[y.value][z.id].push(F.id)),!0}}},predicate:{"op/3":function(I,P,y){x.directive["op/3"](I,y)&&I.success(P)},"current_op/3":function(I,P,y){var F=y.args[0],z=y.args[1],X=y.args[2],$=[];for(var ie in I.session.__operators)for(var ke in I.session.__operators[ie])for(var Ne=0;Ne<I.session.__operators[ie][ke].length;Ne++)$.push(new Qe(P.goal.replace(new H(",",[new H("=",[new be(ie,!1),F]),new H(",",[new H("=",[new H(I.session.__operators[ie][ke][Ne],[]),z]),new H("=",[new H(ke,[]),X])])])),P.substitution,P));I.prepend($)},";/2":function(I,P,y){if(x.type.is_term(y.args[0])&&y.args[0].indicator==="->/2"){var F=I.points,z=I.session.format_success,X=I.session.format_error;I.session.format_success=function(Ne){return Ne.substitution},I.session.format_error=function(Ne){return Ne.goal},I.points=[new Qe(y.args[0].args[0],P.substitution,P)];var $=function(Ne){I.points=F,I.session.format_success=z,I.session.format_error=X,Ne===!1?I.prepend([new Qe(P.goal.replace(y.args[1]),P.substitution,P)]):x.type.is_error(Ne)?I.throw_error(Ne.args[0]):Ne===null?(I.prepend([P]),I.__calls.shift()(null)):I.prepend([new Qe(P.goal.replace(y.args[0].args[1]).apply(Ne),P.substitution.apply(Ne),P)])};I.__calls.unshift($)}else{var ie=new Qe(P.goal.replace(y.args[0]),P.substitution,P),ke=new Qe(P.goal.replace(y.args[1]),P.substitution,P);I.prepend([ie,ke])}},"!/0":function(I,P,y){var F,z,X=[];for(F=P,z=null;F.parent!==null&&F.parent.goal.search(y);)if(z=F,F=F.parent,F.goal!==null){var $=F.goal.select();if($&&$.id==="call"&&$.search(y)){F=z;break}}for(var ie=I.points.length-1;ie>=0;ie--){for(var ke=I.points[ie],Ne=ke.parent;Ne!==null&&Ne!==F.parent;)Ne=Ne.parent;Ne===null&&Ne!==F.parent&&X.push(ke)}I.points=X.reverse(),I.success(P)},"\\+/1":function(I,P,y){var F=y.args[0];x.type.is_variable(F)?I.throw_error(x.error.instantiation(I.level)):x.type.is_callable(F)?I.prepend([new Qe(P.goal.replace(new H(",",[new H(",",[new H("call",[F]),new H("!",[])]),new H("fail",[])])),P.substitution,P),new Qe(P.goal.replace(null),P.substitution,P)]):I.throw_error(x.error.type("callable",F,I.level))},"->/2":function(I,P,y){var F=P.goal.replace(new H(",",[y.args[0],new H(",",[new H("!"),y.args[1]])]));I.prepend([new Qe(F,P.substitution,P)])},"fail/0":function(I,P,y){},"false/0":function(I,P,y){},"true/0":function(I,P,y){I.success(P)},"call/1":ne(1),"call/2":ne(2),"call/3":ne(3),"call/4":ne(4),"call/5":ne(5),"call/6":ne(6),"call/7":ne(7),"call/8":ne(8),"once/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("call",[F]),new H("!",[])])),P.substitution,P)])},"forall/2":function(I,P,y){var F=y.args[0],z=y.args[1];I.prepend([new Qe(P.goal.replace(new H("\\+",[new H(",",[new H("call",[F]),new H("\\+",[new H("call",[z])])])])),P.substitution,P)])},"repeat/0":function(I,P,y){I.prepend([new Qe(P.goal.replace(null),P.substitution,P),P])},"throw/1":function(I,P,y){x.type.is_variable(y.args[0])?I.throw_error(x.error.instantiation(I.level)):I.throw_error(y.args[0])},"catch/3":function(I,P,y){var F=I.points;I.points=[],I.prepend([new Qe(y.args[0],P.substitution,P)]);var z=I.session.format_success,X=I.session.format_error;I.session.format_success=function(ie){return ie.substitution},I.session.format_error=function(ie){return ie.goal};var $=function(ie){var ke=I.points;if(I.points=F,I.session.format_success=z,I.session.format_error=X,x.type.is_error(ie)){for(var Ne=[],st=I.points.length-1;st>=0;st--){for(var Xt=I.points[st],ht=Xt.parent;ht!==null&&ht!==P.parent;)ht=ht.parent;ht===null&&ht!==P.parent&&Ne.push(Xt)}I.points=Ne;var Ut=I.get_flag("occurs_check").indicator==="true/0",Xt=new Qe,xt=x.unify(ie.args[0],y.args[1],Ut);xt!==null?(Xt.substitution=P.substitution.apply(xt),Xt.goal=P.goal.replace(y.args[2]).apply(xt),Xt.parent=P,I.prepend([Xt])):I.throw_error(ie.args[0])}else if(ie!==!1){for(var tn=ie===null?[]:[new Qe(P.goal.apply(ie).replace(null),P.substitution.apply(ie),P)],Dr=[],st=ke.length-1;st>=0;st--){Dr.push(ke[st]);var fr=ke[st].goal!==null?ke[st].goal.select():null;if(x.type.is_term(fr)&&fr.indicator==="!/0")break}var Br=o(Dr,function(jr){return jr.goal===null&&(jr.goal=new H("true",[])),jr=new Qe(P.goal.replace(new H("catch",[jr.goal,y.args[1],y.args[2]])),P.substitution.apply(jr.substitution),jr.parent),jr.exclude=y.args[0].variables(),jr}).reverse();I.prepend(Br),I.prepend(tn),ie===null&&(this.current_limit=0,I.__calls.shift()(null))}};I.__calls.unshift($)},"=/2":function(I,P,y){var F=I.get_flag("occurs_check").indicator==="true/0",z=new Qe,X=x.unify(y.args[0],y.args[1],F);X!==null&&(z.goal=P.goal.apply(X).replace(null),z.substitution=P.substitution.apply(X),z.parent=P,I.prepend([z]))},"unify_with_occurs_check/2":function(I,P,y){var F=new Qe,z=x.unify(y.args[0],y.args[1],!0);z!==null&&(F.goal=P.goal.apply(z).replace(null),F.substitution=P.substitution.apply(z),F.parent=P,I.prepend([F]))},"\\=/2":function(I,P,y){var F=I.get_flag("occurs_check").indicator==="true/0",z=x.unify(y.args[0],y.args[1],F);z===null&&I.success(P)},"subsumes_term/2":function(I,P,y){var F=I.get_flag("occurs_check").indicator==="true/0",z=x.unify(y.args[1],y.args[0],F);z!==null&&y.args[1].apply(z).equals(y.args[1])&&I.success(P)},"findall/3":function(I,P,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(x.type.is_variable(z))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(z))I.throw_error(x.error.type("callable",z,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_list(X))I.throw_error(x.error.type("list",X,y.indicator));else{var $=I.next_free_variable(),ie=new H(",",[z,new H("=",[$,F])]),ke=I.points,Ne=I.session.limit,st=I.session.format_success;I.session.format_success=function(Xt){return Xt.substitution},I.add_goal(ie,!0,P);var ht=[],Ut=function(Xt){if(Xt!==!1&&Xt!==null&&!x.type.is_error(Xt))I.__calls.unshift(Ut),ht.push(Xt.links[$.id]),I.session.limit=I.current_limit;else if(I.points=ke,I.session.limit=Ne,I.session.format_success=st,x.type.is_error(Xt))I.throw_error(Xt.args[0]);else if(I.current_limit>0){for(var xt=new H("[]"),tn=ht.length-1;tn>=0;tn--)xt=new H(".",[ht[tn],xt]);I.prepend([new Qe(P.goal.replace(new H("=",[X,xt])),P.substitution,P)])}};I.__calls.unshift(Ut)}},"bagof/3":function(I,P,y){var F,z=y.args[0],X=y.args[1],$=y.args[2];if(x.type.is_variable(X))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(X))I.throw_error(x.error.type("callable",X,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_list($))I.throw_error(x.error.type("list",$,y.indicator));else{var ie=I.next_free_variable(),ke;X.indicator==="^/2"?(ke=X.args[0].variables(),X=X.args[1]):ke=[],ke=ke.concat(z.variables());for(var Ne=X.variables().filter(function(Br){return e(ke,Br)===-1}),st=new H("[]"),ht=Ne.length-1;ht>=0;ht--)st=new H(".",[new me(Ne[ht]),st]);var Ut=new H(",",[X,new H("=",[ie,new H(",",[st,z])])]),Xt=I.points,xt=I.session.limit,tn=I.session.format_success;I.session.format_success=function(Br){return Br.substitution},I.add_goal(Ut,!0,P);var Dr=[],fr=function(Br){if(Br!==!1&&Br!==null&&!x.type.is_error(Br)){I.__calls.unshift(fr);var jr=!1,Hn=Br.links[ie.id].args[0],bs=Br.links[ie.id].args[1];for(var ki in Dr)if(!!Dr.hasOwnProperty(ki)){var gs=Dr[ki];if(gs.variables.equals(Hn)){gs.answers.push(bs),jr=!0;break}}jr||Dr.push({variables:Hn,answers:[bs]}),I.session.limit=I.current_limit}else if(I.points=Xt,I.session.limit=xt,I.session.format_success=tn,x.type.is_error(Br))I.throw_error(Br.args[0]);else if(I.current_limit>0){for(var to=[],Di=0;Di<Dr.length;Di++){Br=Dr[Di].answers;for(var Qs=new H("[]"),ro=Br.length-1;ro>=0;ro--)Qs=new H(".",[Br[ro],Qs]);to.push(new Qe(P.goal.replace(new H(",",[new H("=",[st,Dr[Di].variables]),new H("=",[$,Qs])])),P.substitution,P))}I.prepend(to)}};I.__calls.unshift(fr)}},"setof/3":function(I,P,y){var F,z=y.args[0],X=y.args[1],$=y.args[2];if(x.type.is_variable(X))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(X))I.throw_error(x.error.type("callable",X,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_list($))I.throw_error(x.error.type("list",$,y.indicator));else{var ie=I.next_free_variable(),ke;X.indicator==="^/2"?(ke=X.args[0].variables(),X=X.args[1]):ke=[],ke=ke.concat(z.variables());for(var Ne=X.variables().filter(function(Br){return e(ke,Br)===-1}),st=new H("[]"),ht=Ne.length-1;ht>=0;ht--)st=new H(".",[new me(Ne[ht]),st]);var Ut=new H(",",[X,new H("=",[ie,new H(",",[st,z])])]),Xt=I.points,xt=I.session.limit,tn=I.session.format_success;I.session.format_success=function(Br){return Br.substitution},I.add_goal(Ut,!0,P);var Dr=[],fr=function(Br){if(Br!==!1&&Br!==null&&!x.type.is_error(Br)){I.__calls.unshift(fr);var jr=!1,Hn=Br.links[ie.id].args[0],bs=Br.links[ie.id].args[1];for(var ki in Dr)if(!!Dr.hasOwnProperty(ki)){var gs=Dr[ki];if(gs.variables.equals(Hn)){gs.answers.push(bs),jr=!0;break}}jr||Dr.push({variables:Hn,answers:[bs]}),I.session.limit=I.current_limit}else if(I.points=Xt,I.session.limit=xt,I.session.format_success=tn,x.type.is_error(Br))I.throw_error(Br.args[0]);else if(I.current_limit>0){for(var to=[],Di=0;Di<Dr.length;Di++){Br=Dr[Di].answers.sort(x.compare);for(var Qs=new H("[]"),ro=Br.length-1;ro>=0;ro--)Qs=new H(".",[Br[ro],Qs]);to.push(new Qe(P.goal.replace(new H(",",[new H("=",[st,Dr[Di].variables]),new H("=",[$,Qs])])),P.substitution,P))}I.prepend(to)}};I.__calls.unshift(fr)}},"functor/3":function(I,P,y){var F,z=y.args[0],X=y.args[1],$=y.args[2];if(x.type.is_variable(z)&&(x.type.is_variable(X)||x.type.is_variable($)))I.throw_error(x.error.instantiation("functor/3"));else if(!x.type.is_variable($)&&!x.type.is_integer($))I.throw_error(x.error.type("integer",y.args[2],"functor/3"));else if(!x.type.is_variable(X)&&!x.type.is_atomic(X))I.throw_error(x.error.type("atomic",y.args[1],"functor/3"));else if(x.type.is_integer(X)&&x.type.is_integer($)&&$.value!==0)I.throw_error(x.error.type("atom",y.args[1],"functor/3"));else if(x.type.is_variable(z)){if(y.args[2].value>=0){for(var ie=[],ke=0;ke<$.value;ke++)ie.push(I.next_free_variable());var Ne=x.type.is_integer(X)?X:new H(X.id,ie);I.prepend([new Qe(P.goal.replace(new H("=",[z,Ne])),P.substitution,P)])}}else{var st=x.type.is_integer(z)?z:new H(z.id,[]),ht=x.type.is_integer(z)?new be(0,!1):new be(z.args.length,!1),Ut=new H(",",[new H("=",[st,X]),new H("=",[ht,$])]);I.prepend([new Qe(P.goal.replace(Ut),P.substitution,P)])}},"arg/3":function(I,P,y){if(x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1]))I.throw_error(x.error.instantiation(y.indicator));else if(y.args[0].value<0)I.throw_error(x.error.domain("not_less_than_zero",y.args[0],y.indicator));else if(!x.type.is_compound(y.args[1]))I.throw_error(x.error.type("compound",y.args[1],y.indicator));else{var F=y.args[0].value;if(F>0&&F<=y.args[1].args.length){var z=new H("=",[y.args[1].args[F-1],y.args[2]]);I.prepend([new Qe(P.goal.replace(z),P.substitution,P)])}}},"=../2":function(I,P,y){var F;if(x.type.is_variable(y.args[0])&&(x.type.is_variable(y.args[1])||x.type.is_non_empty_list(y.args[1])&&x.type.is_variable(y.args[1].args[0])))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_fully_list(y.args[1]))I.throw_error(x.error.type("list",y.args[1],y.indicator));else if(x.type.is_variable(y.args[0])){if(!x.type.is_variable(y.args[1])){var X=[];for(F=y.args[1].args[1];F.indicator==="./2";)X.push(F.args[0]),F=F.args[1];x.type.is_variable(y.args[0])&&x.type.is_variable(F)?I.throw_error(x.error.instantiation(y.indicator)):X.length===0&&x.type.is_compound(y.args[1].args[0])?I.throw_error(x.error.type("atomic",y.args[1].args[0],y.indicator)):X.length>0&&(x.type.is_compound(y.args[1].args[0])||x.type.is_number(y.args[1].args[0]))?I.throw_error(x.error.type("atom",y.args[1].args[0],y.indicator)):X.length===0?I.prepend([new Qe(P.goal.replace(new H("=",[y.args[1].args[0],y.args[0]],P)),P.substitution,P)]):I.prepend([new Qe(P.goal.replace(new H("=",[new H(y.args[1].args[0].id,X),y.args[0]])),P.substitution,P)])}}else{if(x.type.is_atomic(y.args[0]))F=new H(".",[y.args[0],new H("[]")]);else{F=new H("[]");for(var z=y.args[0].args.length-1;z>=0;z--)F=new H(".",[y.args[0].args[z],F]);F=new H(".",[new H(y.args[0].id),F])}I.prepend([new Qe(P.goal.replace(new H("=",[F,y.args[1]])),P.substitution,P)])}},"copy_term/2":function(I,P,y){var F=y.args[0].rename(I);I.prepend([new Qe(P.goal.replace(new H("=",[F,y.args[1]])),P.substitution,P.parent)])},"term_variables/2":function(I,P,y){var F=y.args[0],z=y.args[1];if(!x.type.is_fully_list(z))I.throw_error(x.error.type("list",z,y.indicator));else{var X=g(o(Ee(F.variables()),function($){return new me($)}));I.prepend([new Qe(P.goal.replace(new H("=",[z,X])),P.substitution,P)])}},"clause/2":function(I,P,y){if(x.type.is_variable(y.args[0]))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))I.throw_error(x.error.type("callable",y.args[0],y.indicator));else if(!x.type.is_variable(y.args[1])&&!x.type.is_callable(y.args[1]))I.throw_error(x.error.type("callable",y.args[1],y.indicator));else if(I.session.rules[y.args[0].indicator]!==void 0)if(I.is_public_predicate(y.args[0].indicator)){var F=[];for(var z in I.session.rules[y.args[0].indicator])if(!!I.session.rules[y.args[0].indicator].hasOwnProperty(z)){var X=I.session.rules[y.args[0].indicator][z];I.session.renamed_variables={},X=X.rename(I),X.body===null&&(X.body=new H("true"));var $=new H(",",[new H("=",[X.head,y.args[0]]),new H("=",[X.body,y.args[1]])]);F.push(new Qe(P.goal.replace($),P.substitution,P))}I.prepend(F)}else I.throw_error(x.error.permission("access","private_procedure",y.args[0].indicator,y.indicator))},"current_predicate/1":function(I,P,y){var F=y.args[0];if(!x.type.is_variable(F)&&(!x.type.is_compound(F)||F.indicator!=="//2"))I.throw_error(x.error.type("predicate_indicator",F,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_variable(F.args[0])&&!x.type.is_atom(F.args[0]))I.throw_error(x.error.type("atom",F.args[0],y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_variable(F.args[1])&&!x.type.is_integer(F.args[1]))I.throw_error(x.error.type("integer",F.args[1],y.indicator));else{var z=[];for(var X in I.session.rules)if(!!I.session.rules.hasOwnProperty(X)){var $=X.lastIndexOf("/"),ie=X.substr(0,$),ke=parseInt(X.substr($+1,X.length-($+1))),Ne=new H("/",[new H(ie),new be(ke,!1)]),st=new H("=",[Ne,F]);z.push(new Qe(P.goal.replace(st),P.substitution,P))}I.prepend(z)}},"asserta/1":function(I,P,y){if(x.type.is_variable(y.args[0]))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))I.throw_error(x.error.type("callable",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=Pe(y.args[0].args[1])):(F=y.args[0],z=null),x.type.is_callable(F)?z!==null&&!x.type.is_callable(z)?I.throw_error(x.error.type("callable",z,y.indicator)):I.is_public_predicate(F.indicator)?(I.session.rules[F.indicator]===void 0&&(I.session.rules[F.indicator]=[]),I.session.public_predicates[F.indicator]=!0,I.session.rules[F.indicator]=[new _e(F,z,!0)].concat(I.session.rules[F.indicator]),I.success(P)):I.throw_error(x.error.permission("modify","static_procedure",F.indicator,y.indicator)):I.throw_error(x.error.type("callable",F,y.indicator))}},"assertz/1":function(I,P,y){if(x.type.is_variable(y.args[0]))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))I.throw_error(x.error.type("callable",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=Pe(y.args[0].args[1])):(F=y.args[0],z=null),x.type.is_callable(F)?z!==null&&!x.type.is_callable(z)?I.throw_error(x.error.type("callable",z,y.indicator)):I.is_public_predicate(F.indicator)?(I.session.rules[F.indicator]===void 0&&(I.session.rules[F.indicator]=[]),I.session.public_predicates[F.indicator]=!0,I.session.rules[F.indicator].push(new _e(F,z,!0)),I.success(P)):I.throw_error(x.error.permission("modify","static_procedure",F.indicator,y.indicator)):I.throw_error(x.error.type("callable",F,y.indicator))}},"retract/1":function(I,P,y){if(x.type.is_variable(y.args[0]))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))I.throw_error(x.error.type("callable",y.args[0],y.indicator));else{var F,z;if(y.args[0].indicator===":-/2"?(F=y.args[0].args[0],z=y.args[0].args[1]):(F=y.args[0],z=new H("true")),typeof P.retract>"u")if(I.is_public_predicate(F.indicator)){if(I.session.rules[F.indicator]!==void 0){for(var X=[],$=0;$<I.session.rules[F.indicator].length;$++){I.session.renamed_variables={};var ie=I.session.rules[F.indicator][$],ke=ie.rename(I);ke.body===null&&(ke.body=new H("true",[]));var Ne=I.get_flag("occurs_check").indicator==="true/0",st=x.unify(new H(",",[F,z]),new H(",",[ke.head,ke.body]),Ne);if(st!==null){var ht=new Qe(P.goal.replace(new H(",",[new H("retract",[new H(":-",[F,z])]),new H(",",[new H("=",[F,ke.head]),new H("=",[z,ke.body])])])),P.substitution,P);ht.retract=ie,X.push(ht)}}I.prepend(X)}}else I.throw_error(x.error.permission("modify","static_procedure",F.indicator,y.indicator));else de(I,P,F.indicator,P.retract)}},"retractall/1":function(I,P,y){var F=y.args[0];x.type.is_variable(F)?I.throw_error(x.error.instantiation(y.indicator)):x.type.is_callable(F)?I.prepend([new Qe(P.goal.replace(new H(",",[new H("retract",[new x.type.Term(":-",[F,new me("_")])]),new H("fail",[])])),P.substitution,P),new Qe(P.goal.replace(null),P.substitution,P)]):I.throw_error(x.error.type("callable",F,y.indicator))},"abolish/1":function(I,P,y){if(x.type.is_variable(y.args[0])||x.type.is_term(y.args[0])&&y.args[0].indicator==="//2"&&(x.type.is_variable(y.args[0].args[0])||x.type.is_variable(y.args[0].args[1])))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_term(y.args[0])||y.args[0].indicator!=="//2")I.throw_error(x.error.type("predicate_indicator",y.args[0],y.indicator));else if(!x.type.is_atom(y.args[0].args[0]))I.throw_error(x.error.type("atom",y.args[0].args[0],y.indicator));else if(!x.type.is_integer(y.args[0].args[1]))I.throw_error(x.error.type("integer",y.args[0].args[1],y.indicator));else if(y.args[0].args[1].value<0)I.throw_error(x.error.domain("not_less_than_zero",y.args[0].args[1],y.indicator));else if(x.type.is_number(I.get_flag("max_arity"))&&y.args[0].args[1].value>I.get_flag("max_arity").value)I.throw_error(x.error.representation("max_arity",y.indicator));else{var F=y.args[0].args[0].id+"/"+y.args[0].args[1].value;I.is_public_predicate(F)?(delete I.session.rules[F],I.success(P)):I.throw_error(x.error.permission("modify","static_procedure",F,y.indicator))}},"atom_length/2":function(I,P,y){if(x.type.is_variable(y.args[0]))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_atom(y.args[0]))I.throw_error(x.error.type("atom",y.args[0],y.indicator));else if(!x.type.is_variable(y.args[1])&&!x.type.is_integer(y.args[1]))I.throw_error(x.error.type("integer",y.args[1],y.indicator));else if(x.type.is_integer(y.args[1])&&y.args[1].value<0)I.throw_error(x.error.domain("not_less_than_zero",y.args[1],y.indicator));else{var F=new be(y.args[0].id.length,!1);I.prepend([new Qe(P.goal.replace(new H("=",[F,y.args[1]])),P.substitution,P)])}},"atom_concat/3":function(I,P,y){var F,z,X=y.args[0],$=y.args[1],ie=y.args[2];if(x.type.is_variable(ie)&&(x.type.is_variable(X)||x.type.is_variable($)))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_atom(X))I.throw_error(x.error.type("atom",X,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_atom($))I.throw_error(x.error.type("atom",$,y.indicator));else if(!x.type.is_variable(ie)&&!x.type.is_atom(ie))I.throw_error(x.error.type("atom",ie,y.indicator));else{var ke=x.type.is_variable(X),Ne=x.type.is_variable($);if(!ke&&!Ne)z=new H("=",[ie,new H(X.id+$.id)]),I.prepend([new Qe(P.goal.replace(z),P.substitution,P)]);else if(ke&&!Ne)F=ie.id.substr(0,ie.id.length-$.id.length),F+$.id===ie.id&&(z=new H("=",[X,new H(F)]),I.prepend([new Qe(P.goal.replace(z),P.substitution,P)]));else if(Ne&&!ke)F=ie.id.substr(X.id.length),X.id+F===ie.id&&(z=new H("=",[$,new H(F)]),I.prepend([new Qe(P.goal.replace(z),P.substitution,P)]));else{for(var st=[],ht=0;ht<=ie.id.length;ht++){var Ut=new H(ie.id.substr(0,ht)),Xt=new H(ie.id.substr(ht));z=new H(",",[new H("=",[Ut,X]),new H("=",[Xt,$])]),st.push(new Qe(P.goal.replace(z),P.substitution,P))}I.prepend(st)}}},"sub_atom/5":function(I,P,y){var F,z=y.args[0],X=y.args[1],$=y.args[2],ie=y.args[3],ke=y.args[4];if(x.type.is_variable(z))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_integer(X))I.throw_error(x.error.type("integer",X,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_integer($))I.throw_error(x.error.type("integer",$,y.indicator));else if(!x.type.is_variable(ie)&&!x.type.is_integer(ie))I.throw_error(x.error.type("integer",ie,y.indicator));else if(x.type.is_integer(X)&&X.value<0)I.throw_error(x.error.domain("not_less_than_zero",X,y.indicator));else if(x.type.is_integer($)&&$.value<0)I.throw_error(x.error.domain("not_less_than_zero",$,y.indicator));else if(x.type.is_integer(ie)&&ie.value<0)I.throw_error(x.error.domain("not_less_than_zero",ie,y.indicator));else{var Ne=[],st=[],ht=[];if(x.type.is_variable(X))for(F=0;F<=z.id.length;F++)Ne.push(F);else Ne.push(X.value);if(x.type.is_variable($))for(F=0;F<=z.id.length;F++)st.push(F);else st.push($.value);if(x.type.is_variable(ie))for(F=0;F<=z.id.length;F++)ht.push(F);else ht.push(ie.value);var Ut=[];for(var Xt in Ne)if(!!Ne.hasOwnProperty(Xt)){F=Ne[Xt];for(var xt in st)if(!!st.hasOwnProperty(xt)){var tn=st[xt],Dr=z.id.length-F-tn;if(e(ht,Dr)!==-1&&F+tn+Dr===z.id.length){var fr=z.id.substr(F,tn);if(z.id===z.id.substr(0,F)+fr+z.id.substr(F+tn,Dr)){var Br=new H("=",[new H(fr),ke]),jr=new H("=",[X,new be(F)]),Hn=new H("=",[$,new be(tn)]),bs=new H("=",[ie,new be(Dr)]),ki=new H(",",[new H(",",[new H(",",[jr,Hn]),bs]),Br]);Ut.push(new Qe(P.goal.replace(ki),P.substitution,P))}}}}I.prepend(Ut)}},"atom_chars/2":function(I,P,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_atom(F))I.throw_error(x.error.type("atom",F,y.indicator));else if(x.type.is_variable(F)){for(var ie=z,ke=x.type.is_variable(F),Ne="";ie.indicator==="./2";){if(x.type.is_character(ie.args[0]))Ne+=ie.args[0].id;else if(x.type.is_variable(ie.args[0])&&ke){I.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_variable(ie.args[0])){I.throw_error(x.error.type("character",ie.args[0],y.indicator));return}ie=ie.args[1]}x.type.is_variable(ie)&&ke?I.throw_error(x.error.instantiation(y.indicator)):!x.type.is_empty_list(ie)&&!x.type.is_variable(ie)?I.throw_error(x.error.type("list",z,y.indicator)):I.prepend([new Qe(P.goal.replace(new H("=",[new H(Ne),F])),P.substitution,P)])}else{for(var X=new H("[]"),$=F.id.length-1;$>=0;$--)X=new H(".",[new H(F.id.charAt($)),X]);I.prepend([new Qe(P.goal.replace(new H("=",[z,X])),P.substitution,P)])}},"atom_codes/2":function(I,P,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_atom(F))I.throw_error(x.error.type("atom",F,y.indicator));else if(x.type.is_variable(F)){for(var ie=z,ke=x.type.is_variable(F),Ne="";ie.indicator==="./2";){if(x.type.is_character_code(ie.args[0]))Ne+=u(ie.args[0].value);else if(x.type.is_variable(ie.args[0])&&ke){I.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_variable(ie.args[0])){I.throw_error(x.error.representation("character_code",y.indicator));return}ie=ie.args[1]}x.type.is_variable(ie)&&ke?I.throw_error(x.error.instantiation(y.indicator)):!x.type.is_empty_list(ie)&&!x.type.is_variable(ie)?I.throw_error(x.error.type("list",z,y.indicator)):I.prepend([new Qe(P.goal.replace(new H("=",[new H(Ne),F])),P.substitution,P)])}else{for(var X=new H("[]"),$=F.id.length-1;$>=0;$--)X=new H(".",[new be(n(F.id,$),!1),X]);I.prepend([new Qe(P.goal.replace(new H("=",[z,X])),P.substitution,P)])}},"char_code/2":function(I,P,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_character(F))I.throw_error(x.error.type("character",F,y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_integer(z))I.throw_error(x.error.type("integer",z,y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_character_code(z))I.throw_error(x.error.representation("character_code",y.indicator));else if(x.type.is_variable(z)){var X=new be(n(F.id,0),!1);I.prepend([new Qe(P.goal.replace(new H("=",[X,z])),P.substitution,P)])}else{var $=new H(u(z.value));I.prepend([new Qe(P.goal.replace(new H("=",[$,F])),P.substitution,P)])}},"number_chars/2":function(I,P,y){var F,z=y.args[0],X=y.args[1];if(x.type.is_variable(z)&&x.type.is_variable(X))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_number(z))I.throw_error(x.error.type("number",z,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_list(X))I.throw_error(x.error.type("list",X,y.indicator));else{var $=x.type.is_variable(z);if(!x.type.is_variable(X)){var ie=X,ke=!0;for(F="";ie.indicator==="./2";){if(x.type.is_character(ie.args[0]))F+=ie.args[0].id;else if(x.type.is_variable(ie.args[0]))ke=!1;else if(!x.type.is_variable(ie.args[0])){I.throw_error(x.error.type("character",ie.args[0],y.indicator));return}ie=ie.args[1]}if(ke=ke&&x.type.is_empty_list(ie),!x.type.is_empty_list(ie)&&!x.type.is_variable(ie)){I.throw_error(x.error.type("list",X,y.indicator));return}if(!ke&&$){I.throw_error(x.error.instantiation(y.indicator));return}else if(ke)if(x.type.is_variable(ie)&&$){I.throw_error(x.error.instantiation(y.indicator));return}else{var Ne=I.parse(F),st=Ne.value;!x.type.is_number(st)||Ne.tokens[Ne.tokens.length-1].space?I.throw_error(x.error.syntax_by_predicate("parseable_number",y.indicator)):I.prepend([new Qe(P.goal.replace(new H("=",[z,st])),P.substitution,P)]);return}}if(!$){F=z.toString();for(var ht=new H("[]"),Ut=F.length-1;Ut>=0;Ut--)ht=new H(".",[new H(F.charAt(Ut)),ht]);I.prepend([new Qe(P.goal.replace(new H("=",[X,ht])),P.substitution,P)])}}},"number_codes/2":function(I,P,y){var F,z=y.args[0],X=y.args[1];if(x.type.is_variable(z)&&x.type.is_variable(X))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_number(z))I.throw_error(x.error.type("number",z,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_list(X))I.throw_error(x.error.type("list",X,y.indicator));else{var $=x.type.is_variable(z);if(!x.type.is_variable(X)){var ie=X,ke=!0;for(F="";ie.indicator==="./2";){if(x.type.is_character_code(ie.args[0]))F+=u(ie.args[0].value);else if(x.type.is_variable(ie.args[0]))ke=!1;else if(!x.type.is_variable(ie.args[0])){I.throw_error(x.error.type("character_code",ie.args[0],y.indicator));return}ie=ie.args[1]}if(ke=ke&&x.type.is_empty_list(ie),!x.type.is_empty_list(ie)&&!x.type.is_variable(ie)){I.throw_error(x.error.type("list",X,y.indicator));return}if(!ke&&$){I.throw_error(x.error.instantiation(y.indicator));return}else if(ke)if(x.type.is_variable(ie)&&$){I.throw_error(x.error.instantiation(y.indicator));return}else{var Ne=I.parse(F),st=Ne.value;!x.type.is_number(st)||Ne.tokens[Ne.tokens.length-1].space?I.throw_error(x.error.syntax_by_predicate("parseable_number",y.indicator)):I.prepend([new Qe(P.goal.replace(new H("=",[z,st])),P.substitution,P)]);return}}if(!$){F=z.toString();for(var ht=new H("[]"),Ut=F.length-1;Ut>=0;Ut--)ht=new H(".",[new be(n(F,Ut),!1),ht]);I.prepend([new Qe(P.goal.replace(new H("=",[X,ht])),P.substitution,P)])}}},"upcase_atom/2":function(I,P,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)?I.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?!x.type.is_variable(z)&&!x.type.is_atom(z)?I.throw_error(x.error.type("atom",z,y.indicator)):I.prepend([new Qe(P.goal.replace(new H("=",[z,new H(F.id.toUpperCase(),[])])),P.substitution,P)]):I.throw_error(x.error.type("atom",F,y.indicator))},"downcase_atom/2":function(I,P,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)?I.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?!x.type.is_variable(z)&&!x.type.is_atom(z)?I.throw_error(x.error.type("atom",z,y.indicator)):I.prepend([new Qe(P.goal.replace(new H("=",[z,new H(F.id.toLowerCase(),[])])),P.substitution,P)]):I.throw_error(x.error.type("atom",F,y.indicator))},"atomic_list_concat/2":function(I,P,y){var F=y.args[0],z=y.args[1];I.prepend([new Qe(P.goal.replace(new H("atomic_list_concat",[F,new H("",[]),z])),P.substitution,P)])},"atomic_list_concat/3":function(I,P,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(x.type.is_variable(z)||x.type.is_variable(F)&&x.type.is_variable(X))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_list(F))I.throw_error(x.error.type("list",F,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_atom(X))I.throw_error(x.error.type("atom",X,y.indicator));else if(x.type.is_variable(X)){for(var ie="",ke=F;x.type.is_term(ke)&&ke.indicator==="./2";){if(!x.type.is_atom(ke.args[0])&&!x.type.is_number(ke.args[0])){I.throw_error(x.error.type("atomic",ke.args[0],y.indicator));return}ie!==""&&(ie+=z.id),x.type.is_atom(ke.args[0])?ie+=ke.args[0].id:ie+=""+ke.args[0].value,ke=ke.args[1]}ie=new H(ie,[]),x.type.is_variable(ke)?I.throw_error(x.error.instantiation(y.indicator)):!x.type.is_term(ke)||ke.indicator!=="[]/0"?I.throw_error(x.error.type("list",F,y.indicator)):I.prepend([new Qe(P.goal.replace(new H("=",[ie,X])),P.substitution,P)])}else{var $=g(o(X.id.split(z.id),function(Ne){return new H(Ne,[])}));I.prepend([new Qe(P.goal.replace(new H("=",[$,F])),P.substitution,P)])}},"@=</2":function(I,P,y){x.compare(y.args[0],y.args[1])<=0&&I.success(P)},"==/2":function(I,P,y){x.compare(y.args[0],y.args[1])===0&&I.success(P)},"\\==/2":function(I,P,y){x.compare(y.args[0],y.args[1])!==0&&I.success(P)},"@</2":function(I,P,y){x.compare(y.args[0],y.args[1])<0&&I.success(P)},"@>/2":function(I,P,y){x.compare(y.args[0],y.args[1])>0&&I.success(P)},"@>=/2":function(I,P,y){x.compare(y.args[0],y.args[1])>=0&&I.success(P)},"compare/3":function(I,P,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(!x.type.is_variable(F)&&!x.type.is_atom(F))I.throw_error(x.error.type("atom",F,y.indicator));else if(x.type.is_atom(F)&&["<",">","="].indexOf(F.id)===-1)I.throw_error(x.type.domain("order",F,y.indicator));else{var $=x.compare(z,X);$=$===0?"=":$===-1?"<":">",I.prepend([new Qe(P.goal.replace(new H("=",[F,new H($,[])])),P.substitution,P)])}},"is/2":function(I,P,y){var F=y.args[1].interpret(I);x.type.is_number(F)?I.prepend([new Qe(P.goal.replace(new H("=",[y.args[0],F],I.level)),P.substitution,P)]):I.throw_error(F)},"between/3":function(I,P,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(x.type.is_variable(F)||x.type.is_variable(z))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_integer(F))I.throw_error(x.error.type("integer",F,y.indicator));else if(!x.type.is_integer(z))I.throw_error(x.error.type("integer",z,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_integer(X))I.throw_error(x.error.type("integer",X,y.indicator));else if(x.type.is_variable(X)){var $=[new Qe(P.goal.replace(new H("=",[X,F])),P.substitution,P)];F.value<z.value&&$.push(new Qe(P.goal.replace(new H("between",[new be(F.value+1,!1),z,X])),P.substitution,P)),I.prepend($)}else F.value<=X.value&&z.value>=X.value&&I.success(P)},"succ/2":function(I,P,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)&&x.type.is_variable(z)?I.throw_error(x.error.instantiation(y.indicator)):!x.type.is_variable(F)&&!x.type.is_integer(F)?I.throw_error(x.error.type("integer",F,y.indicator)):!x.type.is_variable(z)&&!x.type.is_integer(z)?I.throw_error(x.error.type("integer",z,y.indicator)):!x.type.is_variable(F)&&F.value<0?I.throw_error(x.error.domain("not_less_than_zero",F,y.indicator)):!x.type.is_variable(z)&&z.value<0?I.throw_error(x.error.domain("not_less_than_zero",z,y.indicator)):(x.type.is_variable(z)||z.value>0)&&(x.type.is_variable(F)?I.prepend([new Qe(P.goal.replace(new H("=",[F,new be(z.value-1,!1)])),P.substitution,P)]):I.prepend([new Qe(P.goal.replace(new H("=",[z,new be(F.value+1,!1)])),P.substitution,P)]))},"=:=/2":function(I,P,y){var F=x.arithmetic_compare(I,y.args[0],y.args[1]);x.type.is_term(F)?I.throw_error(F):F===0&&I.success(P)},"=\\=/2":function(I,P,y){var F=x.arithmetic_compare(I,y.args[0],y.args[1]);x.type.is_term(F)?I.throw_error(F):F!==0&&I.success(P)},"</2":function(I,P,y){var F=x.arithmetic_compare(I,y.args[0],y.args[1]);x.type.is_term(F)?I.throw_error(F):F<0&&I.success(P)},"=</2":function(I,P,y){var F=x.arithmetic_compare(I,y.args[0],y.args[1]);x.type.is_term(F)?I.throw_error(F):F<=0&&I.success(P)},">/2":function(I,P,y){var F=x.arithmetic_compare(I,y.args[0],y.args[1]);x.type.is_term(F)?I.throw_error(F):F>0&&I.success(P)},">=/2":function(I,P,y){var F=x.arithmetic_compare(I,y.args[0],y.args[1]);x.type.is_term(F)?I.throw_error(F):F>=0&&I.success(P)},"var/1":function(I,P,y){x.type.is_variable(y.args[0])&&I.success(P)},"atom/1":function(I,P,y){x.type.is_atom(y.args[0])&&I.success(P)},"atomic/1":function(I,P,y){x.type.is_atomic(y.args[0])&&I.success(P)},"compound/1":function(I,P,y){x.type.is_compound(y.args[0])&&I.success(P)},"integer/1":function(I,P,y){x.type.is_integer(y.args[0])&&I.success(P)},"float/1":function(I,P,y){x.type.is_float(y.args[0])&&I.success(P)},"number/1":function(I,P,y){x.type.is_number(y.args[0])&&I.success(P)},"nonvar/1":function(I,P,y){x.type.is_variable(y.args[0])||I.success(P)},"ground/1":function(I,P,y){y.variables().length===0&&I.success(P)},"acyclic_term/1":function(I,P,y){for(var F=P.substitution.apply(P.substitution),z=y.args[0].variables(),X=0;X<z.length;X++)if(P.substitution.links[z[X]]!==void 0&&!P.substitution.links[z[X]].equals(F.links[z[X]]))return;I.success(P)},"callable/1":function(I,P,y){x.type.is_callable(y.args[0])&&I.success(P)},"is_list/1":function(I,P,y){for(var F=y.args[0];x.type.is_term(F)&&F.indicator==="./2";)F=F.args[1];x.type.is_term(F)&&F.indicator==="[]/0"&&I.success(P)},"current_input/1":function(I,P,y){var F=y.args[0];!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?I.throw_error(x.error.domain("stream",F,y.indicator)):(x.type.is_atom(F)&&I.get_stream_by_alias(F.id)&&(F=I.get_stream_by_alias(F.id)),I.prepend([new Qe(P.goal.replace(new H("=",[F,I.get_current_input()])),P.substitution,P)]))},"current_output/1":function(I,P,y){var F=y.args[0];!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?I.throw_error(x.error.domain("stream_or_alias",F,y.indicator)):(x.type.is_atom(F)&&I.get_stream_by_alias(F.id)&&(F=I.get_stream_by_alias(F.id)),I.prepend([new Qe(P.goal.replace(new H("=",[F,I.get_current_output()])),P.substitution,P)]))},"set_input/1":function(I,P,y){var F=y.args[0],z=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);x.type.is_variable(F)?I.throw_error(x.error.instantiation(y.indicator)):!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?I.throw_error(x.error.domain("stream_or_alias",F,y.indicator)):x.type.is_stream(z)?z.output===!0?I.throw_error(x.error.permission("input","stream",F,y.indicator)):(I.set_current_input(z),I.success(P)):I.throw_error(x.error.existence("stream",F,y.indicator))},"set_output/1":function(I,P,y){var F=y.args[0],z=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);x.type.is_variable(F)?I.throw_error(x.error.instantiation(y.indicator)):!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?I.throw_error(x.error.domain("stream_or_alias",F,y.indicator)):x.type.is_stream(z)?z.input===!0?I.throw_error(x.error.permission("output","stream",F,y.indicator)):(I.set_current_output(z),I.success(P)):I.throw_error(x.error.existence("stream",F,y.indicator))},"open/3":function(I,P,y){var F=y.args[0],z=y.args[1],X=y.args[2];I.prepend([new Qe(P.goal.replace(new H("open",[F,z,X,new H("[]",[])])),P.substitution,P)])},"open/4":function(I,P,y){var F=y.args[0],z=y.args[1],X=y.args[2],$=y.args[3];if(x.type.is_variable(F)||x.type.is_variable(z))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_atom(z))I.throw_error(x.error.type("atom",z,y.indicator));else if(!x.type.is_list($))I.throw_error(x.error.type("list",$,y.indicator));else if(!x.type.is_variable(X))I.throw_error(x.error.type("variable",X,y.indicator));else if(!x.type.is_atom(F)&&!x.type.is_streamable(F))I.throw_error(x.error.domain("source_sink",F,y.indicator));else if(!x.type.is_io_mode(z))I.throw_error(x.error.domain("io_mode",z,y.indicator));else{for(var ie={},ke=$,Ne;x.type.is_term(ke)&&ke.indicator==="./2";){if(Ne=ke.args[0],x.type.is_variable(Ne)){I.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_stream_option(Ne)){I.throw_error(x.error.domain("stream_option",Ne,y.indicator));return}ie[Ne.id]=Ne.args[0].id,ke=ke.args[1]}if(ke.indicator!=="[]/0"){x.type.is_variable(ke)?I.throw_error(x.error.instantiation(y.indicator)):I.throw_error(x.error.type("list",$,y.indicator));return}else{var st=ie.alias;if(st&&I.get_stream_by_alias(st)){I.throw_error(x.error.permission("open","source_sink",new H("alias",[new H(st,[])]),y.indicator));return}ie.type||(ie.type="text");var ht;if(x.type.is_atom(F)?ht=I.file_system_open(F.id,ie.type,z.id):ht=F.stream(ie.type,z.id),ht===!1){I.throw_error(x.error.permission("open","source_sink",F,y.indicator));return}else if(ht===null){I.throw_error(x.error.existence("source_sink",F,y.indicator));return}var Ut=new Me(ht,z.id,ie.alias,ie.type,ie.reposition==="true",ie.eof_action);st?I.session.streams[st]=Ut:I.session.streams[Ut.id]=Ut,I.prepend([new Qe(P.goal.replace(new H("=",[X,Ut])),P.substitution,P)])}}},"close/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H("close",[F,new H("[]",[])])),P.substitution,P)])},"close/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);if(x.type.is_variable(F)||x.type.is_variable(z))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_list(z))I.throw_error(x.error.type("list",z,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))I.throw_error(x.error.domain("stream_or_alias",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)I.throw_error(x.error.existence("stream",F,y.indicator));else{for(var $={},ie=z,ke;x.type.is_term(ie)&&ie.indicator==="./2";){if(ke=ie.args[0],x.type.is_variable(ke)){I.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_close_option(ke)){I.throw_error(x.error.domain("close_option",ke,y.indicator));return}$[ke.id]=ke.args[0].id==="true",ie=ie.args[1]}if(ie.indicator!=="[]/0"){x.type.is_variable(ie)?I.throw_error(x.error.instantiation(y.indicator)):I.throw_error(x.error.type("list",z,y.indicator));return}else{if(X===I.session.standard_input||X===I.session.standard_output){I.success(P);return}else X===I.session.current_input?I.session.current_input=I.session.standard_input:X===I.session.current_output&&(I.session.current_output=I.session.current_output);X.alias!==null?delete I.session.streams[X.alias]:delete I.session.streams[X.id],X.output&&X.stream.flush();var Ne=X.stream.close();X.stream=null,($.force===!0||Ne===!0)&&I.success(P)}}},"flush_output/0":function(I,P,y){I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_output",[new me("S")]),new H("flush_output",[new me("S")])])),P.substitution,P)])},"flush_output/1":function(I,P,y){var F=y.args[0],z=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);x.type.is_variable(F)?I.throw_error(x.error.instantiation(y.indicator)):!x.type.is_stream(F)&&!x.type.is_atom(F)?I.throw_error(x.error.domain("stream_or_alias",F,y.indicator)):!x.type.is_stream(z)||z.stream===null?I.throw_error(x.error.existence("stream",F,y.indicator)):F.input===!0?I.throw_error(x.error.permission("output","stream",output,y.indicator)):(z.stream.flush(),I.success(P))},"stream_property/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);if(!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F))I.throw_error(x.error.domain("stream_or_alias",F,y.indicator));else if(!x.type.is_variable(F)&&(!x.type.is_stream(X)||X.stream===null))I.throw_error(x.error.existence("stream",F,y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_stream_property(z))I.throw_error(x.error.domain("stream_property",z,y.indicator));else{var $=[],ie=[];if(!x.type.is_variable(F))$.push(X);else for(var ke in I.session.streams)$.push(I.session.streams[ke]);for(var Ne=0;Ne<$.length;Ne++){var st=[];$[Ne].filename&&st.push(new H("file_name",[new H($[Ne].file_name,[])])),st.push(new H("mode",[new H($[Ne].mode,[])])),st.push(new H($[Ne].input?"input":"output",[])),$[Ne].alias&&st.push(new H("alias",[new H($[Ne].alias,[])])),st.push(new H("position",[typeof $[Ne].position=="number"?new be($[Ne].position,!1):new H($[Ne].position,[])])),st.push(new H("end_of_stream",[new H($[Ne].position==="end_of_stream"?"at":$[Ne].position==="past_end_of_stream"?"past":"not",[])])),st.push(new H("eof_action",[new H($[Ne].eof_action,[])])),st.push(new H("reposition",[new H($[Ne].reposition?"true":"false",[])])),st.push(new H("type",[new H($[Ne].type,[])]));for(var ht=0;ht<st.length;ht++)ie.push(new Qe(P.goal.replace(new H(",",[new H("=",[x.type.is_variable(F)?F:X,$[Ne]]),new H("=",[z,st[ht]])])),P.substitution,P))}I.prepend(ie)}},"at_end_of_stream/0":function(I,P,y){I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_input",[new me("S")]),new H(",",[new H("stream_property",[new me("S"),new H("end_of_stream",[new me("E")])]),new H(",",[new H("!",[]),new H(";",[new H("=",[new me("E"),new H("at",[])]),new H("=",[new me("E"),new H("past",[])])])])])])),P.substitution,P)])},"at_end_of_stream/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("stream_property",[F,new H("end_of_stream",[new me("E")])]),new H(",",[new H("!",[]),new H(";",[new H("=",[new me("E"),new H("at",[])]),new H("=",[new me("E"),new H("past",[])])])])])),P.substitution,P)])},"set_stream_position/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);x.type.is_variable(F)||x.type.is_variable(z)?I.throw_error(x.error.instantiation(y.indicator)):!x.type.is_stream(F)&&!x.type.is_atom(F)?I.throw_error(x.error.domain("stream_or_alias",F,y.indicator)):!x.type.is_stream(X)||X.stream===null?I.throw_error(x.error.existence("stream",F,y.indicator)):x.type.is_stream_position(z)?X.reposition===!1?I.throw_error(x.error.permission("reposition","stream",F,y.indicator)):(x.type.is_integer(z)?X.position=z.value:X.position=z.id,I.success(P)):I.throw_error(x.error.domain("stream_position",z,y.indicator))},"get_char/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_input",[new me("S")]),new H("get_char",[new me("S"),F])])),P.substitution,P)])},"get_char/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);if(x.type.is_variable(F))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_character(z))I.throw_error(x.error.type("in_character",z,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))I.throw_error(x.error.domain("stream_or_alias",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)I.throw_error(x.error.existence("stream",F,y.indicator));else if(X.output)I.throw_error(x.error.permission("input","stream",F,y.indicator));else if(X.type==="binary")I.throw_error(x.error.permission("input","binary_stream",F,y.indicator));else if(X.position==="past_end_of_stream"&&X.eof_action==="error")I.throw_error(x.error.permission("input","past_end_of_stream",F,y.indicator));else{var $;if(X.position==="end_of_stream")$="end_of_file",X.position="past_end_of_stream";else{if($=X.stream.get(1,X.position),$===null){I.throw_error(x.error.representation("character",y.indicator));return}X.position++}I.prepend([new Qe(P.goal.replace(new H("=",[new H($,[]),z])),P.substitution,P)])}},"get_code/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_input",[new me("S")]),new H("get_code",[new me("S"),F])])),P.substitution,P)])},"get_code/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);if(x.type.is_variable(F))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_integer(z))I.throw_error(x.error.type("integer",char,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F))I.throw_error(x.error.domain("stream_or_alias",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)I.throw_error(x.error.existence("stream",F,y.indicator));else if(X.output)I.throw_error(x.error.permission("input","stream",F,y.indicator));else if(X.type==="binary")I.throw_error(x.error.permission("input","binary_stream",F,y.indicator));else if(X.position==="past_end_of_stream"&&X.eof_action==="error")I.throw_error(x.error.permission("input","past_end_of_stream",F,y.indicator));else{var $;if(X.position==="end_of_stream")$=-1,X.position="past_end_of_stream";else{if($=X.stream.get(1,X.position),$===null){I.throw_error(x.error.representation("character",y.indicator));return}$=n($,0),X.position++}I.prepend([new Qe(P.goal.replace(new H("=",[new be($,!1),z])),P.substitution,P)])}},"peek_char/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_input",[new me("S")]),new H("peek_char",[new me("S"),F])])),P.substitution,P)])},"peek_char/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);if(x.type.is_variable(F))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_character(z))I.throw_error(x.error.type("in_character",z,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))I.throw_error(x.error.domain("stream_or_alias",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)I.throw_error(x.error.existence("stream",F,y.indicator));else if(X.output)I.throw_error(x.error.permission("input","stream",F,y.indicator));else if(X.type==="binary")I.throw_error(x.error.permission("input","binary_stream",F,y.indicator));else if(X.position==="past_end_of_stream"&&X.eof_action==="error")I.throw_error(x.error.permission("input","past_end_of_stream",F,y.indicator));else{var $;if(X.position==="end_of_stream")$="end_of_file",X.position="past_end_of_stream";else if($=X.stream.get(1,X.position),$===null){I.throw_error(x.error.representation("character",y.indicator));return}I.prepend([new Qe(P.goal.replace(new H("=",[new H($,[]),z])),P.substitution,P)])}},"peek_code/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_input",[new me("S")]),new H("peek_code",[new me("S"),F])])),P.substitution,P)])},"peek_code/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);if(x.type.is_variable(F))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_integer(z))I.throw_error(x.error.type("integer",char,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F))I.throw_error(x.error.domain("stream_or_alias",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)I.throw_error(x.error.existence("stream",F,y.indicator));else if(X.output)I.throw_error(x.error.permission("input","stream",F,y.indicator));else if(X.type==="binary")I.throw_error(x.error.permission("input","binary_stream",F,y.indicator));else if(X.position==="past_end_of_stream"&&X.eof_action==="error")I.throw_error(x.error.permission("input","past_end_of_stream",F,y.indicator));else{var $;if(X.position==="end_of_stream")$=-1,X.position="past_end_of_stream";else{if($=X.stream.get(1,X.position),$===null){I.throw_error(x.error.representation("character",y.indicator));return}$=n($,0)}I.prepend([new Qe(P.goal.replace(new H("=",[new be($,!1),z])),P.substitution,P)])}},"put_char/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_output",[new me("S")]),new H("put_char",[new me("S"),F])])),P.substitution,P)])},"put_char/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);x.type.is_variable(F)||x.type.is_variable(z)?I.throw_error(x.error.instantiation(y.indicator)):x.type.is_character(z)?!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?I.throw_error(x.error.domain("stream_or_alias",F,y.indicator)):!x.type.is_stream(X)||X.stream===null?I.throw_error(x.error.existence("stream",F,y.indicator)):X.input?I.throw_error(x.error.permission("output","stream",F,y.indicator)):X.type==="binary"?I.throw_error(x.error.permission("output","binary_stream",F,y.indicator)):X.stream.put(z.id,X.position)&&(typeof X.position=="number"&&X.position++,I.success(P)):I.throw_error(x.error.type("character",z,y.indicator))},"put_code/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_output",[new me("S")]),new H("put_code",[new me("S"),F])])),P.substitution,P)])},"put_code/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);x.type.is_variable(F)||x.type.is_variable(z)?I.throw_error(x.error.instantiation(y.indicator)):x.type.is_integer(z)?x.type.is_character_code(z)?!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?I.throw_error(x.error.domain("stream_or_alias",F,y.indicator)):!x.type.is_stream(X)||X.stream===null?I.throw_error(x.error.existence("stream",F,y.indicator)):X.input?I.throw_error(x.error.permission("output","stream",F,y.indicator)):X.type==="binary"?I.throw_error(x.error.permission("output","binary_stream",F,y.indicator)):X.stream.put_char(u(z.value),X.position)&&(typeof X.position=="number"&&X.position++,I.success(P)):I.throw_error(x.error.representation("character_code",y.indicator)):I.throw_error(x.error.type("integer",z,y.indicator))},"nl/0":function(I,P,y){I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_output",[new me("S")]),new H("put_char",[new me("S"),new H(` |
265 | `,[])])])),P.substitution,P)])},"nl/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H("put_char",[F,new H(` | 265 | `,[])])])),P.substitution,P)])},"nl/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H("put_char",[F,new H(` |
266 | `,[])])),P.substitution,P)])},"get_byte/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_input",[new me("S")]),new H("get_byte",[new me("S"),F])])),P.substitution,P)])},"get_byte/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);if(x.type.is_variable(F))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_byte(z))I.throw_error(x.error.type("in_byte",char,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))I.throw_error(x.error.domain("stream_or_alias",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)I.throw_error(x.error.existence("stream",F,y.indicator));else if(X.output)I.throw_error(x.error.permission("input","stream",F,y.indicator));else if(X.type==="text")I.throw_error(x.error.permission("input","text_stream",F,y.indicator));else if(X.position==="past_end_of_stream"&&X.eof_action==="error")I.throw_error(x.error.permission("input","past_end_of_stream",F,y.indicator));else{var $;if(X.position==="end_of_stream")$="end_of_file",X.position="past_end_of_stream";else{if($=X.stream.get_byte(X.position),$===null){I.throw_error(x.error.representation("byte",y.indicator));return}X.position++}I.prepend([new Qe(P.goal.replace(new H("=",[new be($,!1),z])),P.substitution,P)])}},"peek_byte/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_input",[new me("S")]),new H("peek_byte",[new me("S"),F])])),P.substitution,P)])},"peek_byte/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);if(x.type.is_variable(F))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_byte(z))I.throw_error(x.error.type("in_byte",char,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))I.throw_error(x.error.domain("stream_or_alias",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)I.throw_error(x.error.existence("stream",F,y.indicator));else if(X.output)I.throw_error(x.error.permission("input","stream",F,y.indicator));else if(X.type==="text")I.throw_error(x.error.permission("input","text_stream",F,y.indicator));else if(X.position==="past_end_of_stream"&&X.eof_action==="error")I.throw_error(x.error.permission("input","past_end_of_stream",F,y.indicator));else{var $;if(X.position==="end_of_stream")$="end_of_file",X.position="past_end_of_stream";else if($=X.stream.get_byte(X.position),$===null){I.throw_error(x.error.representation("byte",y.indicator));return}I.prepend([new Qe(P.goal.replace(new H("=",[new be($,!1),z])),P.substitution,P)])}},"put_byte/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_output",[new me("S")]),new H("put_byte",[new me("S"),F])])),P.substitution,P)])},"put_byte/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);x.type.is_variable(F)||x.type.is_variable(z)?I.throw_error(x.error.instantiation(y.indicator)):x.type.is_byte(z)?!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?I.throw_error(x.error.domain("stream_or_alias",F,y.indicator)):!x.type.is_stream(X)||X.stream===null?I.throw_error(x.error.existence("stream",F,y.indicator)):X.input?I.throw_error(x.error.permission("output","stream",F,y.indicator)):X.type==="text"?I.throw_error(x.error.permission("output","text_stream",F,y.indicator)):X.stream.put_byte(z.value,X.position)&&(typeof X.position=="number"&&X.position++,I.success(P)):I.throw_error(x.error.type("byte",z,y.indicator))},"read/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_input",[new me("S")]),new H("read_term",[new me("S"),F,new H("[]",[])])])),P.substitution,P)])},"read/2":function(I,P,y){var F=y.args[0],z=y.args[1];I.prepend([new Qe(P.goal.replace(new H("read_term",[F,z,new H("[]",[])])),P.substitution,P)])},"read_term/2":function(I,P,y){var F=y.args[0],z=y.args[1];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_input",[new me("S")]),new H("read_term",[new me("S"),F,z])])),P.substitution,P)])},"read_term/3":function(I,P,y){var F=y.args[0],z=y.args[1],X=y.args[2],$=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);if(x.type.is_variable(F)||x.type.is_variable(X))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_list(X))I.throw_error(x.error.type("list",X,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))I.throw_error(x.error.domain("stream_or_alias",F,y.indicator));else if(!x.type.is_stream($)||$.stream===null)I.throw_error(x.error.existence("stream",F,y.indicator));else if($.output)I.throw_error(x.error.permission("input","stream",F,y.indicator));else if($.type==="binary")I.throw_error(x.error.permission("input","binary_stream",F,y.indicator));else if($.position==="past_end_of_stream"&&$.eof_action==="error")I.throw_error(x.error.permission("input","past_end_of_stream",F,y.indicator));else{for(var ie={},ke=X,Ne;x.type.is_term(ke)&&ke.indicator==="./2";){if(Ne=ke.args[0],x.type.is_variable(Ne)){I.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_read_option(Ne)){I.throw_error(x.error.domain("read_option",Ne,y.indicator));return}ie[Ne.id]=Ne.args[0],ke=ke.args[1]}if(ke.indicator!=="[]/0"){x.type.is_variable(ke)?I.throw_error(x.error.instantiation(y.indicator)):I.throw_error(x.error.type("list",X,y.indicator));return}else{for(var st,ht,Ut,Xt="",Pt=[],tn=null;tn===null||tn.name!=="atom"||tn.value!=="."||Ut.type===A&&x.flatten_error(new H("throw",[Ut.value])).found==="token_not_found";){if(st=$.stream.get(1,$.position),st===null){I.throw_error(x.error.representation("character",y.indicator));return}if(st==="end_of_file"||st==="past_end_of_file"){Ut?I.throw_error(x.error.syntax(Pt[Ut.len-1],". or expression expected",!1)):I.throw_error(x.error.syntax(null,"token not found",!0));return}$.position++,Xt+=st,ht=new _(I),ht.new_text(Xt),Pt=ht.get_tokens(),tn=Pt!==null&&Pt.length>0?Pt[Pt.length-1]:null,Pt!==null&&(Ut=J(I,Pt,0,I.__get_max_priority(),!1))}if(Ut.type===p&&Ut.len===Pt.length-1&&tn.value==="."){Ut=Ut.value.rename(I);var Dr=new H("=",[z,Ut]);if(ie.variables){var fr=g(o(Ee(Ut.variables()),function(Br){return new me(Br)}));Dr=new H(",",[Dr,new H("=",[ie.variables,fr])])}if(ie.variable_names){var fr=g(o(Ee(Ut.variables()),function(jr){var Hn;for(Hn in I.session.renamed_variables)if(I.session.renamed_variables.hasOwnProperty(Hn)&&I.session.renamed_variables[Hn]===jr)break;return new H("=",[new H(Hn,[]),new me(jr)])}));Dr=new H(",",[Dr,new H("=",[ie.variable_names,fr])])}if(ie.singletons){var fr=g(o(new Ue(Ut,null).singleton_variables(),function(jr){var Hn;for(Hn in I.session.renamed_variables)if(I.session.renamed_variables.hasOwnProperty(Hn)&&I.session.renamed_variables[Hn]===jr)break;return new H("=",[new H(Hn,[]),new me(jr)])}));Dr=new H(",",[Dr,new H("=",[ie.singletons,fr])])}I.prepend([new Qe(P.goal.replace(Dr),P.substitution,P)])}else Ut.type===p?I.throw_error(x.error.syntax(Pt[Ut.len],"unexpected token",!1)):I.throw_error(Ut.value)}}},"write/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_output",[new me("S")]),new H("write",[new me("S"),F])])),P.substitution,P)])},"write/2":function(I,P,y){var F=y.args[0],z=y.args[1];I.prepend([new Qe(P.goal.replace(new H("write_term",[F,z,new H(".",[new H("quoted",[new H("false",[])]),new H(".",[new H("ignore_ops",[new H("false")]),new H(".",[new H("numbervars",[new H("true")]),new H("[]",[])])])])])),P.substitution,P)])},"writeq/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_output",[new me("S")]),new H("writeq",[new me("S"),F])])),P.substitution,P)])},"writeq/2":function(I,P,y){var F=y.args[0],z=y.args[1];I.prepend([new Qe(P.goal.replace(new H("write_term",[F,z,new H(".",[new H("quoted",[new H("true",[])]),new H(".",[new H("ignore_ops",[new H("false")]),new H(".",[new H("numbervars",[new H("true")]),new H("[]",[])])])])])),P.substitution,P)])},"write_canonical/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_output",[new me("S")]),new H("write_canonical",[new me("S"),F])])),P.substitution,P)])},"write_canonical/2":function(I,P,y){var F=y.args[0],z=y.args[1];I.prepend([new Qe(P.goal.replace(new H("write_term",[F,z,new H(".",[new H("quoted",[new H("true",[])]),new H(".",[new H("ignore_ops",[new H("true")]),new H(".",[new H("numbervars",[new H("false")]),new H("[]",[])])])])])),P.substitution,P)])},"write_term/2":function(I,P,y){var F=y.args[0],z=y.args[1];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_output",[new me("S")]),new H("write_term",[new me("S"),F,z])])),P.substitution,P)])},"write_term/3":function(I,P,y){var F=y.args[0],z=y.args[1],X=y.args[2],$=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);if(x.type.is_variable(F)||x.type.is_variable(X))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_list(X))I.throw_error(x.error.type("list",X,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))I.throw_error(x.error.domain("stream_or_alias",F,y.indicator));else if(!x.type.is_stream($)||$.stream===null)I.throw_error(x.error.existence("stream",F,y.indicator));else if($.input)I.throw_error(x.error.permission("output","stream",F,y.indicator));else if($.type==="binary")I.throw_error(x.error.permission("output","binary_stream",F,y.indicator));else if($.position==="past_end_of_stream"&&$.eof_action==="error")I.throw_error(x.error.permission("output","past_end_of_stream",F,y.indicator));else{for(var ie={},ke=X,Ne;x.type.is_term(ke)&&ke.indicator==="./2";){if(Ne=ke.args[0],x.type.is_variable(Ne)){I.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_write_option(Ne)){I.throw_error(x.error.domain("write_option",Ne,y.indicator));return}ie[Ne.id]=Ne.args[0].id==="true",ke=ke.args[1]}if(ke.indicator!=="[]/0"){x.type.is_variable(ke)?I.throw_error(x.error.instantiation(y.indicator)):I.throw_error(x.error.type("list",X,y.indicator));return}else{ie.session=I.session;var st=z.toString(ie);$.stream.put(st,$.position),typeof $.position=="number"&&($.position+=st.length),I.success(P)}}},"halt/0":function(I,P,y){I.points=[]},"halt/1":function(I,P,y){var F=y.args[0];x.type.is_variable(F)?I.throw_error(x.error.instantiation(y.indicator)):x.type.is_integer(F)?I.points=[]:I.throw_error(x.error.type("integer",F,y.indicator))},"current_prolog_flag/2":function(I,P,y){var F=y.args[0],z=y.args[1];if(!x.type.is_variable(F)&&!x.type.is_atom(F))I.throw_error(x.error.type("atom",F,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_flag(F))I.throw_error(x.error.domain("prolog_flag",F,y.indicator));else{var X=[];for(var $ in x.flag)if(!!x.flag.hasOwnProperty($)){var ie=new H(",",[new H("=",[new H($),F]),new H("=",[I.get_flag($),z])]);X.push(new Qe(P.goal.replace(ie),P.substitution,P))}I.prepend(X)}},"set_prolog_flag/2":function(I,P,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)||x.type.is_variable(z)?I.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?x.type.is_flag(F)?x.type.is_value_flag(F,z)?x.type.is_modifiable_flag(F)?(I.session.flag[F.id]=z,I.success(P)):I.throw_error(x.error.permission("modify","flag",F)):I.throw_error(x.error.domain("flag_value",new H("+",[F,z]),y.indicator)):I.throw_error(x.error.domain("prolog_flag",F,y.indicator)):I.throw_error(x.error.type("atom",F,y.indicator))}},flag:{bounded:{allowed:[new H("true"),new H("false")],value:new H("true"),changeable:!1},max_integer:{allowed:[new be(Number.MAX_SAFE_INTEGER)],value:new be(Number.MAX_SAFE_INTEGER),changeable:!1},min_integer:{allowed:[new be(Number.MIN_SAFE_INTEGER)],value:new be(Number.MIN_SAFE_INTEGER),changeable:!1},integer_rounding_function:{allowed:[new H("down"),new H("toward_zero")],value:new H("toward_zero"),changeable:!1},char_conversion:{allowed:[new H("on"),new H("off")],value:new H("on"),changeable:!0},debug:{allowed:[new H("on"),new H("off")],value:new H("off"),changeable:!0},max_arity:{allowed:[new H("unbounded")],value:new H("unbounded"),changeable:!1},unknown:{allowed:[new H("error"),new H("fail"),new H("warning")],value:new H("error"),changeable:!0},double_quotes:{allowed:[new H("chars"),new H("codes"),new H("atom")],value:new H("codes"),changeable:!0},occurs_check:{allowed:[new H("false"),new H("true")],value:new H("false"),changeable:!0},dialect:{allowed:[new H("tau")],value:new H("tau"),changeable:!1},version_data:{allowed:[new H("tau",[new be(t.major,!1),new be(t.minor,!1),new be(t.patch,!1),new H(t.status)])],value:new H("tau",[new be(t.major,!1),new be(t.minor,!1),new be(t.patch,!1),new H(t.status)]),changeable:!1},nodejs:{allowed:[new H("yes"),new H("no")],value:new H(typeof pl<"u"&&pl.exports?"yes":"no"),changeable:!1}},unify:function(I,P,y){y=y===void 0?!1:y;for(var F=[{left:I,right:P}],z={};F.length!==0;){var X=F.pop();if(I=X.left,P=X.right,x.type.is_term(I)&&x.type.is_term(P)){if(I.indicator!==P.indicator)return null;for(var $=0;$<I.args.length;$++)F.push({left:I.args[$],right:P.args[$]})}else if(x.type.is_number(I)&&x.type.is_number(P)){if(I.value!==P.value||I.is_float!==P.is_float)return null}else if(x.type.is_variable(I)){if(x.type.is_variable(P)&&I.id===P.id)continue;if(y===!0&&P.variables().indexOf(I.id)!==-1)return null;if(I.id!=="_"){var ie=new Te;ie.add(I.id,P);for(var $=0;$<F.length;$++)F[$].left=F[$].left.apply(ie),F[$].right=F[$].right.apply(ie);for(var $ in z)z[$]=z[$].apply(ie);z[I.id]=P}}else if(x.type.is_variable(P))F.push({left:P,right:I});else if(I.unify!==void 0){if(!I.unify(P))return null}else return null}return new Te(z)},compare:function(I,P){var y=x.type.compare(I,P);return y!==0?y:I.compare(P)},arithmetic_compare:function(I,P,y){var F=P.interpret(I);if(x.type.is_number(F)){var z=y.interpret(I);return x.type.is_number(z)?F.value<z.value?-1:F.value>z.value?1:0:z}else return F},operate:function(I,P){if(x.type.is_operator(P)){for(var y=x.type.is_operator(P),F=[],z,X=!1,$=0;$<P.args.length;$++){if(z=P.args[$].interpret(I),x.type.is_number(z)){if(y.type_args!==null&&z.is_float!==y.type_args)return x.error.type(y.type_args?"float":"integer",z,I.__call_indicator);F.push(z.value)}else return z;X=X||z.is_float}return F.push(I),z=x.arithmetic.evaluation[P.indicator].fn.apply(this,F),X=y.type_result===null?X:y.type_result,x.type.is_term(z)?z:z===Number.POSITIVE_INFINITY||z===Number.NEGATIVE_INFINITY?x.error.evaluation("overflow",I.__call_indicator):X===!1&&I.get_flag("bounded").id==="true"&&(z>I.get_flag("max_integer").value||z<I.get_flag("min_integer").value)?x.error.evaluation("int_overflow",I.__call_indicator):new be(z,X)}else return x.error.type("evaluable",P.indicator,I.__call_indicator)},error:{existence:function(I,P,y){return typeof P=="string"&&(P=Z(P)),new H("error",[new H("existence_error",[new H(I),P]),Z(y)])},type:function(I,P,y){return new H("error",[new H("type_error",[new H(I),P]),Z(y)])},instantiation:function(I){return new H("error",[new H("instantiation_error"),Z(I)])},domain:function(I,P,y){return new H("error",[new H("domain_error",[new H(I),P]),Z(y)])},representation:function(I,P){return new H("error",[new H("representation_error",[new H(I)]),Z(P)])},permission:function(I,P,y,F){return new H("error",[new H("permission_error",[new H(I),new H(P),y]),Z(F)])},evaluation:function(I,P){return new H("error",[new H("evaluation_error",[new H(I)]),Z(P)])},syntax:function(I,P,y){I=I||{value:"",line:0,column:0,matches:[""],start:0};var F=y&&I.matches.length>0?I.start+I.matches[0].length:I.start,z=y?new H("token_not_found"):new H("found",[new H(I.value.toString())]),X=new H(".",[new H("line",[new be(I.line+1)]),new H(".",[new H("column",[new be(F+1)]),new H(".",[z,new H("[]",[])])])]);return new H("error",[new H("syntax_error",[new H(P)]),X])},syntax_by_predicate:function(I,P){return new H("error",[new H("syntax_error",[new H(I)]),Z(P)])}},warning:{singleton:function(I,P,y){for(var F=new H("[]"),z=I.length-1;z>=0;z--)F=new H(".",[new me(I[z]),F]);return new H("warning",[new H("singleton_variables",[F,Z(P)]),new H(".",[new H("line",[new be(y,!1)]),new H("[]")])])},failed_goal:function(I,P){return new H("warning",[new H("failed_goal",[I]),new H(".",[new H("line",[new be(P,!1)]),new H("[]")])])}},format_variable:function(I){return"_"+I},format_answer:function(I,P,F){P instanceof je&&(P=P.thread);var F=F||{};if(F.session=P?P.session:void 0,x.type.is_error(I))return"uncaught exception: "+I.args[0].toString();if(I===!1)return"false.";if(I===null)return"limit exceeded ;";var z=0,X="";if(x.type.is_substitution(I)){var $=I.domain(!0);I=I.filter(function(Ne,st){return!x.type.is_variable(st)||$.indexOf(st.id)!==-1&&Ne!==st.id})}for(var ie in I.links)!I.links.hasOwnProperty(ie)||(z++,X!==""&&(X+=", "),X+=ie.toString(F)+" = "+I.links[ie].toString(F));var ke=typeof P>"u"||P.points.length>0?" ;":".";return z===0?"true"+ke:X+ke},flatten_error:function(I){if(!x.type.is_error(I))return null;I=I.args[0];var P={};return P.type=I.args[0].id,P.thrown=P.type==="syntax_error"?null:I.args[1].id,P.expected=null,P.found=null,P.representation=null,P.existence=null,P.existence_type=null,P.line=null,P.column=null,P.permission_operation=null,P.permission_type=null,P.evaluation_type=null,P.type==="type_error"||P.type==="domain_error"?(P.expected=I.args[0].args[0].id,P.found=I.args[0].args[1].toString()):P.type==="syntax_error"?I.args[1].indicator==="./2"?(P.expected=I.args[0].args[0].id,P.found=I.args[1].args[1].args[1].args[0],P.found=P.found.id==="token_not_found"?P.found.id:P.found.args[0].id,P.line=I.args[1].args[0].args[0].value,P.column=I.args[1].args[1].args[0].args[0].value):P.thrown=I.args[1].id:P.type==="permission_error"?(P.found=I.args[0].args[2].toString(),P.permission_operation=I.args[0].args[0].id,P.permission_type=I.args[0].args[1].id):P.type==="evaluation_error"?P.evaluation_type=I.args[0].args[0].id:P.type==="representation_error"?P.representation=I.args[0].args[0].id:P.type==="existence_error"&&(P.existence=I.args[0].args[1].toString(),P.existence_type=I.args[0].args[0].id),P},create:function(I){return new x.type.Session(I)}};typeof pl<"u"?pl.exports=x:window.pl=x})()});function Cme(t,e,r){t.prepend(r.map(o=>new Ra.default.type.State(e.goal.replace(o),e.substitution,e)))}function dH(t){let e=wme.get(t.session);if(e==null)throw new Error("Assertion failed: A project should have been registered for the active session");return e}function Bme(t,e){wme.set(t,e),t.consult(`:- use_module(library(${egt.id})).`)}var mH,Ra,Ime,oh,Zht,$ht,wme,egt,vme=dt(()=>{Ke();mH=tt(z1()),Ra=tt(gH()),Ime=tt(Ie("vm")),{is_atom:oh,is_variable:Zht,is_instantiated_list:$ht}=Ra.default.type;wme=new WeakMap;egt=new Ra.default.type.Module("constraints",{["project_workspaces_by_descriptor/3"]:(t,e,r)=>{let[o,a,n]=r.args;if(!oh(o)||!oh(a)){t.throw_error(Ra.default.error.instantiation(r.indicator));return}let u=Y.parseIdent(o.id),A=Y.makeDescriptor(u,a.id),h=dH(t).tryWorkspaceByDescriptor(A);Zht(n)&&h!==null&&Cme(t,e,[new Ra.default.type.Term("=",[n,new Ra.default.type.Term(String(h.relativeCwd))])]),oh(n)&&h!==null&&h.relativeCwd===n.id&&t.success(e)},["workspace_field/3"]:(t,e,r)=>{let[o,a,n]=r.args;if(!oh(o)||!oh(a)){t.throw_error(Ra.default.error.instantiation(r.indicator));return}let A=dH(t).tryWorkspaceByCwd(o.id);if(A==null)return;let p=(0,mH.default)(A.manifest.raw,a.id);typeof p>"u"||Cme(t,e,[new Ra.default.type.Term("=",[n,new Ra.default.type.Term(typeof p=="object"?JSON.stringify(p):p)])])},["workspace_field_test/3"]:(t,e,r)=>{let[o,a,n]=r.args;t.prepend([new Ra.default.type.State(e.goal.replace(new Ra.default.type.Term("workspace_field_test",[o,a,n,new Ra.default.type.Term("[]",[])])),e.substitution,e)])},["workspace_field_test/4"]:(t,e,r)=>{let[o,a,n,u]=r.args;if(!oh(o)||!oh(a)||!oh(n)||!$ht(u)){t.throw_error(Ra.default.error.instantiation(r.indicator));return}let p=dH(t).tryWorkspaceByCwd(o.id);if(p==null)return;let h=(0,mH.default)(p.manifest.raw,a.id);if(typeof h>"u")return;let C={$$:h};for(let[v,b]of u.toJavaScript().entries())C[`$${v}`]=b;Ime.default.runInNewContext(n.id,C)&&t.success(e)}},["project_workspaces_by_descriptor/3","workspace_field/3","workspace_field_test/3","workspace_field_test/4"])});var c2={};Yt(c2,{Constraints:()=>l2,DependencyType:()=>xme});function Zs(t){if(t instanceof hC.default.type.Num)return t.value;if(t instanceof hC.default.type.Term)switch(t.indicator){case"throw/1":return Zs(t.args[0]);case"error/1":return Zs(t.args[0]);case"error/2":if(t.args[0]instanceof hC.default.type.Term&&t.args[0].indicator==="syntax_error/1")return Object.assign(Zs(t.args[0]),...Zs(t.args[1]));{let e=Zs(t.args[0]);return e.message+=` (in ${Zs(t.args[1])})`,e}case"syntax_error/1":return new Jt(43,`Syntax error: ${Zs(t.args[0])}`);case"existence_error/2":return new Jt(44,`Existence error: ${Zs(t.args[0])} ${Zs(t.args[1])} not found`);case"instantiation_error/0":return new Jt(75,"Instantiation error: an argument is variable when an instantiated argument was expected");case"line/1":return{line:Zs(t.args[0])};case"column/1":return{column:Zs(t.args[0])};case"found/1":return{found:Zs(t.args[0])};case"./2":return[Zs(t.args[0])].concat(Zs(t.args[1]));case"//2":return`${Zs(t.args[0])}/${Zs(t.args[1])}`;default:return t.id}throw`couldn't pretty print because of unsupported node ${t}`}function Sme(t){let e;try{e=Zs(t)}catch(r){throw typeof r=="string"?new Jt(42,`Unknown error: ${t} (note: ${r})`):r}return typeof e.line<"u"&&typeof e.column<"u"&&(e.message+=` at line ${e.line}, column ${e.column}`),e}function $d(t){return t.id==="null"?null:`${t.toJavaScript()}`}function tgt(t){if(t.id==="null")return null;{let e=t.toJavaScript();if(typeof e!="string")return JSON.stringify(e);try{return JSON.stringify(JSON.parse(e))}catch{return JSON.stringify(e)}}}function ah(t){return typeof t=="string"?`'${t}'`:"[]"}var Pme,hC,xme,Dme,yH,l2,u2=dt(()=>{Ke();Ke();bt();Pme=tt(ime()),hC=tt(gH());s2();vme();(0,Pme.default)(hC.default);xme=(o=>(o.Dependencies="dependencies",o.DevDependencies="devDependencies",o.PeerDependencies="peerDependencies",o))(xme||{}),Dme=["dependencies","devDependencies","peerDependencies"];yH=class{constructor(e,r){let o=1e3*e.workspaces.length;this.session=hC.default.create(o),Bme(this.session,e),this.session.consult(":- use_module(library(lists))."),this.session.consult(r)}fetchNextAnswer(){return new Promise(e=>{this.session.answer(r=>{e(r)})})}async*makeQuery(e){let r=this.session.query(e);if(r!==!0)throw Sme(r);for(;;){let o=await this.fetchNextAnswer();if(o===null)throw new Jt(79,"Resolution limit exceeded");if(!o)break;if(o.id==="throw")throw Sme(o);yield o}}};l2=class{constructor(e){this.source="";this.project=e;let r=e.configuration.get("constraintsPath");ae.existsSync(r)&&(this.source=ae.readFileSync(r,"utf8"))}static async find(e){return new l2(e)}getProjectDatabase(){let e="";for(let r of Dme)e+=`dependency_type(${r}). | 266 | `,[])])),P.substitution,P)])},"get_byte/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_input",[new me("S")]),new H("get_byte",[new me("S"),F])])),P.substitution,P)])},"get_byte/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);if(x.type.is_variable(F))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_byte(z))I.throw_error(x.error.type("in_byte",char,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))I.throw_error(x.error.domain("stream_or_alias",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)I.throw_error(x.error.existence("stream",F,y.indicator));else if(X.output)I.throw_error(x.error.permission("input","stream",F,y.indicator));else if(X.type==="text")I.throw_error(x.error.permission("input","text_stream",F,y.indicator));else if(X.position==="past_end_of_stream"&&X.eof_action==="error")I.throw_error(x.error.permission("input","past_end_of_stream",F,y.indicator));else{var $;if(X.position==="end_of_stream")$="end_of_file",X.position="past_end_of_stream";else{if($=X.stream.get_byte(X.position),$===null){I.throw_error(x.error.representation("byte",y.indicator));return}X.position++}I.prepend([new Qe(P.goal.replace(new H("=",[new be($,!1),z])),P.substitution,P)])}},"peek_byte/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_input",[new me("S")]),new H("peek_byte",[new me("S"),F])])),P.substitution,P)])},"peek_byte/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);if(x.type.is_variable(F))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_byte(z))I.throw_error(x.error.type("in_byte",char,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))I.throw_error(x.error.domain("stream_or_alias",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)I.throw_error(x.error.existence("stream",F,y.indicator));else if(X.output)I.throw_error(x.error.permission("input","stream",F,y.indicator));else if(X.type==="text")I.throw_error(x.error.permission("input","text_stream",F,y.indicator));else if(X.position==="past_end_of_stream"&&X.eof_action==="error")I.throw_error(x.error.permission("input","past_end_of_stream",F,y.indicator));else{var $;if(X.position==="end_of_stream")$="end_of_file",X.position="past_end_of_stream";else if($=X.stream.get_byte(X.position),$===null){I.throw_error(x.error.representation("byte",y.indicator));return}I.prepend([new Qe(P.goal.replace(new H("=",[new be($,!1),z])),P.substitution,P)])}},"put_byte/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_output",[new me("S")]),new H("put_byte",[new me("S"),F])])),P.substitution,P)])},"put_byte/2":function(I,P,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);x.type.is_variable(F)||x.type.is_variable(z)?I.throw_error(x.error.instantiation(y.indicator)):x.type.is_byte(z)?!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?I.throw_error(x.error.domain("stream_or_alias",F,y.indicator)):!x.type.is_stream(X)||X.stream===null?I.throw_error(x.error.existence("stream",F,y.indicator)):X.input?I.throw_error(x.error.permission("output","stream",F,y.indicator)):X.type==="text"?I.throw_error(x.error.permission("output","text_stream",F,y.indicator)):X.stream.put_byte(z.value,X.position)&&(typeof X.position=="number"&&X.position++,I.success(P)):I.throw_error(x.error.type("byte",z,y.indicator))},"read/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_input",[new me("S")]),new H("read_term",[new me("S"),F,new H("[]",[])])])),P.substitution,P)])},"read/2":function(I,P,y){var F=y.args[0],z=y.args[1];I.prepend([new Qe(P.goal.replace(new H("read_term",[F,z,new H("[]",[])])),P.substitution,P)])},"read_term/2":function(I,P,y){var F=y.args[0],z=y.args[1];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_input",[new me("S")]),new H("read_term",[new me("S"),F,z])])),P.substitution,P)])},"read_term/3":function(I,P,y){var F=y.args[0],z=y.args[1],X=y.args[2],$=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);if(x.type.is_variable(F)||x.type.is_variable(X))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_list(X))I.throw_error(x.error.type("list",X,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))I.throw_error(x.error.domain("stream_or_alias",F,y.indicator));else if(!x.type.is_stream($)||$.stream===null)I.throw_error(x.error.existence("stream",F,y.indicator));else if($.output)I.throw_error(x.error.permission("input","stream",F,y.indicator));else if($.type==="binary")I.throw_error(x.error.permission("input","binary_stream",F,y.indicator));else if($.position==="past_end_of_stream"&&$.eof_action==="error")I.throw_error(x.error.permission("input","past_end_of_stream",F,y.indicator));else{for(var ie={},ke=X,Ne;x.type.is_term(ke)&&ke.indicator==="./2";){if(Ne=ke.args[0],x.type.is_variable(Ne)){I.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_read_option(Ne)){I.throw_error(x.error.domain("read_option",Ne,y.indicator));return}ie[Ne.id]=Ne.args[0],ke=ke.args[1]}if(ke.indicator!=="[]/0"){x.type.is_variable(ke)?I.throw_error(x.error.instantiation(y.indicator)):I.throw_error(x.error.type("list",X,y.indicator));return}else{for(var st,ht,Ut,Xt="",xt=[],tn=null;tn===null||tn.name!=="atom"||tn.value!=="."||Ut.type===A&&x.flatten_error(new H("throw",[Ut.value])).found==="token_not_found";){if(st=$.stream.get(1,$.position),st===null){I.throw_error(x.error.representation("character",y.indicator));return}if(st==="end_of_file"||st==="past_end_of_file"){Ut?I.throw_error(x.error.syntax(xt[Ut.len-1],". or expression expected",!1)):I.throw_error(x.error.syntax(null,"token not found",!0));return}$.position++,Xt+=st,ht=new _(I),ht.new_text(Xt),xt=ht.get_tokens(),tn=xt!==null&&xt.length>0?xt[xt.length-1]:null,xt!==null&&(Ut=V(I,xt,0,I.__get_max_priority(),!1))}if(Ut.type===p&&Ut.len===xt.length-1&&tn.value==="."){Ut=Ut.value.rename(I);var Dr=new H("=",[z,Ut]);if(ie.variables){var fr=g(o(Ee(Ut.variables()),function(Br){return new me(Br)}));Dr=new H(",",[Dr,new H("=",[ie.variables,fr])])}if(ie.variable_names){var fr=g(o(Ee(Ut.variables()),function(jr){var Hn;for(Hn in I.session.renamed_variables)if(I.session.renamed_variables.hasOwnProperty(Hn)&&I.session.renamed_variables[Hn]===jr)break;return new H("=",[new H(Hn,[]),new me(jr)])}));Dr=new H(",",[Dr,new H("=",[ie.variable_names,fr])])}if(ie.singletons){var fr=g(o(new _e(Ut,null).singleton_variables(),function(jr){var Hn;for(Hn in I.session.renamed_variables)if(I.session.renamed_variables.hasOwnProperty(Hn)&&I.session.renamed_variables[Hn]===jr)break;return new H("=",[new H(Hn,[]),new me(jr)])}));Dr=new H(",",[Dr,new H("=",[ie.singletons,fr])])}I.prepend([new Qe(P.goal.replace(Dr),P.substitution,P)])}else Ut.type===p?I.throw_error(x.error.syntax(xt[Ut.len],"unexpected token",!1)):I.throw_error(Ut.value)}}},"write/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_output",[new me("S")]),new H("write",[new me("S"),F])])),P.substitution,P)])},"write/2":function(I,P,y){var F=y.args[0],z=y.args[1];I.prepend([new Qe(P.goal.replace(new H("write_term",[F,z,new H(".",[new H("quoted",[new H("false",[])]),new H(".",[new H("ignore_ops",[new H("false")]),new H(".",[new H("numbervars",[new H("true")]),new H("[]",[])])])])])),P.substitution,P)])},"writeq/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_output",[new me("S")]),new H("writeq",[new me("S"),F])])),P.substitution,P)])},"writeq/2":function(I,P,y){var F=y.args[0],z=y.args[1];I.prepend([new Qe(P.goal.replace(new H("write_term",[F,z,new H(".",[new H("quoted",[new H("true",[])]),new H(".",[new H("ignore_ops",[new H("false")]),new H(".",[new H("numbervars",[new H("true")]),new H("[]",[])])])])])),P.substitution,P)])},"write_canonical/1":function(I,P,y){var F=y.args[0];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_output",[new me("S")]),new H("write_canonical",[new me("S"),F])])),P.substitution,P)])},"write_canonical/2":function(I,P,y){var F=y.args[0],z=y.args[1];I.prepend([new Qe(P.goal.replace(new H("write_term",[F,z,new H(".",[new H("quoted",[new H("true",[])]),new H(".",[new H("ignore_ops",[new H("true")]),new H(".",[new H("numbervars",[new H("false")]),new H("[]",[])])])])])),P.substitution,P)])},"write_term/2":function(I,P,y){var F=y.args[0],z=y.args[1];I.prepend([new Qe(P.goal.replace(new H(",",[new H("current_output",[new me("S")]),new H("write_term",[new me("S"),F,z])])),P.substitution,P)])},"write_term/3":function(I,P,y){var F=y.args[0],z=y.args[1],X=y.args[2],$=x.type.is_stream(F)?F:I.get_stream_by_alias(F.id);if(x.type.is_variable(F)||x.type.is_variable(X))I.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_list(X))I.throw_error(x.error.type("list",X,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))I.throw_error(x.error.domain("stream_or_alias",F,y.indicator));else if(!x.type.is_stream($)||$.stream===null)I.throw_error(x.error.existence("stream",F,y.indicator));else if($.input)I.throw_error(x.error.permission("output","stream",F,y.indicator));else if($.type==="binary")I.throw_error(x.error.permission("output","binary_stream",F,y.indicator));else if($.position==="past_end_of_stream"&&$.eof_action==="error")I.throw_error(x.error.permission("output","past_end_of_stream",F,y.indicator));else{for(var ie={},ke=X,Ne;x.type.is_term(ke)&&ke.indicator==="./2";){if(Ne=ke.args[0],x.type.is_variable(Ne)){I.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_write_option(Ne)){I.throw_error(x.error.domain("write_option",Ne,y.indicator));return}ie[Ne.id]=Ne.args[0].id==="true",ke=ke.args[1]}if(ke.indicator!=="[]/0"){x.type.is_variable(ke)?I.throw_error(x.error.instantiation(y.indicator)):I.throw_error(x.error.type("list",X,y.indicator));return}else{ie.session=I.session;var st=z.toString(ie);$.stream.put(st,$.position),typeof $.position=="number"&&($.position+=st.length),I.success(P)}}},"halt/0":function(I,P,y){I.points=[]},"halt/1":function(I,P,y){var F=y.args[0];x.type.is_variable(F)?I.throw_error(x.error.instantiation(y.indicator)):x.type.is_integer(F)?I.points=[]:I.throw_error(x.error.type("integer",F,y.indicator))},"current_prolog_flag/2":function(I,P,y){var F=y.args[0],z=y.args[1];if(!x.type.is_variable(F)&&!x.type.is_atom(F))I.throw_error(x.error.type("atom",F,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_flag(F))I.throw_error(x.error.domain("prolog_flag",F,y.indicator));else{var X=[];for(var $ in x.flag)if(!!x.flag.hasOwnProperty($)){var ie=new H(",",[new H("=",[new H($),F]),new H("=",[I.get_flag($),z])]);X.push(new Qe(P.goal.replace(ie),P.substitution,P))}I.prepend(X)}},"set_prolog_flag/2":function(I,P,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)||x.type.is_variable(z)?I.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?x.type.is_flag(F)?x.type.is_value_flag(F,z)?x.type.is_modifiable_flag(F)?(I.session.flag[F.id]=z,I.success(P)):I.throw_error(x.error.permission("modify","flag",F)):I.throw_error(x.error.domain("flag_value",new H("+",[F,z]),y.indicator)):I.throw_error(x.error.domain("prolog_flag",F,y.indicator)):I.throw_error(x.error.type("atom",F,y.indicator))}},flag:{bounded:{allowed:[new H("true"),new H("false")],value:new H("true"),changeable:!1},max_integer:{allowed:[new be(Number.MAX_SAFE_INTEGER)],value:new be(Number.MAX_SAFE_INTEGER),changeable:!1},min_integer:{allowed:[new be(Number.MIN_SAFE_INTEGER)],value:new be(Number.MIN_SAFE_INTEGER),changeable:!1},integer_rounding_function:{allowed:[new H("down"),new H("toward_zero")],value:new H("toward_zero"),changeable:!1},char_conversion:{allowed:[new H("on"),new H("off")],value:new H("on"),changeable:!0},debug:{allowed:[new H("on"),new H("off")],value:new H("off"),changeable:!0},max_arity:{allowed:[new H("unbounded")],value:new H("unbounded"),changeable:!1},unknown:{allowed:[new H("error"),new H("fail"),new H("warning")],value:new H("error"),changeable:!0},double_quotes:{allowed:[new H("chars"),new H("codes"),new H("atom")],value:new H("codes"),changeable:!0},occurs_check:{allowed:[new H("false"),new H("true")],value:new H("false"),changeable:!0},dialect:{allowed:[new H("tau")],value:new H("tau"),changeable:!1},version_data:{allowed:[new H("tau",[new be(t.major,!1),new be(t.minor,!1),new be(t.patch,!1),new H(t.status)])],value:new H("tau",[new be(t.major,!1),new be(t.minor,!1),new be(t.patch,!1),new H(t.status)]),changeable:!1},nodejs:{allowed:[new H("yes"),new H("no")],value:new H(typeof ml<"u"&&ml.exports?"yes":"no"),changeable:!1}},unify:function(I,P,y){y=y===void 0?!1:y;for(var F=[{left:I,right:P}],z={};F.length!==0;){var X=F.pop();if(I=X.left,P=X.right,x.type.is_term(I)&&x.type.is_term(P)){if(I.indicator!==P.indicator)return null;for(var $=0;$<I.args.length;$++)F.push({left:I.args[$],right:P.args[$]})}else if(x.type.is_number(I)&&x.type.is_number(P)){if(I.value!==P.value||I.is_float!==P.is_float)return null}else if(x.type.is_variable(I)){if(x.type.is_variable(P)&&I.id===P.id)continue;if(y===!0&&P.variables().indexOf(I.id)!==-1)return null;if(I.id!=="_"){var ie=new Te;ie.add(I.id,P);for(var $=0;$<F.length;$++)F[$].left=F[$].left.apply(ie),F[$].right=F[$].right.apply(ie);for(var $ in z)z[$]=z[$].apply(ie);z[I.id]=P}}else if(x.type.is_variable(P))F.push({left:P,right:I});else if(I.unify!==void 0){if(!I.unify(P))return null}else return null}return new Te(z)},compare:function(I,P){var y=x.type.compare(I,P);return y!==0?y:I.compare(P)},arithmetic_compare:function(I,P,y){var F=P.interpret(I);if(x.type.is_number(F)){var z=y.interpret(I);return x.type.is_number(z)?F.value<z.value?-1:F.value>z.value?1:0:z}else return F},operate:function(I,P){if(x.type.is_operator(P)){for(var y=x.type.is_operator(P),F=[],z,X=!1,$=0;$<P.args.length;$++){if(z=P.args[$].interpret(I),x.type.is_number(z)){if(y.type_args!==null&&z.is_float!==y.type_args)return x.error.type(y.type_args?"float":"integer",z,I.__call_indicator);F.push(z.value)}else return z;X=X||z.is_float}return F.push(I),z=x.arithmetic.evaluation[P.indicator].fn.apply(this,F),X=y.type_result===null?X:y.type_result,x.type.is_term(z)?z:z===Number.POSITIVE_INFINITY||z===Number.NEGATIVE_INFINITY?x.error.evaluation("overflow",I.__call_indicator):X===!1&&I.get_flag("bounded").id==="true"&&(z>I.get_flag("max_integer").value||z<I.get_flag("min_integer").value)?x.error.evaluation("int_overflow",I.__call_indicator):new be(z,X)}else return x.error.type("evaluable",P.indicator,I.__call_indicator)},error:{existence:function(I,P,y){return typeof P=="string"&&(P=Z(P)),new H("error",[new H("existence_error",[new H(I),P]),Z(y)])},type:function(I,P,y){return new H("error",[new H("type_error",[new H(I),P]),Z(y)])},instantiation:function(I){return new H("error",[new H("instantiation_error"),Z(I)])},domain:function(I,P,y){return new H("error",[new H("domain_error",[new H(I),P]),Z(y)])},representation:function(I,P){return new H("error",[new H("representation_error",[new H(I)]),Z(P)])},permission:function(I,P,y,F){return new H("error",[new H("permission_error",[new H(I),new H(P),y]),Z(F)])},evaluation:function(I,P){return new H("error",[new H("evaluation_error",[new H(I)]),Z(P)])},syntax:function(I,P,y){I=I||{value:"",line:0,column:0,matches:[""],start:0};var F=y&&I.matches.length>0?I.start+I.matches[0].length:I.start,z=y?new H("token_not_found"):new H("found",[new H(I.value.toString())]),X=new H(".",[new H("line",[new be(I.line+1)]),new H(".",[new H("column",[new be(F+1)]),new H(".",[z,new H("[]",[])])])]);return new H("error",[new H("syntax_error",[new H(P)]),X])},syntax_by_predicate:function(I,P){return new H("error",[new H("syntax_error",[new H(I)]),Z(P)])}},warning:{singleton:function(I,P,y){for(var F=new H("[]"),z=I.length-1;z>=0;z--)F=new H(".",[new me(I[z]),F]);return new H("warning",[new H("singleton_variables",[F,Z(P)]),new H(".",[new H("line",[new be(y,!1)]),new H("[]")])])},failed_goal:function(I,P){return new H("warning",[new H("failed_goal",[I]),new H(".",[new H("line",[new be(P,!1)]),new H("[]")])])}},format_variable:function(I){return"_"+I},format_answer:function(I,P,F){P instanceof qe&&(P=P.thread);var F=F||{};if(F.session=P?P.session:void 0,x.type.is_error(I))return"uncaught exception: "+I.args[0].toString();if(I===!1)return"false.";if(I===null)return"limit exceeded ;";var z=0,X="";if(x.type.is_substitution(I)){var $=I.domain(!0);I=I.filter(function(Ne,st){return!x.type.is_variable(st)||$.indexOf(st.id)!==-1&&Ne!==st.id})}for(var ie in I.links)!I.links.hasOwnProperty(ie)||(z++,X!==""&&(X+=", "),X+=ie.toString(F)+" = "+I.links[ie].toString(F));var ke=typeof P>"u"||P.points.length>0?" ;":".";return z===0?"true"+ke:X+ke},flatten_error:function(I){if(!x.type.is_error(I))return null;I=I.args[0];var P={};return P.type=I.args[0].id,P.thrown=P.type==="syntax_error"?null:I.args[1].id,P.expected=null,P.found=null,P.representation=null,P.existence=null,P.existence_type=null,P.line=null,P.column=null,P.permission_operation=null,P.permission_type=null,P.evaluation_type=null,P.type==="type_error"||P.type==="domain_error"?(P.expected=I.args[0].args[0].id,P.found=I.args[0].args[1].toString()):P.type==="syntax_error"?I.args[1].indicator==="./2"?(P.expected=I.args[0].args[0].id,P.found=I.args[1].args[1].args[1].args[0],P.found=P.found.id==="token_not_found"?P.found.id:P.found.args[0].id,P.line=I.args[1].args[0].args[0].value,P.column=I.args[1].args[1].args[0].args[0].value):P.thrown=I.args[1].id:P.type==="permission_error"?(P.found=I.args[0].args[2].toString(),P.permission_operation=I.args[0].args[0].id,P.permission_type=I.args[0].args[1].id):P.type==="evaluation_error"?P.evaluation_type=I.args[0].args[0].id:P.type==="representation_error"?P.representation=I.args[0].args[0].id:P.type==="existence_error"&&(P.existence=I.args[0].args[1].toString(),P.existence_type=I.args[0].args[0].id),P},create:function(I){return new x.type.Session(I)}};typeof ml<"u"?ml.exports=x:window.pl=x})()});function xme(t,e,r){t.prepend(r.map(o=>new Na.default.type.State(e.goal.replace(o),e.substitution,e)))}function EH(t){let e=Qme.get(t.session);if(e==null)throw new Error("Assertion failed: A project should have been registered for the active session");return e}function kme(t,e){Qme.set(t,e),t.consult(`:- use_module(library(${dgt.id})).`)}var CH,Na,bme,lh,hgt,ggt,Qme,dgt,Fme=dt(()=>{Ke();CH=tt(r2()),Na=tt(yH()),bme=tt(Ie("vm")),{is_atom:lh,is_variable:hgt,is_instantiated_list:ggt}=Na.default.type;Qme=new WeakMap;dgt=new Na.default.type.Module("constraints",{["project_workspaces_by_descriptor/3"]:(t,e,r)=>{let[o,a,n]=r.args;if(!lh(o)||!lh(a)){t.throw_error(Na.default.error.instantiation(r.indicator));return}let u=Y.parseIdent(o.id),A=Y.makeDescriptor(u,a.id),h=EH(t).tryWorkspaceByDescriptor(A);hgt(n)&&h!==null&&xme(t,e,[new Na.default.type.Term("=",[n,new Na.default.type.Term(String(h.relativeCwd))])]),lh(n)&&h!==null&&h.relativeCwd===n.id&&t.success(e)},["workspace_field/3"]:(t,e,r)=>{let[o,a,n]=r.args;if(!lh(o)||!lh(a)){t.throw_error(Na.default.error.instantiation(r.indicator));return}let A=EH(t).tryWorkspaceByCwd(o.id);if(A==null)return;let p=(0,CH.default)(A.manifest.raw,a.id);typeof p>"u"||xme(t,e,[new Na.default.type.Term("=",[n,new Na.default.type.Term(typeof p=="object"?JSON.stringify(p):p)])])},["workspace_field_test/3"]:(t,e,r)=>{let[o,a,n]=r.args;t.prepend([new Na.default.type.State(e.goal.replace(new Na.default.type.Term("workspace_field_test",[o,a,n,new Na.default.type.Term("[]",[])])),e.substitution,e)])},["workspace_field_test/4"]:(t,e,r)=>{let[o,a,n,u]=r.args;if(!lh(o)||!lh(a)||!lh(n)||!ggt(u)){t.throw_error(Na.default.error.instantiation(r.indicator));return}let p=EH(t).tryWorkspaceByCwd(o.id);if(p==null)return;let h=(0,CH.default)(p.manifest.raw,a.id);if(typeof h>"u")return;let C={$$:h};for(let[v,b]of u.toJavaScript().entries())C[`$${v}`]=b;bme.default.runInNewContext(n.id,C)&&t.success(e)}},["project_workspaces_by_descriptor/3","workspace_field/3","workspace_field_test/3","workspace_field_test/4"])});var g2={};Yt(g2,{Constraints:()=>h2,DependencyType:()=>Lme});function Zs(t){if(t instanceof EC.default.type.Num)return t.value;if(t instanceof EC.default.type.Term)switch(t.indicator){case"throw/1":return Zs(t.args[0]);case"error/1":return Zs(t.args[0]);case"error/2":if(t.args[0]instanceof EC.default.type.Term&&t.args[0].indicator==="syntax_error/1")return Object.assign(Zs(t.args[0]),...Zs(t.args[1]));{let e=Zs(t.args[0]);return e.message+=` (in ${Zs(t.args[1])})`,e}case"syntax_error/1":return new Vt(43,`Syntax error: ${Zs(t.args[0])}`);case"existence_error/2":return new Vt(44,`Existence error: ${Zs(t.args[0])} ${Zs(t.args[1])} not found`);case"instantiation_error/0":return new Vt(75,"Instantiation error: an argument is variable when an instantiated argument was expected");case"line/1":return{line:Zs(t.args[0])};case"column/1":return{column:Zs(t.args[0])};case"found/1":return{found:Zs(t.args[0])};case"./2":return[Zs(t.args[0])].concat(Zs(t.args[1]));case"//2":return`${Zs(t.args[0])}/${Zs(t.args[1])}`;default:return t.id}throw`couldn't pretty print because of unsupported node ${t}`}function Tme(t){let e;try{e=Zs(t)}catch(r){throw typeof r=="string"?new Vt(42,`Unknown error: ${t} (note: ${r})`):r}return typeof e.line<"u"&&typeof e.column<"u"&&(e.message+=` at line ${e.line}, column ${e.column}`),e}function nm(t){return t.id==="null"?null:`${t.toJavaScript()}`}function mgt(t){if(t.id==="null")return null;{let e=t.toJavaScript();if(typeof e!="string")return JSON.stringify(e);try{return JSON.stringify(JSON.parse(e))}catch{return JSON.stringify(e)}}}function ch(t){return typeof t=="string"?`'${t}'`:"[]"}var Nme,EC,Lme,Rme,IH,h2,d2=dt(()=>{Ke();Ke();St();Nme=tt(fme()),EC=tt(yH());A2();Fme();(0,Nme.default)(EC.default);Lme=(o=>(o.Dependencies="dependencies",o.DevDependencies="devDependencies",o.PeerDependencies="peerDependencies",o))(Lme||{}),Rme=["dependencies","devDependencies","peerDependencies"];IH=class{constructor(e,r){let o=1e3*e.workspaces.length;this.session=EC.default.create(o),kme(this.session,e),this.session.consult(":- use_module(library(lists))."),this.session.consult(r)}fetchNextAnswer(){return new Promise(e=>{this.session.answer(r=>{e(r)})})}async*makeQuery(e){let r=this.session.query(e);if(r!==!0)throw Tme(r);for(;;){let o=await this.fetchNextAnswer();if(o===null)throw new Vt(79,"Resolution limit exceeded");if(!o)break;if(o.id==="throw")throw Tme(o);yield o}}};h2=class{constructor(e){this.source="";this.project=e;let r=e.configuration.get("constraintsPath");oe.existsSync(r)&&(this.source=oe.readFileSync(r,"utf8"))}static async find(e){return new h2(e)}getProjectDatabase(){let e="";for(let r of Rme)e+=`dependency_type(${r}). |
267 | `;for(let r of this.project.workspacesByCwd.values()){let o=r.relativeCwd;e+=`workspace(${ah(o)}). | 267 | `;for(let r of this.project.workspacesByCwd.values()){let o=r.relativeCwd;e+=`workspace(${ch(o)}). |
268 | `,e+=`workspace_ident(${ah(o)}, ${ah(Y.stringifyIdent(r.locator))}). | 268 | `,e+=`workspace_ident(${ch(o)}, ${ch(Y.stringifyIdent(r.locator))}). |
269 | `,e+=`workspace_version(${ah(o)}, ${ah(r.manifest.version)}). | 269 | `,e+=`workspace_version(${ch(o)}, ${ch(r.manifest.version)}). |
270 | `;for(let a of Dme)for(let n of r.manifest[a].values())e+=`workspace_has_dependency(${ah(o)}, ${ah(Y.stringifyIdent(n))}, ${ah(n.range)}, ${a}). | 270 | `;for(let a of Rme)for(let n of r.manifest[a].values())e+=`workspace_has_dependency(${ch(o)}, ${ch(Y.stringifyIdent(n))}, ${ch(n.range)}, ${a}). |
271 | `}return e+=`workspace(_) :- false. | 271 | `}return e+=`workspace(_) :- false. |
272 | `,e+=`workspace_ident(_, _) :- false. | 272 | `,e+=`workspace_ident(_, _) :- false. |
273 | `,e+=`workspace_version(_, _) :- false. | 273 | `,e+=`workspace_version(_, _) :- false. |
@@ -276,41 +276,41 @@ And the length must be: $<length>`,trueValue:null,falseValue:null,caseSensitive: | |||
276 | `,e+=`gen_enforced_field(_, _, _) :- false. | 276 | `,e+=`gen_enforced_field(_, _, _) :- false. |
277 | `,e}get fullSource(){return`${this.getProjectDatabase()} | 277 | `,e}get fullSource(){return`${this.getProjectDatabase()} |
278 | ${this.source} | 278 | ${this.source} |
279 | ${this.getDeclarations()}`}createSession(){return new yH(this.project,this.fullSource)}async processClassic(){let e=this.createSession();return{enforcedDependencies:await this.genEnforcedDependencies(e),enforcedFields:await this.genEnforcedFields(e)}}async process(){let{enforcedDependencies:e,enforcedFields:r}=await this.processClassic(),o=new Map;for(let{workspace:a,dependencyIdent:n,dependencyRange:u,dependencyType:A}of e){let p=i2([A,Y.stringifyIdent(n)]),h=Ye.getMapWithDefault(o,a.cwd);Ye.getMapWithDefault(h,p).set(u??void 0,new Set)}for(let{workspace:a,fieldPath:n,fieldValue:u}of r){let A=i2(n),p=Ye.getMapWithDefault(o,a.cwd);Ye.getMapWithDefault(p,A).set(JSON.parse(u)??void 0,new Set)}return{manifestUpdates:o,reportedErrors:new Map}}async genEnforcedDependencies(e){let r=[];for await(let o of e.makeQuery("workspace(WorkspaceCwd), dependency_type(DependencyType), gen_enforced_dependency(WorkspaceCwd, DependencyIdent, DependencyRange, DependencyType).")){let a=V.resolve(this.project.cwd,$d(o.links.WorkspaceCwd)),n=$d(o.links.DependencyIdent),u=$d(o.links.DependencyRange),A=$d(o.links.DependencyType);if(a===null||n===null)throw new Error("Invalid rule");let p=this.project.getWorkspaceByCwd(a),h=Y.parseIdent(n);r.push({workspace:p,dependencyIdent:h,dependencyRange:u,dependencyType:A})}return Ye.sortMap(r,[({dependencyRange:o})=>o!==null?"0":"1",({workspace:o})=>Y.stringifyIdent(o.locator),({dependencyIdent:o})=>Y.stringifyIdent(o)])}async genEnforcedFields(e){let r=[];for await(let o of e.makeQuery("workspace(WorkspaceCwd), gen_enforced_field(WorkspaceCwd, FieldPath, FieldValue).")){let a=V.resolve(this.project.cwd,$d(o.links.WorkspaceCwd)),n=$d(o.links.FieldPath),u=tgt(o.links.FieldValue);if(a===null||n===null)throw new Error("Invalid rule");let A=this.project.getWorkspaceByCwd(a);r.push({workspace:A,fieldPath:n,fieldValue:u})}return Ye.sortMap(r,[({workspace:o})=>Y.stringifyIdent(o.locator),({fieldPath:o})=>o])}async*query(e){let r=this.createSession();for await(let o of r.makeQuery(e)){let a={};for(let[n,u]of Object.entries(o.links))n!=="_"&&(a[n]=$d(u));yield a}}}});var Lme=U(aQ=>{"use strict";Object.defineProperty(aQ,"__esModule",{value:!0});function S2(t){let e=[...t.caches],r=e.shift();return r===void 0?Nme():{get(o,a,n={miss:()=>Promise.resolve()}){return r.get(o,a,n).catch(()=>S2({caches:e}).get(o,a,n))},set(o,a){return r.set(o,a).catch(()=>S2({caches:e}).set(o,a))},delete(o){return r.delete(o).catch(()=>S2({caches:e}).delete(o))},clear(){return r.clear().catch(()=>S2({caches:e}).clear())}}}function Nme(){return{get(t,e,r={miss:()=>Promise.resolve()}){return e().then(a=>Promise.all([a,r.miss(a)])).then(([a])=>a)},set(t,e){return Promise.resolve(e)},delete(t){return Promise.resolve()},clear(){return Promise.resolve()}}}aQ.createFallbackableCache=S2;aQ.createNullCache=Nme});var Mme=U((SWt,Ome)=>{Ome.exports=Lme()});var Ume=U(FH=>{"use strict";Object.defineProperty(FH,"__esModule",{value:!0});function Cgt(t={serializable:!0}){let e={};return{get(r,o,a={miss:()=>Promise.resolve()}){let n=JSON.stringify(r);if(n in e)return Promise.resolve(t.serializable?JSON.parse(e[n]):e[n]);let u=o(),A=a&&a.miss||(()=>Promise.resolve());return u.then(p=>A(p)).then(()=>u)},set(r,o){return e[JSON.stringify(r)]=t.serializable?JSON.stringify(o):o,Promise.resolve(o)},delete(r){return delete e[JSON.stringify(r)],Promise.resolve()},clear(){return e={},Promise.resolve()}}}FH.createInMemoryCache=Cgt});var Hme=U((xWt,_me)=>{_me.exports=Ume()});var jme=U(eu=>{"use strict";Object.defineProperty(eu,"__esModule",{value:!0});function Igt(t,e,r){let o={"x-algolia-api-key":r,"x-algolia-application-id":e};return{headers(){return t===RH.WithinHeaders?o:{}},queryParameters(){return t===RH.WithinQueryParameters?o:{}}}}function wgt(t){let e=0,r=()=>(e++,new Promise(o=>{setTimeout(()=>{o(t(r))},Math.min(100*e,1e3))}));return t(r)}function qme(t,e=(r,o)=>Promise.resolve()){return Object.assign(t,{wait(r){return qme(t.then(o=>Promise.all([e(o,r),o])).then(o=>o[1]))}})}function Bgt(t){let e=t.length-1;for(e;e>0;e--){let r=Math.floor(Math.random()*(e+1)),o=t[e];t[e]=t[r],t[r]=o}return t}function vgt(t,e){return e&&Object.keys(e).forEach(r=>{t[r]=e[r](t)}),t}function Dgt(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}var Sgt="4.14.2",Pgt=t=>()=>t.transporter.requester.destroy(),RH={WithinQueryParameters:0,WithinHeaders:1};eu.AuthMode=RH;eu.addMethods=vgt;eu.createAuth=Igt;eu.createRetryablePromise=wgt;eu.createWaitablePromise=qme;eu.destroy=Pgt;eu.encode=Dgt;eu.shuffle=Bgt;eu.version=Sgt});var P2=U((QWt,Gme)=>{Gme.exports=jme()});var Wme=U(TH=>{"use strict";Object.defineProperty(TH,"__esModule",{value:!0});var xgt={Delete:"DELETE",Get:"GET",Post:"POST",Put:"PUT"};TH.MethodEnum=xgt});var x2=U((FWt,Yme)=>{Yme.exports=Wme()});var aye=U(bi=>{"use strict";Object.defineProperty(bi,"__esModule",{value:!0});var Jme=x2();function NH(t,e){let r=t||{},o=r.data||{};return Object.keys(r).forEach(a=>{["timeout","headers","queryParameters","data","cacheable"].indexOf(a)===-1&&(o[a]=r[a])}),{data:Object.entries(o).length>0?o:void 0,timeout:r.timeout||e,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var b2={Read:1,Write:2,Any:3},yC={Up:1,Down:2,Timeouted:3},Vme=2*60*1e3;function OH(t,e=yC.Up){return{...t,status:e,lastUpdate:Date.now()}}function zme(t){return t.status===yC.Up||Date.now()-t.lastUpdate>Vme}function Xme(t){return t.status===yC.Timeouted&&Date.now()-t.lastUpdate<=Vme}function MH(t){return typeof t=="string"?{protocol:"https",url:t,accept:b2.Any}:{protocol:t.protocol||"https",url:t.url,accept:t.accept||b2.Any}}function bgt(t,e){return Promise.all(e.map(r=>t.get(r,()=>Promise.resolve(OH(r))))).then(r=>{let o=r.filter(A=>zme(A)),a=r.filter(A=>Xme(A)),n=[...o,...a],u=n.length>0?n.map(A=>MH(A)):e;return{getTimeout(A,p){return(a.length===0&&A===0?1:a.length+3+A)*p},statelessHosts:u}})}var Qgt=({isTimedOut:t,status:e})=>!t&&~~e===0,kgt=t=>{let e=t.status;return t.isTimedOut||Qgt(t)||~~(e/100)!==2&&~~(e/100)!==4},Fgt=({status:t})=>~~(t/100)===2,Rgt=(t,e)=>kgt(t)?e.onRetry(t):Fgt(t)?e.onSuccess(t):e.onFail(t);function Kme(t,e,r,o){let a=[],n=rye(r,o),u=nye(t,o),A=r.method,p=r.method!==Jme.MethodEnum.Get?{}:{...r.data,...o.data},h={"x-algolia-agent":t.userAgent.value,...t.queryParameters,...p,...o.queryParameters},C=0,w=(v,b)=>{let E=v.pop();if(E===void 0)throw oye(LH(a));let R={data:n,headers:u,method:A,url:eye(E,r.path,h),connectTimeout:b(C,t.timeouts.connect),responseTimeout:b(C,o.timeout)},L=J=>{let re={request:R,response:J,host:E,triesLeft:v.length};return a.push(re),re},_={onSuccess:J=>Zme(J),onRetry(J){let re=L(J);return J.isTimedOut&&C++,Promise.all([t.logger.info("Retryable failure",UH(re)),t.hostsCache.set(E,OH(E,J.isTimedOut?yC.Timeouted:yC.Down))]).then(()=>w(v,b))},onFail(J){throw L(J),$me(J,LH(a))}};return t.requester.send(R).then(J=>Rgt(J,_))};return bgt(t.hostsCache,e).then(v=>w([...v.statelessHosts].reverse(),v.getTimeout))}function Tgt(t){let{hostsCache:e,logger:r,requester:o,requestsCache:a,responsesCache:n,timeouts:u,userAgent:A,hosts:p,queryParameters:h,headers:C}=t,w={hostsCache:e,logger:r,requester:o,requestsCache:a,responsesCache:n,timeouts:u,userAgent:A,headers:C,queryParameters:h,hosts:p.map(v=>MH(v)),read(v,b){let E=NH(b,w.timeouts.read),R=()=>Kme(w,w.hosts.filter(J=>(J.accept&b2.Read)!==0),v,E);if((E.cacheable!==void 0?E.cacheable:v.cacheable)!==!0)return R();let _={request:v,mappedRequestOptions:E,transporter:{queryParameters:w.queryParameters,headers:w.headers}};return w.responsesCache.get(_,()=>w.requestsCache.get(_,()=>w.requestsCache.set(_,R()).then(J=>Promise.all([w.requestsCache.delete(_),J]),J=>Promise.all([w.requestsCache.delete(_),Promise.reject(J)])).then(([J,re])=>re)),{miss:J=>w.responsesCache.set(_,J)})},write(v,b){return Kme(w,w.hosts.filter(E=>(E.accept&b2.Write)!==0),v,NH(b,w.timeouts.write))}};return w}function Ngt(t){let e={value:`Algolia for JavaScript (${t})`,add(r){let o=`; ${r.segment}${r.version!==void 0?` (${r.version})`:""}`;return e.value.indexOf(o)===-1&&(e.value=`${e.value}${o}`),e}};return e}function Zme(t){try{return JSON.parse(t.content)}catch(e){throw sye(e.message,t)}}function $me({content:t,status:e},r){let o=t;try{o=JSON.parse(t).message}catch{}return iye(o,e,r)}function Lgt(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}function eye(t,e,r){let o=tye(r),a=`${t.protocol}://${t.url}/${e.charAt(0)==="/"?e.substr(1):e}`;return o.length&&(a+=`?${o}`),a}function tye(t){let e=r=>Object.prototype.toString.call(r)==="[object Object]"||Object.prototype.toString.call(r)==="[object Array]";return Object.keys(t).map(r=>Lgt("%s=%s",r,e(t[r])?JSON.stringify(t[r]):t[r])).join("&")}function rye(t,e){if(t.method===Jme.MethodEnum.Get||t.data===void 0&&e.data===void 0)return;let r=Array.isArray(t.data)?t.data:{...t.data,...e.data};return JSON.stringify(r)}function nye(t,e){let r={...t.headers,...e.headers},o={};return Object.keys(r).forEach(a=>{let n=r[a];o[a.toLowerCase()]=n}),o}function LH(t){return t.map(e=>UH(e))}function UH(t){let e=t.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...t,request:{...t.request,headers:{...t.request.headers,...e}}}}function iye(t,e,r){return{name:"ApiError",message:t,status:e,transporterStackTrace:r}}function sye(t,e){return{name:"DeserializationError",message:t,response:e}}function oye(t){return{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:t}}bi.CallEnum=b2;bi.HostStatusEnum=yC;bi.createApiError=iye;bi.createDeserializationError=sye;bi.createMappedRequestOptions=NH;bi.createRetryError=oye;bi.createStatefulHost=OH;bi.createStatelessHost=MH;bi.createTransporter=Tgt;bi.createUserAgent=Ngt;bi.deserializeFailure=$me;bi.deserializeSuccess=Zme;bi.isStatefulHostTimeouted=Xme;bi.isStatefulHostUp=zme;bi.serializeData=rye;bi.serializeHeaders=nye;bi.serializeQueryParameters=tye;bi.serializeUrl=eye;bi.stackFrameWithoutCredentials=UH;bi.stackTraceWithoutCredentials=LH});var Q2=U((TWt,lye)=>{lye.exports=aye()});var cye=U(ph=>{"use strict";Object.defineProperty(ph,"__esModule",{value:!0});var EC=P2(),Ogt=Q2(),k2=x2(),Mgt=t=>{let e=t.region||"us",r=EC.createAuth(EC.AuthMode.WithinHeaders,t.appId,t.apiKey),o=Ogt.createTransporter({hosts:[{url:`analytics.${e}.algolia.com`}],...t,headers:{...r.headers(),"content-type":"application/json",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}}),a=t.appId;return EC.addMethods({appId:a,transporter:o},t.methods)},Ugt=t=>(e,r)=>t.transporter.write({method:k2.MethodEnum.Post,path:"2/abtests",data:e},r),_gt=t=>(e,r)=>t.transporter.write({method:k2.MethodEnum.Delete,path:EC.encode("2/abtests/%s",e)},r),Hgt=t=>(e,r)=>t.transporter.read({method:k2.MethodEnum.Get,path:EC.encode("2/abtests/%s",e)},r),qgt=t=>e=>t.transporter.read({method:k2.MethodEnum.Get,path:"2/abtests"},e),jgt=t=>(e,r)=>t.transporter.write({method:k2.MethodEnum.Post,path:EC.encode("2/abtests/%s/stop",e)},r);ph.addABTest=Ugt;ph.createAnalyticsClient=Mgt;ph.deleteABTest=_gt;ph.getABTest=Hgt;ph.getABTests=qgt;ph.stopABTest=jgt});var Aye=U((LWt,uye)=>{uye.exports=cye()});var pye=U(F2=>{"use strict";Object.defineProperty(F2,"__esModule",{value:!0});var _H=P2(),Ggt=Q2(),fye=x2(),Wgt=t=>{let e=t.region||"us",r=_H.createAuth(_H.AuthMode.WithinHeaders,t.appId,t.apiKey),o=Ggt.createTransporter({hosts:[{url:`personalization.${e}.algolia.com`}],...t,headers:{...r.headers(),"content-type":"application/json",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}});return _H.addMethods({appId:t.appId,transporter:o},t.methods)},Ygt=t=>e=>t.transporter.read({method:fye.MethodEnum.Get,path:"1/strategies/personalization"},e),Kgt=t=>(e,r)=>t.transporter.write({method:fye.MethodEnum.Post,path:"1/strategies/personalization",data:e},r);F2.createPersonalizationClient=Wgt;F2.getPersonalizationStrategy=Ygt;F2.setPersonalizationStrategy=Kgt});var gye=U((MWt,hye)=>{hye.exports=pye()});var bye=U(Ft=>{"use strict";Object.defineProperty(Ft,"__esModule",{value:!0});var Ht=P2(),Ta=Q2(),mr=x2(),Jgt=Ie("crypto");function lQ(t){let e=r=>t.request(r).then(o=>{if(t.batch!==void 0&&t.batch(o.hits),!t.shouldStop(o))return o.cursor?e({cursor:o.cursor}):e({page:(r.page||0)+1})});return e({})}var Vgt=t=>{let e=t.appId,r=Ht.createAuth(t.authMode!==void 0?t.authMode:Ht.AuthMode.WithinHeaders,e,t.apiKey),o=Ta.createTransporter({hosts:[{url:`${e}-dsn.algolia.net`,accept:Ta.CallEnum.Read},{url:`${e}.algolia.net`,accept:Ta.CallEnum.Write}].concat(Ht.shuffle([{url:`${e}-1.algolianet.com`},{url:`${e}-2.algolianet.com`},{url:`${e}-3.algolianet.com`}])),...t,headers:{...r.headers(),"content-type":"application/x-www-form-urlencoded",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}}),a={transporter:o,appId:e,addAlgoliaAgent(n,u){o.userAgent.add({segment:n,version:u})},clearCache(){return Promise.all([o.requestsCache.clear(),o.responsesCache.clear()]).then(()=>{})}};return Ht.addMethods(a,t.methods)};function dye(){return{name:"MissingObjectIDError",message:"All objects must have an unique objectID (like a primary key) to be valid. Algolia is also able to generate objectIDs automatically but *it's not recommended*. To do it, use the `{'autoGenerateObjectIDIfNotExist': true}` option."}}function mye(){return{name:"ObjectNotFoundError",message:"Object not found."}}function yye(){return{name:"ValidUntilNotFoundError",message:"ValidUntil not found in given secured api key."}}var zgt=t=>(e,r)=>{let{queryParameters:o,...a}=r||{},n={acl:e,...o!==void 0?{queryParameters:o}:{}},u=(A,p)=>Ht.createRetryablePromise(h=>R2(t)(A.key,p).catch(C=>{if(C.status!==404)throw C;return h()}));return Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:"1/keys",data:n},a),u)},Xgt=t=>(e,r,o)=>{let a=Ta.createMappedRequestOptions(o);return a.queryParameters["X-Algolia-User-ID"]=e,t.transporter.write({method:mr.MethodEnum.Post,path:"1/clusters/mapping",data:{cluster:r}},a)},Zgt=t=>(e,r,o)=>t.transporter.write({method:mr.MethodEnum.Post,path:"1/clusters/mapping/batch",data:{users:e,cluster:r}},o),$gt=t=>(e,r)=>Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!0,requests:{action:"addEntry",body:[]}}},r),(o,a)=>CC(t)(o.taskID,a)),cQ=t=>(e,r,o)=>{let a=(n,u)=>T2(t)(e,{methods:{waitTask:zi}}).waitTask(n.taskID,u);return Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/operation",e),data:{operation:"copy",destination:r}},o),a)},edt=t=>(e,r,o)=>cQ(t)(e,r,{...o,scope:[AQ.Rules]}),tdt=t=>(e,r,o)=>cQ(t)(e,r,{...o,scope:[AQ.Settings]}),rdt=t=>(e,r,o)=>cQ(t)(e,r,{...o,scope:[AQ.Synonyms]}),ndt=t=>(e,r)=>e.method===mr.MethodEnum.Get?t.transporter.read(e,r):t.transporter.write(e,r),idt=t=>(e,r)=>{let o=(a,n)=>Ht.createRetryablePromise(u=>R2(t)(e,n).then(u).catch(A=>{if(A.status!==404)throw A}));return Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Delete,path:Ht.encode("1/keys/%s",e)},r),o)},sdt=t=>(e,r,o)=>{let a=r.map(n=>({action:"deleteEntry",body:{objectID:n}}));return Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!1,requests:a}},o),(n,u)=>CC(t)(n.taskID,u))},odt=()=>(t,e)=>{let r=Ta.serializeQueryParameters(e),o=Jgt.createHmac("sha256",t).update(r).digest("hex");return Buffer.from(o+r).toString("base64")},R2=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Get,path:Ht.encode("1/keys/%s",e)},r),Eye=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Get,path:Ht.encode("1/task/%s",e.toString())},r),adt=t=>e=>t.transporter.read({method:mr.MethodEnum.Get,path:"/1/dictionaries/*/settings"},e),ldt=t=>e=>t.transporter.read({method:mr.MethodEnum.Get,path:"1/logs"},e),cdt=()=>t=>{let e=Buffer.from(t,"base64").toString("ascii"),r=/validUntil=(\d+)/,o=e.match(r);if(o===null)throw yye();return parseInt(o[1],10)-Math.round(new Date().getTime()/1e3)},udt=t=>e=>t.transporter.read({method:mr.MethodEnum.Get,path:"1/clusters/mapping/top"},e),Adt=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Get,path:Ht.encode("1/clusters/mapping/%s",e)},r),fdt=t=>e=>{let{retrieveMappings:r,...o}=e||{};return r===!0&&(o.getClusters=!0),t.transporter.read({method:mr.MethodEnum.Get,path:"1/clusters/mapping/pending"},o)},T2=t=>(e,r={})=>{let o={transporter:t.transporter,appId:t.appId,indexName:e};return Ht.addMethods(o,r.methods)},pdt=t=>e=>t.transporter.read({method:mr.MethodEnum.Get,path:"1/keys"},e),hdt=t=>e=>t.transporter.read({method:mr.MethodEnum.Get,path:"1/clusters"},e),gdt=t=>e=>t.transporter.read({method:mr.MethodEnum.Get,path:"1/indexes"},e),ddt=t=>e=>t.transporter.read({method:mr.MethodEnum.Get,path:"1/clusters/mapping"},e),mdt=t=>(e,r,o)=>{let a=(n,u)=>T2(t)(e,{methods:{waitTask:zi}}).waitTask(n.taskID,u);return Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/operation",e),data:{operation:"move",destination:r}},o),a)},ydt=t=>(e,r)=>{let o=(a,n)=>Promise.all(Object.keys(a.taskID).map(u=>T2(t)(u,{methods:{waitTask:zi}}).waitTask(a.taskID[u],n)));return Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:"1/indexes/*/batch",data:{requests:e}},r),o)},Edt=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Post,path:"1/indexes/*/objects",data:{requests:e}},r),Cdt=t=>(e,r)=>{let o=e.map(a=>({...a,params:Ta.serializeQueryParameters(a.params||{})}));return t.transporter.read({method:mr.MethodEnum.Post,path:"1/indexes/*/queries",data:{requests:o},cacheable:!0},r)},Idt=t=>(e,r)=>Promise.all(e.map(o=>{let{facetName:a,facetQuery:n,...u}=o.params;return T2(t)(o.indexName,{methods:{searchForFacetValues:Sye}}).searchForFacetValues(a,n,{...r,...u})})),wdt=t=>(e,r)=>{let o=Ta.createMappedRequestOptions(r);return o.queryParameters["X-Algolia-User-ID"]=e,t.transporter.write({method:mr.MethodEnum.Delete,path:"1/clusters/mapping"},o)},Bdt=t=>(e,r,o)=>{let a=r.map(n=>({action:"addEntry",body:n}));return Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!0,requests:a}},o),(n,u)=>CC(t)(n.taskID,u))},vdt=t=>(e,r)=>{let o=(a,n)=>Ht.createRetryablePromise(u=>R2(t)(e,n).catch(A=>{if(A.status!==404)throw A;return u()}));return Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("1/keys/%s/restore",e)},r),o)},Ddt=t=>(e,r,o)=>{let a=r.map(n=>({action:"addEntry",body:n}));return Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!1,requests:a}},o),(n,u)=>CC(t)(n.taskID,u))},Sdt=t=>(e,r,o)=>t.transporter.read({method:mr.MethodEnum.Post,path:Ht.encode("/1/dictionaries/%s/search",e),data:{query:r},cacheable:!0},o),Pdt=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Post,path:"1/clusters/mapping/search",data:{query:e}},r),xdt=t=>(e,r)=>Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Put,path:"/1/dictionaries/*/settings",data:e},r),(o,a)=>CC(t)(o.taskID,a)),bdt=t=>(e,r)=>{let o=Object.assign({},r),{queryParameters:a,...n}=r||{},u=a?{queryParameters:a}:{},A=["acl","indexes","referers","restrictSources","queryParameters","description","maxQueriesPerIPPerHour","maxHitsPerQuery"],p=C=>Object.keys(o).filter(w=>A.indexOf(w)!==-1).every(w=>C[w]===o[w]),h=(C,w)=>Ht.createRetryablePromise(v=>R2(t)(e,w).then(b=>p(b)?Promise.resolve():v()));return Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Put,path:Ht.encode("1/keys/%s",e),data:u},n),h)},CC=t=>(e,r)=>Ht.createRetryablePromise(o=>Eye(t)(e,r).then(a=>a.status!=="published"?o():void 0)),Cye=t=>(e,r)=>{let o=(a,n)=>zi(t)(a.taskID,n);return Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/batch",t.indexName),data:{requests:e}},r),o)},Qdt=t=>e=>lQ({shouldStop:r=>r.cursor===void 0,...e,request:r=>t.transporter.read({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/browse",t.indexName),data:r},e)}),kdt=t=>e=>{let r={hitsPerPage:1e3,...e};return lQ({shouldStop:o=>o.hits.length<r.hitsPerPage,...r,request(o){return Pye(t)("",{...r,...o}).then(a=>({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},Fdt=t=>e=>{let r={hitsPerPage:1e3,...e};return lQ({shouldStop:o=>o.hits.length<r.hitsPerPage,...r,request(o){return xye(t)("",{...r,...o}).then(a=>({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},uQ=t=>(e,r,o)=>{let{batchSize:a,...n}=o||{},u={taskIDs:[],objectIDs:[]},A=(p=0)=>{let h=[],C;for(C=p;C<e.length&&(h.push(e[C]),h.length!==(a||1e3));C++);return h.length===0?Promise.resolve(u):Cye(t)(h.map(w=>({action:r,body:w})),n).then(w=>(u.objectIDs=u.objectIDs.concat(w.objectIDs),u.taskIDs.push(w.taskID),C++,A(C)))};return Ht.createWaitablePromise(A(),(p,h)=>Promise.all(p.taskIDs.map(C=>zi(t)(C,h))))},Rdt=t=>e=>Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/clear",t.indexName)},e),(r,o)=>zi(t)(r.taskID,o)),Tdt=t=>e=>{let{forwardToReplicas:r,...o}=e||{},a=Ta.createMappedRequestOptions(o);return r&&(a.queryParameters.forwardToReplicas=1),Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/rules/clear",t.indexName)},a),(n,u)=>zi(t)(n.taskID,u))},Ndt=t=>e=>{let{forwardToReplicas:r,...o}=e||{},a=Ta.createMappedRequestOptions(o);return r&&(a.queryParameters.forwardToReplicas=1),Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/synonyms/clear",t.indexName)},a),(n,u)=>zi(t)(n.taskID,u))},Ldt=t=>(e,r)=>Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/deleteByQuery",t.indexName),data:e},r),(o,a)=>zi(t)(o.taskID,a)),Odt=t=>e=>Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Delete,path:Ht.encode("1/indexes/%s",t.indexName)},e),(r,o)=>zi(t)(r.taskID,o)),Mdt=t=>(e,r)=>Ht.createWaitablePromise(Iye(t)([e],r).then(o=>({taskID:o.taskIDs[0]})),(o,a)=>zi(t)(o.taskID,a)),Iye=t=>(e,r)=>{let o=e.map(a=>({objectID:a}));return uQ(t)(o,rm.DeleteObject,r)},Udt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=Ta.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Delete,path:Ht.encode("1/indexes/%s/rules/%s",t.indexName,e)},n),(u,A)=>zi(t)(u.taskID,A))},_dt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=Ta.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Delete,path:Ht.encode("1/indexes/%s/synonyms/%s",t.indexName,e)},n),(u,A)=>zi(t)(u.taskID,A))},Hdt=t=>e=>wye(t)(e).then(()=>!0).catch(r=>{if(r.status!==404)throw r;return!1}),qdt=t=>(e,r,o)=>t.transporter.read({method:mr.MethodEnum.Post,path:Ht.encode("1/answers/%s/prediction",t.indexName),data:{query:e,queryLanguages:r},cacheable:!0},o),jdt=t=>(e,r)=>{let{query:o,paginate:a,...n}=r||{},u=0,A=()=>Dye(t)(o||"",{...n,page:u}).then(p=>{for(let[h,C]of Object.entries(p.hits))if(e(C))return{object:C,position:parseInt(h,10),page:u};if(u++,a===!1||u>=p.nbPages)throw mye();return A()});return A()},Gdt=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Get,path:Ht.encode("1/indexes/%s/%s",t.indexName,e)},r),Wdt=()=>(t,e)=>{for(let[r,o]of Object.entries(t.hits))if(o.objectID===e)return parseInt(r,10);return-1},Ydt=t=>(e,r)=>{let{attributesToRetrieve:o,...a}=r||{},n=e.map(u=>({indexName:t.indexName,objectID:u,...o?{attributesToRetrieve:o}:{}}));return t.transporter.read({method:mr.MethodEnum.Post,path:"1/indexes/*/objects",data:{requests:n}},a)},Kdt=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Get,path:Ht.encode("1/indexes/%s/rules/%s",t.indexName,e)},r),wye=t=>e=>t.transporter.read({method:mr.MethodEnum.Get,path:Ht.encode("1/indexes/%s/settings",t.indexName),data:{getVersion:2}},e),Jdt=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Get,path:Ht.encode("1/indexes/%s/synonyms/%s",t.indexName,e)},r),Bye=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Get,path:Ht.encode("1/indexes/%s/task/%s",t.indexName,e.toString())},r),Vdt=t=>(e,r)=>Ht.createWaitablePromise(vye(t)([e],r).then(o=>({objectID:o.objectIDs[0],taskID:o.taskIDs[0]})),(o,a)=>zi(t)(o.taskID,a)),vye=t=>(e,r)=>{let{createIfNotExists:o,...a}=r||{},n=o?rm.PartialUpdateObject:rm.PartialUpdateObjectNoCreate;return uQ(t)(e,n,a)},zdt=t=>(e,r)=>{let{safe:o,autoGenerateObjectIDIfNotExist:a,batchSize:n,...u}=r||{},A=(E,R,L,_)=>Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/operation",E),data:{operation:L,destination:R}},_),(J,re)=>zi(t)(J.taskID,re)),p=Math.random().toString(36).substring(7),h=`${t.indexName}_tmp_${p}`,C=HH({appId:t.appId,transporter:t.transporter,indexName:h}),w=[],v=A(t.indexName,h,"copy",{...u,scope:["settings","synonyms","rules"]});w.push(v);let b=(o?v.wait(u):v).then(()=>{let E=C(e,{...u,autoGenerateObjectIDIfNotExist:a,batchSize:n});return w.push(E),o?E.wait(u):E}).then(()=>{let E=A(h,t.indexName,"move",u);return w.push(E),o?E.wait(u):E}).then(()=>Promise.all(w)).then(([E,R,L])=>({objectIDs:R.objectIDs,taskIDs:[E.taskID,...R.taskIDs,L.taskID]}));return Ht.createWaitablePromise(b,(E,R)=>Promise.all(w.map(L=>L.wait(R))))},Xdt=t=>(e,r)=>qH(t)(e,{...r,clearExistingRules:!0}),Zdt=t=>(e,r)=>jH(t)(e,{...r,clearExistingSynonyms:!0}),$dt=t=>(e,r)=>Ht.createWaitablePromise(HH(t)([e],r).then(o=>({objectID:o.objectIDs[0],taskID:o.taskIDs[0]})),(o,a)=>zi(t)(o.taskID,a)),HH=t=>(e,r)=>{let{autoGenerateObjectIDIfNotExist:o,...a}=r||{},n=o?rm.AddObject:rm.UpdateObject;if(n===rm.UpdateObject){for(let u of e)if(u.objectID===void 0)return Ht.createWaitablePromise(Promise.reject(dye()))}return uQ(t)(e,n,a)},emt=t=>(e,r)=>qH(t)([e],r),qH=t=>(e,r)=>{let{forwardToReplicas:o,clearExistingRules:a,...n}=r||{},u=Ta.createMappedRequestOptions(n);return o&&(u.queryParameters.forwardToReplicas=1),a&&(u.queryParameters.clearExistingRules=1),Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/rules/batch",t.indexName),data:e},u),(A,p)=>zi(t)(A.taskID,p))},tmt=t=>(e,r)=>jH(t)([e],r),jH=t=>(e,r)=>{let{forwardToReplicas:o,clearExistingSynonyms:a,replaceExistingSynonyms:n,...u}=r||{},A=Ta.createMappedRequestOptions(u);return o&&(A.queryParameters.forwardToReplicas=1),(n||a)&&(A.queryParameters.replaceExistingSynonyms=1),Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/synonyms/batch",t.indexName),data:e},A),(p,h)=>zi(t)(p.taskID,h))},Dye=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/query",t.indexName),data:{query:e},cacheable:!0},r),Sye=t=>(e,r,o)=>t.transporter.read({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/facets/%s/query",t.indexName,e),data:{facetQuery:r},cacheable:!0},o),Pye=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/rules/search",t.indexName),data:{query:e}},r),xye=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/synonyms/search",t.indexName),data:{query:e}},r),rmt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=Ta.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Put,path:Ht.encode("1/indexes/%s/settings",t.indexName),data:e},n),(u,A)=>zi(t)(u.taskID,A))},zi=t=>(e,r)=>Ht.createRetryablePromise(o=>Bye(t)(e,r).then(a=>a.status!=="published"?o():void 0)),nmt={AddObject:"addObject",Analytics:"analytics",Browser:"browse",DeleteIndex:"deleteIndex",DeleteObject:"deleteObject",EditSettings:"editSettings",ListIndexes:"listIndexes",Logs:"logs",Personalization:"personalization",Recommendation:"recommendation",Search:"search",SeeUnretrievableAttributes:"seeUnretrievableAttributes",Settings:"settings",Usage:"usage"},rm={AddObject:"addObject",UpdateObject:"updateObject",PartialUpdateObject:"partialUpdateObject",PartialUpdateObjectNoCreate:"partialUpdateObjectNoCreate",DeleteObject:"deleteObject",DeleteIndex:"delete",ClearIndex:"clear"},AQ={Settings:"settings",Synonyms:"synonyms",Rules:"rules"},imt={None:"none",StopIfEnoughMatches:"stopIfEnoughMatches"},smt={Synonym:"synonym",OneWaySynonym:"oneWaySynonym",AltCorrection1:"altCorrection1",AltCorrection2:"altCorrection2",Placeholder:"placeholder"};Ft.ApiKeyACLEnum=nmt;Ft.BatchActionEnum=rm;Ft.ScopeEnum=AQ;Ft.StrategyEnum=imt;Ft.SynonymEnum=smt;Ft.addApiKey=zgt;Ft.assignUserID=Xgt;Ft.assignUserIDs=Zgt;Ft.batch=Cye;Ft.browseObjects=Qdt;Ft.browseRules=kdt;Ft.browseSynonyms=Fdt;Ft.chunkedBatch=uQ;Ft.clearDictionaryEntries=$gt;Ft.clearObjects=Rdt;Ft.clearRules=Tdt;Ft.clearSynonyms=Ndt;Ft.copyIndex=cQ;Ft.copyRules=edt;Ft.copySettings=tdt;Ft.copySynonyms=rdt;Ft.createBrowsablePromise=lQ;Ft.createMissingObjectIDError=dye;Ft.createObjectNotFoundError=mye;Ft.createSearchClient=Vgt;Ft.createValidUntilNotFoundError=yye;Ft.customRequest=ndt;Ft.deleteApiKey=idt;Ft.deleteBy=Ldt;Ft.deleteDictionaryEntries=sdt;Ft.deleteIndex=Odt;Ft.deleteObject=Mdt;Ft.deleteObjects=Iye;Ft.deleteRule=Udt;Ft.deleteSynonym=_dt;Ft.exists=Hdt;Ft.findAnswers=qdt;Ft.findObject=jdt;Ft.generateSecuredApiKey=odt;Ft.getApiKey=R2;Ft.getAppTask=Eye;Ft.getDictionarySettings=adt;Ft.getLogs=ldt;Ft.getObject=Gdt;Ft.getObjectPosition=Wdt;Ft.getObjects=Ydt;Ft.getRule=Kdt;Ft.getSecuredApiKeyRemainingValidity=cdt;Ft.getSettings=wye;Ft.getSynonym=Jdt;Ft.getTask=Bye;Ft.getTopUserIDs=udt;Ft.getUserID=Adt;Ft.hasPendingMappings=fdt;Ft.initIndex=T2;Ft.listApiKeys=pdt;Ft.listClusters=hdt;Ft.listIndices=gdt;Ft.listUserIDs=ddt;Ft.moveIndex=mdt;Ft.multipleBatch=ydt;Ft.multipleGetObjects=Edt;Ft.multipleQueries=Cdt;Ft.multipleSearchForFacetValues=Idt;Ft.partialUpdateObject=Vdt;Ft.partialUpdateObjects=vye;Ft.removeUserID=wdt;Ft.replaceAllObjects=zdt;Ft.replaceAllRules=Xdt;Ft.replaceAllSynonyms=Zdt;Ft.replaceDictionaryEntries=Bdt;Ft.restoreApiKey=vdt;Ft.saveDictionaryEntries=Ddt;Ft.saveObject=$dt;Ft.saveObjects=HH;Ft.saveRule=emt;Ft.saveRules=qH;Ft.saveSynonym=tmt;Ft.saveSynonyms=jH;Ft.search=Dye;Ft.searchDictionaryEntries=Sdt;Ft.searchForFacetValues=Sye;Ft.searchRules=Pye;Ft.searchSynonyms=xye;Ft.searchUserIDs=Pdt;Ft.setDictionarySettings=xdt;Ft.setSettings=rmt;Ft.updateApiKey=bdt;Ft.waitAppTask=CC;Ft.waitTask=zi});var kye=U((_Wt,Qye)=>{Qye.exports=bye()});var Fye=U(fQ=>{"use strict";Object.defineProperty(fQ,"__esModule",{value:!0});function omt(){return{debug(t,e){return Promise.resolve()},info(t,e){return Promise.resolve()},error(t,e){return Promise.resolve()}}}var amt={Debug:1,Info:2,Error:3};fQ.LogLevelEnum=amt;fQ.createNullLogger=omt});var Tye=U((qWt,Rye)=>{Rye.exports=Fye()});var Mye=U(GH=>{"use strict";Object.defineProperty(GH,"__esModule",{value:!0});var Nye=Ie("http"),Lye=Ie("https"),lmt=Ie("url"),Oye={keepAlive:!0},cmt=new Nye.Agent(Oye),umt=new Lye.Agent(Oye);function Amt({agent:t,httpAgent:e,httpsAgent:r,requesterOptions:o={}}={}){let a=e||t||cmt,n=r||t||umt;return{send(u){return new Promise(A=>{let p=lmt.parse(u.url),h=p.query===null?p.pathname:`${p.pathname}?${p.query}`,C={...o,agent:p.protocol==="https:"?n:a,hostname:p.hostname,path:h,method:u.method,headers:{...o&&o.headers?o.headers:{},...u.headers},...p.port!==void 0?{port:p.port||""}:{}},w=(p.protocol==="https:"?Lye:Nye).request(C,R=>{let L=[];R.on("data",_=>{L=L.concat(_)}),R.on("end",()=>{clearTimeout(b),clearTimeout(E),A({status:R.statusCode||0,content:Buffer.concat(L).toString(),isTimedOut:!1})})}),v=(R,L)=>setTimeout(()=>{w.abort(),A({status:0,content:L,isTimedOut:!0})},R*1e3),b=v(u.connectTimeout,"Connection timeout"),E;w.on("error",R=>{clearTimeout(b),clearTimeout(E),A({status:0,content:R.message,isTimedOut:!1})}),w.once("response",()=>{clearTimeout(b),E=v(u.responseTimeout,"Socket timeout")}),u.data!==void 0&&w.write(u.data),w.end()})},destroy(){return a.destroy(),n.destroy(),Promise.resolve()}}}GH.createNodeHttpRequester=Amt});var _ye=U((GWt,Uye)=>{Uye.exports=Mye()});var Gye=U((WWt,jye)=>{"use strict";var Hye=Mme(),fmt=Hme(),IC=Aye(),YH=P2(),WH=gye(),Lt=kye(),pmt=Tye(),hmt=_ye(),gmt=Q2();function qye(t,e,r){let o={appId:t,apiKey:e,timeouts:{connect:2,read:5,write:30},requester:hmt.createNodeHttpRequester(),logger:pmt.createNullLogger(),responsesCache:Hye.createNullCache(),requestsCache:Hye.createNullCache(),hostsCache:fmt.createInMemoryCache(),userAgent:gmt.createUserAgent(YH.version).add({segment:"Node.js",version:process.versions.node})},a={...o,...r},n=()=>u=>WH.createPersonalizationClient({...o,...u,methods:{getPersonalizationStrategy:WH.getPersonalizationStrategy,setPersonalizationStrategy:WH.setPersonalizationStrategy}});return Lt.createSearchClient({...a,methods:{search:Lt.multipleQueries,searchForFacetValues:Lt.multipleSearchForFacetValues,multipleBatch:Lt.multipleBatch,multipleGetObjects:Lt.multipleGetObjects,multipleQueries:Lt.multipleQueries,copyIndex:Lt.copyIndex,copySettings:Lt.copySettings,copyRules:Lt.copyRules,copySynonyms:Lt.copySynonyms,moveIndex:Lt.moveIndex,listIndices:Lt.listIndices,getLogs:Lt.getLogs,listClusters:Lt.listClusters,multipleSearchForFacetValues:Lt.multipleSearchForFacetValues,getApiKey:Lt.getApiKey,addApiKey:Lt.addApiKey,listApiKeys:Lt.listApiKeys,updateApiKey:Lt.updateApiKey,deleteApiKey:Lt.deleteApiKey,restoreApiKey:Lt.restoreApiKey,assignUserID:Lt.assignUserID,assignUserIDs:Lt.assignUserIDs,getUserID:Lt.getUserID,searchUserIDs:Lt.searchUserIDs,listUserIDs:Lt.listUserIDs,getTopUserIDs:Lt.getTopUserIDs,removeUserID:Lt.removeUserID,hasPendingMappings:Lt.hasPendingMappings,generateSecuredApiKey:Lt.generateSecuredApiKey,getSecuredApiKeyRemainingValidity:Lt.getSecuredApiKeyRemainingValidity,destroy:YH.destroy,clearDictionaryEntries:Lt.clearDictionaryEntries,deleteDictionaryEntries:Lt.deleteDictionaryEntries,getDictionarySettings:Lt.getDictionarySettings,getAppTask:Lt.getAppTask,replaceDictionaryEntries:Lt.replaceDictionaryEntries,saveDictionaryEntries:Lt.saveDictionaryEntries,searchDictionaryEntries:Lt.searchDictionaryEntries,setDictionarySettings:Lt.setDictionarySettings,waitAppTask:Lt.waitAppTask,customRequest:Lt.customRequest,initIndex:u=>A=>Lt.initIndex(u)(A,{methods:{batch:Lt.batch,delete:Lt.deleteIndex,findAnswers:Lt.findAnswers,getObject:Lt.getObject,getObjects:Lt.getObjects,saveObject:Lt.saveObject,saveObjects:Lt.saveObjects,search:Lt.search,searchForFacetValues:Lt.searchForFacetValues,waitTask:Lt.waitTask,setSettings:Lt.setSettings,getSettings:Lt.getSettings,partialUpdateObject:Lt.partialUpdateObject,partialUpdateObjects:Lt.partialUpdateObjects,deleteObject:Lt.deleteObject,deleteObjects:Lt.deleteObjects,deleteBy:Lt.deleteBy,clearObjects:Lt.clearObjects,browseObjects:Lt.browseObjects,getObjectPosition:Lt.getObjectPosition,findObject:Lt.findObject,exists:Lt.exists,saveSynonym:Lt.saveSynonym,saveSynonyms:Lt.saveSynonyms,getSynonym:Lt.getSynonym,searchSynonyms:Lt.searchSynonyms,browseSynonyms:Lt.browseSynonyms,deleteSynonym:Lt.deleteSynonym,clearSynonyms:Lt.clearSynonyms,replaceAllObjects:Lt.replaceAllObjects,replaceAllSynonyms:Lt.replaceAllSynonyms,searchRules:Lt.searchRules,getRule:Lt.getRule,deleteRule:Lt.deleteRule,saveRule:Lt.saveRule,saveRules:Lt.saveRules,replaceAllRules:Lt.replaceAllRules,browseRules:Lt.browseRules,clearRules:Lt.clearRules}}),initAnalytics:()=>u=>IC.createAnalyticsClient({...o,...u,methods:{addABTest:IC.addABTest,getABTest:IC.getABTest,getABTests:IC.getABTests,stopABTest:IC.stopABTest,deleteABTest:IC.deleteABTest}}),initPersonalization:n,initRecommendation:()=>u=>(a.logger.info("The `initRecommendation` method is deprecated. Use `initPersonalization` instead."),n()(u))}})}qye.version=YH.version;jye.exports=qye});var JH=U((YWt,KH)=>{var Wye=Gye();KH.exports=Wye;KH.exports.default=Wye});var XH=U((JWt,Jye)=>{"use strict";var Kye=Object.getOwnPropertySymbols,mmt=Object.prototype.hasOwnProperty,ymt=Object.prototype.propertyIsEnumerable;function Emt(t){if(t==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function Cmt(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de",Object.getOwnPropertyNames(t)[0]==="5")return!1;for(var e={},r=0;r<10;r++)e["_"+String.fromCharCode(r)]=r;var o=Object.getOwnPropertyNames(e).map(function(n){return e[n]});if(o.join("")!=="0123456789")return!1;var a={};return"abcdefghijklmnopqrst".split("").forEach(function(n){a[n]=n}),Object.keys(Object.assign({},a)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}Jye.exports=Cmt()?Object.assign:function(t,e){for(var r,o=Emt(t),a,n=1;n<arguments.length;n++){r=Object(arguments[n]);for(var u in r)mmt.call(r,u)&&(o[u]=r[u]);if(Kye){a=Kye(r);for(var A=0;A<a.length;A++)ymt.call(r,a[A])&&(o[a[A]]=r[a[A]])}}return o}});var oEe=U(Qn=>{"use strict";var r6=XH(),tu=typeof Symbol=="function"&&Symbol.for,N2=tu?Symbol.for("react.element"):60103,Imt=tu?Symbol.for("react.portal"):60106,wmt=tu?Symbol.for("react.fragment"):60107,Bmt=tu?Symbol.for("react.strict_mode"):60108,vmt=tu?Symbol.for("react.profiler"):60114,Dmt=tu?Symbol.for("react.provider"):60109,Smt=tu?Symbol.for("react.context"):60110,Pmt=tu?Symbol.for("react.forward_ref"):60112,xmt=tu?Symbol.for("react.suspense"):60113,bmt=tu?Symbol.for("react.memo"):60115,Qmt=tu?Symbol.for("react.lazy"):60116,Vye=typeof Symbol=="function"&&Symbol.iterator;function L2(t){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+t,r=1;r<arguments.length;r++)e+="&args[]="+encodeURIComponent(arguments[r]);return"Minified React error #"+t+"; visit "+e+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var zye={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Xye={};function wC(t,e,r){this.props=t,this.context=e,this.refs=Xye,this.updater=r||zye}wC.prototype.isReactComponent={};wC.prototype.setState=function(t,e){if(typeof t!="object"&&typeof t!="function"&&t!=null)throw Error(L2(85));this.updater.enqueueSetState(this,t,e,"setState")};wC.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,"forceUpdate")};function Zye(){}Zye.prototype=wC.prototype;function n6(t,e,r){this.props=t,this.context=e,this.refs=Xye,this.updater=r||zye}var i6=n6.prototype=new Zye;i6.constructor=n6;r6(i6,wC.prototype);i6.isPureReactComponent=!0;var s6={current:null},$ye=Object.prototype.hasOwnProperty,eEe={key:!0,ref:!0,__self:!0,__source:!0};function tEe(t,e,r){var o,a={},n=null,u=null;if(e!=null)for(o in e.ref!==void 0&&(u=e.ref),e.key!==void 0&&(n=""+e.key),e)$ye.call(e,o)&&!eEe.hasOwnProperty(o)&&(a[o]=e[o]);var A=arguments.length-2;if(A===1)a.children=r;else if(1<A){for(var p=Array(A),h=0;h<A;h++)p[h]=arguments[h+2];a.children=p}if(t&&t.defaultProps)for(o in A=t.defaultProps,A)a[o]===void 0&&(a[o]=A[o]);return{$$typeof:N2,type:t,key:n,ref:u,props:a,_owner:s6.current}}function kmt(t,e){return{$$typeof:N2,type:t.type,key:e,ref:t.ref,props:t.props,_owner:t._owner}}function o6(t){return typeof t=="object"&&t!==null&&t.$$typeof===N2}function Fmt(t){var e={"=":"=0",":":"=2"};return"$"+(""+t).replace(/[=:]/g,function(r){return e[r]})}var rEe=/\/+/g,pQ=[];function nEe(t,e,r,o){if(pQ.length){var a=pQ.pop();return a.result=t,a.keyPrefix=e,a.func=r,a.context=o,a.count=0,a}return{result:t,keyPrefix:e,func:r,context:o,count:0}}function iEe(t){t.result=null,t.keyPrefix=null,t.func=null,t.context=null,t.count=0,10>pQ.length&&pQ.push(t)}function $H(t,e,r,o){var a=typeof t;(a==="undefined"||a==="boolean")&&(t=null);var n=!1;if(t===null)n=!0;else switch(a){case"string":case"number":n=!0;break;case"object":switch(t.$$typeof){case N2:case Imt:n=!0}}if(n)return r(o,t,e===""?"."+ZH(t,0):e),1;if(n=0,e=e===""?".":e+":",Array.isArray(t))for(var u=0;u<t.length;u++){a=t[u];var A=e+ZH(a,u);n+=$H(a,A,r,o)}else if(t===null||typeof t!="object"?A=null:(A=Vye&&t[Vye]||t["@@iterator"],A=typeof A=="function"?A:null),typeof A=="function")for(t=A.call(t),u=0;!(a=t.next()).done;)a=a.value,A=e+ZH(a,u++),n+=$H(a,A,r,o);else if(a==="object")throw r=""+t,Error(L2(31,r==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":r,""));return n}function e6(t,e,r){return t==null?0:$H(t,"",e,r)}function ZH(t,e){return typeof t=="object"&&t!==null&&t.key!=null?Fmt(t.key):e.toString(36)}function Rmt(t,e){t.func.call(t.context,e,t.count++)}function Tmt(t,e,r){var o=t.result,a=t.keyPrefix;t=t.func.call(t.context,e,t.count++),Array.isArray(t)?t6(t,o,r,function(n){return n}):t!=null&&(o6(t)&&(t=kmt(t,a+(!t.key||e&&e.key===t.key?"":(""+t.key).replace(rEe,"$&/")+"/")+r)),o.push(t))}function t6(t,e,r,o,a){var n="";r!=null&&(n=(""+r).replace(rEe,"$&/")+"/"),e=nEe(e,n,o,a),e6(t,Tmt,e),iEe(e)}var sEe={current:null};function Jf(){var t=sEe.current;if(t===null)throw Error(L2(321));return t}var Nmt={ReactCurrentDispatcher:sEe,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:s6,IsSomeRendererActing:{current:!1},assign:r6};Qn.Children={map:function(t,e,r){if(t==null)return t;var o=[];return t6(t,o,null,e,r),o},forEach:function(t,e,r){if(t==null)return t;e=nEe(null,null,e,r),e6(t,Rmt,e),iEe(e)},count:function(t){return e6(t,function(){return null},null)},toArray:function(t){var e=[];return t6(t,e,null,function(r){return r}),e},only:function(t){if(!o6(t))throw Error(L2(143));return t}};Qn.Component=wC;Qn.Fragment=wmt;Qn.Profiler=vmt;Qn.PureComponent=n6;Qn.StrictMode=Bmt;Qn.Suspense=xmt;Qn.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Nmt;Qn.cloneElement=function(t,e,r){if(t==null)throw Error(L2(267,t));var o=r6({},t.props),a=t.key,n=t.ref,u=t._owner;if(e!=null){if(e.ref!==void 0&&(n=e.ref,u=s6.current),e.key!==void 0&&(a=""+e.key),t.type&&t.type.defaultProps)var A=t.type.defaultProps;for(p in e)$ye.call(e,p)&&!eEe.hasOwnProperty(p)&&(o[p]=e[p]===void 0&&A!==void 0?A[p]:e[p])}var p=arguments.length-2;if(p===1)o.children=r;else if(1<p){A=Array(p);for(var h=0;h<p;h++)A[h]=arguments[h+2];o.children=A}return{$$typeof:N2,type:t.type,key:a,ref:n,props:o,_owner:u}};Qn.createContext=function(t,e){return e===void 0&&(e=null),t={$$typeof:Smt,_calculateChangedBits:e,_currentValue:t,_currentValue2:t,_threadCount:0,Provider:null,Consumer:null},t.Provider={$$typeof:Dmt,_context:t},t.Consumer=t};Qn.createElement=tEe;Qn.createFactory=function(t){var e=tEe.bind(null,t);return e.type=t,e};Qn.createRef=function(){return{current:null}};Qn.forwardRef=function(t){return{$$typeof:Pmt,render:t}};Qn.isValidElement=o6;Qn.lazy=function(t){return{$$typeof:Qmt,_ctor:t,_status:-1,_result:null}};Qn.memo=function(t,e){return{$$typeof:bmt,type:t,compare:e===void 0?null:e}};Qn.useCallback=function(t,e){return Jf().useCallback(t,e)};Qn.useContext=function(t,e){return Jf().useContext(t,e)};Qn.useDebugValue=function(){};Qn.useEffect=function(t,e){return Jf().useEffect(t,e)};Qn.useImperativeHandle=function(t,e,r){return Jf().useImperativeHandle(t,e,r)};Qn.useLayoutEffect=function(t,e){return Jf().useLayoutEffect(t,e)};Qn.useMemo=function(t,e){return Jf().useMemo(t,e)};Qn.useReducer=function(t,e,r){return Jf().useReducer(t,e,r)};Qn.useRef=function(t){return Jf().useRef(t)};Qn.useState=function(t){return Jf().useState(t)};Qn.version="16.13.1"});var en=U((zWt,aEe)=>{"use strict";aEe.exports=oEe()});var l6=U((XWt,a6)=>{"use strict";var on=a6.exports;a6.exports.default=on;var kn="\x1B[",O2="\x1B]",BC="\x07",hQ=";",lEe=process.env.TERM_PROGRAM==="Apple_Terminal";on.cursorTo=(t,e)=>{if(typeof t!="number")throw new TypeError("The `x` argument is required");return typeof e!="number"?kn+(t+1)+"G":kn+(e+1)+";"+(t+1)+"H"};on.cursorMove=(t,e)=>{if(typeof t!="number")throw new TypeError("The `x` argument is required");let r="";return t<0?r+=kn+-t+"D":t>0&&(r+=kn+t+"C"),e<0?r+=kn+-e+"A":e>0&&(r+=kn+e+"B"),r};on.cursorUp=(t=1)=>kn+t+"A";on.cursorDown=(t=1)=>kn+t+"B";on.cursorForward=(t=1)=>kn+t+"C";on.cursorBackward=(t=1)=>kn+t+"D";on.cursorLeft=kn+"G";on.cursorSavePosition=lEe?"\x1B7":kn+"s";on.cursorRestorePosition=lEe?"\x1B8":kn+"u";on.cursorGetPosition=kn+"6n";on.cursorNextLine=kn+"E";on.cursorPrevLine=kn+"F";on.cursorHide=kn+"?25l";on.cursorShow=kn+"?25h";on.eraseLines=t=>{let e="";for(let r=0;r<t;r++)e+=on.eraseLine+(r<t-1?on.cursorUp():"");return t&&(e+=on.cursorLeft),e};on.eraseEndLine=kn+"K";on.eraseStartLine=kn+"1K";on.eraseLine=kn+"2K";on.eraseDown=kn+"J";on.eraseUp=kn+"1J";on.eraseScreen=kn+"2J";on.scrollUp=kn+"S";on.scrollDown=kn+"T";on.clearScreen="\x1Bc";on.clearTerminal=process.platform==="win32"?`${on.eraseScreen}${kn}0f`:`${on.eraseScreen}${kn}3J${kn}H`;on.beep=BC;on.link=(t,e)=>[O2,"8",hQ,hQ,e,BC,t,O2,"8",hQ,hQ,BC].join("");on.image=(t,e={})=>{let r=`${O2}1337;File=inline=1`;return e.width&&(r+=`;width=${e.width}`),e.height&&(r+=`;height=${e.height}`),e.preserveAspectRatio===!1&&(r+=";preserveAspectRatio=0"),r+":"+t.toString("base64")+BC};on.iTerm={setCwd:(t=process.cwd())=>`${O2}50;CurrentDir=${t}${BC}`,annotation:(t,e={})=>{let r=`${O2}1337;`,o=typeof e.x<"u",a=typeof e.y<"u";if((o||a)&&!(o&&a&&typeof e.length<"u"))throw new Error("`x`, `y` and `length` must be defined when `x` or `y` is defined");return t=t.replace(/\|/g,""),r+=e.isHidden?"AddHiddenAnnotation=":"AddAnnotation=",e.length>0?r+=(o?[t,e.length,e.x,e.y]:[e.length,t]).join("|"):r+=t,r+BC}}});var uEe=U((ZWt,c6)=>{"use strict";var cEe=(t,e)=>{for(let r of Reflect.ownKeys(e))Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r));return t};c6.exports=cEe;c6.exports.default=cEe});var fEe=U(($Wt,dQ)=>{"use strict";var Lmt=uEe(),gQ=new WeakMap,AEe=(t,e={})=>{if(typeof t!="function")throw new TypeError("Expected a function");let r,o=0,a=t.displayName||t.name||"<anonymous>",n=function(...u){if(gQ.set(n,++o),o===1)r=t.apply(this,u),t=null;else if(e.throw===!0)throw new Error(`Function \`${a}\` can only be called once`);return r};return Lmt(n,t),gQ.set(n,o),n};dQ.exports=AEe;dQ.exports.default=AEe;dQ.exports.callCount=t=>{if(!gQ.has(t))throw new Error(`The given function \`${t.name}\` is not wrapped by the \`onetime\` package`);return gQ.get(t)}});var pEe=U((eYt,mQ)=>{mQ.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];process.platform!=="win32"&&mQ.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&mQ.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var f6=U((tYt,SC)=>{var gi=global.process,nm=function(t){return t&&typeof t=="object"&&typeof t.removeListener=="function"&&typeof t.emit=="function"&&typeof t.reallyExit=="function"&&typeof t.listeners=="function"&&typeof t.kill=="function"&&typeof t.pid=="number"&&typeof t.on=="function"};nm(gi)?(hEe=Ie("assert"),vC=pEe(),gEe=/^win/i.test(gi.platform),M2=Ie("events"),typeof M2!="function"&&(M2=M2.EventEmitter),gi.__signal_exit_emitter__?xs=gi.__signal_exit_emitter__:(xs=gi.__signal_exit_emitter__=new M2,xs.count=0,xs.emitted={}),xs.infinite||(xs.setMaxListeners(1/0),xs.infinite=!0),SC.exports=function(t,e){if(!nm(global.process))return function(){};hEe.equal(typeof t,"function","a callback must be provided for exit handler"),DC===!1&&u6();var r="exit";e&&e.alwaysLast&&(r="afterexit");var o=function(){xs.removeListener(r,t),xs.listeners("exit").length===0&&xs.listeners("afterexit").length===0&&yQ()};return xs.on(r,t),o},yQ=function(){!DC||!nm(global.process)||(DC=!1,vC.forEach(function(e){try{gi.removeListener(e,EQ[e])}catch{}}),gi.emit=CQ,gi.reallyExit=A6,xs.count-=1)},SC.exports.unload=yQ,im=function(e,r,o){xs.emitted[e]||(xs.emitted[e]=!0,xs.emit(e,r,o))},EQ={},vC.forEach(function(t){EQ[t]=function(){if(!!nm(global.process)){var r=gi.listeners(t);r.length===xs.count&&(yQ(),im("exit",null,t),im("afterexit",null,t),gEe&&t==="SIGHUP"&&(t="SIGINT"),gi.kill(gi.pid,t))}}}),SC.exports.signals=function(){return vC},DC=!1,u6=function(){DC||!nm(global.process)||(DC=!0,xs.count+=1,vC=vC.filter(function(e){try{return gi.on(e,EQ[e]),!0}catch{return!1}}),gi.emit=mEe,gi.reallyExit=dEe)},SC.exports.load=u6,A6=gi.reallyExit,dEe=function(e){!nm(global.process)||(gi.exitCode=e||0,im("exit",gi.exitCode,null),im("afterexit",gi.exitCode,null),A6.call(gi,gi.exitCode))},CQ=gi.emit,mEe=function(e,r){if(e==="exit"&&nm(global.process)){r!==void 0&&(gi.exitCode=r);var o=CQ.apply(this,arguments);return im("exit",gi.exitCode,null),im("afterexit",gi.exitCode,null),o}else return CQ.apply(this,arguments)}):SC.exports=function(){return function(){}};var hEe,vC,gEe,M2,xs,yQ,im,EQ,DC,u6,A6,dEe,CQ,mEe});var EEe=U((rYt,yEe)=>{"use strict";var Omt=fEe(),Mmt=f6();yEe.exports=Omt(()=>{Mmt(()=>{process.stderr.write("\x1B[?25h")},{alwaysLast:!0})})});var p6=U(PC=>{"use strict";var Umt=EEe(),IQ=!1;PC.show=(t=process.stderr)=>{!t.isTTY||(IQ=!1,t.write("\x1B[?25h"))};PC.hide=(t=process.stderr)=>{!t.isTTY||(Umt(),IQ=!0,t.write("\x1B[?25l"))};PC.toggle=(t,e)=>{t!==void 0&&(IQ=t),IQ?PC.show(e):PC.hide(e)}});var BEe=U(U2=>{"use strict";var wEe=U2&&U2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(U2,"__esModule",{value:!0});var CEe=wEe(l6()),IEe=wEe(p6()),_mt=(t,{showCursor:e=!1}={})=>{let r=0,o="",a=!1,n=u=>{!e&&!a&&(IEe.default.hide(),a=!0);let A=u+` | 279 | ${this.getDeclarations()}`}createSession(){return new IH(this.project,this.fullSource)}async processClassic(){let e=this.createSession();return{enforcedDependencies:await this.genEnforcedDependencies(e),enforcedFields:await this.genEnforcedFields(e)}}async process(){let{enforcedDependencies:e,enforcedFields:r}=await this.processClassic(),o=new Map;for(let{workspace:a,dependencyIdent:n,dependencyRange:u,dependencyType:A}of e){let p=u2([A,Y.stringifyIdent(n)]),h=We.getMapWithDefault(o,a.cwd);We.getMapWithDefault(h,p).set(u??void 0,new Set)}for(let{workspace:a,fieldPath:n,fieldValue:u}of r){let A=u2(n),p=We.getMapWithDefault(o,a.cwd);We.getMapWithDefault(p,A).set(JSON.parse(u)??void 0,new Set)}return{manifestUpdates:o,reportedErrors:new Map}}async genEnforcedDependencies(e){let r=[];for await(let o of e.makeQuery("workspace(WorkspaceCwd), dependency_type(DependencyType), gen_enforced_dependency(WorkspaceCwd, DependencyIdent, DependencyRange, DependencyType).")){let a=J.resolve(this.project.cwd,nm(o.links.WorkspaceCwd)),n=nm(o.links.DependencyIdent),u=nm(o.links.DependencyRange),A=nm(o.links.DependencyType);if(a===null||n===null)throw new Error("Invalid rule");let p=this.project.getWorkspaceByCwd(a),h=Y.parseIdent(n);r.push({workspace:p,dependencyIdent:h,dependencyRange:u,dependencyType:A})}return We.sortMap(r,[({dependencyRange:o})=>o!==null?"0":"1",({workspace:o})=>Y.stringifyIdent(o.locator),({dependencyIdent:o})=>Y.stringifyIdent(o)])}async genEnforcedFields(e){let r=[];for await(let o of e.makeQuery("workspace(WorkspaceCwd), gen_enforced_field(WorkspaceCwd, FieldPath, FieldValue).")){let a=J.resolve(this.project.cwd,nm(o.links.WorkspaceCwd)),n=nm(o.links.FieldPath),u=mgt(o.links.FieldValue);if(a===null||n===null)throw new Error("Invalid rule");let A=this.project.getWorkspaceByCwd(a);r.push({workspace:A,fieldPath:n,fieldValue:u})}return We.sortMap(r,[({workspace:o})=>Y.stringifyIdent(o.locator),({fieldPath:o})=>o])}async*query(e){let r=this.createSession();for await(let o of r.makeQuery(e)){let a={};for(let[n,u]of Object.entries(o.links))n!=="_"&&(a[n]=nm(u));yield a}}}});var Gme=U(mQ=>{"use strict";Object.defineProperty(mQ,"__esModule",{value:!0});function F2(t){let e=[...t.caches],r=e.shift();return r===void 0?jme():{get(o,a,n={miss:()=>Promise.resolve()}){return r.get(o,a,n).catch(()=>F2({caches:e}).get(o,a,n))},set(o,a){return r.set(o,a).catch(()=>F2({caches:e}).set(o,a))},delete(o){return r.delete(o).catch(()=>F2({caches:e}).delete(o))},clear(){return r.clear().catch(()=>F2({caches:e}).clear())}}}function jme(){return{get(t,e,r={miss:()=>Promise.resolve()}){return e().then(a=>Promise.all([a,r.miss(a)])).then(([a])=>a)},set(t,e){return Promise.resolve(e)},delete(t){return Promise.resolve()},clear(){return Promise.resolve()}}}mQ.createFallbackableCache=F2;mQ.createNullCache=jme});var Yme=U((_Wt,Wme)=>{Wme.exports=Gme()});var Kme=U(NH=>{"use strict";Object.defineProperty(NH,"__esModule",{value:!0});function Lgt(t={serializable:!0}){let e={};return{get(r,o,a={miss:()=>Promise.resolve()}){let n=JSON.stringify(r);if(n in e)return Promise.resolve(t.serializable?JSON.parse(e[n]):e[n]);let u=o(),A=a&&a.miss||(()=>Promise.resolve());return u.then(p=>A(p)).then(()=>u)},set(r,o){return e[JSON.stringify(r)]=t.serializable?JSON.stringify(o):o,Promise.resolve(o)},delete(r){return delete e[JSON.stringify(r)],Promise.resolve()},clear(){return e={},Promise.resolve()}}}NH.createInMemoryCache=Lgt});var Jme=U((qWt,Vme)=>{Vme.exports=Kme()});var Xme=U(nu=>{"use strict";Object.defineProperty(nu,"__esModule",{value:!0});function Ogt(t,e,r){let o={"x-algolia-api-key":r,"x-algolia-application-id":e};return{headers(){return t===LH.WithinHeaders?o:{}},queryParameters(){return t===LH.WithinQueryParameters?o:{}}}}function Mgt(t){let e=0,r=()=>(e++,new Promise(o=>{setTimeout(()=>{o(t(r))},Math.min(100*e,1e3))}));return t(r)}function zme(t,e=(r,o)=>Promise.resolve()){return Object.assign(t,{wait(r){return zme(t.then(o=>Promise.all([e(o,r),o])).then(o=>o[1]))}})}function Ugt(t){let e=t.length-1;for(e;e>0;e--){let r=Math.floor(Math.random()*(e+1)),o=t[e];t[e]=t[r],t[r]=o}return t}function _gt(t,e){return e&&Object.keys(e).forEach(r=>{t[r]=e[r](t)}),t}function Hgt(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}var qgt="4.14.2",jgt=t=>()=>t.transporter.requester.destroy(),LH={WithinQueryParameters:0,WithinHeaders:1};nu.AuthMode=LH;nu.addMethods=_gt;nu.createAuth=Ogt;nu.createRetryablePromise=Mgt;nu.createWaitablePromise=zme;nu.destroy=jgt;nu.encode=Hgt;nu.shuffle=Ugt;nu.version=qgt});var R2=U((GWt,Zme)=>{Zme.exports=Xme()});var $me=U(OH=>{"use strict";Object.defineProperty(OH,"__esModule",{value:!0});var Ggt={Delete:"DELETE",Get:"GET",Post:"POST",Put:"PUT"};OH.MethodEnum=Ggt});var T2=U((YWt,eye)=>{eye.exports=$me()});var gye=U(bi=>{"use strict";Object.defineProperty(bi,"__esModule",{value:!0});var rye=T2();function MH(t,e){let r=t||{},o=r.data||{};return Object.keys(r).forEach(a=>{["timeout","headers","queryParameters","data","cacheable"].indexOf(a)===-1&&(o[a]=r[a])}),{data:Object.entries(o).length>0?o:void 0,timeout:r.timeout||e,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var N2={Read:1,Write:2,Any:3},BC={Up:1,Down:2,Timeouted:3},nye=2*60*1e3;function _H(t,e=BC.Up){return{...t,status:e,lastUpdate:Date.now()}}function iye(t){return t.status===BC.Up||Date.now()-t.lastUpdate>nye}function sye(t){return t.status===BC.Timeouted&&Date.now()-t.lastUpdate<=nye}function HH(t){return typeof t=="string"?{protocol:"https",url:t,accept:N2.Any}:{protocol:t.protocol||"https",url:t.url,accept:t.accept||N2.Any}}function Wgt(t,e){return Promise.all(e.map(r=>t.get(r,()=>Promise.resolve(_H(r))))).then(r=>{let o=r.filter(A=>iye(A)),a=r.filter(A=>sye(A)),n=[...o,...a],u=n.length>0?n.map(A=>HH(A)):e;return{getTimeout(A,p){return(a.length===0&&A===0?1:a.length+3+A)*p},statelessHosts:u}})}var Ygt=({isTimedOut:t,status:e})=>!t&&~~e===0,Kgt=t=>{let e=t.status;return t.isTimedOut||Ygt(t)||~~(e/100)!==2&&~~(e/100)!==4},Vgt=({status:t})=>~~(t/100)===2,Jgt=(t,e)=>Kgt(t)?e.onRetry(t):Vgt(t)?e.onSuccess(t):e.onFail(t);function tye(t,e,r,o){let a=[],n=uye(r,o),u=Aye(t,o),A=r.method,p=r.method!==rye.MethodEnum.Get?{}:{...r.data,...o.data},h={"x-algolia-agent":t.userAgent.value,...t.queryParameters,...p,...o.queryParameters},C=0,w=(v,b)=>{let E=v.pop();if(E===void 0)throw hye(UH(a));let R={data:n,headers:u,method:A,url:lye(E,r.path,h),connectTimeout:b(C,t.timeouts.connect),responseTimeout:b(C,o.timeout)},L=V=>{let re={request:R,response:V,host:E,triesLeft:v.length};return a.push(re),re},_={onSuccess:V=>oye(V),onRetry(V){let re=L(V);return V.isTimedOut&&C++,Promise.all([t.logger.info("Retryable failure",qH(re)),t.hostsCache.set(E,_H(E,V.isTimedOut?BC.Timeouted:BC.Down))]).then(()=>w(v,b))},onFail(V){throw L(V),aye(V,UH(a))}};return t.requester.send(R).then(V=>Jgt(V,_))};return Wgt(t.hostsCache,e).then(v=>w([...v.statelessHosts].reverse(),v.getTimeout))}function zgt(t){let{hostsCache:e,logger:r,requester:o,requestsCache:a,responsesCache:n,timeouts:u,userAgent:A,hosts:p,queryParameters:h,headers:C}=t,w={hostsCache:e,logger:r,requester:o,requestsCache:a,responsesCache:n,timeouts:u,userAgent:A,headers:C,queryParameters:h,hosts:p.map(v=>HH(v)),read(v,b){let E=MH(b,w.timeouts.read),R=()=>tye(w,w.hosts.filter(V=>(V.accept&N2.Read)!==0),v,E);if((E.cacheable!==void 0?E.cacheable:v.cacheable)!==!0)return R();let _={request:v,mappedRequestOptions:E,transporter:{queryParameters:w.queryParameters,headers:w.headers}};return w.responsesCache.get(_,()=>w.requestsCache.get(_,()=>w.requestsCache.set(_,R()).then(V=>Promise.all([w.requestsCache.delete(_),V]),V=>Promise.all([w.requestsCache.delete(_),Promise.reject(V)])).then(([V,re])=>re)),{miss:V=>w.responsesCache.set(_,V)})},write(v,b){return tye(w,w.hosts.filter(E=>(E.accept&N2.Write)!==0),v,MH(b,w.timeouts.write))}};return w}function Xgt(t){let e={value:`Algolia for JavaScript (${t})`,add(r){let o=`; ${r.segment}${r.version!==void 0?` (${r.version})`:""}`;return e.value.indexOf(o)===-1&&(e.value=`${e.value}${o}`),e}};return e}function oye(t){try{return JSON.parse(t.content)}catch(e){throw pye(e.message,t)}}function aye({content:t,status:e},r){let o=t;try{o=JSON.parse(t).message}catch{}return fye(o,e,r)}function Zgt(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}function lye(t,e,r){let o=cye(r),a=`${t.protocol}://${t.url}/${e.charAt(0)==="/"?e.substr(1):e}`;return o.length&&(a+=`?${o}`),a}function cye(t){let e=r=>Object.prototype.toString.call(r)==="[object Object]"||Object.prototype.toString.call(r)==="[object Array]";return Object.keys(t).map(r=>Zgt("%s=%s",r,e(t[r])?JSON.stringify(t[r]):t[r])).join("&")}function uye(t,e){if(t.method===rye.MethodEnum.Get||t.data===void 0&&e.data===void 0)return;let r=Array.isArray(t.data)?t.data:{...t.data,...e.data};return JSON.stringify(r)}function Aye(t,e){let r={...t.headers,...e.headers},o={};return Object.keys(r).forEach(a=>{let n=r[a];o[a.toLowerCase()]=n}),o}function UH(t){return t.map(e=>qH(e))}function qH(t){let e=t.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...t,request:{...t.request,headers:{...t.request.headers,...e}}}}function fye(t,e,r){return{name:"ApiError",message:t,status:e,transporterStackTrace:r}}function pye(t,e){return{name:"DeserializationError",message:t,response:e}}function hye(t){return{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:t}}bi.CallEnum=N2;bi.HostStatusEnum=BC;bi.createApiError=fye;bi.createDeserializationError=pye;bi.createMappedRequestOptions=MH;bi.createRetryError=hye;bi.createStatefulHost=_H;bi.createStatelessHost=HH;bi.createTransporter=zgt;bi.createUserAgent=Xgt;bi.deserializeFailure=aye;bi.deserializeSuccess=oye;bi.isStatefulHostTimeouted=sye;bi.isStatefulHostUp=iye;bi.serializeData=uye;bi.serializeHeaders=Aye;bi.serializeQueryParameters=cye;bi.serializeUrl=lye;bi.stackFrameWithoutCredentials=qH;bi.stackTraceWithoutCredentials=UH});var L2=U((VWt,dye)=>{dye.exports=gye()});var mye=U(gh=>{"use strict";Object.defineProperty(gh,"__esModule",{value:!0});var vC=R2(),$gt=L2(),O2=T2(),edt=t=>{let e=t.region||"us",r=vC.createAuth(vC.AuthMode.WithinHeaders,t.appId,t.apiKey),o=$gt.createTransporter({hosts:[{url:`analytics.${e}.algolia.com`}],...t,headers:{...r.headers(),"content-type":"application/json",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}}),a=t.appId;return vC.addMethods({appId:a,transporter:o},t.methods)},tdt=t=>(e,r)=>t.transporter.write({method:O2.MethodEnum.Post,path:"2/abtests",data:e},r),rdt=t=>(e,r)=>t.transporter.write({method:O2.MethodEnum.Delete,path:vC.encode("2/abtests/%s",e)},r),ndt=t=>(e,r)=>t.transporter.read({method:O2.MethodEnum.Get,path:vC.encode("2/abtests/%s",e)},r),idt=t=>e=>t.transporter.read({method:O2.MethodEnum.Get,path:"2/abtests"},e),sdt=t=>(e,r)=>t.transporter.write({method:O2.MethodEnum.Post,path:vC.encode("2/abtests/%s/stop",e)},r);gh.addABTest=tdt;gh.createAnalyticsClient=edt;gh.deleteABTest=rdt;gh.getABTest=ndt;gh.getABTests=idt;gh.stopABTest=sdt});var Eye=U((zWt,yye)=>{yye.exports=mye()});var Iye=U(M2=>{"use strict";Object.defineProperty(M2,"__esModule",{value:!0});var jH=R2(),odt=L2(),Cye=T2(),adt=t=>{let e=t.region||"us",r=jH.createAuth(jH.AuthMode.WithinHeaders,t.appId,t.apiKey),o=odt.createTransporter({hosts:[{url:`personalization.${e}.algolia.com`}],...t,headers:{...r.headers(),"content-type":"application/json",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}});return jH.addMethods({appId:t.appId,transporter:o},t.methods)},ldt=t=>e=>t.transporter.read({method:Cye.MethodEnum.Get,path:"1/strategies/personalization"},e),cdt=t=>(e,r)=>t.transporter.write({method:Cye.MethodEnum.Post,path:"1/strategies/personalization",data:e},r);M2.createPersonalizationClient=adt;M2.getPersonalizationStrategy=ldt;M2.setPersonalizationStrategy=cdt});var Bye=U((ZWt,wye)=>{wye.exports=Iye()});var Oye=U(Ft=>{"use strict";Object.defineProperty(Ft,"__esModule",{value:!0});var Ht=R2(),La=L2(),mr=T2(),udt=Ie("crypto");function yQ(t){let e=r=>t.request(r).then(o=>{if(t.batch!==void 0&&t.batch(o.hits),!t.shouldStop(o))return o.cursor?e({cursor:o.cursor}):e({page:(r.page||0)+1})});return e({})}var Adt=t=>{let e=t.appId,r=Ht.createAuth(t.authMode!==void 0?t.authMode:Ht.AuthMode.WithinHeaders,e,t.apiKey),o=La.createTransporter({hosts:[{url:`${e}-dsn.algolia.net`,accept:La.CallEnum.Read},{url:`${e}.algolia.net`,accept:La.CallEnum.Write}].concat(Ht.shuffle([{url:`${e}-1.algolianet.com`},{url:`${e}-2.algolianet.com`},{url:`${e}-3.algolianet.com`}])),...t,headers:{...r.headers(),"content-type":"application/x-www-form-urlencoded",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}}),a={transporter:o,appId:e,addAlgoliaAgent(n,u){o.userAgent.add({segment:n,version:u})},clearCache(){return Promise.all([o.requestsCache.clear(),o.responsesCache.clear()]).then(()=>{})}};return Ht.addMethods(a,t.methods)};function vye(){return{name:"MissingObjectIDError",message:"All objects must have an unique objectID (like a primary key) to be valid. Algolia is also able to generate objectIDs automatically but *it's not recommended*. To do it, use the `{'autoGenerateObjectIDIfNotExist': true}` option."}}function Dye(){return{name:"ObjectNotFoundError",message:"Object not found."}}function Sye(){return{name:"ValidUntilNotFoundError",message:"ValidUntil not found in given secured api key."}}var fdt=t=>(e,r)=>{let{queryParameters:o,...a}=r||{},n={acl:e,...o!==void 0?{queryParameters:o}:{}},u=(A,p)=>Ht.createRetryablePromise(h=>U2(t)(A.key,p).catch(C=>{if(C.status!==404)throw C;return h()}));return Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:"1/keys",data:n},a),u)},pdt=t=>(e,r,o)=>{let a=La.createMappedRequestOptions(o);return a.queryParameters["X-Algolia-User-ID"]=e,t.transporter.write({method:mr.MethodEnum.Post,path:"1/clusters/mapping",data:{cluster:r}},a)},hdt=t=>(e,r,o)=>t.transporter.write({method:mr.MethodEnum.Post,path:"1/clusters/mapping/batch",data:{users:e,cluster:r}},o),gdt=t=>(e,r)=>Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!0,requests:{action:"addEntry",body:[]}}},r),(o,a)=>DC(t)(o.taskID,a)),EQ=t=>(e,r,o)=>{let a=(n,u)=>_2(t)(e,{methods:{waitTask:zi}}).waitTask(n.taskID,u);return Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/operation",e),data:{operation:"copy",destination:r}},o),a)},ddt=t=>(e,r,o)=>EQ(t)(e,r,{...o,scope:[IQ.Rules]}),mdt=t=>(e,r,o)=>EQ(t)(e,r,{...o,scope:[IQ.Settings]}),ydt=t=>(e,r,o)=>EQ(t)(e,r,{...o,scope:[IQ.Synonyms]}),Edt=t=>(e,r)=>e.method===mr.MethodEnum.Get?t.transporter.read(e,r):t.transporter.write(e,r),Cdt=t=>(e,r)=>{let o=(a,n)=>Ht.createRetryablePromise(u=>U2(t)(e,n).then(u).catch(A=>{if(A.status!==404)throw A}));return Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Delete,path:Ht.encode("1/keys/%s",e)},r),o)},Idt=t=>(e,r,o)=>{let a=r.map(n=>({action:"deleteEntry",body:{objectID:n}}));return Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!1,requests:a}},o),(n,u)=>DC(t)(n.taskID,u))},wdt=()=>(t,e)=>{let r=La.serializeQueryParameters(e),o=udt.createHmac("sha256",t).update(r).digest("hex");return Buffer.from(o+r).toString("base64")},U2=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Get,path:Ht.encode("1/keys/%s",e)},r),Pye=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Get,path:Ht.encode("1/task/%s",e.toString())},r),Bdt=t=>e=>t.transporter.read({method:mr.MethodEnum.Get,path:"/1/dictionaries/*/settings"},e),vdt=t=>e=>t.transporter.read({method:mr.MethodEnum.Get,path:"1/logs"},e),Ddt=()=>t=>{let e=Buffer.from(t,"base64").toString("ascii"),r=/validUntil=(\d+)/,o=e.match(r);if(o===null)throw Sye();return parseInt(o[1],10)-Math.round(new Date().getTime()/1e3)},Sdt=t=>e=>t.transporter.read({method:mr.MethodEnum.Get,path:"1/clusters/mapping/top"},e),Pdt=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Get,path:Ht.encode("1/clusters/mapping/%s",e)},r),xdt=t=>e=>{let{retrieveMappings:r,...o}=e||{};return r===!0&&(o.getClusters=!0),t.transporter.read({method:mr.MethodEnum.Get,path:"1/clusters/mapping/pending"},o)},_2=t=>(e,r={})=>{let o={transporter:t.transporter,appId:t.appId,indexName:e};return Ht.addMethods(o,r.methods)},bdt=t=>e=>t.transporter.read({method:mr.MethodEnum.Get,path:"1/keys"},e),Qdt=t=>e=>t.transporter.read({method:mr.MethodEnum.Get,path:"1/clusters"},e),kdt=t=>e=>t.transporter.read({method:mr.MethodEnum.Get,path:"1/indexes"},e),Fdt=t=>e=>t.transporter.read({method:mr.MethodEnum.Get,path:"1/clusters/mapping"},e),Rdt=t=>(e,r,o)=>{let a=(n,u)=>_2(t)(e,{methods:{waitTask:zi}}).waitTask(n.taskID,u);return Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/operation",e),data:{operation:"move",destination:r}},o),a)},Tdt=t=>(e,r)=>{let o=(a,n)=>Promise.all(Object.keys(a.taskID).map(u=>_2(t)(u,{methods:{waitTask:zi}}).waitTask(a.taskID[u],n)));return Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:"1/indexes/*/batch",data:{requests:e}},r),o)},Ndt=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Post,path:"1/indexes/*/objects",data:{requests:e}},r),Ldt=t=>(e,r)=>{let o=e.map(a=>({...a,params:La.serializeQueryParameters(a.params||{})}));return t.transporter.read({method:mr.MethodEnum.Post,path:"1/indexes/*/queries",data:{requests:o},cacheable:!0},r)},Odt=t=>(e,r)=>Promise.all(e.map(o=>{let{facetName:a,facetQuery:n,...u}=o.params;return _2(t)(o.indexName,{methods:{searchForFacetValues:Tye}}).searchForFacetValues(a,n,{...r,...u})})),Mdt=t=>(e,r)=>{let o=La.createMappedRequestOptions(r);return o.queryParameters["X-Algolia-User-ID"]=e,t.transporter.write({method:mr.MethodEnum.Delete,path:"1/clusters/mapping"},o)},Udt=t=>(e,r,o)=>{let a=r.map(n=>({action:"addEntry",body:n}));return Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!0,requests:a}},o),(n,u)=>DC(t)(n.taskID,u))},_dt=t=>(e,r)=>{let o=(a,n)=>Ht.createRetryablePromise(u=>U2(t)(e,n).catch(A=>{if(A.status!==404)throw A;return u()}));return Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("1/keys/%s/restore",e)},r),o)},Hdt=t=>(e,r,o)=>{let a=r.map(n=>({action:"addEntry",body:n}));return Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("/1/dictionaries/%s/batch",e),data:{clearExistingDictionaryEntries:!1,requests:a}},o),(n,u)=>DC(t)(n.taskID,u))},qdt=t=>(e,r,o)=>t.transporter.read({method:mr.MethodEnum.Post,path:Ht.encode("/1/dictionaries/%s/search",e),data:{query:r},cacheable:!0},o),jdt=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Post,path:"1/clusters/mapping/search",data:{query:e}},r),Gdt=t=>(e,r)=>Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Put,path:"/1/dictionaries/*/settings",data:e},r),(o,a)=>DC(t)(o.taskID,a)),Wdt=t=>(e,r)=>{let o=Object.assign({},r),{queryParameters:a,...n}=r||{},u=a?{queryParameters:a}:{},A=["acl","indexes","referers","restrictSources","queryParameters","description","maxQueriesPerIPPerHour","maxHitsPerQuery"],p=C=>Object.keys(o).filter(w=>A.indexOf(w)!==-1).every(w=>C[w]===o[w]),h=(C,w)=>Ht.createRetryablePromise(v=>U2(t)(e,w).then(b=>p(b)?Promise.resolve():v()));return Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Put,path:Ht.encode("1/keys/%s",e),data:u},n),h)},DC=t=>(e,r)=>Ht.createRetryablePromise(o=>Pye(t)(e,r).then(a=>a.status!=="published"?o():void 0)),xye=t=>(e,r)=>{let o=(a,n)=>zi(t)(a.taskID,n);return Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/batch",t.indexName),data:{requests:e}},r),o)},Ydt=t=>e=>yQ({shouldStop:r=>r.cursor===void 0,...e,request:r=>t.transporter.read({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/browse",t.indexName),data:r},e)}),Kdt=t=>e=>{let r={hitsPerPage:1e3,...e};return yQ({shouldStop:o=>o.hits.length<r.hitsPerPage,...r,request(o){return Nye(t)("",{...r,...o}).then(a=>({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},Vdt=t=>e=>{let r={hitsPerPage:1e3,...e};return yQ({shouldStop:o=>o.hits.length<r.hitsPerPage,...r,request(o){return Lye(t)("",{...r,...o}).then(a=>({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},CQ=t=>(e,r,o)=>{let{batchSize:a,...n}=o||{},u={taskIDs:[],objectIDs:[]},A=(p=0)=>{let h=[],C;for(C=p;C<e.length&&(h.push(e[C]),h.length!==(a||1e3));C++);return h.length===0?Promise.resolve(u):xye(t)(h.map(w=>({action:r,body:w})),n).then(w=>(u.objectIDs=u.objectIDs.concat(w.objectIDs),u.taskIDs.push(w.taskID),C++,A(C)))};return Ht.createWaitablePromise(A(),(p,h)=>Promise.all(p.taskIDs.map(C=>zi(t)(C,h))))},Jdt=t=>e=>Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/clear",t.indexName)},e),(r,o)=>zi(t)(r.taskID,o)),zdt=t=>e=>{let{forwardToReplicas:r,...o}=e||{},a=La.createMappedRequestOptions(o);return r&&(a.queryParameters.forwardToReplicas=1),Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/rules/clear",t.indexName)},a),(n,u)=>zi(t)(n.taskID,u))},Xdt=t=>e=>{let{forwardToReplicas:r,...o}=e||{},a=La.createMappedRequestOptions(o);return r&&(a.queryParameters.forwardToReplicas=1),Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/synonyms/clear",t.indexName)},a),(n,u)=>zi(t)(n.taskID,u))},Zdt=t=>(e,r)=>Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/deleteByQuery",t.indexName),data:e},r),(o,a)=>zi(t)(o.taskID,a)),$dt=t=>e=>Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Delete,path:Ht.encode("1/indexes/%s",t.indexName)},e),(r,o)=>zi(t)(r.taskID,o)),emt=t=>(e,r)=>Ht.createWaitablePromise(bye(t)([e],r).then(o=>({taskID:o.taskIDs[0]})),(o,a)=>zi(t)(o.taskID,a)),bye=t=>(e,r)=>{let o=e.map(a=>({objectID:a}));return CQ(t)(o,om.DeleteObject,r)},tmt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=La.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Delete,path:Ht.encode("1/indexes/%s/rules/%s",t.indexName,e)},n),(u,A)=>zi(t)(u.taskID,A))},rmt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=La.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Delete,path:Ht.encode("1/indexes/%s/synonyms/%s",t.indexName,e)},n),(u,A)=>zi(t)(u.taskID,A))},nmt=t=>e=>Qye(t)(e).then(()=>!0).catch(r=>{if(r.status!==404)throw r;return!1}),imt=t=>(e,r,o)=>t.transporter.read({method:mr.MethodEnum.Post,path:Ht.encode("1/answers/%s/prediction",t.indexName),data:{query:e,queryLanguages:r},cacheable:!0},o),smt=t=>(e,r)=>{let{query:o,paginate:a,...n}=r||{},u=0,A=()=>Rye(t)(o||"",{...n,page:u}).then(p=>{for(let[h,C]of Object.entries(p.hits))if(e(C))return{object:C,position:parseInt(h,10),page:u};if(u++,a===!1||u>=p.nbPages)throw Dye();return A()});return A()},omt=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Get,path:Ht.encode("1/indexes/%s/%s",t.indexName,e)},r),amt=()=>(t,e)=>{for(let[r,o]of Object.entries(t.hits))if(o.objectID===e)return parseInt(r,10);return-1},lmt=t=>(e,r)=>{let{attributesToRetrieve:o,...a}=r||{},n=e.map(u=>({indexName:t.indexName,objectID:u,...o?{attributesToRetrieve:o}:{}}));return t.transporter.read({method:mr.MethodEnum.Post,path:"1/indexes/*/objects",data:{requests:n}},a)},cmt=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Get,path:Ht.encode("1/indexes/%s/rules/%s",t.indexName,e)},r),Qye=t=>e=>t.transporter.read({method:mr.MethodEnum.Get,path:Ht.encode("1/indexes/%s/settings",t.indexName),data:{getVersion:2}},e),umt=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Get,path:Ht.encode("1/indexes/%s/synonyms/%s",t.indexName,e)},r),kye=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Get,path:Ht.encode("1/indexes/%s/task/%s",t.indexName,e.toString())},r),Amt=t=>(e,r)=>Ht.createWaitablePromise(Fye(t)([e],r).then(o=>({objectID:o.objectIDs[0],taskID:o.taskIDs[0]})),(o,a)=>zi(t)(o.taskID,a)),Fye=t=>(e,r)=>{let{createIfNotExists:o,...a}=r||{},n=o?om.PartialUpdateObject:om.PartialUpdateObjectNoCreate;return CQ(t)(e,n,a)},fmt=t=>(e,r)=>{let{safe:o,autoGenerateObjectIDIfNotExist:a,batchSize:n,...u}=r||{},A=(E,R,L,_)=>Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/operation",E),data:{operation:L,destination:R}},_),(V,re)=>zi(t)(V.taskID,re)),p=Math.random().toString(36).substring(7),h=`${t.indexName}_tmp_${p}`,C=GH({appId:t.appId,transporter:t.transporter,indexName:h}),w=[],v=A(t.indexName,h,"copy",{...u,scope:["settings","synonyms","rules"]});w.push(v);let b=(o?v.wait(u):v).then(()=>{let E=C(e,{...u,autoGenerateObjectIDIfNotExist:a,batchSize:n});return w.push(E),o?E.wait(u):E}).then(()=>{let E=A(h,t.indexName,"move",u);return w.push(E),o?E.wait(u):E}).then(()=>Promise.all(w)).then(([E,R,L])=>({objectIDs:R.objectIDs,taskIDs:[E.taskID,...R.taskIDs,L.taskID]}));return Ht.createWaitablePromise(b,(E,R)=>Promise.all(w.map(L=>L.wait(R))))},pmt=t=>(e,r)=>WH(t)(e,{...r,clearExistingRules:!0}),hmt=t=>(e,r)=>YH(t)(e,{...r,clearExistingSynonyms:!0}),gmt=t=>(e,r)=>Ht.createWaitablePromise(GH(t)([e],r).then(o=>({objectID:o.objectIDs[0],taskID:o.taskIDs[0]})),(o,a)=>zi(t)(o.taskID,a)),GH=t=>(e,r)=>{let{autoGenerateObjectIDIfNotExist:o,...a}=r||{},n=o?om.AddObject:om.UpdateObject;if(n===om.UpdateObject){for(let u of e)if(u.objectID===void 0)return Ht.createWaitablePromise(Promise.reject(vye()))}return CQ(t)(e,n,a)},dmt=t=>(e,r)=>WH(t)([e],r),WH=t=>(e,r)=>{let{forwardToReplicas:o,clearExistingRules:a,...n}=r||{},u=La.createMappedRequestOptions(n);return o&&(u.queryParameters.forwardToReplicas=1),a&&(u.queryParameters.clearExistingRules=1),Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/rules/batch",t.indexName),data:e},u),(A,p)=>zi(t)(A.taskID,p))},mmt=t=>(e,r)=>YH(t)([e],r),YH=t=>(e,r)=>{let{forwardToReplicas:o,clearExistingSynonyms:a,replaceExistingSynonyms:n,...u}=r||{},A=La.createMappedRequestOptions(u);return o&&(A.queryParameters.forwardToReplicas=1),(n||a)&&(A.queryParameters.replaceExistingSynonyms=1),Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/synonyms/batch",t.indexName),data:e},A),(p,h)=>zi(t)(p.taskID,h))},Rye=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/query",t.indexName),data:{query:e},cacheable:!0},r),Tye=t=>(e,r,o)=>t.transporter.read({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/facets/%s/query",t.indexName,e),data:{facetQuery:r},cacheable:!0},o),Nye=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/rules/search",t.indexName),data:{query:e}},r),Lye=t=>(e,r)=>t.transporter.read({method:mr.MethodEnum.Post,path:Ht.encode("1/indexes/%s/synonyms/search",t.indexName),data:{query:e}},r),ymt=t=>(e,r)=>{let{forwardToReplicas:o,...a}=r||{},n=La.createMappedRequestOptions(a);return o&&(n.queryParameters.forwardToReplicas=1),Ht.createWaitablePromise(t.transporter.write({method:mr.MethodEnum.Put,path:Ht.encode("1/indexes/%s/settings",t.indexName),data:e},n),(u,A)=>zi(t)(u.taskID,A))},zi=t=>(e,r)=>Ht.createRetryablePromise(o=>kye(t)(e,r).then(a=>a.status!=="published"?o():void 0)),Emt={AddObject:"addObject",Analytics:"analytics",Browser:"browse",DeleteIndex:"deleteIndex",DeleteObject:"deleteObject",EditSettings:"editSettings",ListIndexes:"listIndexes",Logs:"logs",Personalization:"personalization",Recommendation:"recommendation",Search:"search",SeeUnretrievableAttributes:"seeUnretrievableAttributes",Settings:"settings",Usage:"usage"},om={AddObject:"addObject",UpdateObject:"updateObject",PartialUpdateObject:"partialUpdateObject",PartialUpdateObjectNoCreate:"partialUpdateObjectNoCreate",DeleteObject:"deleteObject",DeleteIndex:"delete",ClearIndex:"clear"},IQ={Settings:"settings",Synonyms:"synonyms",Rules:"rules"},Cmt={None:"none",StopIfEnoughMatches:"stopIfEnoughMatches"},Imt={Synonym:"synonym",OneWaySynonym:"oneWaySynonym",AltCorrection1:"altCorrection1",AltCorrection2:"altCorrection2",Placeholder:"placeholder"};Ft.ApiKeyACLEnum=Emt;Ft.BatchActionEnum=om;Ft.ScopeEnum=IQ;Ft.StrategyEnum=Cmt;Ft.SynonymEnum=Imt;Ft.addApiKey=fdt;Ft.assignUserID=pdt;Ft.assignUserIDs=hdt;Ft.batch=xye;Ft.browseObjects=Ydt;Ft.browseRules=Kdt;Ft.browseSynonyms=Vdt;Ft.chunkedBatch=CQ;Ft.clearDictionaryEntries=gdt;Ft.clearObjects=Jdt;Ft.clearRules=zdt;Ft.clearSynonyms=Xdt;Ft.copyIndex=EQ;Ft.copyRules=ddt;Ft.copySettings=mdt;Ft.copySynonyms=ydt;Ft.createBrowsablePromise=yQ;Ft.createMissingObjectIDError=vye;Ft.createObjectNotFoundError=Dye;Ft.createSearchClient=Adt;Ft.createValidUntilNotFoundError=Sye;Ft.customRequest=Edt;Ft.deleteApiKey=Cdt;Ft.deleteBy=Zdt;Ft.deleteDictionaryEntries=Idt;Ft.deleteIndex=$dt;Ft.deleteObject=emt;Ft.deleteObjects=bye;Ft.deleteRule=tmt;Ft.deleteSynonym=rmt;Ft.exists=nmt;Ft.findAnswers=imt;Ft.findObject=smt;Ft.generateSecuredApiKey=wdt;Ft.getApiKey=U2;Ft.getAppTask=Pye;Ft.getDictionarySettings=Bdt;Ft.getLogs=vdt;Ft.getObject=omt;Ft.getObjectPosition=amt;Ft.getObjects=lmt;Ft.getRule=cmt;Ft.getSecuredApiKeyRemainingValidity=Ddt;Ft.getSettings=Qye;Ft.getSynonym=umt;Ft.getTask=kye;Ft.getTopUserIDs=Sdt;Ft.getUserID=Pdt;Ft.hasPendingMappings=xdt;Ft.initIndex=_2;Ft.listApiKeys=bdt;Ft.listClusters=Qdt;Ft.listIndices=kdt;Ft.listUserIDs=Fdt;Ft.moveIndex=Rdt;Ft.multipleBatch=Tdt;Ft.multipleGetObjects=Ndt;Ft.multipleQueries=Ldt;Ft.multipleSearchForFacetValues=Odt;Ft.partialUpdateObject=Amt;Ft.partialUpdateObjects=Fye;Ft.removeUserID=Mdt;Ft.replaceAllObjects=fmt;Ft.replaceAllRules=pmt;Ft.replaceAllSynonyms=hmt;Ft.replaceDictionaryEntries=Udt;Ft.restoreApiKey=_dt;Ft.saveDictionaryEntries=Hdt;Ft.saveObject=gmt;Ft.saveObjects=GH;Ft.saveRule=dmt;Ft.saveRules=WH;Ft.saveSynonym=mmt;Ft.saveSynonyms=YH;Ft.search=Rye;Ft.searchDictionaryEntries=qdt;Ft.searchForFacetValues=Tye;Ft.searchRules=Nye;Ft.searchSynonyms=Lye;Ft.searchUserIDs=jdt;Ft.setDictionarySettings=Gdt;Ft.setSettings=ymt;Ft.updateApiKey=Wdt;Ft.waitAppTask=DC;Ft.waitTask=zi});var Uye=U((eYt,Mye)=>{Mye.exports=Oye()});var _ye=U(wQ=>{"use strict";Object.defineProperty(wQ,"__esModule",{value:!0});function wmt(){return{debug(t,e){return Promise.resolve()},info(t,e){return Promise.resolve()},error(t,e){return Promise.resolve()}}}var Bmt={Debug:1,Info:2,Error:3};wQ.LogLevelEnum=Bmt;wQ.createNullLogger=wmt});var qye=U((rYt,Hye)=>{Hye.exports=_ye()});var Yye=U(KH=>{"use strict";Object.defineProperty(KH,"__esModule",{value:!0});var jye=Ie("http"),Gye=Ie("https"),vmt=Ie("url"),Wye={keepAlive:!0},Dmt=new jye.Agent(Wye),Smt=new Gye.Agent(Wye);function Pmt({agent:t,httpAgent:e,httpsAgent:r,requesterOptions:o={}}={}){let a=e||t||Dmt,n=r||t||Smt;return{send(u){return new Promise(A=>{let p=vmt.parse(u.url),h=p.query===null?p.pathname:`${p.pathname}?${p.query}`,C={...o,agent:p.protocol==="https:"?n:a,hostname:p.hostname,path:h,method:u.method,headers:{...o&&o.headers?o.headers:{},...u.headers},...p.port!==void 0?{port:p.port||""}:{}},w=(p.protocol==="https:"?Gye:jye).request(C,R=>{let L=[];R.on("data",_=>{L=L.concat(_)}),R.on("end",()=>{clearTimeout(b),clearTimeout(E),A({status:R.statusCode||0,content:Buffer.concat(L).toString(),isTimedOut:!1})})}),v=(R,L)=>setTimeout(()=>{w.abort(),A({status:0,content:L,isTimedOut:!0})},R*1e3),b=v(u.connectTimeout,"Connection timeout"),E;w.on("error",R=>{clearTimeout(b),clearTimeout(E),A({status:0,content:R.message,isTimedOut:!1})}),w.once("response",()=>{clearTimeout(b),E=v(u.responseTimeout,"Socket timeout")}),u.data!==void 0&&w.write(u.data),w.end()})},destroy(){return a.destroy(),n.destroy(),Promise.resolve()}}}KH.createNodeHttpRequester=Pmt});var Vye=U((iYt,Kye)=>{Kye.exports=Yye()});var Zye=U((sYt,Xye)=>{"use strict";var Jye=Yme(),xmt=Jme(),SC=Eye(),JH=R2(),VH=Bye(),Lt=Uye(),bmt=qye(),Qmt=Vye(),kmt=L2();function zye(t,e,r){let o={appId:t,apiKey:e,timeouts:{connect:2,read:5,write:30},requester:Qmt.createNodeHttpRequester(),logger:bmt.createNullLogger(),responsesCache:Jye.createNullCache(),requestsCache:Jye.createNullCache(),hostsCache:xmt.createInMemoryCache(),userAgent:kmt.createUserAgent(JH.version).add({segment:"Node.js",version:process.versions.node})},a={...o,...r},n=()=>u=>VH.createPersonalizationClient({...o,...u,methods:{getPersonalizationStrategy:VH.getPersonalizationStrategy,setPersonalizationStrategy:VH.setPersonalizationStrategy}});return Lt.createSearchClient({...a,methods:{search:Lt.multipleQueries,searchForFacetValues:Lt.multipleSearchForFacetValues,multipleBatch:Lt.multipleBatch,multipleGetObjects:Lt.multipleGetObjects,multipleQueries:Lt.multipleQueries,copyIndex:Lt.copyIndex,copySettings:Lt.copySettings,copyRules:Lt.copyRules,copySynonyms:Lt.copySynonyms,moveIndex:Lt.moveIndex,listIndices:Lt.listIndices,getLogs:Lt.getLogs,listClusters:Lt.listClusters,multipleSearchForFacetValues:Lt.multipleSearchForFacetValues,getApiKey:Lt.getApiKey,addApiKey:Lt.addApiKey,listApiKeys:Lt.listApiKeys,updateApiKey:Lt.updateApiKey,deleteApiKey:Lt.deleteApiKey,restoreApiKey:Lt.restoreApiKey,assignUserID:Lt.assignUserID,assignUserIDs:Lt.assignUserIDs,getUserID:Lt.getUserID,searchUserIDs:Lt.searchUserIDs,listUserIDs:Lt.listUserIDs,getTopUserIDs:Lt.getTopUserIDs,removeUserID:Lt.removeUserID,hasPendingMappings:Lt.hasPendingMappings,generateSecuredApiKey:Lt.generateSecuredApiKey,getSecuredApiKeyRemainingValidity:Lt.getSecuredApiKeyRemainingValidity,destroy:JH.destroy,clearDictionaryEntries:Lt.clearDictionaryEntries,deleteDictionaryEntries:Lt.deleteDictionaryEntries,getDictionarySettings:Lt.getDictionarySettings,getAppTask:Lt.getAppTask,replaceDictionaryEntries:Lt.replaceDictionaryEntries,saveDictionaryEntries:Lt.saveDictionaryEntries,searchDictionaryEntries:Lt.searchDictionaryEntries,setDictionarySettings:Lt.setDictionarySettings,waitAppTask:Lt.waitAppTask,customRequest:Lt.customRequest,initIndex:u=>A=>Lt.initIndex(u)(A,{methods:{batch:Lt.batch,delete:Lt.deleteIndex,findAnswers:Lt.findAnswers,getObject:Lt.getObject,getObjects:Lt.getObjects,saveObject:Lt.saveObject,saveObjects:Lt.saveObjects,search:Lt.search,searchForFacetValues:Lt.searchForFacetValues,waitTask:Lt.waitTask,setSettings:Lt.setSettings,getSettings:Lt.getSettings,partialUpdateObject:Lt.partialUpdateObject,partialUpdateObjects:Lt.partialUpdateObjects,deleteObject:Lt.deleteObject,deleteObjects:Lt.deleteObjects,deleteBy:Lt.deleteBy,clearObjects:Lt.clearObjects,browseObjects:Lt.browseObjects,getObjectPosition:Lt.getObjectPosition,findObject:Lt.findObject,exists:Lt.exists,saveSynonym:Lt.saveSynonym,saveSynonyms:Lt.saveSynonyms,getSynonym:Lt.getSynonym,searchSynonyms:Lt.searchSynonyms,browseSynonyms:Lt.browseSynonyms,deleteSynonym:Lt.deleteSynonym,clearSynonyms:Lt.clearSynonyms,replaceAllObjects:Lt.replaceAllObjects,replaceAllSynonyms:Lt.replaceAllSynonyms,searchRules:Lt.searchRules,getRule:Lt.getRule,deleteRule:Lt.deleteRule,saveRule:Lt.saveRule,saveRules:Lt.saveRules,replaceAllRules:Lt.replaceAllRules,browseRules:Lt.browseRules,clearRules:Lt.clearRules}}),initAnalytics:()=>u=>SC.createAnalyticsClient({...o,...u,methods:{addABTest:SC.addABTest,getABTest:SC.getABTest,getABTests:SC.getABTests,stopABTest:SC.stopABTest,deleteABTest:SC.deleteABTest}}),initPersonalization:n,initRecommendation:()=>u=>(a.logger.info("The `initRecommendation` method is deprecated. Use `initPersonalization` instead."),n()(u))}})}zye.version=JH.version;Xye.exports=zye});var XH=U((oYt,zH)=>{var $ye=Zye();zH.exports=$ye;zH.exports.default=$ye});var e6=U((lYt,rEe)=>{"use strict";var tEe=Object.getOwnPropertySymbols,Rmt=Object.prototype.hasOwnProperty,Tmt=Object.prototype.propertyIsEnumerable;function Nmt(t){if(t==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function Lmt(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de",Object.getOwnPropertyNames(t)[0]==="5")return!1;for(var e={},r=0;r<10;r++)e["_"+String.fromCharCode(r)]=r;var o=Object.getOwnPropertyNames(e).map(function(n){return e[n]});if(o.join("")!=="0123456789")return!1;var a={};return"abcdefghijklmnopqrst".split("").forEach(function(n){a[n]=n}),Object.keys(Object.assign({},a)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}rEe.exports=Lmt()?Object.assign:function(t,e){for(var r,o=Nmt(t),a,n=1;n<arguments.length;n++){r=Object(arguments[n]);for(var u in r)Rmt.call(r,u)&&(o[u]=r[u]);if(tEe){a=tEe(r);for(var A=0;A<a.length;A++)Tmt.call(r,a[A])&&(o[a[A]]=r[a[A]])}}return o}});var hEe=U(Qn=>{"use strict";var s6=e6(),iu=typeof Symbol=="function"&&Symbol.for,H2=iu?Symbol.for("react.element"):60103,Omt=iu?Symbol.for("react.portal"):60106,Mmt=iu?Symbol.for("react.fragment"):60107,Umt=iu?Symbol.for("react.strict_mode"):60108,_mt=iu?Symbol.for("react.profiler"):60114,Hmt=iu?Symbol.for("react.provider"):60109,qmt=iu?Symbol.for("react.context"):60110,jmt=iu?Symbol.for("react.forward_ref"):60112,Gmt=iu?Symbol.for("react.suspense"):60113,Wmt=iu?Symbol.for("react.memo"):60115,Ymt=iu?Symbol.for("react.lazy"):60116,nEe=typeof Symbol=="function"&&Symbol.iterator;function q2(t){for(var e="https://reactjs.org/docs/error-decoder.html?invariant="+t,r=1;r<arguments.length;r++)e+="&args[]="+encodeURIComponent(arguments[r]);return"Minified React error #"+t+"; visit "+e+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var iEe={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},sEe={};function PC(t,e,r){this.props=t,this.context=e,this.refs=sEe,this.updater=r||iEe}PC.prototype.isReactComponent={};PC.prototype.setState=function(t,e){if(typeof t!="object"&&typeof t!="function"&&t!=null)throw Error(q2(85));this.updater.enqueueSetState(this,t,e,"setState")};PC.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,"forceUpdate")};function oEe(){}oEe.prototype=PC.prototype;function o6(t,e,r){this.props=t,this.context=e,this.refs=sEe,this.updater=r||iEe}var a6=o6.prototype=new oEe;a6.constructor=o6;s6(a6,PC.prototype);a6.isPureReactComponent=!0;var l6={current:null},aEe=Object.prototype.hasOwnProperty,lEe={key:!0,ref:!0,__self:!0,__source:!0};function cEe(t,e,r){var o,a={},n=null,u=null;if(e!=null)for(o in e.ref!==void 0&&(u=e.ref),e.key!==void 0&&(n=""+e.key),e)aEe.call(e,o)&&!lEe.hasOwnProperty(o)&&(a[o]=e[o]);var A=arguments.length-2;if(A===1)a.children=r;else if(1<A){for(var p=Array(A),h=0;h<A;h++)p[h]=arguments[h+2];a.children=p}if(t&&t.defaultProps)for(o in A=t.defaultProps,A)a[o]===void 0&&(a[o]=A[o]);return{$$typeof:H2,type:t,key:n,ref:u,props:a,_owner:l6.current}}function Kmt(t,e){return{$$typeof:H2,type:t.type,key:e,ref:t.ref,props:t.props,_owner:t._owner}}function c6(t){return typeof t=="object"&&t!==null&&t.$$typeof===H2}function Vmt(t){var e={"=":"=0",":":"=2"};return"$"+(""+t).replace(/[=:]/g,function(r){return e[r]})}var uEe=/\/+/g,BQ=[];function AEe(t,e,r,o){if(BQ.length){var a=BQ.pop();return a.result=t,a.keyPrefix=e,a.func=r,a.context=o,a.count=0,a}return{result:t,keyPrefix:e,func:r,context:o,count:0}}function fEe(t){t.result=null,t.keyPrefix=null,t.func=null,t.context=null,t.count=0,10>BQ.length&&BQ.push(t)}function r6(t,e,r,o){var a=typeof t;(a==="undefined"||a==="boolean")&&(t=null);var n=!1;if(t===null)n=!0;else switch(a){case"string":case"number":n=!0;break;case"object":switch(t.$$typeof){case H2:case Omt:n=!0}}if(n)return r(o,t,e===""?"."+t6(t,0):e),1;if(n=0,e=e===""?".":e+":",Array.isArray(t))for(var u=0;u<t.length;u++){a=t[u];var A=e+t6(a,u);n+=r6(a,A,r,o)}else if(t===null||typeof t!="object"?A=null:(A=nEe&&t[nEe]||t["@@iterator"],A=typeof A=="function"?A:null),typeof A=="function")for(t=A.call(t),u=0;!(a=t.next()).done;)a=a.value,A=e+t6(a,u++),n+=r6(a,A,r,o);else if(a==="object")throw r=""+t,Error(q2(31,r==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":r,""));return n}function n6(t,e,r){return t==null?0:r6(t,"",e,r)}function t6(t,e){return typeof t=="object"&&t!==null&&t.key!=null?Vmt(t.key):e.toString(36)}function Jmt(t,e){t.func.call(t.context,e,t.count++)}function zmt(t,e,r){var o=t.result,a=t.keyPrefix;t=t.func.call(t.context,e,t.count++),Array.isArray(t)?i6(t,o,r,function(n){return n}):t!=null&&(c6(t)&&(t=Kmt(t,a+(!t.key||e&&e.key===t.key?"":(""+t.key).replace(uEe,"$&/")+"/")+r)),o.push(t))}function i6(t,e,r,o,a){var n="";r!=null&&(n=(""+r).replace(uEe,"$&/")+"/"),e=AEe(e,n,o,a),n6(t,zmt,e),fEe(e)}var pEe={current:null};function Zf(){var t=pEe.current;if(t===null)throw Error(q2(321));return t}var Xmt={ReactCurrentDispatcher:pEe,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:l6,IsSomeRendererActing:{current:!1},assign:s6};Qn.Children={map:function(t,e,r){if(t==null)return t;var o=[];return i6(t,o,null,e,r),o},forEach:function(t,e,r){if(t==null)return t;e=AEe(null,null,e,r),n6(t,Jmt,e),fEe(e)},count:function(t){return n6(t,function(){return null},null)},toArray:function(t){var e=[];return i6(t,e,null,function(r){return r}),e},only:function(t){if(!c6(t))throw Error(q2(143));return t}};Qn.Component=PC;Qn.Fragment=Mmt;Qn.Profiler=_mt;Qn.PureComponent=o6;Qn.StrictMode=Umt;Qn.Suspense=Gmt;Qn.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Xmt;Qn.cloneElement=function(t,e,r){if(t==null)throw Error(q2(267,t));var o=s6({},t.props),a=t.key,n=t.ref,u=t._owner;if(e!=null){if(e.ref!==void 0&&(n=e.ref,u=l6.current),e.key!==void 0&&(a=""+e.key),t.type&&t.type.defaultProps)var A=t.type.defaultProps;for(p in e)aEe.call(e,p)&&!lEe.hasOwnProperty(p)&&(o[p]=e[p]===void 0&&A!==void 0?A[p]:e[p])}var p=arguments.length-2;if(p===1)o.children=r;else if(1<p){A=Array(p);for(var h=0;h<p;h++)A[h]=arguments[h+2];o.children=A}return{$$typeof:H2,type:t.type,key:a,ref:n,props:o,_owner:u}};Qn.createContext=function(t,e){return e===void 0&&(e=null),t={$$typeof:qmt,_calculateChangedBits:e,_currentValue:t,_currentValue2:t,_threadCount:0,Provider:null,Consumer:null},t.Provider={$$typeof:Hmt,_context:t},t.Consumer=t};Qn.createElement=cEe;Qn.createFactory=function(t){var e=cEe.bind(null,t);return e.type=t,e};Qn.createRef=function(){return{current:null}};Qn.forwardRef=function(t){return{$$typeof:jmt,render:t}};Qn.isValidElement=c6;Qn.lazy=function(t){return{$$typeof:Ymt,_ctor:t,_status:-1,_result:null}};Qn.memo=function(t,e){return{$$typeof:Wmt,type:t,compare:e===void 0?null:e}};Qn.useCallback=function(t,e){return Zf().useCallback(t,e)};Qn.useContext=function(t,e){return Zf().useContext(t,e)};Qn.useDebugValue=function(){};Qn.useEffect=function(t,e){return Zf().useEffect(t,e)};Qn.useImperativeHandle=function(t,e,r){return Zf().useImperativeHandle(t,e,r)};Qn.useLayoutEffect=function(t,e){return Zf().useLayoutEffect(t,e)};Qn.useMemo=function(t,e){return Zf().useMemo(t,e)};Qn.useReducer=function(t,e,r){return Zf().useReducer(t,e,r)};Qn.useRef=function(t){return Zf().useRef(t)};Qn.useState=function(t){return Zf().useState(t)};Qn.version="16.13.1"});var en=U((uYt,gEe)=>{"use strict";gEe.exports=hEe()});var A6=U((AYt,u6)=>{"use strict";var on=u6.exports;u6.exports.default=on;var kn="\x1B[",j2="\x1B]",xC="\x07",vQ=";",dEe=process.env.TERM_PROGRAM==="Apple_Terminal";on.cursorTo=(t,e)=>{if(typeof t!="number")throw new TypeError("The `x` argument is required");return typeof e!="number"?kn+(t+1)+"G":kn+(e+1)+";"+(t+1)+"H"};on.cursorMove=(t,e)=>{if(typeof t!="number")throw new TypeError("The `x` argument is required");let r="";return t<0?r+=kn+-t+"D":t>0&&(r+=kn+t+"C"),e<0?r+=kn+-e+"A":e>0&&(r+=kn+e+"B"),r};on.cursorUp=(t=1)=>kn+t+"A";on.cursorDown=(t=1)=>kn+t+"B";on.cursorForward=(t=1)=>kn+t+"C";on.cursorBackward=(t=1)=>kn+t+"D";on.cursorLeft=kn+"G";on.cursorSavePosition=dEe?"\x1B7":kn+"s";on.cursorRestorePosition=dEe?"\x1B8":kn+"u";on.cursorGetPosition=kn+"6n";on.cursorNextLine=kn+"E";on.cursorPrevLine=kn+"F";on.cursorHide=kn+"?25l";on.cursorShow=kn+"?25h";on.eraseLines=t=>{let e="";for(let r=0;r<t;r++)e+=on.eraseLine+(r<t-1?on.cursorUp():"");return t&&(e+=on.cursorLeft),e};on.eraseEndLine=kn+"K";on.eraseStartLine=kn+"1K";on.eraseLine=kn+"2K";on.eraseDown=kn+"J";on.eraseUp=kn+"1J";on.eraseScreen=kn+"2J";on.scrollUp=kn+"S";on.scrollDown=kn+"T";on.clearScreen="\x1Bc";on.clearTerminal=process.platform==="win32"?`${on.eraseScreen}${kn}0f`:`${on.eraseScreen}${kn}3J${kn}H`;on.beep=xC;on.link=(t,e)=>[j2,"8",vQ,vQ,e,xC,t,j2,"8",vQ,vQ,xC].join("");on.image=(t,e={})=>{let r=`${j2}1337;File=inline=1`;return e.width&&(r+=`;width=${e.width}`),e.height&&(r+=`;height=${e.height}`),e.preserveAspectRatio===!1&&(r+=";preserveAspectRatio=0"),r+":"+t.toString("base64")+xC};on.iTerm={setCwd:(t=process.cwd())=>`${j2}50;CurrentDir=${t}${xC}`,annotation:(t,e={})=>{let r=`${j2}1337;`,o=typeof e.x<"u",a=typeof e.y<"u";if((o||a)&&!(o&&a&&typeof e.length<"u"))throw new Error("`x`, `y` and `length` must be defined when `x` or `y` is defined");return t=t.replace(/\|/g,""),r+=e.isHidden?"AddHiddenAnnotation=":"AddAnnotation=",e.length>0?r+=(o?[t,e.length,e.x,e.y]:[e.length,t]).join("|"):r+=t,r+xC}}});var yEe=U((fYt,f6)=>{"use strict";var mEe=(t,e)=>{for(let r of Reflect.ownKeys(e))Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r));return t};f6.exports=mEe;f6.exports.default=mEe});var CEe=U((pYt,SQ)=>{"use strict";var Zmt=yEe(),DQ=new WeakMap,EEe=(t,e={})=>{if(typeof t!="function")throw new TypeError("Expected a function");let r,o=0,a=t.displayName||t.name||"<anonymous>",n=function(...u){if(DQ.set(n,++o),o===1)r=t.apply(this,u),t=null;else if(e.throw===!0)throw new Error(`Function \`${a}\` can only be called once`);return r};return Zmt(n,t),DQ.set(n,o),n};SQ.exports=EEe;SQ.exports.default=EEe;SQ.exports.callCount=t=>{if(!DQ.has(t))throw new Error(`The given function \`${t.name}\` is not wrapped by the \`onetime\` package`);return DQ.get(t)}});var IEe=U((hYt,PQ)=>{PQ.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];process.platform!=="win32"&&PQ.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&PQ.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var g6=U((gYt,kC)=>{var gi=global.process,am=function(t){return t&&typeof t=="object"&&typeof t.removeListener=="function"&&typeof t.emit=="function"&&typeof t.reallyExit=="function"&&typeof t.listeners=="function"&&typeof t.kill=="function"&&typeof t.pid=="number"&&typeof t.on=="function"};am(gi)?(wEe=Ie("assert"),bC=IEe(),BEe=/^win/i.test(gi.platform),G2=Ie("events"),typeof G2!="function"&&(G2=G2.EventEmitter),gi.__signal_exit_emitter__?xs=gi.__signal_exit_emitter__:(xs=gi.__signal_exit_emitter__=new G2,xs.count=0,xs.emitted={}),xs.infinite||(xs.setMaxListeners(1/0),xs.infinite=!0),kC.exports=function(t,e){if(!am(global.process))return function(){};wEe.equal(typeof t,"function","a callback must be provided for exit handler"),QC===!1&&p6();var r="exit";e&&e.alwaysLast&&(r="afterexit");var o=function(){xs.removeListener(r,t),xs.listeners("exit").length===0&&xs.listeners("afterexit").length===0&&xQ()};return xs.on(r,t),o},xQ=function(){!QC||!am(global.process)||(QC=!1,bC.forEach(function(e){try{gi.removeListener(e,bQ[e])}catch{}}),gi.emit=QQ,gi.reallyExit=h6,xs.count-=1)},kC.exports.unload=xQ,lm=function(e,r,o){xs.emitted[e]||(xs.emitted[e]=!0,xs.emit(e,r,o))},bQ={},bC.forEach(function(t){bQ[t]=function(){if(!!am(global.process)){var r=gi.listeners(t);r.length===xs.count&&(xQ(),lm("exit",null,t),lm("afterexit",null,t),BEe&&t==="SIGHUP"&&(t="SIGINT"),gi.kill(gi.pid,t))}}}),kC.exports.signals=function(){return bC},QC=!1,p6=function(){QC||!am(global.process)||(QC=!0,xs.count+=1,bC=bC.filter(function(e){try{return gi.on(e,bQ[e]),!0}catch{return!1}}),gi.emit=DEe,gi.reallyExit=vEe)},kC.exports.load=p6,h6=gi.reallyExit,vEe=function(e){!am(global.process)||(gi.exitCode=e||0,lm("exit",gi.exitCode,null),lm("afterexit",gi.exitCode,null),h6.call(gi,gi.exitCode))},QQ=gi.emit,DEe=function(e,r){if(e==="exit"&&am(global.process)){r!==void 0&&(gi.exitCode=r);var o=QQ.apply(this,arguments);return lm("exit",gi.exitCode,null),lm("afterexit",gi.exitCode,null),o}else return QQ.apply(this,arguments)}):kC.exports=function(){return function(){}};var wEe,bC,BEe,G2,xs,xQ,lm,bQ,QC,p6,h6,vEe,QQ,DEe});var PEe=U((dYt,SEe)=>{"use strict";var $mt=CEe(),eyt=g6();SEe.exports=$mt(()=>{eyt(()=>{process.stderr.write("\x1B[?25h")},{alwaysLast:!0})})});var d6=U(FC=>{"use strict";var tyt=PEe(),kQ=!1;FC.show=(t=process.stderr)=>{!t.isTTY||(kQ=!1,t.write("\x1B[?25h"))};FC.hide=(t=process.stderr)=>{!t.isTTY||(tyt(),kQ=!0,t.write("\x1B[?25l"))};FC.toggle=(t,e)=>{t!==void 0&&(kQ=t),kQ?FC.show(e):FC.hide(e)}});var kEe=U(W2=>{"use strict";var QEe=W2&&W2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(W2,"__esModule",{value:!0});var xEe=QEe(A6()),bEe=QEe(d6()),ryt=(t,{showCursor:e=!1}={})=>{let r=0,o="",a=!1,n=u=>{!e&&!a&&(bEe.default.hide(),a=!0);let A=u+` |
280 | `;A!==o&&(o=A,t.write(CEe.default.eraseLines(r)+A),r=A.split(` | 280 | `;A!==o&&(o=A,t.write(xEe.default.eraseLines(r)+A),r=A.split(` |
281 | `).length)};return n.clear=()=>{t.write(CEe.default.eraseLines(r)),o="",r=0},n.done=()=>{o="",r=0,e||(IEe.default.show(),a=!1)},n};U2.default={create:_mt}});var vEe=U((sYt,Hmt)=>{Hmt.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY_BUILD_BASE",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}}]});var PEe=U(hl=>{"use strict";var SEe=vEe(),hA=process.env;Object.defineProperty(hl,"_vendors",{value:SEe.map(function(t){return t.constant})});hl.name=null;hl.isPR=null;SEe.forEach(function(t){var e=Array.isArray(t.env)?t.env:[t.env],r=e.every(function(o){return DEe(o)});if(hl[t.constant]=r,r)switch(hl.name=t.name,typeof t.pr){case"string":hl.isPR=!!hA[t.pr];break;case"object":"env"in t.pr?hl.isPR=t.pr.env in hA&&hA[t.pr.env]!==t.pr.ne:"any"in t.pr?hl.isPR=t.pr.any.some(function(o){return!!hA[o]}):hl.isPR=DEe(t.pr);break;default:hl.isPR=null}});hl.isCI=!!(hA.CI||hA.CONTINUOUS_INTEGRATION||hA.BUILD_NUMBER||hA.RUN_ID||hl.name);function DEe(t){return typeof t=="string"?!!hA[t]:Object.keys(t).every(function(e){return hA[e]===t[e]})}});var bEe=U((aYt,xEe)=>{"use strict";xEe.exports=PEe().isCI});var kEe=U((lYt,QEe)=>{"use strict";var qmt=t=>{let e=new Set;do for(let r of Reflect.ownKeys(t))e.add([t,r]);while((t=Reflect.getPrototypeOf(t))&&t!==Object.prototype);return e};QEe.exports=(t,{include:e,exclude:r}={})=>{let o=a=>{let n=u=>typeof u=="string"?a===u:u.test(a);return e?e.some(n):r?!r.some(n):!0};for(let[a,n]of qmt(t.constructor.prototype)){if(n==="constructor"||!o(n))continue;let u=Reflect.getOwnPropertyDescriptor(a,n);u&&typeof u.value=="function"&&(t[n]=t[n].bind(t))}return t}});var MEe=U(vn=>{"use strict";Object.defineProperty(vn,"__esModule",{value:!0});var bC,q2,SQ,PQ,C6;typeof window>"u"||typeof MessageChannel!="function"?(xC=null,h6=null,g6=function(){if(xC!==null)try{var t=vn.unstable_now();xC(!0,t),xC=null}catch(e){throw setTimeout(g6,0),e}},FEe=Date.now(),vn.unstable_now=function(){return Date.now()-FEe},bC=function(t){xC!==null?setTimeout(bC,0,t):(xC=t,setTimeout(g6,0))},q2=function(t,e){h6=setTimeout(t,e)},SQ=function(){clearTimeout(h6)},PQ=function(){return!1},C6=vn.unstable_forceFrameRate=function(){}):(wQ=window.performance,d6=window.Date,REe=window.setTimeout,TEe=window.clearTimeout,typeof console<"u"&&(NEe=window.cancelAnimationFrame,typeof window.requestAnimationFrame!="function"&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),typeof NEe!="function"&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")),typeof wQ=="object"&&typeof wQ.now=="function"?vn.unstable_now=function(){return wQ.now()}:(LEe=d6.now(),vn.unstable_now=function(){return d6.now()-LEe}),_2=!1,H2=null,BQ=-1,m6=5,y6=0,PQ=function(){return vn.unstable_now()>=y6},C6=function(){},vn.unstable_forceFrameRate=function(t){0>t||125<t?console.error("forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported"):m6=0<t?Math.floor(1e3/t):5},E6=new MessageChannel,vQ=E6.port2,E6.port1.onmessage=function(){if(H2!==null){var t=vn.unstable_now();y6=t+m6;try{H2(!0,t)?vQ.postMessage(null):(_2=!1,H2=null)}catch(e){throw vQ.postMessage(null),e}}else _2=!1},bC=function(t){H2=t,_2||(_2=!0,vQ.postMessage(null))},q2=function(t,e){BQ=REe(function(){t(vn.unstable_now())},e)},SQ=function(){TEe(BQ),BQ=-1});var xC,h6,g6,FEe,wQ,d6,REe,TEe,NEe,LEe,_2,H2,BQ,m6,y6,E6,vQ;function I6(t,e){var r=t.length;t.push(e);e:for(;;){var o=Math.floor((r-1)/2),a=t[o];if(a!==void 0&&0<DQ(a,e))t[o]=e,t[r]=a,r=o;else break e}}function sc(t){return t=t[0],t===void 0?null:t}function xQ(t){var e=t[0];if(e!==void 0){var r=t.pop();if(r!==e){t[0]=r;e:for(var o=0,a=t.length;o<a;){var n=2*(o+1)-1,u=t[n],A=n+1,p=t[A];if(u!==void 0&&0>DQ(u,r))p!==void 0&&0>DQ(p,u)?(t[o]=p,t[A]=r,o=A):(t[o]=u,t[n]=r,o=n);else if(p!==void 0&&0>DQ(p,r))t[o]=p,t[A]=r,o=A;else break e}}return e}return null}function DQ(t,e){var r=t.sortIndex-e.sortIndex;return r!==0?r:t.id-e.id}var ru=[],hh=[],jmt=1,$o=null,Ro=3,bQ=!1,sm=!1,j2=!1;function QQ(t){for(var e=sc(hh);e!==null;){if(e.callback===null)xQ(hh);else if(e.startTime<=t)xQ(hh),e.sortIndex=e.expirationTime,I6(ru,e);else break;e=sc(hh)}}function w6(t){if(j2=!1,QQ(t),!sm)if(sc(ru)!==null)sm=!0,bC(B6);else{var e=sc(hh);e!==null&&q2(w6,e.startTime-t)}}function B6(t,e){sm=!1,j2&&(j2=!1,SQ()),bQ=!0;var r=Ro;try{for(QQ(e),$o=sc(ru);$o!==null&&(!($o.expirationTime>e)||t&&!PQ());){var o=$o.callback;if(o!==null){$o.callback=null,Ro=$o.priorityLevel;var a=o($o.expirationTime<=e);e=vn.unstable_now(),typeof a=="function"?$o.callback=a:$o===sc(ru)&&xQ(ru),QQ(e)}else xQ(ru);$o=sc(ru)}if($o!==null)var n=!0;else{var u=sc(hh);u!==null&&q2(w6,u.startTime-e),n=!1}return n}finally{$o=null,Ro=r,bQ=!1}}function OEe(t){switch(t){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var Gmt=C6;vn.unstable_ImmediatePriority=1;vn.unstable_UserBlockingPriority=2;vn.unstable_NormalPriority=3;vn.unstable_IdlePriority=5;vn.unstable_LowPriority=4;vn.unstable_runWithPriority=function(t,e){switch(t){case 1:case 2:case 3:case 4:case 5:break;default:t=3}var r=Ro;Ro=t;try{return e()}finally{Ro=r}};vn.unstable_next=function(t){switch(Ro){case 1:case 2:case 3:var e=3;break;default:e=Ro}var r=Ro;Ro=e;try{return t()}finally{Ro=r}};vn.unstable_scheduleCallback=function(t,e,r){var o=vn.unstable_now();if(typeof r=="object"&&r!==null){var a=r.delay;a=typeof a=="number"&&0<a?o+a:o,r=typeof r.timeout=="number"?r.timeout:OEe(t)}else r=OEe(t),a=o;return r=a+r,t={id:jmt++,callback:e,priorityLevel:t,startTime:a,expirationTime:r,sortIndex:-1},a>o?(t.sortIndex=a,I6(hh,t),sc(ru)===null&&t===sc(hh)&&(j2?SQ():j2=!0,q2(w6,a-o))):(t.sortIndex=r,I6(ru,t),sm||bQ||(sm=!0,bC(B6))),t};vn.unstable_cancelCallback=function(t){t.callback=null};vn.unstable_wrapCallback=function(t){var e=Ro;return function(){var r=Ro;Ro=e;try{return t.apply(this,arguments)}finally{Ro=r}}};vn.unstable_getCurrentPriorityLevel=function(){return Ro};vn.unstable_shouldYield=function(){var t=vn.unstable_now();QQ(t);var e=sc(ru);return e!==$o&&$o!==null&&e!==null&&e.callback!==null&&e.startTime<=t&&e.expirationTime<$o.expirationTime||PQ()};vn.unstable_requestPaint=Gmt;vn.unstable_continueExecution=function(){sm||bQ||(sm=!0,bC(B6))};vn.unstable_pauseExecution=function(){};vn.unstable_getFirstCallbackNode=function(){return sc(ru)};vn.unstable_Profiling=null});var v6=U((uYt,UEe)=>{"use strict";UEe.exports=MEe()});var _Ee=U((AYt,G2)=>{G2.exports=function t(e){"use strict";var r=XH(),o=en(),a=v6();function n(S){for(var D="https://reactjs.org/docs/error-decoder.html?invariant="+S,T=1;T<arguments.length;T++)D+="&args[]="+encodeURIComponent(arguments[T]);return"Minified React error #"+S+"; visit "+D+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var u=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;u.hasOwnProperty("ReactCurrentDispatcher")||(u.ReactCurrentDispatcher={current:null}),u.hasOwnProperty("ReactCurrentBatchConfig")||(u.ReactCurrentBatchConfig={suspense:null});var A=typeof Symbol=="function"&&Symbol.for,p=A?Symbol.for("react.element"):60103,h=A?Symbol.for("react.portal"):60106,C=A?Symbol.for("react.fragment"):60107,w=A?Symbol.for("react.strict_mode"):60108,v=A?Symbol.for("react.profiler"):60114,b=A?Symbol.for("react.provider"):60109,E=A?Symbol.for("react.context"):60110,R=A?Symbol.for("react.concurrent_mode"):60111,L=A?Symbol.for("react.forward_ref"):60112,_=A?Symbol.for("react.suspense"):60113,J=A?Symbol.for("react.suspense_list"):60120,re=A?Symbol.for("react.memo"):60115,oe=A?Symbol.for("react.lazy"):60116;A&&Symbol.for("react.fundamental"),A&&Symbol.for("react.responder"),A&&Symbol.for("react.scope");var pe=typeof Symbol=="function"&&Symbol.iterator;function he(S){return S===null||typeof S!="object"?null:(S=pe&&S[pe]||S["@@iterator"],typeof S=="function"?S:null)}function ve(S){if(S._status===-1){S._status=0;var D=S._ctor;D=D(),S._result=D,D.then(function(T){S._status===0&&(T=T.default,S._status=1,S._result=T)},function(T){S._status===0&&(S._status=2,S._result=T)})}}function ge(S){if(S==null)return null;if(typeof S=="function")return S.displayName||S.name||null;if(typeof S=="string")return S;switch(S){case C:return"Fragment";case h:return"Portal";case v:return"Profiler";case w:return"StrictMode";case _:return"Suspense";case J:return"SuspenseList"}if(typeof S=="object")switch(S.$$typeof){case E:return"Context.Consumer";case b:return"Context.Provider";case L:var D=S.render;return D=D.displayName||D.name||"",S.displayName||(D!==""?"ForwardRef("+D+")":"ForwardRef");case re:return ge(S.type);case oe:if(S=S._status===1?S._result:null)return ge(S)}return null}function le(S){var D=S,T=S;if(S.alternate)for(;D.return;)D=D.return;else{S=D;do D=S,(D.effectTag&1026)!==0&&(T=D.return),S=D.return;while(S)}return D.tag===3?T:null}function Pe(S){if(le(S)!==S)throw Error(n(188))}function g(S){var D=S.alternate;if(!D){if(D=le(S),D===null)throw Error(n(188));return D!==S?null:S}for(var T=S,q=D;;){var W=T.return;if(W===null)break;var ce=W.alternate;if(ce===null){if(q=W.return,q!==null){T=q;continue}break}if(W.child===ce.child){for(ce=W.child;ce;){if(ce===T)return Pe(W),S;if(ce===q)return Pe(W),D;ce=ce.sibling}throw Error(n(188))}if(T.return!==q.return)T=W,q=ce;else{for(var Se=!1,It=W.child;It;){if(It===T){Se=!0,T=W,q=ce;break}if(It===q){Se=!0,q=W,T=ce;break}It=It.sibling}if(!Se){for(It=ce.child;It;){if(It===T){Se=!0,T=ce,q=W;break}if(It===q){Se=!0,q=ce,T=W;break}It=It.sibling}if(!Se)throw Error(n(189))}}if(T.alternate!==q)throw Error(n(190))}if(T.tag!==3)throw Error(n(188));return T.stateNode.current===T?S:D}function De(S){if(S=g(S),!S)return null;for(var D=S;;){if(D.tag===5||D.tag===6)return D;if(D.child)D.child.return=D,D=D.child;else{if(D===S)break;for(;!D.sibling;){if(!D.return||D.return===S)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}}return null}function Ee(S){if(S=g(S),!S)return null;for(var D=S;;){if(D.tag===5||D.tag===6)return D;if(D.child&&D.tag!==4)D.child.return=D,D=D.child;else{if(D===S)break;for(;!D.sibling;){if(!D.return||D.return===S)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}}return null}var de=e.getPublicInstance,ne=e.getRootHostContext,Z=e.getChildHostContext,me=e.prepareForCommit,be=e.resetAfterCommit,ut=e.createInstance,H=e.appendInitialChild,yt=e.finalizeInitialChildren,Me=e.prepareUpdate,Te=e.shouldSetTextContent,Qe=e.shouldDeprioritizeSubtree,Ue=e.createTextInstance,je=e.setTimeout,At=e.clearTimeout,Le=e.noTimeout,x=e.isPrimaryRenderer,I=e.supportsMutation,P=e.supportsPersistence,y=e.supportsHydration,F=e.appendChild,z=e.appendChildToContainer,X=e.commitTextUpdate,$=e.commitMount,ie=e.commitUpdate,ke=e.insertBefore,Ne=e.insertInContainerBefore,st=e.removeChild,ht=e.removeChildFromContainer,Ut=e.resetTextContent,Xt=e.hideInstance,Pt=e.hideTextInstance,tn=e.unhideInstance,Dr=e.unhideTextInstance,fr=e.cloneInstance,Br=e.createContainerChildSet,jr=e.appendChildToContainerChildSet,Hn=e.finalizeContainerChildren,bs=e.replaceContainerChildren,ki=e.cloneHiddenInstance,gs=e.cloneHiddenTextInstance,to=e.canHydrateInstance,Di=e.canHydrateTextInstance,Qs=e.isSuspenseInstancePending,ro=e.isSuspenseInstanceFallback,uc=e.getNextHydratableSibling,hu=e.getFirstHydratableChild,op=e.hydrateInstance,ap=e.hydrateTextInstance,ks=e.getNextHydratableInstanceAfterSuspenseInstance,Cn=e.commitHydratedContainer,no=e.commitHydratedSuspenseInstance,Fs=/^(.*)[\\\/]/;function dl(S){var D="";do{e:switch(S.tag){case 3:case 4:case 6:case 7:case 10:case 9:var T="";break e;default:var q=S._debugOwner,W=S._debugSource,ce=ge(S.type);T=null,q&&(T=ge(q.type)),q=ce,ce="",W?ce=" (at "+W.fileName.replace(Fs,"")+":"+W.lineNumber+")":T&&(ce=" (created by "+T+")"),T=` | 281 | `).length)};return n.clear=()=>{t.write(xEe.default.eraseLines(r)),o="",r=0},n.done=()=>{o="",r=0,e||(bEe.default.show(),a=!1)},n};W2.default={create:ryt}});var FEe=U((EYt,nyt)=>{nyt.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY_BUILD_BASE",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}}]});var NEe=U(yl=>{"use strict";var TEe=FEe(),gA=process.env;Object.defineProperty(yl,"_vendors",{value:TEe.map(function(t){return t.constant})});yl.name=null;yl.isPR=null;TEe.forEach(function(t){var e=Array.isArray(t.env)?t.env:[t.env],r=e.every(function(o){return REe(o)});if(yl[t.constant]=r,r)switch(yl.name=t.name,typeof t.pr){case"string":yl.isPR=!!gA[t.pr];break;case"object":"env"in t.pr?yl.isPR=t.pr.env in gA&&gA[t.pr.env]!==t.pr.ne:"any"in t.pr?yl.isPR=t.pr.any.some(function(o){return!!gA[o]}):yl.isPR=REe(t.pr);break;default:yl.isPR=null}});yl.isCI=!!(gA.CI||gA.CONTINUOUS_INTEGRATION||gA.BUILD_NUMBER||gA.RUN_ID||yl.name);function REe(t){return typeof t=="string"?!!gA[t]:Object.keys(t).every(function(e){return gA[e]===t[e]})}});var OEe=U((IYt,LEe)=>{"use strict";LEe.exports=NEe().isCI});var UEe=U((wYt,MEe)=>{"use strict";var iyt=t=>{let e=new Set;do for(let r of Reflect.ownKeys(t))e.add([t,r]);while((t=Reflect.getPrototypeOf(t))&&t!==Object.prototype);return e};MEe.exports=(t,{include:e,exclude:r}={})=>{let o=a=>{let n=u=>typeof u=="string"?a===u:u.test(a);return e?e.some(n):r?!r.some(n):!0};for(let[a,n]of iyt(t.constructor.prototype)){if(n==="constructor"||!o(n))continue;let u=Reflect.getOwnPropertyDescriptor(a,n);u&&typeof u.value=="function"&&(t[n]=t[n].bind(t))}return t}});var YEe=U(vn=>{"use strict";Object.defineProperty(vn,"__esModule",{value:!0});var TC,V2,LQ,OQ,B6;typeof window>"u"||typeof MessageChannel!="function"?(RC=null,m6=null,y6=function(){if(RC!==null)try{var t=vn.unstable_now();RC(!0,t),RC=null}catch(e){throw setTimeout(y6,0),e}},_Ee=Date.now(),vn.unstable_now=function(){return Date.now()-_Ee},TC=function(t){RC!==null?setTimeout(TC,0,t):(RC=t,setTimeout(y6,0))},V2=function(t,e){m6=setTimeout(t,e)},LQ=function(){clearTimeout(m6)},OQ=function(){return!1},B6=vn.unstable_forceFrameRate=function(){}):(FQ=window.performance,E6=window.Date,HEe=window.setTimeout,qEe=window.clearTimeout,typeof console<"u"&&(jEe=window.cancelAnimationFrame,typeof window.requestAnimationFrame!="function"&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),typeof jEe!="function"&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")),typeof FQ=="object"&&typeof FQ.now=="function"?vn.unstable_now=function(){return FQ.now()}:(GEe=E6.now(),vn.unstable_now=function(){return E6.now()-GEe}),Y2=!1,K2=null,RQ=-1,C6=5,I6=0,OQ=function(){return vn.unstable_now()>=I6},B6=function(){},vn.unstable_forceFrameRate=function(t){0>t||125<t?console.error("forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported"):C6=0<t?Math.floor(1e3/t):5},w6=new MessageChannel,TQ=w6.port2,w6.port1.onmessage=function(){if(K2!==null){var t=vn.unstable_now();I6=t+C6;try{K2(!0,t)?TQ.postMessage(null):(Y2=!1,K2=null)}catch(e){throw TQ.postMessage(null),e}}else Y2=!1},TC=function(t){K2=t,Y2||(Y2=!0,TQ.postMessage(null))},V2=function(t,e){RQ=HEe(function(){t(vn.unstable_now())},e)},LQ=function(){qEe(RQ),RQ=-1});var RC,m6,y6,_Ee,FQ,E6,HEe,qEe,jEe,GEe,Y2,K2,RQ,C6,I6,w6,TQ;function v6(t,e){var r=t.length;t.push(e);e:for(;;){var o=Math.floor((r-1)/2),a=t[o];if(a!==void 0&&0<NQ(a,e))t[o]=e,t[r]=a,r=o;else break e}}function cc(t){return t=t[0],t===void 0?null:t}function MQ(t){var e=t[0];if(e!==void 0){var r=t.pop();if(r!==e){t[0]=r;e:for(var o=0,a=t.length;o<a;){var n=2*(o+1)-1,u=t[n],A=n+1,p=t[A];if(u!==void 0&&0>NQ(u,r))p!==void 0&&0>NQ(p,u)?(t[o]=p,t[A]=r,o=A):(t[o]=u,t[n]=r,o=n);else if(p!==void 0&&0>NQ(p,r))t[o]=p,t[A]=r,o=A;else break e}}return e}return null}function NQ(t,e){var r=t.sortIndex-e.sortIndex;return r!==0?r:t.id-e.id}var su=[],dh=[],syt=1,ta=null,Ro=3,UQ=!1,cm=!1,J2=!1;function _Q(t){for(var e=cc(dh);e!==null;){if(e.callback===null)MQ(dh);else if(e.startTime<=t)MQ(dh),e.sortIndex=e.expirationTime,v6(su,e);else break;e=cc(dh)}}function D6(t){if(J2=!1,_Q(t),!cm)if(cc(su)!==null)cm=!0,TC(S6);else{var e=cc(dh);e!==null&&V2(D6,e.startTime-t)}}function S6(t,e){cm=!1,J2&&(J2=!1,LQ()),UQ=!0;var r=Ro;try{for(_Q(e),ta=cc(su);ta!==null&&(!(ta.expirationTime>e)||t&&!OQ());){var o=ta.callback;if(o!==null){ta.callback=null,Ro=ta.priorityLevel;var a=o(ta.expirationTime<=e);e=vn.unstable_now(),typeof a=="function"?ta.callback=a:ta===cc(su)&&MQ(su),_Q(e)}else MQ(su);ta=cc(su)}if(ta!==null)var n=!0;else{var u=cc(dh);u!==null&&V2(D6,u.startTime-e),n=!1}return n}finally{ta=null,Ro=r,UQ=!1}}function WEe(t){switch(t){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var oyt=B6;vn.unstable_ImmediatePriority=1;vn.unstable_UserBlockingPriority=2;vn.unstable_NormalPriority=3;vn.unstable_IdlePriority=5;vn.unstable_LowPriority=4;vn.unstable_runWithPriority=function(t,e){switch(t){case 1:case 2:case 3:case 4:case 5:break;default:t=3}var r=Ro;Ro=t;try{return e()}finally{Ro=r}};vn.unstable_next=function(t){switch(Ro){case 1:case 2:case 3:var e=3;break;default:e=Ro}var r=Ro;Ro=e;try{return t()}finally{Ro=r}};vn.unstable_scheduleCallback=function(t,e,r){var o=vn.unstable_now();if(typeof r=="object"&&r!==null){var a=r.delay;a=typeof a=="number"&&0<a?o+a:o,r=typeof r.timeout=="number"?r.timeout:WEe(t)}else r=WEe(t),a=o;return r=a+r,t={id:syt++,callback:e,priorityLevel:t,startTime:a,expirationTime:r,sortIndex:-1},a>o?(t.sortIndex=a,v6(dh,t),cc(su)===null&&t===cc(dh)&&(J2?LQ():J2=!0,V2(D6,a-o))):(t.sortIndex=r,v6(su,t),cm||UQ||(cm=!0,TC(S6))),t};vn.unstable_cancelCallback=function(t){t.callback=null};vn.unstable_wrapCallback=function(t){var e=Ro;return function(){var r=Ro;Ro=e;try{return t.apply(this,arguments)}finally{Ro=r}}};vn.unstable_getCurrentPriorityLevel=function(){return Ro};vn.unstable_shouldYield=function(){var t=vn.unstable_now();_Q(t);var e=cc(su);return e!==ta&&ta!==null&&e!==null&&e.callback!==null&&e.startTime<=t&&e.expirationTime<ta.expirationTime||OQ()};vn.unstable_requestPaint=oyt;vn.unstable_continueExecution=function(){cm||UQ||(cm=!0,TC(S6))};vn.unstable_pauseExecution=function(){};vn.unstable_getFirstCallbackNode=function(){return cc(su)};vn.unstable_Profiling=null});var P6=U((vYt,KEe)=>{"use strict";KEe.exports=YEe()});var VEe=U((DYt,z2)=>{z2.exports=function t(e){"use strict";var r=e6(),o=en(),a=P6();function n(S){for(var D="https://reactjs.org/docs/error-decoder.html?invariant="+S,T=1;T<arguments.length;T++)D+="&args[]="+encodeURIComponent(arguments[T]);return"Minified React error #"+S+"; visit "+D+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var u=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;u.hasOwnProperty("ReactCurrentDispatcher")||(u.ReactCurrentDispatcher={current:null}),u.hasOwnProperty("ReactCurrentBatchConfig")||(u.ReactCurrentBatchConfig={suspense:null});var A=typeof Symbol=="function"&&Symbol.for,p=A?Symbol.for("react.element"):60103,h=A?Symbol.for("react.portal"):60106,C=A?Symbol.for("react.fragment"):60107,w=A?Symbol.for("react.strict_mode"):60108,v=A?Symbol.for("react.profiler"):60114,b=A?Symbol.for("react.provider"):60109,E=A?Symbol.for("react.context"):60110,R=A?Symbol.for("react.concurrent_mode"):60111,L=A?Symbol.for("react.forward_ref"):60112,_=A?Symbol.for("react.suspense"):60113,V=A?Symbol.for("react.suspense_list"):60120,re=A?Symbol.for("react.memo"):60115,ae=A?Symbol.for("react.lazy"):60116;A&&Symbol.for("react.fundamental"),A&&Symbol.for("react.responder"),A&&Symbol.for("react.scope");var he=typeof Symbol=="function"&&Symbol.iterator;function pe(S){return S===null||typeof S!="object"?null:(S=he&&S[he]||S["@@iterator"],typeof S=="function"?S:null)}function De(S){if(S._status===-1){S._status=0;var D=S._ctor;D=D(),S._result=D,D.then(function(T){S._status===0&&(T=T.default,S._status=1,S._result=T)},function(T){S._status===0&&(S._status=2,S._result=T)})}}function ge(S){if(S==null)return null;if(typeof S=="function")return S.displayName||S.name||null;if(typeof S=="string")return S;switch(S){case C:return"Fragment";case h:return"Portal";case v:return"Profiler";case w:return"StrictMode";case _:return"Suspense";case V:return"SuspenseList"}if(typeof S=="object")switch(S.$$typeof){case E:return"Context.Consumer";case b:return"Context.Provider";case L:var D=S.render;return D=D.displayName||D.name||"",S.displayName||(D!==""?"ForwardRef("+D+")":"ForwardRef");case re:return ge(S.type);case ae:if(S=S._status===1?S._result:null)return ge(S)}return null}function le(S){var D=S,T=S;if(S.alternate)for(;D.return;)D=D.return;else{S=D;do D=S,(D.effectTag&1026)!==0&&(T=D.return),S=D.return;while(S)}return D.tag===3?T:null}function Pe(S){if(le(S)!==S)throw Error(n(188))}function g(S){var D=S.alternate;if(!D){if(D=le(S),D===null)throw Error(n(188));return D!==S?null:S}for(var T=S,q=D;;){var W=T.return;if(W===null)break;var ce=W.alternate;if(ce===null){if(q=W.return,q!==null){T=q;continue}break}if(W.child===ce.child){for(ce=W.child;ce;){if(ce===T)return Pe(W),S;if(ce===q)return Pe(W),D;ce=ce.sibling}throw Error(n(188))}if(T.return!==q.return)T=W,q=ce;else{for(var Se=!1,It=W.child;It;){if(It===T){Se=!0,T=W,q=ce;break}if(It===q){Se=!0,q=W,T=ce;break}It=It.sibling}if(!Se){for(It=ce.child;It;){if(It===T){Se=!0,T=ce,q=W;break}if(It===q){Se=!0,q=ce,T=W;break}It=It.sibling}if(!Se)throw Error(n(189))}}if(T.alternate!==q)throw Error(n(190))}if(T.tag!==3)throw Error(n(188));return T.stateNode.current===T?S:D}function ve(S){if(S=g(S),!S)return null;for(var D=S;;){if(D.tag===5||D.tag===6)return D;if(D.child)D.child.return=D,D=D.child;else{if(D===S)break;for(;!D.sibling;){if(!D.return||D.return===S)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}}return null}function Ee(S){if(S=g(S),!S)return null;for(var D=S;;){if(D.tag===5||D.tag===6)return D;if(D.child&&D.tag!==4)D.child.return=D,D=D.child;else{if(D===S)break;for(;!D.sibling;){if(!D.return||D.return===S)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}}return null}var de=e.getPublicInstance,ne=e.getRootHostContext,Z=e.getChildHostContext,me=e.prepareForCommit,be=e.resetAfterCommit,ut=e.createInstance,H=e.appendInitialChild,yt=e.finalizeInitialChildren,Me=e.prepareUpdate,Te=e.shouldSetTextContent,Qe=e.shouldDeprioritizeSubtree,_e=e.createTextInstance,qe=e.setTimeout,At=e.clearTimeout,Oe=e.noTimeout,x=e.isPrimaryRenderer,I=e.supportsMutation,P=e.supportsPersistence,y=e.supportsHydration,F=e.appendChild,z=e.appendChildToContainer,X=e.commitTextUpdate,$=e.commitMount,ie=e.commitUpdate,ke=e.insertBefore,Ne=e.insertInContainerBefore,st=e.removeChild,ht=e.removeChildFromContainer,Ut=e.resetTextContent,Xt=e.hideInstance,xt=e.hideTextInstance,tn=e.unhideInstance,Dr=e.unhideTextInstance,fr=e.cloneInstance,Br=e.createContainerChildSet,jr=e.appendChildToContainerChildSet,Hn=e.finalizeContainerChildren,bs=e.replaceContainerChildren,ki=e.cloneHiddenInstance,gs=e.cloneHiddenTextInstance,to=e.canHydrateInstance,Di=e.canHydrateTextInstance,Qs=e.isSuspenseInstancePending,ro=e.isSuspenseInstanceFallback,hc=e.getNextHydratableSibling,gu=e.getFirstHydratableChild,cp=e.hydrateInstance,up=e.hydrateTextInstance,ks=e.getNextHydratableInstanceAfterSuspenseInstance,Cn=e.commitHydratedContainer,no=e.commitHydratedSuspenseInstance,Fs=/^(.*)[\\\/]/;function Cl(S){var D="";do{e:switch(S.tag){case 3:case 4:case 6:case 7:case 10:case 9:var T="";break e;default:var q=S._debugOwner,W=S._debugSource,ce=ge(S.type);T=null,q&&(T=ge(q.type)),q=ce,ce="",W?ce=" (at "+W.fileName.replace(Fs,"")+":"+W.lineNumber+")":T&&(ce=" (created by "+T+")"),T=` |
282 | in `+(q||"Unknown")+ce}D+=T,S=S.return}while(S);return D}var ml=[],io=-1;function _e(S){0>io||(S.current=ml[io],ml[io]=null,io--)}function Fn(S,D){io++,ml[io]=S.current,S.current=D}var Fi={},Rn={current:Fi},Ui={current:!1},Zt=Fi;function Ri(S,D){var T=S.type.contextTypes;if(!T)return Fi;var q=S.stateNode;if(q&&q.__reactInternalMemoizedUnmaskedChildContext===D)return q.__reactInternalMemoizedMaskedChildContext;var W={},ce;for(ce in T)W[ce]=D[ce];return q&&(S=S.stateNode,S.__reactInternalMemoizedUnmaskedChildContext=D,S.__reactInternalMemoizedMaskedChildContext=W),W}function Zn(S){return S=S.childContextTypes,S!=null}function La(S){_e(Ui,S),_e(Rn,S)}function $t(S){_e(Ui,S),_e(Rn,S)}function Ac(S,D,T){if(Rn.current!==Fi)throw Error(n(168));Fn(Rn,D,S),Fn(Ui,T,S)}function gu(S,D,T){var q=S.stateNode;if(S=D.childContextTypes,typeof q.getChildContext!="function")return T;q=q.getChildContext();for(var W in q)if(!(W in S))throw Error(n(108,ge(D)||"Unknown",W));return r({},T,{},q)}function fc(S){var D=S.stateNode;return D=D&&D.__reactInternalMemoizedMergedChildContext||Fi,Zt=Rn.current,Fn(Rn,D,S),Fn(Ui,Ui.current,S),!0}function yl(S,D,T){var q=S.stateNode;if(!q)throw Error(n(169));T?(D=gu(S,D,Zt),q.__reactInternalMemoizedMergedChildContext=D,_e(Ui,S),_e(Rn,S),Fn(Rn,D,S)):_e(Ui,S),Fn(Ui,T,S)}var DA=a.unstable_runWithPriority,du=a.unstable_scheduleCallback,Ce=a.unstable_cancelCallback,Rt=a.unstable_shouldYield,pc=a.unstable_requestPaint,_i=a.unstable_now,mu=a.unstable_getCurrentPriorityLevel,qt=a.unstable_ImmediatePriority,El=a.unstable_UserBlockingPriority,SA=a.unstable_NormalPriority,lp=a.unstable_LowPriority,hc=a.unstable_IdlePriority,PA={},Dn=pc!==void 0?pc:function(){},ui=null,gc=null,xA=!1,ta=_i(),Hi=1e4>ta?_i:function(){return _i()-ta};function Lo(){switch(mu()){case qt:return 99;case El:return 98;case SA:return 97;case lp:return 96;case hc:return 95;default:throw Error(n(332))}}function $e(S){switch(S){case 99:return qt;case 98:return El;case 97:return SA;case 96:return lp;case 95:return hc;default:throw Error(n(332))}}function so(S,D){return S=$e(S),DA(S,D)}function Cl(S,D,T){return S=$e(S),du(S,D,T)}function yu(S){return ui===null?(ui=[S],gc=du(qt,Eu)):ui.push(S),PA}function qi(){if(gc!==null){var S=gc;gc=null,Ce(S)}Eu()}function Eu(){if(!xA&&ui!==null){xA=!0;var S=0;try{var D=ui;so(99,function(){for(;S<D.length;S++){var T=D[S];do T=T(!0);while(T!==null)}}),ui=null}catch(T){throw ui!==null&&(ui=ui.slice(S+1)),du(qt,qi),T}finally{xA=!1}}}var bA=3;function Oa(S,D,T){return T/=10,1073741821-(((1073741821-S+D/10)/T|0)+1)*T}function dc(S,D){return S===D&&(S!==0||1/S===1/D)||S!==S&&D!==D}var ds=typeof Object.is=="function"?Object.is:dc,Ot=Object.prototype.hasOwnProperty;function Sn(S,D){if(ds(S,D))return!0;if(typeof S!="object"||S===null||typeof D!="object"||D===null)return!1;var T=Object.keys(S),q=Object.keys(D);if(T.length!==q.length)return!1;for(q=0;q<T.length;q++)if(!Ot.call(D,T[q])||!ds(S[T[q]],D[T[q]]))return!1;return!0}function di(S,D){if(S&&S.defaultProps){D=r({},D),S=S.defaultProps;for(var T in S)D[T]===void 0&&(D[T]=S[T])}return D}var ra={current:null},oo=null,Rs=null,na=null;function ia(){na=Rs=oo=null}function Oo(S,D){var T=S.type._context;x?(Fn(ra,T._currentValue,S),T._currentValue=D):(Fn(ra,T._currentValue2,S),T._currentValue2=D)}function Zi(S){var D=ra.current;_e(ra,S),S=S.type._context,x?S._currentValue=D:S._currentValue2=D}function Ts(S,D){for(;S!==null;){var T=S.alternate;if(S.childExpirationTime<D)S.childExpirationTime=D,T!==null&&T.childExpirationTime<D&&(T.childExpirationTime=D);else if(T!==null&&T.childExpirationTime<D)T.childExpirationTime=D;else break;S=S.return}}function Ns(S,D){oo=S,na=Rs=null,S=S.dependencies,S!==null&&S.firstContext!==null&&(S.expirationTime>=D&&(Mo=!0),S.firstContext=null)}function Ls(S,D){if(na!==S&&D!==!1&&D!==0)if((typeof D!="number"||D===1073741823)&&(na=S,D=1073741823),D={context:S,observedBits:D,next:null},Rs===null){if(oo===null)throw Error(n(308));Rs=D,oo.dependencies={expirationTime:0,firstContext:D,responders:null}}else Rs=Rs.next=D;return x?S._currentValue:S._currentValue2}var ao=!1;function Wn(S){return{baseState:S,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function qn(S){return{baseState:S.baseState,firstUpdate:S.firstUpdate,lastUpdate:S.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function $i(S,D){return{expirationTime:S,suspenseConfig:D,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function es(S,D){S.lastUpdate===null?S.firstUpdate=S.lastUpdate=D:(S.lastUpdate.next=D,S.lastUpdate=D)}function mi(S,D){var T=S.alternate;if(T===null){var q=S.updateQueue,W=null;q===null&&(q=S.updateQueue=Wn(S.memoizedState))}else q=S.updateQueue,W=T.updateQueue,q===null?W===null?(q=S.updateQueue=Wn(S.memoizedState),W=T.updateQueue=Wn(T.memoizedState)):q=S.updateQueue=qn(W):W===null&&(W=T.updateQueue=qn(q));W===null||q===W?es(q,D):q.lastUpdate===null||W.lastUpdate===null?(es(q,D),es(W,D)):(es(q,D),W.lastUpdate=D)}function Ma(S,D){var T=S.updateQueue;T=T===null?S.updateQueue=Wn(S.memoizedState):sa(S,T),T.lastCapturedUpdate===null?T.firstCapturedUpdate=T.lastCapturedUpdate=D:(T.lastCapturedUpdate.next=D,T.lastCapturedUpdate=D)}function sa(S,D){var T=S.alternate;return T!==null&&D===T.updateQueue&&(D=S.updateQueue=qn(D)),D}function ee(S,D,T,q,W,ce){switch(T.tag){case 1:return S=T.payload,typeof S=="function"?S.call(ce,q,W):S;case 3:S.effectTag=S.effectTag&-4097|64;case 0:if(S=T.payload,W=typeof S=="function"?S.call(ce,q,W):S,W==null)break;return r({},q,W);case 2:ao=!0}return q}function we(S,D,T,q,W){ao=!1,D=sa(S,D);for(var ce=D.baseState,Se=null,It=0,Et=D.firstUpdate,xt=ce;Et!==null;){var Nr=Et.expirationTime;Nr<W?(Se===null&&(Se=Et,ce=xt),It<Nr&&(It=Nr)):(hI(Nr,Et.suspenseConfig),xt=ee(S,D,Et,xt,T,q),Et.callback!==null&&(S.effectTag|=32,Et.nextEffect=null,D.lastEffect===null?D.firstEffect=D.lastEffect=Et:(D.lastEffect.nextEffect=Et,D.lastEffect=Et))),Et=Et.next}for(Nr=null,Et=D.firstCapturedUpdate;Et!==null;){var is=Et.expirationTime;is<W?(Nr===null&&(Nr=Et,Se===null&&(ce=xt)),It<is&&(It=is)):(xt=ee(S,D,Et,xt,T,q),Et.callback!==null&&(S.effectTag|=32,Et.nextEffect=null,D.lastCapturedEffect===null?D.firstCapturedEffect=D.lastCapturedEffect=Et:(D.lastCapturedEffect.nextEffect=Et,D.lastCapturedEffect=Et))),Et=Et.next}Se===null&&(D.lastUpdate=null),Nr===null?D.lastCapturedUpdate=null:S.effectTag|=32,Se===null&&Nr===null&&(ce=xt),D.baseState=ce,D.firstUpdate=Se,D.firstCapturedUpdate=Nr,Mm(It),S.expirationTime=It,S.memoizedState=xt}function qe(S,D,T){D.firstCapturedUpdate!==null&&(D.lastUpdate!==null&&(D.lastUpdate.next=D.firstCapturedUpdate,D.lastUpdate=D.lastCapturedUpdate),D.firstCapturedUpdate=D.lastCapturedUpdate=null),Be(D.firstEffect,T),D.firstEffect=D.lastEffect=null,Be(D.firstCapturedEffect,T),D.firstCapturedEffect=D.lastCapturedEffect=null}function Be(S,D){for(;S!==null;){var T=S.callback;if(T!==null){S.callback=null;var q=D;if(typeof T!="function")throw Error(n(191,T));T.call(q)}S=S.nextEffect}}var xe=u.ReactCurrentBatchConfig,Je=new o.Component().refs;function vt(S,D,T,q){D=S.memoizedState,T=T(q,D),T=T==null?D:r({},D,T),S.memoizedState=T,q=S.updateQueue,q!==null&&S.expirationTime===0&&(q.baseState=T)}var tr={isMounted:function(S){return(S=S._reactInternalFiber)?le(S)===S:!1},enqueueSetState:function(S,D,T){S=S._reactInternalFiber;var q=ha(),W=xe.suspense;q=_A(q,S,W),W=$i(q,W),W.payload=D,T!=null&&(W.callback=T),mi(S,W),Pc(S,q)},enqueueReplaceState:function(S,D,T){S=S._reactInternalFiber;var q=ha(),W=xe.suspense;q=_A(q,S,W),W=$i(q,W),W.tag=1,W.payload=D,T!=null&&(W.callback=T),mi(S,W),Pc(S,q)},enqueueForceUpdate:function(S,D){S=S._reactInternalFiber;var T=ha(),q=xe.suspense;T=_A(T,S,q),q=$i(T,q),q.tag=2,D!=null&&(q.callback=D),mi(S,q),Pc(S,T)}};function Zr(S,D,T,q,W,ce,Se){return S=S.stateNode,typeof S.shouldComponentUpdate=="function"?S.shouldComponentUpdate(q,ce,Se):D.prototype&&D.prototype.isPureReactComponent?!Sn(T,q)||!Sn(W,ce):!0}function Tn(S,D,T){var q=!1,W=Fi,ce=D.contextType;return typeof ce=="object"&&ce!==null?ce=Ls(ce):(W=Zn(D)?Zt:Rn.current,q=D.contextTypes,ce=(q=q!=null)?Ri(S,W):Fi),D=new D(T,ce),S.memoizedState=D.state!==null&&D.state!==void 0?D.state:null,D.updater=tr,S.stateNode=D,D._reactInternalFiber=S,q&&(S=S.stateNode,S.__reactInternalMemoizedUnmaskedChildContext=W,S.__reactInternalMemoizedMaskedChildContext=ce),D}function _r(S,D,T,q){S=D.state,typeof D.componentWillReceiveProps=="function"&&D.componentWillReceiveProps(T,q),typeof D.UNSAFE_componentWillReceiveProps=="function"&&D.UNSAFE_componentWillReceiveProps(T,q),D.state!==S&&tr.enqueueReplaceState(D,D.state,null)}function $n(S,D,T,q){var W=S.stateNode;W.props=T,W.state=S.memoizedState,W.refs=Je;var ce=D.contextType;typeof ce=="object"&&ce!==null?W.context=Ls(ce):(ce=Zn(D)?Zt:Rn.current,W.context=Ri(S,ce)),ce=S.updateQueue,ce!==null&&(we(S,ce,T,W,q),W.state=S.memoizedState),ce=D.getDerivedStateFromProps,typeof ce=="function"&&(vt(S,D,ce,T),W.state=S.memoizedState),typeof D.getDerivedStateFromProps=="function"||typeof W.getSnapshotBeforeUpdate=="function"||typeof W.UNSAFE_componentWillMount!="function"&&typeof W.componentWillMount!="function"||(D=W.state,typeof W.componentWillMount=="function"&&W.componentWillMount(),typeof W.UNSAFE_componentWillMount=="function"&&W.UNSAFE_componentWillMount(),D!==W.state&&tr.enqueueReplaceState(W,W.state,null),ce=S.updateQueue,ce!==null&&(we(S,ce,T,W,q),W.state=S.memoizedState)),typeof W.componentDidMount=="function"&&(S.effectTag|=4)}var Ti=Array.isArray;function Yn(S,D,T){if(S=T.ref,S!==null&&typeof S!="function"&&typeof S!="object"){if(T._owner){if(T=T._owner,T){if(T.tag!==1)throw Error(n(309));var q=T.stateNode}if(!q)throw Error(n(147,S));var W=""+S;return D!==null&&D.ref!==null&&typeof D.ref=="function"&&D.ref._stringRef===W?D.ref:(D=function(ce){var Se=q.refs;Se===Je&&(Se=q.refs={}),ce===null?delete Se[W]:Se[W]=ce},D._stringRef=W,D)}if(typeof S!="string")throw Error(n(284));if(!T._owner)throw Error(n(290,S))}return S}function Ua(S,D){if(S.type!=="textarea")throw Error(n(31,Object.prototype.toString.call(D)==="[object Object]"?"object with keys {"+Object.keys(D).join(", ")+"}":D,""))}function oa(S){function D(rt,Ve){if(S){var ft=rt.lastEffect;ft!==null?(ft.nextEffect=Ve,rt.lastEffect=Ve):rt.firstEffect=rt.lastEffect=Ve,Ve.nextEffect=null,Ve.effectTag=8}}function T(rt,Ve){if(!S)return null;for(;Ve!==null;)D(rt,Ve),Ve=Ve.sibling;return null}function q(rt,Ve){for(rt=new Map;Ve!==null;)Ve.key!==null?rt.set(Ve.key,Ve):rt.set(Ve.index,Ve),Ve=Ve.sibling;return rt}function W(rt,Ve,ft){return rt=GA(rt,Ve,ft),rt.index=0,rt.sibling=null,rt}function ce(rt,Ve,ft){return rt.index=ft,S?(ft=rt.alternate,ft!==null?(ft=ft.index,ft<Ve?(rt.effectTag=2,Ve):ft):(rt.effectTag=2,Ve)):Ve}function Se(rt){return S&&rt.alternate===null&&(rt.effectTag=2),rt}function It(rt,Ve,ft,jt){return Ve===null||Ve.tag!==6?(Ve=EI(ft,rt.mode,jt),Ve.return=rt,Ve):(Ve=W(Ve,ft,jt),Ve.return=rt,Ve)}function Et(rt,Ve,ft,jt){return Ve!==null&&Ve.elementType===ft.type?(jt=W(Ve,ft.props,jt),jt.ref=Yn(rt,Ve,ft),jt.return=rt,jt):(jt=Um(ft.type,ft.key,ft.props,null,rt.mode,jt),jt.ref=Yn(rt,Ve,ft),jt.return=rt,jt)}function xt(rt,Ve,ft,jt){return Ve===null||Ve.tag!==4||Ve.stateNode.containerInfo!==ft.containerInfo||Ve.stateNode.implementation!==ft.implementation?(Ve=CI(ft,rt.mode,jt),Ve.return=rt,Ve):(Ve=W(Ve,ft.children||[],jt),Ve.return=rt,Ve)}function Nr(rt,Ve,ft,jt,Er){return Ve===null||Ve.tag!==7?(Ve=ku(ft,rt.mode,jt,Er),Ve.return=rt,Ve):(Ve=W(Ve,ft,jt),Ve.return=rt,Ve)}function is(rt,Ve,ft){if(typeof Ve=="string"||typeof Ve=="number")return Ve=EI(""+Ve,rt.mode,ft),Ve.return=rt,Ve;if(typeof Ve=="object"&&Ve!==null){switch(Ve.$$typeof){case p:return ft=Um(Ve.type,Ve.key,Ve.props,null,rt.mode,ft),ft.ref=Yn(rt,null,Ve),ft.return=rt,ft;case h:return Ve=CI(Ve,rt.mode,ft),Ve.return=rt,Ve}if(Ti(Ve)||he(Ve))return Ve=ku(Ve,rt.mode,ft,null),Ve.return=rt,Ve;Ua(rt,Ve)}return null}function fi(rt,Ve,ft,jt){var Er=Ve!==null?Ve.key:null;if(typeof ft=="string"||typeof ft=="number")return Er!==null?null:It(rt,Ve,""+ft,jt);if(typeof ft=="object"&&ft!==null){switch(ft.$$typeof){case p:return ft.key===Er?ft.type===C?Nr(rt,Ve,ft.props.children,jt,Er):Et(rt,Ve,ft,jt):null;case h:return ft.key===Er?xt(rt,Ve,ft,jt):null}if(Ti(ft)||he(ft))return Er!==null?null:Nr(rt,Ve,ft,jt,null);Ua(rt,ft)}return null}function Ao(rt,Ve,ft,jt,Er){if(typeof jt=="string"||typeof jt=="number")return rt=rt.get(ft)||null,It(Ve,rt,""+jt,Er);if(typeof jt=="object"&&jt!==null){switch(jt.$$typeof){case p:return rt=rt.get(jt.key===null?ft:jt.key)||null,jt.type===C?Nr(Ve,rt,jt.props.children,Er,jt.key):Et(Ve,rt,jt,Er);case h:return rt=rt.get(jt.key===null?ft:jt.key)||null,xt(Ve,rt,jt,Er)}if(Ti(jt)||he(jt))return rt=rt.get(ft)||null,Nr(Ve,rt,jt,Er,null);Ua(Ve,jt)}return null}function YA(rt,Ve,ft,jt){for(var Er=null,In=null,Sr=Ve,wn=Ve=0,ri=null;Sr!==null&&wn<ft.length;wn++){Sr.index>wn?(ri=Sr,Sr=null):ri=Sr.sibling;var Xr=fi(rt,Sr,ft[wn],jt);if(Xr===null){Sr===null&&(Sr=ri);break}S&&Sr&&Xr.alternate===null&&D(rt,Sr),Ve=ce(Xr,Ve,wn),In===null?Er=Xr:In.sibling=Xr,In=Xr,Sr=ri}if(wn===ft.length)return T(rt,Sr),Er;if(Sr===null){for(;wn<ft.length;wn++)Sr=is(rt,ft[wn],jt),Sr!==null&&(Ve=ce(Sr,Ve,wn),In===null?Er=Sr:In.sibling=Sr,In=Sr);return Er}for(Sr=q(rt,Sr);wn<ft.length;wn++)ri=Ao(Sr,rt,wn,ft[wn],jt),ri!==null&&(S&&ri.alternate!==null&&Sr.delete(ri.key===null?wn:ri.key),Ve=ce(ri,Ve,wn),In===null?Er=ri:In.sibling=ri,In=ri);return S&&Sr.forEach(function(fo){return D(rt,fo)}),Er}function _o(rt,Ve,ft,jt){var Er=he(ft);if(typeof Er!="function")throw Error(n(150));if(ft=Er.call(ft),ft==null)throw Error(n(151));for(var In=Er=null,Sr=Ve,wn=Ve=0,ri=null,Xr=ft.next();Sr!==null&&!Xr.done;wn++,Xr=ft.next()){Sr.index>wn?(ri=Sr,Sr=null):ri=Sr.sibling;var fo=fi(rt,Sr,Xr.value,jt);if(fo===null){Sr===null&&(Sr=ri);break}S&&Sr&&fo.alternate===null&&D(rt,Sr),Ve=ce(fo,Ve,wn),In===null?Er=fo:In.sibling=fo,In=fo,Sr=ri}if(Xr.done)return T(rt,Sr),Er;if(Sr===null){for(;!Xr.done;wn++,Xr=ft.next())Xr=is(rt,Xr.value,jt),Xr!==null&&(Ve=ce(Xr,Ve,wn),In===null?Er=Xr:In.sibling=Xr,In=Xr);return Er}for(Sr=q(rt,Sr);!Xr.done;wn++,Xr=ft.next())Xr=Ao(Sr,rt,wn,Xr.value,jt),Xr!==null&&(S&&Xr.alternate!==null&&Sr.delete(Xr.key===null?wn:Xr.key),Ve=ce(Xr,Ve,wn),In===null?Er=Xr:In.sibling=Xr,In=Xr);return S&&Sr.forEach(function(dF){return D(rt,dF)}),Er}return function(rt,Ve,ft,jt){var Er=typeof ft=="object"&&ft!==null&&ft.type===C&&ft.key===null;Er&&(ft=ft.props.children);var In=typeof ft=="object"&&ft!==null;if(In)switch(ft.$$typeof){case p:e:{for(In=ft.key,Er=Ve;Er!==null;){if(Er.key===In)if(Er.tag===7?ft.type===C:Er.elementType===ft.type){T(rt,Er.sibling),Ve=W(Er,ft.type===C?ft.props.children:ft.props,jt),Ve.ref=Yn(rt,Er,ft),Ve.return=rt,rt=Ve;break e}else{T(rt,Er);break}else D(rt,Er);Er=Er.sibling}ft.type===C?(Ve=ku(ft.props.children,rt.mode,jt,ft.key),Ve.return=rt,rt=Ve):(jt=Um(ft.type,ft.key,ft.props,null,rt.mode,jt),jt.ref=Yn(rt,Ve,ft),jt.return=rt,rt=jt)}return Se(rt);case h:e:{for(Er=ft.key;Ve!==null;){if(Ve.key===Er)if(Ve.tag===4&&Ve.stateNode.containerInfo===ft.containerInfo&&Ve.stateNode.implementation===ft.implementation){T(rt,Ve.sibling),Ve=W(Ve,ft.children||[],jt),Ve.return=rt,rt=Ve;break e}else{T(rt,Ve);break}else D(rt,Ve);Ve=Ve.sibling}Ve=CI(ft,rt.mode,jt),Ve.return=rt,rt=Ve}return Se(rt)}if(typeof ft=="string"||typeof ft=="number")return ft=""+ft,Ve!==null&&Ve.tag===6?(T(rt,Ve.sibling),Ve=W(Ve,ft,jt),Ve.return=rt,rt=Ve):(T(rt,Ve),Ve=EI(ft,rt.mode,jt),Ve.return=rt,rt=Ve),Se(rt);if(Ti(ft))return YA(rt,Ve,ft,jt);if(he(ft))return _o(rt,Ve,ft,jt);if(In&&Ua(rt,ft),typeof ft>"u"&&!Er)switch(rt.tag){case 1:case 0:throw rt=rt.type,Error(n(152,rt.displayName||rt.name||"Component"))}return T(rt,Ve)}}var yi=oa(!0),aa=oa(!1),Ha={},lo={current:Ha},QA={current:Ha},mc={current:Ha};function la(S){if(S===Ha)throw Error(n(174));return S}function $h(S,D){Fn(mc,D,S),Fn(QA,S,S),Fn(lo,Ha,S),D=ne(D),_e(lo,S),Fn(lo,D,S)}function yc(S){_e(lo,S),_e(QA,S),_e(mc,S)}function vm(S){var D=la(mc.current),T=la(lo.current);D=Z(T,S.type,D),T!==D&&(Fn(QA,S,S),Fn(lo,D,S))}function eg(S){QA.current===S&&(_e(lo,S),_e(QA,S))}var Kn={current:0};function cp(S){for(var D=S;D!==null;){if(D.tag===13){var T=D.memoizedState;if(T!==null&&(T=T.dehydrated,T===null||Qs(T)||ro(T)))return D}else if(D.tag===19&&D.memoizedProps.revealOrder!==void 0){if((D.effectTag&64)!==0)return D}else if(D.child!==null){D.child.return=D,D=D.child;continue}if(D===S)break;for(;D.sibling===null;){if(D.return===null||D.return===S)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}return null}function tg(S,D){return{responder:S,props:D}}var kA=u.ReactCurrentDispatcher,Os=u.ReactCurrentBatchConfig,Cu=0,qa=null,ji=null,ca=null,Iu=null,ms=null,Ec=null,Cc=0,G=null,Dt=0,Il=!1,Si=null,Ic=0;function lt(){throw Error(n(321))}function wu(S,D){if(D===null)return!1;for(var T=0;T<D.length&&T<S.length;T++)if(!ds(S[T],D[T]))return!1;return!0}function rg(S,D,T,q,W,ce){if(Cu=ce,qa=D,ca=S!==null?S.memoizedState:null,kA.current=ca===null?oI:Pm,D=T(q,W),Il){do Il=!1,Ic+=1,ca=S!==null?S.memoizedState:null,Ec=Iu,G=ms=ji=null,kA.current=Pm,D=T(q,W);while(Il);Si=null,Ic=0}if(kA.current=vu,S=qa,S.memoizedState=Iu,S.expirationTime=Cc,S.updateQueue=G,S.effectTag|=Dt,S=ji!==null&&ji.next!==null,Cu=0,Ec=ms=Iu=ca=ji=qa=null,Cc=0,G=null,Dt=0,S)throw Error(n(300));return D}function sI(){kA.current=vu,Cu=0,Ec=ms=Iu=ca=ji=qa=null,Cc=0,G=null,Dt=0,Il=!1,Si=null,Ic=0}function FA(){var S={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};return ms===null?Iu=ms=S:ms=ms.next=S,ms}function up(){if(Ec!==null)ms=Ec,Ec=ms.next,ji=ca,ca=ji!==null?ji.next:null;else{if(ca===null)throw Error(n(310));ji=ca;var S={memoizedState:ji.memoizedState,baseState:ji.baseState,queue:ji.queue,baseUpdate:ji.baseUpdate,next:null};ms=ms===null?Iu=S:ms.next=S,ca=ji.next}return ms}function yr(S,D){return typeof D=="function"?D(S):D}function ys(S){var D=up(),T=D.queue;if(T===null)throw Error(n(311));if(T.lastRenderedReducer=S,0<Ic){var q=T.dispatch;if(Si!==null){var W=Si.get(T);if(W!==void 0){Si.delete(T);var ce=D.memoizedState;do ce=S(ce,W.action),W=W.next;while(W!==null);return ds(ce,D.memoizedState)||(Mo=!0),D.memoizedState=ce,D.baseUpdate===T.last&&(D.baseState=ce),T.lastRenderedState=ce,[ce,q]}}return[D.memoizedState,q]}q=T.last;var Se=D.baseUpdate;if(ce=D.baseState,Se!==null?(q!==null&&(q.next=null),q=Se.next):q=q!==null?q.next:null,q!==null){var It=W=null,Et=q,xt=!1;do{var Nr=Et.expirationTime;Nr<Cu?(xt||(xt=!0,It=Se,W=ce),Nr>Cc&&(Cc=Nr,Mm(Cc))):(hI(Nr,Et.suspenseConfig),ce=Et.eagerReducer===S?Et.eagerState:S(ce,Et.action)),Se=Et,Et=Et.next}while(Et!==null&&Et!==q);xt||(It=Se,W=ce),ds(ce,D.memoizedState)||(Mo=!0),D.memoizedState=ce,D.baseUpdate=It,D.baseState=W,T.lastRenderedState=ce}return[D.memoizedState,T.dispatch]}function ng(S){var D=FA();return typeof S=="function"&&(S=S()),D.memoizedState=D.baseState=S,S=D.queue={last:null,dispatch:null,lastRenderedReducer:yr,lastRenderedState:S},S=S.dispatch=lg.bind(null,qa,S),[D.memoizedState,S]}function ig(S){return ys(yr,S)}function sg(S,D,T,q){return S={tag:S,create:D,destroy:T,deps:q,next:null},G===null?(G={lastEffect:null},G.lastEffect=S.next=S):(D=G.lastEffect,D===null?G.lastEffect=S.next=S:(T=D.next,D.next=S,S.next=T,G.lastEffect=S)),S}function Ap(S,D,T,q){var W=FA();Dt|=S,W.memoizedState=sg(D,T,void 0,q===void 0?null:q)}function wc(S,D,T,q){var W=up();q=q===void 0?null:q;var ce=void 0;if(ji!==null){var Se=ji.memoizedState;if(ce=Se.destroy,q!==null&&wu(q,Se.deps)){sg(0,T,ce,q);return}}Dt|=S,W.memoizedState=sg(D,T,ce,q)}function mt(S,D){return Ap(516,192,S,D)}function Dm(S,D){return wc(516,192,S,D)}function og(S,D){if(typeof D=="function")return S=S(),D(S),function(){D(null)};if(D!=null)return S=S(),D.current=S,function(){D.current=null}}function ag(){}function Bu(S,D){return FA().memoizedState=[S,D===void 0?null:D],S}function Sm(S,D){var T=up();D=D===void 0?null:D;var q=T.memoizedState;return q!==null&&D!==null&&wu(D,q[1])?q[0]:(T.memoizedState=[S,D],S)}function lg(S,D,T){if(!(25>Ic))throw Error(n(301));var q=S.alternate;if(S===qa||q!==null&&q===qa)if(Il=!0,S={expirationTime:Cu,suspenseConfig:null,action:T,eagerReducer:null,eagerState:null,next:null},Si===null&&(Si=new Map),T=Si.get(D),T===void 0)Si.set(D,S);else{for(D=T;D.next!==null;)D=D.next;D.next=S}else{var W=ha(),ce=xe.suspense;W=_A(W,S,ce),ce={expirationTime:W,suspenseConfig:ce,action:T,eagerReducer:null,eagerState:null,next:null};var Se=D.last;if(Se===null)ce.next=ce;else{var It=Se.next;It!==null&&(ce.next=It),Se.next=ce}if(D.last=ce,S.expirationTime===0&&(q===null||q.expirationTime===0)&&(q=D.lastRenderedReducer,q!==null))try{var Et=D.lastRenderedState,xt=q(Et,T);if(ce.eagerReducer=q,ce.eagerState=xt,ds(xt,Et))return}catch{}finally{}Pc(S,W)}}var vu={readContext:Ls,useCallback:lt,useContext:lt,useEffect:lt,useImperativeHandle:lt,useLayoutEffect:lt,useMemo:lt,useReducer:lt,useRef:lt,useState:lt,useDebugValue:lt,useResponder:lt,useDeferredValue:lt,useTransition:lt},oI={readContext:Ls,useCallback:Bu,useContext:Ls,useEffect:mt,useImperativeHandle:function(S,D,T){return T=T!=null?T.concat([S]):null,Ap(4,36,og.bind(null,D,S),T)},useLayoutEffect:function(S,D){return Ap(4,36,S,D)},useMemo:function(S,D){var T=FA();return D=D===void 0?null:D,S=S(),T.memoizedState=[S,D],S},useReducer:function(S,D,T){var q=FA();return D=T!==void 0?T(D):D,q.memoizedState=q.baseState=D,S=q.queue={last:null,dispatch:null,lastRenderedReducer:S,lastRenderedState:D},S=S.dispatch=lg.bind(null,qa,S),[q.memoizedState,S]},useRef:function(S){var D=FA();return S={current:S},D.memoizedState=S},useState:ng,useDebugValue:ag,useResponder:tg,useDeferredValue:function(S,D){var T=ng(S),q=T[0],W=T[1];return mt(function(){a.unstable_next(function(){var ce=Os.suspense;Os.suspense=D===void 0?null:D;try{W(S)}finally{Os.suspense=ce}})},[S,D]),q},useTransition:function(S){var D=ng(!1),T=D[0],q=D[1];return[Bu(function(W){q(!0),a.unstable_next(function(){var ce=Os.suspense;Os.suspense=S===void 0?null:S;try{q(!1),W()}finally{Os.suspense=ce}})},[S,T]),T]}},Pm={readContext:Ls,useCallback:Sm,useContext:Ls,useEffect:Dm,useImperativeHandle:function(S,D,T){return T=T!=null?T.concat([S]):null,wc(4,36,og.bind(null,D,S),T)},useLayoutEffect:function(S,D){return wc(4,36,S,D)},useMemo:function(S,D){var T=up();D=D===void 0?null:D;var q=T.memoizedState;return q!==null&&D!==null&&wu(D,q[1])?q[0]:(S=S(),T.memoizedState=[S,D],S)},useReducer:ys,useRef:function(){return up().memoizedState},useState:ig,useDebugValue:ag,useResponder:tg,useDeferredValue:function(S,D){var T=ig(S),q=T[0],W=T[1];return Dm(function(){a.unstable_next(function(){var ce=Os.suspense;Os.suspense=D===void 0?null:D;try{W(S)}finally{Os.suspense=ce}})},[S,D]),q},useTransition:function(S){var D=ig(!1),T=D[0],q=D[1];return[Sm(function(W){q(!0),a.unstable_next(function(){var ce=Os.suspense;Os.suspense=S===void 0?null:S;try{q(!1),W()}finally{Os.suspense=ce}})},[S,T]),T]}},ua=null,Bc=null,wl=!1;function Du(S,D){var T=Dl(5,null,null,0);T.elementType="DELETED",T.type="DELETED",T.stateNode=D,T.return=S,T.effectTag=8,S.lastEffect!==null?(S.lastEffect.nextEffect=T,S.lastEffect=T):S.firstEffect=S.lastEffect=T}function cg(S,D){switch(S.tag){case 5:return D=to(D,S.type,S.pendingProps),D!==null?(S.stateNode=D,!0):!1;case 6:return D=Di(D,S.pendingProps),D!==null?(S.stateNode=D,!0):!1;case 13:return!1;default:return!1}}function RA(S){if(wl){var D=Bc;if(D){var T=D;if(!cg(S,D)){if(D=uc(T),!D||!cg(S,D)){S.effectTag=S.effectTag&-1025|2,wl=!1,ua=S;return}Du(ua,T)}ua=S,Bc=hu(D)}else S.effectTag=S.effectTag&-1025|2,wl=!1,ua=S}}function fp(S){for(S=S.return;S!==null&&S.tag!==5&&S.tag!==3&&S.tag!==13;)S=S.return;ua=S}function ja(S){if(!y||S!==ua)return!1;if(!wl)return fp(S),wl=!0,!1;var D=S.type;if(S.tag!==5||D!=="head"&&D!=="body"&&!Te(D,S.memoizedProps))for(D=Bc;D;)Du(S,D),D=uc(D);if(fp(S),S.tag===13){if(!y)throw Error(n(316));if(S=S.memoizedState,S=S!==null?S.dehydrated:null,!S)throw Error(n(317));Bc=ks(S)}else Bc=ua?uc(S.stateNode):null;return!0}function ug(){y&&(Bc=ua=null,wl=!1)}var pp=u.ReactCurrentOwner,Mo=!1;function Es(S,D,T,q){D.child=S===null?aa(D,null,T,q):yi(D,S.child,T,q)}function Ei(S,D,T,q,W){T=T.render;var ce=D.ref;return Ns(D,W),q=rg(S,D,T,q,ce,W),S!==null&&!Mo?(D.updateQueue=S.updateQueue,D.effectTag&=-517,S.expirationTime<=W&&(S.expirationTime=0),ei(S,D,W)):(D.effectTag|=1,Es(S,D,q,W),D.child)}function xm(S,D,T,q,W,ce){if(S===null){var Se=T.type;return typeof Se=="function"&&!yI(Se)&&Se.defaultProps===void 0&&T.compare===null&&T.defaultProps===void 0?(D.tag=15,D.type=Se,bm(S,D,Se,q,W,ce)):(S=Um(T.type,null,q,null,D.mode,ce),S.ref=D.ref,S.return=D,D.child=S)}return Se=S.child,W<ce&&(W=Se.memoizedProps,T=T.compare,T=T!==null?T:Sn,T(W,q)&&S.ref===D.ref)?ei(S,D,ce):(D.effectTag|=1,S=GA(Se,q,ce),S.ref=D.ref,S.return=D,D.child=S)}function bm(S,D,T,q,W,ce){return S!==null&&Sn(S.memoizedProps,q)&&S.ref===D.ref&&(Mo=!1,W<ce)?ei(S,D,ce):TA(S,D,T,q,ce)}function Uo(S,D){var T=D.ref;(S===null&&T!==null||S!==null&&S.ref!==T)&&(D.effectTag|=128)}function TA(S,D,T,q,W){var ce=Zn(T)?Zt:Rn.current;return ce=Ri(D,ce),Ns(D,W),T=rg(S,D,T,q,ce,W),S!==null&&!Mo?(D.updateQueue=S.updateQueue,D.effectTag&=-517,S.expirationTime<=W&&(S.expirationTime=0),ei(S,D,W)):(D.effectTag|=1,Es(S,D,T,W),D.child)}function hp(S,D,T,q,W){if(Zn(T)){var ce=!0;fc(D)}else ce=!1;if(Ns(D,W),D.stateNode===null)S!==null&&(S.alternate=null,D.alternate=null,D.effectTag|=2),Tn(D,T,q,W),$n(D,T,q,W),q=!0;else if(S===null){var Se=D.stateNode,It=D.memoizedProps;Se.props=It;var Et=Se.context,xt=T.contextType;typeof xt=="object"&&xt!==null?xt=Ls(xt):(xt=Zn(T)?Zt:Rn.current,xt=Ri(D,xt));var Nr=T.getDerivedStateFromProps,is=typeof Nr=="function"||typeof Se.getSnapshotBeforeUpdate=="function";is||typeof Se.UNSAFE_componentWillReceiveProps!="function"&&typeof Se.componentWillReceiveProps!="function"||(It!==q||Et!==xt)&&_r(D,Se,q,xt),ao=!1;var fi=D.memoizedState;Et=Se.state=fi;var Ao=D.updateQueue;Ao!==null&&(we(D,Ao,q,Se,W),Et=D.memoizedState),It!==q||fi!==Et||Ui.current||ao?(typeof Nr=="function"&&(vt(D,T,Nr,q),Et=D.memoizedState),(It=ao||Zr(D,T,It,q,fi,Et,xt))?(is||typeof Se.UNSAFE_componentWillMount!="function"&&typeof Se.componentWillMount!="function"||(typeof Se.componentWillMount=="function"&&Se.componentWillMount(),typeof Se.UNSAFE_componentWillMount=="function"&&Se.UNSAFE_componentWillMount()),typeof Se.componentDidMount=="function"&&(D.effectTag|=4)):(typeof Se.componentDidMount=="function"&&(D.effectTag|=4),D.memoizedProps=q,D.memoizedState=Et),Se.props=q,Se.state=Et,Se.context=xt,q=It):(typeof Se.componentDidMount=="function"&&(D.effectTag|=4),q=!1)}else Se=D.stateNode,It=D.memoizedProps,Se.props=D.type===D.elementType?It:di(D.type,It),Et=Se.context,xt=T.contextType,typeof xt=="object"&&xt!==null?xt=Ls(xt):(xt=Zn(T)?Zt:Rn.current,xt=Ri(D,xt)),Nr=T.getDerivedStateFromProps,(is=typeof Nr=="function"||typeof Se.getSnapshotBeforeUpdate=="function")||typeof Se.UNSAFE_componentWillReceiveProps!="function"&&typeof Se.componentWillReceiveProps!="function"||(It!==q||Et!==xt)&&_r(D,Se,q,xt),ao=!1,Et=D.memoizedState,fi=Se.state=Et,Ao=D.updateQueue,Ao!==null&&(we(D,Ao,q,Se,W),fi=D.memoizedState),It!==q||Et!==fi||Ui.current||ao?(typeof Nr=="function"&&(vt(D,T,Nr,q),fi=D.memoizedState),(Nr=ao||Zr(D,T,It,q,Et,fi,xt))?(is||typeof Se.UNSAFE_componentWillUpdate!="function"&&typeof Se.componentWillUpdate!="function"||(typeof Se.componentWillUpdate=="function"&&Se.componentWillUpdate(q,fi,xt),typeof Se.UNSAFE_componentWillUpdate=="function"&&Se.UNSAFE_componentWillUpdate(q,fi,xt)),typeof Se.componentDidUpdate=="function"&&(D.effectTag|=4),typeof Se.getSnapshotBeforeUpdate=="function"&&(D.effectTag|=256)):(typeof Se.componentDidUpdate!="function"||It===S.memoizedProps&&Et===S.memoizedState||(D.effectTag|=4),typeof Se.getSnapshotBeforeUpdate!="function"||It===S.memoizedProps&&Et===S.memoizedState||(D.effectTag|=256),D.memoizedProps=q,D.memoizedState=fi),Se.props=q,Se.state=fi,Se.context=xt,q=Nr):(typeof Se.componentDidUpdate!="function"||It===S.memoizedProps&&Et===S.memoizedState||(D.effectTag|=4),typeof Se.getSnapshotBeforeUpdate!="function"||It===S.memoizedProps&&Et===S.memoizedState||(D.effectTag|=256),q=!1);return gp(S,D,T,q,ce,W)}function gp(S,D,T,q,W,ce){Uo(S,D);var Se=(D.effectTag&64)!==0;if(!q&&!Se)return W&&yl(D,T,!1),ei(S,D,ce);q=D.stateNode,pp.current=D;var It=Se&&typeof T.getDerivedStateFromError!="function"?null:q.render();return D.effectTag|=1,S!==null&&Se?(D.child=yi(D,S.child,null,ce),D.child=yi(D,null,It,ce)):Es(S,D,It,ce),D.memoizedState=q.state,W&&yl(D,T,!0),D.child}function Ag(S){var D=S.stateNode;D.pendingContext?Ac(S,D.pendingContext,D.pendingContext!==D.context):D.context&&Ac(S,D.context,!1),$h(S,D.containerInfo)}var Aa={dehydrated:null,retryTime:0};function rn(S,D,T){var q=D.mode,W=D.pendingProps,ce=Kn.current,Se=!1,It;if((It=(D.effectTag&64)!==0)||(It=(ce&2)!==0&&(S===null||S.memoizedState!==null)),It?(Se=!0,D.effectTag&=-65):S!==null&&S.memoizedState===null||W.fallback===void 0||W.unstable_avoidThisFallback===!0||(ce|=1),Fn(Kn,ce&1,D),S===null){if(W.fallback!==void 0&&RA(D),Se){if(Se=W.fallback,W=ku(null,q,0,null),W.return=D,(D.mode&2)===0)for(S=D.memoizedState!==null?D.child.child:D.child,W.child=S;S!==null;)S.return=W,S=S.sibling;return T=ku(Se,q,T,null),T.return=D,W.sibling=T,D.memoizedState=Aa,D.child=W,T}return q=W.children,D.memoizedState=null,D.child=aa(D,null,q,T)}if(S.memoizedState!==null){if(S=S.child,q=S.sibling,Se){if(W=W.fallback,T=GA(S,S.pendingProps,0),T.return=D,(D.mode&2)===0&&(Se=D.memoizedState!==null?D.child.child:D.child,Se!==S.child))for(T.child=Se;Se!==null;)Se.return=T,Se=Se.sibling;return q=GA(q,W,q.expirationTime),q.return=D,T.sibling=q,T.childExpirationTime=0,D.memoizedState=Aa,D.child=T,q}return T=yi(D,S.child,W.children,T),D.memoizedState=null,D.child=T}if(S=S.child,Se){if(Se=W.fallback,W=ku(null,q,0,null),W.return=D,W.child=S,S!==null&&(S.return=W),(D.mode&2)===0)for(S=D.memoizedState!==null?D.child.child:D.child,W.child=S;S!==null;)S.return=W,S=S.sibling;return T=ku(Se,q,T,null),T.return=D,W.sibling=T,T.effectTag|=2,W.childExpirationTime=0,D.memoizedState=Aa,D.child=W,T}return D.memoizedState=null,D.child=yi(D,S,W.children,T)}function co(S,D){S.expirationTime<D&&(S.expirationTime=D);var T=S.alternate;T!==null&&T.expirationTime<D&&(T.expirationTime=D),Ts(S.return,D)}function NA(S,D,T,q,W,ce){var Se=S.memoizedState;Se===null?S.memoizedState={isBackwards:D,rendering:null,last:q,tail:T,tailExpiration:0,tailMode:W,lastEffect:ce}:(Se.isBackwards=D,Se.rendering=null,Se.last=q,Se.tail=T,Se.tailExpiration=0,Se.tailMode=W,Se.lastEffect=ce)}function Ga(S,D,T){var q=D.pendingProps,W=q.revealOrder,ce=q.tail;if(Es(S,D,q.children,T),q=Kn.current,(q&2)!==0)q=q&1|2,D.effectTag|=64;else{if(S!==null&&(S.effectTag&64)!==0)e:for(S=D.child;S!==null;){if(S.tag===13)S.memoizedState!==null&&co(S,T);else if(S.tag===19)co(S,T);else if(S.child!==null){S.child.return=S,S=S.child;continue}if(S===D)break e;for(;S.sibling===null;){if(S.return===null||S.return===D)break e;S=S.return}S.sibling.return=S.return,S=S.sibling}q&=1}if(Fn(Kn,q,D),(D.mode&2)===0)D.memoizedState=null;else switch(W){case"forwards":for(T=D.child,W=null;T!==null;)S=T.alternate,S!==null&&cp(S)===null&&(W=T),T=T.sibling;T=W,T===null?(W=D.child,D.child=null):(W=T.sibling,T.sibling=null),NA(D,!1,W,T,ce,D.lastEffect);break;case"backwards":for(T=null,W=D.child,D.child=null;W!==null;){if(S=W.alternate,S!==null&&cp(S)===null){D.child=W;break}S=W.sibling,W.sibling=T,T=W,W=S}NA(D,!0,T,null,ce,D.lastEffect);break;case"together":NA(D,!1,null,null,void 0,D.lastEffect);break;default:D.memoizedState=null}return D.child}function ei(S,D,T){S!==null&&(D.dependencies=S.dependencies);var q=D.expirationTime;if(q!==0&&Mm(q),D.childExpirationTime<T)return null;if(S!==null&&D.child!==S.child)throw Error(n(153));if(D.child!==null){for(S=D.child,T=GA(S,S.pendingProps,S.expirationTime),D.child=T,T.return=D;S.sibling!==null;)S=S.sibling,T=T.sibling=GA(S,S.pendingProps,S.expirationTime),T.return=D;T.sibling=null}return D.child}function fa(S){S.effectTag|=4}var vc,Bl,ts,Hr;if(I)vc=function(S,D){for(var T=D.child;T!==null;){if(T.tag===5||T.tag===6)H(S,T.stateNode);else if(T.tag!==4&&T.child!==null){T.child.return=T,T=T.child;continue}if(T===D)break;for(;T.sibling===null;){if(T.return===null||T.return===D)return;T=T.return}T.sibling.return=T.return,T=T.sibling}},Bl=function(){},ts=function(S,D,T,q,W){if(S=S.memoizedProps,S!==q){var ce=D.stateNode,Se=la(lo.current);T=Me(ce,T,S,q,W,Se),(D.updateQueue=T)&&fa(D)}},Hr=function(S,D,T,q){T!==q&&fa(D)};else if(P){vc=function(S,D,T,q){for(var W=D.child;W!==null;){if(W.tag===5){var ce=W.stateNode;T&&q&&(ce=ki(ce,W.type,W.memoizedProps,W)),H(S,ce)}else if(W.tag===6)ce=W.stateNode,T&&q&&(ce=gs(ce,W.memoizedProps,W)),H(S,ce);else if(W.tag!==4){if(W.tag===13&&(W.effectTag&4)!==0&&(ce=W.memoizedState!==null)){var Se=W.child;if(Se!==null&&(Se.child!==null&&(Se.child.return=Se,vc(S,Se,!0,ce)),ce=Se.sibling,ce!==null)){ce.return=W,W=ce;continue}}if(W.child!==null){W.child.return=W,W=W.child;continue}}if(W===D)break;for(;W.sibling===null;){if(W.return===null||W.return===D)return;W=W.return}W.sibling.return=W.return,W=W.sibling}};var dp=function(S,D,T,q){for(var W=D.child;W!==null;){if(W.tag===5){var ce=W.stateNode;T&&q&&(ce=ki(ce,W.type,W.memoizedProps,W)),jr(S,ce)}else if(W.tag===6)ce=W.stateNode,T&&q&&(ce=gs(ce,W.memoizedProps,W)),jr(S,ce);else if(W.tag!==4){if(W.tag===13&&(W.effectTag&4)!==0&&(ce=W.memoizedState!==null)){var Se=W.child;if(Se!==null&&(Se.child!==null&&(Se.child.return=Se,dp(S,Se,!0,ce)),ce=Se.sibling,ce!==null)){ce.return=W,W=ce;continue}}if(W.child!==null){W.child.return=W,W=W.child;continue}}if(W===D)break;for(;W.sibling===null;){if(W.return===null||W.return===D)return;W=W.return}W.sibling.return=W.return,W=W.sibling}};Bl=function(S){var D=S.stateNode;if(S.firstEffect!==null){var T=D.containerInfo,q=Br(T);dp(q,S,!1,!1),D.pendingChildren=q,fa(S),Hn(T,q)}},ts=function(S,D,T,q,W){var ce=S.stateNode,Se=S.memoizedProps;if((S=D.firstEffect===null)&&Se===q)D.stateNode=ce;else{var It=D.stateNode,Et=la(lo.current),xt=null;Se!==q&&(xt=Me(It,T,Se,q,W,Et)),S&&xt===null?D.stateNode=ce:(ce=fr(ce,xt,T,Se,q,D,S,It),yt(ce,T,q,W,Et)&&fa(D),D.stateNode=ce,S?fa(D):vc(ce,D,!1,!1))}},Hr=function(S,D,T,q){T!==q&&(S=la(mc.current),T=la(lo.current),D.stateNode=Ue(q,S,T,D),fa(D))}}else Bl=function(){},ts=function(){},Hr=function(){};function Dc(S,D){switch(S.tailMode){case"hidden":D=S.tail;for(var T=null;D!==null;)D.alternate!==null&&(T=D),D=D.sibling;T===null?S.tail=null:T.sibling=null;break;case"collapsed":T=S.tail;for(var q=null;T!==null;)T.alternate!==null&&(q=T),T=T.sibling;q===null?D||S.tail===null?S.tail=null:S.tail.sibling=null:q.sibling=null}}function aI(S){switch(S.tag){case 1:Zn(S.type)&&La(S);var D=S.effectTag;return D&4096?(S.effectTag=D&-4097|64,S):null;case 3:if(yc(S),$t(S),D=S.effectTag,(D&64)!==0)throw Error(n(285));return S.effectTag=D&-4097|64,S;case 5:return eg(S),null;case 13:return _e(Kn,S),D=S.effectTag,D&4096?(S.effectTag=D&-4097|64,S):null;case 19:return _e(Kn,S),null;case 4:return yc(S),null;case 10:return Zi(S),null;default:return null}}function fg(S,D){return{value:S,source:D,stack:dl(D)}}var pg=typeof WeakSet=="function"?WeakSet:Set;function Wa(S,D){var T=D.source,q=D.stack;q===null&&T!==null&&(q=dl(T)),T!==null&&ge(T.type),D=D.value,S!==null&&S.tag===1&&ge(S.type);try{console.error(D)}catch(W){setTimeout(function(){throw W})}}function Qm(S,D){try{D.props=S.memoizedProps,D.state=S.memoizedState,D.componentWillUnmount()}catch(T){jA(S,T)}}function hg(S){var D=S.ref;if(D!==null)if(typeof D=="function")try{D(null)}catch(T){jA(S,T)}else D.current=null}function kt(S,D){switch(D.tag){case 0:case 11:case 15:N(2,0,D);break;case 1:if(D.effectTag&256&&S!==null){var T=S.memoizedProps,q=S.memoizedState;S=D.stateNode,D=S.getSnapshotBeforeUpdate(D.elementType===D.type?T:di(D.type,T),q),S.__reactInternalSnapshotBeforeUpdate=D}break;case 3:case 5:case 6:case 4:case 17:break;default:throw Error(n(163))}}function N(S,D,T){if(T=T.updateQueue,T=T!==null?T.lastEffect:null,T!==null){var q=T=T.next;do{if((q.tag&S)!==0){var W=q.destroy;q.destroy=void 0,W!==void 0&&W()}(q.tag&D)!==0&&(W=q.create,q.destroy=W()),q=q.next}while(q!==T)}}function K(S,D,T){switch(typeof mI=="function"&&mI(D),D.tag){case 0:case 11:case 14:case 15:if(S=D.updateQueue,S!==null&&(S=S.lastEffect,S!==null)){var q=S.next;so(97<T?97:T,function(){var W=q;do{var ce=W.destroy;if(ce!==void 0){var Se=D;try{ce()}catch(It){jA(Se,It)}}W=W.next}while(W!==q)})}break;case 1:hg(D),T=D.stateNode,typeof T.componentWillUnmount=="function"&&Qm(D,T);break;case 5:hg(D);break;case 4:I?gr(S,D,T):P&&ze(D)}}function te(S,D,T){for(var q=D;;)if(K(S,q,T),q.child===null||I&&q.tag===4){if(q===D)break;for(;q.sibling===null;){if(q.return===null||q.return===D)return;q=q.return}q.sibling.return=q.return,q=q.sibling}else q.child.return=q,q=q.child}function ue(S){var D=S.alternate;S.return=null,S.child=null,S.memoizedState=null,S.updateQueue=null,S.dependencies=null,S.alternate=null,S.firstEffect=null,S.lastEffect=null,S.pendingProps=null,S.memoizedProps=null,D!==null&&ue(D)}function ze(S){if(P){S=S.stateNode.containerInfo;var D=Br(S);bs(S,D)}}function gt(S){return S.tag===5||S.tag===3||S.tag===4}function ur(S){if(I){e:{for(var D=S.return;D!==null;){if(gt(D)){var T=D;break e}D=D.return}throw Error(n(160))}switch(D=T.stateNode,T.tag){case 5:var q=!1;break;case 3:D=D.containerInfo,q=!0;break;case 4:D=D.containerInfo,q=!0;break;default:throw Error(n(161))}T.effectTag&16&&(Ut(D),T.effectTag&=-17);e:t:for(T=S;;){for(;T.sibling===null;){if(T.return===null||gt(T.return)){T=null;break e}T=T.return}for(T.sibling.return=T.return,T=T.sibling;T.tag!==5&&T.tag!==6&&T.tag!==18;){if(T.effectTag&2||T.child===null||T.tag===4)continue t;T.child.return=T,T=T.child}if(!(T.effectTag&2)){T=T.stateNode;break e}}for(var W=S;;){var ce=W.tag===5||W.tag===6;if(ce)ce=ce?W.stateNode:W.stateNode.instance,T?q?Ne(D,ce,T):ke(D,ce,T):q?z(D,ce):F(D,ce);else if(W.tag!==4&&W.child!==null){W.child.return=W,W=W.child;continue}if(W===S)break;for(;W.sibling===null;){if(W.return===null||W.return===S)return;W=W.return}W.sibling.return=W.return,W=W.sibling}}}function gr(S,D,T){for(var q=D,W=!1,ce,Se;;){if(!W){W=q.return;e:for(;;){if(W===null)throw Error(n(160));switch(ce=W.stateNode,W.tag){case 5:Se=!1;break e;case 3:ce=ce.containerInfo,Se=!0;break e;case 4:ce=ce.containerInfo,Se=!0;break e}W=W.return}W=!0}if(q.tag===5||q.tag===6)te(S,q,T),Se?ht(ce,q.stateNode):st(ce,q.stateNode);else if(q.tag===4){if(q.child!==null){ce=q.stateNode.containerInfo,Se=!0,q.child.return=q,q=q.child;continue}}else if(K(S,q,T),q.child!==null){q.child.return=q,q=q.child;continue}if(q===D)break;for(;q.sibling===null;){if(q.return===null||q.return===D)return;q=q.return,q.tag===4&&(W=!1)}q.sibling.return=q.return,q=q.sibling}}function hn(S,D){if(I)switch(D.tag){case 0:case 11:case 14:case 15:N(4,8,D);break;case 1:break;case 5:var T=D.stateNode;if(T!=null){var q=D.memoizedProps;S=S!==null?S.memoizedProps:q;var W=D.type,ce=D.updateQueue;D.updateQueue=null,ce!==null&&ie(T,ce,W,S,q,D)}break;case 6:if(D.stateNode===null)throw Error(n(162));T=D.memoizedProps,X(D.stateNode,S!==null?S.memoizedProps:T,T);break;case 3:y&&(D=D.stateNode,D.hydrate&&(D.hydrate=!1,Cn(D.containerInfo)));break;case 12:break;case 13:ti(D),Ni(D);break;case 19:Ni(D);break;case 17:break;case 20:break;case 21:break;default:throw Error(n(163))}else{switch(D.tag){case 0:case 11:case 14:case 15:N(4,8,D);return;case 12:return;case 13:ti(D),Ni(D);return;case 19:Ni(D);return;case 3:y&&(T=D.stateNode,T.hydrate&&(T.hydrate=!1,Cn(T.containerInfo)))}e:if(P)switch(D.tag){case 1:case 5:case 6:case 20:break e;case 3:case 4:D=D.stateNode,bs(D.containerInfo,D.pendingChildren);break e;default:throw Error(n(163))}}}function ti(S){var D=S;if(S.memoizedState===null)var T=!1;else T=!0,D=S.child,uI=Hi();if(I&&D!==null){e:if(S=D,I)for(D=S;;){if(D.tag===5){var q=D.stateNode;T?Xt(q):tn(D.stateNode,D.memoizedProps)}else if(D.tag===6)q=D.stateNode,T?Pt(q):Dr(q,D.memoizedProps);else if(D.tag===13&&D.memoizedState!==null&&D.memoizedState.dehydrated===null){q=D.child.sibling,q.return=D,D=q;continue}else if(D.child!==null){D.child.return=D,D=D.child;continue}if(D===S)break e;for(;D.sibling===null;){if(D.return===null||D.return===S)break e;D=D.return}D.sibling.return=D.return,D=D.sibling}}}function Ni(S){var D=S.updateQueue;if(D!==null){S.updateQueue=null;var T=S.stateNode;T===null&&(T=S.stateNode=new pg),D.forEach(function(q){var W=uF.bind(null,S,q);T.has(q)||(T.add(q),q.then(W,W))})}}var gg=typeof WeakMap=="function"?WeakMap:Map;function Bv(S,D,T){T=$i(T,null),T.tag=3,T.payload={element:null};var q=D.value;return T.callback=function(){Pu||(Pu=!0,Nm=q),Wa(S,D)},T}function vv(S,D,T){T=$i(T,null),T.tag=3;var q=S.type.getDerivedStateFromError;if(typeof q=="function"){var W=D.value;T.payload=function(){return Wa(S,D),q(W)}}var ce=S.stateNode;return ce!==null&&typeof ce.componentDidCatch=="function"&&(T.callback=function(){typeof q!="function"&&(xu===null?xu=new Set([this]):xu.add(this),Wa(S,D));var Se=D.stack;this.componentDidCatch(D.value,{componentStack:Se!==null?Se:""})}),T}var lI=Math.ceil,mp=u.ReactCurrentDispatcher,cI=u.ReactCurrentOwner,gn=0,km=8,rs=16,Ms=32,Su=0,Fm=1,Ci=2,pa=3,vl=4,Sc=5,pr=gn,Ai=null,Fr=null,ns=0,Gi=Su,Rm=null,Ya=1073741823,LA=1073741823,Tm=null,yp=0,OA=!1,uI=0,AI=500,nr=null,Pu=!1,Nm=null,xu=null,Ep=!1,dg=null,MA=90,UA=null,mg=0,fI=null,Lm=0;function ha(){return(pr&(rs|Ms))!==gn?1073741821-(Hi()/10|0):Lm!==0?Lm:Lm=1073741821-(Hi()/10|0)}function _A(S,D,T){if(D=D.mode,(D&2)===0)return 1073741823;var q=Lo();if((D&4)===0)return q===99?1073741823:1073741822;if((pr&rs)!==gn)return ns;if(T!==null)S=Oa(S,T.timeoutMs|0||5e3,250);else switch(q){case 99:S=1073741823;break;case 98:S=Oa(S,150,100);break;case 97:case 96:S=Oa(S,5e3,250);break;case 95:S=2;break;default:throw Error(n(326))}return Ai!==null&&S===ns&&--S,S}function Pc(S,D){if(50<mg)throw mg=0,fI=null,Error(n(185));if(S=yg(S,D),S!==null){var T=Lo();D===1073741823?(pr&km)!==gn&&(pr&(rs|Ms))===gn?pI(S):(uo(S),pr===gn&&qi()):uo(S),(pr&4)===gn||T!==98&&T!==99||(UA===null?UA=new Map([[S,D]]):(T=UA.get(S),(T===void 0||T>D)&&UA.set(S,D)))}}function yg(S,D){S.expirationTime<D&&(S.expirationTime=D);var T=S.alternate;T!==null&&T.expirationTime<D&&(T.expirationTime=D);var q=S.return,W=null;if(q===null&&S.tag===3)W=S.stateNode;else for(;q!==null;){if(T=q.alternate,q.childExpirationTime<D&&(q.childExpirationTime=D),T!==null&&T.childExpirationTime<D&&(T.childExpirationTime=D),q.return===null&&q.tag===3){W=q.stateNode;break}q=q.return}return W!==null&&(Ai===W&&(Mm(D),Gi===vl&&WA(W,ns)),Rv(W,D)),W}function Om(S){var D=S.lastExpiredTime;return D!==0||(D=S.firstPendingTime,!Fv(S,D))?D:(D=S.lastPingedTime,S=S.nextKnownPendingLevel,D>S?D:S)}function uo(S){if(S.lastExpiredTime!==0)S.callbackExpirationTime=1073741823,S.callbackPriority=99,S.callbackNode=yu(pI.bind(null,S));else{var D=Om(S),T=S.callbackNode;if(D===0)T!==null&&(S.callbackNode=null,S.callbackExpirationTime=0,S.callbackPriority=90);else{var q=ha();if(D===1073741823?q=99:D===1||D===2?q=95:(q=10*(1073741821-D)-10*(1073741821-q),q=0>=q?99:250>=q?98:5250>=q?97:95),T!==null){var W=S.callbackPriority;if(S.callbackExpirationTime===D&&W>=q)return;T!==PA&&Ce(T)}S.callbackExpirationTime=D,S.callbackPriority=q,D=D===1073741823?yu(pI.bind(null,S)):Cl(q,Dv.bind(null,S),{timeout:10*(1073741821-D)-Hi()}),S.callbackNode=D}}}function Dv(S,D){if(Lm=0,D)return D=ha(),_m(S,D),uo(S),null;var T=Om(S);if(T!==0){if(D=S.callbackNode,(pr&(rs|Ms))!==gn)throw Error(n(327));if(Cp(),S===Ai&&T===ns||bu(S,T),Fr!==null){var q=pr;pr|=rs;var W=qA(S);do try{sF();break}catch(It){HA(S,It)}while(1);if(ia(),pr=q,mp.current=W,Gi===Fm)throw D=Rm,bu(S,T),WA(S,T),uo(S),D;if(Fr===null)switch(W=S.finishedWork=S.current.alternate,S.finishedExpirationTime=T,q=Gi,Ai=null,q){case Su:case Fm:throw Error(n(345));case Ci:_m(S,2<T?2:T);break;case pa:if(WA(S,T),q=S.lastSuspendedTime,T===q&&(S.nextKnownPendingLevel=gI(W)),Ya===1073741823&&(W=uI+AI-Hi(),10<W)){if(OA){var ce=S.lastPingedTime;if(ce===0||ce>=T){S.lastPingedTime=T,bu(S,T);break}}if(ce=Om(S),ce!==0&&ce!==T)break;if(q!==0&&q!==T){S.lastPingedTime=q;break}S.timeoutHandle=je(Qu.bind(null,S),W);break}Qu(S);break;case vl:if(WA(S,T),q=S.lastSuspendedTime,T===q&&(S.nextKnownPendingLevel=gI(W)),OA&&(W=S.lastPingedTime,W===0||W>=T)){S.lastPingedTime=T,bu(S,T);break}if(W=Om(S),W!==0&&W!==T)break;if(q!==0&&q!==T){S.lastPingedTime=q;break}if(LA!==1073741823?q=10*(1073741821-LA)-Hi():Ya===1073741823?q=0:(q=10*(1073741821-Ya)-5e3,W=Hi(),T=10*(1073741821-T)-W,q=W-q,0>q&&(q=0),q=(120>q?120:480>q?480:1080>q?1080:1920>q?1920:3e3>q?3e3:4320>q?4320:1960*lI(q/1960))-q,T<q&&(q=T)),10<q){S.timeoutHandle=je(Qu.bind(null,S),q);break}Qu(S);break;case Sc:if(Ya!==1073741823&&Tm!==null){ce=Ya;var Se=Tm;if(q=Se.busyMinDurationMs|0,0>=q?q=0:(W=Se.busyDelayMs|0,ce=Hi()-(10*(1073741821-ce)-(Se.timeoutMs|0||5e3)),q=ce<=W?0:W+q-ce),10<q){WA(S,T),S.timeoutHandle=je(Qu.bind(null,S),q);break}}Qu(S);break;default:throw Error(n(329))}if(uo(S),S.callbackNode===D)return Dv.bind(null,S)}}return null}function pI(S){var D=S.lastExpiredTime;if(D=D!==0?D:1073741823,S.finishedExpirationTime===D)Qu(S);else{if((pr&(rs|Ms))!==gn)throw Error(n(327));if(Cp(),S===Ai&&D===ns||bu(S,D),Fr!==null){var T=pr;pr|=rs;var q=qA(S);do try{iF();break}catch(W){HA(S,W)}while(1);if(ia(),pr=T,mp.current=q,Gi===Fm)throw T=Rm,bu(S,D),WA(S,D),uo(S),T;if(Fr!==null)throw Error(n(261));S.finishedWork=S.current.alternate,S.finishedExpirationTime=D,Ai=null,Qu(S),uo(S)}}return null}function Sv(S,D){_m(S,D),uo(S),(pr&(rs|Ms))===gn&&qi()}function nF(){if(UA!==null){var S=UA;UA=null,S.forEach(function(D,T){_m(T,D),uo(T)}),qi()}}function Pv(S,D){if((pr&(rs|Ms))!==gn)throw Error(n(187));var T=pr;pr|=1;try{return so(99,S.bind(null,D))}finally{pr=T,qi()}}function bu(S,D){S.finishedWork=null,S.finishedExpirationTime=0;var T=S.timeoutHandle;if(T!==Le&&(S.timeoutHandle=Le,At(T)),Fr!==null)for(T=Fr.return;T!==null;){var q=T;switch(q.tag){case 1:var W=q.type.childContextTypes;W!=null&&La(q);break;case 3:yc(q),$t(q);break;case 5:eg(q);break;case 4:yc(q);break;case 13:_e(Kn,q);break;case 19:_e(Kn,q);break;case 10:Zi(q)}T=T.return}Ai=S,Fr=GA(S.current,null,D),ns=D,Gi=Su,Rm=null,LA=Ya=1073741823,Tm=null,yp=0,OA=!1}function HA(S,D){do{try{if(ia(),sI(),Fr===null||Fr.return===null)return Gi=Fm,Rm=D,null;e:{var T=S,q=Fr.return,W=Fr,ce=D;if(D=ns,W.effectTag|=2048,W.firstEffect=W.lastEffect=null,ce!==null&&typeof ce=="object"&&typeof ce.then=="function"){var Se=ce,It=(Kn.current&1)!==0,Et=q;do{var xt;if(xt=Et.tag===13){var Nr=Et.memoizedState;if(Nr!==null)xt=Nr.dehydrated!==null;else{var is=Et.memoizedProps;xt=is.fallback===void 0?!1:is.unstable_avoidThisFallback!==!0?!0:!It}}if(xt){var fi=Et.updateQueue;if(fi===null){var Ao=new Set;Ao.add(Se),Et.updateQueue=Ao}else fi.add(Se);if((Et.mode&2)===0){if(Et.effectTag|=64,W.effectTag&=-2981,W.tag===1)if(W.alternate===null)W.tag=17;else{var YA=$i(1073741823,null);YA.tag=2,mi(W,YA)}W.expirationTime=1073741823;break e}ce=void 0,W=D;var _o=T.pingCache;if(_o===null?(_o=T.pingCache=new gg,ce=new Set,_o.set(Se,ce)):(ce=_o.get(Se),ce===void 0&&(ce=new Set,_o.set(Se,ce))),!ce.has(W)){ce.add(W);var rt=cF.bind(null,T,Se,W);Se.then(rt,rt)}Et.effectTag|=4096,Et.expirationTime=D;break e}Et=Et.return}while(Et!==null);ce=Error((ge(W.type)||"A React component")+` suspended while rendering, but no fallback UI was specified. | 282 | in `+(q||"Unknown")+ce}D+=T,S=S.return}while(S);return D}var Il=[],io=-1;function Ue(S){0>io||(S.current=Il[io],Il[io]=null,io--)}function Fn(S,D){io++,Il[io]=S.current,S.current=D}var Fi={},Rn={current:Fi},Ui={current:!1},Zt=Fi;function Ri(S,D){var T=S.type.contextTypes;if(!T)return Fi;var q=S.stateNode;if(q&&q.__reactInternalMemoizedUnmaskedChildContext===D)return q.__reactInternalMemoizedMaskedChildContext;var W={},ce;for(ce in T)W[ce]=D[ce];return q&&(S=S.stateNode,S.__reactInternalMemoizedUnmaskedChildContext=D,S.__reactInternalMemoizedMaskedChildContext=W),W}function $n(S){return S=S.childContextTypes,S!=null}function Ua(S){Ue(Ui,S),Ue(Rn,S)}function $t(S){Ue(Ui,S),Ue(Rn,S)}function gc(S,D,T){if(Rn.current!==Fi)throw Error(n(168));Fn(Rn,D,S),Fn(Ui,T,S)}function du(S,D,T){var q=S.stateNode;if(S=D.childContextTypes,typeof q.getChildContext!="function")return T;q=q.getChildContext();for(var W in q)if(!(W in S))throw Error(n(108,ge(D)||"Unknown",W));return r({},T,{},q)}function dc(S){var D=S.stateNode;return D=D&&D.__reactInternalMemoizedMergedChildContext||Fi,Zt=Rn.current,Fn(Rn,D,S),Fn(Ui,Ui.current,S),!0}function wl(S,D,T){var q=S.stateNode;if(!q)throw Error(n(169));T?(D=du(S,D,Zt),q.__reactInternalMemoizedMergedChildContext=D,Ue(Ui,S),Ue(Rn,S),Fn(Rn,D,S)):Ue(Ui,S),Fn(Ui,T,S)}var xA=a.unstable_runWithPriority,mu=a.unstable_scheduleCallback,Ce=a.unstable_cancelCallback,Rt=a.unstable_shouldYield,mc=a.unstable_requestPaint,_i=a.unstable_now,yu=a.unstable_getCurrentPriorityLevel,qt=a.unstable_ImmediatePriority,Bl=a.unstable_UserBlockingPriority,bA=a.unstable_NormalPriority,Ap=a.unstable_LowPriority,yc=a.unstable_IdlePriority,QA={},Dn=mc!==void 0?mc:function(){},ui=null,Ec=null,kA=!1,na=_i(),Hi=1e4>na?_i:function(){return _i()-na};function Mo(){switch(yu()){case qt:return 99;case Bl:return 98;case bA:return 97;case Ap:return 96;case yc:return 95;default:throw Error(n(332))}}function $e(S){switch(S){case 99:return qt;case 98:return Bl;case 97:return bA;case 96:return Ap;case 95:return yc;default:throw Error(n(332))}}function so(S,D){return S=$e(S),xA(S,D)}function vl(S,D,T){return S=$e(S),mu(S,D,T)}function Eu(S){return ui===null?(ui=[S],Ec=mu(qt,Cu)):ui.push(S),QA}function qi(){if(Ec!==null){var S=Ec;Ec=null,Ce(S)}Cu()}function Cu(){if(!kA&&ui!==null){kA=!0;var S=0;try{var D=ui;so(99,function(){for(;S<D.length;S++){var T=D[S];do T=T(!0);while(T!==null)}}),ui=null}catch(T){throw ui!==null&&(ui=ui.slice(S+1)),mu(qt,qi),T}finally{kA=!1}}}var FA=3;function Ha(S,D,T){return T/=10,1073741821-(((1073741821-S+D/10)/T|0)+1)*T}function Cc(S,D){return S===D&&(S!==0||1/S===1/D)||S!==S&&D!==D}var ds=typeof Object.is=="function"?Object.is:Cc,Ot=Object.prototype.hasOwnProperty;function Sn(S,D){if(ds(S,D))return!0;if(typeof S!="object"||S===null||typeof D!="object"||D===null)return!1;var T=Object.keys(S),q=Object.keys(D);if(T.length!==q.length)return!1;for(q=0;q<T.length;q++)if(!Ot.call(D,T[q])||!ds(S[T[q]],D[T[q]]))return!1;return!0}function di(S,D){if(S&&S.defaultProps){D=r({},D),S=S.defaultProps;for(var T in S)D[T]===void 0&&(D[T]=S[T])}return D}var ia={current:null},oo=null,Rs=null,sa=null;function oa(){sa=Rs=oo=null}function Uo(S,D){var T=S.type._context;x?(Fn(ia,T._currentValue,S),T._currentValue=D):(Fn(ia,T._currentValue2,S),T._currentValue2=D)}function Zi(S){var D=ia.current;Ue(ia,S),S=S.type._context,x?S._currentValue=D:S._currentValue2=D}function Ts(S,D){for(;S!==null;){var T=S.alternate;if(S.childExpirationTime<D)S.childExpirationTime=D,T!==null&&T.childExpirationTime<D&&(T.childExpirationTime=D);else if(T!==null&&T.childExpirationTime<D)T.childExpirationTime=D;else break;S=S.return}}function Ns(S,D){oo=S,sa=Rs=null,S=S.dependencies,S!==null&&S.firstContext!==null&&(S.expirationTime>=D&&(_o=!0),S.firstContext=null)}function Ls(S,D){if(sa!==S&&D!==!1&&D!==0)if((typeof D!="number"||D===1073741823)&&(sa=S,D=1073741823),D={context:S,observedBits:D,next:null},Rs===null){if(oo===null)throw Error(n(308));Rs=D,oo.dependencies={expirationTime:0,firstContext:D,responders:null}}else Rs=Rs.next=D;return x?S._currentValue:S._currentValue2}var ao=!1;function Yn(S){return{baseState:S,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function qn(S){return{baseState:S.baseState,firstUpdate:S.firstUpdate,lastUpdate:S.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function $i(S,D){return{expirationTime:S,suspenseConfig:D,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function es(S,D){S.lastUpdate===null?S.firstUpdate=S.lastUpdate=D:(S.lastUpdate.next=D,S.lastUpdate=D)}function mi(S,D){var T=S.alternate;if(T===null){var q=S.updateQueue,W=null;q===null&&(q=S.updateQueue=Yn(S.memoizedState))}else q=S.updateQueue,W=T.updateQueue,q===null?W===null?(q=S.updateQueue=Yn(S.memoizedState),W=T.updateQueue=Yn(T.memoizedState)):q=S.updateQueue=qn(W):W===null&&(W=T.updateQueue=qn(q));W===null||q===W?es(q,D):q.lastUpdate===null||W.lastUpdate===null?(es(q,D),es(W,D)):(es(q,D),W.lastUpdate=D)}function qa(S,D){var T=S.updateQueue;T=T===null?S.updateQueue=Yn(S.memoizedState):aa(S,T),T.lastCapturedUpdate===null?T.firstCapturedUpdate=T.lastCapturedUpdate=D:(T.lastCapturedUpdate.next=D,T.lastCapturedUpdate=D)}function aa(S,D){var T=S.alternate;return T!==null&&D===T.updateQueue&&(D=S.updateQueue=qn(D)),D}function ee(S,D,T,q,W,ce){switch(T.tag){case 1:return S=T.payload,typeof S=="function"?S.call(ce,q,W):S;case 3:S.effectTag=S.effectTag&-4097|64;case 0:if(S=T.payload,W=typeof S=="function"?S.call(ce,q,W):S,W==null)break;return r({},q,W);case 2:ao=!0}return q}function we(S,D,T,q,W){ao=!1,D=aa(S,D);for(var ce=D.baseState,Se=null,It=0,Et=D.firstUpdate,bt=ce;Et!==null;){var Nr=Et.expirationTime;Nr<W?(Se===null&&(Se=Et,ce=bt),It<Nr&&(It=Nr)):(yI(Nr,Et.suspenseConfig),bt=ee(S,D,Et,bt,T,q),Et.callback!==null&&(S.effectTag|=32,Et.nextEffect=null,D.lastEffect===null?D.firstEffect=D.lastEffect=Et:(D.lastEffect.nextEffect=Et,D.lastEffect=Et))),Et=Et.next}for(Nr=null,Et=D.firstCapturedUpdate;Et!==null;){var is=Et.expirationTime;is<W?(Nr===null&&(Nr=Et,Se===null&&(ce=bt)),It<is&&(It=is)):(bt=ee(S,D,Et,bt,T,q),Et.callback!==null&&(S.effectTag|=32,Et.nextEffect=null,D.lastCapturedEffect===null?D.firstCapturedEffect=D.lastCapturedEffect=Et:(D.lastCapturedEffect.nextEffect=Et,D.lastCapturedEffect=Et))),Et=Et.next}Se===null&&(D.lastUpdate=null),Nr===null?D.lastCapturedUpdate=null:S.effectTag|=32,Se===null&&Nr===null&&(ce=bt),D.baseState=ce,D.firstUpdate=Se,D.firstCapturedUpdate=Nr,jm(It),S.expirationTime=It,S.memoizedState=bt}function je(S,D,T){D.firstCapturedUpdate!==null&&(D.lastUpdate!==null&&(D.lastUpdate.next=D.firstCapturedUpdate,D.lastUpdate=D.lastCapturedUpdate),D.firstCapturedUpdate=D.lastCapturedUpdate=null),Be(D.firstEffect,T),D.firstEffect=D.lastEffect=null,Be(D.firstCapturedEffect,T),D.firstCapturedEffect=D.lastCapturedEffect=null}function Be(S,D){for(;S!==null;){var T=S.callback;if(T!==null){S.callback=null;var q=D;if(typeof T!="function")throw Error(n(191,T));T.call(q)}S=S.nextEffect}}var xe=u.ReactCurrentBatchConfig,Ve=new o.Component().refs;function vt(S,D,T,q){D=S.memoizedState,T=T(q,D),T=T==null?D:r({},D,T),S.memoizedState=T,q=S.updateQueue,q!==null&&S.expirationTime===0&&(q.baseState=T)}var tr={isMounted:function(S){return(S=S._reactInternalFiber)?le(S)===S:!1},enqueueSetState:function(S,D,T){S=S._reactInternalFiber;var q=da(),W=xe.suspense;q=jA(q,S,W),W=$i(q,W),W.payload=D,T!=null&&(W.callback=T),mi(S,W),kc(S,q)},enqueueReplaceState:function(S,D,T){S=S._reactInternalFiber;var q=da(),W=xe.suspense;q=jA(q,S,W),W=$i(q,W),W.tag=1,W.payload=D,T!=null&&(W.callback=T),mi(S,W),kc(S,q)},enqueueForceUpdate:function(S,D){S=S._reactInternalFiber;var T=da(),q=xe.suspense;T=jA(T,S,q),q=$i(T,q),q.tag=2,D!=null&&(q.callback=D),mi(S,q),kc(S,T)}};function Zr(S,D,T,q,W,ce,Se){return S=S.stateNode,typeof S.shouldComponentUpdate=="function"?S.shouldComponentUpdate(q,ce,Se):D.prototype&&D.prototype.isPureReactComponent?!Sn(T,q)||!Sn(W,ce):!0}function Tn(S,D,T){var q=!1,W=Fi,ce=D.contextType;return typeof ce=="object"&&ce!==null?ce=Ls(ce):(W=$n(D)?Zt:Rn.current,q=D.contextTypes,ce=(q=q!=null)?Ri(S,W):Fi),D=new D(T,ce),S.memoizedState=D.state!==null&&D.state!==void 0?D.state:null,D.updater=tr,S.stateNode=D,D._reactInternalFiber=S,q&&(S=S.stateNode,S.__reactInternalMemoizedUnmaskedChildContext=W,S.__reactInternalMemoizedMaskedChildContext=ce),D}function _r(S,D,T,q){S=D.state,typeof D.componentWillReceiveProps=="function"&&D.componentWillReceiveProps(T,q),typeof D.UNSAFE_componentWillReceiveProps=="function"&&D.UNSAFE_componentWillReceiveProps(T,q),D.state!==S&&tr.enqueueReplaceState(D,D.state,null)}function ei(S,D,T,q){var W=S.stateNode;W.props=T,W.state=S.memoizedState,W.refs=Ve;var ce=D.contextType;typeof ce=="object"&&ce!==null?W.context=Ls(ce):(ce=$n(D)?Zt:Rn.current,W.context=Ri(S,ce)),ce=S.updateQueue,ce!==null&&(we(S,ce,T,W,q),W.state=S.memoizedState),ce=D.getDerivedStateFromProps,typeof ce=="function"&&(vt(S,D,ce,T),W.state=S.memoizedState),typeof D.getDerivedStateFromProps=="function"||typeof W.getSnapshotBeforeUpdate=="function"||typeof W.UNSAFE_componentWillMount!="function"&&typeof W.componentWillMount!="function"||(D=W.state,typeof W.componentWillMount=="function"&&W.componentWillMount(),typeof W.UNSAFE_componentWillMount=="function"&&W.UNSAFE_componentWillMount(),D!==W.state&&tr.enqueueReplaceState(W,W.state,null),ce=S.updateQueue,ce!==null&&(we(S,ce,T,W,q),W.state=S.memoizedState)),typeof W.componentDidMount=="function"&&(S.effectTag|=4)}var Ti=Array.isArray;function Kn(S,D,T){if(S=T.ref,S!==null&&typeof S!="function"&&typeof S!="object"){if(T._owner){if(T=T._owner,T){if(T.tag!==1)throw Error(n(309));var q=T.stateNode}if(!q)throw Error(n(147,S));var W=""+S;return D!==null&&D.ref!==null&&typeof D.ref=="function"&&D.ref._stringRef===W?D.ref:(D=function(ce){var Se=q.refs;Se===Ve&&(Se=q.refs={}),ce===null?delete Se[W]:Se[W]=ce},D._stringRef=W,D)}if(typeof S!="string")throw Error(n(284));if(!T._owner)throw Error(n(290,S))}return S}function ja(S,D){if(S.type!=="textarea")throw Error(n(31,Object.prototype.toString.call(D)==="[object Object]"?"object with keys {"+Object.keys(D).join(", ")+"}":D,""))}function la(S){function D(rt,Je){if(S){var ft=rt.lastEffect;ft!==null?(ft.nextEffect=Je,rt.lastEffect=Je):rt.firstEffect=rt.lastEffect=Je,Je.nextEffect=null,Je.effectTag=8}}function T(rt,Je){if(!S)return null;for(;Je!==null;)D(rt,Je),Je=Je.sibling;return null}function q(rt,Je){for(rt=new Map;Je!==null;)Je.key!==null?rt.set(Je.key,Je):rt.set(Je.index,Je),Je=Je.sibling;return rt}function W(rt,Je,ft){return rt=KA(rt,Je,ft),rt.index=0,rt.sibling=null,rt}function ce(rt,Je,ft){return rt.index=ft,S?(ft=rt.alternate,ft!==null?(ft=ft.index,ft<Je?(rt.effectTag=2,Je):ft):(rt.effectTag=2,Je)):Je}function Se(rt){return S&&rt.alternate===null&&(rt.effectTag=2),rt}function It(rt,Je,ft,jt){return Je===null||Je.tag!==6?(Je=BI(ft,rt.mode,jt),Je.return=rt,Je):(Je=W(Je,ft,jt),Je.return=rt,Je)}function Et(rt,Je,ft,jt){return Je!==null&&Je.elementType===ft.type?(jt=W(Je,ft.props,jt),jt.ref=Kn(rt,Je,ft),jt.return=rt,jt):(jt=Gm(ft.type,ft.key,ft.props,null,rt.mode,jt),jt.ref=Kn(rt,Je,ft),jt.return=rt,jt)}function bt(rt,Je,ft,jt){return Je===null||Je.tag!==4||Je.stateNode.containerInfo!==ft.containerInfo||Je.stateNode.implementation!==ft.implementation?(Je=vI(ft,rt.mode,jt),Je.return=rt,Je):(Je=W(Je,ft.children||[],jt),Je.return=rt,Je)}function Nr(rt,Je,ft,jt,Er){return Je===null||Je.tag!==7?(Je=Fu(ft,rt.mode,jt,Er),Je.return=rt,Je):(Je=W(Je,ft,jt),Je.return=rt,Je)}function is(rt,Je,ft){if(typeof Je=="string"||typeof Je=="number")return Je=BI(""+Je,rt.mode,ft),Je.return=rt,Je;if(typeof Je=="object"&&Je!==null){switch(Je.$$typeof){case p:return ft=Gm(Je.type,Je.key,Je.props,null,rt.mode,ft),ft.ref=Kn(rt,null,Je),ft.return=rt,ft;case h:return Je=vI(Je,rt.mode,ft),Je.return=rt,Je}if(Ti(Je)||pe(Je))return Je=Fu(Je,rt.mode,ft,null),Je.return=rt,Je;ja(rt,Je)}return null}function fi(rt,Je,ft,jt){var Er=Je!==null?Je.key:null;if(typeof ft=="string"||typeof ft=="number")return Er!==null?null:It(rt,Je,""+ft,jt);if(typeof ft=="object"&&ft!==null){switch(ft.$$typeof){case p:return ft.key===Er?ft.type===C?Nr(rt,Je,ft.props.children,jt,Er):Et(rt,Je,ft,jt):null;case h:return ft.key===Er?bt(rt,Je,ft,jt):null}if(Ti(ft)||pe(ft))return Er!==null?null:Nr(rt,Je,ft,jt,null);ja(rt,ft)}return null}function Ao(rt,Je,ft,jt,Er){if(typeof jt=="string"||typeof jt=="number")return rt=rt.get(ft)||null,It(Je,rt,""+jt,Er);if(typeof jt=="object"&&jt!==null){switch(jt.$$typeof){case p:return rt=rt.get(jt.key===null?ft:jt.key)||null,jt.type===C?Nr(Je,rt,jt.props.children,Er,jt.key):Et(Je,rt,jt,Er);case h:return rt=rt.get(jt.key===null?ft:jt.key)||null,bt(Je,rt,jt,Er)}if(Ti(jt)||pe(jt))return rt=rt.get(ft)||null,Nr(Je,rt,jt,Er,null);ja(Je,jt)}return null}function JA(rt,Je,ft,jt){for(var Er=null,In=null,Sr=Je,wn=Je=0,ni=null;Sr!==null&&wn<ft.length;wn++){Sr.index>wn?(ni=Sr,Sr=null):ni=Sr.sibling;var Xr=fi(rt,Sr,ft[wn],jt);if(Xr===null){Sr===null&&(Sr=ni);break}S&&Sr&&Xr.alternate===null&&D(rt,Sr),Je=ce(Xr,Je,wn),In===null?Er=Xr:In.sibling=Xr,In=Xr,Sr=ni}if(wn===ft.length)return T(rt,Sr),Er;if(Sr===null){for(;wn<ft.length;wn++)Sr=is(rt,ft[wn],jt),Sr!==null&&(Je=ce(Sr,Je,wn),In===null?Er=Sr:In.sibling=Sr,In=Sr);return Er}for(Sr=q(rt,Sr);wn<ft.length;wn++)ni=Ao(Sr,rt,wn,ft[wn],jt),ni!==null&&(S&&ni.alternate!==null&&Sr.delete(ni.key===null?wn:ni.key),Je=ce(ni,Je,wn),In===null?Er=ni:In.sibling=ni,In=ni);return S&&Sr.forEach(function(fo){return D(rt,fo)}),Er}function qo(rt,Je,ft,jt){var Er=pe(ft);if(typeof Er!="function")throw Error(n(150));if(ft=Er.call(ft),ft==null)throw Error(n(151));for(var In=Er=null,Sr=Je,wn=Je=0,ni=null,Xr=ft.next();Sr!==null&&!Xr.done;wn++,Xr=ft.next()){Sr.index>wn?(ni=Sr,Sr=null):ni=Sr.sibling;var fo=fi(rt,Sr,Xr.value,jt);if(fo===null){Sr===null&&(Sr=ni);break}S&&Sr&&fo.alternate===null&&D(rt,Sr),Je=ce(fo,Je,wn),In===null?Er=fo:In.sibling=fo,In=fo,Sr=ni}if(Xr.done)return T(rt,Sr),Er;if(Sr===null){for(;!Xr.done;wn++,Xr=ft.next())Xr=is(rt,Xr.value,jt),Xr!==null&&(Je=ce(Xr,Je,wn),In===null?Er=Xr:In.sibling=Xr,In=Xr);return Er}for(Sr=q(rt,Sr);!Xr.done;wn++,Xr=ft.next())Xr=Ao(Sr,rt,wn,Xr.value,jt),Xr!==null&&(S&&Xr.alternate!==null&&Sr.delete(Xr.key===null?wn:Xr.key),Je=ce(Xr,Je,wn),In===null?Er=Xr:In.sibling=Xr,In=Xr);return S&&Sr.forEach(function(CF){return D(rt,CF)}),Er}return function(rt,Je,ft,jt){var Er=typeof ft=="object"&&ft!==null&&ft.type===C&&ft.key===null;Er&&(ft=ft.props.children);var In=typeof ft=="object"&&ft!==null;if(In)switch(ft.$$typeof){case p:e:{for(In=ft.key,Er=Je;Er!==null;){if(Er.key===In)if(Er.tag===7?ft.type===C:Er.elementType===ft.type){T(rt,Er.sibling),Je=W(Er,ft.type===C?ft.props.children:ft.props,jt),Je.ref=Kn(rt,Er,ft),Je.return=rt,rt=Je;break e}else{T(rt,Er);break}else D(rt,Er);Er=Er.sibling}ft.type===C?(Je=Fu(ft.props.children,rt.mode,jt,ft.key),Je.return=rt,rt=Je):(jt=Gm(ft.type,ft.key,ft.props,null,rt.mode,jt),jt.ref=Kn(rt,Je,ft),jt.return=rt,rt=jt)}return Se(rt);case h:e:{for(Er=ft.key;Je!==null;){if(Je.key===Er)if(Je.tag===4&&Je.stateNode.containerInfo===ft.containerInfo&&Je.stateNode.implementation===ft.implementation){T(rt,Je.sibling),Je=W(Je,ft.children||[],jt),Je.return=rt,rt=Je;break e}else{T(rt,Je);break}else D(rt,Je);Je=Je.sibling}Je=vI(ft,rt.mode,jt),Je.return=rt,rt=Je}return Se(rt)}if(typeof ft=="string"||typeof ft=="number")return ft=""+ft,Je!==null&&Je.tag===6?(T(rt,Je.sibling),Je=W(Je,ft,jt),Je.return=rt,rt=Je):(T(rt,Je),Je=BI(ft,rt.mode,jt),Je.return=rt,rt=Je),Se(rt);if(Ti(ft))return JA(rt,Je,ft,jt);if(pe(ft))return qo(rt,Je,ft,jt);if(In&&ja(rt,ft),typeof ft>"u"&&!Er)switch(rt.tag){case 1:case 0:throw rt=rt.type,Error(n(152,rt.displayName||rt.name||"Component"))}return T(rt,Je)}}var yi=la(!0),ca=la(!1),Ga={},lo={current:Ga},RA={current:Ga},Ic={current:Ga};function ua(S){if(S===Ga)throw Error(n(174));return S}function ng(S,D){Fn(Ic,D,S),Fn(RA,S,S),Fn(lo,Ga,S),D=ne(D),Ue(lo,S),Fn(lo,D,S)}function wc(S){Ue(lo,S),Ue(RA,S),Ue(Ic,S)}function bm(S){var D=ua(Ic.current),T=ua(lo.current);D=Z(T,S.type,D),T!==D&&(Fn(RA,S,S),Fn(lo,D,S))}function ig(S){RA.current===S&&(Ue(lo,S),Ue(RA,S))}var Vn={current:0};function fp(S){for(var D=S;D!==null;){if(D.tag===13){var T=D.memoizedState;if(T!==null&&(T=T.dehydrated,T===null||Qs(T)||ro(T)))return D}else if(D.tag===19&&D.memoizedProps.revealOrder!==void 0){if((D.effectTag&64)!==0)return D}else if(D.child!==null){D.child.return=D,D=D.child;continue}if(D===S)break;for(;D.sibling===null;){if(D.return===null||D.return===S)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}return null}function sg(S,D){return{responder:S,props:D}}var TA=u.ReactCurrentDispatcher,Os=u.ReactCurrentBatchConfig,Iu=0,Wa=null,ji=null,Aa=null,wu=null,ms=null,Bc=null,vc=0,G=null,Dt=0,Dl=!1,Si=null,Dc=0;function lt(){throw Error(n(321))}function Bu(S,D){if(D===null)return!1;for(var T=0;T<D.length&&T<S.length;T++)if(!ds(S[T],D[T]))return!1;return!0}function og(S,D,T,q,W,ce){if(Iu=ce,Wa=D,Aa=S!==null?S.memoizedState:null,TA.current=Aa===null?uI:Fm,D=T(q,W),Dl){do Dl=!1,Dc+=1,Aa=S!==null?S.memoizedState:null,Bc=wu,G=ms=ji=null,TA.current=Fm,D=T(q,W);while(Dl);Si=null,Dc=0}if(TA.current=Du,S=Wa,S.memoizedState=wu,S.expirationTime=vc,S.updateQueue=G,S.effectTag|=Dt,S=ji!==null&&ji.next!==null,Iu=0,Bc=ms=wu=Aa=ji=Wa=null,vc=0,G=null,Dt=0,S)throw Error(n(300));return D}function cI(){TA.current=Du,Iu=0,Bc=ms=wu=Aa=ji=Wa=null,vc=0,G=null,Dt=0,Dl=!1,Si=null,Dc=0}function NA(){var S={memoizedState:null,baseState:null,queue:null,baseUpdate:null,next:null};return ms===null?wu=ms=S:ms=ms.next=S,ms}function pp(){if(Bc!==null)ms=Bc,Bc=ms.next,ji=Aa,Aa=ji!==null?ji.next:null;else{if(Aa===null)throw Error(n(310));ji=Aa;var S={memoizedState:ji.memoizedState,baseState:ji.baseState,queue:ji.queue,baseUpdate:ji.baseUpdate,next:null};ms=ms===null?wu=S:ms.next=S,Aa=ji.next}return ms}function yr(S,D){return typeof D=="function"?D(S):D}function ys(S){var D=pp(),T=D.queue;if(T===null)throw Error(n(311));if(T.lastRenderedReducer=S,0<Dc){var q=T.dispatch;if(Si!==null){var W=Si.get(T);if(W!==void 0){Si.delete(T);var ce=D.memoizedState;do ce=S(ce,W.action),W=W.next;while(W!==null);return ds(ce,D.memoizedState)||(_o=!0),D.memoizedState=ce,D.baseUpdate===T.last&&(D.baseState=ce),T.lastRenderedState=ce,[ce,q]}}return[D.memoizedState,q]}q=T.last;var Se=D.baseUpdate;if(ce=D.baseState,Se!==null?(q!==null&&(q.next=null),q=Se.next):q=q!==null?q.next:null,q!==null){var It=W=null,Et=q,bt=!1;do{var Nr=Et.expirationTime;Nr<Iu?(bt||(bt=!0,It=Se,W=ce),Nr>vc&&(vc=Nr,jm(vc))):(yI(Nr,Et.suspenseConfig),ce=Et.eagerReducer===S?Et.eagerState:S(ce,Et.action)),Se=Et,Et=Et.next}while(Et!==null&&Et!==q);bt||(It=Se,W=ce),ds(ce,D.memoizedState)||(_o=!0),D.memoizedState=ce,D.baseUpdate=It,D.baseState=W,T.lastRenderedState=ce}return[D.memoizedState,T.dispatch]}function ag(S){var D=NA();return typeof S=="function"&&(S=S()),D.memoizedState=D.baseState=S,S=D.queue={last:null,dispatch:null,lastRenderedReducer:yr,lastRenderedState:S},S=S.dispatch=fg.bind(null,Wa,S),[D.memoizedState,S]}function lg(S){return ys(yr,S)}function cg(S,D,T,q){return S={tag:S,create:D,destroy:T,deps:q,next:null},G===null?(G={lastEffect:null},G.lastEffect=S.next=S):(D=G.lastEffect,D===null?G.lastEffect=S.next=S:(T=D.next,D.next=S,S.next=T,G.lastEffect=S)),S}function hp(S,D,T,q){var W=NA();Dt|=S,W.memoizedState=cg(D,T,void 0,q===void 0?null:q)}function Sc(S,D,T,q){var W=pp();q=q===void 0?null:q;var ce=void 0;if(ji!==null){var Se=ji.memoizedState;if(ce=Se.destroy,q!==null&&Bu(q,Se.deps)){cg(0,T,ce,q);return}}Dt|=S,W.memoizedState=cg(D,T,ce,q)}function mt(S,D){return hp(516,192,S,D)}function Qm(S,D){return Sc(516,192,S,D)}function ug(S,D){if(typeof D=="function")return S=S(),D(S),function(){D(null)};if(D!=null)return S=S(),D.current=S,function(){D.current=null}}function Ag(){}function vu(S,D){return NA().memoizedState=[S,D===void 0?null:D],S}function km(S,D){var T=pp();D=D===void 0?null:D;var q=T.memoizedState;return q!==null&&D!==null&&Bu(D,q[1])?q[0]:(T.memoizedState=[S,D],S)}function fg(S,D,T){if(!(25>Dc))throw Error(n(301));var q=S.alternate;if(S===Wa||q!==null&&q===Wa)if(Dl=!0,S={expirationTime:Iu,suspenseConfig:null,action:T,eagerReducer:null,eagerState:null,next:null},Si===null&&(Si=new Map),T=Si.get(D),T===void 0)Si.set(D,S);else{for(D=T;D.next!==null;)D=D.next;D.next=S}else{var W=da(),ce=xe.suspense;W=jA(W,S,ce),ce={expirationTime:W,suspenseConfig:ce,action:T,eagerReducer:null,eagerState:null,next:null};var Se=D.last;if(Se===null)ce.next=ce;else{var It=Se.next;It!==null&&(ce.next=It),Se.next=ce}if(D.last=ce,S.expirationTime===0&&(q===null||q.expirationTime===0)&&(q=D.lastRenderedReducer,q!==null))try{var Et=D.lastRenderedState,bt=q(Et,T);if(ce.eagerReducer=q,ce.eagerState=bt,ds(bt,Et))return}catch{}finally{}kc(S,W)}}var Du={readContext:Ls,useCallback:lt,useContext:lt,useEffect:lt,useImperativeHandle:lt,useLayoutEffect:lt,useMemo:lt,useReducer:lt,useRef:lt,useState:lt,useDebugValue:lt,useResponder:lt,useDeferredValue:lt,useTransition:lt},uI={readContext:Ls,useCallback:vu,useContext:Ls,useEffect:mt,useImperativeHandle:function(S,D,T){return T=T!=null?T.concat([S]):null,hp(4,36,ug.bind(null,D,S),T)},useLayoutEffect:function(S,D){return hp(4,36,S,D)},useMemo:function(S,D){var T=NA();return D=D===void 0?null:D,S=S(),T.memoizedState=[S,D],S},useReducer:function(S,D,T){var q=NA();return D=T!==void 0?T(D):D,q.memoizedState=q.baseState=D,S=q.queue={last:null,dispatch:null,lastRenderedReducer:S,lastRenderedState:D},S=S.dispatch=fg.bind(null,Wa,S),[q.memoizedState,S]},useRef:function(S){var D=NA();return S={current:S},D.memoizedState=S},useState:ag,useDebugValue:Ag,useResponder:sg,useDeferredValue:function(S,D){var T=ag(S),q=T[0],W=T[1];return mt(function(){a.unstable_next(function(){var ce=Os.suspense;Os.suspense=D===void 0?null:D;try{W(S)}finally{Os.suspense=ce}})},[S,D]),q},useTransition:function(S){var D=ag(!1),T=D[0],q=D[1];return[vu(function(W){q(!0),a.unstable_next(function(){var ce=Os.suspense;Os.suspense=S===void 0?null:S;try{q(!1),W()}finally{Os.suspense=ce}})},[S,T]),T]}},Fm={readContext:Ls,useCallback:km,useContext:Ls,useEffect:Qm,useImperativeHandle:function(S,D,T){return T=T!=null?T.concat([S]):null,Sc(4,36,ug.bind(null,D,S),T)},useLayoutEffect:function(S,D){return Sc(4,36,S,D)},useMemo:function(S,D){var T=pp();D=D===void 0?null:D;var q=T.memoizedState;return q!==null&&D!==null&&Bu(D,q[1])?q[0]:(S=S(),T.memoizedState=[S,D],S)},useReducer:ys,useRef:function(){return pp().memoizedState},useState:lg,useDebugValue:Ag,useResponder:sg,useDeferredValue:function(S,D){var T=lg(S),q=T[0],W=T[1];return Qm(function(){a.unstable_next(function(){var ce=Os.suspense;Os.suspense=D===void 0?null:D;try{W(S)}finally{Os.suspense=ce}})},[S,D]),q},useTransition:function(S){var D=lg(!1),T=D[0],q=D[1];return[km(function(W){q(!0),a.unstable_next(function(){var ce=Os.suspense;Os.suspense=S===void 0?null:S;try{q(!1),W()}finally{Os.suspense=ce}})},[S,T]),T]}},fa=null,Pc=null,Sl=!1;function Su(S,D){var T=bl(5,null,null,0);T.elementType="DELETED",T.type="DELETED",T.stateNode=D,T.return=S,T.effectTag=8,S.lastEffect!==null?(S.lastEffect.nextEffect=T,S.lastEffect=T):S.firstEffect=S.lastEffect=T}function pg(S,D){switch(S.tag){case 5:return D=to(D,S.type,S.pendingProps),D!==null?(S.stateNode=D,!0):!1;case 6:return D=Di(D,S.pendingProps),D!==null?(S.stateNode=D,!0):!1;case 13:return!1;default:return!1}}function LA(S){if(Sl){var D=Pc;if(D){var T=D;if(!pg(S,D)){if(D=hc(T),!D||!pg(S,D)){S.effectTag=S.effectTag&-1025|2,Sl=!1,fa=S;return}Su(fa,T)}fa=S,Pc=gu(D)}else S.effectTag=S.effectTag&-1025|2,Sl=!1,fa=S}}function gp(S){for(S=S.return;S!==null&&S.tag!==5&&S.tag!==3&&S.tag!==13;)S=S.return;fa=S}function Ya(S){if(!y||S!==fa)return!1;if(!Sl)return gp(S),Sl=!0,!1;var D=S.type;if(S.tag!==5||D!=="head"&&D!=="body"&&!Te(D,S.memoizedProps))for(D=Pc;D;)Su(S,D),D=hc(D);if(gp(S),S.tag===13){if(!y)throw Error(n(316));if(S=S.memoizedState,S=S!==null?S.dehydrated:null,!S)throw Error(n(317));Pc=ks(S)}else Pc=fa?hc(S.stateNode):null;return!0}function hg(){y&&(Pc=fa=null,Sl=!1)}var dp=u.ReactCurrentOwner,_o=!1;function Es(S,D,T,q){D.child=S===null?ca(D,null,T,q):yi(D,S.child,T,q)}function Ei(S,D,T,q,W){T=T.render;var ce=D.ref;return Ns(D,W),q=og(S,D,T,q,ce,W),S!==null&&!_o?(D.updateQueue=S.updateQueue,D.effectTag&=-517,S.expirationTime<=W&&(S.expirationTime=0),ti(S,D,W)):(D.effectTag|=1,Es(S,D,q,W),D.child)}function Rm(S,D,T,q,W,ce){if(S===null){var Se=T.type;return typeof Se=="function"&&!wI(Se)&&Se.defaultProps===void 0&&T.compare===null&&T.defaultProps===void 0?(D.tag=15,D.type=Se,Tm(S,D,Se,q,W,ce)):(S=Gm(T.type,null,q,null,D.mode,ce),S.ref=D.ref,S.return=D,D.child=S)}return Se=S.child,W<ce&&(W=Se.memoizedProps,T=T.compare,T=T!==null?T:Sn,T(W,q)&&S.ref===D.ref)?ti(S,D,ce):(D.effectTag|=1,S=KA(Se,q,ce),S.ref=D.ref,S.return=D,D.child=S)}function Tm(S,D,T,q,W,ce){return S!==null&&Sn(S.memoizedProps,q)&&S.ref===D.ref&&(_o=!1,W<ce)?ti(S,D,ce):OA(S,D,T,q,ce)}function Ho(S,D){var T=D.ref;(S===null&&T!==null||S!==null&&S.ref!==T)&&(D.effectTag|=128)}function OA(S,D,T,q,W){var ce=$n(T)?Zt:Rn.current;return ce=Ri(D,ce),Ns(D,W),T=og(S,D,T,q,ce,W),S!==null&&!_o?(D.updateQueue=S.updateQueue,D.effectTag&=-517,S.expirationTime<=W&&(S.expirationTime=0),ti(S,D,W)):(D.effectTag|=1,Es(S,D,T,W),D.child)}function mp(S,D,T,q,W){if($n(T)){var ce=!0;dc(D)}else ce=!1;if(Ns(D,W),D.stateNode===null)S!==null&&(S.alternate=null,D.alternate=null,D.effectTag|=2),Tn(D,T,q,W),ei(D,T,q,W),q=!0;else if(S===null){var Se=D.stateNode,It=D.memoizedProps;Se.props=It;var Et=Se.context,bt=T.contextType;typeof bt=="object"&&bt!==null?bt=Ls(bt):(bt=$n(T)?Zt:Rn.current,bt=Ri(D,bt));var Nr=T.getDerivedStateFromProps,is=typeof Nr=="function"||typeof Se.getSnapshotBeforeUpdate=="function";is||typeof Se.UNSAFE_componentWillReceiveProps!="function"&&typeof Se.componentWillReceiveProps!="function"||(It!==q||Et!==bt)&&_r(D,Se,q,bt),ao=!1;var fi=D.memoizedState;Et=Se.state=fi;var Ao=D.updateQueue;Ao!==null&&(we(D,Ao,q,Se,W),Et=D.memoizedState),It!==q||fi!==Et||Ui.current||ao?(typeof Nr=="function"&&(vt(D,T,Nr,q),Et=D.memoizedState),(It=ao||Zr(D,T,It,q,fi,Et,bt))?(is||typeof Se.UNSAFE_componentWillMount!="function"&&typeof Se.componentWillMount!="function"||(typeof Se.componentWillMount=="function"&&Se.componentWillMount(),typeof Se.UNSAFE_componentWillMount=="function"&&Se.UNSAFE_componentWillMount()),typeof Se.componentDidMount=="function"&&(D.effectTag|=4)):(typeof Se.componentDidMount=="function"&&(D.effectTag|=4),D.memoizedProps=q,D.memoizedState=Et),Se.props=q,Se.state=Et,Se.context=bt,q=It):(typeof Se.componentDidMount=="function"&&(D.effectTag|=4),q=!1)}else Se=D.stateNode,It=D.memoizedProps,Se.props=D.type===D.elementType?It:di(D.type,It),Et=Se.context,bt=T.contextType,typeof bt=="object"&&bt!==null?bt=Ls(bt):(bt=$n(T)?Zt:Rn.current,bt=Ri(D,bt)),Nr=T.getDerivedStateFromProps,(is=typeof Nr=="function"||typeof Se.getSnapshotBeforeUpdate=="function")||typeof Se.UNSAFE_componentWillReceiveProps!="function"&&typeof Se.componentWillReceiveProps!="function"||(It!==q||Et!==bt)&&_r(D,Se,q,bt),ao=!1,Et=D.memoizedState,fi=Se.state=Et,Ao=D.updateQueue,Ao!==null&&(we(D,Ao,q,Se,W),fi=D.memoizedState),It!==q||Et!==fi||Ui.current||ao?(typeof Nr=="function"&&(vt(D,T,Nr,q),fi=D.memoizedState),(Nr=ao||Zr(D,T,It,q,Et,fi,bt))?(is||typeof Se.UNSAFE_componentWillUpdate!="function"&&typeof Se.componentWillUpdate!="function"||(typeof Se.componentWillUpdate=="function"&&Se.componentWillUpdate(q,fi,bt),typeof Se.UNSAFE_componentWillUpdate=="function"&&Se.UNSAFE_componentWillUpdate(q,fi,bt)),typeof Se.componentDidUpdate=="function"&&(D.effectTag|=4),typeof Se.getSnapshotBeforeUpdate=="function"&&(D.effectTag|=256)):(typeof Se.componentDidUpdate!="function"||It===S.memoizedProps&&Et===S.memoizedState||(D.effectTag|=4),typeof Se.getSnapshotBeforeUpdate!="function"||It===S.memoizedProps&&Et===S.memoizedState||(D.effectTag|=256),D.memoizedProps=q,D.memoizedState=fi),Se.props=q,Se.state=fi,Se.context=bt,q=Nr):(typeof Se.componentDidUpdate!="function"||It===S.memoizedProps&&Et===S.memoizedState||(D.effectTag|=4),typeof Se.getSnapshotBeforeUpdate!="function"||It===S.memoizedProps&&Et===S.memoizedState||(D.effectTag|=256),q=!1);return yp(S,D,T,q,ce,W)}function yp(S,D,T,q,W,ce){Ho(S,D);var Se=(D.effectTag&64)!==0;if(!q&&!Se)return W&&wl(D,T,!1),ti(S,D,ce);q=D.stateNode,dp.current=D;var It=Se&&typeof T.getDerivedStateFromError!="function"?null:q.render();return D.effectTag|=1,S!==null&&Se?(D.child=yi(D,S.child,null,ce),D.child=yi(D,null,It,ce)):Es(S,D,It,ce),D.memoizedState=q.state,W&&wl(D,T,!0),D.child}function gg(S){var D=S.stateNode;D.pendingContext?gc(S,D.pendingContext,D.pendingContext!==D.context):D.context&&gc(S,D.context,!1),ng(S,D.containerInfo)}var pa={dehydrated:null,retryTime:0};function rn(S,D,T){var q=D.mode,W=D.pendingProps,ce=Vn.current,Se=!1,It;if((It=(D.effectTag&64)!==0)||(It=(ce&2)!==0&&(S===null||S.memoizedState!==null)),It?(Se=!0,D.effectTag&=-65):S!==null&&S.memoizedState===null||W.fallback===void 0||W.unstable_avoidThisFallback===!0||(ce|=1),Fn(Vn,ce&1,D),S===null){if(W.fallback!==void 0&&LA(D),Se){if(Se=W.fallback,W=Fu(null,q,0,null),W.return=D,(D.mode&2)===0)for(S=D.memoizedState!==null?D.child.child:D.child,W.child=S;S!==null;)S.return=W,S=S.sibling;return T=Fu(Se,q,T,null),T.return=D,W.sibling=T,D.memoizedState=pa,D.child=W,T}return q=W.children,D.memoizedState=null,D.child=ca(D,null,q,T)}if(S.memoizedState!==null){if(S=S.child,q=S.sibling,Se){if(W=W.fallback,T=KA(S,S.pendingProps,0),T.return=D,(D.mode&2)===0&&(Se=D.memoizedState!==null?D.child.child:D.child,Se!==S.child))for(T.child=Se;Se!==null;)Se.return=T,Se=Se.sibling;return q=KA(q,W,q.expirationTime),q.return=D,T.sibling=q,T.childExpirationTime=0,D.memoizedState=pa,D.child=T,q}return T=yi(D,S.child,W.children,T),D.memoizedState=null,D.child=T}if(S=S.child,Se){if(Se=W.fallback,W=Fu(null,q,0,null),W.return=D,W.child=S,S!==null&&(S.return=W),(D.mode&2)===0)for(S=D.memoizedState!==null?D.child.child:D.child,W.child=S;S!==null;)S.return=W,S=S.sibling;return T=Fu(Se,q,T,null),T.return=D,W.sibling=T,T.effectTag|=2,W.childExpirationTime=0,D.memoizedState=pa,D.child=W,T}return D.memoizedState=null,D.child=yi(D,S,W.children,T)}function co(S,D){S.expirationTime<D&&(S.expirationTime=D);var T=S.alternate;T!==null&&T.expirationTime<D&&(T.expirationTime=D),Ts(S.return,D)}function MA(S,D,T,q,W,ce){var Se=S.memoizedState;Se===null?S.memoizedState={isBackwards:D,rendering:null,last:q,tail:T,tailExpiration:0,tailMode:W,lastEffect:ce}:(Se.isBackwards=D,Se.rendering=null,Se.last=q,Se.tail=T,Se.tailExpiration=0,Se.tailMode=W,Se.lastEffect=ce)}function Ka(S,D,T){var q=D.pendingProps,W=q.revealOrder,ce=q.tail;if(Es(S,D,q.children,T),q=Vn.current,(q&2)!==0)q=q&1|2,D.effectTag|=64;else{if(S!==null&&(S.effectTag&64)!==0)e:for(S=D.child;S!==null;){if(S.tag===13)S.memoizedState!==null&&co(S,T);else if(S.tag===19)co(S,T);else if(S.child!==null){S.child.return=S,S=S.child;continue}if(S===D)break e;for(;S.sibling===null;){if(S.return===null||S.return===D)break e;S=S.return}S.sibling.return=S.return,S=S.sibling}q&=1}if(Fn(Vn,q,D),(D.mode&2)===0)D.memoizedState=null;else switch(W){case"forwards":for(T=D.child,W=null;T!==null;)S=T.alternate,S!==null&&fp(S)===null&&(W=T),T=T.sibling;T=W,T===null?(W=D.child,D.child=null):(W=T.sibling,T.sibling=null),MA(D,!1,W,T,ce,D.lastEffect);break;case"backwards":for(T=null,W=D.child,D.child=null;W!==null;){if(S=W.alternate,S!==null&&fp(S)===null){D.child=W;break}S=W.sibling,W.sibling=T,T=W,W=S}MA(D,!0,T,null,ce,D.lastEffect);break;case"together":MA(D,!1,null,null,void 0,D.lastEffect);break;default:D.memoizedState=null}return D.child}function ti(S,D,T){S!==null&&(D.dependencies=S.dependencies);var q=D.expirationTime;if(q!==0&&jm(q),D.childExpirationTime<T)return null;if(S!==null&&D.child!==S.child)throw Error(n(153));if(D.child!==null){for(S=D.child,T=KA(S,S.pendingProps,S.expirationTime),D.child=T,T.return=D;S.sibling!==null;)S=S.sibling,T=T.sibling=KA(S,S.pendingProps,S.expirationTime),T.return=D;T.sibling=null}return D.child}function ha(S){S.effectTag|=4}var xc,Pl,ts,Hr;if(I)xc=function(S,D){for(var T=D.child;T!==null;){if(T.tag===5||T.tag===6)H(S,T.stateNode);else if(T.tag!==4&&T.child!==null){T.child.return=T,T=T.child;continue}if(T===D)break;for(;T.sibling===null;){if(T.return===null||T.return===D)return;T=T.return}T.sibling.return=T.return,T=T.sibling}},Pl=function(){},ts=function(S,D,T,q,W){if(S=S.memoizedProps,S!==q){var ce=D.stateNode,Se=ua(lo.current);T=Me(ce,T,S,q,W,Se),(D.updateQueue=T)&&ha(D)}},Hr=function(S,D,T,q){T!==q&&ha(D)};else if(P){xc=function(S,D,T,q){for(var W=D.child;W!==null;){if(W.tag===5){var ce=W.stateNode;T&&q&&(ce=ki(ce,W.type,W.memoizedProps,W)),H(S,ce)}else if(W.tag===6)ce=W.stateNode,T&&q&&(ce=gs(ce,W.memoizedProps,W)),H(S,ce);else if(W.tag!==4){if(W.tag===13&&(W.effectTag&4)!==0&&(ce=W.memoizedState!==null)){var Se=W.child;if(Se!==null&&(Se.child!==null&&(Se.child.return=Se,xc(S,Se,!0,ce)),ce=Se.sibling,ce!==null)){ce.return=W,W=ce;continue}}if(W.child!==null){W.child.return=W,W=W.child;continue}}if(W===D)break;for(;W.sibling===null;){if(W.return===null||W.return===D)return;W=W.return}W.sibling.return=W.return,W=W.sibling}};var Ep=function(S,D,T,q){for(var W=D.child;W!==null;){if(W.tag===5){var ce=W.stateNode;T&&q&&(ce=ki(ce,W.type,W.memoizedProps,W)),jr(S,ce)}else if(W.tag===6)ce=W.stateNode,T&&q&&(ce=gs(ce,W.memoizedProps,W)),jr(S,ce);else if(W.tag!==4){if(W.tag===13&&(W.effectTag&4)!==0&&(ce=W.memoizedState!==null)){var Se=W.child;if(Se!==null&&(Se.child!==null&&(Se.child.return=Se,Ep(S,Se,!0,ce)),ce=Se.sibling,ce!==null)){ce.return=W,W=ce;continue}}if(W.child!==null){W.child.return=W,W=W.child;continue}}if(W===D)break;for(;W.sibling===null;){if(W.return===null||W.return===D)return;W=W.return}W.sibling.return=W.return,W=W.sibling}};Pl=function(S){var D=S.stateNode;if(S.firstEffect!==null){var T=D.containerInfo,q=Br(T);Ep(q,S,!1,!1),D.pendingChildren=q,ha(S),Hn(T,q)}},ts=function(S,D,T,q,W){var ce=S.stateNode,Se=S.memoizedProps;if((S=D.firstEffect===null)&&Se===q)D.stateNode=ce;else{var It=D.stateNode,Et=ua(lo.current),bt=null;Se!==q&&(bt=Me(It,T,Se,q,W,Et)),S&&bt===null?D.stateNode=ce:(ce=fr(ce,bt,T,Se,q,D,S,It),yt(ce,T,q,W,Et)&&ha(D),D.stateNode=ce,S?ha(D):xc(ce,D,!1,!1))}},Hr=function(S,D,T,q){T!==q&&(S=ua(Ic.current),T=ua(lo.current),D.stateNode=_e(q,S,T,D),ha(D))}}else Pl=function(){},ts=function(){},Hr=function(){};function bc(S,D){switch(S.tailMode){case"hidden":D=S.tail;for(var T=null;D!==null;)D.alternate!==null&&(T=D),D=D.sibling;T===null?S.tail=null:T.sibling=null;break;case"collapsed":T=S.tail;for(var q=null;T!==null;)T.alternate!==null&&(q=T),T=T.sibling;q===null?D||S.tail===null?S.tail=null:S.tail.sibling=null:q.sibling=null}}function AI(S){switch(S.tag){case 1:$n(S.type)&&Ua(S);var D=S.effectTag;return D&4096?(S.effectTag=D&-4097|64,S):null;case 3:if(wc(S),$t(S),D=S.effectTag,(D&64)!==0)throw Error(n(285));return S.effectTag=D&-4097|64,S;case 5:return ig(S),null;case 13:return Ue(Vn,S),D=S.effectTag,D&4096?(S.effectTag=D&-4097|64,S):null;case 19:return Ue(Vn,S),null;case 4:return wc(S),null;case 10:return Zi(S),null;default:return null}}function dg(S,D){return{value:S,source:D,stack:Cl(D)}}var mg=typeof WeakSet=="function"?WeakSet:Set;function Va(S,D){var T=D.source,q=D.stack;q===null&&T!==null&&(q=Cl(T)),T!==null&&ge(T.type),D=D.value,S!==null&&S.tag===1&&ge(S.type);try{console.error(D)}catch(W){setTimeout(function(){throw W})}}function Nm(S,D){try{D.props=S.memoizedProps,D.state=S.memoizedState,D.componentWillUnmount()}catch(T){YA(S,T)}}function yg(S){var D=S.ref;if(D!==null)if(typeof D=="function")try{D(null)}catch(T){YA(S,T)}else D.current=null}function kt(S,D){switch(D.tag){case 0:case 11:case 15:N(2,0,D);break;case 1:if(D.effectTag&256&&S!==null){var T=S.memoizedProps,q=S.memoizedState;S=D.stateNode,D=S.getSnapshotBeforeUpdate(D.elementType===D.type?T:di(D.type,T),q),S.__reactInternalSnapshotBeforeUpdate=D}break;case 3:case 5:case 6:case 4:case 17:break;default:throw Error(n(163))}}function N(S,D,T){if(T=T.updateQueue,T=T!==null?T.lastEffect:null,T!==null){var q=T=T.next;do{if((q.tag&S)!==0){var W=q.destroy;q.destroy=void 0,W!==void 0&&W()}(q.tag&D)!==0&&(W=q.create,q.destroy=W()),q=q.next}while(q!==T)}}function K(S,D,T){switch(typeof II=="function"&&II(D),D.tag){case 0:case 11:case 14:case 15:if(S=D.updateQueue,S!==null&&(S=S.lastEffect,S!==null)){var q=S.next;so(97<T?97:T,function(){var W=q;do{var ce=W.destroy;if(ce!==void 0){var Se=D;try{ce()}catch(It){YA(Se,It)}}W=W.next}while(W!==q)})}break;case 1:yg(D),T=D.stateNode,typeof T.componentWillUnmount=="function"&&Nm(D,T);break;case 5:yg(D);break;case 4:I?gr(S,D,T):P&&ze(D)}}function te(S,D,T){for(var q=D;;)if(K(S,q,T),q.child===null||I&&q.tag===4){if(q===D)break;for(;q.sibling===null;){if(q.return===null||q.return===D)return;q=q.return}q.sibling.return=q.return,q=q.sibling}else q.child.return=q,q=q.child}function Ae(S){var D=S.alternate;S.return=null,S.child=null,S.memoizedState=null,S.updateQueue=null,S.dependencies=null,S.alternate=null,S.firstEffect=null,S.lastEffect=null,S.pendingProps=null,S.memoizedProps=null,D!==null&&Ae(D)}function ze(S){if(P){S=S.stateNode.containerInfo;var D=Br(S);bs(S,D)}}function gt(S){return S.tag===5||S.tag===3||S.tag===4}function ur(S){if(I){e:{for(var D=S.return;D!==null;){if(gt(D)){var T=D;break e}D=D.return}throw Error(n(160))}switch(D=T.stateNode,T.tag){case 5:var q=!1;break;case 3:D=D.containerInfo,q=!0;break;case 4:D=D.containerInfo,q=!0;break;default:throw Error(n(161))}T.effectTag&16&&(Ut(D),T.effectTag&=-17);e:t:for(T=S;;){for(;T.sibling===null;){if(T.return===null||gt(T.return)){T=null;break e}T=T.return}for(T.sibling.return=T.return,T=T.sibling;T.tag!==5&&T.tag!==6&&T.tag!==18;){if(T.effectTag&2||T.child===null||T.tag===4)continue t;T.child.return=T,T=T.child}if(!(T.effectTag&2)){T=T.stateNode;break e}}for(var W=S;;){var ce=W.tag===5||W.tag===6;if(ce)ce=ce?W.stateNode:W.stateNode.instance,T?q?Ne(D,ce,T):ke(D,ce,T):q?z(D,ce):F(D,ce);else if(W.tag!==4&&W.child!==null){W.child.return=W,W=W.child;continue}if(W===S)break;for(;W.sibling===null;){if(W.return===null||W.return===S)return;W=W.return}W.sibling.return=W.return,W=W.sibling}}}function gr(S,D,T){for(var q=D,W=!1,ce,Se;;){if(!W){W=q.return;e:for(;;){if(W===null)throw Error(n(160));switch(ce=W.stateNode,W.tag){case 5:Se=!1;break e;case 3:ce=ce.containerInfo,Se=!0;break e;case 4:ce=ce.containerInfo,Se=!0;break e}W=W.return}W=!0}if(q.tag===5||q.tag===6)te(S,q,T),Se?ht(ce,q.stateNode):st(ce,q.stateNode);else if(q.tag===4){if(q.child!==null){ce=q.stateNode.containerInfo,Se=!0,q.child.return=q,q=q.child;continue}}else if(K(S,q,T),q.child!==null){q.child.return=q,q=q.child;continue}if(q===D)break;for(;q.sibling===null;){if(q.return===null||q.return===D)return;q=q.return,q.tag===4&&(W=!1)}q.sibling.return=q.return,q=q.sibling}}function hn(S,D){if(I)switch(D.tag){case 0:case 11:case 14:case 15:N(4,8,D);break;case 1:break;case 5:var T=D.stateNode;if(T!=null){var q=D.memoizedProps;S=S!==null?S.memoizedProps:q;var W=D.type,ce=D.updateQueue;D.updateQueue=null,ce!==null&&ie(T,ce,W,S,q,D)}break;case 6:if(D.stateNode===null)throw Error(n(162));T=D.memoizedProps,X(D.stateNode,S!==null?S.memoizedProps:T,T);break;case 3:y&&(D=D.stateNode,D.hydrate&&(D.hydrate=!1,Cn(D.containerInfo)));break;case 12:break;case 13:ri(D),Ni(D);break;case 19:Ni(D);break;case 17:break;case 20:break;case 21:break;default:throw Error(n(163))}else{switch(D.tag){case 0:case 11:case 14:case 15:N(4,8,D);return;case 12:return;case 13:ri(D),Ni(D);return;case 19:Ni(D);return;case 3:y&&(T=D.stateNode,T.hydrate&&(T.hydrate=!1,Cn(T.containerInfo)))}e:if(P)switch(D.tag){case 1:case 5:case 6:case 20:break e;case 3:case 4:D=D.stateNode,bs(D.containerInfo,D.pendingChildren);break e;default:throw Error(n(163))}}}function ri(S){var D=S;if(S.memoizedState===null)var T=!1;else T=!0,D=S.child,hI=Hi();if(I&&D!==null){e:if(S=D,I)for(D=S;;){if(D.tag===5){var q=D.stateNode;T?Xt(q):tn(D.stateNode,D.memoizedProps)}else if(D.tag===6)q=D.stateNode,T?xt(q):Dr(q,D.memoizedProps);else if(D.tag===13&&D.memoizedState!==null&&D.memoizedState.dehydrated===null){q=D.child.sibling,q.return=D,D=q;continue}else if(D.child!==null){D.child.return=D,D=D.child;continue}if(D===S)break e;for(;D.sibling===null;){if(D.return===null||D.return===S)break e;D=D.return}D.sibling.return=D.return,D=D.sibling}}}function Ni(S){var D=S.updateQueue;if(D!==null){S.updateQueue=null;var T=S.stateNode;T===null&&(T=S.stateNode=new mg),D.forEach(function(q){var W=hF.bind(null,S,q);T.has(q)||(T.add(q),q.then(W,W))})}}var Eg=typeof WeakMap=="function"?WeakMap:Map;function Fv(S,D,T){T=$i(T,null),T.tag=3,T.payload={element:null};var q=D.value;return T.callback=function(){xu||(xu=!0,_m=q),Va(S,D)},T}function Rv(S,D,T){T=$i(T,null),T.tag=3;var q=S.type.getDerivedStateFromError;if(typeof q=="function"){var W=D.value;T.payload=function(){return Va(S,D),q(W)}}var ce=S.stateNode;return ce!==null&&typeof ce.componentDidCatch=="function"&&(T.callback=function(){typeof q!="function"&&(bu===null?bu=new Set([this]):bu.add(this),Va(S,D));var Se=D.stack;this.componentDidCatch(D.value,{componentStack:Se!==null?Se:""})}),T}var fI=Math.ceil,Cp=u.ReactCurrentDispatcher,pI=u.ReactCurrentOwner,gn=0,Lm=8,rs=16,Ms=32,Pu=0,Om=1,Ci=2,ga=3,xl=4,Qc=5,pr=gn,Ai=null,Fr=null,ns=0,Gi=Pu,Mm=null,Ja=1073741823,UA=1073741823,Um=null,Ip=0,_A=!1,hI=0,gI=500,nr=null,xu=!1,_m=null,bu=null,wp=!1,Cg=null,HA=90,qA=null,Ig=0,dI=null,Hm=0;function da(){return(pr&(rs|Ms))!==gn?1073741821-(Hi()/10|0):Hm!==0?Hm:Hm=1073741821-(Hi()/10|0)}function jA(S,D,T){if(D=D.mode,(D&2)===0)return 1073741823;var q=Mo();if((D&4)===0)return q===99?1073741823:1073741822;if((pr&rs)!==gn)return ns;if(T!==null)S=Ha(S,T.timeoutMs|0||5e3,250);else switch(q){case 99:S=1073741823;break;case 98:S=Ha(S,150,100);break;case 97:case 96:S=Ha(S,5e3,250);break;case 95:S=2;break;default:throw Error(n(326))}return Ai!==null&&S===ns&&--S,S}function kc(S,D){if(50<Ig)throw Ig=0,dI=null,Error(n(185));if(S=wg(S,D),S!==null){var T=Mo();D===1073741823?(pr&Lm)!==gn&&(pr&(rs|Ms))===gn?mI(S):(uo(S),pr===gn&&qi()):uo(S),(pr&4)===gn||T!==98&&T!==99||(qA===null?qA=new Map([[S,D]]):(T=qA.get(S),(T===void 0||T>D)&&qA.set(S,D)))}}function wg(S,D){S.expirationTime<D&&(S.expirationTime=D);var T=S.alternate;T!==null&&T.expirationTime<D&&(T.expirationTime=D);var q=S.return,W=null;if(q===null&&S.tag===3)W=S.stateNode;else for(;q!==null;){if(T=q.alternate,q.childExpirationTime<D&&(q.childExpirationTime=D),T!==null&&T.childExpirationTime<D&&(T.childExpirationTime=D),q.return===null&&q.tag===3){W=q.stateNode;break}q=q.return}return W!==null&&(Ai===W&&(jm(D),Gi===xl&&VA(W,ns)),qv(W,D)),W}function qm(S){var D=S.lastExpiredTime;return D!==0||(D=S.firstPendingTime,!Hv(S,D))?D:(D=S.lastPingedTime,S=S.nextKnownPendingLevel,D>S?D:S)}function uo(S){if(S.lastExpiredTime!==0)S.callbackExpirationTime=1073741823,S.callbackPriority=99,S.callbackNode=Eu(mI.bind(null,S));else{var D=qm(S),T=S.callbackNode;if(D===0)T!==null&&(S.callbackNode=null,S.callbackExpirationTime=0,S.callbackPriority=90);else{var q=da();if(D===1073741823?q=99:D===1||D===2?q=95:(q=10*(1073741821-D)-10*(1073741821-q),q=0>=q?99:250>=q?98:5250>=q?97:95),T!==null){var W=S.callbackPriority;if(S.callbackExpirationTime===D&&W>=q)return;T!==QA&&Ce(T)}S.callbackExpirationTime=D,S.callbackPriority=q,D=D===1073741823?Eu(mI.bind(null,S)):vl(q,Tv.bind(null,S),{timeout:10*(1073741821-D)-Hi()}),S.callbackNode=D}}}function Tv(S,D){if(Hm=0,D)return D=da(),Wm(S,D),uo(S),null;var T=qm(S);if(T!==0){if(D=S.callbackNode,(pr&(rs|Ms))!==gn)throw Error(n(327));if(Bp(),S===Ai&&T===ns||Qu(S,T),Fr!==null){var q=pr;pr|=rs;var W=WA(S);do try{cF();break}catch(It){GA(S,It)}while(1);if(oa(),pr=q,Cp.current=W,Gi===Om)throw D=Mm,Qu(S,T),VA(S,T),uo(S),D;if(Fr===null)switch(W=S.finishedWork=S.current.alternate,S.finishedExpirationTime=T,q=Gi,Ai=null,q){case Pu:case Om:throw Error(n(345));case Ci:Wm(S,2<T?2:T);break;case ga:if(VA(S,T),q=S.lastSuspendedTime,T===q&&(S.nextKnownPendingLevel=EI(W)),Ja===1073741823&&(W=hI+gI-Hi(),10<W)){if(_A){var ce=S.lastPingedTime;if(ce===0||ce>=T){S.lastPingedTime=T,Qu(S,T);break}}if(ce=qm(S),ce!==0&&ce!==T)break;if(q!==0&&q!==T){S.lastPingedTime=q;break}S.timeoutHandle=qe(ku.bind(null,S),W);break}ku(S);break;case xl:if(VA(S,T),q=S.lastSuspendedTime,T===q&&(S.nextKnownPendingLevel=EI(W)),_A&&(W=S.lastPingedTime,W===0||W>=T)){S.lastPingedTime=T,Qu(S,T);break}if(W=qm(S),W!==0&&W!==T)break;if(q!==0&&q!==T){S.lastPingedTime=q;break}if(UA!==1073741823?q=10*(1073741821-UA)-Hi():Ja===1073741823?q=0:(q=10*(1073741821-Ja)-5e3,W=Hi(),T=10*(1073741821-T)-W,q=W-q,0>q&&(q=0),q=(120>q?120:480>q?480:1080>q?1080:1920>q?1920:3e3>q?3e3:4320>q?4320:1960*fI(q/1960))-q,T<q&&(q=T)),10<q){S.timeoutHandle=qe(ku.bind(null,S),q);break}ku(S);break;case Qc:if(Ja!==1073741823&&Um!==null){ce=Ja;var Se=Um;if(q=Se.busyMinDurationMs|0,0>=q?q=0:(W=Se.busyDelayMs|0,ce=Hi()-(10*(1073741821-ce)-(Se.timeoutMs|0||5e3)),q=ce<=W?0:W+q-ce),10<q){VA(S,T),S.timeoutHandle=qe(ku.bind(null,S),q);break}}ku(S);break;default:throw Error(n(329))}if(uo(S),S.callbackNode===D)return Tv.bind(null,S)}}return null}function mI(S){var D=S.lastExpiredTime;if(D=D!==0?D:1073741823,S.finishedExpirationTime===D)ku(S);else{if((pr&(rs|Ms))!==gn)throw Error(n(327));if(Bp(),S===Ai&&D===ns||Qu(S,D),Fr!==null){var T=pr;pr|=rs;var q=WA(S);do try{lF();break}catch(W){GA(S,W)}while(1);if(oa(),pr=T,Cp.current=q,Gi===Om)throw T=Mm,Qu(S,D),VA(S,D),uo(S),T;if(Fr!==null)throw Error(n(261));S.finishedWork=S.current.alternate,S.finishedExpirationTime=D,Ai=null,ku(S),uo(S)}}return null}function Nv(S,D){Wm(S,D),uo(S),(pr&(rs|Ms))===gn&&qi()}function aF(){if(qA!==null){var S=qA;qA=null,S.forEach(function(D,T){Wm(T,D),uo(T)}),qi()}}function Lv(S,D){if((pr&(rs|Ms))!==gn)throw Error(n(187));var T=pr;pr|=1;try{return so(99,S.bind(null,D))}finally{pr=T,qi()}}function Qu(S,D){S.finishedWork=null,S.finishedExpirationTime=0;var T=S.timeoutHandle;if(T!==Oe&&(S.timeoutHandle=Oe,At(T)),Fr!==null)for(T=Fr.return;T!==null;){var q=T;switch(q.tag){case 1:var W=q.type.childContextTypes;W!=null&&Ua(q);break;case 3:wc(q),$t(q);break;case 5:ig(q);break;case 4:wc(q);break;case 13:Ue(Vn,q);break;case 19:Ue(Vn,q);break;case 10:Zi(q)}T=T.return}Ai=S,Fr=KA(S.current,null,D),ns=D,Gi=Pu,Mm=null,UA=Ja=1073741823,Um=null,Ip=0,_A=!1}function GA(S,D){do{try{if(oa(),cI(),Fr===null||Fr.return===null)return Gi=Om,Mm=D,null;e:{var T=S,q=Fr.return,W=Fr,ce=D;if(D=ns,W.effectTag|=2048,W.firstEffect=W.lastEffect=null,ce!==null&&typeof ce=="object"&&typeof ce.then=="function"){var Se=ce,It=(Vn.current&1)!==0,Et=q;do{var bt;if(bt=Et.tag===13){var Nr=Et.memoizedState;if(Nr!==null)bt=Nr.dehydrated!==null;else{var is=Et.memoizedProps;bt=is.fallback===void 0?!1:is.unstable_avoidThisFallback!==!0?!0:!It}}if(bt){var fi=Et.updateQueue;if(fi===null){var Ao=new Set;Ao.add(Se),Et.updateQueue=Ao}else fi.add(Se);if((Et.mode&2)===0){if(Et.effectTag|=64,W.effectTag&=-2981,W.tag===1)if(W.alternate===null)W.tag=17;else{var JA=$i(1073741823,null);JA.tag=2,mi(W,JA)}W.expirationTime=1073741823;break e}ce=void 0,W=D;var qo=T.pingCache;if(qo===null?(qo=T.pingCache=new Eg,ce=new Set,qo.set(Se,ce)):(ce=qo.get(Se),ce===void 0&&(ce=new Set,qo.set(Se,ce))),!ce.has(W)){ce.add(W);var rt=pF.bind(null,T,Se,W);Se.then(rt,rt)}Et.effectTag|=4096,Et.expirationTime=D;break e}Et=Et.return}while(Et!==null);ce=Error((ge(W.type)||"A React component")+` suspended while rendering, but no fallback UI was specified. |
283 | 283 | ||
284 | Add a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.`+dl(W))}Gi!==Sc&&(Gi=Ci),ce=fg(ce,W),Et=q;do{switch(Et.tag){case 3:Se=ce,Et.effectTag|=4096,Et.expirationTime=D;var Ve=Bv(Et,Se,D);Ma(Et,Ve);break e;case 1:Se=ce;var ft=Et.type,jt=Et.stateNode;if((Et.effectTag&64)===0&&(typeof ft.getDerivedStateFromError=="function"||jt!==null&&typeof jt.componentDidCatch=="function"&&(xu===null||!xu.has(jt)))){Et.effectTag|=4096,Et.expirationTime=D;var Er=vv(Et,Se,D);Ma(Et,Er);break e}}Et=Et.return}while(Et!==null)}Fr=bv(Fr)}catch(In){D=In;continue}break}while(1)}function qA(){var S=mp.current;return mp.current=vu,S===null?vu:S}function hI(S,D){S<Ya&&2<S&&(Ya=S),D!==null&&S<LA&&2<S&&(LA=S,Tm=D)}function Mm(S){S>yp&&(yp=S)}function iF(){for(;Fr!==null;)Fr=xv(Fr)}function sF(){for(;Fr!==null&&!Rt();)Fr=xv(Fr)}function xv(S){var D=kv(S.alternate,S,ns);return S.memoizedProps=S.pendingProps,D===null&&(D=bv(S)),cI.current=null,D}function bv(S){Fr=S;do{var D=Fr.alternate;if(S=Fr.return,(Fr.effectTag&2048)===0){e:{var T=D;D=Fr;var q=ns,W=D.pendingProps;switch(D.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:Zn(D.type)&&La(D);break;case 3:yc(D),$t(D),W=D.stateNode,W.pendingContext&&(W.context=W.pendingContext,W.pendingContext=null),(T===null||T.child===null)&&ja(D)&&fa(D),Bl(D);break;case 5:eg(D);var ce=la(mc.current);if(q=D.type,T!==null&&D.stateNode!=null)ts(T,D,q,W,ce),T.ref!==D.ref&&(D.effectTag|=128);else if(W){if(T=la(lo.current),ja(D)){if(W=D,!y)throw Error(n(175));T=op(W.stateNode,W.type,W.memoizedProps,ce,T,W),W.updateQueue=T,T=T!==null,T&&fa(D)}else{var Se=ut(q,W,ce,T,D);vc(Se,D,!1,!1),D.stateNode=Se,yt(Se,q,W,ce,T)&&fa(D)}D.ref!==null&&(D.effectTag|=128)}else if(D.stateNode===null)throw Error(n(166));break;case 6:if(T&&D.stateNode!=null)Hr(T,D,T.memoizedProps,W);else{if(typeof W!="string"&&D.stateNode===null)throw Error(n(166));if(T=la(mc.current),ce=la(lo.current),ja(D)){if(T=D,!y)throw Error(n(176));(T=ap(T.stateNode,T.memoizedProps,T))&&fa(D)}else D.stateNode=Ue(W,T,ce,D)}break;case 11:break;case 13:if(_e(Kn,D),W=D.memoizedState,(D.effectTag&64)!==0){D.expirationTime=q;break e}W=W!==null,ce=!1,T===null?D.memoizedProps.fallback!==void 0&&ja(D):(q=T.memoizedState,ce=q!==null,W||q===null||(q=T.child.sibling,q!==null&&(Se=D.firstEffect,Se!==null?(D.firstEffect=q,q.nextEffect=Se):(D.firstEffect=D.lastEffect=q,q.nextEffect=null),q.effectTag=8))),W&&!ce&&(D.mode&2)!==0&&(T===null&&D.memoizedProps.unstable_avoidThisFallback!==!0||(Kn.current&1)!==0?Gi===Su&&(Gi=pa):((Gi===Su||Gi===pa)&&(Gi=vl),yp!==0&&Ai!==null&&(WA(Ai,ns),Rv(Ai,yp)))),P&&W&&(D.effectTag|=4),I&&(W||ce)&&(D.effectTag|=4);break;case 7:break;case 8:break;case 12:break;case 4:yc(D),Bl(D);break;case 10:Zi(D);break;case 9:break;case 14:break;case 17:Zn(D.type)&&La(D);break;case 19:if(_e(Kn,D),W=D.memoizedState,W===null)break;if(ce=(D.effectTag&64)!==0,Se=W.rendering,Se===null){if(ce)Dc(W,!1);else if(Gi!==Su||T!==null&&(T.effectTag&64)!==0)for(T=D.child;T!==null;){if(Se=cp(T),Se!==null){for(D.effectTag|=64,Dc(W,!1),T=Se.updateQueue,T!==null&&(D.updateQueue=T,D.effectTag|=4),W.lastEffect===null&&(D.firstEffect=null),D.lastEffect=W.lastEffect,T=q,W=D.child;W!==null;)ce=W,q=T,ce.effectTag&=2,ce.nextEffect=null,ce.firstEffect=null,ce.lastEffect=null,Se=ce.alternate,Se===null?(ce.childExpirationTime=0,ce.expirationTime=q,ce.child=null,ce.memoizedProps=null,ce.memoizedState=null,ce.updateQueue=null,ce.dependencies=null):(ce.childExpirationTime=Se.childExpirationTime,ce.expirationTime=Se.expirationTime,ce.child=Se.child,ce.memoizedProps=Se.memoizedProps,ce.memoizedState=Se.memoizedState,ce.updateQueue=Se.updateQueue,q=Se.dependencies,ce.dependencies=q===null?null:{expirationTime:q.expirationTime,firstContext:q.firstContext,responders:q.responders}),W=W.sibling;Fn(Kn,Kn.current&1|2,D),D=D.child;break e}T=T.sibling}}else{if(!ce)if(T=cp(Se),T!==null){if(D.effectTag|=64,ce=!0,T=T.updateQueue,T!==null&&(D.updateQueue=T,D.effectTag|=4),Dc(W,!0),W.tail===null&&W.tailMode==="hidden"&&!Se.alternate){D=D.lastEffect=W.lastEffect,D!==null&&(D.nextEffect=null);break}}else Hi()>W.tailExpiration&&1<q&&(D.effectTag|=64,ce=!0,Dc(W,!1),D.expirationTime=D.childExpirationTime=q-1);W.isBackwards?(Se.sibling=D.child,D.child=Se):(T=W.last,T!==null?T.sibling=Se:D.child=Se,W.last=Se)}if(W.tail!==null){W.tailExpiration===0&&(W.tailExpiration=Hi()+500),T=W.tail,W.rendering=T,W.tail=T.sibling,W.lastEffect=D.lastEffect,T.sibling=null,W=Kn.current,W=ce?W&1|2:W&1,Fn(Kn,W,D),D=T;break e}break;case 20:break;case 21:break;default:throw Error(n(156,D.tag))}D=null}if(T=Fr,ns===1||T.childExpirationTime!==1){for(W=0,ce=T.child;ce!==null;)q=ce.expirationTime,Se=ce.childExpirationTime,q>W&&(W=q),Se>W&&(W=Se),ce=ce.sibling;T.childExpirationTime=W}if(D!==null)return D;S!==null&&(S.effectTag&2048)===0&&(S.firstEffect===null&&(S.firstEffect=Fr.firstEffect),Fr.lastEffect!==null&&(S.lastEffect!==null&&(S.lastEffect.nextEffect=Fr.firstEffect),S.lastEffect=Fr.lastEffect),1<Fr.effectTag&&(S.lastEffect!==null?S.lastEffect.nextEffect=Fr:S.firstEffect=Fr,S.lastEffect=Fr))}else{if(D=aI(Fr,ns),D!==null)return D.effectTag&=2047,D;S!==null&&(S.firstEffect=S.lastEffect=null,S.effectTag|=2048)}if(D=Fr.sibling,D!==null)return D;Fr=S}while(Fr!==null);return Gi===Su&&(Gi=Sc),null}function gI(S){var D=S.expirationTime;return S=S.childExpirationTime,D>S?D:S}function Qu(S){var D=Lo();return so(99,oF.bind(null,S,D)),null}function oF(S,D){do Cp();while(dg!==null);if((pr&(rs|Ms))!==gn)throw Error(n(327));var T=S.finishedWork,q=S.finishedExpirationTime;if(T===null)return null;if(S.finishedWork=null,S.finishedExpirationTime=0,T===S.current)throw Error(n(177));S.callbackNode=null,S.callbackExpirationTime=0,S.callbackPriority=90,S.nextKnownPendingLevel=0;var W=gI(T);if(S.firstPendingTime=W,q<=S.lastSuspendedTime?S.firstSuspendedTime=S.lastSuspendedTime=S.nextKnownPendingLevel=0:q<=S.firstSuspendedTime&&(S.firstSuspendedTime=q-1),q<=S.lastPingedTime&&(S.lastPingedTime=0),q<=S.lastExpiredTime&&(S.lastExpiredTime=0),S===Ai&&(Fr=Ai=null,ns=0),1<T.effectTag?T.lastEffect!==null?(T.lastEffect.nextEffect=T,W=T.firstEffect):W=T:W=T.firstEffect,W!==null){var ce=pr;pr|=Ms,cI.current=null,me(S.containerInfo),nr=W;do try{aF()}catch(fo){if(nr===null)throw Error(n(330));jA(nr,fo),nr=nr.nextEffect}while(nr!==null);nr=W;do try{for(var Se=S,It=D;nr!==null;){var Et=nr.effectTag;if(Et&16&&I&&Ut(nr.stateNode),Et&128){var xt=nr.alternate;if(xt!==null){var Nr=xt.ref;Nr!==null&&(typeof Nr=="function"?Nr(null):Nr.current=null)}}switch(Et&1038){case 2:ur(nr),nr.effectTag&=-3;break;case 6:ur(nr),nr.effectTag&=-3,hn(nr.alternate,nr);break;case 1024:nr.effectTag&=-1025;break;case 1028:nr.effectTag&=-1025,hn(nr.alternate,nr);break;case 4:hn(nr.alternate,nr);break;case 8:var is=Se,fi=nr,Ao=It;I?gr(is,fi,Ao):te(is,fi,Ao),ue(fi)}nr=nr.nextEffect}}catch(fo){if(nr===null)throw Error(n(330));jA(nr,fo),nr=nr.nextEffect}while(nr!==null);be(S.containerInfo),S.current=T,nr=W;do try{for(Et=q;nr!==null;){var YA=nr.effectTag;if(YA&36){var _o=nr.alternate;switch(xt=nr,Nr=Et,xt.tag){case 0:case 11:case 15:N(16,32,xt);break;case 1:var rt=xt.stateNode;if(xt.effectTag&4)if(_o===null)rt.componentDidMount();else{var Ve=xt.elementType===xt.type?_o.memoizedProps:di(xt.type,_o.memoizedProps);rt.componentDidUpdate(Ve,_o.memoizedState,rt.__reactInternalSnapshotBeforeUpdate)}var ft=xt.updateQueue;ft!==null&&qe(xt,ft,rt,Nr);break;case 3:var jt=xt.updateQueue;if(jt!==null){if(Se=null,xt.child!==null)switch(xt.child.tag){case 5:Se=de(xt.child.stateNode);break;case 1:Se=xt.child.stateNode}qe(xt,jt,Se,Nr)}break;case 5:var Er=xt.stateNode;_o===null&&xt.effectTag&4&&$(Er,xt.type,xt.memoizedProps,xt);break;case 6:break;case 4:break;case 12:break;case 13:if(y&&xt.memoizedState===null){var In=xt.alternate;if(In!==null){var Sr=In.memoizedState;if(Sr!==null){var wn=Sr.dehydrated;wn!==null&&no(wn)}}}break;case 19:case 17:case 20:case 21:break;default:throw Error(n(163))}}if(YA&128){xt=void 0;var ri=nr.ref;if(ri!==null){var Xr=nr.stateNode;switch(nr.tag){case 5:xt=de(Xr);break;default:xt=Xr}typeof ri=="function"?ri(xt):ri.current=xt}}nr=nr.nextEffect}}catch(fo){if(nr===null)throw Error(n(330));jA(nr,fo),nr=nr.nextEffect}while(nr!==null);nr=null,Dn(),pr=ce}else S.current=T;if(Ep)Ep=!1,dg=S,MA=D;else for(nr=W;nr!==null;)D=nr.nextEffect,nr.nextEffect=null,nr=D;if(D=S.firstPendingTime,D===0&&(xu=null),D===1073741823?S===fI?mg++:(mg=0,fI=S):mg=0,typeof dI=="function"&&dI(T.stateNode,q),uo(S),Pu)throw Pu=!1,S=Nm,Nm=null,S;return(pr&km)!==gn||qi(),null}function aF(){for(;nr!==null;){var S=nr.effectTag;(S&256)!==0&&kt(nr.alternate,nr),(S&512)===0||Ep||(Ep=!0,Cl(97,function(){return Cp(),null})),nr=nr.nextEffect}}function Cp(){if(MA!==90){var S=97<MA?97:MA;return MA=90,so(S,lF)}}function lF(){if(dg===null)return!1;var S=dg;if(dg=null,(pr&(rs|Ms))!==gn)throw Error(n(331));var D=pr;for(pr|=Ms,S=S.current.firstEffect;S!==null;){try{var T=S;if((T.effectTag&512)!==0)switch(T.tag){case 0:case 11:case 15:N(128,0,T),N(0,64,T)}}catch(q){if(S===null)throw Error(n(330));jA(S,q)}T=S.nextEffect,S.nextEffect=null,S=T}return pr=D,qi(),!0}function Qv(S,D,T){D=fg(T,D),D=Bv(S,D,1073741823),mi(S,D),S=yg(S,1073741823),S!==null&&uo(S)}function jA(S,D){if(S.tag===3)Qv(S,S,D);else for(var T=S.return;T!==null;){if(T.tag===3){Qv(T,S,D);break}else if(T.tag===1){var q=T.stateNode;if(typeof T.type.getDerivedStateFromError=="function"||typeof q.componentDidCatch=="function"&&(xu===null||!xu.has(q))){S=fg(D,S),S=vv(T,S,1073741823),mi(T,S),T=yg(T,1073741823),T!==null&&uo(T);break}}T=T.return}}function cF(S,D,T){var q=S.pingCache;q!==null&&q.delete(D),Ai===S&&ns===T?Gi===vl||Gi===pa&&Ya===1073741823&&Hi()-uI<AI?bu(S,ns):OA=!0:Fv(S,T)&&(D=S.lastPingedTime,D!==0&&D<T||(S.lastPingedTime=T,S.finishedExpirationTime===T&&(S.finishedExpirationTime=0,S.finishedWork=null),uo(S)))}function uF(S,D){var T=S.stateNode;T!==null&&T.delete(D),D=0,D===0&&(D=ha(),D=_A(D,S,null)),S=yg(S,D),S!==null&&uo(S)}var kv;kv=function(S,D,T){var q=D.expirationTime;if(S!==null){var W=D.pendingProps;if(S.memoizedProps!==W||Ui.current)Mo=!0;else{if(q<T){switch(Mo=!1,D.tag){case 3:Ag(D),ug();break;case 5:if(vm(D),D.mode&4&&T!==1&&Qe(D.type,W))return D.expirationTime=D.childExpirationTime=1,null;break;case 1:Zn(D.type)&&fc(D);break;case 4:$h(D,D.stateNode.containerInfo);break;case 10:Oo(D,D.memoizedProps.value);break;case 13:if(D.memoizedState!==null)return q=D.child.childExpirationTime,q!==0&&q>=T?rn(S,D,T):(Fn(Kn,Kn.current&1,D),D=ei(S,D,T),D!==null?D.sibling:null);Fn(Kn,Kn.current&1,D);break;case 19:if(q=D.childExpirationTime>=T,(S.effectTag&64)!==0){if(q)return Ga(S,D,T);D.effectTag|=64}if(W=D.memoizedState,W!==null&&(W.rendering=null,W.tail=null),Fn(Kn,Kn.current,D),!q)return null}return ei(S,D,T)}Mo=!1}}else Mo=!1;switch(D.expirationTime=0,D.tag){case 2:if(q=D.type,S!==null&&(S.alternate=null,D.alternate=null,D.effectTag|=2),S=D.pendingProps,W=Ri(D,Rn.current),Ns(D,T),W=rg(null,D,q,S,W,T),D.effectTag|=1,typeof W=="object"&&W!==null&&typeof W.render=="function"&&W.$$typeof===void 0){if(D.tag=1,sI(),Zn(q)){var ce=!0;fc(D)}else ce=!1;D.memoizedState=W.state!==null&&W.state!==void 0?W.state:null;var Se=q.getDerivedStateFromProps;typeof Se=="function"&&vt(D,q,Se,S),W.updater=tr,D.stateNode=W,W._reactInternalFiber=D,$n(D,q,S,T),D=gp(null,D,q,!0,ce,T)}else D.tag=0,Es(null,D,W,T),D=D.child;return D;case 16:if(W=D.elementType,S!==null&&(S.alternate=null,D.alternate=null,D.effectTag|=2),S=D.pendingProps,ve(W),W._status!==1)throw W._result;switch(W=W._result,D.type=W,ce=D.tag=pF(W),S=di(W,S),ce){case 0:D=TA(null,D,W,S,T);break;case 1:D=hp(null,D,W,S,T);break;case 11:D=Ei(null,D,W,S,T);break;case 14:D=xm(null,D,W,di(W.type,S),q,T);break;default:throw Error(n(306,W,""))}return D;case 0:return q=D.type,W=D.pendingProps,W=D.elementType===q?W:di(q,W),TA(S,D,q,W,T);case 1:return q=D.type,W=D.pendingProps,W=D.elementType===q?W:di(q,W),hp(S,D,q,W,T);case 3:if(Ag(D),q=D.updateQueue,q===null)throw Error(n(282));if(W=D.memoizedState,W=W!==null?W.element:null,we(D,q,D.pendingProps,null,T),q=D.memoizedState.element,q===W)ug(),D=ei(S,D,T);else{if((W=D.stateNode.hydrate)&&(y?(Bc=hu(D.stateNode.containerInfo),ua=D,W=wl=!0):W=!1),W)for(T=aa(D,null,q,T),D.child=T;T;)T.effectTag=T.effectTag&-3|1024,T=T.sibling;else Es(S,D,q,T),ug();D=D.child}return D;case 5:return vm(D),S===null&&RA(D),q=D.type,W=D.pendingProps,ce=S!==null?S.memoizedProps:null,Se=W.children,Te(q,W)?Se=null:ce!==null&&Te(q,ce)&&(D.effectTag|=16),Uo(S,D),D.mode&4&&T!==1&&Qe(q,W)?(D.expirationTime=D.childExpirationTime=1,D=null):(Es(S,D,Se,T),D=D.child),D;case 6:return S===null&&RA(D),null;case 13:return rn(S,D,T);case 4:return $h(D,D.stateNode.containerInfo),q=D.pendingProps,S===null?D.child=yi(D,null,q,T):Es(S,D,q,T),D.child;case 11:return q=D.type,W=D.pendingProps,W=D.elementType===q?W:di(q,W),Ei(S,D,q,W,T);case 7:return Es(S,D,D.pendingProps,T),D.child;case 8:return Es(S,D,D.pendingProps.children,T),D.child;case 12:return Es(S,D,D.pendingProps.children,T),D.child;case 10:e:{if(q=D.type._context,W=D.pendingProps,Se=D.memoizedProps,ce=W.value,Oo(D,ce),Se!==null){var It=Se.value;if(ce=ds(It,ce)?0:(typeof q._calculateChangedBits=="function"?q._calculateChangedBits(It,ce):1073741823)|0,ce===0){if(Se.children===W.children&&!Ui.current){D=ei(S,D,T);break e}}else for(It=D.child,It!==null&&(It.return=D);It!==null;){var Et=It.dependencies;if(Et!==null){Se=It.child;for(var xt=Et.firstContext;xt!==null;){if(xt.context===q&&(xt.observedBits&ce)!==0){It.tag===1&&(xt=$i(T,null),xt.tag=2,mi(It,xt)),It.expirationTime<T&&(It.expirationTime=T),xt=It.alternate,xt!==null&&xt.expirationTime<T&&(xt.expirationTime=T),Ts(It.return,T),Et.expirationTime<T&&(Et.expirationTime=T);break}xt=xt.next}}else Se=It.tag===10&&It.type===D.type?null:It.child;if(Se!==null)Se.return=It;else for(Se=It;Se!==null;){if(Se===D){Se=null;break}if(It=Se.sibling,It!==null){It.return=Se.return,Se=It;break}Se=Se.return}It=Se}}Es(S,D,W.children,T),D=D.child}return D;case 9:return W=D.type,ce=D.pendingProps,q=ce.children,Ns(D,T),W=Ls(W,ce.unstable_observedBits),q=q(W),D.effectTag|=1,Es(S,D,q,T),D.child;case 14:return W=D.type,ce=di(W,D.pendingProps),ce=di(W.type,ce),xm(S,D,W,ce,q,T);case 15:return bm(S,D,D.type,D.pendingProps,q,T);case 17:return q=D.type,W=D.pendingProps,W=D.elementType===q?W:di(q,W),S!==null&&(S.alternate=null,D.alternate=null,D.effectTag|=2),D.tag=1,Zn(q)?(S=!0,fc(D)):S=!1,Ns(D,T),Tn(D,q,W,T),$n(D,q,W,T),gp(null,D,q,!0,S,T);case 19:return Ga(S,D,T)}throw Error(n(156,D.tag))};var dI=null,mI=null;function AF(S){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")return!1;var D=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(D.isDisabled||!D.supportsFiber)return!0;try{var T=D.inject(S);dI=function(q){try{D.onCommitFiberRoot(T,q,void 0,(q.current.effectTag&64)===64)}catch{}},mI=function(q){try{D.onCommitFiberUnmount(T,q)}catch{}}}catch{}return!0}function fF(S,D,T,q){this.tag=S,this.key=T,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=D,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=q,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function Dl(S,D,T,q){return new fF(S,D,T,q)}function yI(S){return S=S.prototype,!(!S||!S.isReactComponent)}function pF(S){if(typeof S=="function")return yI(S)?1:0;if(S!=null){if(S=S.$$typeof,S===L)return 11;if(S===re)return 14}return 2}function GA(S,D){var T=S.alternate;return T===null?(T=Dl(S.tag,D,S.key,S.mode),T.elementType=S.elementType,T.type=S.type,T.stateNode=S.stateNode,T.alternate=S,S.alternate=T):(T.pendingProps=D,T.effectTag=0,T.nextEffect=null,T.firstEffect=null,T.lastEffect=null),T.childExpirationTime=S.childExpirationTime,T.expirationTime=S.expirationTime,T.child=S.child,T.memoizedProps=S.memoizedProps,T.memoizedState=S.memoizedState,T.updateQueue=S.updateQueue,D=S.dependencies,T.dependencies=D===null?null:{expirationTime:D.expirationTime,firstContext:D.firstContext,responders:D.responders},T.sibling=S.sibling,T.index=S.index,T.ref=S.ref,T}function Um(S,D,T,q,W,ce){var Se=2;if(q=S,typeof S=="function")yI(S)&&(Se=1);else if(typeof S=="string")Se=5;else e:switch(S){case C:return ku(T.children,W,ce,D);case R:Se=8,W|=7;break;case w:Se=8,W|=1;break;case v:return S=Dl(12,T,D,W|8),S.elementType=v,S.type=v,S.expirationTime=ce,S;case _:return S=Dl(13,T,D,W),S.type=_,S.elementType=_,S.expirationTime=ce,S;case J:return S=Dl(19,T,D,W),S.elementType=J,S.expirationTime=ce,S;default:if(typeof S=="object"&&S!==null)switch(S.$$typeof){case b:Se=10;break e;case E:Se=9;break e;case L:Se=11;break e;case re:Se=14;break e;case oe:Se=16,q=null;break e}throw Error(n(130,S==null?S:typeof S,""))}return D=Dl(Se,T,D,W),D.elementType=S,D.type=q,D.expirationTime=ce,D}function ku(S,D,T,q){return S=Dl(7,S,q,D),S.expirationTime=T,S}function EI(S,D,T){return S=Dl(6,S,null,D),S.expirationTime=T,S}function CI(S,D,T){return D=Dl(4,S.children!==null?S.children:[],S.key,D),D.expirationTime=T,D.stateNode={containerInfo:S.containerInfo,pendingChildren:null,implementation:S.implementation},D}function hF(S,D,T){this.tag=D,this.current=null,this.containerInfo=S,this.pingCache=this.pendingChildren=null,this.finishedExpirationTime=0,this.finishedWork=null,this.timeoutHandle=Le,this.pendingContext=this.context=null,this.hydrate=T,this.callbackNode=null,this.callbackPriority=90,this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}function Fv(S,D){var T=S.firstSuspendedTime;return S=S.lastSuspendedTime,T!==0&&T>=D&&S<=D}function WA(S,D){var T=S.firstSuspendedTime,q=S.lastSuspendedTime;T<D&&(S.firstSuspendedTime=D),(q>D||T===0)&&(S.lastSuspendedTime=D),D<=S.lastPingedTime&&(S.lastPingedTime=0),D<=S.lastExpiredTime&&(S.lastExpiredTime=0)}function Rv(S,D){D>S.firstPendingTime&&(S.firstPendingTime=D);var T=S.firstSuspendedTime;T!==0&&(D>=T?S.firstSuspendedTime=S.lastSuspendedTime=S.nextKnownPendingLevel=0:D>=S.lastSuspendedTime&&(S.lastSuspendedTime=D+1),D>S.nextKnownPendingLevel&&(S.nextKnownPendingLevel=D))}function _m(S,D){var T=S.lastExpiredTime;(T===0||T>D)&&(S.lastExpiredTime=D)}function Tv(S){var D=S._reactInternalFiber;if(D===void 0)throw typeof S.render=="function"?Error(n(188)):Error(n(268,Object.keys(S)));return S=De(D),S===null?null:S.stateNode}function Nv(S,D){S=S.memoizedState,S!==null&&S.dehydrated!==null&&S.retryTime<D&&(S.retryTime=D)}function Hm(S,D){Nv(S,D),(S=S.alternate)&&Nv(S,D)}var Lv={createContainer:function(S,D,T){return S=new hF(S,D,T),D=Dl(3,null,null,D===2?7:D===1?3:0),S.current=D,D.stateNode=S},updateContainer:function(S,D,T,q){var W=D.current,ce=ha(),Se=xe.suspense;ce=_A(ce,W,Se);e:if(T){T=T._reactInternalFiber;t:{if(le(T)!==T||T.tag!==1)throw Error(n(170));var It=T;do{switch(It.tag){case 3:It=It.stateNode.context;break t;case 1:if(Zn(It.type)){It=It.stateNode.__reactInternalMemoizedMergedChildContext;break t}}It=It.return}while(It!==null);throw Error(n(171))}if(T.tag===1){var Et=T.type;if(Zn(Et)){T=gu(T,Et,It);break e}}T=It}else T=Fi;return D.context===null?D.context=T:D.pendingContext=T,D=$i(ce,Se),D.payload={element:S},q=q===void 0?null:q,q!==null&&(D.callback=q),mi(W,D),Pc(W,ce),ce},batchedEventUpdates:function(S,D){var T=pr;pr|=2;try{return S(D)}finally{pr=T,pr===gn&&qi()}},batchedUpdates:function(S,D){var T=pr;pr|=1;try{return S(D)}finally{pr=T,pr===gn&&qi()}},unbatchedUpdates:function(S,D){var T=pr;pr&=-2,pr|=km;try{return S(D)}finally{pr=T,pr===gn&&qi()}},deferredUpdates:function(S){return so(97,S)},syncUpdates:function(S,D,T,q){return so(99,S.bind(null,D,T,q))},discreteUpdates:function(S,D,T,q){var W=pr;pr|=4;try{return so(98,S.bind(null,D,T,q))}finally{pr=W,pr===gn&&qi()}},flushDiscreteUpdates:function(){(pr&(1|rs|Ms))===gn&&(nF(),Cp())},flushControlled:function(S){var D=pr;pr|=1;try{so(99,S)}finally{pr=D,pr===gn&&qi()}},flushSync:Pv,flushPassiveEffects:Cp,IsThisRendererActing:{current:!1},getPublicRootInstance:function(S){if(S=S.current,!S.child)return null;switch(S.child.tag){case 5:return de(S.child.stateNode);default:return S.child.stateNode}},attemptSynchronousHydration:function(S){switch(S.tag){case 3:var D=S.stateNode;D.hydrate&&Sv(D,D.firstPendingTime);break;case 13:Pv(function(){return Pc(S,1073741823)}),D=Oa(ha(),150,100),Hm(S,D)}},attemptUserBlockingHydration:function(S){if(S.tag===13){var D=Oa(ha(),150,100);Pc(S,D),Hm(S,D)}},attemptContinuousHydration:function(S){if(S.tag===13){ha();var D=bA++;Pc(S,D),Hm(S,D)}},attemptHydrationAtCurrentPriority:function(S){if(S.tag===13){var D=ha();D=_A(D,S,null),Pc(S,D),Hm(S,D)}},findHostInstance:Tv,findHostInstanceWithWarning:function(S){return Tv(S)},findHostInstanceWithNoPortals:function(S){return S=Ee(S),S===null?null:S.tag===20?S.stateNode.instance:S.stateNode},shouldSuspend:function(){return!1},injectIntoDevTools:function(S){var D=S.findFiberByHostInstance;return AF(r({},S,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:u.ReactCurrentDispatcher,findHostInstanceByFiber:function(T){return T=De(T),T===null?null:T.stateNode},findFiberByHostInstance:function(T){return D?D(T):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))}};G2.exports=Lv.default||Lv;var gF=G2.exports;return G2.exports=t,gF}});var qEe=U((fYt,HEe)=>{"use strict";HEe.exports=_Ee()});var GEe=U((pYt,jEe)=>{"use strict";var Wmt={ALIGN_COUNT:8,ALIGN_AUTO:0,ALIGN_FLEX_START:1,ALIGN_CENTER:2,ALIGN_FLEX_END:3,ALIGN_STRETCH:4,ALIGN_BASELINE:5,ALIGN_SPACE_BETWEEN:6,ALIGN_SPACE_AROUND:7,DIMENSION_COUNT:2,DIMENSION_WIDTH:0,DIMENSION_HEIGHT:1,DIRECTION_COUNT:3,DIRECTION_INHERIT:0,DIRECTION_LTR:1,DIRECTION_RTL:2,DISPLAY_COUNT:2,DISPLAY_FLEX:0,DISPLAY_NONE:1,EDGE_COUNT:9,EDGE_LEFT:0,EDGE_TOP:1,EDGE_RIGHT:2,EDGE_BOTTOM:3,EDGE_START:4,EDGE_END:5,EDGE_HORIZONTAL:6,EDGE_VERTICAL:7,EDGE_ALL:8,EXPERIMENTAL_FEATURE_COUNT:1,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:0,FLEX_DIRECTION_COUNT:4,FLEX_DIRECTION_COLUMN:0,FLEX_DIRECTION_COLUMN_REVERSE:1,FLEX_DIRECTION_ROW:2,FLEX_DIRECTION_ROW_REVERSE:3,JUSTIFY_COUNT:6,JUSTIFY_FLEX_START:0,JUSTIFY_CENTER:1,JUSTIFY_FLEX_END:2,JUSTIFY_SPACE_BETWEEN:3,JUSTIFY_SPACE_AROUND:4,JUSTIFY_SPACE_EVENLY:5,LOG_LEVEL_COUNT:6,LOG_LEVEL_ERROR:0,LOG_LEVEL_WARN:1,LOG_LEVEL_INFO:2,LOG_LEVEL_DEBUG:3,LOG_LEVEL_VERBOSE:4,LOG_LEVEL_FATAL:5,MEASURE_MODE_COUNT:3,MEASURE_MODE_UNDEFINED:0,MEASURE_MODE_EXACTLY:1,MEASURE_MODE_AT_MOST:2,NODE_TYPE_COUNT:2,NODE_TYPE_DEFAULT:0,NODE_TYPE_TEXT:1,OVERFLOW_COUNT:3,OVERFLOW_VISIBLE:0,OVERFLOW_HIDDEN:1,OVERFLOW_SCROLL:2,POSITION_TYPE_COUNT:2,POSITION_TYPE_RELATIVE:0,POSITION_TYPE_ABSOLUTE:1,PRINT_OPTIONS_COUNT:3,PRINT_OPTIONS_LAYOUT:1,PRINT_OPTIONS_STYLE:2,PRINT_OPTIONS_CHILDREN:4,UNIT_COUNT:4,UNIT_UNDEFINED:0,UNIT_POINT:1,UNIT_PERCENT:2,UNIT_AUTO:3,WRAP_COUNT:3,WRAP_NO_WRAP:0,WRAP_WRAP:1,WRAP_WRAP_REVERSE:2};jEe.exports=Wmt});var JEe=U((hYt,KEe)=>{"use strict";var Ymt=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(t[o]=r[o])}return t},kQ=function(){function t(e,r){for(var o=0;o<r.length;o++){var a=r[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(e,r,o){return r&&t(e.prototype,r),o&&t(e,o),e}}();function D6(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function S6(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var nu=GEe(),Kmt=function(){function t(e,r,o,a,n,u){S6(this,t),this.left=e,this.right=r,this.top=o,this.bottom=a,this.width=n,this.height=u}return kQ(t,[{key:"fromJS",value:function(r){r(this.left,this.right,this.top,this.bottom,this.width,this.height)}},{key:"toString",value:function(){return"<Layout#"+this.left+":"+this.right+";"+this.top+":"+this.bottom+";"+this.width+":"+this.height+">"}}]),t}(),WEe=function(){kQ(t,null,[{key:"fromJS",value:function(r){var o=r.width,a=r.height;return new t(o,a)}}]);function t(e,r){S6(this,t),this.width=e,this.height=r}return kQ(t,[{key:"fromJS",value:function(r){r(this.width,this.height)}},{key:"toString",value:function(){return"<Size#"+this.width+"x"+this.height+">"}}]),t}(),YEe=function(){function t(e,r){S6(this,t),this.unit=e,this.value=r}return kQ(t,[{key:"fromJS",value:function(r){r(this.unit,this.value)}},{key:"toString",value:function(){switch(this.unit){case nu.UNIT_POINT:return String(this.value);case nu.UNIT_PERCENT:return this.value+"%";case nu.UNIT_AUTO:return"auto";default:return this.value+"?"}}},{key:"valueOf",value:function(){return this.value}}]),t}();KEe.exports=function(t,e){function r(u,A,p){var h=u[A];u[A]=function(){for(var C=arguments.length,w=Array(C),v=0;v<C;v++)w[v]=arguments[v];return p.call.apply(p,[this,h].concat(w))}}for(var o=["setPosition","setMargin","setFlexBasis","setWidth","setHeight","setMinWidth","setMinHeight","setMaxWidth","setMaxHeight","setPadding"],a=function(){var A,p=o[n],h=(A={},D6(A,nu.UNIT_POINT,e.Node.prototype[p]),D6(A,nu.UNIT_PERCENT,e.Node.prototype[p+"Percent"]),D6(A,nu.UNIT_AUTO,e.Node.prototype[p+"Auto"]),A);r(e.Node.prototype,p,function(C){for(var w=arguments.length,v=Array(w>1?w-1:0),b=1;b<w;b++)v[b-1]=arguments[b];var E=v.pop(),R=void 0,L=void 0;if(E==="auto")R=nu.UNIT_AUTO,L=void 0;else if(E instanceof YEe)R=E.unit,L=E.valueOf();else if(R=typeof E=="string"&&E.endsWith("%")?nu.UNIT_PERCENT:nu.UNIT_POINT,L=parseFloat(E),!Number.isNaN(E)&&Number.isNaN(L))throw new Error("Invalid value "+E+" for "+p);if(!h[R])throw new Error('Failed to execute "'+p+`": Unsupported unit '`+E+"'");if(L!==void 0){var _;return(_=h[R]).call.apply(_,[this].concat(v,[L]))}else{var J;return(J=h[R]).call.apply(J,[this].concat(v))}})},n=0;n<o.length;n++)a();return r(e.Config.prototype,"free",function(){e.Config.destroy(this)}),r(e.Node,"create",function(u,A){return A?e.Node.createWithConfig(A):e.Node.createDefault()}),r(e.Node.prototype,"free",function(){e.Node.destroy(this)}),r(e.Node.prototype,"freeRecursive",function(){for(var u=0,A=this.getChildCount();u<A;++u)this.getChild(0).freeRecursive();this.free()}),r(e.Node.prototype,"setMeasureFunc",function(u,A){return A?u.call(this,function(){return WEe.fromJS(A.apply(void 0,arguments))}):this.unsetMeasureFunc()}),r(e.Node.prototype,"calculateLayout",function(u){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:nu.DIRECTION_LTR;return u.call(this,A,p,h)}),Ymt({Config:e.Config,Node:e.Node,Layout:t("Layout",Kmt),Size:t("Size",WEe),Value:t("Value",YEe),getInstanceCount:function(){return e.getInstanceCount.apply(e,arguments)}},nu)}});var VEe=U((exports,module)=>{(function(t,e){typeof define=="function"&&define.amd?define([],function(){return e}):typeof module=="object"&&module.exports?module.exports=e:(t.nbind=t.nbind||{}).init=e})(exports,function(Module,cb){typeof Module=="function"&&(cb=Module,Module={}),Module.onRuntimeInitialized=function(t,e){return function(){t&&t.apply(this,arguments);try{Module.ccall("nbind_init")}catch(r){e(r);return}e(null,{bind:Module._nbind_value,reflect:Module.NBind.reflect,queryType:Module.NBind.queryType,toggleLightGC:Module.toggleLightGC,lib:Module})}}(Module.onRuntimeInitialized,cb);var Module;Module||(Module=(typeof Module<"u"?Module:null)||{});var moduleOverrides={};for(var key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;if(Module.ENVIRONMENT)if(Module.ENVIRONMENT==="WEB")ENVIRONMENT_IS_WEB=!0;else if(Module.ENVIRONMENT==="WORKER")ENVIRONMENT_IS_WORKER=!0;else if(Module.ENVIRONMENT==="NODE")ENVIRONMENT_IS_NODE=!0;else if(Module.ENVIRONMENT==="SHELL")ENVIRONMENT_IS_SHELL=!0;else throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.");else ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof Ie=="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){Module.print||(Module.print=console.log),Module.printErr||(Module.printErr=console.warn);var nodeFS,nodePath;Module.read=function(e,r){nodeFS||(nodeFS={}("")),nodePath||(nodePath={}("")),e=nodePath.normalize(e);var o=nodeFS.readFileSync(e);return r?o:o.toString()},Module.readBinary=function(e){var r=Module.read(e,!0);return r.buffer||(r=new Uint8Array(r)),assert(r.buffer),r},Module.load=function(e){globalEval(read(e))},Module.thisProgram||(process.argv.length>1?Module.thisProgram=process.argv[1].replace(/\\/g,"/"):Module.thisProgram="unknown-program"),Module.arguments=process.argv.slice(2),typeof module<"u"&&(module.exports=Module),Module.inspect=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL)Module.print||(Module.print=print),typeof printErr<"u"&&(Module.printErr=printErr),typeof read<"u"?Module.read=read:Module.read=function(){throw"no read() available"},Module.readBinary=function(e){if(typeof readbuffer=="function")return new Uint8Array(readbuffer(e));var r=read(e,"binary");return assert(typeof r=="object"),r},typeof scriptArgs<"u"?Module.arguments=scriptArgs:typeof arguments<"u"&&(Module.arguments=arguments),typeof quit=="function"&&(Module.quit=function(t,e){quit(t)});else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(Module.read=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},ENVIRONMENT_IS_WORKER&&(Module.readBinary=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),Module.readAsync=function(e,r,o){var a=new XMLHttpRequest;a.open("GET",e,!0),a.responseType="arraybuffer",a.onload=function(){a.status==200||a.status==0&&a.response?r(a.response):o()},a.onerror=o,a.send(null)},typeof arguments<"u"&&(Module.arguments=arguments),typeof console<"u")Module.print||(Module.print=function(e){console.log(e)}),Module.printErr||(Module.printErr=function(e){console.warn(e)});else{var TRY_USE_DUMP=!1;Module.print||(Module.print=TRY_USE_DUMP&&typeof dump<"u"?function(t){dump(t)}:function(t){})}ENVIRONMENT_IS_WORKER&&(Module.load=importScripts),typeof Module.setWindowTitle>"u"&&(Module.setWindowTitle=function(t){document.title=t})}else throw"Unknown runtime environment. Where are we?";function globalEval(t){eval.call(null,t)}!Module.load&&Module.read&&(Module.load=function(e){globalEval(Module.read(e))}),Module.print||(Module.print=function(){}),Module.printErr||(Module.printErr=Module.print),Module.arguments||(Module.arguments=[]),Module.thisProgram||(Module.thisProgram="./this.program"),Module.quit||(Module.quit=function(t,e){throw e}),Module.print=Module.print,Module.printErr=Module.printErr,Module.preRun=[],Module.postRun=[];for(var key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=void 0;var Runtime={setTempRet0:function(t){return tempRet0=t,t},getTempRet0:function(){return tempRet0},stackSave:function(){return STACKTOP},stackRestore:function(t){STACKTOP=t},getNativeTypeSize:function(t){switch(t){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(t[t.length-1]==="*")return Runtime.QUANTUM_SIZE;if(t[0]==="i"){var e=parseInt(t.substr(1));return assert(e%8===0),e/8}else return 0}}},getNativeFieldSize:function(t){return Math.max(Runtime.getNativeTypeSize(t),Runtime.QUANTUM_SIZE)},STACK_ALIGN:16,prepVararg:function(t,e){return e==="double"||e==="i64"?t&7&&(assert((t&7)===4),t+=4):assert((t&3)===0),t},getAlignSize:function(t,e,r){return!r&&(t=="i64"||t=="double")?8:t?Math.min(e||(t?Runtime.getNativeFieldSize(t):0),Runtime.QUANTUM_SIZE):Math.min(e,8)},dynCall:function(t,e,r){return r&&r.length?Module["dynCall_"+t].apply(null,[e].concat(r)):Module["dynCall_"+t].call(null,e)},functionPointers:[],addFunction:function(t){for(var e=0;e<Runtime.functionPointers.length;e++)if(!Runtime.functionPointers[e])return Runtime.functionPointers[e]=t,2*(1+e);throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."},removeFunction:function(t){Runtime.functionPointers[(t-2)/2]=null},warnOnce:function(t){Runtime.warnOnce.shown||(Runtime.warnOnce.shown={}),Runtime.warnOnce.shown[t]||(Runtime.warnOnce.shown[t]=1,Module.printErr(t))},funcWrappers:{},getFuncWrapper:function(t,e){if(!!t){assert(e),Runtime.funcWrappers[e]||(Runtime.funcWrappers[e]={});var r=Runtime.funcWrappers[e];return r[t]||(e.length===1?r[t]=function(){return Runtime.dynCall(e,t)}:e.length===2?r[t]=function(a){return Runtime.dynCall(e,t,[a])}:r[t]=function(){return Runtime.dynCall(e,t,Array.prototype.slice.call(arguments))}),r[t]}},getCompilerSetting:function(t){throw"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work"},stackAlloc:function(t){var e=STACKTOP;return STACKTOP=STACKTOP+t|0,STACKTOP=STACKTOP+15&-16,e},staticAlloc:function(t){var e=STATICTOP;return STATICTOP=STATICTOP+t|0,STATICTOP=STATICTOP+15&-16,e},dynamicAlloc:function(t){var e=HEAP32[DYNAMICTOP_PTR>>2],r=(e+t+15|0)&-16;if(HEAP32[DYNAMICTOP_PTR>>2]=r,r>=TOTAL_MEMORY){var o=enlargeMemory();if(!o)return HEAP32[DYNAMICTOP_PTR>>2]=e,0}return e},alignMemory:function(t,e){var r=t=Math.ceil(t/(e||16))*(e||16);return r},makeBigInt:function(t,e,r){var o=r?+(t>>>0)+ +(e>>>0)*4294967296:+(t>>>0)+ +(e|0)*4294967296;return o},GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module.Runtime=Runtime;var ABORT=0,EXITSTATUS=0;function assert(t,e){t||abort("Assertion failed: "+e)}function getCFunc(ident){var func=Module["_"+ident];if(!func)try{func=eval("_"+ident)}catch(t){}return assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)"),func}var cwrap,ccall;(function(){var JSfuncs={stackSave:function(){Runtime.stackSave()},stackRestore:function(){Runtime.stackRestore()},arrayToC:function(t){var e=Runtime.stackAlloc(t.length);return writeArrayToMemory(t,e),e},stringToC:function(t){var e=0;if(t!=null&&t!==0){var r=(t.length<<2)+1;e=Runtime.stackAlloc(r),stringToUTF8(t,e,r)}return e}},toC={string:JSfuncs.stringToC,array:JSfuncs.arrayToC};ccall=function(e,r,o,a,n){var u=getCFunc(e),A=[],p=0;if(a)for(var h=0;h<a.length;h++){var C=toC[o[h]];C?(p===0&&(p=Runtime.stackSave()),A[h]=C(a[h])):A[h]=a[h]}var w=u.apply(null,A);if(r==="string"&&(w=Pointer_stringify(w)),p!==0){if(n&&n.async){EmterpreterAsync.asyncFinalizers.push(function(){Runtime.stackRestore(p)});return}Runtime.stackRestore(p)}return w};var sourceRegex=/^function\s*[a-zA-Z$_0-9]*\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/;function parseJSFunc(t){var e=t.toString().match(sourceRegex).slice(1);return{arguments:e[0],body:e[1],returnValue:e[2]}}var JSsource=null;function ensureJSsource(){if(!JSsource){JSsource={};for(var t in JSfuncs)JSfuncs.hasOwnProperty(t)&&(JSsource[t]=parseJSFunc(JSfuncs[t]))}}cwrap=function cwrap(ident,returnType,argTypes){argTypes=argTypes||[];var cfunc=getCFunc(ident),numericArgs=argTypes.every(function(t){return t==="number"}),numericRet=returnType!=="string";if(numericRet&&numericArgs)return cfunc;var argNames=argTypes.map(function(t,e){return"$"+e}),funcstr="(function("+argNames.join(",")+") {",nargs=argTypes.length;if(!numericArgs){ensureJSsource(),funcstr+="var stack = "+JSsource.stackSave.body+";";for(var i=0;i<nargs;i++){var arg=argNames[i],type=argTypes[i];if(type!=="number"){var convertCode=JSsource[type+"ToC"];funcstr+="var "+convertCode.arguments+" = "+arg+";",funcstr+=convertCode.body+";",funcstr+=arg+"=("+convertCode.returnValue+");"}}}var cfuncname=parseJSFunc(function(){return cfunc}).returnValue;if(funcstr+="var ret = "+cfuncname+"("+argNames.join(",")+");",!numericRet){var strgfy=parseJSFunc(function(){return Pointer_stringify}).returnValue;funcstr+="ret = "+strgfy+"(ret);"}return numericArgs||(ensureJSsource(),funcstr+=JSsource.stackRestore.body.replace("()","(stack)")+";"),funcstr+="return ret})",eval(funcstr)}})(),Module.ccall=ccall,Module.cwrap=cwrap;function setValue(t,e,r,o){switch(r=r||"i8",r.charAt(r.length-1)==="*"&&(r="i32"),r){case"i1":HEAP8[t>>0]=e;break;case"i8":HEAP8[t>>0]=e;break;case"i16":HEAP16[t>>1]=e;break;case"i32":HEAP32[t>>2]=e;break;case"i64":tempI64=[e>>>0,(tempDouble=e,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[t>>2]=tempI64[0],HEAP32[t+4>>2]=tempI64[1];break;case"float":HEAPF32[t>>2]=e;break;case"double":HEAPF64[t>>3]=e;break;default:abort("invalid type for setValue: "+r)}}Module.setValue=setValue;function getValue(t,e,r){switch(e=e||"i8",e.charAt(e.length-1)==="*"&&(e="i32"),e){case"i1":return HEAP8[t>>0];case"i8":return HEAP8[t>>0];case"i16":return HEAP16[t>>1];case"i32":return HEAP32[t>>2];case"i64":return HEAP32[t>>2];case"float":return HEAPF32[t>>2];case"double":return HEAPF64[t>>3];default:abort("invalid type for setValue: "+e)}return null}Module.getValue=getValue;var ALLOC_NORMAL=0,ALLOC_STACK=1,ALLOC_STATIC=2,ALLOC_DYNAMIC=3,ALLOC_NONE=4;Module.ALLOC_NORMAL=ALLOC_NORMAL,Module.ALLOC_STACK=ALLOC_STACK,Module.ALLOC_STATIC=ALLOC_STATIC,Module.ALLOC_DYNAMIC=ALLOC_DYNAMIC,Module.ALLOC_NONE=ALLOC_NONE;function allocate(t,e,r,o){var a,n;typeof t=="number"?(a=!0,n=t):(a=!1,n=t.length);var u=typeof e=="string"?e:null,A;if(r==ALLOC_NONE?A=o:A=[typeof _malloc=="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][r===void 0?ALLOC_STATIC:r](Math.max(n,u?1:e.length)),a){var o=A,p;for(assert((A&3)==0),p=A+(n&-4);o<p;o+=4)HEAP32[o>>2]=0;for(p=A+n;o<p;)HEAP8[o++>>0]=0;return A}if(u==="i8")return t.subarray||t.slice?HEAPU8.set(t,A):HEAPU8.set(new Uint8Array(t),A),A;for(var h=0,C,w,v;h<n;){var b=t[h];if(typeof b=="function"&&(b=Runtime.getFunctionIndex(b)),C=u||e[h],C===0){h++;continue}C=="i64"&&(C="i32"),setValue(A+h,b,C),v!==C&&(w=Runtime.getNativeTypeSize(C),v=C),h+=w}return A}Module.allocate=allocate;function getMemory(t){return staticSealed?runtimeInitialized?_malloc(t):Runtime.dynamicAlloc(t):Runtime.staticAlloc(t)}Module.getMemory=getMemory;function Pointer_stringify(t,e){if(e===0||!t)return"";for(var r=0,o,a=0;o=HEAPU8[t+a>>0],r|=o,!(o==0&&!e||(a++,e&&a==e)););e||(e=a);var n="";if(r<128){for(var u=1024,A;e>0;)A=String.fromCharCode.apply(String,HEAPU8.subarray(t,t+Math.min(e,u))),n=n?n+A:A,t+=u,e-=u;return n}return Module.UTF8ToString(t)}Module.Pointer_stringify=Pointer_stringify;function AsciiToString(t){for(var e="";;){var r=HEAP8[t++>>0];if(!r)return e;e+=String.fromCharCode(r)}}Module.AsciiToString=AsciiToString;function stringToAscii(t,e){return writeAsciiToMemory(t,e,!1)}Module.stringToAscii=stringToAscii;var UTF8Decoder=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function UTF8ArrayToString(t,e){for(var r=e;t[r];)++r;if(r-e>16&&t.subarray&&UTF8Decoder)return UTF8Decoder.decode(t.subarray(e,r));for(var o,a,n,u,A,p,h="";;){if(o=t[e++],!o)return h;if(!(o&128)){h+=String.fromCharCode(o);continue}if(a=t[e++]&63,(o&224)==192){h+=String.fromCharCode((o&31)<<6|a);continue}if(n=t[e++]&63,(o&240)==224?o=(o&15)<<12|a<<6|n:(u=t[e++]&63,(o&248)==240?o=(o&7)<<18|a<<12|n<<6|u:(A=t[e++]&63,(o&252)==248?o=(o&3)<<24|a<<18|n<<12|u<<6|A:(p=t[e++]&63,o=(o&1)<<30|a<<24|n<<18|u<<12|A<<6|p))),o<65536)h+=String.fromCharCode(o);else{var C=o-65536;h+=String.fromCharCode(55296|C>>10,56320|C&1023)}}}Module.UTF8ArrayToString=UTF8ArrayToString;function UTF8ToString(t){return UTF8ArrayToString(HEAPU8,t)}Module.UTF8ToString=UTF8ToString;function stringToUTF8Array(t,e,r,o){if(!(o>0))return 0;for(var a=r,n=r+o-1,u=0;u<t.length;++u){var A=t.charCodeAt(u);if(A>=55296&&A<=57343&&(A=65536+((A&1023)<<10)|t.charCodeAt(++u)&1023),A<=127){if(r>=n)break;e[r++]=A}else if(A<=2047){if(r+1>=n)break;e[r++]=192|A>>6,e[r++]=128|A&63}else if(A<=65535){if(r+2>=n)break;e[r++]=224|A>>12,e[r++]=128|A>>6&63,e[r++]=128|A&63}else if(A<=2097151){if(r+3>=n)break;e[r++]=240|A>>18,e[r++]=128|A>>12&63,e[r++]=128|A>>6&63,e[r++]=128|A&63}else if(A<=67108863){if(r+4>=n)break;e[r++]=248|A>>24,e[r++]=128|A>>18&63,e[r++]=128|A>>12&63,e[r++]=128|A>>6&63,e[r++]=128|A&63}else{if(r+5>=n)break;e[r++]=252|A>>30,e[r++]=128|A>>24&63,e[r++]=128|A>>18&63,e[r++]=128|A>>12&63,e[r++]=128|A>>6&63,e[r++]=128|A&63}}return e[r]=0,r-a}Module.stringToUTF8Array=stringToUTF8Array;function stringToUTF8(t,e,r){return stringToUTF8Array(t,HEAPU8,e,r)}Module.stringToUTF8=stringToUTF8;function lengthBytesUTF8(t){for(var e=0,r=0;r<t.length;++r){var o=t.charCodeAt(r);o>=55296&&o<=57343&&(o=65536+((o&1023)<<10)|t.charCodeAt(++r)&1023),o<=127?++e:o<=2047?e+=2:o<=65535?e+=3:o<=2097151?e+=4:o<=67108863?e+=5:e+=6}return e}Module.lengthBytesUTF8=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function demangle(t){var e=Module.___cxa_demangle||Module.__cxa_demangle;if(e){try{var r=t.substr(1),o=lengthBytesUTF8(r)+1,a=_malloc(o);stringToUTF8(r,a,o);var n=_malloc(4),u=e(a,0,0,n);if(getValue(n,"i32")===0&&u)return Pointer_stringify(u)}catch{}finally{a&&_free(a),n&&_free(n),u&&_free(u)}return t}return Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),t}function demangleAll(t){var e=/__Z[\w\d_]+/g;return t.replace(e,function(r){var o=demangle(r);return r===o?r:r+" ["+o+"]"})}function jsStackTrace(){var t=new Error;if(!t.stack){try{throw new Error(0)}catch(e){t=e}if(!t.stack)return"(no stack trace available)"}return t.stack.toString()}function stackTrace(){var t=jsStackTrace();return Module.extraStackTrace&&(t+=` | 284 | Add a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.`+Cl(W))}Gi!==Qc&&(Gi=Ci),ce=dg(ce,W),Et=q;do{switch(Et.tag){case 3:Se=ce,Et.effectTag|=4096,Et.expirationTime=D;var Je=Fv(Et,Se,D);qa(Et,Je);break e;case 1:Se=ce;var ft=Et.type,jt=Et.stateNode;if((Et.effectTag&64)===0&&(typeof ft.getDerivedStateFromError=="function"||jt!==null&&typeof jt.componentDidCatch=="function"&&(bu===null||!bu.has(jt)))){Et.effectTag|=4096,Et.expirationTime=D;var Er=Rv(Et,Se,D);qa(Et,Er);break e}}Et=Et.return}while(Et!==null)}Fr=Mv(Fr)}catch(In){D=In;continue}break}while(1)}function WA(){var S=Cp.current;return Cp.current=Du,S===null?Du:S}function yI(S,D){S<Ja&&2<S&&(Ja=S),D!==null&&S<UA&&2<S&&(UA=S,Um=D)}function jm(S){S>Ip&&(Ip=S)}function lF(){for(;Fr!==null;)Fr=Ov(Fr)}function cF(){for(;Fr!==null&&!Rt();)Fr=Ov(Fr)}function Ov(S){var D=_v(S.alternate,S,ns);return S.memoizedProps=S.pendingProps,D===null&&(D=Mv(S)),pI.current=null,D}function Mv(S){Fr=S;do{var D=Fr.alternate;if(S=Fr.return,(Fr.effectTag&2048)===0){e:{var T=D;D=Fr;var q=ns,W=D.pendingProps;switch(D.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:$n(D.type)&&Ua(D);break;case 3:wc(D),$t(D),W=D.stateNode,W.pendingContext&&(W.context=W.pendingContext,W.pendingContext=null),(T===null||T.child===null)&&Ya(D)&&ha(D),Pl(D);break;case 5:ig(D);var ce=ua(Ic.current);if(q=D.type,T!==null&&D.stateNode!=null)ts(T,D,q,W,ce),T.ref!==D.ref&&(D.effectTag|=128);else if(W){if(T=ua(lo.current),Ya(D)){if(W=D,!y)throw Error(n(175));T=cp(W.stateNode,W.type,W.memoizedProps,ce,T,W),W.updateQueue=T,T=T!==null,T&&ha(D)}else{var Se=ut(q,W,ce,T,D);xc(Se,D,!1,!1),D.stateNode=Se,yt(Se,q,W,ce,T)&&ha(D)}D.ref!==null&&(D.effectTag|=128)}else if(D.stateNode===null)throw Error(n(166));break;case 6:if(T&&D.stateNode!=null)Hr(T,D,T.memoizedProps,W);else{if(typeof W!="string"&&D.stateNode===null)throw Error(n(166));if(T=ua(Ic.current),ce=ua(lo.current),Ya(D)){if(T=D,!y)throw Error(n(176));(T=up(T.stateNode,T.memoizedProps,T))&&ha(D)}else D.stateNode=_e(W,T,ce,D)}break;case 11:break;case 13:if(Ue(Vn,D),W=D.memoizedState,(D.effectTag&64)!==0){D.expirationTime=q;break e}W=W!==null,ce=!1,T===null?D.memoizedProps.fallback!==void 0&&Ya(D):(q=T.memoizedState,ce=q!==null,W||q===null||(q=T.child.sibling,q!==null&&(Se=D.firstEffect,Se!==null?(D.firstEffect=q,q.nextEffect=Se):(D.firstEffect=D.lastEffect=q,q.nextEffect=null),q.effectTag=8))),W&&!ce&&(D.mode&2)!==0&&(T===null&&D.memoizedProps.unstable_avoidThisFallback!==!0||(Vn.current&1)!==0?Gi===Pu&&(Gi=ga):((Gi===Pu||Gi===ga)&&(Gi=xl),Ip!==0&&Ai!==null&&(VA(Ai,ns),qv(Ai,Ip)))),P&&W&&(D.effectTag|=4),I&&(W||ce)&&(D.effectTag|=4);break;case 7:break;case 8:break;case 12:break;case 4:wc(D),Pl(D);break;case 10:Zi(D);break;case 9:break;case 14:break;case 17:$n(D.type)&&Ua(D);break;case 19:if(Ue(Vn,D),W=D.memoizedState,W===null)break;if(ce=(D.effectTag&64)!==0,Se=W.rendering,Se===null){if(ce)bc(W,!1);else if(Gi!==Pu||T!==null&&(T.effectTag&64)!==0)for(T=D.child;T!==null;){if(Se=fp(T),Se!==null){for(D.effectTag|=64,bc(W,!1),T=Se.updateQueue,T!==null&&(D.updateQueue=T,D.effectTag|=4),W.lastEffect===null&&(D.firstEffect=null),D.lastEffect=W.lastEffect,T=q,W=D.child;W!==null;)ce=W,q=T,ce.effectTag&=2,ce.nextEffect=null,ce.firstEffect=null,ce.lastEffect=null,Se=ce.alternate,Se===null?(ce.childExpirationTime=0,ce.expirationTime=q,ce.child=null,ce.memoizedProps=null,ce.memoizedState=null,ce.updateQueue=null,ce.dependencies=null):(ce.childExpirationTime=Se.childExpirationTime,ce.expirationTime=Se.expirationTime,ce.child=Se.child,ce.memoizedProps=Se.memoizedProps,ce.memoizedState=Se.memoizedState,ce.updateQueue=Se.updateQueue,q=Se.dependencies,ce.dependencies=q===null?null:{expirationTime:q.expirationTime,firstContext:q.firstContext,responders:q.responders}),W=W.sibling;Fn(Vn,Vn.current&1|2,D),D=D.child;break e}T=T.sibling}}else{if(!ce)if(T=fp(Se),T!==null){if(D.effectTag|=64,ce=!0,T=T.updateQueue,T!==null&&(D.updateQueue=T,D.effectTag|=4),bc(W,!0),W.tail===null&&W.tailMode==="hidden"&&!Se.alternate){D=D.lastEffect=W.lastEffect,D!==null&&(D.nextEffect=null);break}}else Hi()>W.tailExpiration&&1<q&&(D.effectTag|=64,ce=!0,bc(W,!1),D.expirationTime=D.childExpirationTime=q-1);W.isBackwards?(Se.sibling=D.child,D.child=Se):(T=W.last,T!==null?T.sibling=Se:D.child=Se,W.last=Se)}if(W.tail!==null){W.tailExpiration===0&&(W.tailExpiration=Hi()+500),T=W.tail,W.rendering=T,W.tail=T.sibling,W.lastEffect=D.lastEffect,T.sibling=null,W=Vn.current,W=ce?W&1|2:W&1,Fn(Vn,W,D),D=T;break e}break;case 20:break;case 21:break;default:throw Error(n(156,D.tag))}D=null}if(T=Fr,ns===1||T.childExpirationTime!==1){for(W=0,ce=T.child;ce!==null;)q=ce.expirationTime,Se=ce.childExpirationTime,q>W&&(W=q),Se>W&&(W=Se),ce=ce.sibling;T.childExpirationTime=W}if(D!==null)return D;S!==null&&(S.effectTag&2048)===0&&(S.firstEffect===null&&(S.firstEffect=Fr.firstEffect),Fr.lastEffect!==null&&(S.lastEffect!==null&&(S.lastEffect.nextEffect=Fr.firstEffect),S.lastEffect=Fr.lastEffect),1<Fr.effectTag&&(S.lastEffect!==null?S.lastEffect.nextEffect=Fr:S.firstEffect=Fr,S.lastEffect=Fr))}else{if(D=AI(Fr,ns),D!==null)return D.effectTag&=2047,D;S!==null&&(S.firstEffect=S.lastEffect=null,S.effectTag|=2048)}if(D=Fr.sibling,D!==null)return D;Fr=S}while(Fr!==null);return Gi===Pu&&(Gi=Qc),null}function EI(S){var D=S.expirationTime;return S=S.childExpirationTime,D>S?D:S}function ku(S){var D=Mo();return so(99,uF.bind(null,S,D)),null}function uF(S,D){do Bp();while(Cg!==null);if((pr&(rs|Ms))!==gn)throw Error(n(327));var T=S.finishedWork,q=S.finishedExpirationTime;if(T===null)return null;if(S.finishedWork=null,S.finishedExpirationTime=0,T===S.current)throw Error(n(177));S.callbackNode=null,S.callbackExpirationTime=0,S.callbackPriority=90,S.nextKnownPendingLevel=0;var W=EI(T);if(S.firstPendingTime=W,q<=S.lastSuspendedTime?S.firstSuspendedTime=S.lastSuspendedTime=S.nextKnownPendingLevel=0:q<=S.firstSuspendedTime&&(S.firstSuspendedTime=q-1),q<=S.lastPingedTime&&(S.lastPingedTime=0),q<=S.lastExpiredTime&&(S.lastExpiredTime=0),S===Ai&&(Fr=Ai=null,ns=0),1<T.effectTag?T.lastEffect!==null?(T.lastEffect.nextEffect=T,W=T.firstEffect):W=T:W=T.firstEffect,W!==null){var ce=pr;pr|=Ms,pI.current=null,me(S.containerInfo),nr=W;do try{AF()}catch(fo){if(nr===null)throw Error(n(330));YA(nr,fo),nr=nr.nextEffect}while(nr!==null);nr=W;do try{for(var Se=S,It=D;nr!==null;){var Et=nr.effectTag;if(Et&16&&I&&Ut(nr.stateNode),Et&128){var bt=nr.alternate;if(bt!==null){var Nr=bt.ref;Nr!==null&&(typeof Nr=="function"?Nr(null):Nr.current=null)}}switch(Et&1038){case 2:ur(nr),nr.effectTag&=-3;break;case 6:ur(nr),nr.effectTag&=-3,hn(nr.alternate,nr);break;case 1024:nr.effectTag&=-1025;break;case 1028:nr.effectTag&=-1025,hn(nr.alternate,nr);break;case 4:hn(nr.alternate,nr);break;case 8:var is=Se,fi=nr,Ao=It;I?gr(is,fi,Ao):te(is,fi,Ao),Ae(fi)}nr=nr.nextEffect}}catch(fo){if(nr===null)throw Error(n(330));YA(nr,fo),nr=nr.nextEffect}while(nr!==null);be(S.containerInfo),S.current=T,nr=W;do try{for(Et=q;nr!==null;){var JA=nr.effectTag;if(JA&36){var qo=nr.alternate;switch(bt=nr,Nr=Et,bt.tag){case 0:case 11:case 15:N(16,32,bt);break;case 1:var rt=bt.stateNode;if(bt.effectTag&4)if(qo===null)rt.componentDidMount();else{var Je=bt.elementType===bt.type?qo.memoizedProps:di(bt.type,qo.memoizedProps);rt.componentDidUpdate(Je,qo.memoizedState,rt.__reactInternalSnapshotBeforeUpdate)}var ft=bt.updateQueue;ft!==null&&je(bt,ft,rt,Nr);break;case 3:var jt=bt.updateQueue;if(jt!==null){if(Se=null,bt.child!==null)switch(bt.child.tag){case 5:Se=de(bt.child.stateNode);break;case 1:Se=bt.child.stateNode}je(bt,jt,Se,Nr)}break;case 5:var Er=bt.stateNode;qo===null&&bt.effectTag&4&&$(Er,bt.type,bt.memoizedProps,bt);break;case 6:break;case 4:break;case 12:break;case 13:if(y&&bt.memoizedState===null){var In=bt.alternate;if(In!==null){var Sr=In.memoizedState;if(Sr!==null){var wn=Sr.dehydrated;wn!==null&&no(wn)}}}break;case 19:case 17:case 20:case 21:break;default:throw Error(n(163))}}if(JA&128){bt=void 0;var ni=nr.ref;if(ni!==null){var Xr=nr.stateNode;switch(nr.tag){case 5:bt=de(Xr);break;default:bt=Xr}typeof ni=="function"?ni(bt):ni.current=bt}}nr=nr.nextEffect}}catch(fo){if(nr===null)throw Error(n(330));YA(nr,fo),nr=nr.nextEffect}while(nr!==null);nr=null,Dn(),pr=ce}else S.current=T;if(wp)wp=!1,Cg=S,HA=D;else for(nr=W;nr!==null;)D=nr.nextEffect,nr.nextEffect=null,nr=D;if(D=S.firstPendingTime,D===0&&(bu=null),D===1073741823?S===dI?Ig++:(Ig=0,dI=S):Ig=0,typeof CI=="function"&&CI(T.stateNode,q),uo(S),xu)throw xu=!1,S=_m,_m=null,S;return(pr&Lm)!==gn||qi(),null}function AF(){for(;nr!==null;){var S=nr.effectTag;(S&256)!==0&&kt(nr.alternate,nr),(S&512)===0||wp||(wp=!0,vl(97,function(){return Bp(),null})),nr=nr.nextEffect}}function Bp(){if(HA!==90){var S=97<HA?97:HA;return HA=90,so(S,fF)}}function fF(){if(Cg===null)return!1;var S=Cg;if(Cg=null,(pr&(rs|Ms))!==gn)throw Error(n(331));var D=pr;for(pr|=Ms,S=S.current.firstEffect;S!==null;){try{var T=S;if((T.effectTag&512)!==0)switch(T.tag){case 0:case 11:case 15:N(128,0,T),N(0,64,T)}}catch(q){if(S===null)throw Error(n(330));YA(S,q)}T=S.nextEffect,S.nextEffect=null,S=T}return pr=D,qi(),!0}function Uv(S,D,T){D=dg(T,D),D=Fv(S,D,1073741823),mi(S,D),S=wg(S,1073741823),S!==null&&uo(S)}function YA(S,D){if(S.tag===3)Uv(S,S,D);else for(var T=S.return;T!==null;){if(T.tag===3){Uv(T,S,D);break}else if(T.tag===1){var q=T.stateNode;if(typeof T.type.getDerivedStateFromError=="function"||typeof q.componentDidCatch=="function"&&(bu===null||!bu.has(q))){S=dg(D,S),S=Rv(T,S,1073741823),mi(T,S),T=wg(T,1073741823),T!==null&&uo(T);break}}T=T.return}}function pF(S,D,T){var q=S.pingCache;q!==null&&q.delete(D),Ai===S&&ns===T?Gi===xl||Gi===ga&&Ja===1073741823&&Hi()-hI<gI?Qu(S,ns):_A=!0:Hv(S,T)&&(D=S.lastPingedTime,D!==0&&D<T||(S.lastPingedTime=T,S.finishedExpirationTime===T&&(S.finishedExpirationTime=0,S.finishedWork=null),uo(S)))}function hF(S,D){var T=S.stateNode;T!==null&&T.delete(D),D=0,D===0&&(D=da(),D=jA(D,S,null)),S=wg(S,D),S!==null&&uo(S)}var _v;_v=function(S,D,T){var q=D.expirationTime;if(S!==null){var W=D.pendingProps;if(S.memoizedProps!==W||Ui.current)_o=!0;else{if(q<T){switch(_o=!1,D.tag){case 3:gg(D),hg();break;case 5:if(bm(D),D.mode&4&&T!==1&&Qe(D.type,W))return D.expirationTime=D.childExpirationTime=1,null;break;case 1:$n(D.type)&&dc(D);break;case 4:ng(D,D.stateNode.containerInfo);break;case 10:Uo(D,D.memoizedProps.value);break;case 13:if(D.memoizedState!==null)return q=D.child.childExpirationTime,q!==0&&q>=T?rn(S,D,T):(Fn(Vn,Vn.current&1,D),D=ti(S,D,T),D!==null?D.sibling:null);Fn(Vn,Vn.current&1,D);break;case 19:if(q=D.childExpirationTime>=T,(S.effectTag&64)!==0){if(q)return Ka(S,D,T);D.effectTag|=64}if(W=D.memoizedState,W!==null&&(W.rendering=null,W.tail=null),Fn(Vn,Vn.current,D),!q)return null}return ti(S,D,T)}_o=!1}}else _o=!1;switch(D.expirationTime=0,D.tag){case 2:if(q=D.type,S!==null&&(S.alternate=null,D.alternate=null,D.effectTag|=2),S=D.pendingProps,W=Ri(D,Rn.current),Ns(D,T),W=og(null,D,q,S,W,T),D.effectTag|=1,typeof W=="object"&&W!==null&&typeof W.render=="function"&&W.$$typeof===void 0){if(D.tag=1,cI(),$n(q)){var ce=!0;dc(D)}else ce=!1;D.memoizedState=W.state!==null&&W.state!==void 0?W.state:null;var Se=q.getDerivedStateFromProps;typeof Se=="function"&&vt(D,q,Se,S),W.updater=tr,D.stateNode=W,W._reactInternalFiber=D,ei(D,q,S,T),D=yp(null,D,q,!0,ce,T)}else D.tag=0,Es(null,D,W,T),D=D.child;return D;case 16:if(W=D.elementType,S!==null&&(S.alternate=null,D.alternate=null,D.effectTag|=2),S=D.pendingProps,De(W),W._status!==1)throw W._result;switch(W=W._result,D.type=W,ce=D.tag=mF(W),S=di(W,S),ce){case 0:D=OA(null,D,W,S,T);break;case 1:D=mp(null,D,W,S,T);break;case 11:D=Ei(null,D,W,S,T);break;case 14:D=Rm(null,D,W,di(W.type,S),q,T);break;default:throw Error(n(306,W,""))}return D;case 0:return q=D.type,W=D.pendingProps,W=D.elementType===q?W:di(q,W),OA(S,D,q,W,T);case 1:return q=D.type,W=D.pendingProps,W=D.elementType===q?W:di(q,W),mp(S,D,q,W,T);case 3:if(gg(D),q=D.updateQueue,q===null)throw Error(n(282));if(W=D.memoizedState,W=W!==null?W.element:null,we(D,q,D.pendingProps,null,T),q=D.memoizedState.element,q===W)hg(),D=ti(S,D,T);else{if((W=D.stateNode.hydrate)&&(y?(Pc=gu(D.stateNode.containerInfo),fa=D,W=Sl=!0):W=!1),W)for(T=ca(D,null,q,T),D.child=T;T;)T.effectTag=T.effectTag&-3|1024,T=T.sibling;else Es(S,D,q,T),hg();D=D.child}return D;case 5:return bm(D),S===null&&LA(D),q=D.type,W=D.pendingProps,ce=S!==null?S.memoizedProps:null,Se=W.children,Te(q,W)?Se=null:ce!==null&&Te(q,ce)&&(D.effectTag|=16),Ho(S,D),D.mode&4&&T!==1&&Qe(q,W)?(D.expirationTime=D.childExpirationTime=1,D=null):(Es(S,D,Se,T),D=D.child),D;case 6:return S===null&&LA(D),null;case 13:return rn(S,D,T);case 4:return ng(D,D.stateNode.containerInfo),q=D.pendingProps,S===null?D.child=yi(D,null,q,T):Es(S,D,q,T),D.child;case 11:return q=D.type,W=D.pendingProps,W=D.elementType===q?W:di(q,W),Ei(S,D,q,W,T);case 7:return Es(S,D,D.pendingProps,T),D.child;case 8:return Es(S,D,D.pendingProps.children,T),D.child;case 12:return Es(S,D,D.pendingProps.children,T),D.child;case 10:e:{if(q=D.type._context,W=D.pendingProps,Se=D.memoizedProps,ce=W.value,Uo(D,ce),Se!==null){var It=Se.value;if(ce=ds(It,ce)?0:(typeof q._calculateChangedBits=="function"?q._calculateChangedBits(It,ce):1073741823)|0,ce===0){if(Se.children===W.children&&!Ui.current){D=ti(S,D,T);break e}}else for(It=D.child,It!==null&&(It.return=D);It!==null;){var Et=It.dependencies;if(Et!==null){Se=It.child;for(var bt=Et.firstContext;bt!==null;){if(bt.context===q&&(bt.observedBits&ce)!==0){It.tag===1&&(bt=$i(T,null),bt.tag=2,mi(It,bt)),It.expirationTime<T&&(It.expirationTime=T),bt=It.alternate,bt!==null&&bt.expirationTime<T&&(bt.expirationTime=T),Ts(It.return,T),Et.expirationTime<T&&(Et.expirationTime=T);break}bt=bt.next}}else Se=It.tag===10&&It.type===D.type?null:It.child;if(Se!==null)Se.return=It;else for(Se=It;Se!==null;){if(Se===D){Se=null;break}if(It=Se.sibling,It!==null){It.return=Se.return,Se=It;break}Se=Se.return}It=Se}}Es(S,D,W.children,T),D=D.child}return D;case 9:return W=D.type,ce=D.pendingProps,q=ce.children,Ns(D,T),W=Ls(W,ce.unstable_observedBits),q=q(W),D.effectTag|=1,Es(S,D,q,T),D.child;case 14:return W=D.type,ce=di(W,D.pendingProps),ce=di(W.type,ce),Rm(S,D,W,ce,q,T);case 15:return Tm(S,D,D.type,D.pendingProps,q,T);case 17:return q=D.type,W=D.pendingProps,W=D.elementType===q?W:di(q,W),S!==null&&(S.alternate=null,D.alternate=null,D.effectTag|=2),D.tag=1,$n(q)?(S=!0,dc(D)):S=!1,Ns(D,T),Tn(D,q,W,T),ei(D,q,W,T),yp(null,D,q,!0,S,T);case 19:return Ka(S,D,T)}throw Error(n(156,D.tag))};var CI=null,II=null;function gF(S){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")return!1;var D=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(D.isDisabled||!D.supportsFiber)return!0;try{var T=D.inject(S);CI=function(q){try{D.onCommitFiberRoot(T,q,void 0,(q.current.effectTag&64)===64)}catch{}},II=function(q){try{D.onCommitFiberUnmount(T,q)}catch{}}}catch{}return!0}function dF(S,D,T,q){this.tag=S,this.key=T,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=D,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=q,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function bl(S,D,T,q){return new dF(S,D,T,q)}function wI(S){return S=S.prototype,!(!S||!S.isReactComponent)}function mF(S){if(typeof S=="function")return wI(S)?1:0;if(S!=null){if(S=S.$$typeof,S===L)return 11;if(S===re)return 14}return 2}function KA(S,D){var T=S.alternate;return T===null?(T=bl(S.tag,D,S.key,S.mode),T.elementType=S.elementType,T.type=S.type,T.stateNode=S.stateNode,T.alternate=S,S.alternate=T):(T.pendingProps=D,T.effectTag=0,T.nextEffect=null,T.firstEffect=null,T.lastEffect=null),T.childExpirationTime=S.childExpirationTime,T.expirationTime=S.expirationTime,T.child=S.child,T.memoizedProps=S.memoizedProps,T.memoizedState=S.memoizedState,T.updateQueue=S.updateQueue,D=S.dependencies,T.dependencies=D===null?null:{expirationTime:D.expirationTime,firstContext:D.firstContext,responders:D.responders},T.sibling=S.sibling,T.index=S.index,T.ref=S.ref,T}function Gm(S,D,T,q,W,ce){var Se=2;if(q=S,typeof S=="function")wI(S)&&(Se=1);else if(typeof S=="string")Se=5;else e:switch(S){case C:return Fu(T.children,W,ce,D);case R:Se=8,W|=7;break;case w:Se=8,W|=1;break;case v:return S=bl(12,T,D,W|8),S.elementType=v,S.type=v,S.expirationTime=ce,S;case _:return S=bl(13,T,D,W),S.type=_,S.elementType=_,S.expirationTime=ce,S;case V:return S=bl(19,T,D,W),S.elementType=V,S.expirationTime=ce,S;default:if(typeof S=="object"&&S!==null)switch(S.$$typeof){case b:Se=10;break e;case E:Se=9;break e;case L:Se=11;break e;case re:Se=14;break e;case ae:Se=16,q=null;break e}throw Error(n(130,S==null?S:typeof S,""))}return D=bl(Se,T,D,W),D.elementType=S,D.type=q,D.expirationTime=ce,D}function Fu(S,D,T,q){return S=bl(7,S,q,D),S.expirationTime=T,S}function BI(S,D,T){return S=bl(6,S,null,D),S.expirationTime=T,S}function vI(S,D,T){return D=bl(4,S.children!==null?S.children:[],S.key,D),D.expirationTime=T,D.stateNode={containerInfo:S.containerInfo,pendingChildren:null,implementation:S.implementation},D}function yF(S,D,T){this.tag=D,this.current=null,this.containerInfo=S,this.pingCache=this.pendingChildren=null,this.finishedExpirationTime=0,this.finishedWork=null,this.timeoutHandle=Oe,this.pendingContext=this.context=null,this.hydrate=T,this.callbackNode=null,this.callbackPriority=90,this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}function Hv(S,D){var T=S.firstSuspendedTime;return S=S.lastSuspendedTime,T!==0&&T>=D&&S<=D}function VA(S,D){var T=S.firstSuspendedTime,q=S.lastSuspendedTime;T<D&&(S.firstSuspendedTime=D),(q>D||T===0)&&(S.lastSuspendedTime=D),D<=S.lastPingedTime&&(S.lastPingedTime=0),D<=S.lastExpiredTime&&(S.lastExpiredTime=0)}function qv(S,D){D>S.firstPendingTime&&(S.firstPendingTime=D);var T=S.firstSuspendedTime;T!==0&&(D>=T?S.firstSuspendedTime=S.lastSuspendedTime=S.nextKnownPendingLevel=0:D>=S.lastSuspendedTime&&(S.lastSuspendedTime=D+1),D>S.nextKnownPendingLevel&&(S.nextKnownPendingLevel=D))}function Wm(S,D){var T=S.lastExpiredTime;(T===0||T>D)&&(S.lastExpiredTime=D)}function jv(S){var D=S._reactInternalFiber;if(D===void 0)throw typeof S.render=="function"?Error(n(188)):Error(n(268,Object.keys(S)));return S=ve(D),S===null?null:S.stateNode}function Gv(S,D){S=S.memoizedState,S!==null&&S.dehydrated!==null&&S.retryTime<D&&(S.retryTime=D)}function Ym(S,D){Gv(S,D),(S=S.alternate)&&Gv(S,D)}var Wv={createContainer:function(S,D,T){return S=new yF(S,D,T),D=bl(3,null,null,D===2?7:D===1?3:0),S.current=D,D.stateNode=S},updateContainer:function(S,D,T,q){var W=D.current,ce=da(),Se=xe.suspense;ce=jA(ce,W,Se);e:if(T){T=T._reactInternalFiber;t:{if(le(T)!==T||T.tag!==1)throw Error(n(170));var It=T;do{switch(It.tag){case 3:It=It.stateNode.context;break t;case 1:if($n(It.type)){It=It.stateNode.__reactInternalMemoizedMergedChildContext;break t}}It=It.return}while(It!==null);throw Error(n(171))}if(T.tag===1){var Et=T.type;if($n(Et)){T=du(T,Et,It);break e}}T=It}else T=Fi;return D.context===null?D.context=T:D.pendingContext=T,D=$i(ce,Se),D.payload={element:S},q=q===void 0?null:q,q!==null&&(D.callback=q),mi(W,D),kc(W,ce),ce},batchedEventUpdates:function(S,D){var T=pr;pr|=2;try{return S(D)}finally{pr=T,pr===gn&&qi()}},batchedUpdates:function(S,D){var T=pr;pr|=1;try{return S(D)}finally{pr=T,pr===gn&&qi()}},unbatchedUpdates:function(S,D){var T=pr;pr&=-2,pr|=Lm;try{return S(D)}finally{pr=T,pr===gn&&qi()}},deferredUpdates:function(S){return so(97,S)},syncUpdates:function(S,D,T,q){return so(99,S.bind(null,D,T,q))},discreteUpdates:function(S,D,T,q){var W=pr;pr|=4;try{return so(98,S.bind(null,D,T,q))}finally{pr=W,pr===gn&&qi()}},flushDiscreteUpdates:function(){(pr&(1|rs|Ms))===gn&&(aF(),Bp())},flushControlled:function(S){var D=pr;pr|=1;try{so(99,S)}finally{pr=D,pr===gn&&qi()}},flushSync:Lv,flushPassiveEffects:Bp,IsThisRendererActing:{current:!1},getPublicRootInstance:function(S){if(S=S.current,!S.child)return null;switch(S.child.tag){case 5:return de(S.child.stateNode);default:return S.child.stateNode}},attemptSynchronousHydration:function(S){switch(S.tag){case 3:var D=S.stateNode;D.hydrate&&Nv(D,D.firstPendingTime);break;case 13:Lv(function(){return kc(S,1073741823)}),D=Ha(da(),150,100),Ym(S,D)}},attemptUserBlockingHydration:function(S){if(S.tag===13){var D=Ha(da(),150,100);kc(S,D),Ym(S,D)}},attemptContinuousHydration:function(S){if(S.tag===13){da();var D=FA++;kc(S,D),Ym(S,D)}},attemptHydrationAtCurrentPriority:function(S){if(S.tag===13){var D=da();D=jA(D,S,null),kc(S,D),Ym(S,D)}},findHostInstance:jv,findHostInstanceWithWarning:function(S){return jv(S)},findHostInstanceWithNoPortals:function(S){return S=Ee(S),S===null?null:S.tag===20?S.stateNode.instance:S.stateNode},shouldSuspend:function(){return!1},injectIntoDevTools:function(S){var D=S.findFiberByHostInstance;return gF(r({},S,{overrideHookState:null,overrideProps:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:u.ReactCurrentDispatcher,findHostInstanceByFiber:function(T){return T=ve(T),T===null?null:T.stateNode},findFiberByHostInstance:function(T){return D?D(T):null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null}))}};z2.exports=Wv.default||Wv;var EF=z2.exports;return z2.exports=t,EF}});var zEe=U((SYt,JEe)=>{"use strict";JEe.exports=VEe()});var ZEe=U((PYt,XEe)=>{"use strict";var ayt={ALIGN_COUNT:8,ALIGN_AUTO:0,ALIGN_FLEX_START:1,ALIGN_CENTER:2,ALIGN_FLEX_END:3,ALIGN_STRETCH:4,ALIGN_BASELINE:5,ALIGN_SPACE_BETWEEN:6,ALIGN_SPACE_AROUND:7,DIMENSION_COUNT:2,DIMENSION_WIDTH:0,DIMENSION_HEIGHT:1,DIRECTION_COUNT:3,DIRECTION_INHERIT:0,DIRECTION_LTR:1,DIRECTION_RTL:2,DISPLAY_COUNT:2,DISPLAY_FLEX:0,DISPLAY_NONE:1,EDGE_COUNT:9,EDGE_LEFT:0,EDGE_TOP:1,EDGE_RIGHT:2,EDGE_BOTTOM:3,EDGE_START:4,EDGE_END:5,EDGE_HORIZONTAL:6,EDGE_VERTICAL:7,EDGE_ALL:8,EXPERIMENTAL_FEATURE_COUNT:1,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:0,FLEX_DIRECTION_COUNT:4,FLEX_DIRECTION_COLUMN:0,FLEX_DIRECTION_COLUMN_REVERSE:1,FLEX_DIRECTION_ROW:2,FLEX_DIRECTION_ROW_REVERSE:3,JUSTIFY_COUNT:6,JUSTIFY_FLEX_START:0,JUSTIFY_CENTER:1,JUSTIFY_FLEX_END:2,JUSTIFY_SPACE_BETWEEN:3,JUSTIFY_SPACE_AROUND:4,JUSTIFY_SPACE_EVENLY:5,LOG_LEVEL_COUNT:6,LOG_LEVEL_ERROR:0,LOG_LEVEL_WARN:1,LOG_LEVEL_INFO:2,LOG_LEVEL_DEBUG:3,LOG_LEVEL_VERBOSE:4,LOG_LEVEL_FATAL:5,MEASURE_MODE_COUNT:3,MEASURE_MODE_UNDEFINED:0,MEASURE_MODE_EXACTLY:1,MEASURE_MODE_AT_MOST:2,NODE_TYPE_COUNT:2,NODE_TYPE_DEFAULT:0,NODE_TYPE_TEXT:1,OVERFLOW_COUNT:3,OVERFLOW_VISIBLE:0,OVERFLOW_HIDDEN:1,OVERFLOW_SCROLL:2,POSITION_TYPE_COUNT:2,POSITION_TYPE_RELATIVE:0,POSITION_TYPE_ABSOLUTE:1,PRINT_OPTIONS_COUNT:3,PRINT_OPTIONS_LAYOUT:1,PRINT_OPTIONS_STYLE:2,PRINT_OPTIONS_CHILDREN:4,UNIT_COUNT:4,UNIT_UNDEFINED:0,UNIT_POINT:1,UNIT_PERCENT:2,UNIT_AUTO:3,WRAP_COUNT:3,WRAP_NO_WRAP:0,WRAP_WRAP:1,WRAP_WRAP_REVERSE:2};XEe.exports=ayt});var rCe=U((xYt,tCe)=>{"use strict";var lyt=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(t[o]=r[o])}return t},HQ=function(){function t(e,r){for(var o=0;o<r.length;o++){var a=r[o];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(e,r,o){return r&&t(e.prototype,r),o&&t(e,o),e}}();function x6(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function b6(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var ou=ZEe(),cyt=function(){function t(e,r,o,a,n,u){b6(this,t),this.left=e,this.right=r,this.top=o,this.bottom=a,this.width=n,this.height=u}return HQ(t,[{key:"fromJS",value:function(r){r(this.left,this.right,this.top,this.bottom,this.width,this.height)}},{key:"toString",value:function(){return"<Layout#"+this.left+":"+this.right+";"+this.top+":"+this.bottom+";"+this.width+":"+this.height+">"}}]),t}(),$Ee=function(){HQ(t,null,[{key:"fromJS",value:function(r){var o=r.width,a=r.height;return new t(o,a)}}]);function t(e,r){b6(this,t),this.width=e,this.height=r}return HQ(t,[{key:"fromJS",value:function(r){r(this.width,this.height)}},{key:"toString",value:function(){return"<Size#"+this.width+"x"+this.height+">"}}]),t}(),eCe=function(){function t(e,r){b6(this,t),this.unit=e,this.value=r}return HQ(t,[{key:"fromJS",value:function(r){r(this.unit,this.value)}},{key:"toString",value:function(){switch(this.unit){case ou.UNIT_POINT:return String(this.value);case ou.UNIT_PERCENT:return this.value+"%";case ou.UNIT_AUTO:return"auto";default:return this.value+"?"}}},{key:"valueOf",value:function(){return this.value}}]),t}();tCe.exports=function(t,e){function r(u,A,p){var h=u[A];u[A]=function(){for(var C=arguments.length,w=Array(C),v=0;v<C;v++)w[v]=arguments[v];return p.call.apply(p,[this,h].concat(w))}}for(var o=["setPosition","setMargin","setFlexBasis","setWidth","setHeight","setMinWidth","setMinHeight","setMaxWidth","setMaxHeight","setPadding"],a=function(){var A,p=o[n],h=(A={},x6(A,ou.UNIT_POINT,e.Node.prototype[p]),x6(A,ou.UNIT_PERCENT,e.Node.prototype[p+"Percent"]),x6(A,ou.UNIT_AUTO,e.Node.prototype[p+"Auto"]),A);r(e.Node.prototype,p,function(C){for(var w=arguments.length,v=Array(w>1?w-1:0),b=1;b<w;b++)v[b-1]=arguments[b];var E=v.pop(),R=void 0,L=void 0;if(E==="auto")R=ou.UNIT_AUTO,L=void 0;else if(E instanceof eCe)R=E.unit,L=E.valueOf();else if(R=typeof E=="string"&&E.endsWith("%")?ou.UNIT_PERCENT:ou.UNIT_POINT,L=parseFloat(E),!Number.isNaN(E)&&Number.isNaN(L))throw new Error("Invalid value "+E+" for "+p);if(!h[R])throw new Error('Failed to execute "'+p+`": Unsupported unit '`+E+"'");if(L!==void 0){var _;return(_=h[R]).call.apply(_,[this].concat(v,[L]))}else{var V;return(V=h[R]).call.apply(V,[this].concat(v))}})},n=0;n<o.length;n++)a();return r(e.Config.prototype,"free",function(){e.Config.destroy(this)}),r(e.Node,"create",function(u,A){return A?e.Node.createWithConfig(A):e.Node.createDefault()}),r(e.Node.prototype,"free",function(){e.Node.destroy(this)}),r(e.Node.prototype,"freeRecursive",function(){for(var u=0,A=this.getChildCount();u<A;++u)this.getChild(0).freeRecursive();this.free()}),r(e.Node.prototype,"setMeasureFunc",function(u,A){return A?u.call(this,function(){return $Ee.fromJS(A.apply(void 0,arguments))}):this.unsetMeasureFunc()}),r(e.Node.prototype,"calculateLayout",function(u){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:ou.DIRECTION_LTR;return u.call(this,A,p,h)}),lyt({Config:e.Config,Node:e.Node,Layout:t("Layout",cyt),Size:t("Size",$Ee),Value:t("Value",eCe),getInstanceCount:function(){return e.getInstanceCount.apply(e,arguments)}},ou)}});var nCe=U((exports,module)=>{(function(t,e){typeof define=="function"&&define.amd?define([],function(){return e}):typeof module=="object"&&module.exports?module.exports=e:(t.nbind=t.nbind||{}).init=e})(exports,function(Module,cb){typeof Module=="function"&&(cb=Module,Module={}),Module.onRuntimeInitialized=function(t,e){return function(){t&&t.apply(this,arguments);try{Module.ccall("nbind_init")}catch(r){e(r);return}e(null,{bind:Module._nbind_value,reflect:Module.NBind.reflect,queryType:Module.NBind.queryType,toggleLightGC:Module.toggleLightGC,lib:Module})}}(Module.onRuntimeInitialized,cb);var Module;Module||(Module=(typeof Module<"u"?Module:null)||{});var moduleOverrides={};for(var key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1;if(Module.ENVIRONMENT)if(Module.ENVIRONMENT==="WEB")ENVIRONMENT_IS_WEB=!0;else if(Module.ENVIRONMENT==="WORKER")ENVIRONMENT_IS_WORKER=!0;else if(Module.ENVIRONMENT==="NODE")ENVIRONMENT_IS_NODE=!0;else if(Module.ENVIRONMENT==="SHELL")ENVIRONMENT_IS_SHELL=!0;else throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.");else ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof Ie=="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){Module.print||(Module.print=console.log),Module.printErr||(Module.printErr=console.warn);var nodeFS,nodePath;Module.read=function(e,r){nodeFS||(nodeFS={}("")),nodePath||(nodePath={}("")),e=nodePath.normalize(e);var o=nodeFS.readFileSync(e);return r?o:o.toString()},Module.readBinary=function(e){var r=Module.read(e,!0);return r.buffer||(r=new Uint8Array(r)),assert(r.buffer),r},Module.load=function(e){globalEval(read(e))},Module.thisProgram||(process.argv.length>1?Module.thisProgram=process.argv[1].replace(/\\/g,"/"):Module.thisProgram="unknown-program"),Module.arguments=process.argv.slice(2),typeof module<"u"&&(module.exports=Module),Module.inspect=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL)Module.print||(Module.print=print),typeof printErr<"u"&&(Module.printErr=printErr),typeof read<"u"?Module.read=read:Module.read=function(){throw"no read() available"},Module.readBinary=function(e){if(typeof readbuffer=="function")return new Uint8Array(readbuffer(e));var r=read(e,"binary");return assert(typeof r=="object"),r},typeof scriptArgs<"u"?Module.arguments=scriptArgs:typeof arguments<"u"&&(Module.arguments=arguments),typeof quit=="function"&&(Module.quit=function(t,e){quit(t)});else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(Module.read=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},ENVIRONMENT_IS_WORKER&&(Module.readBinary=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),Module.readAsync=function(e,r,o){var a=new XMLHttpRequest;a.open("GET",e,!0),a.responseType="arraybuffer",a.onload=function(){a.status==200||a.status==0&&a.response?r(a.response):o()},a.onerror=o,a.send(null)},typeof arguments<"u"&&(Module.arguments=arguments),typeof console<"u")Module.print||(Module.print=function(e){console.log(e)}),Module.printErr||(Module.printErr=function(e){console.warn(e)});else{var TRY_USE_DUMP=!1;Module.print||(Module.print=TRY_USE_DUMP&&typeof dump<"u"?function(t){dump(t)}:function(t){})}ENVIRONMENT_IS_WORKER&&(Module.load=importScripts),typeof Module.setWindowTitle>"u"&&(Module.setWindowTitle=function(t){document.title=t})}else throw"Unknown runtime environment. Where are we?";function globalEval(t){eval.call(null,t)}!Module.load&&Module.read&&(Module.load=function(e){globalEval(Module.read(e))}),Module.print||(Module.print=function(){}),Module.printErr||(Module.printErr=Module.print),Module.arguments||(Module.arguments=[]),Module.thisProgram||(Module.thisProgram="./this.program"),Module.quit||(Module.quit=function(t,e){throw e}),Module.print=Module.print,Module.printErr=Module.printErr,Module.preRun=[],Module.postRun=[];for(var key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=void 0;var Runtime={setTempRet0:function(t){return tempRet0=t,t},getTempRet0:function(){return tempRet0},stackSave:function(){return STACKTOP},stackRestore:function(t){STACKTOP=t},getNativeTypeSize:function(t){switch(t){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(t[t.length-1]==="*")return Runtime.QUANTUM_SIZE;if(t[0]==="i"){var e=parseInt(t.substr(1));return assert(e%8===0),e/8}else return 0}}},getNativeFieldSize:function(t){return Math.max(Runtime.getNativeTypeSize(t),Runtime.QUANTUM_SIZE)},STACK_ALIGN:16,prepVararg:function(t,e){return e==="double"||e==="i64"?t&7&&(assert((t&7)===4),t+=4):assert((t&3)===0),t},getAlignSize:function(t,e,r){return!r&&(t=="i64"||t=="double")?8:t?Math.min(e||(t?Runtime.getNativeFieldSize(t):0),Runtime.QUANTUM_SIZE):Math.min(e,8)},dynCall:function(t,e,r){return r&&r.length?Module["dynCall_"+t].apply(null,[e].concat(r)):Module["dynCall_"+t].call(null,e)},functionPointers:[],addFunction:function(t){for(var e=0;e<Runtime.functionPointers.length;e++)if(!Runtime.functionPointers[e])return Runtime.functionPointers[e]=t,2*(1+e);throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."},removeFunction:function(t){Runtime.functionPointers[(t-2)/2]=null},warnOnce:function(t){Runtime.warnOnce.shown||(Runtime.warnOnce.shown={}),Runtime.warnOnce.shown[t]||(Runtime.warnOnce.shown[t]=1,Module.printErr(t))},funcWrappers:{},getFuncWrapper:function(t,e){if(!!t){assert(e),Runtime.funcWrappers[e]||(Runtime.funcWrappers[e]={});var r=Runtime.funcWrappers[e];return r[t]||(e.length===1?r[t]=function(){return Runtime.dynCall(e,t)}:e.length===2?r[t]=function(a){return Runtime.dynCall(e,t,[a])}:r[t]=function(){return Runtime.dynCall(e,t,Array.prototype.slice.call(arguments))}),r[t]}},getCompilerSetting:function(t){throw"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work"},stackAlloc:function(t){var e=STACKTOP;return STACKTOP=STACKTOP+t|0,STACKTOP=STACKTOP+15&-16,e},staticAlloc:function(t){var e=STATICTOP;return STATICTOP=STATICTOP+t|0,STATICTOP=STATICTOP+15&-16,e},dynamicAlloc:function(t){var e=HEAP32[DYNAMICTOP_PTR>>2],r=(e+t+15|0)&-16;if(HEAP32[DYNAMICTOP_PTR>>2]=r,r>=TOTAL_MEMORY){var o=enlargeMemory();if(!o)return HEAP32[DYNAMICTOP_PTR>>2]=e,0}return e},alignMemory:function(t,e){var r=t=Math.ceil(t/(e||16))*(e||16);return r},makeBigInt:function(t,e,r){var o=r?+(t>>>0)+ +(e>>>0)*4294967296:+(t>>>0)+ +(e|0)*4294967296;return o},GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module.Runtime=Runtime;var ABORT=0,EXITSTATUS=0;function assert(t,e){t||abort("Assertion failed: "+e)}function getCFunc(ident){var func=Module["_"+ident];if(!func)try{func=eval("_"+ident)}catch(t){}return assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)"),func}var cwrap,ccall;(function(){var JSfuncs={stackSave:function(){Runtime.stackSave()},stackRestore:function(){Runtime.stackRestore()},arrayToC:function(t){var e=Runtime.stackAlloc(t.length);return writeArrayToMemory(t,e),e},stringToC:function(t){var e=0;if(t!=null&&t!==0){var r=(t.length<<2)+1;e=Runtime.stackAlloc(r),stringToUTF8(t,e,r)}return e}},toC={string:JSfuncs.stringToC,array:JSfuncs.arrayToC};ccall=function(e,r,o,a,n){var u=getCFunc(e),A=[],p=0;if(a)for(var h=0;h<a.length;h++){var C=toC[o[h]];C?(p===0&&(p=Runtime.stackSave()),A[h]=C(a[h])):A[h]=a[h]}var w=u.apply(null,A);if(r==="string"&&(w=Pointer_stringify(w)),p!==0){if(n&&n.async){EmterpreterAsync.asyncFinalizers.push(function(){Runtime.stackRestore(p)});return}Runtime.stackRestore(p)}return w};var sourceRegex=/^function\s*[a-zA-Z$_0-9]*\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/;function parseJSFunc(t){var e=t.toString().match(sourceRegex).slice(1);return{arguments:e[0],body:e[1],returnValue:e[2]}}var JSsource=null;function ensureJSsource(){if(!JSsource){JSsource={};for(var t in JSfuncs)JSfuncs.hasOwnProperty(t)&&(JSsource[t]=parseJSFunc(JSfuncs[t]))}}cwrap=function cwrap(ident,returnType,argTypes){argTypes=argTypes||[];var cfunc=getCFunc(ident),numericArgs=argTypes.every(function(t){return t==="number"}),numericRet=returnType!=="string";if(numericRet&&numericArgs)return cfunc;var argNames=argTypes.map(function(t,e){return"$"+e}),funcstr="(function("+argNames.join(",")+") {",nargs=argTypes.length;if(!numericArgs){ensureJSsource(),funcstr+="var stack = "+JSsource.stackSave.body+";";for(var i=0;i<nargs;i++){var arg=argNames[i],type=argTypes[i];if(type!=="number"){var convertCode=JSsource[type+"ToC"];funcstr+="var "+convertCode.arguments+" = "+arg+";",funcstr+=convertCode.body+";",funcstr+=arg+"=("+convertCode.returnValue+");"}}}var cfuncname=parseJSFunc(function(){return cfunc}).returnValue;if(funcstr+="var ret = "+cfuncname+"("+argNames.join(",")+");",!numericRet){var strgfy=parseJSFunc(function(){return Pointer_stringify}).returnValue;funcstr+="ret = "+strgfy+"(ret);"}return numericArgs||(ensureJSsource(),funcstr+=JSsource.stackRestore.body.replace("()","(stack)")+";"),funcstr+="return ret})",eval(funcstr)}})(),Module.ccall=ccall,Module.cwrap=cwrap;function setValue(t,e,r,o){switch(r=r||"i8",r.charAt(r.length-1)==="*"&&(r="i32"),r){case"i1":HEAP8[t>>0]=e;break;case"i8":HEAP8[t>>0]=e;break;case"i16":HEAP16[t>>1]=e;break;case"i32":HEAP32[t>>2]=e;break;case"i64":tempI64=[e>>>0,(tempDouble=e,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[t>>2]=tempI64[0],HEAP32[t+4>>2]=tempI64[1];break;case"float":HEAPF32[t>>2]=e;break;case"double":HEAPF64[t>>3]=e;break;default:abort("invalid type for setValue: "+r)}}Module.setValue=setValue;function getValue(t,e,r){switch(e=e||"i8",e.charAt(e.length-1)==="*"&&(e="i32"),e){case"i1":return HEAP8[t>>0];case"i8":return HEAP8[t>>0];case"i16":return HEAP16[t>>1];case"i32":return HEAP32[t>>2];case"i64":return HEAP32[t>>2];case"float":return HEAPF32[t>>2];case"double":return HEAPF64[t>>3];default:abort("invalid type for setValue: "+e)}return null}Module.getValue=getValue;var ALLOC_NORMAL=0,ALLOC_STACK=1,ALLOC_STATIC=2,ALLOC_DYNAMIC=3,ALLOC_NONE=4;Module.ALLOC_NORMAL=ALLOC_NORMAL,Module.ALLOC_STACK=ALLOC_STACK,Module.ALLOC_STATIC=ALLOC_STATIC,Module.ALLOC_DYNAMIC=ALLOC_DYNAMIC,Module.ALLOC_NONE=ALLOC_NONE;function allocate(t,e,r,o){var a,n;typeof t=="number"?(a=!0,n=t):(a=!1,n=t.length);var u=typeof e=="string"?e:null,A;if(r==ALLOC_NONE?A=o:A=[typeof _malloc=="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][r===void 0?ALLOC_STATIC:r](Math.max(n,u?1:e.length)),a){var o=A,p;for(assert((A&3)==0),p=A+(n&-4);o<p;o+=4)HEAP32[o>>2]=0;for(p=A+n;o<p;)HEAP8[o++>>0]=0;return A}if(u==="i8")return t.subarray||t.slice?HEAPU8.set(t,A):HEAPU8.set(new Uint8Array(t),A),A;for(var h=0,C,w,v;h<n;){var b=t[h];if(typeof b=="function"&&(b=Runtime.getFunctionIndex(b)),C=u||e[h],C===0){h++;continue}C=="i64"&&(C="i32"),setValue(A+h,b,C),v!==C&&(w=Runtime.getNativeTypeSize(C),v=C),h+=w}return A}Module.allocate=allocate;function getMemory(t){return staticSealed?runtimeInitialized?_malloc(t):Runtime.dynamicAlloc(t):Runtime.staticAlloc(t)}Module.getMemory=getMemory;function Pointer_stringify(t,e){if(e===0||!t)return"";for(var r=0,o,a=0;o=HEAPU8[t+a>>0],r|=o,!(o==0&&!e||(a++,e&&a==e)););e||(e=a);var n="";if(r<128){for(var u=1024,A;e>0;)A=String.fromCharCode.apply(String,HEAPU8.subarray(t,t+Math.min(e,u))),n=n?n+A:A,t+=u,e-=u;return n}return Module.UTF8ToString(t)}Module.Pointer_stringify=Pointer_stringify;function AsciiToString(t){for(var e="";;){var r=HEAP8[t++>>0];if(!r)return e;e+=String.fromCharCode(r)}}Module.AsciiToString=AsciiToString;function stringToAscii(t,e){return writeAsciiToMemory(t,e,!1)}Module.stringToAscii=stringToAscii;var UTF8Decoder=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function UTF8ArrayToString(t,e){for(var r=e;t[r];)++r;if(r-e>16&&t.subarray&&UTF8Decoder)return UTF8Decoder.decode(t.subarray(e,r));for(var o,a,n,u,A,p,h="";;){if(o=t[e++],!o)return h;if(!(o&128)){h+=String.fromCharCode(o);continue}if(a=t[e++]&63,(o&224)==192){h+=String.fromCharCode((o&31)<<6|a);continue}if(n=t[e++]&63,(o&240)==224?o=(o&15)<<12|a<<6|n:(u=t[e++]&63,(o&248)==240?o=(o&7)<<18|a<<12|n<<6|u:(A=t[e++]&63,(o&252)==248?o=(o&3)<<24|a<<18|n<<12|u<<6|A:(p=t[e++]&63,o=(o&1)<<30|a<<24|n<<18|u<<12|A<<6|p))),o<65536)h+=String.fromCharCode(o);else{var C=o-65536;h+=String.fromCharCode(55296|C>>10,56320|C&1023)}}}Module.UTF8ArrayToString=UTF8ArrayToString;function UTF8ToString(t){return UTF8ArrayToString(HEAPU8,t)}Module.UTF8ToString=UTF8ToString;function stringToUTF8Array(t,e,r,o){if(!(o>0))return 0;for(var a=r,n=r+o-1,u=0;u<t.length;++u){var A=t.charCodeAt(u);if(A>=55296&&A<=57343&&(A=65536+((A&1023)<<10)|t.charCodeAt(++u)&1023),A<=127){if(r>=n)break;e[r++]=A}else if(A<=2047){if(r+1>=n)break;e[r++]=192|A>>6,e[r++]=128|A&63}else if(A<=65535){if(r+2>=n)break;e[r++]=224|A>>12,e[r++]=128|A>>6&63,e[r++]=128|A&63}else if(A<=2097151){if(r+3>=n)break;e[r++]=240|A>>18,e[r++]=128|A>>12&63,e[r++]=128|A>>6&63,e[r++]=128|A&63}else if(A<=67108863){if(r+4>=n)break;e[r++]=248|A>>24,e[r++]=128|A>>18&63,e[r++]=128|A>>12&63,e[r++]=128|A>>6&63,e[r++]=128|A&63}else{if(r+5>=n)break;e[r++]=252|A>>30,e[r++]=128|A>>24&63,e[r++]=128|A>>18&63,e[r++]=128|A>>12&63,e[r++]=128|A>>6&63,e[r++]=128|A&63}}return e[r]=0,r-a}Module.stringToUTF8Array=stringToUTF8Array;function stringToUTF8(t,e,r){return stringToUTF8Array(t,HEAPU8,e,r)}Module.stringToUTF8=stringToUTF8;function lengthBytesUTF8(t){for(var e=0,r=0;r<t.length;++r){var o=t.charCodeAt(r);o>=55296&&o<=57343&&(o=65536+((o&1023)<<10)|t.charCodeAt(++r)&1023),o<=127?++e:o<=2047?e+=2:o<=65535?e+=3:o<=2097151?e+=4:o<=67108863?e+=5:e+=6}return e}Module.lengthBytesUTF8=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function demangle(t){var e=Module.___cxa_demangle||Module.__cxa_demangle;if(e){try{var r=t.substr(1),o=lengthBytesUTF8(r)+1,a=_malloc(o);stringToUTF8(r,a,o);var n=_malloc(4),u=e(a,0,0,n);if(getValue(n,"i32")===0&&u)return Pointer_stringify(u)}catch{}finally{a&&_free(a),n&&_free(n),u&&_free(u)}return t}return Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),t}function demangleAll(t){var e=/__Z[\w\d_]+/g;return t.replace(e,function(r){var o=demangle(r);return r===o?r:r+" ["+o+"]"})}function jsStackTrace(){var t=new Error;if(!t.stack){try{throw new Error(0)}catch(e){t=e}if(!t.stack)return"(no stack trace available)"}return t.stack.toString()}function stackTrace(){var t=jsStackTrace();return Module.extraStackTrace&&(t+=` |
285 | `+Module.extraStackTrace()),demangleAll(t)}Module.stackTrace=stackTrace;var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module.HEAP8=HEAP8=new Int8Array(buffer),Module.HEAP16=HEAP16=new Int16Array(buffer),Module.HEAP32=HEAP32=new Int32Array(buffer),Module.HEAPU8=HEAPU8=new Uint8Array(buffer),Module.HEAPU16=HEAPU16=new Uint16Array(buffer),Module.HEAPU32=HEAPU32=new Uint32Array(buffer),Module.HEAPF32=HEAPF32=new Float32Array(buffer),Module.HEAPF64=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed,STACK_BASE,STACKTOP,STACK_MAX,DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0,staticSealed=!1;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||134217728;TOTAL_MEMORY<TOTAL_STACK&&Module.printErr("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+TOTAL_MEMORY+"! (TOTAL_STACK="+TOTAL_STACK+")"),Module.buffer?buffer=Module.buffer:buffer=new ArrayBuffer(TOTAL_MEMORY),updateGlobalBufferViews();function getTotalMemory(){return TOTAL_MEMORY}if(HEAP32[0]=1668509029,HEAP16[1]=25459,HEAPU8[2]!==115||HEAPU8[3]!==99)throw"Runtime error: expected the system to be little-endian!";Module.HEAP=HEAP,Module.buffer=buffer,Module.HEAP8=HEAP8,Module.HEAP16=HEAP16,Module.HEAP32=HEAP32,Module.HEAPU8=HEAPU8,Module.HEAPU16=HEAPU16,Module.HEAPU32=HEAPU32,Module.HEAPF32=HEAPF32,Module.HEAPF64=HEAPF64;function callRuntimeCallbacks(t){for(;t.length>0;){var e=t.shift();if(typeof e=="function"){e();continue}var r=e.func;typeof r=="number"?e.arg===void 0?Module.dynCall_v(r):Module.dynCall_vi(r,e.arg):r(e.arg===void 0?null:e.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){runtimeInitialized||(runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__))}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__),runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(t){__ATPRERUN__.unshift(t)}Module.addOnPreRun=addOnPreRun;function addOnInit(t){__ATINIT__.unshift(t)}Module.addOnInit=addOnInit;function addOnPreMain(t){__ATMAIN__.unshift(t)}Module.addOnPreMain=addOnPreMain;function addOnExit(t){__ATEXIT__.unshift(t)}Module.addOnExit=addOnExit;function addOnPostRun(t){__ATPOSTRUN__.unshift(t)}Module.addOnPostRun=addOnPostRun;function intArrayFromString(t,e,r){var o=r>0?r:lengthBytesUTF8(t)+1,a=new Array(o),n=stringToUTF8Array(t,a,0,a.length);return e&&(a.length=n),a}Module.intArrayFromString=intArrayFromString;function intArrayToString(t){for(var e=[],r=0;r<t.length;r++){var o=t[r];o>255&&(o&=255),e.push(String.fromCharCode(o))}return e.join("")}Module.intArrayToString=intArrayToString;function writeStringToMemory(t,e,r){Runtime.warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!");var o,a;r&&(a=e+lengthBytesUTF8(t),o=HEAP8[a]),stringToUTF8(t,e,1/0),r&&(HEAP8[a]=o)}Module.writeStringToMemory=writeStringToMemory;function writeArrayToMemory(t,e){HEAP8.set(t,e)}Module.writeArrayToMemory=writeArrayToMemory;function writeAsciiToMemory(t,e,r){for(var o=0;o<t.length;++o)HEAP8[e++>>0]=t.charCodeAt(o);r||(HEAP8[e>>0]=0)}if(Module.writeAsciiToMemory=writeAsciiToMemory,(!Math.imul||Math.imul(4294967295,5)!==-5)&&(Math.imul=function t(e,r){var o=e>>>16,a=e&65535,n=r>>>16,u=r&65535;return a*u+(o*u+a*n<<16)|0}),Math.imul=Math.imul,!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(t){return froundBuffer[0]=t,froundBuffer[0]}}Math.fround=Math.fround,Math.clz32||(Math.clz32=function(t){t=t>>>0;for(var e=0;e<32;e++)if(t&1<<31-e)return e;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(t){return t<0?Math.ceil(t):Math.floor(t)}),Math.trunc=Math.trunc;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_round=Math.round,Math_min=Math.min,Math_clz32=Math.clz32,Math_trunc=Math.trunc,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(t){return t}function addRunDependency(t){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}Module.addRunDependency=addRunDependency;function removeRunDependency(t){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var e=dependenciesFulfilled;dependenciesFulfilled=null,e()}}Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={};var ASM_CONSTS=[function(t,e,r,o,a,n,u,A){return _nbind.callbackSignatureList[t].apply(this,arguments)}];function _emscripten_asm_const_iiiiiiii(t,e,r,o,a,n,u,A){return ASM_CONSTS[t](e,r,o,a,n,u,A)}function _emscripten_asm_const_iiiii(t,e,r,o,a){return ASM_CONSTS[t](e,r,o,a)}function _emscripten_asm_const_iiidddddd(t,e,r,o,a,n,u,A,p){return ASM_CONSTS[t](e,r,o,a,n,u,A,p)}function _emscripten_asm_const_iiididi(t,e,r,o,a,n,u){return ASM_CONSTS[t](e,r,o,a,n,u)}function _emscripten_asm_const_iiii(t,e,r,o){return ASM_CONSTS[t](e,r,o)}function _emscripten_asm_const_iiiid(t,e,r,o,a){return ASM_CONSTS[t](e,r,o,a)}function _emscripten_asm_const_iiiiii(t,e,r,o,a,n){return ASM_CONSTS[t](e,r,o,a,n)}STATIC_BASE=Runtime.GLOBAL_BASE,STATICTOP=STATIC_BASE+12800,__ATINIT__.push({func:function(){__GLOBAL__sub_I_Yoga_cpp()}},{func:function(){__GLOBAL__sub_I_nbind_cc()}},{func:function(){__GLOBAL__sub_I_common_cc()}},{func:function(){__GLOBAL__sub_I_Binding_cc()}}),allocate([0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,192,127,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,128,191,0,0,128,191,0,0,192,127,0,0,0,0,0,0,0,0,0,0,128,63,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,190,12,0,0,200,12,0,0,208,12,0,0,216,12,0,0,230,12,0,0,242,12,0,0,1,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0,0,192,127,3,0,0,0,180,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,182,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,183,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,184,45,0,0,185,45,0,0,181,45,0,0,181,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,148,4,0,0,3,0,0,0,187,45,0,0,164,4,0,0,188,45,0,0,2,0,0,0,189,45,0,0,164,4,0,0,188,45,0,0,185,45,0,0,164,4,0,0,185,45,0,0,164,4,0,0,188,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,183,45,0,0,182,45,0,0,181,45,0,0,190,45,0,0,190,45,0,0,182,45,0,0,182,45,0,0,185,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,185,45,0,0,48,5,0,0,3,0,0,0,56,5,0,0,1,0,0,0,189,45,0,0,185,45,0,0,164,4,0,0,76,5,0,0,2,0,0,0,191,45,0,0,186,45,0,0,182,45,0,0,185,45,0,0,192,45,0,0,185,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,76,5,0,0,76,5,0,0,136,5,0,0,182,45,0,0,181,45,0,0,2,0,0,0,190,45,0,0,136,5,0,0,56,19,0,0,156,5,0,0,2,0,0,0,184,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,1,0,0,0,10,0,0,0,204,5,0,0,181,45,0,0,181,45,0,0,2,0,0,0,180,45,0,0,204,5,0,0,2,0,0,0,195,45,0,0,236,5,0,0,97,19,0,0,198,45,0,0,211,45,0,0,212,45,0,0,213,45,0,0,214,45,0,0,215,45,0,0,188,45,0,0,182,45,0,0,216,45,0,0,217,45,0,0,218,45,0,0,219,45,0,0,192,45,0,0,181,45,0,0,0,0,0,0,185,45,0,0,110,19,0,0,186,45,0,0,115,19,0,0,221,45,0,0,120,19,0,0,148,4,0,0,132,19,0,0,96,6,0,0,145,19,0,0,222,45,0,0,164,19,0,0,223,45,0,0,173,19,0,0,0,0,0,0,3,0,0,0,104,6,0,0,1,0,0,0,187,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,185,45,0,0,224,45,0,0,164,6,0,0,188,45,0,0,172,6,0,0,180,6,0,0,2,0,0,0,188,6,0,0,7,0,0,0,224,45,0,0,7,0,0,0,164,6,0,0,1,0,0,0,213,45,0,0,185,45,0,0,224,45,0,0,172,6,0,0,185,45,0,0,224,45,0,0,164,6,0,0,185,45,0,0,224,45,0,0,211,45,0,0,211,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,172,6,0,0,222,45,0,0,211,45,0,0,224,45,0,0,188,45,0,0,222,45,0,0,211,45,0,0,40,7,0,0,188,45,0,0,2,0,0,0,224,45,0,0,185,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,222,45,0,0,224,45,0,0,148,4,0,0,185,45,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,185,45,0,0,164,6,0,0,148,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,148,7,0,0,2,0,0,0,225,45,0,0,183,45,0,0,188,45,0,0,168,7,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,9,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,242,45,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,110,111,100,101,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,119,104,105,99,104,32,115,116,105,108,108,32,104,97,115,32,99,104,105,108,100,114,101,110,32,97,116,116,97,99,104,101,100,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,115,116,105,108,108,32,97,116,116,97,99,104,101,100,32,116,111,32,97,32,112,97,114,101,110,116,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,99,111,110,102,105,103,0,67,97,110,110,111,116,32,115,101,116,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,67,104,105,108,100,32,97,108,114,101,97,100,121,32,104,97,115,32,97,32,112,97,114,101,110,116,44,32,105,116,32,109,117,115,116,32,98,101,32,114,101,109,111,118,101,100,32,102,105,114,115,116,46,0,67,97,110,110,111,116,32,97,100,100,32,99,104,105,108,100,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,79,110,108,121,32,108,101,97,102,32,110,111,100,101,115,32,119,105,116,104,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,115,104,111,117,108,100,32,109,97,110,117,97,108,108,121,32,109,97,114,107,32,116,104,101,109,115,101,108,118,101,115,32,97,115,32,100,105,114,116,121,0,67,97,110,110,111,116,32,103,101,116,32,108,97,121,111,117,116,32,112,114,111,112,101,114,116,105,101,115,32,111,102,32,109,117,108,116,105,45,101,100,103,101,32,115,104,111,114,116,104,97,110,100,115,0,37,115,37,100,46,123,91,115,107,105,112,112,101,100,93,32,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,61,62,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,37,115,37,100,46,123,37,115,0,42,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,37,115,10,0,37,115,37,100,46,125,37,115,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,79,117,116,32,111,102,32,99,97,99,104,101,32,101,110,116,114,105,101,115,33,10,0,83,99,97,108,101,32,102,97,99,116,111,114,32,115,104,111,117,108,100,32,110,111,116,32,98,101,32,108,101,115,115,32,116,104,97,110,32,122,101,114,111,0,105,110,105,116,105,97,108,0,37,115,10,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,85,78,68,69,70,73,78,69,68,0,69,88,65,67,84,76,89,0,65,84,95,77,79,83,84,0,76,65,89,95,85,78,68,69,70,73,78,69,68,0,76,65,89,95,69,88,65,67,84,76,89,0,76,65,89,95,65,84,95,77,79,83,84,0,97,118,97,105,108,97,98,108,101,87,105,100,116,104,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,119,105,100,116,104,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,97,118,97,105,108,97,98,108,101,72,101,105,103,104,116,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,104,101,105,103,104,116,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,102,108,101,120,0,115,116,114,101,116,99,104,0,109,117,108,116,105,108,105,110,101,45,115,116,114,101,116,99,104,0,69,120,112,101,99,116,101,100,32,110,111,100,101,32,116,111,32,104,97,118,101,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,0,109,101,97,115,117,114,101,0,69,120,112,101,99,116,32,99,117,115,116,111,109,32,98,97,115,101,108,105,110,101,32,102,117,110,99,116,105,111,110,32,116,111,32,110,111,116,32,114,101,116,117,114,110,32,78,97,78,0,97,98,115,45,109,101,97,115,117,114,101,0,97,98,115,45,108,97,121,111,117,116,0,78,111,100,101,0,99,114,101,97,116,101,68,101,102,97,117,108,116,0,99,114,101,97,116,101,87,105,116,104,67,111,110,102,105,103,0,100,101,115,116,114,111,121,0,114,101,115,101,116,0,99,111,112,121,83,116,121,108,101,0,115,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,115,101,116,80,111,115,105,116,105,111,110,0,115,101,116,80,111,115,105,116,105,111,110,80,101,114,99,101,110,116,0,115,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,115,101,116,65,108,105,103,110,73,116,101,109,115,0,115,101,116,65,108,105,103,110,83,101,108,102,0,115,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,115,101,116,70,108,101,120,87,114,97,112,0,115,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,115,101,116,77,97,114,103,105,110,0,115,101,116,77,97,114,103,105,110,80,101,114,99,101,110,116,0,115,101,116,77,97,114,103,105,110,65,117,116,111,0,115,101,116,79,118,101,114,102,108,111,119,0,115,101,116,68,105,115,112,108,97,121,0,115,101,116,70,108,101,120,0,115,101,116,70,108,101,120,66,97,115,105,115,0,115,101,116,70,108,101,120,66,97,115,105,115,80,101,114,99,101,110,116,0,115,101,116,70,108,101,120,71,114,111,119,0,115,101,116,70,108,101,120,83,104,114,105,110,107,0,115,101,116,87,105,100,116,104,0,115,101,116,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,87,105,100,116,104,65,117,116,111,0,115,101,116,72,101,105,103,104,116,0,115,101,116,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,72,101,105,103,104,116,65,117,116,111,0,115,101,116,77,105,110,87,105,100,116,104,0,115,101,116,77,105,110,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,105,110,72,101,105,103,104,116,0,115,101,116,77,105,110,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,77,97,120,87,105,100,116,104,0,115,101,116,77,97,120,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,97,120,72,101,105,103,104,116,0,115,101,116,77,97,120,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,65,115,112,101,99,116,82,97,116,105,111,0,115,101,116,66,111,114,100,101,114,0,115,101,116,80,97,100,100,105,110,103,0,115,101,116,80,97,100,100,105,110,103,80,101,114,99,101,110,116,0,103,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,103,101,116,80,111,115,105,116,105,111,110,0,103,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,103,101,116,65,108,105,103,110,73,116,101,109,115,0,103,101,116,65,108,105,103,110,83,101,108,102,0,103,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,103,101,116,70,108,101,120,87,114,97,112,0,103,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,103,101,116,77,97,114,103,105,110,0,103,101,116,70,108,101,120,66,97,115,105,115,0,103,101,116,70,108,101,120,71,114,111,119,0,103,101,116,70,108,101,120,83,104,114,105,110,107,0,103,101,116,87,105,100,116,104,0,103,101,116,72,101,105,103,104,116,0,103,101,116,77,105,110,87,105,100,116,104,0,103,101,116,77,105,110,72,101,105,103,104,116,0,103,101,116,77,97,120,87,105,100,116,104,0,103,101,116,77,97,120,72,101,105,103,104,116,0,103,101,116,65,115,112,101,99,116,82,97,116,105,111,0,103,101,116,66,111,114,100,101,114,0,103,101,116,79,118,101,114,102,108,111,119,0,103,101,116,68,105,115,112,108,97,121,0,103,101,116,80,97,100,100,105,110,103,0,105,110,115,101,114,116,67,104,105,108,100,0,114,101,109,111,118,101,67,104,105,108,100,0,103,101,116,67,104,105,108,100,67,111,117,110,116,0,103,101,116,80,97,114,101,110,116,0,103,101,116,67,104,105,108,100,0,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,117,110,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,109,97,114,107,68,105,114,116,121,0,105,115,68,105,114,116,121,0,99,97,108,99,117,108,97,116,101,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,76,101,102,116,0,103,101,116,67,111,109,112,117,116,101,100,82,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,84,111,112,0,103,101,116,67,111,109,112,117,116,101,100,66,111,116,116,111,109,0,103,101,116,67,111,109,112,117,116,101,100,87,105,100,116,104,0,103,101,116,67,111,109,112,117,116,101,100,72,101,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,77,97,114,103,105,110,0,103,101,116,67,111,109,112,117,116,101,100,66,111,114,100,101,114,0,103,101,116,67,111,109,112,117,116,101,100,80,97,100,100,105,110,103,0,67,111,110,102,105,103,0,99,114,101,97,116,101,0,115,101,116,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,115,101,116,80,111,105,110,116,83,99,97,108,101,70,97,99,116,111,114,0,105,115,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,86,97,108,117,101,0,76,97,121,111,117,116,0,83,105,122,101,0,103,101,116,73,110,115,116,97,110,99,101,67,111,117,110,116,0,73,110,116,54,52,0,1,1,1,2,2,4,4,4,4,8,8,4,8,118,111,105,100,0,98,111,111,108,0,115,116,100,58,58,115,116,114,105,110,103,0,99,98,70,117,110,99,116,105,111,110,32,38,0,99,111,110,115,116,32,99,98,70,117,110,99,116,105,111,110,32,38,0,69,120,116,101,114,110,97,108,0,66,117,102,102,101,114,0,78,66,105,110,100,73,68,0,78,66,105,110,100,0,98,105,110,100,95,118,97,108,117,101,0,114,101,102,108,101,99,116,0,113,117,101,114,121,84,121,112,101,0,108,97,108,108,111,99,0,108,114,101,115,101,116,0,123,114,101,116,117,114,110,40,95,110,98,105,110,100,46,99,97,108,108,98,97,99,107,83,105,103,110,97,116,117,114,101,76,105,115,116,91,36,48,93,46,97,112,112,108,121,40,116,104,105,115,44,97,114,103,117,109,101,110,116,115,41,41,59,125,0,95,110,98,105,110,100,95,110,101,119,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=STATICTOP;STATICTOP+=16;function _atexit(t,e){__ATEXIT__.unshift({func:t,arg:e})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}function _abort(){Module.abort()}function __ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj(){Module.printErr("missing function: _ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj"),abort(-1)}function __decorate(t,e,r,o){var a=arguments.length,n=a<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,r):o,u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")n=Reflect.decorate(t,e,r,o);else for(var A=t.length-1;A>=0;A--)(u=t[A])&&(n=(a<3?u(n):a>3?u(e,r,n):u(e,r))||n);return a>3&&n&&Object.defineProperty(e,r,n),n}function _defineHidden(t){return function(e,r){Object.defineProperty(e,r,{configurable:!1,enumerable:!1,value:t,writable:!0})}}var _nbind={};function __nbind_free_external(t){_nbind.externalList[t].dereference(t)}function __nbind_reference_external(t){_nbind.externalList[t].reference()}function _llvm_stackrestore(t){var e=_llvm_stacksave,r=e.LLVM_SAVEDSTACKS[t];e.LLVM_SAVEDSTACKS.splice(t,1),Runtime.stackRestore(r)}function __nbind_register_pool(t,e,r,o){_nbind.Pool.pageSize=t,_nbind.Pool.usedPtr=e/4,_nbind.Pool.rootPtr=r,_nbind.Pool.pagePtr=o/4,HEAP32[e/4]=16909060,HEAP8[e]==1&&(_nbind.bigEndian=!0),HEAP32[e/4]=0,_nbind.makeTypeKindTbl=(n={},n[1024]=_nbind.PrimitiveType,n[64]=_nbind.Int64Type,n[2048]=_nbind.BindClass,n[3072]=_nbind.BindClassPtr,n[4096]=_nbind.SharedClassPtr,n[5120]=_nbind.ArrayType,n[6144]=_nbind.ArrayType,n[7168]=_nbind.CStringType,n[9216]=_nbind.CallbackType,n[10240]=_nbind.BindType,n),_nbind.makeTypeNameTbl={Buffer:_nbind.BufferType,External:_nbind.ExternalType,Int64:_nbind.Int64Type,_nbind_new:_nbind.CreateValueType,bool:_nbind.BooleanType,"cbFunction &":_nbind.CallbackType,"const cbFunction &":_nbind.CallbackType,"const std::string &":_nbind.StringType,"std::string":_nbind.StringType},Module.toggleLightGC=_nbind.toggleLightGC,_nbind.callUpcast=Module.dynCall_ii;var a=_nbind.makeType(_nbind.constructType,{flags:2048,id:0,name:""});a.proto=Module,_nbind.BindClass.list.push(a);var n}function _emscripten_set_main_loop_timing(t,e){if(Browser.mainLoop.timingMode=t,Browser.mainLoop.timingValue=e,!Browser.mainLoop.func)return 1;if(t==0)Browser.mainLoop.scheduler=function(){var u=Math.max(0,Browser.mainLoop.tickStartTime+e-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,u)},Browser.mainLoop.method="timeout";else if(t==1)Browser.mainLoop.scheduler=function(){Browser.requestAnimationFrame(Browser.mainLoop.runner)},Browser.mainLoop.method="rAF";else if(t==2){if(!window.setImmediate){let n=function(u){u.source===window&&u.data===o&&(u.stopPropagation(),r.shift()())};var a=n,r=[],o="setimmediate";window.addEventListener("message",n,!0),window.setImmediate=function(A){r.push(A),ENVIRONMENT_IS_WORKER?(Module.setImmediates===void 0&&(Module.setImmediates=[]),Module.setImmediates.push(A),window.postMessage({target:o})):window.postMessage(o,"*")}}Browser.mainLoop.scheduler=function(){window.setImmediate(Browser.mainLoop.runner)},Browser.mainLoop.method="immediate"}return 0}function _emscripten_get_now(){abort()}function _emscripten_set_main_loop(t,e,r,o,a){Module.noExitRuntime=!0,assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."),Browser.mainLoop.func=t,Browser.mainLoop.arg=o;var n;typeof o<"u"?n=function(){Module.dynCall_vi(t,o)}:n=function(){Module.dynCall_v(t)};var u=Browser.mainLoop.currentlyRunningMainloop;if(Browser.mainLoop.runner=function(){if(!ABORT){if(Browser.mainLoop.queue.length>0){var p=Date.now(),h=Browser.mainLoop.queue.shift();if(h.func(h.arg),Browser.mainLoop.remainingBlockers){var C=Browser.mainLoop.remainingBlockers,w=C%1==0?C-1:Math.floor(C);h.counted?Browser.mainLoop.remainingBlockers=w:(w=w+.5,Browser.mainLoop.remainingBlockers=(8*C+w)/9)}if(console.log('main loop blocker "'+h.name+'" took '+(Date.now()-p)+" ms"),Browser.mainLoop.updateStatus(),u<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(!(u<Browser.mainLoop.currentlyRunningMainloop)){if(Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0,Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else Browser.mainLoop.timingMode==0&&(Browser.mainLoop.tickStartTime=_emscripten_get_now());Browser.mainLoop.method==="timeout"&&Module.ctx&&(Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!"),Browser.mainLoop.method=""),Browser.mainLoop.runIter(n),!(u<Browser.mainLoop.currentlyRunningMainloop)&&(typeof SDL=="object"&&SDL.audio&&SDL.audio.queueNewAudioData&&SDL.audio.queueNewAudioData(),Browser.mainLoop.scheduler())}}},a||(e&&e>0?_emscripten_set_main_loop_timing(0,1e3/e):_emscripten_set_main_loop_timing(1,1),Browser.mainLoop.scheduler()),r)throw"SimulateInfiniteLoop"}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null,Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var t=Browser.mainLoop.timingMode,e=Browser.mainLoop.timingValue,r=Browser.mainLoop.func;Browser.mainLoop.func=null,_emscripten_set_main_loop(r,0,!1,Browser.mainLoop.arg,!0),_emscripten_set_main_loop_timing(t,e),Browser.mainLoop.scheduler()},updateStatus:function(){if(Module.setStatus){var t=Module.statusMessage||"Please wait...",e=Browser.mainLoop.remainingBlockers,r=Browser.mainLoop.expectedBlockers;e?e<r?Module.setStatus(t+" ("+(r-e)+"/"+r+")"):Module.setStatus(t):Module.setStatus("")}},runIter:function(t){if(!ABORT){if(Module.preMainLoop){var e=Module.preMainLoop();if(e===!1)return}try{t()}catch(r){if(r instanceof ExitStatus)return;throw r&&typeof r=="object"&&r.stack&&Module.printErr("exception thrown: "+[r,r.stack]),r}Module.postMainLoop&&Module.postMainLoop()}}},isFullscreen:!1,pointerLock:!1,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(Module.preloadPlugins||(Module.preloadPlugins=[]),Browser.initted)return;Browser.initted=!0;try{new Blob,Browser.hasBlobConstructor=!0}catch{Browser.hasBlobConstructor=!1,console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=typeof MozBlobBuilder<"u"?MozBlobBuilder:typeof WebKitBlobBuilder<"u"?WebKitBlobBuilder:Browser.hasBlobConstructor?null:console.log("warning: no BlobBuilder"),Browser.URLObject=typeof window<"u"?window.URL?window.URL:window.webkitURL:void 0,!Module.noImageDecoding&&typeof Browser.URLObject>"u"&&(console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."),Module.noImageDecoding=!0);var t={};t.canHandle=function(n){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(n)},t.handle=function(n,u,A,p){var h=null;if(Browser.hasBlobConstructor)try{h=new Blob([n],{type:Browser.getMimetype(u)}),h.size!==n.length&&(h=new Blob([new Uint8Array(n).buffer],{type:Browser.getMimetype(u)}))}catch(b){Runtime.warnOnce("Blob constructor present but fails: "+b+"; falling back to blob builder")}if(!h){var C=new Browser.BlobBuilder;C.append(new Uint8Array(n).buffer),h=C.getBlob()}var w=Browser.URLObject.createObjectURL(h),v=new Image;v.onload=function(){assert(v.complete,"Image "+u+" could not be decoded");var E=document.createElement("canvas");E.width=v.width,E.height=v.height;var R=E.getContext("2d");R.drawImage(v,0,0),Module.preloadedImages[u]=E,Browser.URLObject.revokeObjectURL(w),A&&A(n)},v.onerror=function(E){console.log("Image "+w+" could not be decoded"),p&&p()},v.src=w},Module.preloadPlugins.push(t);var e={};e.canHandle=function(n){return!Module.noAudioDecoding&&n.substr(-4)in{".ogg":1,".wav":1,".mp3":1}},e.handle=function(n,u,A,p){var h=!1;function C(R){h||(h=!0,Module.preloadedAudios[u]=R,A&&A(n))}function w(){h||(h=!0,Module.preloadedAudios[u]=new Audio,p&&p())}if(Browser.hasBlobConstructor){try{var v=new Blob([n],{type:Browser.getMimetype(u)})}catch{return w()}var b=Browser.URLObject.createObjectURL(v),E=new Audio;E.addEventListener("canplaythrough",function(){C(E)},!1),E.onerror=function(L){if(h)return;console.log("warning: browser could not fully decode audio "+u+", trying slower base64 approach");function _(J){for(var re="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",oe="=",pe="",he=0,ve=0,ge=0;ge<J.length;ge++)for(he=he<<8|J[ge],ve+=8;ve>=6;){var le=he>>ve-6&63;ve-=6,pe+=re[le]}return ve==2?(pe+=re[(he&3)<<4],pe+=oe+oe):ve==4&&(pe+=re[(he&15)<<2],pe+=oe),pe}E.src="data:audio/x-"+u.substr(-3)+";base64,"+_(n),C(E)},E.src=b,Browser.safeSetTimeout(function(){C(E)},1e4)}else return w()},Module.preloadPlugins.push(e);function r(){Browser.pointerLock=document.pointerLockElement===Module.canvas||document.mozPointerLockElement===Module.canvas||document.webkitPointerLockElement===Module.canvas||document.msPointerLockElement===Module.canvas}var o=Module.canvas;o&&(o.requestPointerLock=o.requestPointerLock||o.mozRequestPointerLock||o.webkitRequestPointerLock||o.msRequestPointerLock||function(){},o.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},o.exitPointerLock=o.exitPointerLock.bind(document),document.addEventListener("pointerlockchange",r,!1),document.addEventListener("mozpointerlockchange",r,!1),document.addEventListener("webkitpointerlockchange",r,!1),document.addEventListener("mspointerlockchange",r,!1),Module.elementPointerLock&&o.addEventListener("click",function(a){!Browser.pointerLock&&Module.canvas.requestPointerLock&&(Module.canvas.requestPointerLock(),a.preventDefault())},!1))},createContext:function(t,e,r,o){if(e&&Module.ctx&&t==Module.canvas)return Module.ctx;var a,n;if(e){var u={antialias:!1,alpha:!1};if(o)for(var A in o)u[A]=o[A];n=GL.createContext(t,u),n&&(a=GL.getContext(n).GLctx)}else a=t.getContext("2d");return a?(r&&(e||assert(typeof GLctx>"u","cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),Module.ctx=a,e&&GL.makeContextCurrent(n),Module.useWebGL=e,Browser.moduleContextCreatedCallbacks.forEach(function(p){p()}),Browser.init()),a):null},destroyContext:function(t,e,r){},fullscreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullscreen:function(t,e,r){Browser.lockPointer=t,Browser.resizeCanvas=e,Browser.vrDevice=r,typeof Browser.lockPointer>"u"&&(Browser.lockPointer=!0),typeof Browser.resizeCanvas>"u"&&(Browser.resizeCanvas=!1),typeof Browser.vrDevice>"u"&&(Browser.vrDevice=null);var o=Module.canvas;function a(){Browser.isFullscreen=!1;var u=o.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===u?(o.exitFullscreen=document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){},o.exitFullscreen=o.exitFullscreen.bind(document),Browser.lockPointer&&o.requestPointerLock(),Browser.isFullscreen=!0,Browser.resizeCanvas&&Browser.setFullscreenCanvasSize()):(u.parentNode.insertBefore(o,u),u.parentNode.removeChild(u),Browser.resizeCanvas&&Browser.setWindowedCanvasSize()),Module.onFullScreen&&Module.onFullScreen(Browser.isFullscreen),Module.onFullscreen&&Module.onFullscreen(Browser.isFullscreen),Browser.updateCanvasDimensions(o)}Browser.fullscreenHandlersInstalled||(Browser.fullscreenHandlersInstalled=!0,document.addEventListener("fullscreenchange",a,!1),document.addEventListener("mozfullscreenchange",a,!1),document.addEventListener("webkitfullscreenchange",a,!1),document.addEventListener("MSFullscreenChange",a,!1));var n=document.createElement("div");o.parentNode.insertBefore(n,o),n.appendChild(o),n.requestFullscreen=n.requestFullscreen||n.mozRequestFullScreen||n.msRequestFullscreen||(n.webkitRequestFullscreen?function(){n.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}:null)||(n.webkitRequestFullScreen?function(){n.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),r?n.requestFullscreen({vrDisplay:r}):n.requestFullscreen()},requestFullScreen:function(t,e,r){return Module.printErr("Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead."),Browser.requestFullScreen=function(o,a,n){return Browser.requestFullscreen(o,a,n)},Browser.requestFullscreen(t,e,r)},nextRAF:0,fakeRequestAnimationFrame:function(t){var e=Date.now();if(Browser.nextRAF===0)Browser.nextRAF=e+1e3/60;else for(;e+2>=Browser.nextRAF;)Browser.nextRAF+=1e3/60;var r=Math.max(Browser.nextRAF-e,0);setTimeout(t,r)},requestAnimationFrame:function t(e){typeof window>"u"?Browser.fakeRequestAnimationFrame(e):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||Browser.fakeRequestAnimationFrame),window.requestAnimationFrame(e))},safeCallback:function(t){return function(){if(!ABORT)return t.apply(null,arguments)}},allowAsyncCallbacks:!0,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=!1},resumeAsyncCallbacks:function(){if(Browser.allowAsyncCallbacks=!0,Browser.queuedAsyncCallbacks.length>0){var t=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[],t.forEach(function(e){e()})}},safeRequestAnimationFrame:function(t){return Browser.requestAnimationFrame(function(){ABORT||(Browser.allowAsyncCallbacks?t():Browser.queuedAsyncCallbacks.push(t))})},safeSetTimeout:function(t,e){return Module.noExitRuntime=!0,setTimeout(function(){ABORT||(Browser.allowAsyncCallbacks?t():Browser.queuedAsyncCallbacks.push(t))},e)},safeSetInterval:function(t,e){return Module.noExitRuntime=!0,setInterval(function(){ABORT||Browser.allowAsyncCallbacks&&t()},e)},getMimetype:function(t){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[t.substr(t.lastIndexOf(".")+1)]},getUserMedia:function(t){window.getUserMedia||(window.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia),window.getUserMedia(t)},getMovementX:function(t){return t.movementX||t.mozMovementX||t.webkitMovementX||0},getMovementY:function(t){return t.movementY||t.mozMovementY||t.webkitMovementY||0},getMouseWheelDelta:function(t){var e=0;switch(t.type){case"DOMMouseScroll":e=t.detail;break;case"mousewheel":e=t.wheelDelta;break;case"wheel":e=t.deltaY;break;default:throw"unrecognized mouse wheel event: "+t.type}return e},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(t){if(Browser.pointerLock)t.type!="mousemove"&&"mozMovementX"in t?Browser.mouseMovementX=Browser.mouseMovementY=0:(Browser.mouseMovementX=Browser.getMovementX(t),Browser.mouseMovementY=Browser.getMovementY(t)),typeof SDL<"u"?(Browser.mouseX=SDL.mouseX+Browser.mouseMovementX,Browser.mouseY=SDL.mouseY+Browser.mouseMovementY):(Browser.mouseX+=Browser.mouseMovementX,Browser.mouseY+=Browser.mouseMovementY);else{var e=Module.canvas.getBoundingClientRect(),r=Module.canvas.width,o=Module.canvas.height,a=typeof window.scrollX<"u"?window.scrollX:window.pageXOffset,n=typeof window.scrollY<"u"?window.scrollY:window.pageYOffset;if(t.type==="touchstart"||t.type==="touchend"||t.type==="touchmove"){var u=t.touch;if(u===void 0)return;var A=u.pageX-(a+e.left),p=u.pageY-(n+e.top);A=A*(r/e.width),p=p*(o/e.height);var h={x:A,y:p};if(t.type==="touchstart")Browser.lastTouches[u.identifier]=h,Browser.touches[u.identifier]=h;else if(t.type==="touchend"||t.type==="touchmove"){var C=Browser.touches[u.identifier];C||(C=h),Browser.lastTouches[u.identifier]=C,Browser.touches[u.identifier]=h}return}var w=t.pageX-(a+e.left),v=t.pageY-(n+e.top);w=w*(r/e.width),v=v*(o/e.height),Browser.mouseMovementX=w-Browser.mouseX,Browser.mouseMovementY=v-Browser.mouseY,Browser.mouseX=w,Browser.mouseY=v}},asyncLoad:function(t,e,r,o){var a=o?"":"al "+t;Module.readAsync(t,function(n){assert(n,'Loading data file "'+t+'" failed (no arrayBuffer).'),e(new Uint8Array(n)),a&&removeRunDependency(a)},function(n){if(r)r();else throw'Loading data file "'+t+'" failed.'}),a&&addRunDependency(a)},resizeListeners:[],updateResizeListeners:function(){var t=Module.canvas;Browser.resizeListeners.forEach(function(e){e(t.width,t.height)})},setCanvasSize:function(t,e,r){var o=Module.canvas;Browser.updateCanvasDimensions(o,t,e),r||Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL<"u"){var t=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];t=t|8388608,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=t}Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL<"u"){var t=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];t=t&-8388609,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=t}Browser.updateResizeListeners()},updateCanvasDimensions:function(t,e,r){e&&r?(t.widthNative=e,t.heightNative=r):(e=t.widthNative,r=t.heightNative);var o=e,a=r;if(Module.forcedAspectRatio&&Module.forcedAspectRatio>0&&(o/a<Module.forcedAspectRatio?o=Math.round(a*Module.forcedAspectRatio):a=Math.round(o/Module.forcedAspectRatio)),(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===t.parentNode&&typeof screen<"u"){var n=Math.min(screen.width/o,screen.height/a);o=Math.round(o*n),a=Math.round(a*n)}Browser.resizeCanvas?(t.width!=o&&(t.width=o),t.height!=a&&(t.height=a),typeof t.style<"u"&&(t.style.removeProperty("width"),t.style.removeProperty("height"))):(t.width!=e&&(t.width=e),t.height!=r&&(t.height=r),typeof t.style<"u"&&(o!=e||a!=r?(t.style.setProperty("width",o+"px","important"),t.style.setProperty("height",a+"px","important")):(t.style.removeProperty("width"),t.style.removeProperty("height"))))},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var t=Browser.nextWgetRequestHandle;return Browser.nextWgetRequestHandle++,t}},SYSCALLS={varargs:0,get:function(t){SYSCALLS.varargs+=4;var e=HEAP32[SYSCALLS.varargs-4>>2];return e},getStr:function(){var t=Pointer_stringify(SYSCALLS.get());return t},get64:function(){var t=SYSCALLS.get(),e=SYSCALLS.get();return t>=0?assert(e===0):assert(e===-1),t},getZero:function(){assert(SYSCALLS.get()===0)}};function ___syscall6(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.getStreamFromFD();return FS.close(r),0}catch(o){return(typeof FS>"u"||!(o instanceof FS.ErrnoError))&&abort(o),-o.errno}}function ___syscall54(t,e){SYSCALLS.varargs=e;try{return 0}catch(r){return(typeof FS>"u"||!(r instanceof FS.ErrnoError))&&abort(r),-r.errno}}function _typeModule(t){var e=[[0,1,"X"],[1,1,"const X"],[128,1,"X *"],[256,1,"X &"],[384,1,"X &&"],[512,1,"std::shared_ptr<X>"],[640,1,"std::unique_ptr<X>"],[5120,1,"std::vector<X>"],[6144,2,"std::array<X, Y>"],[9216,-1,"std::function<X (Y)>"]];function r(p,h,C,w,v,b){if(h==1){var E=w&896;(E==128||E==256||E==384)&&(p="X const")}var R;return b?R=C.replace("X",p).replace("Y",v):R=p.replace("X",C).replace("Y",v),R.replace(/([*&]) (?=[*&])/g,"$1")}function o(p,h,C,w,v){throw new Error(p+" type "+C.replace("X",h+"?")+(w?" with flag "+w:"")+" in "+v)}function a(p,h,C,w,v,b,E,R){b===void 0&&(b="X"),R===void 0&&(R=1);var L=C(p);if(L)return L;var _=w(p),J=_.placeholderFlag,re=e[J];E&&re&&(b=r(E[2],E[0],b,re[0],"?",!0));var oe;J==0&&(oe="Unbound"),J>=10&&(oe="Corrupt"),R>20&&(oe="Deeply nested"),oe&&o(oe,p,b,J,v||"?");var pe=_.paramList[0],he=a(pe,h,C,w,v,b,re,R+1),ve,ge={flags:re[0],id:p,name:"",paramList:[he]},le=[],Pe="?";switch(_.placeholderFlag){case 1:ve=he.spec;break;case 2:if((he.flags&15360)==1024&&he.spec.ptrSize==1){ge.flags=7168;break}case 3:case 6:case 5:ve=he.spec,he.flags&15360;break;case 8:Pe=""+_.paramList[1],ge.paramList.push(_.paramList[1]);break;case 9:for(var g=0,De=_.paramList[1];g<De.length;g++){var Ee=De[g],de=a(Ee,h,C,w,v,b,re,R+1);le.push(de.name),ge.paramList.push(de)}Pe=le.join(", ");break;default:break}if(ge.name=r(re[2],re[0],he.name,he.flags,Pe),ve){for(var ne=0,Z=Object.keys(ve);ne<Z.length;ne++){var me=Z[ne];ge[me]=ge[me]||ve[me]}ge.flags|=ve.flags}return n(h,ge)}function n(p,h){var C=h.flags,w=C&896,v=C&15360;return!h.name&&v==1024&&(h.ptrSize==1?h.name=(C&16?"":(C&8?"un":"")+"signed ")+"char":h.name=(C&8?"u":"")+(C&32?"float":"int")+(h.ptrSize*8+"_t")),h.ptrSize==8&&!(C&32)&&(v=64),v==2048&&(w==512||w==640?v=4096:w&&(v=3072)),p(v,h)}var u=function(){function p(h){this.id=h.id,this.name=h.name,this.flags=h.flags,this.spec=h}return p.prototype.toString=function(){return this.name},p}(),A={Type:u,getComplexType:a,makeType:n,structureList:e};return t.output=A,t.output||A}function __nbind_register_type(t,e){var r=_nbind.readAsciiString(e),o={flags:10240,id:t,name:r};_nbind.makeType(_nbind.constructType,o)}function __nbind_register_callback_signature(t,e){var r=_nbind.readTypeIdList(t,e),o=_nbind.callbackSignatureList.length;return _nbind.callbackSignatureList[o]=_nbind.makeJSCaller(r),o}function __extends(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);function o(){this.constructor=t}o.prototype=e.prototype,t.prototype=new o}function __nbind_register_class(t,e,r,o,a,n,u){var A=_nbind.readAsciiString(u),p=_nbind.readPolicyList(e),h=HEAPU32.subarray(t/4,t/4+2),C={flags:2048|(p.Value?2:0),id:h[0],name:A},w=_nbind.makeType(_nbind.constructType,C);w.ptrType=_nbind.getComplexType(h[1],_nbind.constructType,_nbind.getType,_nbind.queryType),w.destroy=_nbind.makeMethodCaller(w.ptrType,{boundID:C.id,flags:0,name:"destroy",num:0,ptr:n,title:w.name+".free",typeList:["void","uint32_t","uint32_t"]}),a&&(w.superIdList=Array.prototype.slice.call(HEAPU32.subarray(r/4,r/4+a)),w.upcastList=Array.prototype.slice.call(HEAPU32.subarray(o/4,o/4+a))),Module[w.name]=w.makeBound(p),_nbind.BindClass.list.push(w)}function _removeAccessorPrefix(t){var e=/^[Gg]et_?([A-Z]?([A-Z]?))/;return t.replace(e,function(r,o,a){return a?o:o.toLowerCase()})}function __nbind_register_function(t,e,r,o,a,n,u,A,p,h){var C=_nbind.getType(t),w=_nbind.readPolicyList(e),v=_nbind.readTypeIdList(r,o),b;if(u==5)b=[{direct:a,name:"__nbindConstructor",ptr:0,title:C.name+" constructor",typeList:["uint32_t"].concat(v.slice(1))},{direct:n,name:"__nbindValueConstructor",ptr:0,title:C.name+" value constructor",typeList:["void","uint32_t"].concat(v.slice(1))}];else{var E=_nbind.readAsciiString(A),R=(C.name&&C.name+".")+E;(u==3||u==4)&&(E=_removeAccessorPrefix(E)),b=[{boundID:t,direct:n,name:E,ptr:a,title:R,typeList:v}]}for(var L=0,_=b;L<_.length;L++){var J=_[L];J.signatureType=u,J.policyTbl=w,J.num=p,J.flags=h,C.addMethod(J)}}function _nbind_value(t,e){_nbind.typeNameTbl[t]||_nbind.throwError("Unknown value type "+t),Module.NBind.bind_value(t,e),_defineHidden(_nbind.typeNameTbl[t].proto.prototype.__nbindValueConstructor)(e.prototype,"__nbindValueConstructor")}Module._nbind_value=_nbind_value;function __nbind_get_value_object(t,e){var r=_nbind.popValue(t);if(!r.fromJS)throw new Error("Object "+r+" has no fromJS function");r.fromJS(function(){r.__nbindValueConstructor.apply(this,Array.prototype.concat.apply([e],arguments))})}function _emscripten_memcpy_big(t,e,r){return HEAPU8.set(HEAPU8.subarray(e,e+r),t),t}function __nbind_register_primitive(t,e,r){var o={flags:1024|r,id:t,ptrSize:e};_nbind.makeType(_nbind.constructType,o)}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",ALLOC_STATIC);function ___setErrNo(t){return Module.___errno_location&&(HEAP32[Module.___errno_location()>>2]=t),t}function _llvm_stacksave(){var t=_llvm_stacksave;return t.LLVM_SAVEDSTACKS||(t.LLVM_SAVEDSTACKS=[]),t.LLVM_SAVEDSTACKS.push(Runtime.stackSave()),t.LLVM_SAVEDSTACKS.length-1}function ___syscall140(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.getStreamFromFD(),o=SYSCALLS.get(),a=SYSCALLS.get(),n=SYSCALLS.get(),u=SYSCALLS.get(),A=a;return FS.llseek(r,A,u),HEAP32[n>>2]=r.position,r.getdents&&A===0&&u===0&&(r.getdents=null),0}catch(p){return(typeof FS>"u"||!(p instanceof FS.ErrnoError))&&abort(p),-p.errno}}function ___syscall146(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.get(),o=SYSCALLS.get(),a=SYSCALLS.get(),n=0;___syscall146.buffer||(___syscall146.buffers=[null,[],[]],___syscall146.printChar=function(C,w){var v=___syscall146.buffers[C];assert(v),w===0||w===10?((C===1?Module.print:Module.printErr)(UTF8ArrayToString(v,0)),v.length=0):v.push(w)});for(var u=0;u<a;u++){for(var A=HEAP32[o+u*8>>2],p=HEAP32[o+(u*8+4)>>2],h=0;h<p;h++)___syscall146.printChar(r,HEAPU8[A+h]);n+=p}return n}catch(C){return(typeof FS>"u"||!(C instanceof FS.ErrnoError))&&abort(C),-C.errno}}function __nbind_finish(){for(var t=0,e=_nbind.BindClass.list;t<e.length;t++){var r=e[t];r.finish()}}var ___dso_handle=STATICTOP;STATICTOP+=16,function(_nbind){var typeIdTbl={};_nbind.typeNameTbl={};var Pool=function(){function t(){}return t.lalloc=function(e){e=e+7&-8;var r=HEAPU32[t.usedPtr];if(e>t.pageSize/2||e>t.pageSize-r){var o=_nbind.typeNameTbl.NBind.proto;return o.lalloc(e)}else return HEAPU32[t.usedPtr]=r+e,t.rootPtr+r},t.lreset=function(e,r){var o=HEAPU32[t.pagePtr];if(o){var a=_nbind.typeNameTbl.NBind.proto;a.lreset(e,r)}else HEAPU32[t.usedPtr]=e},t}();_nbind.Pool=Pool;function constructType(t,e){var r=t==10240?_nbind.makeTypeNameTbl[e.name]||_nbind.BindType:_nbind.makeTypeKindTbl[t],o=new r(e);return typeIdTbl[e.id]=o,_nbind.typeNameTbl[e.name]=o,o}_nbind.constructType=constructType;function getType(t){return typeIdTbl[t]}_nbind.getType=getType;function queryType(t){var e=HEAPU8[t],r=_nbind.structureList[e][1];t/=4,r<0&&(++t,r=HEAPU32[t]+1);var o=Array.prototype.slice.call(HEAPU32.subarray(t+1,t+1+r));return e==9&&(o=[o[0],o.slice(1)]),{paramList:o,placeholderFlag:e}}_nbind.queryType=queryType;function getTypes(t,e){return t.map(function(r){return typeof r=="number"?_nbind.getComplexType(r,constructType,getType,queryType,e):_nbind.typeNameTbl[r]})}_nbind.getTypes=getTypes;function readTypeIdList(t,e){return Array.prototype.slice.call(HEAPU32,t/4,t/4+e)}_nbind.readTypeIdList=readTypeIdList;function readAsciiString(t){for(var e=t;HEAPU8[e++];);return String.fromCharCode.apply("",HEAPU8.subarray(t,e-1))}_nbind.readAsciiString=readAsciiString;function readPolicyList(t){var e={};if(t)for(;;){var r=HEAPU32[t/4];if(!r)break;e[readAsciiString(r)]=!0,t+=4}return e}_nbind.readPolicyList=readPolicyList;function getDynCall(t,e){var r={float32_t:"d",float64_t:"d",int64_t:"d",uint64_t:"d",void:"v"},o=t.map(function(n){return r[n.name]||"i"}).join(""),a=Module["dynCall_"+o];if(!a)throw new Error("dynCall_"+o+" not found for "+e+"("+t.map(function(n){return n.name}).join(", ")+")");return a}_nbind.getDynCall=getDynCall;function addMethod(t,e,r,o){var a=t[e];t.hasOwnProperty(e)&&a?((a.arity||a.arity===0)&&(a=_nbind.makeOverloader(a,a.arity),t[e]=a),a.addMethod(r,o)):(r.arity=o,t[e]=r)}_nbind.addMethod=addMethod;function throwError(t){throw new Error(t)}_nbind.throwError=throwError,_nbind.bigEndian=!1,_a=_typeModule(_typeModule),_nbind.Type=_a.Type,_nbind.makeType=_a.makeType,_nbind.getComplexType=_a.getComplexType,_nbind.structureList=_a.structureList;var BindType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.heap=HEAPU32,r.ptrSize=4,r}return e.prototype.needsWireRead=function(r){return!!this.wireRead||!!this.makeWireRead},e.prototype.needsWireWrite=function(r){return!!this.wireWrite||!!this.makeWireWrite},e}(_nbind.Type);_nbind.BindType=BindType;var PrimitiveType=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this,a=r.flags&32?{32:HEAPF32,64:HEAPF64}:r.flags&8?{8:HEAPU8,16:HEAPU16,32:HEAPU32}:{8:HEAP8,16:HEAP16,32:HEAP32};return o.heap=a[r.ptrSize*8],o.ptrSize=r.ptrSize,o}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireWrite=function(r,o){return o&&o.Strict&&function(a){if(typeof a=="number")return a;throw new Error("Type mismatch")}},e}(BindType);_nbind.PrimitiveType=PrimitiveType;function pushCString(t,e){if(t==null){if(e&&e.Nullable)return 0;throw new Error("Type mismatch")}if(e&&e.Strict){if(typeof t!="string")throw new Error("Type mismatch")}else t=t.toString();var r=Module.lengthBytesUTF8(t)+1,o=_nbind.Pool.lalloc(r);return Module.stringToUTF8Array(t,HEAPU8,o,r),o}_nbind.pushCString=pushCString;function popCString(t){return t===0?null:Module.Pointer_stringify(t)}_nbind.popCString=popCString;var CStringType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popCString,r.wireWrite=pushCString,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,o){return function(a){return pushCString(a,o)}},e}(BindType);_nbind.CStringType=CStringType;var BooleanType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=function(o){return!!o},r}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireRead=function(r){return"!!("+r+")"},e.prototype.makeWireWrite=function(r,o){return o&&o.Strict&&function(a){if(typeof a=="boolean")return a;throw new Error("Type mismatch")}||r},e}(BindType);_nbind.BooleanType=BooleanType;var Wrapper=function(){function t(){}return t.prototype.persist=function(){this.__nbindState|=1},t}();_nbind.Wrapper=Wrapper;function makeBound(t,e){var r=function(o){__extends(a,o);function a(n,u,A,p){var h=o.call(this)||this;if(!(h instanceof a))return new(Function.prototype.bind.apply(a,Array.prototype.concat.apply([null],arguments)));var C=u,w=A,v=p;if(n!==_nbind.ptrMarker){var b=h.__nbindConstructor.apply(h,arguments);C=4608,v=HEAPU32[b/4],w=HEAPU32[b/4+1]}var E={configurable:!0,enumerable:!1,value:null,writable:!1},R={__nbindFlags:C,__nbindPtr:w};v&&(R.__nbindShared=v,_nbind.mark(h));for(var L=0,_=Object.keys(R);L<_.length;L++){var J=_[L];E.value=R[J],Object.defineProperty(h,J,E)}return _defineHidden(0)(h,"__nbindState"),h}return a.prototype.free=function(){e.destroy.call(this,this.__nbindShared,this.__nbindFlags),this.__nbindState|=2,disableMember(this,"__nbindShared"),disableMember(this,"__nbindPtr")},a}(Wrapper);return __decorate([_defineHidden()],r.prototype,"__nbindConstructor",void 0),__decorate([_defineHidden()],r.prototype,"__nbindValueConstructor",void 0),__decorate([_defineHidden(t)],r.prototype,"__nbindPolicies",void 0),r}_nbind.makeBound=makeBound;function disableMember(t,e){function r(){throw new Error("Accessing deleted object")}Object.defineProperty(t,e,{configurable:!1,enumerable:!1,get:r,set:r})}_nbind.ptrMarker={};var BindClass=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this;return o.wireRead=function(a){return _nbind.popValue(a,o.ptrType)},o.wireWrite=function(a){return pushPointer(a,o.ptrType,!0)},o.pendingSuperCount=0,o.ready=!1,o.methodTbl={},r.paramList?(o.classType=r.paramList[0].classType,o.proto=o.classType.proto):o.classType=o,o}return e.prototype.makeBound=function(r){var o=_nbind.makeBound(r,this);return this.proto=o,this.ptrType.proto=o,o},e.prototype.addMethod=function(r){var o=this.methodTbl[r.name]||[];o.push(r),this.methodTbl[r.name]=o},e.prototype.registerMethods=function(r,o){for(var a,n=0,u=Object.keys(r.methodTbl);n<u.length;n++)for(var A=u[n],p=r.methodTbl[A],h=0,C=p;h<C.length;h++){var w=C[h],v=void 0,b=void 0;if(v=this.proto.prototype,!(o&&w.signatureType!=1))switch(w.signatureType){case 1:v=this.proto;case 5:b=_nbind.makeCaller(w),_nbind.addMethod(v,w.name,b,w.typeList.length-1);break;case 4:a=_nbind.makeMethodCaller(r.ptrType,w);break;case 3:Object.defineProperty(v,w.name,{configurable:!0,enumerable:!1,get:_nbind.makeMethodCaller(r.ptrType,w),set:a});break;case 2:b=_nbind.makeMethodCaller(r.ptrType,w),_nbind.addMethod(v,w.name,b,w.typeList.length-1);break;default:break}}},e.prototype.registerSuperMethods=function(r,o,a){if(!a[r.name]){a[r.name]=!0;for(var n=0,u,A=0,p=r.superIdList||[];A<p.length;A++){var h=p[A],C=_nbind.getType(h);n++<o||o<0?u=-1:u=0,this.registerSuperMethods(C,u,a)}this.registerMethods(r,o<0)}},e.prototype.finish=function(){if(this.ready)return this;this.ready=!0,this.superList=(this.superIdList||[]).map(function(a){return _nbind.getType(a).finish()});var r=this.proto;if(this.superList.length){var o=function(){this.constructor=r};o.prototype=this.superList[0].proto.prototype,r.prototype=new o}return r!=Module&&(r.prototype.__nbindType=this),this.registerSuperMethods(this,1,{}),this},e.prototype.upcastStep=function(r,o){if(r==this)return o;for(var a=0;a<this.superList.length;++a){var n=this.superList[a].upcastStep(r,_nbind.callUpcast(this.upcastList[a],o));if(n)return n}return 0},e}(_nbind.BindType);BindClass.list=[],_nbind.BindClass=BindClass;function popPointer(t,e){return t?new e.proto(_nbind.ptrMarker,e.flags,t):null}_nbind.popPointer=popPointer;function pushPointer(t,e,r){if(!(t instanceof _nbind.Wrapper)){if(r)return _nbind.pushValue(t);throw new Error("Type mismatch")}var o=t.__nbindPtr,a=t.__nbindType.classType,n=e.classType;if(t instanceof e.proto)for(;a!=n;)o=_nbind.callUpcast(a.upcastList[0],o),a=a.superList[0];else if(o=a.upcastStep(n,o),!o)throw new Error("Type mismatch");return o}_nbind.pushPointer=pushPointer;function pushMutablePointer(t,e){var r=pushPointer(t,e);if(t.__nbindFlags&1)throw new Error("Passing a const value as a non-const argument");return r}var BindClassPtr=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this;o.classType=r.paramList[0].classType,o.proto=o.classType.proto;var a=r.flags&1,n=(o.flags&896)==256&&r.flags&2,u=a?pushPointer:pushMutablePointer,A=n?_nbind.popValue:popPointer;return o.makeWireWrite=function(p,h){return h.Nullable?function(C){return C?u(C,o):0}:function(C){return u(C,o)}},o.wireRead=function(p){return A(p,o)},o.wireWrite=function(p){return u(p,o)},o}return e}(_nbind.BindType);_nbind.BindClassPtr=BindClassPtr;function popShared(t,e){var r=HEAPU32[t/4],o=HEAPU32[t/4+1];return o?new e.proto(_nbind.ptrMarker,e.flags,o,r):null}_nbind.popShared=popShared;function pushShared(t,e){if(!(t instanceof e.proto))throw new Error("Type mismatch");return t.__nbindShared}function pushMutableShared(t,e){if(!(t instanceof e.proto))throw new Error("Type mismatch");if(t.__nbindFlags&1)throw new Error("Passing a const value as a non-const argument");return t.__nbindShared}var SharedClassPtr=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this;o.readResources=[_nbind.resources.pool],o.classType=r.paramList[0].classType,o.proto=o.classType.proto;var a=r.flags&1,n=a?pushShared:pushMutableShared;return o.wireRead=function(u){return popShared(u,o)},o.wireWrite=function(u){return n(u,o)},o}return e}(_nbind.BindType);_nbind.SharedClassPtr=SharedClassPtr,_nbind.externalList=[0];var firstFreeExternal=0,External=function(){function t(e){this.refCount=1,this.data=e}return t.prototype.register=function(){var e=firstFreeExternal;return e?firstFreeExternal=_nbind.externalList[e]:e=_nbind.externalList.length,_nbind.externalList[e]=this,e},t.prototype.reference=function(){++this.refCount},t.prototype.dereference=function(e){--this.refCount==0&&(this.free&&this.free(),_nbind.externalList[e]=firstFreeExternal,firstFreeExternal=e)},t}();_nbind.External=External;function popExternal(t){var e=_nbind.externalList[t];return e.dereference(t),e.data}function pushExternal(t){var e=new External(t);return e.reference(),e.register()}var ExternalType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popExternal,r.wireWrite=pushExternal,r}return e}(_nbind.BindType);_nbind.ExternalType=ExternalType,_nbind.callbackSignatureList=[];var CallbackType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireWrite=function(o){return typeof o!="function"&&_nbind.throwError("Type mismatch"),new _nbind.External(o).register()},r}return e}(_nbind.BindType);_nbind.CallbackType=CallbackType,_nbind.valueList=[0];var firstFreeValue=0;function pushValue(t){var e=firstFreeValue;return e?firstFreeValue=_nbind.valueList[e]:e=_nbind.valueList.length,_nbind.valueList[e]=t,e*2+1}_nbind.pushValue=pushValue;function popValue(t,e){if(t||_nbind.throwError("Value type JavaScript class is missing or not registered"),t&1){t>>=1;var r=_nbind.valueList[t];return _nbind.valueList[t]=firstFreeValue,firstFreeValue=t,r}else{if(e)return _nbind.popShared(t,e);throw new Error("Invalid value slot "+t)}}_nbind.popValue=popValue;var valueBase=18446744073709552e3;function push64(t){return typeof t=="number"?t:pushValue(t)*4096+valueBase}function pop64(t){return t<valueBase?t:popValue((t-valueBase)/4096)}var CreateValueType=function(t){__extends(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.makeWireWrite=function(r){return"(_nbind.pushValue(new "+r+"))"},e}(_nbind.BindType);_nbind.CreateValueType=CreateValueType;var Int64Type=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireWrite=push64,r.wireRead=pop64,r}return e}(_nbind.BindType);_nbind.Int64Type=Int64Type;function pushArray(t,e){if(!t)return 0;var r=t.length;if((e.size||e.size===0)&&r<e.size)throw new Error("Type mismatch");var o=e.memberType.ptrSize,a=_nbind.Pool.lalloc(4+r*o);HEAPU32[a/4]=r;var n=e.memberType.heap,u=(a+4)/o,A=e.memberType.wireWrite,p=0;if(A)for(;p<r;)n[u++]=A(t[p++]);else for(;p<r;)n[u++]=t[p++];return a}_nbind.pushArray=pushArray;function popArray(t,e){if(t===0)return null;var r=HEAPU32[t/4],o=new Array(r),a=e.memberType.heap;t=(t+4)/e.memberType.ptrSize;var n=e.memberType.wireRead,u=0;if(n)for(;u<r;)o[u++]=n(a[t++]);else for(;u<r;)o[u++]=a[t++];return o}_nbind.popArray=popArray;var ArrayType=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this;return o.wireRead=function(a){return popArray(a,o)},o.wireWrite=function(a){return pushArray(a,o)},o.readResources=[_nbind.resources.pool],o.writeResources=[_nbind.resources.pool],o.memberType=r.paramList[0],r.paramList[1]&&(o.size=r.paramList[1]),o}return e}(_nbind.BindType);_nbind.ArrayType=ArrayType;function pushString(t,e){if(t==null)if(e&&e.Nullable)t="";else throw new Error("Type mismatch");if(e&&e.Strict){if(typeof t!="string")throw new Error("Type mismatch")}else t=t.toString();var r=Module.lengthBytesUTF8(t),o=_nbind.Pool.lalloc(4+r+1);return HEAPU32[o/4]=r,Module.stringToUTF8Array(t,HEAPU8,o+4,r+1),o}_nbind.pushString=pushString;function popString(t){if(t===0)return null;var e=HEAPU32[t/4];return Module.Pointer_stringify(t+4,e)}_nbind.popString=popString;var StringType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popString,r.wireWrite=pushString,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,o){return function(a){return pushString(a,o)}},e}(_nbind.BindType);_nbind.StringType=StringType;function makeArgList(t){return Array.apply(null,Array(t)).map(function(e,r){return"a"+(r+1)})}function anyNeedsWireWrite(t,e){return t.reduce(function(r,o){return r||o.needsWireWrite(e)},!1)}function anyNeedsWireRead(t,e){return t.reduce(function(r,o){return r||!!o.needsWireRead(e)},!1)}function makeWireRead(t,e,r,o){var a=t.length;return r.makeWireRead?r.makeWireRead(o,t,a):r.wireRead?(t[a]=r.wireRead,"(convertParamList["+a+"]("+o+"))"):o}function makeWireWrite(t,e,r,o){var a,n=t.length;return r.makeWireWrite?a=r.makeWireWrite(o,e,t,n):a=r.wireWrite,a?typeof a=="string"?a:(t[n]=a,"(convertParamList["+n+"]("+o+"))"):o}function buildCallerFunction(dynCall,ptrType,ptr,num,policyTbl,needsWireWrite,prefix,returnType,argTypeList,mask,err){var argList=makeArgList(argTypeList.length),convertParamList=[],callExpression=makeWireRead(convertParamList,policyTbl,returnType,"dynCall("+[prefix].concat(argList.map(function(t,e){return makeWireWrite(convertParamList,policyTbl,argTypeList[e],t)})).join(",")+")"),resourceSet=_nbind.listResources([returnType],argTypeList),sourceCode="function("+argList.join(",")+"){"+(mask?"this.__nbindFlags&mask&&err();":"")+resourceSet.makeOpen()+"var r="+callExpression+";"+resourceSet.makeClose()+"return r;}";return eval("("+sourceCode+")")}function buildJSCallerFunction(returnType,argTypeList){var argList=makeArgList(argTypeList.length),convertParamList=[],callExpression=makeWireWrite(convertParamList,null,returnType,"_nbind.externalList[num].data("+argList.map(function(t,e){return makeWireRead(convertParamList,null,argTypeList[e],t)}).join(",")+")"),resourceSet=_nbind.listResources(argTypeList,[returnType]);resourceSet.remove(_nbind.resources.pool);var sourceCode="function("+["dummy","num"].concat(argList).join(",")+"){"+resourceSet.makeOpen()+"var r="+callExpression+";"+resourceSet.makeClose()+"return r;}";return eval("("+sourceCode+")")}_nbind.buildJSCallerFunction=buildJSCallerFunction;function makeJSCaller(t){var e=t.length-1,r=_nbind.getTypes(t,"callback"),o=r[0],a=r.slice(1),n=anyNeedsWireRead(a,null),u=o.needsWireWrite(null);if(!u&&!n)switch(e){case 0:return function(A,p){return _nbind.externalList[p].data()};case 1:return function(A,p,h){return _nbind.externalList[p].data(h)};case 2:return function(A,p,h,C){return _nbind.externalList[p].data(h,C)};case 3:return function(A,p,h,C,w){return _nbind.externalList[p].data(h,C,w)};default:break}return buildJSCallerFunction(o,a)}_nbind.makeJSCaller=makeJSCaller;function makeMethodCaller(t,e){var r=e.typeList.length-1,o=e.typeList.slice(0);o.splice(1,0,"uint32_t",e.boundID);var a=_nbind.getTypes(o,e.title),n=a[0],u=a.slice(3),A=n.needsWireRead(e.policyTbl),p=anyNeedsWireWrite(u,e.policyTbl),h=e.ptr,C=e.num,w=_nbind.getDynCall(a,e.title),v=~e.flags&1;function b(){throw new Error("Calling a non-const method on a const object")}if(!A&&!p)switch(r){case 0:return function(){return this.__nbindFlags&v?b():w(h,C,_nbind.pushPointer(this,t))};case 1:return function(E){return this.__nbindFlags&v?b():w(h,C,_nbind.pushPointer(this,t),E)};case 2:return function(E,R){return this.__nbindFlags&v?b():w(h,C,_nbind.pushPointer(this,t),E,R)};case 3:return function(E,R,L){return this.__nbindFlags&v?b():w(h,C,_nbind.pushPointer(this,t),E,R,L)};default:break}return buildCallerFunction(w,t,h,C,e.policyTbl,p,"ptr,num,pushPointer(this,ptrType)",n,u,v,b)}_nbind.makeMethodCaller=makeMethodCaller;function makeCaller(t){var e=t.typeList.length-1,r=_nbind.getTypes(t.typeList,t.title),o=r[0],a=r.slice(1),n=o.needsWireRead(t.policyTbl),u=anyNeedsWireWrite(a,t.policyTbl),A=t.direct,p=t.ptr;if(t.direct&&!n&&!u){var h=_nbind.getDynCall(r,t.title);switch(e){case 0:return function(){return h(A)};case 1:return function(b){return h(A,b)};case 2:return function(b,E){return h(A,b,E)};case 3:return function(b,E,R){return h(A,b,E,R)};default:break}p=0}var C;if(p){var w=t.typeList.slice(0);w.splice(1,0,"uint32_t"),r=_nbind.getTypes(w,t.title),C="ptr,num"}else p=A,C="ptr";var v=_nbind.getDynCall(r,t.title);return buildCallerFunction(v,null,p,t.num,t.policyTbl,u,C,o,a)}_nbind.makeCaller=makeCaller;function makeOverloader(t,e){var r=[];function o(){return r[arguments.length].apply(this,arguments)}return o.addMethod=function(a,n){r[n]=a},o.addMethod(t,e),o}_nbind.makeOverloader=makeOverloader;var Resource=function(){function t(e,r){var o=this;this.makeOpen=function(){return Object.keys(o.openTbl).join("")},this.makeClose=function(){return Object.keys(o.closeTbl).join("")},this.openTbl={},this.closeTbl={},e&&(this.openTbl[e]=!0),r&&(this.closeTbl[r]=!0)}return t.prototype.add=function(e){for(var r=0,o=Object.keys(e.openTbl);r<o.length;r++){var a=o[r];this.openTbl[a]=!0}for(var n=0,u=Object.keys(e.closeTbl);n<u.length;n++){var a=u[n];this.closeTbl[a]=!0}},t.prototype.remove=function(e){for(var r=0,o=Object.keys(e.openTbl);r<o.length;r++){var a=o[r];delete this.openTbl[a]}for(var n=0,u=Object.keys(e.closeTbl);n<u.length;n++){var a=u[n];delete this.closeTbl[a]}},t}();_nbind.Resource=Resource;function listResources(t,e){for(var r=new Resource,o=0,a=t;o<a.length;o++)for(var n=a[o],u=0,A=n.readResources||[];u<A.length;u++){var p=A[u];r.add(p)}for(var h=0,C=e;h<C.length;h++)for(var n=C[h],w=0,v=n.writeResources||[];w<v.length;w++){var p=v[w];r.add(p)}return r}_nbind.listResources=listResources,_nbind.resources={pool:new Resource("var used=HEAPU32[_nbind.Pool.usedPtr],page=HEAPU32[_nbind.Pool.pagePtr];","_nbind.Pool.lreset(used,page);")};var ExternalBuffer=function(t){__extends(e,t);function e(r,o){var a=t.call(this,r)||this;return a.ptr=o,a}return e.prototype.free=function(){_free(this.ptr)},e}(_nbind.External);function getBuffer(t){return t instanceof ArrayBuffer?new Uint8Array(t):t instanceof DataView?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t}function pushBuffer(t,e){if(t==null&&e&&e.Nullable&&(t=[]),typeof t!="object")throw new Error("Type mismatch");var r=t,o=r.byteLength||r.length;if(!o&&o!==0&&r.byteLength!==0)throw new Error("Type mismatch");var a=_nbind.Pool.lalloc(8),n=_malloc(o),u=a/4;return HEAPU32[u++]=o,HEAPU32[u++]=n,HEAPU32[u++]=new ExternalBuffer(t,n).register(),HEAPU8.set(getBuffer(t),n),a}var BufferType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireWrite=pushBuffer,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,o){return function(a){return pushBuffer(a,o)}},e}(_nbind.BindType);_nbind.BufferType=BufferType;function commitBuffer(t,e,r){var o=_nbind.externalList[t].data,a=Buffer;if(typeof Buffer!="function"&&(a=function(){}),!(o instanceof Array)){var n=HEAPU8.subarray(e,e+r);if(o instanceof a){var u=void 0;typeof Buffer.from=="function"&&Buffer.from.length>=3?u=Buffer.from(n):u=new Buffer(n),u.copy(o)}else getBuffer(o).set(n)}}_nbind.commitBuffer=commitBuffer;var dirtyList=[],gcTimer=0;function sweep(){for(var t=0,e=dirtyList;t<e.length;t++){var r=e[t];r.__nbindState&3||r.free()}dirtyList=[],gcTimer=0}_nbind.mark=function(t){};function toggleLightGC(t){t?_nbind.mark=function(e){dirtyList.push(e),gcTimer||(gcTimer=setTimeout(sweep,0))}:_nbind.mark=function(e){}}_nbind.toggleLightGC=toggleLightGC}(_nbind),Module.requestFullScreen=function t(e,r,o){Module.printErr("Module.requestFullScreen is deprecated. Please call Module.requestFullscreen instead."),Module.requestFullScreen=Module.requestFullscreen,Browser.requestFullScreen(e,r,o)},Module.requestFullscreen=function t(e,r,o){Browser.requestFullscreen(e,r,o)},Module.requestAnimationFrame=function t(e){Browser.requestAnimationFrame(e)},Module.setCanvasSize=function t(e,r,o){Browser.setCanvasSize(e,r,o)},Module.pauseMainLoop=function t(){Browser.mainLoop.pause()},Module.resumeMainLoop=function t(){Browser.mainLoop.resume()},Module.getUserMedia=function t(){Browser.getUserMedia()},Module.createContext=function t(e,r,o,a){return Browser.createContext(e,r,o,a)},ENVIRONMENT_IS_NODE?_emscripten_get_now=function(){var e=process.hrtime();return e[0]*1e3+e[1]/1e6}:typeof dateNow<"u"?_emscripten_get_now=dateNow:typeof self=="object"&&self.performance&&typeof self.performance.now=="function"?_emscripten_get_now=function(){return self.performance.now()}:typeof performance=="object"&&typeof performance.now=="function"?_emscripten_get_now=function(){return performance.now()}:_emscripten_get_now=Date.now,__ATEXIT__.push(function(){var t=Module._fflush;t&&t(0);var e=___syscall146.printChar;if(!!e){var r=___syscall146.buffers;r[1].length&&e(1,10),r[2].length&&e(2,10)}}),DYNAMICTOP_PTR=allocate(1,"i32",ALLOC_STATIC),STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP),STACK_MAX=STACK_BASE+TOTAL_STACK,DYNAMIC_BASE=Runtime.alignMemory(STACK_MAX),HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE,staticSealed=!0;function invoke_viiiii(t,e,r,o,a,n){try{Module.dynCall_viiiii(t,e,r,o,a,n)}catch(u){if(typeof u!="number"&&u!=="longjmp")throw u;Module.setThrew(1,0)}}function invoke_vif(t,e,r){try{Module.dynCall_vif(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_vid(t,e,r){try{Module.dynCall_vid(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_fiff(t,e,r,o){try{return Module.dynCall_fiff(t,e,r,o)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_vi(t,e){try{Module.dynCall_vi(t,e)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_vii(t,e,r){try{Module.dynCall_vii(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_ii(t,e){try{return Module.dynCall_ii(t,e)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_viddi(t,e,r,o,a){try{Module.dynCall_viddi(t,e,r,o,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}function invoke_vidd(t,e,r,o){try{Module.dynCall_vidd(t,e,r,o)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_iiii(t,e,r,o){try{return Module.dynCall_iiii(t,e,r,o)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_diii(t,e,r,o){try{return Module.dynCall_diii(t,e,r,o)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_di(t,e){try{return Module.dynCall_di(t,e)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_iid(t,e,r){try{return Module.dynCall_iid(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_iii(t,e,r){try{return Module.dynCall_iii(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_viiddi(t,e,r,o,a,n){try{Module.dynCall_viiddi(t,e,r,o,a,n)}catch(u){if(typeof u!="number"&&u!=="longjmp")throw u;Module.setThrew(1,0)}}function invoke_viiiiii(t,e,r,o,a,n,u){try{Module.dynCall_viiiiii(t,e,r,o,a,n,u)}catch(A){if(typeof A!="number"&&A!=="longjmp")throw A;Module.setThrew(1,0)}}function invoke_dii(t,e,r){try{return Module.dynCall_dii(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_i(t){try{return Module.dynCall_i(t)}catch(e){if(typeof e!="number"&&e!=="longjmp")throw e;Module.setThrew(1,0)}}function invoke_iiiiii(t,e,r,o,a,n){try{return Module.dynCall_iiiiii(t,e,r,o,a,n)}catch(u){if(typeof u!="number"&&u!=="longjmp")throw u;Module.setThrew(1,0)}}function invoke_viiid(t,e,r,o,a){try{Module.dynCall_viiid(t,e,r,o,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}function invoke_viififi(t,e,r,o,a,n,u){try{Module.dynCall_viififi(t,e,r,o,a,n,u)}catch(A){if(typeof A!="number"&&A!=="longjmp")throw A;Module.setThrew(1,0)}}function invoke_viii(t,e,r,o){try{Module.dynCall_viii(t,e,r,o)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_v(t){try{Module.dynCall_v(t)}catch(e){if(typeof e!="number"&&e!=="longjmp")throw e;Module.setThrew(1,0)}}function invoke_viid(t,e,r,o){try{Module.dynCall_viid(t,e,r,o)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_idd(t,e,r){try{return Module.dynCall_idd(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_viiii(t,e,r,o,a){try{Module.dynCall_viiii(t,e,r,o,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}Module.asmGlobalArg={Math,Int8Array,Int16Array,Int32Array,Uint8Array,Uint16Array,Uint32Array,Float32Array,Float64Array,NaN:NaN,Infinity:1/0},Module.asmLibraryArg={abort,assert,enlargeMemory,getTotalMemory,abortOnCannotGrowMemory,invoke_viiiii,invoke_vif,invoke_vid,invoke_fiff,invoke_vi,invoke_vii,invoke_ii,invoke_viddi,invoke_vidd,invoke_iiii,invoke_diii,invoke_di,invoke_iid,invoke_iii,invoke_viiddi,invoke_viiiiii,invoke_dii,invoke_i,invoke_iiiiii,invoke_viiid,invoke_viififi,invoke_viii,invoke_v,invoke_viid,invoke_idd,invoke_viiii,_emscripten_asm_const_iiiii,_emscripten_asm_const_iiidddddd,_emscripten_asm_const_iiiid,__nbind_reference_external,_emscripten_asm_const_iiiiiiii,_removeAccessorPrefix,_typeModule,__nbind_register_pool,__decorate,_llvm_stackrestore,___cxa_atexit,__extends,__nbind_get_value_object,__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,_emscripten_set_main_loop_timing,__nbind_register_primitive,__nbind_register_type,_emscripten_memcpy_big,__nbind_register_function,___setErrNo,__nbind_register_class,__nbind_finish,_abort,_nbind_value,_llvm_stacksave,___syscall54,_defineHidden,_emscripten_set_main_loop,_emscripten_get_now,__nbind_register_callback_signature,_emscripten_asm_const_iiiiii,__nbind_free_external,_emscripten_asm_const_iiii,_emscripten_asm_const_iiididi,___syscall6,_atexit,___syscall140,___syscall146,DYNAMICTOP_PTR,tempDoublePtr,ABORT,STACKTOP,STACK_MAX,cttz_i8,___dso_handle};var asm=function(t,e,r){var o=new t.Int8Array(r),a=new t.Int16Array(r),n=new t.Int32Array(r),u=new t.Uint8Array(r),A=new t.Uint16Array(r),p=new t.Uint32Array(r),h=new t.Float32Array(r),C=new t.Float64Array(r),w=e.DYNAMICTOP_PTR|0,v=e.tempDoublePtr|0,b=e.ABORT|0,E=e.STACKTOP|0,R=e.STACK_MAX|0,L=e.cttz_i8|0,_=e.___dso_handle|0,J=0,re=0,oe=0,pe=0,he=t.NaN,ve=t.Infinity,ge=0,le=0,Pe=0,g=0,De=0,Ee=0,de=t.Math.floor,ne=t.Math.abs,Z=t.Math.sqrt,me=t.Math.pow,be=t.Math.cos,ut=t.Math.sin,H=t.Math.tan,yt=t.Math.acos,Me=t.Math.asin,Te=t.Math.atan,Qe=t.Math.atan2,Ue=t.Math.exp,je=t.Math.log,At=t.Math.ceil,Le=t.Math.imul,x=t.Math.min,I=t.Math.max,P=t.Math.clz32,y=t.Math.fround,F=e.abort,z=e.assert,X=e.enlargeMemory,$=e.getTotalMemory,ie=e.abortOnCannotGrowMemory,ke=e.invoke_viiiii,Ne=e.invoke_vif,st=e.invoke_vid,ht=e.invoke_fiff,Ut=e.invoke_vi,Xt=e.invoke_vii,Pt=e.invoke_ii,tn=e.invoke_viddi,Dr=e.invoke_vidd,fr=e.invoke_iiii,Br=e.invoke_diii,jr=e.invoke_di,Hn=e.invoke_iid,bs=e.invoke_iii,ki=e.invoke_viiddi,gs=e.invoke_viiiiii,to=e.invoke_dii,Di=e.invoke_i,Qs=e.invoke_iiiiii,ro=e.invoke_viiid,uc=e.invoke_viififi,hu=e.invoke_viii,op=e.invoke_v,ap=e.invoke_viid,ks=e.invoke_idd,Cn=e.invoke_viiii,no=e._emscripten_asm_const_iiiii,Fs=e._emscripten_asm_const_iiidddddd,dl=e._emscripten_asm_const_iiiid,ml=e.__nbind_reference_external,io=e._emscripten_asm_const_iiiiiiii,_e=e._removeAccessorPrefix,Fn=e._typeModule,Fi=e.__nbind_register_pool,Rn=e.__decorate,Ui=e._llvm_stackrestore,Zt=e.___cxa_atexit,Ri=e.__extends,Zn=e.__nbind_get_value_object,La=e.__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,$t=e._emscripten_set_main_loop_timing,Ac=e.__nbind_register_primitive,gu=e.__nbind_register_type,fc=e._emscripten_memcpy_big,yl=e.__nbind_register_function,DA=e.___setErrNo,du=e.__nbind_register_class,Ce=e.__nbind_finish,Rt=e._abort,pc=e._nbind_value,_i=e._llvm_stacksave,mu=e.___syscall54,qt=e._defineHidden,El=e._emscripten_set_main_loop,SA=e._emscripten_get_now,lp=e.__nbind_register_callback_signature,hc=e._emscripten_asm_const_iiiiii,PA=e.__nbind_free_external,Dn=e._emscripten_asm_const_iiii,ui=e._emscripten_asm_const_iiididi,gc=e.___syscall6,xA=e._atexit,ta=e.___syscall140,Hi=e.___syscall146,Lo=y(0);let $e=y(0);function so(s){s=s|0;var l=0;return l=E,E=E+s|0,E=E+15&-16,l|0}function Cl(){return E|0}function yu(s){s=s|0,E=s}function qi(s,l){s=s|0,l=l|0,E=s,R=l}function Eu(s,l){s=s|0,l=l|0,J||(J=s,re=l)}function bA(s){s=s|0,Ee=s}function Oa(){return Ee|0}function dc(){var s=0,l=0;Cr(8104,8,400)|0,Cr(8504,408,540)|0,s=9044,l=s+44|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));o[9088]=0,o[9089]=1,n[2273]=0,n[2274]=948,n[2275]=948,Zt(17,8104,_|0)|0}function ds(s){s=s|0,Be(s+948|0)}function Ot(s){return s=y(s),((xu(s)|0)&2147483647)>>>0>2139095040|0}function Sn(s,l,c){s=s|0,l=l|0,c=c|0;e:do if(n[s+(l<<3)+4>>2]|0)s=s+(l<<3)|0;else{if((l|2|0)==3&&n[s+60>>2]|0){s=s+56|0;break}switch(l|0){case 0:case 2:case 4:case 5:{if(n[s+52>>2]|0){s=s+48|0;break e}break}default:}if(n[s+68>>2]|0){s=s+64|0;break}else{s=(l|1|0)==5?948:c;break}}while(0);return s|0}function di(s){s=s|0;var l=0;return l=Yv(1e3)|0,ra(s,(l|0)!=0,2456),n[2276]=(n[2276]|0)+1,Cr(l|0,8104,1e3)|0,o[s+2>>0]|0&&(n[l+4>>2]=2,n[l+12>>2]=4),n[l+976>>2]=s,l|0}function ra(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;d=E,E=E+16|0,f=d,l||(n[f>>2]=c,fg(s,5,3197,f)),E=d}function oo(){return di(956)|0}function Rs(s){s=s|0;var l=0;return l=Gt(1e3)|0,na(l,s),ra(n[s+976>>2]|0,1,2456),n[2276]=(n[2276]|0)+1,n[l+944>>2]=0,l|0}function na(s,l){s=s|0,l=l|0;var c=0;Cr(s|0,l|0,948)|0,Qm(s+948|0,l+948|0),c=s+960|0,s=l+960|0,l=c+40|0;do n[c>>2]=n[s>>2],c=c+4|0,s=s+4|0;while((c|0)<(l|0))}function ia(s){s=s|0;var l=0,c=0,f=0,d=0;if(l=s+944|0,c=n[l>>2]|0,c|0&&(Oo(c+948|0,s)|0,n[l>>2]=0),c=Zi(s)|0,c|0){l=0;do n[(Ts(s,l)|0)+944>>2]=0,l=l+1|0;while((l|0)!=(c|0))}c=s+948|0,f=n[c>>2]|0,d=s+952|0,l=n[d>>2]|0,(l|0)!=(f|0)&&(n[d>>2]=l+(~((l+-4-f|0)>>>2)<<2)),Ns(c),Kv(s),n[2276]=(n[2276]|0)+-1}function Oo(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0;f=n[s>>2]|0,Q=s+4|0,c=n[Q>>2]|0,m=c;e:do if((f|0)==(c|0))d=f,B=4;else for(s=f;;){if((n[s>>2]|0)==(l|0)){d=s,B=4;break e}if(s=s+4|0,(s|0)==(c|0)){s=0;break}}while(0);return(B|0)==4&&((d|0)!=(c|0)?(f=d+4|0,s=m-f|0,l=s>>2,l&&(DI(d|0,f|0,s|0)|0,c=n[Q>>2]|0),s=d+(l<<2)|0,(c|0)==(s|0)||(n[Q>>2]=c+(~((c+-4-s|0)>>>2)<<2)),s=1):s=0),s|0}function Zi(s){return s=s|0,(n[s+952>>2]|0)-(n[s+948>>2]|0)>>2|0}function Ts(s,l){s=s|0,l=l|0;var c=0;return c=n[s+948>>2]|0,(n[s+952>>2]|0)-c>>2>>>0>l>>>0?s=n[c+(l<<2)>>2]|0:s=0,s|0}function Ns(s){s=s|0;var l=0,c=0,f=0,d=0;f=E,E=E+32|0,l=f,d=n[s>>2]|0,c=(n[s+4>>2]|0)-d|0,((n[s+8>>2]|0)-d|0)>>>0>c>>>0&&(d=c>>2,Ep(l,d,d,s+8|0),dg(s,l),MA(l)),E=f}function Ls(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0;M=Zi(s)|0;do if(M|0){if((n[(Ts(s,0)|0)+944>>2]|0)==(s|0)){if(!(Oo(s+948|0,l)|0))break;Cr(l+400|0,8504,540)|0,n[l+944>>2]=0,qe(s);break}B=n[(n[s+976>>2]|0)+12>>2]|0,Q=s+948|0,k=(B|0)==0,c=0,m=0;do f=n[(n[Q>>2]|0)+(m<<2)>>2]|0,(f|0)==(l|0)?qe(s):(d=Rs(f)|0,n[(n[Q>>2]|0)+(c<<2)>>2]=d,n[d+944>>2]=s,k||SR[B&15](f,d,s,c),c=c+1|0),m=m+1|0;while((m|0)!=(M|0));if(c>>>0<M>>>0){k=s+948|0,Q=s+952|0,B=c,c=n[Q>>2]|0;do m=(n[k>>2]|0)+(B<<2)|0,f=m+4|0,d=c-f|0,l=d>>2,l&&(DI(m|0,f|0,d|0)|0,c=n[Q>>2]|0),d=c,f=m+(l<<2)|0,(d|0)!=(f|0)&&(c=d+(~((d+-4-f|0)>>>2)<<2)|0,n[Q>>2]=c),B=B+1|0;while((B|0)!=(M|0))}}while(0)}function ao(s){s=s|0;var l=0,c=0,f=0,d=0;Wn(s,(Zi(s)|0)==0,2491),Wn(s,(n[s+944>>2]|0)==0,2545),l=s+948|0,c=n[l>>2]|0,f=s+952|0,d=n[f>>2]|0,(d|0)!=(c|0)&&(n[f>>2]=d+(~((d+-4-c|0)>>>2)<<2)),Ns(l),l=s+976|0,c=n[l>>2]|0,Cr(s|0,8104,1e3)|0,o[c+2>>0]|0&&(n[s+4>>2]=2,n[s+12>>2]=4),n[l>>2]=c}function Wn(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;d=E,E=E+16|0,f=d,l||(n[f>>2]=c,co(s,5,3197,f)),E=d}function qn(){return n[2276]|0}function $i(){var s=0;return s=Yv(20)|0,es((s|0)!=0,2592),n[2277]=(n[2277]|0)+1,n[s>>2]=n[239],n[s+4>>2]=n[240],n[s+8>>2]=n[241],n[s+12>>2]=n[242],n[s+16>>2]=n[243],s|0}function es(s,l){s=s|0,l=l|0;var c=0,f=0;f=E,E=E+16|0,c=f,s||(n[c>>2]=l,co(0,5,3197,c)),E=f}function mi(s){s=s|0,Kv(s),n[2277]=(n[2277]|0)+-1}function Ma(s,l){s=s|0,l=l|0;var c=0;l?(Wn(s,(Zi(s)|0)==0,2629),c=1):(c=0,l=0),n[s+964>>2]=l,n[s+988>>2]=c}function sa(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=E,E=E+16|0,m=f+8|0,d=f+4|0,B=f,n[d>>2]=l,Wn(s,(n[l+944>>2]|0)==0,2709),Wn(s,(n[s+964>>2]|0)==0,2763),ee(s),l=s+948|0,n[B>>2]=(n[l>>2]|0)+(c<<2),n[m>>2]=n[B>>2],we(l,m,d)|0,n[(n[d>>2]|0)+944>>2]=s,qe(s),E=f}function ee(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,Q=0;if(c=Zi(s)|0,c|0&&(n[(Ts(s,0)|0)+944>>2]|0)!=(s|0)){f=n[(n[s+976>>2]|0)+12>>2]|0,d=s+948|0,m=(f|0)==0,l=0;do B=n[(n[d>>2]|0)+(l<<2)>>2]|0,Q=Rs(B)|0,n[(n[d>>2]|0)+(l<<2)>>2]=Q,n[Q+944>>2]=s,m||SR[f&15](B,Q,s,l),l=l+1|0;while((l|0)!=(c|0))}}function we(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0,We=0,Oe=0,Re=0,et=0,Ze=0;et=E,E=E+64|0,j=et+52|0,Q=et+48|0,se=et+28|0,We=et+24|0,Oe=et+20|0,Re=et,f=n[s>>2]|0,m=f,l=f+((n[l>>2]|0)-m>>2<<2)|0,f=s+4|0,d=n[f>>2]|0,B=s+8|0;do if(d>>>0<(n[B>>2]|0)>>>0){if((l|0)==(d|0)){n[l>>2]=n[c>>2],n[f>>2]=(n[f>>2]|0)+4;break}UA(s,l,d,l+4|0),l>>>0<=c>>>0&&(c=(n[f>>2]|0)>>>0>c>>>0?c+4|0:c),n[l>>2]=n[c>>2]}else{f=(d-m>>2)+1|0,d=N(s)|0,d>>>0<f>>>0&&Jr(s),O=n[s>>2]|0,M=(n[B>>2]|0)-O|0,m=M>>1,Ep(Re,M>>2>>>0<d>>>1>>>0?m>>>0<f>>>0?f:m:d,l-O>>2,s+8|0),O=Re+8|0,f=n[O>>2]|0,m=Re+12|0,M=n[m>>2]|0,B=M,k=f;do if((f|0)==(M|0)){if(M=Re+4|0,f=n[M>>2]|0,Ze=n[Re>>2]|0,d=Ze,f>>>0<=Ze>>>0){f=B-d>>1,f=(f|0)==0?1:f,Ep(se,f,f>>>2,n[Re+16>>2]|0),n[We>>2]=n[M>>2],n[Oe>>2]=n[O>>2],n[Q>>2]=n[We>>2],n[j>>2]=n[Oe>>2],fI(se,Q,j),f=n[Re>>2]|0,n[Re>>2]=n[se>>2],n[se>>2]=f,f=se+4|0,Ze=n[M>>2]|0,n[M>>2]=n[f>>2],n[f>>2]=Ze,f=se+8|0,Ze=n[O>>2]|0,n[O>>2]=n[f>>2],n[f>>2]=Ze,f=se+12|0,Ze=n[m>>2]|0,n[m>>2]=n[f>>2],n[f>>2]=Ze,MA(se),f=n[O>>2]|0;break}m=f,B=((m-d>>2)+1|0)/-2|0,Q=f+(B<<2)|0,d=k-m|0,m=d>>2,m&&(DI(Q|0,f|0,d|0)|0,f=n[M>>2]|0),Ze=Q+(m<<2)|0,n[O>>2]=Ze,n[M>>2]=f+(B<<2),f=Ze}while(0);n[f>>2]=n[c>>2],n[O>>2]=(n[O>>2]|0)+4,l=mg(s,Re,l)|0,MA(Re)}while(0);return E=et,l|0}function qe(s){s=s|0;var l=0;do{if(l=s+984|0,o[l>>0]|0)break;o[l>>0]=1,h[s+504>>2]=y(he),s=n[s+944>>2]|0}while((s|0)!=0)}function Be(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-4-f|0)>>>2)<<2)),pt(c))}function xe(s){return s=s|0,n[s+944>>2]|0}function Je(s){s=s|0,Wn(s,(n[s+964>>2]|0)!=0,2832),qe(s)}function vt(s){return s=s|0,(o[s+984>>0]|0)!=0|0}function tr(s,l){s=s|0,l=l|0,HUe(s,l,400)|0&&(Cr(s|0,l|0,400)|0,qe(s))}function Zr(s){s=s|0;var l=$e;return l=y(h[s+44>>2]),s=Ot(l)|0,y(s?y(0):l)}function Tn(s){s=s|0;var l=$e;return l=y(h[s+48>>2]),Ot(l)|0&&(l=o[(n[s+976>>2]|0)+2>>0]|0?y(1):y(0)),y(l)}function _r(s,l){s=s|0,l=l|0,n[s+980>>2]=l}function $n(s){return s=s|0,n[s+980>>2]|0}function Ti(s,l){s=s|0,l=l|0;var c=0;c=s+4|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,qe(s))}function Yn(s){return s=s|0,n[s+4>>2]|0}function Ua(s,l){s=s|0,l=l|0;var c=0;c=s+8|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,qe(s))}function oa(s){return s=s|0,n[s+8>>2]|0}function yi(s,l){s=s|0,l=l|0;var c=0;c=s+12|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,qe(s))}function aa(s){return s=s|0,n[s+12>>2]|0}function Ha(s,l){s=s|0,l=l|0;var c=0;c=s+16|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,qe(s))}function lo(s){return s=s|0,n[s+16>>2]|0}function QA(s,l){s=s|0,l=l|0;var c=0;c=s+20|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,qe(s))}function mc(s){return s=s|0,n[s+20>>2]|0}function la(s,l){s=s|0,l=l|0;var c=0;c=s+24|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,qe(s))}function $h(s){return s=s|0,n[s+24>>2]|0}function yc(s,l){s=s|0,l=l|0;var c=0;c=s+28|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,qe(s))}function vm(s){return s=s|0,n[s+28>>2]|0}function eg(s,l){s=s|0,l=l|0;var c=0;c=s+32|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,qe(s))}function Kn(s){return s=s|0,n[s+32>>2]|0}function cp(s,l){s=s|0,l=l|0;var c=0;c=s+36|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,qe(s))}function tg(s){return s=s|0,n[s+36>>2]|0}function kA(s,l){s=s|0,l=y(l);var c=0;c=s+40|0,y(h[c>>2])!=l&&(h[c>>2]=l,qe(s))}function Os(s,l){s=s|0,l=y(l);var c=0;c=s+44|0,y(h[c>>2])!=l&&(h[c>>2]=l,qe(s))}function Cu(s,l){s=s|0,l=y(l);var c=0;c=s+48|0,y(h[c>>2])!=l&&(h[c>>2]=l,qe(s))}function qa(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ot(l)|0,c=(m^1)&1,f=s+52|0,d=s+56|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,qe(s))}function ji(s,l){s=s|0,l=y(l);var c=0,f=0;f=s+52|0,c=s+56|0,y(h[f>>2])==l&&(n[c>>2]|0)==2||(h[f>>2]=l,f=Ot(l)|0,n[c>>2]=f?3:2,qe(s))}function ca(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+52|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function Iu(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=Ot(c)|0,f=(m^1)&1,d=s+132+(l<<3)|0,l=s+132+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,qe(s))}function ms(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=Ot(c)|0,f=m?0:2,d=s+132+(l<<3)|0,l=s+132+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,qe(s))}function Ec(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=l+132+(c<<3)|0,l=n[f+4>>2]|0,c=s,n[c>>2]=n[f>>2],n[c+4>>2]=l}function Cc(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=Ot(c)|0,f=(m^1)&1,d=s+60+(l<<3)|0,l=s+60+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,qe(s))}function G(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=Ot(c)|0,f=m?0:2,d=s+60+(l<<3)|0,l=s+60+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,qe(s))}function Dt(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=l+60+(c<<3)|0,l=n[f+4>>2]|0,c=s,n[c>>2]=n[f>>2],n[c+4>>2]=l}function Il(s,l){s=s|0,l=l|0;var c=0;c=s+60+(l<<3)+4|0,(n[c>>2]|0)!=3&&(h[s+60+(l<<3)>>2]=y(he),n[c>>2]=3,qe(s))}function Si(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=Ot(c)|0,f=(m^1)&1,d=s+204+(l<<3)|0,l=s+204+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,qe(s))}function Ic(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=Ot(c)|0,f=m?0:2,d=s+204+(l<<3)|0,l=s+204+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,qe(s))}function lt(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=l+204+(c<<3)|0,l=n[f+4>>2]|0,c=s,n[c>>2]=n[f>>2],n[c+4>>2]=l}function wu(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=Ot(c)|0,f=(m^1)&1,d=s+276+(l<<3)|0,l=s+276+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,qe(s))}function rg(s,l){return s=s|0,l=l|0,y(h[s+276+(l<<3)>>2])}function sI(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ot(l)|0,c=(m^1)&1,f=s+348|0,d=s+352|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,qe(s))}function FA(s,l){s=s|0,l=y(l);var c=0,f=0;f=s+348|0,c=s+352|0,y(h[f>>2])==l&&(n[c>>2]|0)==2||(h[f>>2]=l,f=Ot(l)|0,n[c>>2]=f?3:2,qe(s))}function up(s){s=s|0;var l=0;l=s+352|0,(n[l>>2]|0)!=3&&(h[s+348>>2]=y(he),n[l>>2]=3,qe(s))}function yr(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+348|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function ys(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ot(l)|0,c=(m^1)&1,f=s+356|0,d=s+360|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,qe(s))}function ng(s,l){s=s|0,l=y(l);var c=0,f=0;f=s+356|0,c=s+360|0,y(h[f>>2])==l&&(n[c>>2]|0)==2||(h[f>>2]=l,f=Ot(l)|0,n[c>>2]=f?3:2,qe(s))}function ig(s){s=s|0;var l=0;l=s+360|0,(n[l>>2]|0)!=3&&(h[s+356>>2]=y(he),n[l>>2]=3,qe(s))}function sg(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+356|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function Ap(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ot(l)|0,c=(m^1)&1,f=s+364|0,d=s+368|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,qe(s))}function wc(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ot(l)|0,c=m?0:2,f=s+364|0,d=s+368|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,qe(s))}function mt(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+364|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function Dm(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ot(l)|0,c=(m^1)&1,f=s+372|0,d=s+376|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,qe(s))}function og(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ot(l)|0,c=m?0:2,f=s+372|0,d=s+376|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,qe(s))}function ag(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+372|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function Bu(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ot(l)|0,c=(m^1)&1,f=s+380|0,d=s+384|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,qe(s))}function Sm(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ot(l)|0,c=m?0:2,f=s+380|0,d=s+384|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,qe(s))}function lg(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+380|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function vu(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ot(l)|0,c=(m^1)&1,f=s+388|0,d=s+392|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,qe(s))}function oI(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ot(l)|0,c=m?0:2,f=s+388|0,d=s+392|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,qe(s))}function Pm(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+388|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function ua(s,l){s=s|0,l=y(l);var c=0;c=s+396|0,y(h[c>>2])!=l&&(h[c>>2]=l,qe(s))}function Bc(s){return s=s|0,y(h[s+396>>2])}function wl(s){return s=s|0,y(h[s+400>>2])}function Du(s){return s=s|0,y(h[s+404>>2])}function cg(s){return s=s|0,y(h[s+408>>2])}function RA(s){return s=s|0,y(h[s+412>>2])}function fp(s){return s=s|0,y(h[s+416>>2])}function ja(s){return s=s|0,y(h[s+420>>2])}function ug(s,l){switch(s=s|0,l=l|0,Wn(s,(l|0)<6,2918),l|0){case 0:{l=(n[s+496>>2]|0)==2?5:4;break}case 2:{l=(n[s+496>>2]|0)==2?4:5;break}default:}return y(h[s+424+(l<<2)>>2])}function pp(s,l){switch(s=s|0,l=l|0,Wn(s,(l|0)<6,2918),l|0){case 0:{l=(n[s+496>>2]|0)==2?5:4;break}case 2:{l=(n[s+496>>2]|0)==2?4:5;break}default:}return y(h[s+448+(l<<2)>>2])}function Mo(s,l){switch(s=s|0,l=l|0,Wn(s,(l|0)<6,2918),l|0){case 0:{l=(n[s+496>>2]|0)==2?5:4;break}case 2:{l=(n[s+496>>2]|0)==2?4:5;break}default:}return y(h[s+472+(l<<2)>>2])}function Es(s,l){s=s|0,l=l|0;var c=0,f=$e;return c=n[s+4>>2]|0,(c|0)==(n[l+4>>2]|0)?c?(f=y(h[s>>2]),s=y(ne(y(f-y(h[l>>2]))))<y(999999974e-13)):s=1:s=0,s|0}function Ei(s,l){s=y(s),l=y(l);var c=0;return Ot(s)|0?c=Ot(l)|0:c=y(ne(y(s-l)))<y(999999974e-13),c|0}function xm(s,l){s=s|0,l=l|0,bm(s,l)}function bm(s,l){s=s|0,l=l|0;var c=0,f=0;c=E,E=E+16|0,f=c+4|0,n[f>>2]=0,n[f+4>>2]=0,n[f+8>>2]=0,La(f|0,s|0,l|0,0),co(s,3,(o[f+11>>0]|0)<0?n[f>>2]|0:f,c),u3e(f),E=c}function Uo(s,l,c,f){s=y(s),l=y(l),c=c|0,f=f|0;var d=$e;s=y(s*l),d=y(CR(s,y(1)));do if(Ei(d,y(0))|0)s=y(s-d);else{if(s=y(s-d),Ei(d,y(1))|0){s=y(s+y(1));break}if(c){s=y(s+y(1));break}f||(d>y(.5)?d=y(1):(f=Ei(d,y(.5))|0,d=y(f?1:0)),s=y(s+d))}while(0);return y(s/l)}function TA(s,l,c,f,d,m,B,Q,k,M,O,j,se){s=s|0,l=y(l),c=c|0,f=y(f),d=d|0,m=y(m),B=B|0,Q=y(Q),k=y(k),M=y(M),O=y(O),j=y(j),se=se|0;var We=0,Oe=$e,Re=$e,et=$e,Ze=$e,at=$e,He=$e;return k<y(0)|M<y(0)?se=0:((se|0)!=0&&(Oe=y(h[se+4>>2]),Oe!=y(0))?(et=y(Uo(l,Oe,0,0)),Ze=y(Uo(f,Oe,0,0)),Re=y(Uo(m,Oe,0,0)),Oe=y(Uo(Q,Oe,0,0))):(Re=m,et=l,Oe=Q,Ze=f),(d|0)==(s|0)?We=Ei(Re,et)|0:We=0,(B|0)==(c|0)?se=Ei(Oe,Ze)|0:se=0,!We&&(at=y(l-O),!(hp(s,at,k)|0))&&!(gp(s,at,d,k)|0)?We=Ag(s,at,d,m,k)|0:We=1,!se&&(He=y(f-j),!(hp(c,He,M)|0))&&!(gp(c,He,B,M)|0)?se=Ag(c,He,B,Q,M)|0:se=1,se=We&se),se|0}function hp(s,l,c){return s=s|0,l=y(l),c=y(c),(s|0)==1?s=Ei(l,c)|0:s=0,s|0}function gp(s,l,c,f){return s=s|0,l=y(l),c=c|0,f=y(f),(s|0)==2&(c|0)==0?l>=f?s=1:s=Ei(l,f)|0:s=0,s|0}function Ag(s,l,c,f,d){return s=s|0,l=y(l),c=c|0,f=y(f),d=y(d),(s|0)==2&(c|0)==2&f>l?d<=l?s=1:s=Ei(l,d)|0:s=0,s|0}function Aa(s,l,c,f,d,m,B,Q,k,M,O){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=m|0,B=y(B),Q=y(Q),k=k|0,M=M|0,O=O|0;var j=0,se=0,We=0,Oe=0,Re=$e,et=$e,Ze=0,at=0,He=0,Ge=0,Tt=0,Rr=0,ir=0,Vt=0,Ir=0,Qr=0,rr=0,Bn=$e,po=$e,ho=$e,go=0,ma=0;rr=E,E=E+160|0,Vt=rr+152|0,ir=rr+120|0,Rr=rr+104|0,He=rr+72|0,Oe=rr+56|0,Tt=rr+8|0,at=rr,Ge=(n[2279]|0)+1|0,n[2279]=Ge,Ir=s+984|0,(o[Ir>>0]|0)!=0&&(n[s+512>>2]|0)!=(n[2278]|0)?Ze=4:(n[s+516>>2]|0)==(f|0)?Qr=0:Ze=4,(Ze|0)==4&&(n[s+520>>2]=0,n[s+924>>2]=-1,n[s+928>>2]=-1,h[s+932>>2]=y(-1),h[s+936>>2]=y(-1),Qr=1);e:do if(n[s+964>>2]|0)if(Re=y(rn(s,2,B)),et=y(rn(s,0,B)),j=s+916|0,ho=y(h[j>>2]),po=y(h[s+920>>2]),Bn=y(h[s+932>>2]),TA(d,l,m,c,n[s+924>>2]|0,ho,n[s+928>>2]|0,po,Bn,y(h[s+936>>2]),Re,et,O)|0)Ze=22;else if(We=n[s+520>>2]|0,!We)Ze=21;else for(se=0;;){if(j=s+524+(se*24|0)|0,Bn=y(h[j>>2]),po=y(h[s+524+(se*24|0)+4>>2]),ho=y(h[s+524+(se*24|0)+16>>2]),TA(d,l,m,c,n[s+524+(se*24|0)+8>>2]|0,Bn,n[s+524+(se*24|0)+12>>2]|0,po,ho,y(h[s+524+(se*24|0)+20>>2]),Re,et,O)|0){Ze=22;break e}if(se=se+1|0,se>>>0>=We>>>0){Ze=21;break}}else{if(k){if(j=s+916|0,!(Ei(y(h[j>>2]),l)|0)){Ze=21;break}if(!(Ei(y(h[s+920>>2]),c)|0)){Ze=21;break}if((n[s+924>>2]|0)!=(d|0)){Ze=21;break}j=(n[s+928>>2]|0)==(m|0)?j:0,Ze=22;break}if(We=n[s+520>>2]|0,!We)Ze=21;else for(se=0;;){if(j=s+524+(se*24|0)|0,Ei(y(h[j>>2]),l)|0&&Ei(y(h[s+524+(se*24|0)+4>>2]),c)|0&&(n[s+524+(se*24|0)+8>>2]|0)==(d|0)&&(n[s+524+(se*24|0)+12>>2]|0)==(m|0)){Ze=22;break e}if(se=se+1|0,se>>>0>=We>>>0){Ze=21;break}}}while(0);do if((Ze|0)==21)o[11697]|0?(j=0,Ze=28):(j=0,Ze=31);else if((Ze|0)==22){if(se=(o[11697]|0)!=0,!((j|0)!=0&(Qr^1)))if(se){Ze=28;break}else{Ze=31;break}Oe=j+16|0,n[s+908>>2]=n[Oe>>2],We=j+20|0,n[s+912>>2]=n[We>>2],(o[11698]|0)==0|se^1||(n[at>>2]=NA(Ge)|0,n[at+4>>2]=Ge,co(s,4,2972,at),se=n[s+972>>2]|0,se|0&&$A[se&127](s),d=Ga(d,k)|0,m=Ga(m,k)|0,ma=+y(h[Oe>>2]),go=+y(h[We>>2]),n[Tt>>2]=d,n[Tt+4>>2]=m,C[Tt+8>>3]=+l,C[Tt+16>>3]=+c,C[Tt+24>>3]=ma,C[Tt+32>>3]=go,n[Tt+40>>2]=M,co(s,4,2989,Tt))}while(0);return(Ze|0)==28&&(se=NA(Ge)|0,n[Oe>>2]=se,n[Oe+4>>2]=Ge,n[Oe+8>>2]=Qr?3047:11699,co(s,4,3038,Oe),se=n[s+972>>2]|0,se|0&&$A[se&127](s),Tt=Ga(d,k)|0,Ze=Ga(m,k)|0,n[He>>2]=Tt,n[He+4>>2]=Ze,C[He+8>>3]=+l,C[He+16>>3]=+c,n[He+24>>2]=M,co(s,4,3049,He),Ze=31),(Ze|0)==31&&(ei(s,l,c,f,d,m,B,Q,k,O),o[11697]|0&&(se=n[2279]|0,Tt=NA(se)|0,n[Rr>>2]=Tt,n[Rr+4>>2]=se,n[Rr+8>>2]=Qr?3047:11699,co(s,4,3083,Rr),se=n[s+972>>2]|0,se|0&&$A[se&127](s),Tt=Ga(d,k)|0,Rr=Ga(m,k)|0,go=+y(h[s+908>>2]),ma=+y(h[s+912>>2]),n[ir>>2]=Tt,n[ir+4>>2]=Rr,C[ir+8>>3]=go,C[ir+16>>3]=ma,n[ir+24>>2]=M,co(s,4,3092,ir)),n[s+516>>2]=f,j||(se=s+520|0,j=n[se>>2]|0,(j|0)==16&&(o[11697]|0&&co(s,4,3124,Vt),n[se>>2]=0,j=0),k?j=s+916|0:(n[se>>2]=j+1,j=s+524+(j*24|0)|0),h[j>>2]=l,h[j+4>>2]=c,n[j+8>>2]=d,n[j+12>>2]=m,n[j+16>>2]=n[s+908>>2],n[j+20>>2]=n[s+912>>2],j=0)),k&&(n[s+416>>2]=n[s+908>>2],n[s+420>>2]=n[s+912>>2],o[s+985>>0]=1,o[Ir>>0]=0),n[2279]=(n[2279]|0)+-1,n[s+512>>2]=n[2278],E=rr,Qr|(j|0)==0|0}function rn(s,l,c){s=s|0,l=l|0,c=y(c);var f=$e;return f=y(K(s,l,c)),y(f+y(te(s,l,c)))}function co(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=E,E=E+16|0,d=m,n[d>>2]=f,s?f=n[s+976>>2]|0:f=0,pg(f,s,l,c,d),E=m}function NA(s){return s=s|0,(s>>>0>60?3201:3201+(60-s)|0)|0}function Ga(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;return d=E,E=E+32|0,c=d+12|0,f=d,n[c>>2]=n[254],n[c+4>>2]=n[255],n[c+8>>2]=n[256],n[f>>2]=n[257],n[f+4>>2]=n[258],n[f+8>>2]=n[259],(s|0)>2?s=11699:s=n[(l?f:c)+(s<<2)>>2]|0,E=d,s|0}function ei(s,l,c,f,d,m,B,Q,k,M){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=m|0,B=y(B),Q=y(Q),k=k|0,M=M|0;var O=0,j=0,se=0,We=0,Oe=$e,Re=$e,et=$e,Ze=$e,at=$e,He=$e,Ge=$e,Tt=0,Rr=0,ir=0,Vt=$e,Ir=$e,Qr=0,rr=$e,Bn=0,po=0,ho=0,go=0,ma=0,bp=0,Qp=0,xl=0,kp=0,Nu=0,Lu=0,Fp=0,Rp=0,Tp=0,Vr=0,bl=0,Np=0,bc=0,Lp=$e,Op=$e,Ou=$e,Mu=$e,Qc=$e,Us=0,Xa=0,Ho=0,Ql=0,tf=0,rf=$e,Uu=$e,nf=$e,sf=$e,_s=$e,ws=$e,kl=0,Pn=$e,of=$e,mo=$e,kc=$e,yo=$e,Fc=$e,af=0,lf=0,Rc=$e,Hs=$e,Fl=0,cf=0,uf=0,Af=0,vr=$e,jn=0,Bs=0,Eo=0,qs=0,Pr=0,lr=0,Rl=0,Wt=$e,ff=0,ni=0;Rl=E,E=E+16|0,Us=Rl+12|0,Xa=Rl+8|0,Ho=Rl+4|0,Ql=Rl,Wn(s,(d|0)==0|(Ot(l)|0)^1,3326),Wn(s,(m|0)==0|(Ot(c)|0)^1,3406),Bs=gt(s,f)|0,n[s+496>>2]=Bs,Pr=ur(2,Bs)|0,lr=ur(0,Bs)|0,h[s+440>>2]=y(K(s,Pr,B)),h[s+444>>2]=y(te(s,Pr,B)),h[s+428>>2]=y(K(s,lr,B)),h[s+436>>2]=y(te(s,lr,B)),h[s+464>>2]=y(gr(s,Pr)),h[s+468>>2]=y(hn(s,Pr)),h[s+452>>2]=y(gr(s,lr)),h[s+460>>2]=y(hn(s,lr)),h[s+488>>2]=y(ti(s,Pr,B)),h[s+492>>2]=y(Ni(s,Pr,B)),h[s+476>>2]=y(ti(s,lr,B)),h[s+484>>2]=y(Ni(s,lr,B));do if(n[s+964>>2]|0)gg(s,l,c,d,m,B,Q);else{if(Eo=s+948|0,qs=(n[s+952>>2]|0)-(n[Eo>>2]|0)>>2,!qs){Bv(s,l,c,d,m,B,Q);break}if(!k&&vv(s,l,c,d,m,B,Q)|0)break;ee(s),bl=s+508|0,o[bl>>0]=0,Pr=ur(n[s+4>>2]|0,Bs)|0,lr=lI(Pr,Bs)|0,jn=ue(Pr)|0,Np=n[s+8>>2]|0,cf=s+28|0,bc=(n[cf>>2]|0)!=0,yo=jn?B:Q,Rc=jn?Q:B,Lp=y(mp(s,Pr,B)),Op=y(cI(s,Pr,B)),Oe=y(mp(s,lr,B)),Fc=y(gn(s,Pr,B)),Hs=y(gn(s,lr,B)),ir=jn?d:m,Fl=jn?m:d,vr=jn?Fc:Hs,at=jn?Hs:Fc,kc=y(rn(s,2,B)),Ze=y(rn(s,0,B)),Re=y(y(Hr(s+364|0,B))-vr),et=y(y(Hr(s+380|0,B))-vr),He=y(y(Hr(s+372|0,Q))-at),Ge=y(y(Hr(s+388|0,Q))-at),Ou=jn?Re:He,Mu=jn?et:Ge,kc=y(l-kc),l=y(kc-vr),Ot(l)|0?vr=l:vr=y(Nn(y(Pg(l,et)),Re)),of=y(c-Ze),l=y(of-at),Ot(l)|0?mo=l:mo=y(Nn(y(Pg(l,Ge)),He)),Re=jn?vr:mo,Pn=jn?mo:vr;e:do if((ir|0)==1)for(f=0,j=0;;){if(O=Ts(s,j)|0,!f)y(rs(O))>y(0)&&y(Ms(O))>y(0)?f=O:f=0;else if(km(O)|0){We=0;break e}if(j=j+1|0,j>>>0>=qs>>>0){We=f;break}}else We=0;while(0);Tt=We+500|0,Rr=We+504|0,f=0,O=0,l=y(0),se=0;do{if(j=n[(n[Eo>>2]|0)+(se<<2)>>2]|0,(n[j+36>>2]|0)==1)Su(j),o[j+985>>0]=1,o[j+984>>0]=0;else{Bl(j),k&&dp(j,gt(j,Bs)|0,Re,Pn,vr);do if((n[j+24>>2]|0)!=1)if((j|0)==(We|0)){n[Tt>>2]=n[2278],h[Rr>>2]=y(0);break}else{Fm(s,j,vr,d,mo,vr,mo,m,Bs,M);break}else O|0&&(n[O+960>>2]=j),n[j+960>>2]=0,O=j,f=(f|0)==0?j:f;while(0);ws=y(h[j+504>>2]),l=y(l+y(ws+y(rn(j,Pr,vr))))}se=se+1|0}while((se|0)!=(qs|0));for(ho=l>Re,kl=bc&((ir|0)==2&ho)?1:ir,Bn=(Fl|0)==1,ma=Bn&(k^1),bp=(kl|0)==1,Qp=(kl|0)==2,xl=976+(Pr<<2)|0,kp=(Fl|2|0)==2,Tp=Bn&(bc^1),Nu=1040+(lr<<2)|0,Lu=1040+(Pr<<2)|0,Fp=976+(lr<<2)|0,Rp=(Fl|0)!=1,ho=bc&((ir|0)!=0&ho),po=s+976|0,Bn=Bn^1,l=Re,Qr=0,go=0,ws=y(0),Qc=y(0);;){e:do if(Qr>>>0<qs>>>0)for(Rr=n[Eo>>2]|0,se=0,Ge=y(0),He=y(0),et=y(0),Re=y(0),j=0,O=0,We=Qr;;){if(Tt=n[Rr+(We<<2)>>2]|0,(n[Tt+36>>2]|0)!=1&&(n[Tt+940>>2]=go,(n[Tt+24>>2]|0)!=1)){if(Ze=y(rn(Tt,Pr,vr)),Vr=n[xl>>2]|0,c=y(Hr(Tt+380+(Vr<<3)|0,yo)),at=y(h[Tt+504>>2]),c=y(Pg(c,at)),c=y(Nn(y(Hr(Tt+364+(Vr<<3)|0,yo)),c)),bc&(se|0)!=0&y(Ze+y(He+c))>l){m=se,Ze=Ge,ir=We;break e}Ze=y(Ze+c),c=y(He+Ze),Ze=y(Ge+Ze),km(Tt)|0&&(et=y(et+y(rs(Tt))),Re=y(Re-y(at*y(Ms(Tt))))),O|0&&(n[O+960>>2]=Tt),n[Tt+960>>2]=0,se=se+1|0,O=Tt,j=(j|0)==0?Tt:j}else Ze=Ge,c=He;if(We=We+1|0,We>>>0<qs>>>0)Ge=Ze,He=c;else{m=se,ir=We;break}}else m=0,Ze=y(0),et=y(0),Re=y(0),j=0,ir=Qr;while(0);Vr=et>y(0)&et<y(1),Vt=Vr?y(1):et,Vr=Re>y(0)&Re<y(1),Ge=Vr?y(1):Re;do if(bp)Vr=51;else if(Ze<Ou&((Ot(Ou)|0)^1))l=Ou,Vr=51;else if(Ze>Mu&((Ot(Mu)|0)^1))l=Mu,Vr=51;else if(o[(n[po>>2]|0)+3>>0]|0)Vr=51;else{if(Vt!=y(0)&&y(rs(s))!=y(0)){Vr=53;break}l=Ze,Vr=53}while(0);if((Vr|0)==51&&(Vr=0,Ot(l)|0?Vr=53:(Ir=y(l-Ze),rr=l)),(Vr|0)==53&&(Vr=0,Ze<y(0)?(Ir=y(-Ze),rr=l):(Ir=y(0),rr=l)),!ma&&(tf=(j|0)==0,!tf)){se=n[xl>>2]|0,We=Ir<y(0),at=y(Ir/Ge),Tt=Ir>y(0),He=y(Ir/Vt),et=y(0),Ze=y(0),l=y(0),O=j;do c=y(Hr(O+380+(se<<3)|0,yo)),Re=y(Hr(O+364+(se<<3)|0,yo)),Re=y(Pg(c,y(Nn(Re,y(h[O+504>>2]))))),We?(c=y(Re*y(Ms(O))),c!=y(-0)&&(Wt=y(Re-y(at*c)),rf=y(Ci(O,Pr,Wt,rr,vr)),Wt!=rf)&&(et=y(et-y(rf-Re)),l=y(l+c))):Tt&&(Uu=y(rs(O)),Uu!=y(0))&&(Wt=y(Re+y(He*Uu)),nf=y(Ci(O,Pr,Wt,rr,vr)),Wt!=nf)&&(et=y(et-y(nf-Re)),Ze=y(Ze-Uu)),O=n[O+960>>2]|0;while((O|0)!=0);if(l=y(Ge+l),Re=y(Ir+et),tf)l=y(0);else{at=y(Vt+Ze),We=n[xl>>2]|0,Tt=Re<y(0),Rr=l==y(0),He=y(Re/l),se=Re>y(0),at=y(Re/at),l=y(0);do{Wt=y(Hr(j+380+(We<<3)|0,yo)),et=y(Hr(j+364+(We<<3)|0,yo)),et=y(Pg(Wt,y(Nn(et,y(h[j+504>>2]))))),Tt?(Wt=y(et*y(Ms(j))),Re=y(-Wt),Wt!=y(-0)?(Wt=y(He*Re),Re=y(Ci(j,Pr,y(et+(Rr?Re:Wt)),rr,vr))):Re=et):se&&(sf=y(rs(j)),sf!=y(0))?Re=y(Ci(j,Pr,y(et+y(at*sf)),rr,vr)):Re=et,l=y(l-y(Re-et)),Ze=y(rn(j,Pr,vr)),c=y(rn(j,lr,vr)),Re=y(Re+Ze),h[Xa>>2]=Re,n[Ql>>2]=1,et=y(h[j+396>>2]);e:do if(Ot(et)|0){O=Ot(Pn)|0;do if(!O){if(ho|(ts(j,lr,Pn)|0|Bn)||(pa(s,j)|0)!=4||(n[(vl(j,lr)|0)+4>>2]|0)==3||(n[(Sc(j,lr)|0)+4>>2]|0)==3)break;h[Us>>2]=Pn,n[Ho>>2]=1;break e}while(0);if(ts(j,lr,Pn)|0){O=n[j+992+(n[Fp>>2]<<2)>>2]|0,Wt=y(c+y(Hr(O,Pn))),h[Us>>2]=Wt,O=Rp&(n[O+4>>2]|0)==2,n[Ho>>2]=((Ot(Wt)|0|O)^1)&1;break}else{h[Us>>2]=Pn,n[Ho>>2]=O?0:2;break}}else Wt=y(Re-Ze),Vt=y(Wt/et),Wt=y(et*Wt),n[Ho>>2]=1,h[Us>>2]=y(c+(jn?Vt:Wt));while(0);pr(j,Pr,rr,vr,Ql,Xa),pr(j,lr,Pn,vr,Ho,Us);do if(!(ts(j,lr,Pn)|0)&&(pa(s,j)|0)==4){if((n[(vl(j,lr)|0)+4>>2]|0)==3){O=0;break}O=(n[(Sc(j,lr)|0)+4>>2]|0)!=3}else O=0;while(0);Wt=y(h[Xa>>2]),Vt=y(h[Us>>2]),ff=n[Ql>>2]|0,ni=n[Ho>>2]|0,Aa(j,jn?Wt:Vt,jn?Vt:Wt,Bs,jn?ff:ni,jn?ni:ff,vr,mo,k&(O^1),3488,M)|0,o[bl>>0]=o[bl>>0]|o[j+508>>0],j=n[j+960>>2]|0}while((j|0)!=0)}}else l=y(0);if(l=y(Ir+l),ni=l<y(0)&1,o[bl>>0]=ni|u[bl>>0],Qp&l>y(0)?(O=n[xl>>2]|0,(n[s+364+(O<<3)+4>>2]|0)!=0&&(_s=y(Hr(s+364+(O<<3)|0,yo)),_s>=y(0))?Re=y(Nn(y(0),y(_s-y(rr-l)))):Re=y(0)):Re=l,Tt=Qr>>>0<ir>>>0,Tt){We=n[Eo>>2]|0,se=Qr,O=0;do j=n[We+(se<<2)>>2]|0,n[j+24>>2]|0||(O=((n[(vl(j,Pr)|0)+4>>2]|0)==3&1)+O|0,O=O+((n[(Sc(j,Pr)|0)+4>>2]|0)==3&1)|0),se=se+1|0;while((se|0)!=(ir|0));O?(Ze=y(0),c=y(0)):Vr=101}else Vr=101;e:do if((Vr|0)==101)switch(Vr=0,Np|0){case 1:{O=0,Ze=y(Re*y(.5)),c=y(0);break e}case 2:{O=0,Ze=Re,c=y(0);break e}case 3:{if(m>>>0<=1){O=0,Ze=y(0),c=y(0);break e}c=y((m+-1|0)>>>0),O=0,Ze=y(0),c=y(y(Nn(Re,y(0)))/c);break e}case 5:{c=y(Re/y((m+1|0)>>>0)),O=0,Ze=c;break e}case 4:{c=y(Re/y(m>>>0)),O=0,Ze=y(c*y(.5));break e}default:{O=0,Ze=y(0),c=y(0);break e}}while(0);if(l=y(Lp+Ze),Tt){et=y(Re/y(O|0)),se=n[Eo>>2]|0,j=Qr,Re=y(0);do{O=n[se+(j<<2)>>2]|0;e:do if((n[O+36>>2]|0)!=1){switch(n[O+24>>2]|0){case 1:{if(Ai(O,Pr)|0){if(!k)break e;Wt=y(Fr(O,Pr,rr)),Wt=y(Wt+y(gr(s,Pr))),Wt=y(Wt+y(K(O,Pr,vr))),h[O+400+(n[Lu>>2]<<2)>>2]=Wt;break e}break}case 0:if(ni=(n[(vl(O,Pr)|0)+4>>2]|0)==3,Wt=y(et+l),l=ni?Wt:l,k&&(ni=O+400+(n[Lu>>2]<<2)|0,h[ni>>2]=y(l+y(h[ni>>2]))),ni=(n[(Sc(O,Pr)|0)+4>>2]|0)==3,Wt=y(et+l),l=ni?Wt:l,ma){Wt=y(c+y(rn(O,Pr,vr))),Re=Pn,l=y(l+y(Wt+y(h[O+504>>2])));break e}else{l=y(l+y(c+y(ns(O,Pr,vr)))),Re=y(Nn(Re,y(ns(O,lr,vr))));break e}default:}k&&(Wt=y(Ze+y(gr(s,Pr))),ni=O+400+(n[Lu>>2]<<2)|0,h[ni>>2]=y(Wt+y(h[ni>>2])))}while(0);j=j+1|0}while((j|0)!=(ir|0))}else Re=y(0);if(c=y(Op+l),kp?Ze=y(y(Ci(s,lr,y(Hs+Re),Rc,B))-Hs):Ze=Pn,et=y(y(Ci(s,lr,y(Hs+(Tp?Pn:Re)),Rc,B))-Hs),Tt&k){j=Qr;do{se=n[(n[Eo>>2]|0)+(j<<2)>>2]|0;do if((n[se+36>>2]|0)!=1){if((n[se+24>>2]|0)==1){if(Ai(se,lr)|0){if(Wt=y(Fr(se,lr,Pn)),Wt=y(Wt+y(gr(s,lr))),Wt=y(Wt+y(K(se,lr,vr))),O=n[Nu>>2]|0,h[se+400+(O<<2)>>2]=Wt,!(Ot(Wt)|0))break}else O=n[Nu>>2]|0;Wt=y(gr(s,lr)),h[se+400+(O<<2)>>2]=y(Wt+y(K(se,lr,vr)));break}O=pa(s,se)|0;do if((O|0)==4){if((n[(vl(se,lr)|0)+4>>2]|0)==3){Vr=139;break}if((n[(Sc(se,lr)|0)+4>>2]|0)==3){Vr=139;break}if(ts(se,lr,Pn)|0){l=Oe;break}ff=n[se+908+(n[xl>>2]<<2)>>2]|0,n[Us>>2]=ff,l=y(h[se+396>>2]),ni=Ot(l)|0,Re=(n[v>>2]=ff,y(h[v>>2])),ni?l=et:(Ir=y(rn(se,lr,vr)),Wt=y(Re/l),l=y(l*Re),l=y(Ir+(jn?Wt:l))),h[Xa>>2]=l,h[Us>>2]=y(y(rn(se,Pr,vr))+Re),n[Ho>>2]=1,n[Ql>>2]=1,pr(se,Pr,rr,vr,Ho,Us),pr(se,lr,Pn,vr,Ql,Xa),l=y(h[Us>>2]),Ir=y(h[Xa>>2]),Wt=jn?l:Ir,l=jn?Ir:l,ni=((Ot(Wt)|0)^1)&1,Aa(se,Wt,l,Bs,ni,((Ot(l)|0)^1)&1,vr,mo,1,3493,M)|0,l=Oe}else Vr=139;while(0);e:do if((Vr|0)==139){Vr=0,l=y(Ze-y(ns(se,lr,vr)));do if((n[(vl(se,lr)|0)+4>>2]|0)==3){if((n[(Sc(se,lr)|0)+4>>2]|0)!=3)break;l=y(Oe+y(Nn(y(0),y(l*y(.5)))));break e}while(0);if((n[(Sc(se,lr)|0)+4>>2]|0)==3){l=Oe;break}if((n[(vl(se,lr)|0)+4>>2]|0)==3){l=y(Oe+y(Nn(y(0),l)));break}switch(O|0){case 1:{l=Oe;break e}case 2:{l=y(Oe+y(l*y(.5)));break e}default:{l=y(Oe+l);break e}}}while(0);Wt=y(ws+l),ni=se+400+(n[Nu>>2]<<2)|0,h[ni>>2]=y(Wt+y(h[ni>>2]))}while(0);j=j+1|0}while((j|0)!=(ir|0))}if(ws=y(ws+et),Qc=y(Nn(Qc,c)),m=go+1|0,ir>>>0>=qs>>>0)break;l=rr,Qr=ir,go=m}do if(k){if(O=m>>>0>1,!O&&!(Gi(s)|0))break;if(!(Ot(Pn)|0)){l=y(Pn-ws);e:do switch(n[s+12>>2]|0){case 3:{Oe=y(Oe+l),He=y(0);break}case 2:{Oe=y(Oe+y(l*y(.5))),He=y(0);break}case 4:{Pn>ws?He=y(l/y(m>>>0)):He=y(0);break}case 7:if(Pn>ws){Oe=y(Oe+y(l/y(m<<1>>>0))),He=y(l/y(m>>>0)),He=O?He:y(0);break e}else{Oe=y(Oe+y(l*y(.5))),He=y(0);break e}case 6:{He=y(l/y(go>>>0)),He=Pn>ws&O?He:y(0);break}default:He=y(0)}while(0);if(m|0)for(Tt=1040+(lr<<2)|0,Rr=976+(lr<<2)|0,We=0,j=0;;){e:do if(j>>>0<qs>>>0)for(Re=y(0),et=y(0),l=y(0),se=j;;){O=n[(n[Eo>>2]|0)+(se<<2)>>2]|0;do if((n[O+36>>2]|0)!=1&&(n[O+24>>2]|0)==0){if((n[O+940>>2]|0)!=(We|0))break e;if(Rm(O,lr)|0&&(Wt=y(h[O+908+(n[Rr>>2]<<2)>>2]),l=y(Nn(l,y(Wt+y(rn(O,lr,vr)))))),(pa(s,O)|0)!=5)break;_s=y(Ya(O)),_s=y(_s+y(K(O,0,vr))),Wt=y(h[O+912>>2]),Wt=y(y(Wt+y(rn(O,0,vr)))-_s),_s=y(Nn(et,_s)),Wt=y(Nn(Re,Wt)),Re=Wt,et=_s,l=y(Nn(l,y(_s+Wt)))}while(0);if(O=se+1|0,O>>>0<qs>>>0)se=O;else{se=O;break}}else et=y(0),l=y(0),se=j;while(0);if(at=y(He+l),c=Oe,Oe=y(Oe+at),j>>>0<se>>>0){Ze=y(c+et),O=j;do{j=n[(n[Eo>>2]|0)+(O<<2)>>2]|0;e:do if((n[j+36>>2]|0)!=1&&(n[j+24>>2]|0)==0)switch(pa(s,j)|0){case 1:{Wt=y(c+y(K(j,lr,vr))),h[j+400+(n[Tt>>2]<<2)>>2]=Wt;break e}case 3:{Wt=y(y(Oe-y(te(j,lr,vr)))-y(h[j+908+(n[Rr>>2]<<2)>>2])),h[j+400+(n[Tt>>2]<<2)>>2]=Wt;break e}case 2:{Wt=y(c+y(y(at-y(h[j+908+(n[Rr>>2]<<2)>>2]))*y(.5))),h[j+400+(n[Tt>>2]<<2)>>2]=Wt;break e}case 4:{if(Wt=y(c+y(K(j,lr,vr))),h[j+400+(n[Tt>>2]<<2)>>2]=Wt,ts(j,lr,Pn)|0||(jn?(Re=y(h[j+908>>2]),l=y(Re+y(rn(j,Pr,vr))),et=at):(et=y(h[j+912>>2]),et=y(et+y(rn(j,lr,vr))),l=at,Re=y(h[j+908>>2])),Ei(l,Re)|0&&Ei(et,y(h[j+912>>2]))|0))break e;Aa(j,l,et,Bs,1,1,vr,mo,1,3501,M)|0;break e}case 5:{h[j+404>>2]=y(y(Ze-y(Ya(j)))+y(Fr(j,0,Pn)));break e}default:break e}while(0);O=O+1|0}while((O|0)!=(se|0))}if(We=We+1|0,(We|0)==(m|0))break;j=se}}}while(0);if(h[s+908>>2]=y(Ci(s,2,kc,B,B)),h[s+912>>2]=y(Ci(s,0,of,Q,B)),(kl|0)!=0&&(af=n[s+32>>2]|0,lf=(kl|0)==2,!(lf&(af|0)!=2))?lf&(af|0)==2&&(l=y(Fc+rr),l=y(Nn(y(Pg(l,y(LA(s,Pr,Qc,yo)))),Fc)),Vr=198):(l=y(Ci(s,Pr,Qc,yo,B)),Vr=198),(Vr|0)==198&&(h[s+908+(n[976+(Pr<<2)>>2]<<2)>>2]=l),(Fl|0)!=0&&(uf=n[s+32>>2]|0,Af=(Fl|0)==2,!(Af&(uf|0)!=2))?Af&(uf|0)==2&&(l=y(Hs+Pn),l=y(Nn(y(Pg(l,y(LA(s,lr,y(Hs+ws),Rc)))),Hs)),Vr=204):(l=y(Ci(s,lr,y(Hs+ws),Rc,B)),Vr=204),(Vr|0)==204&&(h[s+908+(n[976+(lr<<2)>>2]<<2)>>2]=l),k){if((n[cf>>2]|0)==2){j=976+(lr<<2)|0,se=1040+(lr<<2)|0,O=0;do We=Ts(s,O)|0,n[We+24>>2]|0||(ff=n[j>>2]|0,Wt=y(h[s+908+(ff<<2)>>2]),ni=We+400+(n[se>>2]<<2)|0,Wt=y(Wt-y(h[ni>>2])),h[ni>>2]=y(Wt-y(h[We+908+(ff<<2)>>2]))),O=O+1|0;while((O|0)!=(qs|0))}if(f|0){O=jn?kl:d;do Tm(s,f,vr,O,mo,Bs,M),f=n[f+960>>2]|0;while((f|0)!=0)}if(O=(Pr|2|0)==3,j=(lr|2|0)==3,O|j){f=0;do se=n[(n[Eo>>2]|0)+(f<<2)>>2]|0,(n[se+36>>2]|0)!=1&&(O&&yp(s,se,Pr),j&&yp(s,se,lr)),f=f+1|0;while((f|0)!=(qs|0))}}}while(0);E=Rl}function fa(s,l){s=s|0,l=y(l);var c=0;ra(s,l>=y(0),3147),c=l==y(0),h[s+4>>2]=c?y(0):l}function vc(s,l,c,f){s=s|0,l=y(l),c=y(c),f=f|0;var d=$e,m=$e,B=0,Q=0,k=0;n[2278]=(n[2278]|0)+1,Bl(s),ts(s,2,l)|0?(d=y(Hr(n[s+992>>2]|0,l)),k=1,d=y(d+y(rn(s,2,l)))):(d=y(Hr(s+380|0,l)),d>=y(0)?k=2:(k=((Ot(l)|0)^1)&1,d=l)),ts(s,0,c)|0?(m=y(Hr(n[s+996>>2]|0,c)),Q=1,m=y(m+y(rn(s,0,l)))):(m=y(Hr(s+388|0,c)),m>=y(0)?Q=2:(Q=((Ot(c)|0)^1)&1,m=c)),B=s+976|0,Aa(s,d,m,f,k,Q,l,c,1,3189,n[B>>2]|0)|0&&(dp(s,n[s+496>>2]|0,l,c,l),Dc(s,y(h[(n[B>>2]|0)+4>>2]),y(0),y(0)),o[11696]|0)&&xm(s,7)}function Bl(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;Q=E,E=E+32|0,B=Q+24|0,m=Q+16|0,f=Q+8|0,d=Q,c=0;do l=s+380+(c<<3)|0,(n[s+380+(c<<3)+4>>2]|0)!=0&&(k=l,M=n[k+4>>2]|0,O=f,n[O>>2]=n[k>>2],n[O+4>>2]=M,O=s+364+(c<<3)|0,M=n[O+4>>2]|0,k=d,n[k>>2]=n[O>>2],n[k+4>>2]=M,n[m>>2]=n[f>>2],n[m+4>>2]=n[f+4>>2],n[B>>2]=n[d>>2],n[B+4>>2]=n[d+4>>2],Es(m,B)|0)||(l=s+348+(c<<3)|0),n[s+992+(c<<2)>>2]=l,c=c+1|0;while((c|0)!=2);E=Q}function ts(s,l,c){s=s|0,l=l|0,c=y(c);var f=0;switch(s=n[s+992+(n[976+(l<<2)>>2]<<2)>>2]|0,n[s+4>>2]|0){case 0:case 3:{s=0;break}case 1:{y(h[s>>2])<y(0)?s=0:f=5;break}case 2:{y(h[s>>2])<y(0)?s=0:s=(Ot(c)|0)^1;break}default:f=5}return(f|0)==5&&(s=1),s|0}function Hr(s,l){switch(s=s|0,l=y(l),n[s+4>>2]|0){case 2:{l=y(y(y(h[s>>2])*l)/y(100));break}case 1:{l=y(h[s>>2]);break}default:l=y(he)}return y(l)}function dp(s,l,c,f,d){s=s|0,l=l|0,c=y(c),f=y(f),d=y(d);var m=0,B=$e;l=n[s+944>>2]|0?l:1,m=ur(n[s+4>>2]|0,l)|0,l=lI(m,l)|0,c=y(Nm(s,m,c)),f=y(Nm(s,l,f)),B=y(c+y(K(s,m,d))),h[s+400+(n[1040+(m<<2)>>2]<<2)>>2]=B,c=y(c+y(te(s,m,d))),h[s+400+(n[1e3+(m<<2)>>2]<<2)>>2]=c,c=y(f+y(K(s,l,d))),h[s+400+(n[1040+(l<<2)>>2]<<2)>>2]=c,d=y(f+y(te(s,l,d))),h[s+400+(n[1e3+(l<<2)>>2]<<2)>>2]=d}function Dc(s,l,c,f){s=s|0,l=y(l),c=y(c),f=y(f);var d=0,m=0,B=$e,Q=$e,k=0,M=0,O=$e,j=0,se=$e,We=$e,Oe=$e,Re=$e;if(l!=y(0)&&(d=s+400|0,Re=y(h[d>>2]),m=s+404|0,Oe=y(h[m>>2]),j=s+416|0,We=y(h[j>>2]),M=s+420|0,B=y(h[M>>2]),se=y(Re+c),O=y(Oe+f),f=y(se+We),Q=y(O+B),k=(n[s+988>>2]|0)==1,h[d>>2]=y(Uo(Re,l,0,k)),h[m>>2]=y(Uo(Oe,l,0,k)),c=y(CR(y(We*l),y(1))),Ei(c,y(0))|0?m=0:m=(Ei(c,y(1))|0)^1,c=y(CR(y(B*l),y(1))),Ei(c,y(0))|0?d=0:d=(Ei(c,y(1))|0)^1,Re=y(Uo(f,l,k&m,k&(m^1))),h[j>>2]=y(Re-y(Uo(se,l,0,k))),Re=y(Uo(Q,l,k&d,k&(d^1))),h[M>>2]=y(Re-y(Uo(O,l,0,k))),m=(n[s+952>>2]|0)-(n[s+948>>2]|0)>>2,m|0)){d=0;do Dc(Ts(s,d)|0,l,se,O),d=d+1|0;while((d|0)!=(m|0))}}function aI(s,l,c,f,d){switch(s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,c|0){case 5:case 0:{s=JG(n[489]|0,f,d)|0;break}default:s=o3e(f,d)|0}return s|0}function fg(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;d=E,E=E+16|0,m=d,n[m>>2]=f,pg(s,0,l,c,m),E=d}function pg(s,l,c,f,d){if(s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,s=s|0?s:956,g7[n[s+8>>2]&1](s,l,c,f,d)|0,(c|0)==5)Rt();else return}function Wa(s,l,c){s=s|0,l=l|0,c=c|0,o[s+l>>0]=c&1}function Qm(s,l){s=s|0,l=l|0;var c=0,f=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,c=l+4|0,f=(n[c>>2]|0)-(n[l>>2]|0)>>2,f|0&&(hg(s,f),kt(s,n[l>>2]|0,n[c>>2]|0,f))}function hg(s,l){s=s|0,l=l|0;var c=0;if((N(s)|0)>>>0<l>>>0&&Jr(s),l>>>0>1073741823)Rt();else{c=Gt(l<<2)|0,n[s+4>>2]=c,n[s>>2]=c,n[s+8>>2]=c+(l<<2);return}}function kt(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,f=s+4|0,s=c-l|0,(s|0)>0&&(Cr(n[f>>2]|0,l|0,s|0)|0,n[f>>2]=(n[f>>2]|0)+(s>>>2<<2))}function N(s){return s=s|0,1073741823}function K(s,l,c){return s=s|0,l=l|0,c=y(c),ue(l)|0&&(n[s+96>>2]|0)!=0?s=s+92|0:s=Sn(s+60|0,n[1040+(l<<2)>>2]|0,992)|0,y(ze(s,c))}function te(s,l,c){return s=s|0,l=l|0,c=y(c),ue(l)|0&&(n[s+104>>2]|0)!=0?s=s+100|0:s=Sn(s+60|0,n[1e3+(l<<2)>>2]|0,992)|0,y(ze(s,c))}function ue(s){return s=s|0,(s|1|0)==3|0}function ze(s,l){return s=s|0,l=y(l),(n[s+4>>2]|0)==3?l=y(0):l=y(Hr(s,l)),y(l)}function gt(s,l){return s=s|0,l=l|0,s=n[s>>2]|0,((s|0)==0?(l|0)>1?l:1:s)|0}function ur(s,l){s=s|0,l=l|0;var c=0;e:do if((l|0)==2){switch(s|0){case 2:{s=3;break e}case 3:break;default:{c=4;break e}}s=2}else c=4;while(0);return s|0}function gr(s,l){s=s|0,l=l|0;var c=$e;return ue(l)|0&&(n[s+312>>2]|0)!=0&&(c=y(h[s+308>>2]),c>=y(0))||(c=y(Nn(y(h[(Sn(s+276|0,n[1040+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(c)}function hn(s,l){s=s|0,l=l|0;var c=$e;return ue(l)|0&&(n[s+320>>2]|0)!=0&&(c=y(h[s+316>>2]),c>=y(0))||(c=y(Nn(y(h[(Sn(s+276|0,n[1e3+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(c)}function ti(s,l,c){s=s|0,l=l|0,c=y(c);var f=$e;return ue(l)|0&&(n[s+240>>2]|0)!=0&&(f=y(Hr(s+236|0,c)),f>=y(0))||(f=y(Nn(y(Hr(Sn(s+204|0,n[1040+(l<<2)>>2]|0,992)|0,c)),y(0)))),y(f)}function Ni(s,l,c){s=s|0,l=l|0,c=y(c);var f=$e;return ue(l)|0&&(n[s+248>>2]|0)!=0&&(f=y(Hr(s+244|0,c)),f>=y(0))||(f=y(Nn(y(Hr(Sn(s+204|0,n[1e3+(l<<2)>>2]|0,992)|0,c)),y(0)))),y(f)}function gg(s,l,c,f,d,m,B){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=y(m),B=y(B);var Q=$e,k=$e,M=$e,O=$e,j=$e,se=$e,We=0,Oe=0,Re=0;Re=E,E=E+16|0,We=Re,Oe=s+964|0,Wn(s,(n[Oe>>2]|0)!=0,3519),Q=y(gn(s,2,l)),k=y(gn(s,0,l)),M=y(rn(s,2,l)),O=y(rn(s,0,l)),Ot(l)|0?j=l:j=y(Nn(y(0),y(y(l-M)-Q))),Ot(c)|0?se=c:se=y(Nn(y(0),y(y(c-O)-k))),(f|0)==1&(d|0)==1?(h[s+908>>2]=y(Ci(s,2,y(l-M),m,m)),l=y(Ci(s,0,y(c-O),B,m))):(d7[n[Oe>>2]&1](We,s,j,f,se,d),j=y(Q+y(h[We>>2])),se=y(l-M),h[s+908>>2]=y(Ci(s,2,(f|2|0)==2?j:se,m,m)),se=y(k+y(h[We+4>>2])),l=y(c-O),l=y(Ci(s,0,(d|2|0)==2?se:l,B,m))),h[s+912>>2]=l,E=Re}function Bv(s,l,c,f,d,m,B){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=y(m),B=y(B);var Q=$e,k=$e,M=$e,O=$e;M=y(gn(s,2,m)),Q=y(gn(s,0,m)),O=y(rn(s,2,m)),k=y(rn(s,0,m)),l=y(l-O),h[s+908>>2]=y(Ci(s,2,(f|2|0)==2?M:l,m,m)),c=y(c-k),h[s+912>>2]=y(Ci(s,0,(d|2|0)==2?Q:c,B,m))}function vv(s,l,c,f,d,m,B){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=y(m),B=y(B);var Q=0,k=$e,M=$e;return Q=(f|0)==2,!(l<=y(0)&Q)&&!(c<=y(0)&(d|0)==2)&&!((f|0)==1&(d|0)==1)?s=0:(k=y(rn(s,0,m)),M=y(rn(s,2,m)),Q=l<y(0)&Q|(Ot(l)|0),l=y(l-M),h[s+908>>2]=y(Ci(s,2,Q?y(0):l,m,m)),l=y(c-k),Q=c<y(0)&(d|0)==2|(Ot(c)|0),h[s+912>>2]=y(Ci(s,0,Q?y(0):l,B,m)),s=1),s|0}function lI(s,l){return s=s|0,l=l|0,OA(s)|0?s=ur(2,l)|0:s=0,s|0}function mp(s,l,c){return s=s|0,l=l|0,c=y(c),c=y(ti(s,l,c)),y(c+y(gr(s,l)))}function cI(s,l,c){return s=s|0,l=l|0,c=y(c),c=y(Ni(s,l,c)),y(c+y(hn(s,l)))}function gn(s,l,c){s=s|0,l=l|0,c=y(c);var f=$e;return f=y(mp(s,l,c)),y(f+y(cI(s,l,c)))}function km(s){return s=s|0,n[s+24>>2]|0?s=0:y(rs(s))!=y(0)?s=1:s=y(Ms(s))!=y(0),s|0}function rs(s){s=s|0;var l=$e;if(n[s+944>>2]|0){if(l=y(h[s+44>>2]),Ot(l)|0)return l=y(h[s+40>>2]),s=l>y(0)&((Ot(l)|0)^1),y(s?l:y(0))}else l=y(0);return y(l)}function Ms(s){s=s|0;var l=$e,c=0,f=$e;do if(n[s+944>>2]|0){if(l=y(h[s+48>>2]),Ot(l)|0){if(c=o[(n[s+976>>2]|0)+2>>0]|0,c<<24>>24==0&&(f=y(h[s+40>>2]),f<y(0)&((Ot(f)|0)^1))){l=y(-f);break}l=c<<24>>24?y(1):y(0)}}else l=y(0);while(0);return y(l)}function Su(s){s=s|0;var l=0,c=0;if(Jm(s+400|0,0,540)|0,o[s+985>>0]=1,ee(s),c=Zi(s)|0,c|0){l=s+948|0,s=0;do Su(n[(n[l>>2]|0)+(s<<2)>>2]|0),s=s+1|0;while((s|0)!=(c|0))}}function Fm(s,l,c,f,d,m,B,Q,k,M){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=y(m),B=y(B),Q=Q|0,k=k|0,M=M|0;var O=0,j=$e,se=0,We=0,Oe=$e,Re=$e,et=0,Ze=$e,at=0,He=$e,Ge=0,Tt=0,Rr=0,ir=0,Vt=0,Ir=0,Qr=0,rr=0,Bn=0,po=0;Bn=E,E=E+16|0,Rr=Bn+12|0,ir=Bn+8|0,Vt=Bn+4|0,Ir=Bn,rr=ur(n[s+4>>2]|0,k)|0,Ge=ue(rr)|0,j=y(Hr(uI(l)|0,Ge?m:B)),Tt=ts(l,2,m)|0,Qr=ts(l,0,B)|0;do if(!(Ot(j)|0)&&!(Ot(Ge?c:d)|0)){if(O=l+504|0,!(Ot(y(h[O>>2]))|0)&&(!(AI(n[l+976>>2]|0,0)|0)||(n[l+500>>2]|0)==(n[2278]|0)))break;h[O>>2]=y(Nn(j,y(gn(l,rr,m))))}else se=7;while(0);do if((se|0)==7){if(at=Ge^1,!(at|Tt^1)){B=y(Hr(n[l+992>>2]|0,m)),h[l+504>>2]=y(Nn(B,y(gn(l,2,m))));break}if(!(Ge|Qr^1)){B=y(Hr(n[l+996>>2]|0,B)),h[l+504>>2]=y(Nn(B,y(gn(l,0,m))));break}h[Rr>>2]=y(he),h[ir>>2]=y(he),n[Vt>>2]=0,n[Ir>>2]=0,Ze=y(rn(l,2,m)),He=y(rn(l,0,m)),Tt?(Oe=y(Ze+y(Hr(n[l+992>>2]|0,m))),h[Rr>>2]=Oe,n[Vt>>2]=1,We=1):(We=0,Oe=y(he)),Qr?(j=y(He+y(Hr(n[l+996>>2]|0,B))),h[ir>>2]=j,n[Ir>>2]=1,O=1):(O=0,j=y(he)),se=n[s+32>>2]|0,Ge&(se|0)==2?se=2:Ot(Oe)|0&&!(Ot(c)|0)&&(h[Rr>>2]=c,n[Vt>>2]=2,We=2,Oe=c),!((se|0)==2&at)&&Ot(j)|0&&!(Ot(d)|0)&&(h[ir>>2]=d,n[Ir>>2]=2,O=2,j=d),Re=y(h[l+396>>2]),et=Ot(Re)|0;do if(et)se=We;else{if((We|0)==1&at){h[ir>>2]=y(y(Oe-Ze)/Re),n[Ir>>2]=1,O=1,se=1;break}Ge&(O|0)==1?(h[Rr>>2]=y(Re*y(j-He)),n[Vt>>2]=1,O=1,se=1):se=We}while(0);po=Ot(c)|0,We=(pa(s,l)|0)!=4,!(Ge|Tt|((f|0)!=1|po)|(We|(se|0)==1))&&(h[Rr>>2]=c,n[Vt>>2]=1,!et)&&(h[ir>>2]=y(y(c-Ze)/Re),n[Ir>>2]=1,O=1),!(Qr|at|((Q|0)!=1|(Ot(d)|0))|(We|(O|0)==1))&&(h[ir>>2]=d,n[Ir>>2]=1,!et)&&(h[Rr>>2]=y(Re*y(d-He)),n[Vt>>2]=1),pr(l,2,m,m,Vt,Rr),pr(l,0,B,m,Ir,ir),c=y(h[Rr>>2]),d=y(h[ir>>2]),Aa(l,c,d,k,n[Vt>>2]|0,n[Ir>>2]|0,m,B,0,3565,M)|0,B=y(h[l+908+(n[976+(rr<<2)>>2]<<2)>>2]),h[l+504>>2]=y(Nn(B,y(gn(l,rr,m))))}while(0);n[l+500>>2]=n[2278],E=Bn}function Ci(s,l,c,f,d){return s=s|0,l=l|0,c=y(c),f=y(f),d=y(d),f=y(LA(s,l,c,f)),y(Nn(f,y(gn(s,l,d))))}function pa(s,l){return s=s|0,l=l|0,l=l+20|0,l=n[((n[l>>2]|0)==0?s+16|0:l)>>2]|0,(l|0)==5&&OA(n[s+4>>2]|0)|0&&(l=1),l|0}function vl(s,l){return s=s|0,l=l|0,ue(l)|0&&(n[s+96>>2]|0)!=0?l=4:l=n[1040+(l<<2)>>2]|0,s+60+(l<<3)|0}function Sc(s,l){return s=s|0,l=l|0,ue(l)|0&&(n[s+104>>2]|0)!=0?l=5:l=n[1e3+(l<<2)>>2]|0,s+60+(l<<3)|0}function pr(s,l,c,f,d,m){switch(s=s|0,l=l|0,c=y(c),f=y(f),d=d|0,m=m|0,c=y(Hr(s+380+(n[976+(l<<2)>>2]<<3)|0,c)),c=y(c+y(rn(s,l,f))),n[d>>2]|0){case 2:case 1:{d=Ot(c)|0,f=y(h[m>>2]),h[m>>2]=d|f<c?f:c;break}case 0:{Ot(c)|0||(n[d>>2]=2,h[m>>2]=c);break}default:}}function Ai(s,l){return s=s|0,l=l|0,s=s+132|0,ue(l)|0&&(n[(Sn(s,4,948)|0)+4>>2]|0)!=0?s=1:s=(n[(Sn(s,n[1040+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,s|0}function Fr(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0;return s=s+132|0,ue(l)|0&&(f=Sn(s,4,948)|0,(n[f+4>>2]|0)!=0)?d=4:(f=Sn(s,n[1040+(l<<2)>>2]|0,948)|0,n[f+4>>2]|0?d=4:c=y(0)),(d|0)==4&&(c=y(Hr(f,c))),y(c)}function ns(s,l,c){s=s|0,l=l|0,c=y(c);var f=$e;return f=y(h[s+908+(n[976+(l<<2)>>2]<<2)>>2]),f=y(f+y(K(s,l,c))),y(f+y(te(s,l,c)))}function Gi(s){s=s|0;var l=0,c=0,f=0;e:do if(OA(n[s+4>>2]|0)|0)l=0;else if((n[s+16>>2]|0)!=5)if(c=Zi(s)|0,!c)l=0;else for(l=0;;){if(f=Ts(s,l)|0,(n[f+24>>2]|0)==0&&(n[f+20>>2]|0)==5){l=1;break e}if(l=l+1|0,l>>>0>=c>>>0){l=0;break}}else l=1;while(0);return l|0}function Rm(s,l){s=s|0,l=l|0;var c=$e;return c=y(h[s+908+(n[976+(l<<2)>>2]<<2)>>2]),c>=y(0)&((Ot(c)|0)^1)|0}function Ya(s){s=s|0;var l=$e,c=0,f=0,d=0,m=0,B=0,Q=0,k=$e;if(c=n[s+968>>2]|0,c)k=y(h[s+908>>2]),l=y(h[s+912>>2]),l=y(A7[c&0](s,k,l)),Wn(s,(Ot(l)|0)^1,3573);else{m=Zi(s)|0;do if(m|0){for(c=0,d=0;;){if(f=Ts(s,d)|0,n[f+940>>2]|0){B=8;break}if((n[f+24>>2]|0)!=1)if(Q=(pa(s,f)|0)==5,Q){c=f;break}else c=(c|0)==0?f:c;if(d=d+1|0,d>>>0>=m>>>0){B=8;break}}if((B|0)==8&&!c)break;return l=y(Ya(c)),y(l+y(h[c+404>>2]))}while(0);l=y(h[s+912>>2])}return y(l)}function LA(s,l,c,f){s=s|0,l=l|0,c=y(c),f=y(f);var d=$e,m=0;return OA(l)|0?(l=1,m=3):ue(l)|0?(l=0,m=3):(f=y(he),d=y(he)),(m|0)==3&&(d=y(Hr(s+364+(l<<3)|0,f)),f=y(Hr(s+380+(l<<3)|0,f))),m=f<c&(f>=y(0)&((Ot(f)|0)^1)),c=m?f:c,m=d>=y(0)&((Ot(d)|0)^1)&c<d,y(m?d:c)}function Tm(s,l,c,f,d,m,B){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=m|0,B=B|0;var Q=$e,k=$e,M=0,O=0,j=$e,se=$e,We=$e,Oe=0,Re=0,et=0,Ze=0,at=$e,He=0;et=ur(n[s+4>>2]|0,m)|0,Oe=lI(et,m)|0,Re=ue(et)|0,j=y(rn(l,2,c)),se=y(rn(l,0,c)),ts(l,2,c)|0?Q=y(j+y(Hr(n[l+992>>2]|0,c))):Ai(l,2)|0&&nr(l,2)|0?(Q=y(h[s+908>>2]),k=y(gr(s,2)),k=y(Q-y(k+y(hn(s,2)))),Q=y(Fr(l,2,c)),Q=y(Ci(l,2,y(k-y(Q+y(Pu(l,2,c)))),c,c))):Q=y(he),ts(l,0,d)|0?k=y(se+y(Hr(n[l+996>>2]|0,d))):Ai(l,0)|0&&nr(l,0)|0?(k=y(h[s+912>>2]),at=y(gr(s,0)),at=y(k-y(at+y(hn(s,0)))),k=y(Fr(l,0,d)),k=y(Ci(l,0,y(at-y(k+y(Pu(l,0,d)))),d,c))):k=y(he),M=Ot(Q)|0,O=Ot(k)|0;do if(M^O&&(We=y(h[l+396>>2]),!(Ot(We)|0)))if(M){Q=y(j+y(y(k-se)*We));break}else{at=y(se+y(y(Q-j)/We)),k=O?at:k;break}while(0);O=Ot(Q)|0,M=Ot(k)|0,O|M&&(He=(O^1)&1,f=c>y(0)&((f|0)!=0&O),Q=Re?Q:f?c:Q,Aa(l,Q,k,m,Re?He:f?2:He,O&(M^1)&1,Q,k,0,3623,B)|0,Q=y(h[l+908>>2]),Q=y(Q+y(rn(l,2,c))),k=y(h[l+912>>2]),k=y(k+y(rn(l,0,c)))),Aa(l,Q,k,m,1,1,Q,k,1,3635,B)|0,nr(l,et)|0&&!(Ai(l,et)|0)?(He=n[976+(et<<2)>>2]|0,at=y(h[s+908+(He<<2)>>2]),at=y(at-y(h[l+908+(He<<2)>>2])),at=y(at-y(hn(s,et))),at=y(at-y(te(l,et,c))),at=y(at-y(Pu(l,et,Re?c:d))),h[l+400+(n[1040+(et<<2)>>2]<<2)>>2]=at):Ze=21;do if((Ze|0)==21){if(!(Ai(l,et)|0)&&(n[s+8>>2]|0)==1){He=n[976+(et<<2)>>2]|0,at=y(h[s+908+(He<<2)>>2]),at=y(y(at-y(h[l+908+(He<<2)>>2]))*y(.5)),h[l+400+(n[1040+(et<<2)>>2]<<2)>>2]=at;break}!(Ai(l,et)|0)&&(n[s+8>>2]|0)==2&&(He=n[976+(et<<2)>>2]|0,at=y(h[s+908+(He<<2)>>2]),at=y(at-y(h[l+908+(He<<2)>>2])),h[l+400+(n[1040+(et<<2)>>2]<<2)>>2]=at)}while(0);nr(l,Oe)|0&&!(Ai(l,Oe)|0)?(He=n[976+(Oe<<2)>>2]|0,at=y(h[s+908+(He<<2)>>2]),at=y(at-y(h[l+908+(He<<2)>>2])),at=y(at-y(hn(s,Oe))),at=y(at-y(te(l,Oe,c))),at=y(at-y(Pu(l,Oe,Re?d:c))),h[l+400+(n[1040+(Oe<<2)>>2]<<2)>>2]=at):Ze=30;do if((Ze|0)==30&&!(Ai(l,Oe)|0)){if((pa(s,l)|0)==2){He=n[976+(Oe<<2)>>2]|0,at=y(h[s+908+(He<<2)>>2]),at=y(y(at-y(h[l+908+(He<<2)>>2]))*y(.5)),h[l+400+(n[1040+(Oe<<2)>>2]<<2)>>2]=at;break}He=(pa(s,l)|0)==3,He^(n[s+28>>2]|0)==2&&(He=n[976+(Oe<<2)>>2]|0,at=y(h[s+908+(He<<2)>>2]),at=y(at-y(h[l+908+(He<<2)>>2])),h[l+400+(n[1040+(Oe<<2)>>2]<<2)>>2]=at)}while(0)}function yp(s,l,c){s=s|0,l=l|0,c=c|0;var f=$e,d=0;d=n[976+(c<<2)>>2]|0,f=y(h[l+908+(d<<2)>>2]),f=y(y(h[s+908+(d<<2)>>2])-f),f=y(f-y(h[l+400+(n[1040+(c<<2)>>2]<<2)>>2])),h[l+400+(n[1e3+(c<<2)>>2]<<2)>>2]=f}function OA(s){return s=s|0,(s|1|0)==1|0}function uI(s){s=s|0;var l=$e;switch(n[s+56>>2]|0){case 0:case 3:{l=y(h[s+40>>2]),l>y(0)&((Ot(l)|0)^1)?s=o[(n[s+976>>2]|0)+2>>0]|0?1056:992:s=1056;break}default:s=s+52|0}return s|0}function AI(s,l){return s=s|0,l=l|0,(o[s+l>>0]|0)!=0|0}function nr(s,l){return s=s|0,l=l|0,s=s+132|0,ue(l)|0&&(n[(Sn(s,5,948)|0)+4>>2]|0)!=0?s=1:s=(n[(Sn(s,n[1e3+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,s|0}function Pu(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0;return s=s+132|0,ue(l)|0&&(f=Sn(s,5,948)|0,(n[f+4>>2]|0)!=0)?d=4:(f=Sn(s,n[1e3+(l<<2)>>2]|0,948)|0,n[f+4>>2]|0?d=4:c=y(0)),(d|0)==4&&(c=y(Hr(f,c))),y(c)}function Nm(s,l,c){return s=s|0,l=l|0,c=y(c),Ai(s,l)|0?c=y(Fr(s,l,c)):c=y(-y(Pu(s,l,c))),y(c)}function xu(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function Ep(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>1073741823)Rt();else{d=Gt(l<<2)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<2)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<2)}function dg(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function MA(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-4-l|0)>>>2)<<2)),s=n[s>>2]|0,s|0&&pt(s)}function UA(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0;if(B=s+4|0,Q=n[B>>2]|0,d=Q-f|0,m=d>>2,s=l+(m<<2)|0,s>>>0<c>>>0){f=Q;do n[f>>2]=n[s>>2],s=s+4|0,f=(n[B>>2]|0)+4|0,n[B>>2]=f;while(s>>>0<c>>>0)}m|0&&DI(Q+(0-m<<2)|0,l|0,d|0)|0}function mg(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0;return Q=l+4|0,k=n[Q>>2]|0,d=n[s>>2]|0,B=c,m=B-d|0,f=k+(0-(m>>2)<<2)|0,n[Q>>2]=f,(m|0)>0&&Cr(f|0,d|0,m|0)|0,d=s+4|0,m=l+8|0,f=(n[d>>2]|0)-B|0,(f|0)>0&&(Cr(n[m>>2]|0,c|0,f|0)|0,n[m>>2]=(n[m>>2]|0)+(f>>>2<<2)),B=n[s>>2]|0,n[s>>2]=n[Q>>2],n[Q>>2]=B,B=n[d>>2]|0,n[d>>2]=n[m>>2],n[m>>2]=B,B=s+8|0,c=l+12|0,s=n[B>>2]|0,n[B>>2]=n[c>>2],n[c>>2]=s,n[l>>2]=n[Q>>2],k|0}function fI(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;if(B=n[l>>2]|0,m=n[c>>2]|0,(B|0)!=(m|0)){d=s+8|0,c=((m+-4-B|0)>>>2)+1|0,s=B,f=n[d>>2]|0;do n[f>>2]=n[s>>2],f=(n[d>>2]|0)+4|0,n[d>>2]=f,s=s+4|0;while((s|0)!=(m|0));n[l>>2]=B+(c<<2)}}function Lm(){dc()}function ha(){var s=0;return s=Gt(4)|0,_A(s),s|0}function _A(s){s=s|0,n[s>>2]=$i()|0}function Pc(s){s=s|0,s|0&&(yg(s),pt(s))}function yg(s){s=s|0,mi(n[s>>2]|0)}function Om(s,l,c){s=s|0,l=l|0,c=c|0,Wa(n[s>>2]|0,l,c)}function uo(s,l){s=s|0,l=y(l),fa(n[s>>2]|0,l)}function Dv(s,l){return s=s|0,l=l|0,AI(n[s>>2]|0,l)|0}function pI(){var s=0;return s=Gt(8)|0,Sv(s,0),s|0}function Sv(s,l){s=s|0,l=l|0,l?l=di(n[l>>2]|0)|0:l=oo()|0,n[s>>2]=l,n[s+4>>2]=0,_r(l,s)}function nF(s){s=s|0;var l=0;return l=Gt(8)|0,Sv(l,s),l|0}function Pv(s){s=s|0,s|0&&(bu(s),pt(s))}function bu(s){s=s|0;var l=0;ia(n[s>>2]|0),l=s+4|0,s=n[l>>2]|0,n[l>>2]=0,s|0&&(HA(s),pt(s))}function HA(s){s=s|0,qA(s)}function qA(s){s=s|0,s=n[s>>2]|0,s|0&&PA(s|0)}function hI(s){return s=s|0,$n(s)|0}function Mm(s){s=s|0;var l=0,c=0;c=s+4|0,l=n[c>>2]|0,n[c>>2]=0,l|0&&(HA(l),pt(l)),ao(n[s>>2]|0)}function iF(s,l){s=s|0,l=l|0,tr(n[s>>2]|0,n[l>>2]|0)}function sF(s,l){s=s|0,l=l|0,la(n[s>>2]|0,l)}function xv(s,l,c){s=s|0,l=l|0,c=+c,Iu(n[s>>2]|0,l,y(c))}function bv(s,l,c){s=s|0,l=l|0,c=+c,ms(n[s>>2]|0,l,y(c))}function gI(s,l){s=s|0,l=l|0,yi(n[s>>2]|0,l)}function Qu(s,l){s=s|0,l=l|0,Ha(n[s>>2]|0,l)}function oF(s,l){s=s|0,l=l|0,QA(n[s>>2]|0,l)}function aF(s,l){s=s|0,l=l|0,Ti(n[s>>2]|0,l)}function Cp(s,l){s=s|0,l=l|0,yc(n[s>>2]|0,l)}function lF(s,l){s=s|0,l=l|0,Ua(n[s>>2]|0,l)}function Qv(s,l,c){s=s|0,l=l|0,c=+c,Cc(n[s>>2]|0,l,y(c))}function jA(s,l,c){s=s|0,l=l|0,c=+c,G(n[s>>2]|0,l,y(c))}function cF(s,l){s=s|0,l=l|0,Il(n[s>>2]|0,l)}function uF(s,l){s=s|0,l=l|0,eg(n[s>>2]|0,l)}function kv(s,l){s=s|0,l=l|0,cp(n[s>>2]|0,l)}function dI(s,l){s=s|0,l=+l,kA(n[s>>2]|0,y(l))}function mI(s,l){s=s|0,l=+l,qa(n[s>>2]|0,y(l))}function AF(s,l){s=s|0,l=+l,ji(n[s>>2]|0,y(l))}function fF(s,l){s=s|0,l=+l,Os(n[s>>2]|0,y(l))}function Dl(s,l){s=s|0,l=+l,Cu(n[s>>2]|0,y(l))}function yI(s,l){s=s|0,l=+l,sI(n[s>>2]|0,y(l))}function pF(s,l){s=s|0,l=+l,FA(n[s>>2]|0,y(l))}function GA(s){s=s|0,up(n[s>>2]|0)}function Um(s,l){s=s|0,l=+l,ys(n[s>>2]|0,y(l))}function ku(s,l){s=s|0,l=+l,ng(n[s>>2]|0,y(l))}function EI(s){s=s|0,ig(n[s>>2]|0)}function CI(s,l){s=s|0,l=+l,Ap(n[s>>2]|0,y(l))}function hF(s,l){s=s|0,l=+l,wc(n[s>>2]|0,y(l))}function Fv(s,l){s=s|0,l=+l,Dm(n[s>>2]|0,y(l))}function WA(s,l){s=s|0,l=+l,og(n[s>>2]|0,y(l))}function Rv(s,l){s=s|0,l=+l,Bu(n[s>>2]|0,y(l))}function _m(s,l){s=s|0,l=+l,Sm(n[s>>2]|0,y(l))}function Tv(s,l){s=s|0,l=+l,vu(n[s>>2]|0,y(l))}function Nv(s,l){s=s|0,l=+l,oI(n[s>>2]|0,y(l))}function Hm(s,l){s=s|0,l=+l,ua(n[s>>2]|0,y(l))}function Lv(s,l,c){s=s|0,l=l|0,c=+c,wu(n[s>>2]|0,l,y(c))}function gF(s,l,c){s=s|0,l=l|0,c=+c,Si(n[s>>2]|0,l,y(c))}function S(s,l,c){s=s|0,l=l|0,c=+c,Ic(n[s>>2]|0,l,y(c))}function D(s){return s=s|0,$h(n[s>>2]|0)|0}function T(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=E,E=E+16|0,d=f,Ec(d,n[l>>2]|0,c),q(s,d),E=f}function q(s,l){s=s|0,l=l|0,W(s,n[l+4>>2]|0,+y(h[l>>2]))}function W(s,l,c){s=s|0,l=l|0,c=+c,n[s>>2]=l,C[s+8>>3]=c}function ce(s){return s=s|0,aa(n[s>>2]|0)|0}function Se(s){return s=s|0,lo(n[s>>2]|0)|0}function It(s){return s=s|0,mc(n[s>>2]|0)|0}function Et(s){return s=s|0,Yn(n[s>>2]|0)|0}function xt(s){return s=s|0,vm(n[s>>2]|0)|0}function Nr(s){return s=s|0,oa(n[s>>2]|0)|0}function is(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=E,E=E+16|0,d=f,Dt(d,n[l>>2]|0,c),q(s,d),E=f}function fi(s){return s=s|0,Kn(n[s>>2]|0)|0}function Ao(s){return s=s|0,tg(n[s>>2]|0)|0}function YA(s,l){s=s|0,l=l|0;var c=0,f=0;c=E,E=E+16|0,f=c,ca(f,n[l>>2]|0),q(s,f),E=c}function _o(s){return s=s|0,+ +y(Zr(n[s>>2]|0))}function rt(s){return s=s|0,+ +y(Tn(n[s>>2]|0))}function Ve(s,l){s=s|0,l=l|0;var c=0,f=0;c=E,E=E+16|0,f=c,yr(f,n[l>>2]|0),q(s,f),E=c}function ft(s,l){s=s|0,l=l|0;var c=0,f=0;c=E,E=E+16|0,f=c,sg(f,n[l>>2]|0),q(s,f),E=c}function jt(s,l){s=s|0,l=l|0;var c=0,f=0;c=E,E=E+16|0,f=c,mt(f,n[l>>2]|0),q(s,f),E=c}function Er(s,l){s=s|0,l=l|0;var c=0,f=0;c=E,E=E+16|0,f=c,ag(f,n[l>>2]|0),q(s,f),E=c}function In(s,l){s=s|0,l=l|0;var c=0,f=0;c=E,E=E+16|0,f=c,lg(f,n[l>>2]|0),q(s,f),E=c}function Sr(s,l){s=s|0,l=l|0;var c=0,f=0;c=E,E=E+16|0,f=c,Pm(f,n[l>>2]|0),q(s,f),E=c}function wn(s){return s=s|0,+ +y(Bc(n[s>>2]|0))}function ri(s,l){return s=s|0,l=l|0,+ +y(rg(n[s>>2]|0,l))}function Xr(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=E,E=E+16|0,d=f,lt(d,n[l>>2]|0,c),q(s,d),E=f}function fo(s,l,c){s=s|0,l=l|0,c=c|0,sa(n[s>>2]|0,n[l>>2]|0,c)}function dF(s,l){s=s|0,l=l|0,Ls(n[s>>2]|0,n[l>>2]|0)}function uve(s){return s=s|0,Zi(n[s>>2]|0)|0}function Ave(s){return s=s|0,s=xe(n[s>>2]|0)|0,s?s=hI(s)|0:s=0,s|0}function fve(s,l){return s=s|0,l=l|0,s=Ts(n[s>>2]|0,l)|0,s?s=hI(s)|0:s=0,s|0}function pve(s,l){s=s|0,l=l|0;var c=0,f=0;f=Gt(4)|0,_9(f,l),c=s+4|0,l=n[c>>2]|0,n[c>>2]=f,l|0&&(HA(l),pt(l)),Ma(n[s>>2]|0,1)}function _9(s,l){s=s|0,l=l|0,Dve(s,l)}function hve(s,l,c,f,d,m){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=m|0;var B=0,Q=0;B=E,E=E+16|0,Q=B,gve(Q,$n(l)|0,+c,f,+d,m),h[s>>2]=y(+C[Q>>3]),h[s+4>>2]=y(+C[Q+8>>3]),E=B}function gve(s,l,c,f,d,m){s=s|0,l=l|0,c=+c,f=f|0,d=+d,m=m|0;var B=0,Q=0,k=0,M=0,O=0;B=E,E=E+32|0,O=B+8|0,M=B+20|0,k=B,Q=B+16|0,C[O>>3]=c,n[M>>2]=f,C[k>>3]=d,n[Q>>2]=m,dve(s,n[l+4>>2]|0,O,M,k,Q),E=B}function dve(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,Q=0;B=E,E=E+16|0,Q=B,Ja(Q),l=ga(l)|0,mve(s,l,+C[c>>3],n[f>>2]|0,+C[d>>3],n[m>>2]|0),Va(Q),E=B}function ga(s){return s=s|0,n[s>>2]|0}function mve(s,l,c,f,d,m){s=s|0,l=l|0,c=+c,f=f|0,d=+d,m=m|0;var B=0;B=Sl(yve()|0)|0,c=+KA(c),f=mF(f)|0,d=+KA(d),Eve(s,ui(0,B|0,l|0,+c,f|0,+d,mF(m)|0)|0)}function yve(){var s=0;return o[7608]|0||(Bve(9120),s=7608,n[s>>2]=1,n[s+4>>2]=0),9120}function Sl(s){return s=s|0,n[s+8>>2]|0}function KA(s){return s=+s,+ +yF(s)}function mF(s){return s=s|0,q9(s)|0}function Eve(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;d=E,E=E+32|0,c=d,f=l,f&1?(Cve(c,0),Zn(f|0,c|0)|0,Ive(s,c),wve(c)):(n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=n[l+8>>2],n[s+12>>2]=n[l+12>>2]),E=d}function Cve(s,l){s=s|0,l=l|0,H9(s,l),n[s+8>>2]=0,o[s+24>>0]=0}function Ive(s,l){s=s|0,l=l|0,l=l+8|0,n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=n[l+8>>2],n[s+12>>2]=n[l+12>>2]}function wve(s){s=s|0,o[s+24>>0]=0}function H9(s,l){s=s|0,l=l|0,n[s>>2]=l}function q9(s){return s=s|0,s|0}function yF(s){return s=+s,+s}function Bve(s){s=s|0,Pl(s,vve()|0,4)}function vve(){return 1064}function Pl(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c,n[s+8>>2]=lp(l|0,c+1|0)|0}function Dve(s,l){s=s|0,l=l|0,l=n[l>>2]|0,n[s>>2]=l,ml(l|0)}function Sve(s){s=s|0;var l=0,c=0;c=s+4|0,l=n[c>>2]|0,n[c>>2]=0,l|0&&(HA(l),pt(l)),Ma(n[s>>2]|0,0)}function Pve(s){s=s|0,Je(n[s>>2]|0)}function xve(s){return s=s|0,vt(n[s>>2]|0)|0}function bve(s,l,c,f){s=s|0,l=+l,c=+c,f=f|0,vc(n[s>>2]|0,y(l),y(c),f)}function Qve(s){return s=s|0,+ +y(wl(n[s>>2]|0))}function kve(s){return s=s|0,+ +y(cg(n[s>>2]|0))}function Fve(s){return s=s|0,+ +y(Du(n[s>>2]|0))}function Rve(s){return s=s|0,+ +y(RA(n[s>>2]|0))}function Tve(s){return s=s|0,+ +y(fp(n[s>>2]|0))}function Nve(s){return s=s|0,+ +y(ja(n[s>>2]|0))}function Lve(s,l){s=s|0,l=l|0,C[s>>3]=+y(wl(n[l>>2]|0)),C[s+8>>3]=+y(cg(n[l>>2]|0)),C[s+16>>3]=+y(Du(n[l>>2]|0)),C[s+24>>3]=+y(RA(n[l>>2]|0)),C[s+32>>3]=+y(fp(n[l>>2]|0)),C[s+40>>3]=+y(ja(n[l>>2]|0))}function Ove(s,l){return s=s|0,l=l|0,+ +y(ug(n[s>>2]|0,l))}function Mve(s,l){return s=s|0,l=l|0,+ +y(pp(n[s>>2]|0,l))}function Uve(s,l){return s=s|0,l=l|0,+ +y(Mo(n[s>>2]|0,l))}function _ve(){return qn()|0}function Hve(){qve(),jve(),Gve(),Wve(),Yve(),Kve()}function qve(){YNe(11713,4938,1)}function jve(){ANe(10448)}function Gve(){YTe(10408)}function Wve(){gTe(10324)}function Yve(){BFe(10096)}function Kve(){Jve(9132)}function Jve(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0,We=0,Oe=0,Re=0,et=0,Ze=0,at=0,He=0,Ge=0,Tt=0,Rr=0,ir=0,Vt=0,Ir=0,Qr=0,rr=0,Bn=0,po=0,ho=0,go=0,ma=0,bp=0,Qp=0,xl=0,kp=0,Nu=0,Lu=0,Fp=0,Rp=0,Tp=0,Vr=0,bl=0,Np=0,bc=0,Lp=0,Op=0,Ou=0,Mu=0,Qc=0,Us=0,Xa=0,Ho=0,Ql=0,tf=0,rf=0,Uu=0,nf=0,sf=0,_s=0,ws=0,kl=0,Pn=0,of=0,mo=0,kc=0,yo=0,Fc=0,af=0,lf=0,Rc=0,Hs=0,Fl=0,cf=0,uf=0,Af=0,vr=0,jn=0,Bs=0,Eo=0,qs=0,Pr=0,lr=0,Rl=0;l=E,E=E+672|0,c=l+656|0,Rl=l+648|0,lr=l+640|0,Pr=l+632|0,qs=l+624|0,Eo=l+616|0,Bs=l+608|0,jn=l+600|0,vr=l+592|0,Af=l+584|0,uf=l+576|0,cf=l+568|0,Fl=l+560|0,Hs=l+552|0,Rc=l+544|0,lf=l+536|0,af=l+528|0,Fc=l+520|0,yo=l+512|0,kc=l+504|0,mo=l+496|0,of=l+488|0,Pn=l+480|0,kl=l+472|0,ws=l+464|0,_s=l+456|0,sf=l+448|0,nf=l+440|0,Uu=l+432|0,rf=l+424|0,tf=l+416|0,Ql=l+408|0,Ho=l+400|0,Xa=l+392|0,Us=l+384|0,Qc=l+376|0,Mu=l+368|0,Ou=l+360|0,Op=l+352|0,Lp=l+344|0,bc=l+336|0,Np=l+328|0,bl=l+320|0,Vr=l+312|0,Tp=l+304|0,Rp=l+296|0,Fp=l+288|0,Lu=l+280|0,Nu=l+272|0,kp=l+264|0,xl=l+256|0,Qp=l+248|0,bp=l+240|0,ma=l+232|0,go=l+224|0,ho=l+216|0,po=l+208|0,Bn=l+200|0,rr=l+192|0,Qr=l+184|0,Ir=l+176|0,Vt=l+168|0,ir=l+160|0,Rr=l+152|0,Tt=l+144|0,Ge=l+136|0,He=l+128|0,at=l+120|0,Ze=l+112|0,et=l+104|0,Re=l+96|0,Oe=l+88|0,We=l+80|0,se=l+72|0,j=l+64|0,O=l+56|0,M=l+48|0,k=l+40|0,Q=l+32|0,B=l+24|0,m=l+16|0,d=l+8|0,f=l,Vve(s,3646),zve(s,3651,2)|0,Xve(s,3665,2)|0,Zve(s,3682,18)|0,n[Rl>>2]=19,n[Rl+4>>2]=0,n[c>>2]=n[Rl>>2],n[c+4>>2]=n[Rl+4>>2],II(s,3690,c)|0,n[lr>>2]=1,n[lr+4>>2]=0,n[c>>2]=n[lr>>2],n[c+4>>2]=n[lr+4>>2],$ve(s,3696,c)|0,n[Pr>>2]=2,n[Pr+4>>2]=0,n[c>>2]=n[Pr>>2],n[c+4>>2]=n[Pr+4>>2],Fu(s,3706,c)|0,n[qs>>2]=1,n[qs+4>>2]=0,n[c>>2]=n[qs>>2],n[c+4>>2]=n[qs+4>>2],Eg(s,3722,c)|0,n[Eo>>2]=2,n[Eo+4>>2]=0,n[c>>2]=n[Eo>>2],n[c+4>>2]=n[Eo+4>>2],Eg(s,3734,c)|0,n[Bs>>2]=3,n[Bs+4>>2]=0,n[c>>2]=n[Bs>>2],n[c+4>>2]=n[Bs+4>>2],Fu(s,3753,c)|0,n[jn>>2]=4,n[jn+4>>2]=0,n[c>>2]=n[jn>>2],n[c+4>>2]=n[jn+4>>2],Fu(s,3769,c)|0,n[vr>>2]=5,n[vr+4>>2]=0,n[c>>2]=n[vr>>2],n[c+4>>2]=n[vr+4>>2],Fu(s,3783,c)|0,n[Af>>2]=6,n[Af+4>>2]=0,n[c>>2]=n[Af>>2],n[c+4>>2]=n[Af+4>>2],Fu(s,3796,c)|0,n[uf>>2]=7,n[uf+4>>2]=0,n[c>>2]=n[uf>>2],n[c+4>>2]=n[uf+4>>2],Fu(s,3813,c)|0,n[cf>>2]=8,n[cf+4>>2]=0,n[c>>2]=n[cf>>2],n[c+4>>2]=n[cf+4>>2],Fu(s,3825,c)|0,n[Fl>>2]=3,n[Fl+4>>2]=0,n[c>>2]=n[Fl>>2],n[c+4>>2]=n[Fl+4>>2],Eg(s,3843,c)|0,n[Hs>>2]=4,n[Hs+4>>2]=0,n[c>>2]=n[Hs>>2],n[c+4>>2]=n[Hs+4>>2],Eg(s,3853,c)|0,n[Rc>>2]=9,n[Rc+4>>2]=0,n[c>>2]=n[Rc>>2],n[c+4>>2]=n[Rc+4>>2],Fu(s,3870,c)|0,n[lf>>2]=10,n[lf+4>>2]=0,n[c>>2]=n[lf>>2],n[c+4>>2]=n[lf+4>>2],Fu(s,3884,c)|0,n[af>>2]=11,n[af+4>>2]=0,n[c>>2]=n[af>>2],n[c+4>>2]=n[af+4>>2],Fu(s,3896,c)|0,n[Fc>>2]=1,n[Fc+4>>2]=0,n[c>>2]=n[Fc>>2],n[c+4>>2]=n[Fc+4>>2],Cs(s,3907,c)|0,n[yo>>2]=2,n[yo+4>>2]=0,n[c>>2]=n[yo>>2],n[c+4>>2]=n[yo+4>>2],Cs(s,3915,c)|0,n[kc>>2]=3,n[kc+4>>2]=0,n[c>>2]=n[kc>>2],n[c+4>>2]=n[kc+4>>2],Cs(s,3928,c)|0,n[mo>>2]=4,n[mo+4>>2]=0,n[c>>2]=n[mo>>2],n[c+4>>2]=n[mo+4>>2],Cs(s,3948,c)|0,n[of>>2]=5,n[of+4>>2]=0,n[c>>2]=n[of>>2],n[c+4>>2]=n[of+4>>2],Cs(s,3960,c)|0,n[Pn>>2]=6,n[Pn+4>>2]=0,n[c>>2]=n[Pn>>2],n[c+4>>2]=n[Pn+4>>2],Cs(s,3974,c)|0,n[kl>>2]=7,n[kl+4>>2]=0,n[c>>2]=n[kl>>2],n[c+4>>2]=n[kl+4>>2],Cs(s,3983,c)|0,n[ws>>2]=20,n[ws+4>>2]=0,n[c>>2]=n[ws>>2],n[c+4>>2]=n[ws+4>>2],II(s,3999,c)|0,n[_s>>2]=8,n[_s+4>>2]=0,n[c>>2]=n[_s>>2],n[c+4>>2]=n[_s+4>>2],Cs(s,4012,c)|0,n[sf>>2]=9,n[sf+4>>2]=0,n[c>>2]=n[sf>>2],n[c+4>>2]=n[sf+4>>2],Cs(s,4022,c)|0,n[nf>>2]=21,n[nf+4>>2]=0,n[c>>2]=n[nf>>2],n[c+4>>2]=n[nf+4>>2],II(s,4039,c)|0,n[Uu>>2]=10,n[Uu+4>>2]=0,n[c>>2]=n[Uu>>2],n[c+4>>2]=n[Uu+4>>2],Cs(s,4053,c)|0,n[rf>>2]=11,n[rf+4>>2]=0,n[c>>2]=n[rf>>2],n[c+4>>2]=n[rf+4>>2],Cs(s,4065,c)|0,n[tf>>2]=12,n[tf+4>>2]=0,n[c>>2]=n[tf>>2],n[c+4>>2]=n[tf+4>>2],Cs(s,4084,c)|0,n[Ql>>2]=13,n[Ql+4>>2]=0,n[c>>2]=n[Ql>>2],n[c+4>>2]=n[Ql+4>>2],Cs(s,4097,c)|0,n[Ho>>2]=14,n[Ho+4>>2]=0,n[c>>2]=n[Ho>>2],n[c+4>>2]=n[Ho+4>>2],Cs(s,4117,c)|0,n[Xa>>2]=15,n[Xa+4>>2]=0,n[c>>2]=n[Xa>>2],n[c+4>>2]=n[Xa+4>>2],Cs(s,4129,c)|0,n[Us>>2]=16,n[Us+4>>2]=0,n[c>>2]=n[Us>>2],n[c+4>>2]=n[Us+4>>2],Cs(s,4148,c)|0,n[Qc>>2]=17,n[Qc+4>>2]=0,n[c>>2]=n[Qc>>2],n[c+4>>2]=n[Qc+4>>2],Cs(s,4161,c)|0,n[Mu>>2]=18,n[Mu+4>>2]=0,n[c>>2]=n[Mu>>2],n[c+4>>2]=n[Mu+4>>2],Cs(s,4181,c)|0,n[Ou>>2]=5,n[Ou+4>>2]=0,n[c>>2]=n[Ou>>2],n[c+4>>2]=n[Ou+4>>2],Eg(s,4196,c)|0,n[Op>>2]=6,n[Op+4>>2]=0,n[c>>2]=n[Op>>2],n[c+4>>2]=n[Op+4>>2],Eg(s,4206,c)|0,n[Lp>>2]=7,n[Lp+4>>2]=0,n[c>>2]=n[Lp>>2],n[c+4>>2]=n[Lp+4>>2],Eg(s,4217,c)|0,n[bc>>2]=3,n[bc+4>>2]=0,n[c>>2]=n[bc>>2],n[c+4>>2]=n[bc+4>>2],JA(s,4235,c)|0,n[Np>>2]=1,n[Np+4>>2]=0,n[c>>2]=n[Np>>2],n[c+4>>2]=n[Np+4>>2],EF(s,4251,c)|0,n[bl>>2]=4,n[bl+4>>2]=0,n[c>>2]=n[bl>>2],n[c+4>>2]=n[bl+4>>2],JA(s,4263,c)|0,n[Vr>>2]=5,n[Vr+4>>2]=0,n[c>>2]=n[Vr>>2],n[c+4>>2]=n[Vr+4>>2],JA(s,4279,c)|0,n[Tp>>2]=6,n[Tp+4>>2]=0,n[c>>2]=n[Tp>>2],n[c+4>>2]=n[Tp+4>>2],JA(s,4293,c)|0,n[Rp>>2]=7,n[Rp+4>>2]=0,n[c>>2]=n[Rp>>2],n[c+4>>2]=n[Rp+4>>2],JA(s,4306,c)|0,n[Fp>>2]=8,n[Fp+4>>2]=0,n[c>>2]=n[Fp>>2],n[c+4>>2]=n[Fp+4>>2],JA(s,4323,c)|0,n[Lu>>2]=9,n[Lu+4>>2]=0,n[c>>2]=n[Lu>>2],n[c+4>>2]=n[Lu+4>>2],JA(s,4335,c)|0,n[Nu>>2]=2,n[Nu+4>>2]=0,n[c>>2]=n[Nu>>2],n[c+4>>2]=n[Nu+4>>2],EF(s,4353,c)|0,n[kp>>2]=12,n[kp+4>>2]=0,n[c>>2]=n[kp>>2],n[c+4>>2]=n[kp+4>>2],Cg(s,4363,c)|0,n[xl>>2]=1,n[xl+4>>2]=0,n[c>>2]=n[xl>>2],n[c+4>>2]=n[xl+4>>2],VA(s,4376,c)|0,n[Qp>>2]=2,n[Qp+4>>2]=0,n[c>>2]=n[Qp>>2],n[c+4>>2]=n[Qp+4>>2],VA(s,4388,c)|0,n[bp>>2]=13,n[bp+4>>2]=0,n[c>>2]=n[bp>>2],n[c+4>>2]=n[bp+4>>2],Cg(s,4402,c)|0,n[ma>>2]=14,n[ma+4>>2]=0,n[c>>2]=n[ma>>2],n[c+4>>2]=n[ma+4>>2],Cg(s,4411,c)|0,n[go>>2]=15,n[go+4>>2]=0,n[c>>2]=n[go>>2],n[c+4>>2]=n[go+4>>2],Cg(s,4421,c)|0,n[ho>>2]=16,n[ho+4>>2]=0,n[c>>2]=n[ho>>2],n[c+4>>2]=n[ho+4>>2],Cg(s,4433,c)|0,n[po>>2]=17,n[po+4>>2]=0,n[c>>2]=n[po>>2],n[c+4>>2]=n[po+4>>2],Cg(s,4446,c)|0,n[Bn>>2]=18,n[Bn+4>>2]=0,n[c>>2]=n[Bn>>2],n[c+4>>2]=n[Bn+4>>2],Cg(s,4458,c)|0,n[rr>>2]=3,n[rr+4>>2]=0,n[c>>2]=n[rr>>2],n[c+4>>2]=n[rr+4>>2],VA(s,4471,c)|0,n[Qr>>2]=1,n[Qr+4>>2]=0,n[c>>2]=n[Qr>>2],n[c+4>>2]=n[Qr+4>>2],Ov(s,4486,c)|0,n[Ir>>2]=10,n[Ir+4>>2]=0,n[c>>2]=n[Ir>>2],n[c+4>>2]=n[Ir+4>>2],JA(s,4496,c)|0,n[Vt>>2]=11,n[Vt+4>>2]=0,n[c>>2]=n[Vt>>2],n[c+4>>2]=n[Vt+4>>2],JA(s,4508,c)|0,n[ir>>2]=3,n[ir+4>>2]=0,n[c>>2]=n[ir>>2],n[c+4>>2]=n[ir+4>>2],EF(s,4519,c)|0,n[Rr>>2]=4,n[Rr+4>>2]=0,n[c>>2]=n[Rr>>2],n[c+4>>2]=n[Rr+4>>2],eDe(s,4530,c)|0,n[Tt>>2]=19,n[Tt+4>>2]=0,n[c>>2]=n[Tt>>2],n[c+4>>2]=n[Tt+4>>2],tDe(s,4542,c)|0,n[Ge>>2]=12,n[Ge+4>>2]=0,n[c>>2]=n[Ge>>2],n[c+4>>2]=n[Ge+4>>2],rDe(s,4554,c)|0,n[He>>2]=13,n[He+4>>2]=0,n[c>>2]=n[He>>2],n[c+4>>2]=n[He+4>>2],nDe(s,4568,c)|0,n[at>>2]=2,n[at+4>>2]=0,n[c>>2]=n[at>>2],n[c+4>>2]=n[at+4>>2],iDe(s,4578,c)|0,n[Ze>>2]=20,n[Ze+4>>2]=0,n[c>>2]=n[Ze>>2],n[c+4>>2]=n[Ze+4>>2],sDe(s,4587,c)|0,n[et>>2]=22,n[et+4>>2]=0,n[c>>2]=n[et>>2],n[c+4>>2]=n[et+4>>2],II(s,4602,c)|0,n[Re>>2]=23,n[Re+4>>2]=0,n[c>>2]=n[Re>>2],n[c+4>>2]=n[Re+4>>2],II(s,4619,c)|0,n[Oe>>2]=14,n[Oe+4>>2]=0,n[c>>2]=n[Oe>>2],n[c+4>>2]=n[Oe+4>>2],oDe(s,4629,c)|0,n[We>>2]=1,n[We+4>>2]=0,n[c>>2]=n[We>>2],n[c+4>>2]=n[We+4>>2],aDe(s,4637,c)|0,n[se>>2]=4,n[se+4>>2]=0,n[c>>2]=n[se>>2],n[c+4>>2]=n[se+4>>2],VA(s,4653,c)|0,n[j>>2]=5,n[j+4>>2]=0,n[c>>2]=n[j>>2],n[c+4>>2]=n[j+4>>2],VA(s,4669,c)|0,n[O>>2]=6,n[O+4>>2]=0,n[c>>2]=n[O>>2],n[c+4>>2]=n[O+4>>2],VA(s,4686,c)|0,n[M>>2]=7,n[M+4>>2]=0,n[c>>2]=n[M>>2],n[c+4>>2]=n[M+4>>2],VA(s,4701,c)|0,n[k>>2]=8,n[k+4>>2]=0,n[c>>2]=n[k>>2],n[c+4>>2]=n[k+4>>2],VA(s,4719,c)|0,n[Q>>2]=9,n[Q+4>>2]=0,n[c>>2]=n[Q>>2],n[c+4>>2]=n[Q+4>>2],VA(s,4736,c)|0,n[B>>2]=21,n[B+4>>2]=0,n[c>>2]=n[B>>2],n[c+4>>2]=n[B+4>>2],lDe(s,4754,c)|0,n[m>>2]=2,n[m+4>>2]=0,n[c>>2]=n[m>>2],n[c+4>>2]=n[m+4>>2],Ov(s,4772,c)|0,n[d>>2]=3,n[d+4>>2]=0,n[c>>2]=n[d>>2],n[c+4>>2]=n[d+4>>2],Ov(s,4790,c)|0,n[f>>2]=4,n[f+4>>2]=0,n[c>>2]=n[f>>2],n[c+4>>2]=n[f+4>>2],Ov(s,4808,c)|0,E=l}function Vve(s,l){s=s|0,l=l|0;var c=0;c=hFe()|0,n[s>>2]=c,gFe(c,l),Sp(n[s>>2]|0)}function zve(s,l,c){return s=s|0,l=l|0,c=c|0,eFe(s,cn(l)|0,c,0),s|0}function Xve(s,l,c){return s=s|0,l=l|0,c=c|0,Mke(s,cn(l)|0,c,0),s|0}function Zve(s,l,c){return s=s|0,l=l|0,c=c|0,vke(s,cn(l)|0,c,0),s|0}function II(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],lke(s,l,d),E=f,s|0}function $ve(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],jQe(s,l,d),E=f,s|0}function Fu(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],PQe(s,l,d),E=f,s|0}function Eg(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],AQe(s,l,d),E=f,s|0}function Cs(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Vbe(s,l,d),E=f,s|0}function JA(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Rbe(s,l,d),E=f,s|0}function EF(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],mbe(s,l,d),E=f,s|0}function Cg(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],jxe(s,l,d),E=f,s|0}function VA(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Pxe(s,l,d),E=f,s|0}function Ov(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Axe(s,l,d),E=f,s|0}function eDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],VPe(s,l,d),E=f,s|0}function tDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],RPe(s,l,d),E=f,s|0}function rDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],yPe(s,l,d),E=f,s|0}function nDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],nPe(s,l,d),E=f,s|0}function iDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],_Se(s,l,d),E=f,s|0}function sDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],BSe(s,l,d),E=f,s|0}function oDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],aSe(s,l,d),E=f,s|0}function aDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],jDe(s,l,d),E=f,s|0}function lDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],cDe(s,l,d),E=f,s|0}function cDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],uDe(s,c,d,1),E=f}function cn(s){return s=s|0,s|0}function uDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=CF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=ADe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,fDe(m,f)|0,f),E=d}function CF(){var s=0,l=0;if(o[7616]|0||(W9(9136),Zt(24,9136,_|0)|0,l=7616,n[l>>2]=1,n[l+4>>2]=0),!(br(9136)|0)){s=9136,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));W9(9136)}return 9136}function ADe(s){return s=s|0,0}function fDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=CF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],G9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(gDe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function un(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,Q=0,k=0,M=0,O=0,j=0,se=0,We=0;B=E,E=E+32|0,se=B+24|0,j=B+20|0,k=B+16|0,O=B+12|0,M=B+8|0,Q=B+4|0,We=B,n[j>>2]=l,n[k>>2]=c,n[O>>2]=f,n[M>>2]=d,n[Q>>2]=m,m=s+28|0,n[We>>2]=n[m>>2],n[se>>2]=n[We>>2],pDe(s+24|0,se,j,O,M,k,Q)|0,n[m>>2]=n[n[m>>2]>>2],E=B}function pDe(s,l,c,f,d,m,B){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0,s=hDe(l)|0,l=Gt(24)|0,j9(l+4|0,n[c>>2]|0,n[f>>2]|0,n[d>>2]|0,n[m>>2]|0,n[B>>2]|0),n[l>>2]=n[s>>2],n[s>>2]=l,l|0}function hDe(s){return s=s|0,n[s>>2]|0}function j9(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,n[s>>2]=l,n[s+4>>2]=c,n[s+8>>2]=f,n[s+12>>2]=d,n[s+16>>2]=m}function Ar(s,l){return s=s|0,l=l|0,l|s|0}function G9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function gDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=dDe(s)|0,m>>>0<d>>>0)Jr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,mDe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],G9(m,f,c),n[k>>2]=(n[k>>2]|0)+12,yDe(s,Q),EDe(Q),E=M;return}}function dDe(s){return s=s|0,357913941}function mDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function yDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function EDe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function W9(s){s=s|0,wDe(s)}function CDe(s){s=s|0,IDe(s+24|0)}function br(s){return s=s|0,n[s>>2]|0}function IDe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function wDe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,3,l,BDe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Gr(){return 9228}function BDe(){return 1140}function vDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=E,E=E+16|0,f=c+8|0,d=c,m=DDe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=SDe(l,f)|0,E=c,l|0}function Wr(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,n[s>>2]=l,n[s+4>>2]=c,n[s+8>>2]=f,n[s+12>>2]=d,n[s+16>>2]=m}function DDe(s){return s=s|0,(n[(CF()|0)+24>>2]|0)+(s*12|0)|0}function SDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;return d=E,E=E+48|0,f=d,c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),ef[c&31](f,s),f=PDe(f)|0,E=d,f|0}function PDe(s){s=s|0;var l=0,c=0,f=0,d=0;return d=E,E=E+32|0,l=d+12|0,c=d,f=IF(Y9()|0)|0,f?(wF(l,f),BF(c,l),xDe(s,c),s=vF(l)|0):s=bDe(s)|0,E=d,s|0}function Y9(){var s=0;return o[7632]|0||(UDe(9184),Zt(25,9184,_|0)|0,s=7632,n[s>>2]=1,n[s+4>>2]=0),9184}function IF(s){return s=s|0,n[s+36>>2]|0}function wF(s,l){s=s|0,l=l|0,n[s>>2]=l,n[s+4>>2]=s,n[s+8>>2]=0}function BF(s,l){s=s|0,l=l|0,n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=0}function xDe(s,l){s=s|0,l=l|0,RDe(l,s,s+8|0,s+16|0,s+24|0,s+32|0,s+40|0)|0}function vF(s){return s=s|0,n[(n[s+4>>2]|0)+8>>2]|0}function bDe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,Q=0,k=0;k=E,E=E+16|0,c=k+4|0,f=k,d=Ka(8)|0,m=d,B=Gt(48)|0,Q=B,l=Q+48|0;do n[Q>>2]=n[s>>2],Q=Q+4|0,s=s+4|0;while((Q|0)<(l|0));return l=m+4|0,n[l>>2]=B,Q=Gt(8)|0,B=n[l>>2]|0,n[f>>2]=0,n[c>>2]=n[f>>2],K9(Q,B,c),n[d>>2]=Q,E=k,m|0}function K9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Gt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1092,n[c+12>>2]=l,n[s+4>>2]=c}function QDe(s){s=s|0,Km(s),pt(s)}function kDe(s){s=s|0,s=n[s+12>>2]|0,s|0&&pt(s)}function FDe(s){s=s|0,pt(s)}function RDe(s,l,c,f,d,m,B){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0,m=TDe(n[s>>2]|0,l,c,f,d,m,B)|0,B=s+4|0,n[(n[B>>2]|0)+8>>2]=m,n[(n[B>>2]|0)+8>>2]|0}function TDe(s,l,c,f,d,m,B){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0;var Q=0,k=0;return Q=E,E=E+16|0,k=Q,Ja(k),s=ga(s)|0,B=NDe(s,+C[l>>3],+C[c>>3],+C[f>>3],+C[d>>3],+C[m>>3],+C[B>>3])|0,Va(k),E=Q,B|0}function NDe(s,l,c,f,d,m,B){s=s|0,l=+l,c=+c,f=+f,d=+d,m=+m,B=+B;var Q=0;return Q=Sl(LDe()|0)|0,l=+KA(l),c=+KA(c),f=+KA(f),d=+KA(d),m=+KA(m),Fs(0,Q|0,s|0,+l,+c,+f,+d,+m,+ +KA(B))|0}function LDe(){var s=0;return o[7624]|0||(ODe(9172),s=7624,n[s>>2]=1,n[s+4>>2]=0),9172}function ODe(s){s=s|0,Pl(s,MDe()|0,6)}function MDe(){return 1112}function UDe(s){s=s|0,Ip(s)}function _De(s){s=s|0,J9(s+24|0),V9(s+16|0)}function J9(s){s=s|0,qDe(s)}function V9(s){s=s|0,HDe(s)}function HDe(s){s=s|0;var l=0,c=0;if(l=n[s>>2]|0,l|0)do c=l,l=n[l>>2]|0,pt(c);while((l|0)!=0);n[s>>2]=0}function qDe(s){s=s|0;var l=0,c=0;if(l=n[s>>2]|0,l|0)do c=l,l=n[l>>2]|0,pt(c);while((l|0)!=0);n[s>>2]=0}function Ip(s){s=s|0;var l=0;n[s+16>>2]=0,n[s+20>>2]=0,l=s+24|0,n[l>>2]=0,n[s+28>>2]=l,n[s+36>>2]=0,o[s+40>>0]=0,o[s+41>>0]=0}function jDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],GDe(s,c,d,0),E=f}function GDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=DF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=WDe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,YDe(m,f)|0,f),E=d}function DF(){var s=0,l=0;if(o[7640]|0||(X9(9232),Zt(26,9232,_|0)|0,l=7640,n[l>>2]=1,n[l+4>>2]=0),!(br(9232)|0)){s=9232,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));X9(9232)}return 9232}function WDe(s){return s=s|0,0}function YDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=DF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],z9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(KDe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function z9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function KDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=JDe(s)|0,m>>>0<d>>>0)Jr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,VDe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],z9(m,f,c),n[k>>2]=(n[k>>2]|0)+12,zDe(s,Q),XDe(Q),E=M;return}}function JDe(s){return s=s|0,357913941}function VDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function zDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function XDe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function X9(s){s=s|0,eSe(s)}function ZDe(s){s=s|0,$De(s+24|0)}function $De(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function eSe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,1,l,tSe()|0,3),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function tSe(){return 1144}function rSe(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0;var m=0,B=0,Q=0,k=0;m=E,E=E+16|0,B=m+8|0,Q=m,k=nSe(s)|0,s=n[k+4>>2]|0,n[Q>>2]=n[k>>2],n[Q+4>>2]=s,n[B>>2]=n[Q>>2],n[B+4>>2]=n[Q+4>>2],iSe(l,B,c,f,d),E=m}function nSe(s){return s=s|0,(n[(DF()|0)+24>>2]|0)+(s*12|0)|0}function iSe(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0;var m=0,B=0,Q=0,k=0,M=0;M=E,E=E+16|0,B=M+2|0,Q=M+1|0,k=M,m=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(m=n[(n[s>>2]|0)+m>>2]|0),Ru(B,c),c=+Tu(B,c),Ru(Q,f),f=+Tu(Q,f),zA(k,d),k=XA(k,d)|0,f7[m&1](s,c,f,k),E=M}function Ru(s,l){s=s|0,l=+l}function Tu(s,l){return s=s|0,l=+l,+ +oSe(l)}function zA(s,l){s=s|0,l=l|0}function XA(s,l){return s=s|0,l=l|0,sSe(l)|0}function sSe(s){return s=s|0,s|0}function oSe(s){return s=+s,+s}function aSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],lSe(s,c,d,1),E=f}function lSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=SF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=cSe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,uSe(m,f)|0,f),E=d}function SF(){var s=0,l=0;if(o[7648]|0||($9(9268),Zt(27,9268,_|0)|0,l=7648,n[l>>2]=1,n[l+4>>2]=0),!(br(9268)|0)){s=9268,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));$9(9268)}return 9268}function cSe(s){return s=s|0,0}function uSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=SF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Z9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(ASe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function Z9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function ASe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=fSe(s)|0,m>>>0<d>>>0)Jr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,pSe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],Z9(m,f,c),n[k>>2]=(n[k>>2]|0)+12,hSe(s,Q),gSe(Q),E=M;return}}function fSe(s){return s=s|0,357913941}function pSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function hSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function gSe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function $9(s){s=s|0,ySe(s)}function dSe(s){s=s|0,mSe(s+24|0)}function mSe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function ySe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,4,l,ESe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function ESe(){return 1160}function CSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=E,E=E+16|0,f=c+8|0,d=c,m=ISe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=wSe(l,f)|0,E=c,l|0}function ISe(s){return s=s|0,(n[(SF()|0)+24>>2]|0)+(s*12|0)|0}function wSe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),e5(bg[c&31](s)|0)|0}function e5(s){return s=s|0,s&1|0}function BSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],vSe(s,c,d,0),E=f}function vSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=PF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=DSe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,SSe(m,f)|0,f),E=d}function PF(){var s=0,l=0;if(o[7656]|0||(r5(9304),Zt(28,9304,_|0)|0,l=7656,n[l>>2]=1,n[l+4>>2]=0),!(br(9304)|0)){s=9304,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));r5(9304)}return 9304}function DSe(s){return s=s|0,0}function SSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=PF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],t5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(PSe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function t5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function PSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=xSe(s)|0,m>>>0<d>>>0)Jr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,bSe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],t5(m,f,c),n[k>>2]=(n[k>>2]|0)+12,QSe(s,Q),kSe(Q),E=M;return}}function xSe(s){return s=s|0,357913941}function bSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function QSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function kSe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function r5(s){s=s|0,TSe(s)}function FSe(s){s=s|0,RSe(s+24|0)}function RSe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function TSe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,5,l,NSe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function NSe(){return 1164}function LSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=E,E=E+16|0,d=f+8|0,m=f,B=OSe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],MSe(l,d,c),E=f}function OSe(s){return s=s|0,(n[(PF()|0)+24>>2]|0)+(s*12|0)|0}function MSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=E,E=E+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),wp(d,c),c=Bp(d,c)|0,ef[f&31](s,c),vp(d),E=m}function wp(s,l){s=s|0,l=l|0,USe(s,l)}function Bp(s,l){return s=s|0,l=l|0,s|0}function vp(s){s=s|0,HA(s)}function USe(s,l){s=s|0,l=l|0,xF(s,l)}function xF(s,l){s=s|0,l=l|0,n[s>>2]=l}function _Se(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],HSe(s,c,d,0),E=f}function HSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=bF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=qSe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,jSe(m,f)|0,f),E=d}function bF(){var s=0,l=0;if(o[7664]|0||(i5(9340),Zt(29,9340,_|0)|0,l=7664,n[l>>2]=1,n[l+4>>2]=0),!(br(9340)|0)){s=9340,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));i5(9340)}return 9340}function qSe(s){return s=s|0,0}function jSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=bF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],n5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(GSe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function n5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function GSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=WSe(s)|0,m>>>0<d>>>0)Jr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,YSe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],n5(m,f,c),n[k>>2]=(n[k>>2]|0)+12,KSe(s,Q),JSe(Q),E=M;return}}function WSe(s){return s=s|0,357913941}function YSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function KSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function JSe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function i5(s){s=s|0,XSe(s)}function VSe(s){s=s|0,zSe(s+24|0)}function zSe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function XSe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,4,l,ZSe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function ZSe(){return 1180}function $Se(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=ePe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=tPe(l,d,c)|0,E=f,c|0}function ePe(s){return s=s|0,(n[(bF()|0)+24>>2]|0)+(s*12|0)|0}function tPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;return m=E,E=E+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),Ig(d,c),d=wg(d,c)|0,d=Mv(DR[f&15](s,d)|0)|0,E=m,d|0}function Ig(s,l){s=s|0,l=l|0}function wg(s,l){return s=s|0,l=l|0,rPe(l)|0}function Mv(s){return s=s|0,s|0}function rPe(s){return s=s|0,s|0}function nPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],iPe(s,c,d,0),E=f}function iPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=QF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=sPe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,oPe(m,f)|0,f),E=d}function QF(){var s=0,l=0;if(o[7672]|0||(o5(9376),Zt(30,9376,_|0)|0,l=7672,n[l>>2]=1,n[l+4>>2]=0),!(br(9376)|0)){s=9376,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));o5(9376)}return 9376}function sPe(s){return s=s|0,0}function oPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=QF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],s5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(aPe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function s5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function aPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=lPe(s)|0,m>>>0<d>>>0)Jr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,cPe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],s5(m,f,c),n[k>>2]=(n[k>>2]|0)+12,uPe(s,Q),APe(Q),E=M;return}}function lPe(s){return s=s|0,357913941}function cPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function uPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function APe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function o5(s){s=s|0,hPe(s)}function fPe(s){s=s|0,pPe(s+24|0)}function pPe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function hPe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,5,l,a5()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function a5(){return 1196}function gPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=E,E=E+16|0,f=c+8|0,d=c,m=dPe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=mPe(l,f)|0,E=c,l|0}function dPe(s){return s=s|0,(n[(QF()|0)+24>>2]|0)+(s*12|0)|0}function mPe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),Mv(bg[c&31](s)|0)|0}function yPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],EPe(s,c,d,1),E=f}function EPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=kF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=CPe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,IPe(m,f)|0,f),E=d}function kF(){var s=0,l=0;if(o[7680]|0||(c5(9412),Zt(31,9412,_|0)|0,l=7680,n[l>>2]=1,n[l+4>>2]=0),!(br(9412)|0)){s=9412,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));c5(9412)}return 9412}function CPe(s){return s=s|0,0}function IPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=kF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],l5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(wPe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function l5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function wPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=BPe(s)|0,m>>>0<d>>>0)Jr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,vPe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],l5(m,f,c),n[k>>2]=(n[k>>2]|0)+12,DPe(s,Q),SPe(Q),E=M;return}}function BPe(s){return s=s|0,357913941}function vPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function DPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function SPe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function c5(s){s=s|0,bPe(s)}function PPe(s){s=s|0,xPe(s+24|0)}function xPe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function bPe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,6,l,u5()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function u5(){return 1200}function QPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=E,E=E+16|0,f=c+8|0,d=c,m=kPe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=FPe(l,f)|0,E=c,l|0}function kPe(s){return s=s|0,(n[(kF()|0)+24>>2]|0)+(s*12|0)|0}function FPe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),Uv(bg[c&31](s)|0)|0}function Uv(s){return s=s|0,s|0}function RPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],TPe(s,c,d,0),E=f}function TPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=FF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=NPe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,LPe(m,f)|0,f),E=d}function FF(){var s=0,l=0;if(o[7688]|0||(f5(9448),Zt(32,9448,_|0)|0,l=7688,n[l>>2]=1,n[l+4>>2]=0),!(br(9448)|0)){s=9448,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));f5(9448)}return 9448}function NPe(s){return s=s|0,0}function LPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=FF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],A5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(OPe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function A5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function OPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=MPe(s)|0,m>>>0<d>>>0)Jr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,UPe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],A5(m,f,c),n[k>>2]=(n[k>>2]|0)+12,_Pe(s,Q),HPe(Q),E=M;return}}function MPe(s){return s=s|0,357913941}function UPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function _Pe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function HPe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function f5(s){s=s|0,GPe(s)}function qPe(s){s=s|0,jPe(s+24|0)}function jPe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function GPe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,6,l,p5()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function p5(){return 1204}function WPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=E,E=E+16|0,d=f+8|0,m=f,B=YPe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],KPe(l,d,c),E=f}function YPe(s){return s=s|0,(n[(FF()|0)+24>>2]|0)+(s*12|0)|0}function KPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=E,E=E+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),RF(d,c),d=TF(d,c)|0,ef[f&31](s,d),E=m}function RF(s,l){s=s|0,l=l|0}function TF(s,l){return s=s|0,l=l|0,JPe(l)|0}function JPe(s){return s=s|0,s|0}function VPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],zPe(s,c,d,0),E=f}function zPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=NF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=XPe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,ZPe(m,f)|0,f),E=d}function NF(){var s=0,l=0;if(o[7696]|0||(g5(9484),Zt(33,9484,_|0)|0,l=7696,n[l>>2]=1,n[l+4>>2]=0),!(br(9484)|0)){s=9484,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));g5(9484)}return 9484}function XPe(s){return s=s|0,0}function ZPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=NF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],h5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):($Pe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function h5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function $Pe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=exe(s)|0,m>>>0<d>>>0)Jr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,txe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],h5(m,f,c),n[k>>2]=(n[k>>2]|0)+12,rxe(s,Q),nxe(Q),E=M;return}}function exe(s){return s=s|0,357913941}function txe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function rxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function nxe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function g5(s){s=s|0,oxe(s)}function ixe(s){s=s|0,sxe(s+24|0)}function sxe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function oxe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,1,l,axe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function axe(){return 1212}function lxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0;d=E,E=E+16|0,m=d+8|0,B=d,Q=cxe(s)|0,s=n[Q+4>>2]|0,n[B>>2]=n[Q>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],uxe(l,m,c,f),E=d}function cxe(s){return s=s|0,(n[(NF()|0)+24>>2]|0)+(s*12|0)|0}function uxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0;Q=E,E=E+16|0,m=Q+1|0,B=Q,d=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(d=n[(n[s>>2]|0)+d>>2]|0),RF(m,c),m=TF(m,c)|0,Ig(B,f),B=wg(B,f)|0,xI[d&15](s,m,B),E=Q}function Axe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],fxe(s,c,d,1),E=f}function fxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=LF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=pxe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,hxe(m,f)|0,f),E=d}function LF(){var s=0,l=0;if(o[7704]|0||(m5(9520),Zt(34,9520,_|0)|0,l=7704,n[l>>2]=1,n[l+4>>2]=0),!(br(9520)|0)){s=9520,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));m5(9520)}return 9520}function pxe(s){return s=s|0,0}function hxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=LF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],d5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(gxe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function d5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function gxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=dxe(s)|0,m>>>0<d>>>0)Jr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,mxe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],d5(m,f,c),n[k>>2]=(n[k>>2]|0)+12,yxe(s,Q),Exe(Q),E=M;return}}function dxe(s){return s=s|0,357913941}function mxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function yxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Exe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function m5(s){s=s|0,wxe(s)}function Cxe(s){s=s|0,Ixe(s+24|0)}function Ixe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function wxe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,1,l,Bxe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Bxe(){return 1224}function vxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;return d=E,E=E+16|0,m=d+8|0,B=d,Q=Dxe(s)|0,s=n[Q+4>>2]|0,n[B>>2]=n[Q>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],f=+Sxe(l,m,c),E=d,+f}function Dxe(s){return s=s|0,(n[(LF()|0)+24>>2]|0)+(s*12|0)|0}function Sxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return m=E,E=E+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),zA(d,c),d=XA(d,c)|0,B=+yF(+h7[f&7](s,d)),E=m,+B}function Pxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],xxe(s,c,d,1),E=f}function xxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=OF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=bxe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,Qxe(m,f)|0,f),E=d}function OF(){var s=0,l=0;if(o[7712]|0||(E5(9556),Zt(35,9556,_|0)|0,l=7712,n[l>>2]=1,n[l+4>>2]=0),!(br(9556)|0)){s=9556,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));E5(9556)}return 9556}function bxe(s){return s=s|0,0}function Qxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=OF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],y5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(kxe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function y5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function kxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Fxe(s)|0,m>>>0<d>>>0)Jr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,Rxe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],y5(m,f,c),n[k>>2]=(n[k>>2]|0)+12,Txe(s,Q),Nxe(Q),E=M;return}}function Fxe(s){return s=s|0,357913941}function Rxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function Txe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Nxe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function E5(s){s=s|0,Mxe(s)}function Lxe(s){s=s|0,Oxe(s+24|0)}function Oxe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function Mxe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,5,l,Uxe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Uxe(){return 1232}function _xe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=Hxe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=+qxe(l,d),E=f,+c}function Hxe(s){return s=s|0,(n[(OF()|0)+24>>2]|0)+(s*12|0)|0}function qxe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),+ +yF(+p7[c&15](s))}function jxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Gxe(s,c,d,1),E=f}function Gxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=MF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Wxe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,Yxe(m,f)|0,f),E=d}function MF(){var s=0,l=0;if(o[7720]|0||(I5(9592),Zt(36,9592,_|0)|0,l=7720,n[l>>2]=1,n[l+4>>2]=0),!(br(9592)|0)){s=9592,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));I5(9592)}return 9592}function Wxe(s){return s=s|0,0}function Yxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=MF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],C5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Kxe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function C5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Kxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Jxe(s)|0,m>>>0<d>>>0)Jr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,Vxe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],C5(m,f,c),n[k>>2]=(n[k>>2]|0)+12,zxe(s,Q),Xxe(Q),E=M;return}}function Jxe(s){return s=s|0,357913941}function Vxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function zxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Xxe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function I5(s){s=s|0,ebe(s)}function Zxe(s){s=s|0,$xe(s+24|0)}function $xe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function ebe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,7,l,tbe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function tbe(){return 1276}function rbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=E,E=E+16|0,f=c+8|0,d=c,m=nbe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=ibe(l,f)|0,E=c,l|0}function nbe(s){return s=s|0,(n[(MF()|0)+24>>2]|0)+(s*12|0)|0}function ibe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;return d=E,E=E+16|0,f=d,c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),ef[c&31](f,s),f=w5(f)|0,E=d,f|0}function w5(s){s=s|0;var l=0,c=0,f=0,d=0;return d=E,E=E+32|0,l=d+12|0,c=d,f=IF(B5()|0)|0,f?(wF(l,f),BF(c,l),sbe(s,c),s=vF(l)|0):s=obe(s)|0,E=d,s|0}function B5(){var s=0;return o[7736]|0||(dbe(9640),Zt(25,9640,_|0)|0,s=7736,n[s>>2]=1,n[s+4>>2]=0),9640}function sbe(s,l){s=s|0,l=l|0,ube(l,s,s+8|0)|0}function obe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,Q=0;return c=E,E=E+16|0,d=c+4|0,B=c,f=Ka(8)|0,l=f,Q=Gt(16)|0,n[Q>>2]=n[s>>2],n[Q+4>>2]=n[s+4>>2],n[Q+8>>2]=n[s+8>>2],n[Q+12>>2]=n[s+12>>2],m=l+4|0,n[m>>2]=Q,s=Gt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],UF(s,m,d),n[f>>2]=s,E=c,l|0}function UF(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Gt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1244,n[c+12>>2]=l,n[s+4>>2]=c}function abe(s){s=s|0,Km(s),pt(s)}function lbe(s){s=s|0,s=n[s+12>>2]|0,s|0&&pt(s)}function cbe(s){s=s|0,pt(s)}function ube(s,l,c){return s=s|0,l=l|0,c=c|0,l=Abe(n[s>>2]|0,l,c)|0,c=s+4|0,n[(n[c>>2]|0)+8>>2]=l,n[(n[c>>2]|0)+8>>2]|0}function Abe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;return f=E,E=E+16|0,d=f,Ja(d),s=ga(s)|0,c=fbe(s,n[l>>2]|0,+C[c>>3])|0,Va(d),E=f,c|0}function fbe(s,l,c){s=s|0,l=l|0,c=+c;var f=0;return f=Sl(pbe()|0)|0,l=mF(l)|0,dl(0,f|0,s|0,l|0,+ +KA(c))|0}function pbe(){var s=0;return o[7728]|0||(hbe(9628),s=7728,n[s>>2]=1,n[s+4>>2]=0),9628}function hbe(s){s=s|0,Pl(s,gbe()|0,2)}function gbe(){return 1264}function dbe(s){s=s|0,Ip(s)}function mbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ybe(s,c,d,1),E=f}function ybe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=_F()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Ebe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,Cbe(m,f)|0,f),E=d}function _F(){var s=0,l=0;if(o[7744]|0||(D5(9684),Zt(37,9684,_|0)|0,l=7744,n[l>>2]=1,n[l+4>>2]=0),!(br(9684)|0)){s=9684,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));D5(9684)}return 9684}function Ebe(s){return s=s|0,0}function Cbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=_F()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],v5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Ibe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function v5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Ibe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=wbe(s)|0,m>>>0<d>>>0)Jr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,Bbe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],v5(m,f,c),n[k>>2]=(n[k>>2]|0)+12,vbe(s,Q),Dbe(Q),E=M;return}}function wbe(s){return s=s|0,357913941}function Bbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function vbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Dbe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function D5(s){s=s|0,xbe(s)}function Sbe(s){s=s|0,Pbe(s+24|0)}function Pbe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function xbe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,5,l,bbe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function bbe(){return 1280}function Qbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=kbe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=Fbe(l,d,c)|0,E=f,c|0}function kbe(s){return s=s|0,(n[(_F()|0)+24>>2]|0)+(s*12|0)|0}function Fbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return B=E,E=E+32|0,d=B,m=B+16|0,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),zA(m,c),m=XA(m,c)|0,xI[f&15](d,s,m),m=w5(d)|0,E=B,m|0}function Rbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Tbe(s,c,d,1),E=f}function Tbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=HF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Nbe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,Lbe(m,f)|0,f),E=d}function HF(){var s=0,l=0;if(o[7752]|0||(P5(9720),Zt(38,9720,_|0)|0,l=7752,n[l>>2]=1,n[l+4>>2]=0),!(br(9720)|0)){s=9720,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));P5(9720)}return 9720}function Nbe(s){return s=s|0,0}function Lbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=HF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],S5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Obe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function S5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Obe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Mbe(s)|0,m>>>0<d>>>0)Jr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,Ube(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],S5(m,f,c),n[k>>2]=(n[k>>2]|0)+12,_be(s,Q),Hbe(Q),E=M;return}}function Mbe(s){return s=s|0,357913941}function Ube(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function _be(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Hbe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function P5(s){s=s|0,Gbe(s)}function qbe(s){s=s|0,jbe(s+24|0)}function jbe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function Gbe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,8,l,Wbe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Wbe(){return 1288}function Ybe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=E,E=E+16|0,f=c+8|0,d=c,m=Kbe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=Jbe(l,f)|0,E=c,l|0}function Kbe(s){return s=s|0,(n[(HF()|0)+24>>2]|0)+(s*12|0)|0}function Jbe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),q9(bg[c&31](s)|0)|0}function Vbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],zbe(s,c,d,0),E=f}function zbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=qF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Xbe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,Zbe(m,f)|0,f),E=d}function qF(){var s=0,l=0;if(o[7760]|0||(b5(9756),Zt(39,9756,_|0)|0,l=7760,n[l>>2]=1,n[l+4>>2]=0),!(br(9756)|0)){s=9756,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));b5(9756)}return 9756}function Xbe(s){return s=s|0,0}function Zbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=qF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],x5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):($be(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function x5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function $be(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=eQe(s)|0,m>>>0<d>>>0)Jr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,tQe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],x5(m,f,c),n[k>>2]=(n[k>>2]|0)+12,rQe(s,Q),nQe(Q),E=M;return}}function eQe(s){return s=s|0,357913941}function tQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function rQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function nQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function b5(s){s=s|0,oQe(s)}function iQe(s){s=s|0,sQe(s+24|0)}function sQe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function oQe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,8,l,aQe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function aQe(){return 1292}function lQe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=0;f=E,E=E+16|0,d=f+8|0,m=f,B=cQe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],uQe(l,d,c),E=f}function cQe(s){return s=s|0,(n[(qF()|0)+24>>2]|0)+(s*12|0)|0}function uQe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0;m=E,E=E+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),Ru(d,c),c=+Tu(d,c),u7[f&31](s,c),E=m}function AQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],fQe(s,c,d,0),E=f}function fQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=jF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=pQe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,hQe(m,f)|0,f),E=d}function jF(){var s=0,l=0;if(o[7768]|0||(k5(9792),Zt(40,9792,_|0)|0,l=7768,n[l>>2]=1,n[l+4>>2]=0),!(br(9792)|0)){s=9792,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));k5(9792)}return 9792}function pQe(s){return s=s|0,0}function hQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=jF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Q5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(gQe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function Q5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function gQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=dQe(s)|0,m>>>0<d>>>0)Jr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,mQe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],Q5(m,f,c),n[k>>2]=(n[k>>2]|0)+12,yQe(s,Q),EQe(Q),E=M;return}}function dQe(s){return s=s|0,357913941}function mQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function yQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function EQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function k5(s){s=s|0,wQe(s)}function CQe(s){s=s|0,IQe(s+24|0)}function IQe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function wQe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,1,l,BQe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function BQe(){return 1300}function vQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f;var d=0,m=0,B=0,Q=0;d=E,E=E+16|0,m=d+8|0,B=d,Q=DQe(s)|0,s=n[Q+4>>2]|0,n[B>>2]=n[Q>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],SQe(l,m,c,f),E=d}function DQe(s){return s=s|0,(n[(jF()|0)+24>>2]|0)+(s*12|0)|0}function SQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f;var d=0,m=0,B=0,Q=0;Q=E,E=E+16|0,m=Q+1|0,B=Q,d=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(d=n[(n[s>>2]|0)+d>>2]|0),zA(m,c),m=XA(m,c)|0,Ru(B,f),f=+Tu(B,f),y7[d&15](s,m,f),E=Q}function PQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],xQe(s,c,d,0),E=f}function xQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=GF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=bQe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,QQe(m,f)|0,f),E=d}function GF(){var s=0,l=0;if(o[7776]|0||(R5(9828),Zt(41,9828,_|0)|0,l=7776,n[l>>2]=1,n[l+4>>2]=0),!(br(9828)|0)){s=9828,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));R5(9828)}return 9828}function bQe(s){return s=s|0,0}function QQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=GF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],F5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(kQe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function F5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function kQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=FQe(s)|0,m>>>0<d>>>0)Jr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,RQe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],F5(m,f,c),n[k>>2]=(n[k>>2]|0)+12,TQe(s,Q),NQe(Q),E=M;return}}function FQe(s){return s=s|0,357913941}function RQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function TQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function NQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function R5(s){s=s|0,MQe(s)}function LQe(s){s=s|0,OQe(s+24|0)}function OQe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function MQe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,7,l,UQe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function UQe(){return 1312}function _Qe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=E,E=E+16|0,d=f+8|0,m=f,B=HQe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],qQe(l,d,c),E=f}function HQe(s){return s=s|0,(n[(GF()|0)+24>>2]|0)+(s*12|0)|0}function qQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=E,E=E+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),zA(d,c),d=XA(d,c)|0,ef[f&31](s,d),E=m}function jQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],GQe(s,c,d,0),E=f}function GQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=WF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=WQe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,YQe(m,f)|0,f),E=d}function WF(){var s=0,l=0;if(o[7784]|0||(N5(9864),Zt(42,9864,_|0)|0,l=7784,n[l>>2]=1,n[l+4>>2]=0),!(br(9864)|0)){s=9864,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));N5(9864)}return 9864}function WQe(s){return s=s|0,0}function YQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=WF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],T5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(KQe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function T5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function KQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=JQe(s)|0,m>>>0<d>>>0)Jr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,VQe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],T5(m,f,c),n[k>>2]=(n[k>>2]|0)+12,zQe(s,Q),XQe(Q),E=M;return}}function JQe(s){return s=s|0,357913941}function VQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function zQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function XQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function N5(s){s=s|0,eke(s)}function ZQe(s){s=s|0,$Qe(s+24|0)}function $Qe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function eke(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,8,l,tke()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function tke(){return 1320}function rke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=E,E=E+16|0,d=f+8|0,m=f,B=nke(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ike(l,d,c),E=f}function nke(s){return s=s|0,(n[(WF()|0)+24>>2]|0)+(s*12|0)|0}function ike(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=E,E=E+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),ske(d,c),d=oke(d,c)|0,ef[f&31](s,d),E=m}function ske(s,l){s=s|0,l=l|0}function oke(s,l){return s=s|0,l=l|0,ake(l)|0}function ake(s){return s=s|0,s|0}function lke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],cke(s,c,d,0),E=f}function cke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=YF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=uke(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,Ake(m,f)|0,f),E=d}function YF(){var s=0,l=0;if(o[7792]|0||(O5(9900),Zt(43,9900,_|0)|0,l=7792,n[l>>2]=1,n[l+4>>2]=0),!(br(9900)|0)){s=9900,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));O5(9900)}return 9900}function uke(s){return s=s|0,0}function Ake(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=YF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],L5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(fke(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function L5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function fke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=pke(s)|0,m>>>0<d>>>0)Jr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,hke(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],L5(m,f,c),n[k>>2]=(n[k>>2]|0)+12,gke(s,Q),dke(Q),E=M;return}}function pke(s){return s=s|0,357913941}function hke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function gke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function dke(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function O5(s){s=s|0,Eke(s)}function mke(s){s=s|0,yke(s+24|0)}function yke(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function Eke(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,22,l,Cke()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Cke(){return 1344}function Ike(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;c=E,E=E+16|0,f=c+8|0,d=c,m=wke(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],Bke(l,f),E=c}function wke(s){return s=s|0,(n[(YF()|0)+24>>2]|0)+(s*12|0)|0}function Bke(s,l){s=s|0,l=l|0;var c=0;c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),$A[c&127](s)}function vke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=KF()|0,s=Dke(c)|0,un(m,l,d,s,Ske(c,f)|0,f)}function KF(){var s=0,l=0;if(o[7800]|0||(U5(9936),Zt(44,9936,_|0)|0,l=7800,n[l>>2]=1,n[l+4>>2]=0),!(br(9936)|0)){s=9936,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));U5(9936)}return 9936}function Dke(s){return s=s|0,s|0}function Ske(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return Q=E,E=E+16|0,d=Q,m=Q+4|0,n[d>>2]=s,k=KF()|0,B=k+24|0,l=Ar(l,4)|0,n[m>>2]=l,c=k+28|0,f=n[c>>2]|0,f>>>0<(n[k+32>>2]|0)>>>0?(M5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(Pke(B,d,m),l=n[c>>2]|0),E=Q,(l-(n[B>>2]|0)>>3)+-1|0}function M5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function Pke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;if(Q=E,E=E+32|0,d=Q,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=xke(s)|0,f>>>0<B>>>0)Jr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,M=O>>2,bke(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-k>>3,s+8|0),B=d+8|0,M5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,Qke(s,d),kke(d),E=Q;return}}function xke(s){return s=s|0,536870911}function bke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Gt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function Qke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function kke(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&pt(s)}function U5(s){s=s|0,Tke(s)}function Fke(s){s=s|0,Rke(s+24|0)}function Rke(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function Tke(s){s=s|0;var l=0;l=Gr()|0,Wr(s,1,23,l,p5()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Nke(s,l){s=s|0,l=l|0,Oke(n[(Lke(s)|0)>>2]|0,l)}function Lke(s){return s=s|0,(n[(KF()|0)+24>>2]|0)+(s<<3)|0}function Oke(s,l){s=s|0,l=l|0;var c=0,f=0;c=E,E=E+16|0,f=c,RF(f,l),l=TF(f,l)|0,$A[s&127](l),E=c}function Mke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=JF()|0,s=Uke(c)|0,un(m,l,d,s,_ke(c,f)|0,f)}function JF(){var s=0,l=0;if(o[7808]|0||(H5(9972),Zt(45,9972,_|0)|0,l=7808,n[l>>2]=1,n[l+4>>2]=0),!(br(9972)|0)){s=9972,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));H5(9972)}return 9972}function Uke(s){return s=s|0,s|0}function _ke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return Q=E,E=E+16|0,d=Q,m=Q+4|0,n[d>>2]=s,k=JF()|0,B=k+24|0,l=Ar(l,4)|0,n[m>>2]=l,c=k+28|0,f=n[c>>2]|0,f>>>0<(n[k+32>>2]|0)>>>0?(_5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(Hke(B,d,m),l=n[c>>2]|0),E=Q,(l-(n[B>>2]|0)>>3)+-1|0}function _5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function Hke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;if(Q=E,E=E+32|0,d=Q,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=qke(s)|0,f>>>0<B>>>0)Jr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,M=O>>2,jke(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-k>>3,s+8|0),B=d+8|0,_5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,Gke(s,d),Wke(d),E=Q;return}}function qke(s){return s=s|0,536870911}function jke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Gt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function Gke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Wke(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&pt(s)}function H5(s){s=s|0,Jke(s)}function Yke(s){s=s|0,Kke(s+24|0)}function Kke(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function Jke(s){s=s|0;var l=0;l=Gr()|0,Wr(s,1,9,l,Vke()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Vke(){return 1348}function zke(s,l){return s=s|0,l=l|0,Zke(n[(Xke(s)|0)>>2]|0,l)|0}function Xke(s){return s=s|0,(n[(JF()|0)+24>>2]|0)+(s<<3)|0}function Zke(s,l){s=s|0,l=l|0;var c=0,f=0;return c=E,E=E+16|0,f=c,q5(f,l),l=j5(f,l)|0,l=Mv(bg[s&31](l)|0)|0,E=c,l|0}function q5(s,l){s=s|0,l=l|0}function j5(s,l){return s=s|0,l=l|0,$ke(l)|0}function $ke(s){return s=s|0,s|0}function eFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=VF()|0,s=tFe(c)|0,un(m,l,d,s,rFe(c,f)|0,f)}function VF(){var s=0,l=0;if(o[7816]|0||(W5(10008),Zt(46,10008,_|0)|0,l=7816,n[l>>2]=1,n[l+4>>2]=0),!(br(10008)|0)){s=10008,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));W5(10008)}return 10008}function tFe(s){return s=s|0,s|0}function rFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return Q=E,E=E+16|0,d=Q,m=Q+4|0,n[d>>2]=s,k=VF()|0,B=k+24|0,l=Ar(l,4)|0,n[m>>2]=l,c=k+28|0,f=n[c>>2]|0,f>>>0<(n[k+32>>2]|0)>>>0?(G5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(nFe(B,d,m),l=n[c>>2]|0),E=Q,(l-(n[B>>2]|0)>>3)+-1|0}function G5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function nFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;if(Q=E,E=E+32|0,d=Q,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=iFe(s)|0,f>>>0<B>>>0)Jr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,M=O>>2,sFe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-k>>3,s+8|0),B=d+8|0,G5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,oFe(s,d),aFe(d),E=Q;return}}function iFe(s){return s=s|0,536870911}function sFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Gt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function oFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function aFe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&pt(s)}function W5(s){s=s|0,uFe(s)}function lFe(s){s=s|0,cFe(s+24|0)}function cFe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function uFe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,1,15,l,a5()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function AFe(s){return s=s|0,pFe(n[(fFe(s)|0)>>2]|0)|0}function fFe(s){return s=s|0,(n[(VF()|0)+24>>2]|0)+(s<<3)|0}function pFe(s){return s=s|0,Mv($v[s&7]()|0)|0}function hFe(){var s=0;return o[7832]|0||(wFe(10052),Zt(25,10052,_|0)|0,s=7832,n[s>>2]=1,n[s+4>>2]=0),10052}function gFe(s,l){s=s|0,l=l|0,n[s>>2]=dFe()|0,n[s+4>>2]=mFe()|0,n[s+12>>2]=l,n[s+8>>2]=yFe()|0,n[s+32>>2]=2}function dFe(){return 11709}function mFe(){return 1188}function yFe(){return _v()|0}function EFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(Dp(f,896)|0)==512?c|0&&(CFe(c),pt(c)):l|0&&(bu(l),pt(l))}function Dp(s,l){return s=s|0,l=l|0,l&s|0}function CFe(s){s=s|0,s=n[s+4>>2]|0,s|0&&Pp(s)}function _v(){var s=0;return o[7824]|0||(n[2511]=IFe()|0,n[2512]=0,s=7824,n[s>>2]=1,n[s+4>>2]=0),10044}function IFe(){return 0}function wFe(s){s=s|0,Ip(s)}function BFe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0;l=E,E=E+32|0,c=l+24|0,m=l+16|0,d=l+8|0,f=l,vFe(s,4827),DFe(s,4834,3)|0,SFe(s,3682,47)|0,n[m>>2]=9,n[m+4>>2]=0,n[c>>2]=n[m>>2],n[c+4>>2]=n[m+4>>2],PFe(s,4841,c)|0,n[d>>2]=1,n[d+4>>2]=0,n[c>>2]=n[d>>2],n[c+4>>2]=n[d+4>>2],xFe(s,4871,c)|0,n[f>>2]=10,n[f+4>>2]=0,n[c>>2]=n[f>>2],n[c+4>>2]=n[f+4>>2],bFe(s,4891,c)|0,E=l}function vFe(s,l){s=s|0,l=l|0;var c=0;c=aTe()|0,n[s>>2]=c,lTe(c,l),Sp(n[s>>2]|0)}function DFe(s,l,c){return s=s|0,l=l|0,c=c|0,WRe(s,cn(l)|0,c,0),s|0}function SFe(s,l,c){return s=s|0,l=l|0,c=c|0,QRe(s,cn(l)|0,c,0),s|0}function PFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ARe(s,l,d),E=f,s|0}function xFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],YFe(s,l,d),E=f,s|0}function bFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],QFe(s,l,d),E=f,s|0}function QFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],kFe(s,c,d,1),E=f}function kFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=zF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=FFe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,RFe(m,f)|0,f),E=d}function zF(){var s=0,l=0;if(o[7840]|0||(K5(10100),Zt(48,10100,_|0)|0,l=7840,n[l>>2]=1,n[l+4>>2]=0),!(br(10100)|0)){s=10100,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));K5(10100)}return 10100}function FFe(s){return s=s|0,0}function RFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=zF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Y5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(TFe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function Y5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function TFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=NFe(s)|0,m>>>0<d>>>0)Jr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,LFe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],Y5(m,f,c),n[k>>2]=(n[k>>2]|0)+12,OFe(s,Q),MFe(Q),E=M;return}}function NFe(s){return s=s|0,357913941}function LFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function OFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function MFe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function K5(s){s=s|0,HFe(s)}function UFe(s){s=s|0,_Fe(s+24|0)}function _Fe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function HFe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,6,l,qFe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function qFe(){return 1364}function jFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=GFe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=WFe(l,d,c)|0,E=f,c|0}function GFe(s){return s=s|0,(n[(zF()|0)+24>>2]|0)+(s*12|0)|0}function WFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;return m=E,E=E+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),zA(d,c),d=XA(d,c)|0,d=e5(DR[f&15](s,d)|0)|0,E=m,d|0}function YFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],KFe(s,c,d,0),E=f}function KFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=XF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=JFe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,VFe(m,f)|0,f),E=d}function XF(){var s=0,l=0;if(o[7848]|0||(V5(10136),Zt(49,10136,_|0)|0,l=7848,n[l>>2]=1,n[l+4>>2]=0),!(br(10136)|0)){s=10136,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));V5(10136)}return 10136}function JFe(s){return s=s|0,0}function VFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=XF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],J5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(zFe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function J5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function zFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=XFe(s)|0,m>>>0<d>>>0)Jr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,ZFe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],J5(m,f,c),n[k>>2]=(n[k>>2]|0)+12,$Fe(s,Q),eRe(Q),E=M;return}}function XFe(s){return s=s|0,357913941}function ZFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function $Fe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function eRe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function V5(s){s=s|0,nRe(s)}function tRe(s){s=s|0,rRe(s+24|0)}function rRe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function nRe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,9,l,iRe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function iRe(){return 1372}function sRe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=0;f=E,E=E+16|0,d=f+8|0,m=f,B=oRe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],aRe(l,d,c),E=f}function oRe(s){return s=s|0,(n[(XF()|0)+24>>2]|0)+(s*12|0)|0}function aRe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=$e;m=E,E=E+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),lRe(d,c),B=y(cRe(d,c)),c7[f&1](s,B),E=m}function lRe(s,l){s=s|0,l=+l}function cRe(s,l){return s=s|0,l=+l,y(uRe(l))}function uRe(s){return s=+s,y(s)}function ARe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],fRe(s,c,d,0),E=f}function fRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=ZF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=pRe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,hRe(m,f)|0,f),E=d}function ZF(){var s=0,l=0;if(o[7856]|0||(X5(10172),Zt(50,10172,_|0)|0,l=7856,n[l>>2]=1,n[l+4>>2]=0),!(br(10172)|0)){s=10172,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));X5(10172)}return 10172}function pRe(s){return s=s|0,0}function hRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=ZF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],z5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(gRe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function z5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function gRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=dRe(s)|0,m>>>0<d>>>0)Jr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,mRe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],z5(m,f,c),n[k>>2]=(n[k>>2]|0)+12,yRe(s,Q),ERe(Q),E=M;return}}function dRe(s){return s=s|0,357913941}function mRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function yRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function ERe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function X5(s){s=s|0,wRe(s)}function CRe(s){s=s|0,IRe(s+24|0)}function IRe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function wRe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,3,l,BRe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function BRe(){return 1380}function vRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0;d=E,E=E+16|0,m=d+8|0,B=d,Q=DRe(s)|0,s=n[Q+4>>2]|0,n[B>>2]=n[Q>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],SRe(l,m,c,f),E=d}function DRe(s){return s=s|0,(n[(ZF()|0)+24>>2]|0)+(s*12|0)|0}function SRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0;Q=E,E=E+16|0,m=Q+1|0,B=Q,d=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(d=n[(n[s>>2]|0)+d>>2]|0),zA(m,c),m=XA(m,c)|0,PRe(B,f),B=xRe(B,f)|0,xI[d&15](s,m,B),E=Q}function PRe(s,l){s=s|0,l=l|0}function xRe(s,l){return s=s|0,l=l|0,bRe(l)|0}function bRe(s){return s=s|0,(s|0)!=0|0}function QRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=$F()|0,s=kRe(c)|0,un(m,l,d,s,FRe(c,f)|0,f)}function $F(){var s=0,l=0;if(o[7864]|0||($5(10208),Zt(51,10208,_|0)|0,l=7864,n[l>>2]=1,n[l+4>>2]=0),!(br(10208)|0)){s=10208,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));$5(10208)}return 10208}function kRe(s){return s=s|0,s|0}function FRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return Q=E,E=E+16|0,d=Q,m=Q+4|0,n[d>>2]=s,k=$F()|0,B=k+24|0,l=Ar(l,4)|0,n[m>>2]=l,c=k+28|0,f=n[c>>2]|0,f>>>0<(n[k+32>>2]|0)>>>0?(Z5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(RRe(B,d,m),l=n[c>>2]|0),E=Q,(l-(n[B>>2]|0)>>3)+-1|0}function Z5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function RRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;if(Q=E,E=E+32|0,d=Q,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=TRe(s)|0,f>>>0<B>>>0)Jr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,M=O>>2,NRe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-k>>3,s+8|0),B=d+8|0,Z5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,LRe(s,d),ORe(d),E=Q;return}}function TRe(s){return s=s|0,536870911}function NRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Gt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function LRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function ORe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&pt(s)}function $5(s){s=s|0,_Re(s)}function MRe(s){s=s|0,URe(s+24|0)}function URe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function _Re(s){s=s|0;var l=0;l=Gr()|0,Wr(s,1,24,l,HRe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function HRe(){return 1392}function qRe(s,l){s=s|0,l=l|0,GRe(n[(jRe(s)|0)>>2]|0,l)}function jRe(s){return s=s|0,(n[($F()|0)+24>>2]|0)+(s<<3)|0}function GRe(s,l){s=s|0,l=l|0;var c=0,f=0;c=E,E=E+16|0,f=c,q5(f,l),l=j5(f,l)|0,$A[s&127](l),E=c}function WRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=eR()|0,s=YRe(c)|0,un(m,l,d,s,KRe(c,f)|0,f)}function eR(){var s=0,l=0;if(o[7872]|0||(tG(10244),Zt(52,10244,_|0)|0,l=7872,n[l>>2]=1,n[l+4>>2]=0),!(br(10244)|0)){s=10244,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));tG(10244)}return 10244}function YRe(s){return s=s|0,s|0}function KRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return Q=E,E=E+16|0,d=Q,m=Q+4|0,n[d>>2]=s,k=eR()|0,B=k+24|0,l=Ar(l,4)|0,n[m>>2]=l,c=k+28|0,f=n[c>>2]|0,f>>>0<(n[k+32>>2]|0)>>>0?(eG(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(JRe(B,d,m),l=n[c>>2]|0),E=Q,(l-(n[B>>2]|0)>>3)+-1|0}function eG(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function JRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;if(Q=E,E=E+32|0,d=Q,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=VRe(s)|0,f>>>0<B>>>0)Jr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,M=O>>2,zRe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-k>>3,s+8|0),B=d+8|0,eG(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,XRe(s,d),ZRe(d),E=Q;return}}function VRe(s){return s=s|0,536870911}function zRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Gt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function XRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function ZRe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&pt(s)}function tG(s){s=s|0,tTe(s)}function $Re(s){s=s|0,eTe(s+24|0)}function eTe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function tTe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,1,16,l,rTe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function rTe(){return 1400}function nTe(s){return s=s|0,sTe(n[(iTe(s)|0)>>2]|0)|0}function iTe(s){return s=s|0,(n[(eR()|0)+24>>2]|0)+(s<<3)|0}function sTe(s){return s=s|0,oTe($v[s&7]()|0)|0}function oTe(s){return s=s|0,s|0}function aTe(){var s=0;return o[7880]|0||(hTe(10280),Zt(25,10280,_|0)|0,s=7880,n[s>>2]=1,n[s+4>>2]=0),10280}function lTe(s,l){s=s|0,l=l|0,n[s>>2]=cTe()|0,n[s+4>>2]=uTe()|0,n[s+12>>2]=l,n[s+8>>2]=ATe()|0,n[s+32>>2]=4}function cTe(){return 11711}function uTe(){return 1356}function ATe(){return _v()|0}function fTe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(Dp(f,896)|0)==512?c|0&&(pTe(c),pt(c)):l|0&&(yg(l),pt(l))}function pTe(s){s=s|0,s=n[s+4>>2]|0,s|0&&Pp(s)}function hTe(s){s=s|0,Ip(s)}function gTe(s){s=s|0,dTe(s,4920),mTe(s)|0,yTe(s)|0}function dTe(s,l){s=s|0,l=l|0;var c=0;c=B5()|0,n[s>>2]=c,UTe(c,l),Sp(n[s>>2]|0)}function mTe(s){s=s|0;var l=0;return l=n[s>>2]|0,Bg(l,bTe()|0),s|0}function yTe(s){s=s|0;var l=0;return l=n[s>>2]|0,Bg(l,ETe()|0),s|0}function ETe(){var s=0;return o[7888]|0||(rG(10328),Zt(53,10328,_|0)|0,s=7888,n[s>>2]=1,n[s+4>>2]=0),br(10328)|0||rG(10328),10328}function Bg(s,l){s=s|0,l=l|0,un(s,0,l,0,0,0)}function rG(s){s=s|0,wTe(s),vg(s,10)}function CTe(s){s=s|0,ITe(s+24|0)}function ITe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function wTe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,5,1,l,STe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function BTe(s,l,c){s=s|0,l=l|0,c=+c,vTe(s,l,c)}function vg(s,l){s=s|0,l=l|0,n[s+20>>2]=l}function vTe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,m=f+8|0,Q=f+13|0,d=f,B=f+12|0,zA(Q,l),n[m>>2]=XA(Q,l)|0,Ru(B,c),C[d>>3]=+Tu(B,c),DTe(s,m,d),E=f}function DTe(s,l,c){s=s|0,l=l|0,c=c|0,W(s+8|0,n[l>>2]|0,+C[c>>3]),o[s+24>>0]=1}function STe(){return 1404}function PTe(s,l){return s=s|0,l=+l,xTe(s,l)|0}function xTe(s,l){s=s|0,l=+l;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return f=E,E=E+16|0,m=f+4|0,B=f+8|0,Q=f,d=Ka(8)|0,c=d,k=Gt(16)|0,zA(m,s),s=XA(m,s)|0,Ru(B,l),W(k,s,+Tu(B,l)),B=c+4|0,n[B>>2]=k,s=Gt(8)|0,B=n[B>>2]|0,n[Q>>2]=0,n[m>>2]=n[Q>>2],UF(s,B,m),n[d>>2]=s,E=f,c|0}function bTe(){var s=0;return o[7896]|0||(nG(10364),Zt(54,10364,_|0)|0,s=7896,n[s>>2]=1,n[s+4>>2]=0),br(10364)|0||nG(10364),10364}function nG(s){s=s|0,FTe(s),vg(s,55)}function QTe(s){s=s|0,kTe(s+24|0)}function kTe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function FTe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,5,4,l,LTe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function RTe(s){s=s|0,TTe(s)}function TTe(s){s=s|0,NTe(s)}function NTe(s){s=s|0,iG(s+8|0),o[s+24>>0]=1}function iG(s){s=s|0,n[s>>2]=0,C[s+8>>3]=0}function LTe(){return 1424}function OTe(){return MTe()|0}function MTe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0;return l=E,E=E+16|0,d=l+4|0,B=l,c=Ka(8)|0,s=c,f=Gt(16)|0,iG(f),m=s+4|0,n[m>>2]=f,f=Gt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],UF(f,m,d),n[c>>2]=f,E=l,s|0}function UTe(s,l){s=s|0,l=l|0,n[s>>2]=_Te()|0,n[s+4>>2]=HTe()|0,n[s+12>>2]=l,n[s+8>>2]=qTe()|0,n[s+32>>2]=5}function _Te(){return 11710}function HTe(){return 1416}function qTe(){return Hv()|0}function jTe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(Dp(f,896)|0)==512?c|0&&(GTe(c),pt(c)):l|0&&pt(l)}function GTe(s){s=s|0,s=n[s+4>>2]|0,s|0&&Pp(s)}function Hv(){var s=0;return o[7904]|0||(n[2600]=WTe()|0,n[2601]=0,s=7904,n[s>>2]=1,n[s+4>>2]=0),10400}function WTe(){return n[357]|0}function YTe(s){s=s|0,KTe(s,4926),JTe(s)|0}function KTe(s,l){s=s|0,l=l|0;var c=0;c=Y9()|0,n[s>>2]=c,sNe(c,l),Sp(n[s>>2]|0)}function JTe(s){s=s|0;var l=0;return l=n[s>>2]|0,Bg(l,VTe()|0),s|0}function VTe(){var s=0;return o[7912]|0||(sG(10412),Zt(56,10412,_|0)|0,s=7912,n[s>>2]=1,n[s+4>>2]=0),br(10412)|0||sG(10412),10412}function sG(s){s=s|0,ZTe(s),vg(s,57)}function zTe(s){s=s|0,XTe(s+24|0)}function XTe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function ZTe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,5,5,l,rNe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function $Te(s){s=s|0,eNe(s)}function eNe(s){s=s|0,tNe(s)}function tNe(s){s=s|0;var l=0,c=0;l=s+8|0,c=l+48|0;do n[l>>2]=0,l=l+4|0;while((l|0)<(c|0));o[s+56>>0]=1}function rNe(){return 1432}function nNe(){return iNe()|0}function iNe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0,Q=0;B=E,E=E+16|0,s=B+4|0,l=B,c=Ka(8)|0,f=c,d=Gt(48)|0,m=d,Q=m+48|0;do n[m>>2]=0,m=m+4|0;while((m|0)<(Q|0));return m=f+4|0,n[m>>2]=d,Q=Gt(8)|0,m=n[m>>2]|0,n[l>>2]=0,n[s>>2]=n[l>>2],K9(Q,m,s),n[c>>2]=Q,E=B,f|0}function sNe(s,l){s=s|0,l=l|0,n[s>>2]=oNe()|0,n[s+4>>2]=aNe()|0,n[s+12>>2]=l,n[s+8>>2]=lNe()|0,n[s+32>>2]=6}function oNe(){return 11704}function aNe(){return 1436}function lNe(){return Hv()|0}function cNe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(Dp(f,896)|0)==512?c|0&&(uNe(c),pt(c)):l|0&&pt(l)}function uNe(s){s=s|0,s=n[s+4>>2]|0,s|0&&Pp(s)}function ANe(s){s=s|0,fNe(s,4933),pNe(s)|0,hNe(s)|0}function fNe(s,l){s=s|0,l=l|0;var c=0;c=MNe()|0,n[s>>2]=c,UNe(c,l),Sp(n[s>>2]|0)}function pNe(s){s=s|0;var l=0;return l=n[s>>2]|0,Bg(l,xNe()|0),s|0}function hNe(s){s=s|0;var l=0;return l=n[s>>2]|0,Bg(l,gNe()|0),s|0}function gNe(){var s=0;return o[7920]|0||(oG(10452),Zt(58,10452,_|0)|0,s=7920,n[s>>2]=1,n[s+4>>2]=0),br(10452)|0||oG(10452),10452}function oG(s){s=s|0,yNe(s),vg(s,1)}function dNe(s){s=s|0,mNe(s+24|0)}function mNe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function yNe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,5,1,l,wNe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function ENe(s,l,c){s=s|0,l=+l,c=+c,CNe(s,l,c)}function CNe(s,l,c){s=s|0,l=+l,c=+c;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+32|0,m=f+8|0,Q=f+17|0,d=f,B=f+16|0,Ru(Q,l),C[m>>3]=+Tu(Q,l),Ru(B,c),C[d>>3]=+Tu(B,c),INe(s,m,d),E=f}function INe(s,l,c){s=s|0,l=l|0,c=c|0,aG(s+8|0,+C[l>>3],+C[c>>3]),o[s+24>>0]=1}function aG(s,l,c){s=s|0,l=+l,c=+c,C[s>>3]=l,C[s+8>>3]=c}function wNe(){return 1472}function BNe(s,l){return s=+s,l=+l,vNe(s,l)|0}function vNe(s,l){s=+s,l=+l;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return f=E,E=E+16|0,B=f+4|0,Q=f+8|0,k=f,d=Ka(8)|0,c=d,m=Gt(16)|0,Ru(B,s),s=+Tu(B,s),Ru(Q,l),aG(m,s,+Tu(Q,l)),Q=c+4|0,n[Q>>2]=m,m=Gt(8)|0,Q=n[Q>>2]|0,n[k>>2]=0,n[B>>2]=n[k>>2],lG(m,Q,B),n[d>>2]=m,E=f,c|0}function lG(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Gt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1452,n[c+12>>2]=l,n[s+4>>2]=c}function DNe(s){s=s|0,Km(s),pt(s)}function SNe(s){s=s|0,s=n[s+12>>2]|0,s|0&&pt(s)}function PNe(s){s=s|0,pt(s)}function xNe(){var s=0;return o[7928]|0||(cG(10488),Zt(59,10488,_|0)|0,s=7928,n[s>>2]=1,n[s+4>>2]=0),br(10488)|0||cG(10488),10488}function cG(s){s=s|0,kNe(s),vg(s,60)}function bNe(s){s=s|0,QNe(s+24|0)}function QNe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function kNe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,5,6,l,NNe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function FNe(s){s=s|0,RNe(s)}function RNe(s){s=s|0,TNe(s)}function TNe(s){s=s|0,uG(s+8|0),o[s+24>>0]=1}function uG(s){s=s|0,n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,n[s+12>>2]=0}function NNe(){return 1492}function LNe(){return ONe()|0}function ONe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0;return l=E,E=E+16|0,d=l+4|0,B=l,c=Ka(8)|0,s=c,f=Gt(16)|0,uG(f),m=s+4|0,n[m>>2]=f,f=Gt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],lG(f,m,d),n[c>>2]=f,E=l,s|0}function MNe(){var s=0;return o[7936]|0||(WNe(10524),Zt(25,10524,_|0)|0,s=7936,n[s>>2]=1,n[s+4>>2]=0),10524}function UNe(s,l){s=s|0,l=l|0,n[s>>2]=_Ne()|0,n[s+4>>2]=HNe()|0,n[s+12>>2]=l,n[s+8>>2]=qNe()|0,n[s+32>>2]=7}function _Ne(){return 11700}function HNe(){return 1484}function qNe(){return Hv()|0}function jNe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(Dp(f,896)|0)==512?c|0&&(GNe(c),pt(c)):l|0&&pt(l)}function GNe(s){s=s|0,s=n[s+4>>2]|0,s|0&&Pp(s)}function WNe(s){s=s|0,Ip(s)}function YNe(s,l,c){s=s|0,l=l|0,c=c|0,s=cn(l)|0,l=KNe(c)|0,c=JNe(c,0)|0,vLe(s,l,c,tR()|0,0)}function KNe(s){return s=s|0,s|0}function JNe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return Q=E,E=E+16|0,d=Q,m=Q+4|0,n[d>>2]=s,k=tR()|0,B=k+24|0,l=Ar(l,4)|0,n[m>>2]=l,c=k+28|0,f=n[c>>2]|0,f>>>0<(n[k+32>>2]|0)>>>0?(fG(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(tLe(B,d,m),l=n[c>>2]|0),E=Q,(l-(n[B>>2]|0)>>3)+-1|0}function tR(){var s=0,l=0;if(o[7944]|0||(AG(10568),Zt(61,10568,_|0)|0,l=7944,n[l>>2]=1,n[l+4>>2]=0),!(br(10568)|0)){s=10568,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));AG(10568)}return 10568}function AG(s){s=s|0,XNe(s)}function VNe(s){s=s|0,zNe(s+24|0)}function zNe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function XNe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,1,17,l,u5()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function ZNe(s){return s=s|0,eLe(n[($Ne(s)|0)>>2]|0)|0}function $Ne(s){return s=s|0,(n[(tR()|0)+24>>2]|0)+(s<<3)|0}function eLe(s){return s=s|0,Uv($v[s&7]()|0)|0}function fG(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function tLe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;if(Q=E,E=E+32|0,d=Q,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=rLe(s)|0,f>>>0<B>>>0)Jr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,M=O>>2,nLe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-k>>3,s+8|0),B=d+8|0,fG(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,iLe(s,d),sLe(d),E=Q;return}}function rLe(s){return s=s|0,536870911}function nLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Gt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function iLe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function sLe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&pt(s)}function oLe(){aLe()}function aLe(){lLe(10604)}function lLe(s){s=s|0,cLe(s,4955)}function cLe(s,l){s=s|0,l=l|0;var c=0;c=uLe()|0,n[s>>2]=c,ALe(c,l),Sp(n[s>>2]|0)}function uLe(){var s=0;return o[7952]|0||(CLe(10612),Zt(25,10612,_|0)|0,s=7952,n[s>>2]=1,n[s+4>>2]=0),10612}function ALe(s,l){s=s|0,l=l|0,n[s>>2]=gLe()|0,n[s+4>>2]=dLe()|0,n[s+12>>2]=l,n[s+8>>2]=mLe()|0,n[s+32>>2]=8}function Sp(s){s=s|0;var l=0,c=0;l=E,E=E+16|0,c=l,qm()|0,n[c>>2]=s,fLe(10608,c),E=l}function qm(){return o[11714]|0||(n[2652]=0,Zt(62,10608,_|0)|0,o[11714]=1),10608}function fLe(s,l){s=s|0,l=l|0;var c=0;c=Gt(8)|0,n[c+4>>2]=n[l>>2],n[c>>2]=n[s>>2],n[s>>2]=c}function pLe(s){s=s|0,hLe(s)}function hLe(s){s=s|0;var l=0,c=0;if(l=n[s>>2]|0,l|0)do c=l,l=n[l>>2]|0,pt(c);while((l|0)!=0);n[s>>2]=0}function gLe(){return 11715}function dLe(){return 1496}function mLe(){return _v()|0}function yLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(Dp(f,896)|0)==512?c|0&&(ELe(c),pt(c)):l|0&&pt(l)}function ELe(s){s=s|0,s=n[s+4>>2]|0,s|0&&Pp(s)}function CLe(s){s=s|0,Ip(s)}function ILe(s,l){s=s|0,l=l|0;var c=0,f=0;qm()|0,c=n[2652]|0;e:do if(c|0){for(;f=n[c+4>>2]|0,!(f|0&&(KG(rR(f)|0,s)|0)==0);)if(c=n[c>>2]|0,!c)break e;wLe(f,l)}while(0)}function rR(s){return s=s|0,n[s+12>>2]|0}function wLe(s,l){s=s|0,l=l|0;var c=0;s=s+36|0,c=n[s>>2]|0,c|0&&(HA(c),pt(c)),c=Gt(4)|0,_9(c,l),n[s>>2]=c}function nR(){return o[11716]|0||(n[2664]=0,Zt(63,10656,_|0)|0,o[11716]=1),10656}function pG(){var s=0;return o[11717]|0?s=n[2665]|0:(BLe(),n[2665]=1504,o[11717]=1,s=1504),s|0}function BLe(){o[11740]|0||(o[11718]=Ar(Ar(8,0)|0,0)|0,o[11719]=Ar(Ar(0,0)|0,0)|0,o[11720]=Ar(Ar(0,16)|0,0)|0,o[11721]=Ar(Ar(8,0)|0,0)|0,o[11722]=Ar(Ar(0,0)|0,0)|0,o[11723]=Ar(Ar(8,0)|0,0)|0,o[11724]=Ar(Ar(0,0)|0,0)|0,o[11725]=Ar(Ar(8,0)|0,0)|0,o[11726]=Ar(Ar(0,0)|0,0)|0,o[11727]=Ar(Ar(8,0)|0,0)|0,o[11728]=Ar(Ar(0,0)|0,0)|0,o[11729]=Ar(Ar(0,0)|0,32)|0,o[11730]=Ar(Ar(0,0)|0,32)|0,o[11740]=1)}function hG(){return 1572}function vLe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,Q=0,k=0,M=0,O=0;m=E,E=E+32|0,O=m+16|0,M=m+12|0,k=m+8|0,Q=m+4|0,B=m,n[O>>2]=s,n[M>>2]=l,n[k>>2]=c,n[Q>>2]=f,n[B>>2]=d,nR()|0,DLe(10656,O,M,k,Q,B),E=m}function DLe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0;B=Gt(24)|0,j9(B+4|0,n[l>>2]|0,n[c>>2]|0,n[f>>2]|0,n[d>>2]|0,n[m>>2]|0),n[B>>2]=n[s>>2],n[s>>2]=B}function gG(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0,We=0,Oe=0,Re=0,et=0,Ze=0,at=0;if(at=E,E=E+32|0,Oe=at+20|0,Re=at+8|0,et=at+4|0,Ze=at,l=n[l>>2]|0,l|0){We=Oe+4|0,k=Oe+8|0,M=Re+4|0,O=Re+8|0,j=Re+8|0,se=Oe+8|0;do{if(B=l+4|0,Q=iR(B)|0,Q|0){if(d=wI(Q)|0,n[Oe>>2]=0,n[We>>2]=0,n[k>>2]=0,f=(BI(Q)|0)+1|0,SLe(Oe,f),f|0)for(;f=f+-1|0,xc(Re,n[d>>2]|0),m=n[We>>2]|0,m>>>0<(n[se>>2]|0)>>>0?(n[m>>2]=n[Re>>2],n[We>>2]=(n[We>>2]|0)+4):sR(Oe,Re),f;)d=d+4|0;f=vI(Q)|0,n[Re>>2]=0,n[M>>2]=0,n[O>>2]=0;e:do if(n[f>>2]|0)for(d=0,m=0;;){if((d|0)==(m|0)?PLe(Re,f):(n[d>>2]=n[f>>2],n[M>>2]=(n[M>>2]|0)+4),f=f+4|0,!(n[f>>2]|0))break e;d=n[M>>2]|0,m=n[j>>2]|0}while(0);n[et>>2]=qv(B)|0,n[Ze>>2]=br(Q)|0,xLe(c,s,et,Ze,Oe,Re),oR(Re),ZA(Oe)}l=n[l>>2]|0}while((l|0)!=0)}E=at}function iR(s){return s=s|0,n[s+12>>2]|0}function wI(s){return s=s|0,n[s+12>>2]|0}function BI(s){return s=s|0,n[s+16>>2]|0}function SLe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;d=E,E=E+32|0,c=d,f=n[s>>2]|0,(n[s+8>>2]|0)-f>>2>>>0<l>>>0&&(BG(c,l,(n[s+4>>2]|0)-f>>2,s+8|0),vG(s,c),DG(c)),E=d}function sR(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0;if(B=E,E=E+32|0,c=B,f=s+4|0,d=((n[f>>2]|0)-(n[s>>2]|0)>>2)+1|0,m=wG(s)|0,m>>>0<d>>>0)Jr(s);else{Q=n[s>>2]|0,M=(n[s+8>>2]|0)-Q|0,k=M>>1,BG(c,M>>2>>>0<m>>>1>>>0?k>>>0<d>>>0?d:k:m,(n[f>>2]|0)-Q>>2,s+8|0),m=c+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,vG(s,c),DG(c),E=B;return}}function vI(s){return s=s|0,n[s+8>>2]|0}function PLe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0;if(B=E,E=E+32|0,c=B,f=s+4|0,d=((n[f>>2]|0)-(n[s>>2]|0)>>2)+1|0,m=IG(s)|0,m>>>0<d>>>0)Jr(s);else{Q=n[s>>2]|0,M=(n[s+8>>2]|0)-Q|0,k=M>>1,KLe(c,M>>2>>>0<m>>>1>>>0?k>>>0<d>>>0?d:k:m,(n[f>>2]|0)-Q>>2,s+8|0),m=c+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,JLe(s,c),VLe(c),E=B;return}}function qv(s){return s=s|0,n[s>>2]|0}function xLe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,bLe(s,l,c,f,d,m)}function oR(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-4-f|0)>>>2)<<2)),pt(c))}function ZA(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-4-f|0)>>>2)<<2)),pt(c))}function bLe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,Q=0,k=0,M=0,O=0,j=0;B=E,E=E+48|0,O=B+40|0,Q=B+32|0,j=B+24|0,k=B+12|0,M=B,Ja(Q),s=ga(s)|0,n[j>>2]=n[l>>2],c=n[c>>2]|0,f=n[f>>2]|0,aR(k,d),QLe(M,m),n[O>>2]=n[j>>2],kLe(s,O,c,f,k,M),oR(M),ZA(k),Va(Q),E=B}function aR(s,l){s=s|0,l=l|0;var c=0,f=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,c=l+4|0,f=(n[c>>2]|0)-(n[l>>2]|0)>>2,f|0&&(WLe(s,f),YLe(s,n[l>>2]|0,n[c>>2]|0,f))}function QLe(s,l){s=s|0,l=l|0;var c=0,f=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,c=l+4|0,f=(n[c>>2]|0)-(n[l>>2]|0)>>2,f|0&&(jLe(s,f),GLe(s,n[l>>2]|0,n[c>>2]|0,f))}function kLe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,Q=0,k=0,M=0,O=0,j=0;B=E,E=E+32|0,O=B+28|0,j=B+24|0,Q=B+12|0,k=B,M=Sl(FLe()|0)|0,n[j>>2]=n[l>>2],n[O>>2]=n[j>>2],l=Dg(O)|0,c=dG(c)|0,f=lR(f)|0,n[Q>>2]=n[d>>2],O=d+4|0,n[Q+4>>2]=n[O>>2],j=d+8|0,n[Q+8>>2]=n[j>>2],n[j>>2]=0,n[O>>2]=0,n[d>>2]=0,d=cR(Q)|0,n[k>>2]=n[m>>2],O=m+4|0,n[k+4>>2]=n[O>>2],j=m+8|0,n[k+8>>2]=n[j>>2],n[j>>2]=0,n[O>>2]=0,n[m>>2]=0,io(0,M|0,s|0,l|0,c|0,f|0,d|0,RLe(k)|0)|0,oR(k),ZA(Q),E=B}function FLe(){var s=0;return o[7968]|0||(HLe(10708),s=7968,n[s>>2]=1,n[s+4>>2]=0),10708}function Dg(s){return s=s|0,yG(s)|0}function dG(s){return s=s|0,mG(s)|0}function lR(s){return s=s|0,Uv(s)|0}function cR(s){return s=s|0,NLe(s)|0}function RLe(s){return s=s|0,TLe(s)|0}function TLe(s){s=s|0;var l=0,c=0,f=0;if(f=(n[s+4>>2]|0)-(n[s>>2]|0)|0,c=f>>2,f=Ka(f+4|0)|0,n[f>>2]=c,c|0){l=0;do n[f+4+(l<<2)>>2]=mG(n[(n[s>>2]|0)+(l<<2)>>2]|0)|0,l=l+1|0;while((l|0)!=(c|0))}return f|0}function mG(s){return s=s|0,s|0}function NLe(s){s=s|0;var l=0,c=0,f=0;if(f=(n[s+4>>2]|0)-(n[s>>2]|0)|0,c=f>>2,f=Ka(f+4|0)|0,n[f>>2]=c,c|0){l=0;do n[f+4+(l<<2)>>2]=yG((n[s>>2]|0)+(l<<2)|0)|0,l=l+1|0;while((l|0)!=(c|0))}return f|0}function yG(s){s=s|0;var l=0,c=0,f=0,d=0;return d=E,E=E+32|0,l=d+12|0,c=d,f=IF(EG()|0)|0,f?(wF(l,f),BF(c,l),mUe(s,c),s=vF(l)|0):s=LLe(s)|0,E=d,s|0}function EG(){var s=0;return o[7960]|0||(_Le(10664),Zt(25,10664,_|0)|0,s=7960,n[s>>2]=1,n[s+4>>2]=0),10664}function LLe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,Q=0;return c=E,E=E+16|0,d=c+4|0,B=c,f=Ka(8)|0,l=f,Q=Gt(4)|0,n[Q>>2]=n[s>>2],m=l+4|0,n[m>>2]=Q,s=Gt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],CG(s,m,d),n[f>>2]=s,E=c,l|0}function CG(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Gt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1656,n[c+12>>2]=l,n[s+4>>2]=c}function OLe(s){s=s|0,Km(s),pt(s)}function MLe(s){s=s|0,s=n[s+12>>2]|0,s|0&&pt(s)}function ULe(s){s=s|0,pt(s)}function _Le(s){s=s|0,Ip(s)}function HLe(s){s=s|0,Pl(s,qLe()|0,5)}function qLe(){return 1676}function jLe(s,l){s=s|0,l=l|0;var c=0;if((IG(s)|0)>>>0<l>>>0&&Jr(s),l>>>0>1073741823)Rt();else{c=Gt(l<<2)|0,n[s+4>>2]=c,n[s>>2]=c,n[s+8>>2]=c+(l<<2);return}}function GLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,f=s+4|0,s=c-l|0,(s|0)>0&&(Cr(n[f>>2]|0,l|0,s|0)|0,n[f>>2]=(n[f>>2]|0)+(s>>>2<<2))}function IG(s){return s=s|0,1073741823}function WLe(s,l){s=s|0,l=l|0;var c=0;if((wG(s)|0)>>>0<l>>>0&&Jr(s),l>>>0>1073741823)Rt();else{c=Gt(l<<2)|0,n[s+4>>2]=c,n[s>>2]=c,n[s+8>>2]=c+(l<<2);return}}function YLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,f=s+4|0,s=c-l|0,(s|0)>0&&(Cr(n[f>>2]|0,l|0,s|0)|0,n[f>>2]=(n[f>>2]|0)+(s>>>2<<2))}function wG(s){return s=s|0,1073741823}function KLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>1073741823)Rt();else{d=Gt(l<<2)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<2)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<2)}function JLe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function VLe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-4-l|0)>>>2)<<2)),s=n[s>>2]|0,s|0&&pt(s)}function BG(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>1073741823)Rt();else{d=Gt(l<<2)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<2)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<2)}function vG(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function DG(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-4-l|0)>>>2)<<2)),s=n[s>>2]|0,s|0&&pt(s)}function zLe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0,We=0,Oe=0,Re=0;if(Re=E,E=E+32|0,O=Re+20|0,j=Re+12|0,M=Re+16|0,se=Re+4|0,We=Re,Oe=Re+8|0,Q=pG()|0,m=n[Q>>2]|0,B=n[m>>2]|0,B|0)for(k=n[Q+8>>2]|0,Q=n[Q+4>>2]|0;xc(O,B),XLe(s,O,Q,k),m=m+4|0,B=n[m>>2]|0,B;)k=k+1|0,Q=Q+1|0;if(m=hG()|0,B=n[m>>2]|0,B|0)do xc(O,B),n[j>>2]=n[m+4>>2],ZLe(l,O,j),m=m+8|0,B=n[m>>2]|0;while((B|0)!=0);if(m=n[(qm()|0)>>2]|0,m|0)do l=n[m+4>>2]|0,xc(O,n[(jm(l)|0)>>2]|0),n[j>>2]=rR(l)|0,$Le(c,O,j),m=n[m>>2]|0;while((m|0)!=0);if(xc(M,0),m=nR()|0,n[O>>2]=n[M>>2],gG(O,m,d),m=n[(qm()|0)>>2]|0,m|0){s=O+4|0,l=O+8|0,c=O+8|0;do{if(k=n[m+4>>2]|0,xc(j,n[(jm(k)|0)>>2]|0),eOe(se,SG(k)|0),B=n[se>>2]|0,B|0){n[O>>2]=0,n[s>>2]=0,n[l>>2]=0;do xc(We,n[(jm(n[B+4>>2]|0)|0)>>2]|0),Q=n[s>>2]|0,Q>>>0<(n[c>>2]|0)>>>0?(n[Q>>2]=n[We>>2],n[s>>2]=(n[s>>2]|0)+4):sR(O,We),B=n[B>>2]|0;while((B|0)!=0);tOe(f,j,O),ZA(O)}n[Oe>>2]=n[j>>2],M=PG(k)|0,n[O>>2]=n[Oe>>2],gG(O,M,d),V9(se),m=n[m>>2]|0}while((m|0)!=0)}E=Re}function XLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,pOe(s,l,c,f)}function ZLe(s,l,c){s=s|0,l=l|0,c=c|0,fOe(s,l,c)}function jm(s){return s=s|0,s|0}function $Le(s,l,c){s=s|0,l=l|0,c=c|0,lOe(s,l,c)}function SG(s){return s=s|0,s+16|0}function eOe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;if(m=E,E=E+16|0,d=m+8|0,c=m,n[s>>2]=0,f=n[l>>2]|0,n[d>>2]=f,n[c>>2]=s,c=aOe(c)|0,f|0){if(f=Gt(12)|0,B=(xG(d)|0)+4|0,s=n[B+4>>2]|0,l=f+4|0,n[l>>2]=n[B>>2],n[l+4>>2]=s,l=n[n[d>>2]>>2]|0,n[d>>2]=l,!l)s=f;else for(l=f;s=Gt(12)|0,k=(xG(d)|0)+4|0,Q=n[k+4>>2]|0,B=s+4|0,n[B>>2]=n[k>>2],n[B+4>>2]=Q,n[l>>2]=s,B=n[n[d>>2]>>2]|0,n[d>>2]=B,B;)l=s;n[s>>2]=n[c>>2],n[c>>2]=f}E=m}function tOe(s,l,c){s=s|0,l=l|0,c=c|0,rOe(s,l,c)}function PG(s){return s=s|0,s+24|0}function rOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+32|0,B=f+24|0,d=f+16|0,Q=f+12|0,m=f,Ja(d),s=ga(s)|0,n[Q>>2]=n[l>>2],aR(m,c),n[B>>2]=n[Q>>2],nOe(s,B,m),ZA(m),Va(d),E=f}function nOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+32|0,B=f+16|0,Q=f+12|0,d=f,m=Sl(iOe()|0)|0,n[Q>>2]=n[l>>2],n[B>>2]=n[Q>>2],l=Dg(B)|0,n[d>>2]=n[c>>2],B=c+4|0,n[d+4>>2]=n[B>>2],Q=c+8|0,n[d+8>>2]=n[Q>>2],n[Q>>2]=0,n[B>>2]=0,n[c>>2]=0,no(0,m|0,s|0,l|0,cR(d)|0)|0,ZA(d),E=f}function iOe(){var s=0;return o[7976]|0||(sOe(10720),s=7976,n[s>>2]=1,n[s+4>>2]=0),10720}function sOe(s){s=s|0,Pl(s,oOe()|0,2)}function oOe(){return 1732}function aOe(s){return s=s|0,n[s>>2]|0}function xG(s){return s=s|0,n[s>>2]|0}function lOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=E,E=E+32|0,m=f+16|0,d=f+8|0,B=f,Ja(d),s=ga(s)|0,n[B>>2]=n[l>>2],c=n[c>>2]|0,n[m>>2]=n[B>>2],bG(s,m,c),Va(d),E=f}function bG(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=E,E=E+16|0,m=f+4|0,B=f,d=Sl(cOe()|0)|0,n[B>>2]=n[l>>2],n[m>>2]=n[B>>2],l=Dg(m)|0,no(0,d|0,s|0,l|0,dG(c)|0)|0,E=f}function cOe(){var s=0;return o[7984]|0||(uOe(10732),s=7984,n[s>>2]=1,n[s+4>>2]=0),10732}function uOe(s){s=s|0,Pl(s,AOe()|0,2)}function AOe(){return 1744}function fOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=E,E=E+32|0,m=f+16|0,d=f+8|0,B=f,Ja(d),s=ga(s)|0,n[B>>2]=n[l>>2],c=n[c>>2]|0,n[m>>2]=n[B>>2],bG(s,m,c),Va(d),E=f}function pOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0;d=E,E=E+32|0,B=d+16|0,m=d+8|0,Q=d,Ja(m),s=ga(s)|0,n[Q>>2]=n[l>>2],c=o[c>>0]|0,f=o[f>>0]|0,n[B>>2]=n[Q>>2],hOe(s,B,c,f),Va(m),E=d}function hOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0;d=E,E=E+16|0,B=d+4|0,Q=d,m=Sl(gOe()|0)|0,n[Q>>2]=n[l>>2],n[B>>2]=n[Q>>2],l=Dg(B)|0,c=Gm(c)|0,hc(0,m|0,s|0,l|0,c|0,Gm(f)|0)|0,E=d}function gOe(){var s=0;return o[7992]|0||(mOe(10744),s=7992,n[s>>2]=1,n[s+4>>2]=0),10744}function Gm(s){return s=s|0,dOe(s)|0}function dOe(s){return s=s|0,s&255|0}function mOe(s){s=s|0,Pl(s,yOe()|0,3)}function yOe(){return 1756}function EOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;switch(se=E,E=E+32|0,Q=se+8|0,k=se+4|0,M=se+20|0,O=se,xF(s,0),f=dUe(l)|0,n[Q>>2]=0,j=Q+4|0,n[j>>2]=0,n[Q+8>>2]=0,f<<24>>24){case 0:{o[M>>0]=0,COe(k,c,M),jv(s,k)|0,qA(k);break}case 8:{j=gR(l)|0,o[M>>0]=8,xc(O,n[j+4>>2]|0),IOe(k,c,M,O,j+8|0),jv(s,k)|0,qA(k);break}case 9:{if(m=gR(l)|0,l=n[m+4>>2]|0,l|0)for(B=Q+8|0,d=m+12|0;l=l+-1|0,xc(k,n[d>>2]|0),f=n[j>>2]|0,f>>>0<(n[B>>2]|0)>>>0?(n[f>>2]=n[k>>2],n[j>>2]=(n[j>>2]|0)+4):sR(Q,k),l;)d=d+4|0;o[M>>0]=9,xc(O,n[m+8>>2]|0),wOe(k,c,M,O,Q),jv(s,k)|0,qA(k);break}default:j=gR(l)|0,o[M>>0]=f,xc(O,n[j+4>>2]|0),BOe(k,c,M,O),jv(s,k)|0,qA(k)}ZA(Q),E=se}function COe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=E,E=E+16|0,d=f,Ja(d),l=ga(l)|0,LOe(s,l,o[c>>0]|0),Va(d),E=f}function jv(s,l){s=s|0,l=l|0;var c=0;return c=n[s>>2]|0,c|0&&PA(c|0),n[s>>2]=n[l>>2],n[l>>2]=0,s|0}function IOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,Q=0,k=0;m=E,E=E+32|0,Q=m+16|0,B=m+8|0,k=m,Ja(B),l=ga(l)|0,c=o[c>>0]|0,n[k>>2]=n[f>>2],d=n[d>>2]|0,n[Q>>2]=n[k>>2],FOe(s,l,c,Q,d),Va(B),E=m}function wOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,Q=0,k=0,M=0;m=E,E=E+32|0,k=m+24|0,B=m+16|0,M=m+12|0,Q=m,Ja(B),l=ga(l)|0,c=o[c>>0]|0,n[M>>2]=n[f>>2],aR(Q,d),n[k>>2]=n[M>>2],xOe(s,l,c,k,Q),ZA(Q),Va(B),E=m}function BOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0;d=E,E=E+32|0,B=d+16|0,m=d+8|0,Q=d,Ja(m),l=ga(l)|0,c=o[c>>0]|0,n[Q>>2]=n[f>>2],n[B>>2]=n[Q>>2],vOe(s,l,c,B),Va(m),E=d}function vOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0;d=E,E=E+16|0,m=d+4|0,Q=d,B=Sl(DOe()|0)|0,c=Gm(c)|0,n[Q>>2]=n[f>>2],n[m>>2]=n[Q>>2],Gv(s,no(0,B|0,l|0,c|0,Dg(m)|0)|0),E=d}function DOe(){var s=0;return o[8e3]|0||(SOe(10756),s=8e3,n[s>>2]=1,n[s+4>>2]=0),10756}function Gv(s,l){s=s|0,l=l|0,xF(s,l)}function SOe(s){s=s|0,Pl(s,POe()|0,2)}function POe(){return 1772}function xOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,Q=0,k=0,M=0;m=E,E=E+32|0,k=m+16|0,M=m+12|0,B=m,Q=Sl(bOe()|0)|0,c=Gm(c)|0,n[M>>2]=n[f>>2],n[k>>2]=n[M>>2],f=Dg(k)|0,n[B>>2]=n[d>>2],k=d+4|0,n[B+4>>2]=n[k>>2],M=d+8|0,n[B+8>>2]=n[M>>2],n[M>>2]=0,n[k>>2]=0,n[d>>2]=0,Gv(s,hc(0,Q|0,l|0,c|0,f|0,cR(B)|0)|0),ZA(B),E=m}function bOe(){var s=0;return o[8008]|0||(QOe(10768),s=8008,n[s>>2]=1,n[s+4>>2]=0),10768}function QOe(s){s=s|0,Pl(s,kOe()|0,3)}function kOe(){return 1784}function FOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,Q=0,k=0;m=E,E=E+16|0,Q=m+4|0,k=m,B=Sl(ROe()|0)|0,c=Gm(c)|0,n[k>>2]=n[f>>2],n[Q>>2]=n[k>>2],f=Dg(Q)|0,Gv(s,hc(0,B|0,l|0,c|0,f|0,lR(d)|0)|0),E=m}function ROe(){var s=0;return o[8016]|0||(TOe(10780),s=8016,n[s>>2]=1,n[s+4>>2]=0),10780}function TOe(s){s=s|0,Pl(s,NOe()|0,3)}function NOe(){return 1800}function LOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=Sl(OOe()|0)|0,Gv(s,Dn(0,f|0,l|0,Gm(c)|0)|0)}function OOe(){var s=0;return o[8024]|0||(MOe(10792),s=8024,n[s>>2]=1,n[s+4>>2]=0),10792}function MOe(s){s=s|0,Pl(s,UOe()|0,1)}function UOe(){return 1816}function _Oe(){HOe(),qOe(),jOe()}function HOe(){n[2702]=n7(65536)|0}function qOe(){cMe(10856)}function jOe(){GOe(10816)}function GOe(s){s=s|0,WOe(s,5044),YOe(s)|0}function WOe(s,l){s=s|0,l=l|0;var c=0;c=EG()|0,n[s>>2]=c,nMe(c,l),Sp(n[s>>2]|0)}function YOe(s){s=s|0;var l=0;return l=n[s>>2]|0,Bg(l,KOe()|0),s|0}function KOe(){var s=0;return o[8032]|0||(QG(10820),Zt(64,10820,_|0)|0,s=8032,n[s>>2]=1,n[s+4>>2]=0),br(10820)|0||QG(10820),10820}function QG(s){s=s|0,zOe(s),vg(s,25)}function JOe(s){s=s|0,VOe(s+24|0)}function VOe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function zOe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,5,18,l,eMe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function XOe(s,l){s=s|0,l=l|0,ZOe(s,l)}function ZOe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;c=E,E=E+16|0,f=c,d=c+4|0,Ig(d,l),n[f>>2]=wg(d,l)|0,$Oe(s,f),E=c}function $Oe(s,l){s=s|0,l=l|0,kG(s+4|0,n[l>>2]|0),o[s+8>>0]=1}function kG(s,l){s=s|0,l=l|0,n[s>>2]=l}function eMe(){return 1824}function tMe(s){return s=s|0,rMe(s)|0}function rMe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,Q=0;return c=E,E=E+16|0,d=c+4|0,B=c,f=Ka(8)|0,l=f,Q=Gt(4)|0,Ig(d,s),kG(Q,wg(d,s)|0),m=l+4|0,n[m>>2]=Q,s=Gt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],CG(s,m,d),n[f>>2]=s,E=c,l|0}function Ka(s){s=s|0;var l=0,c=0;return s=s+7&-8,s>>>0<=32768&&(l=n[2701]|0,s>>>0<=(65536-l|0)>>>0)?(c=(n[2702]|0)+l|0,n[2701]=l+s,s=c):(s=n7(s+8|0)|0,n[s>>2]=n[2703],n[2703]=s,s=s+8|0),s|0}function nMe(s,l){s=s|0,l=l|0,n[s>>2]=iMe()|0,n[s+4>>2]=sMe()|0,n[s+12>>2]=l,n[s+8>>2]=oMe()|0,n[s+32>>2]=9}function iMe(){return 11744}function sMe(){return 1832}function oMe(){return Hv()|0}function aMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(Dp(f,896)|0)==512?c|0&&(lMe(c),pt(c)):l|0&&pt(l)}function lMe(s){s=s|0,s=n[s+4>>2]|0,s|0&&Pp(s)}function cMe(s){s=s|0,uMe(s,5052),AMe(s)|0,fMe(s,5058,26)|0,pMe(s,5069,1)|0,hMe(s,5077,10)|0,gMe(s,5087,19)|0,dMe(s,5094,27)|0}function uMe(s,l){s=s|0,l=l|0;var c=0;c=lUe()|0,n[s>>2]=c,cUe(c,l),Sp(n[s>>2]|0)}function AMe(s){s=s|0;var l=0;return l=n[s>>2]|0,Bg(l,J4e()|0),s|0}function fMe(s,l,c){return s=s|0,l=l|0,c=c|0,Q4e(s,cn(l)|0,c,0),s|0}function pMe(s,l,c){return s=s|0,l=l|0,c=c|0,g4e(s,cn(l)|0,c,0),s|0}function hMe(s,l,c){return s=s|0,l=l|0,c=c|0,KMe(s,cn(l)|0,c,0),s|0}function gMe(s,l,c){return s=s|0,l=l|0,c=c|0,FMe(s,cn(l)|0,c,0),s|0}function FG(s,l){s=s|0,l=l|0;var c=0,f=0;e:for(;;){for(c=n[2703]|0;;){if((c|0)==(l|0))break e;if(f=n[c>>2]|0,n[2703]=f,!c)c=f;else break}pt(c)}n[2701]=s}function dMe(s,l,c){return s=s|0,l=l|0,c=c|0,mMe(s,cn(l)|0,c,0),s|0}function mMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=uR()|0,s=yMe(c)|0,un(m,l,d,s,EMe(c,f)|0,f)}function uR(){var s=0,l=0;if(o[8040]|0||(TG(10860),Zt(65,10860,_|0)|0,l=8040,n[l>>2]=1,n[l+4>>2]=0),!(br(10860)|0)){s=10860,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));TG(10860)}return 10860}function yMe(s){return s=s|0,s|0}function EMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return Q=E,E=E+16|0,d=Q,m=Q+4|0,n[d>>2]=s,k=uR()|0,B=k+24|0,l=Ar(l,4)|0,n[m>>2]=l,c=k+28|0,f=n[c>>2]|0,f>>>0<(n[k+32>>2]|0)>>>0?(RG(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(CMe(B,d,m),l=n[c>>2]|0),E=Q,(l-(n[B>>2]|0)>>3)+-1|0}function RG(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function CMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;if(Q=E,E=E+32|0,d=Q,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=IMe(s)|0,f>>>0<B>>>0)Jr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,M=O>>2,wMe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-k>>3,s+8|0),B=d+8|0,RG(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,BMe(s,d),vMe(d),E=Q;return}}function IMe(s){return s=s|0,536870911}function wMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Gt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function BMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function vMe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&pt(s)}function TG(s){s=s|0,PMe(s)}function DMe(s){s=s|0,SMe(s+24|0)}function SMe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function PMe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,1,11,l,xMe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function xMe(){return 1840}function bMe(s,l,c){s=s|0,l=l|0,c=c|0,kMe(n[(QMe(s)|0)>>2]|0,l,c)}function QMe(s){return s=s|0,(n[(uR()|0)+24>>2]|0)+(s<<3)|0}function kMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;f=E,E=E+16|0,m=f+1|0,d=f,Ig(m,l),l=wg(m,l)|0,Ig(d,c),c=wg(d,c)|0,ef[s&31](l,c),E=f}function FMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=AR()|0,s=RMe(c)|0,un(m,l,d,s,TMe(c,f)|0,f)}function AR(){var s=0,l=0;if(o[8048]|0||(LG(10896),Zt(66,10896,_|0)|0,l=8048,n[l>>2]=1,n[l+4>>2]=0),!(br(10896)|0)){s=10896,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));LG(10896)}return 10896}function RMe(s){return s=s|0,s|0}function TMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return Q=E,E=E+16|0,d=Q,m=Q+4|0,n[d>>2]=s,k=AR()|0,B=k+24|0,l=Ar(l,4)|0,n[m>>2]=l,c=k+28|0,f=n[c>>2]|0,f>>>0<(n[k+32>>2]|0)>>>0?(NG(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(NMe(B,d,m),l=n[c>>2]|0),E=Q,(l-(n[B>>2]|0)>>3)+-1|0}function NG(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function NMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;if(Q=E,E=E+32|0,d=Q,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=LMe(s)|0,f>>>0<B>>>0)Jr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,M=O>>2,OMe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-k>>3,s+8|0),B=d+8|0,NG(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,MMe(s,d),UMe(d),E=Q;return}}function LMe(s){return s=s|0,536870911}function OMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Gt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function MMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function UMe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&pt(s)}function LG(s){s=s|0,qMe(s)}function _Me(s){s=s|0,HMe(s+24|0)}function HMe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function qMe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,1,11,l,jMe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function jMe(){return 1852}function GMe(s,l){return s=s|0,l=l|0,YMe(n[(WMe(s)|0)>>2]|0,l)|0}function WMe(s){return s=s|0,(n[(AR()|0)+24>>2]|0)+(s<<3)|0}function YMe(s,l){s=s|0,l=l|0;var c=0,f=0;return c=E,E=E+16|0,f=c,Ig(f,l),l=wg(f,l)|0,l=Uv(bg[s&31](l)|0)|0,E=c,l|0}function KMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=fR()|0,s=JMe(c)|0,un(m,l,d,s,VMe(c,f)|0,f)}function fR(){var s=0,l=0;if(o[8056]|0||(MG(10932),Zt(67,10932,_|0)|0,l=8056,n[l>>2]=1,n[l+4>>2]=0),!(br(10932)|0)){s=10932,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));MG(10932)}return 10932}function JMe(s){return s=s|0,s|0}function VMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return Q=E,E=E+16|0,d=Q,m=Q+4|0,n[d>>2]=s,k=fR()|0,B=k+24|0,l=Ar(l,4)|0,n[m>>2]=l,c=k+28|0,f=n[c>>2]|0,f>>>0<(n[k+32>>2]|0)>>>0?(OG(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(zMe(B,d,m),l=n[c>>2]|0),E=Q,(l-(n[B>>2]|0)>>3)+-1|0}function OG(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function zMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;if(Q=E,E=E+32|0,d=Q,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=XMe(s)|0,f>>>0<B>>>0)Jr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,M=O>>2,ZMe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-k>>3,s+8|0),B=d+8|0,OG(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,$Me(s,d),e4e(d),E=Q;return}}function XMe(s){return s=s|0,536870911}function ZMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Gt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function $Me(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function e4e(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&pt(s)}function MG(s){s=s|0,n4e(s)}function t4e(s){s=s|0,r4e(s+24|0)}function r4e(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function n4e(s){s=s|0;var l=0;l=Gr()|0,Wr(s,1,7,l,i4e()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function i4e(){return 1860}function s4e(s,l,c){return s=s|0,l=l|0,c=c|0,a4e(n[(o4e(s)|0)>>2]|0,l,c)|0}function o4e(s){return s=s|0,(n[(fR()|0)+24>>2]|0)+(s<<3)|0}function a4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0;return f=E,E=E+32|0,B=f+12|0,m=f+8|0,Q=f,k=f+16|0,d=f+4|0,l4e(k,l),c4e(Q,k,l),wp(d,c),c=Bp(d,c)|0,n[B>>2]=n[Q>>2],xI[s&15](m,B,c),c=u4e(m)|0,qA(m),vp(d),E=f,c|0}function l4e(s,l){s=s|0,l=l|0}function c4e(s,l,c){s=s|0,l=l|0,c=c|0,A4e(s,c)}function u4e(s){return s=s|0,ga(s)|0}function A4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;d=E,E=E+16|0,c=d,f=l,f&1?(f4e(c,0),Zn(f|0,c|0)|0,p4e(s,c),h4e(c)):n[s>>2]=n[l>>2],E=d}function f4e(s,l){s=s|0,l=l|0,H9(s,l),n[s+4>>2]=0,o[s+8>>0]=0}function p4e(s,l){s=s|0,l=l|0,n[s>>2]=n[l+4>>2]}function h4e(s){s=s|0,o[s+8>>0]=0}function g4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=pR()|0,s=d4e(c)|0,un(m,l,d,s,m4e(c,f)|0,f)}function pR(){var s=0,l=0;if(o[8064]|0||(_G(10968),Zt(68,10968,_|0)|0,l=8064,n[l>>2]=1,n[l+4>>2]=0),!(br(10968)|0)){s=10968,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));_G(10968)}return 10968}function d4e(s){return s=s|0,s|0}function m4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return Q=E,E=E+16|0,d=Q,m=Q+4|0,n[d>>2]=s,k=pR()|0,B=k+24|0,l=Ar(l,4)|0,n[m>>2]=l,c=k+28|0,f=n[c>>2]|0,f>>>0<(n[k+32>>2]|0)>>>0?(UG(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(y4e(B,d,m),l=n[c>>2]|0),E=Q,(l-(n[B>>2]|0)>>3)+-1|0}function UG(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function y4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;if(Q=E,E=E+32|0,d=Q,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=E4e(s)|0,f>>>0<B>>>0)Jr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,M=O>>2,C4e(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-k>>3,s+8|0),B=d+8|0,UG(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,I4e(s,d),w4e(d),E=Q;return}}function E4e(s){return s=s|0,536870911}function C4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Gt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function I4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function w4e(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&pt(s)}function _G(s){s=s|0,D4e(s)}function B4e(s){s=s|0,v4e(s+24|0)}function v4e(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function D4e(s){s=s|0;var l=0;l=Gr()|0,Wr(s,1,1,l,S4e()|0,5),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function S4e(){return 1872}function P4e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,b4e(n[(x4e(s)|0)>>2]|0,l,c,f,d,m)}function x4e(s){return s=s|0,(n[(pR()|0)+24>>2]|0)+(s<<3)|0}function b4e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,Q=0,k=0,M=0,O=0,j=0;B=E,E=E+32|0,Q=B+16|0,k=B+12|0,M=B+8|0,O=B+4|0,j=B,wp(Q,l),l=Bp(Q,l)|0,wp(k,c),c=Bp(k,c)|0,wp(M,f),f=Bp(M,f)|0,wp(O,d),d=Bp(O,d)|0,wp(j,m),m=Bp(j,m)|0,l7[s&1](l,c,f,d,m),vp(j),vp(O),vp(M),vp(k),vp(Q),E=B}function Q4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=hR()|0,s=k4e(c)|0,un(m,l,d,s,F4e(c,f)|0,f)}function hR(){var s=0,l=0;if(o[8072]|0||(qG(11004),Zt(69,11004,_|0)|0,l=8072,n[l>>2]=1,n[l+4>>2]=0),!(br(11004)|0)){s=11004,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));qG(11004)}return 11004}function k4e(s){return s=s|0,s|0}function F4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return Q=E,E=E+16|0,d=Q,m=Q+4|0,n[d>>2]=s,k=hR()|0,B=k+24|0,l=Ar(l,4)|0,n[m>>2]=l,c=k+28|0,f=n[c>>2]|0,f>>>0<(n[k+32>>2]|0)>>>0?(HG(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(R4e(B,d,m),l=n[c>>2]|0),E=Q,(l-(n[B>>2]|0)>>3)+-1|0}function HG(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function R4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;if(Q=E,E=E+32|0,d=Q,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=T4e(s)|0,f>>>0<B>>>0)Jr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,M=O>>2,N4e(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-k>>3,s+8|0),B=d+8|0,HG(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,L4e(s,d),O4e(d),E=Q;return}}function T4e(s){return s=s|0,536870911}function N4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Gt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function L4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function O4e(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&pt(s)}function qG(s){s=s|0,_4e(s)}function M4e(s){s=s|0,U4e(s+24|0)}function U4e(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function _4e(s){s=s|0;var l=0;l=Gr()|0,Wr(s,1,12,l,H4e()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function H4e(){return 1896}function q4e(s,l,c){s=s|0,l=l|0,c=c|0,G4e(n[(j4e(s)|0)>>2]|0,l,c)}function j4e(s){return s=s|0,(n[(hR()|0)+24>>2]|0)+(s<<3)|0}function G4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;f=E,E=E+16|0,m=f+4|0,d=f,W4e(m,l),l=Y4e(m,l)|0,wp(d,c),c=Bp(d,c)|0,ef[s&31](l,c),vp(d),E=f}function W4e(s,l){s=s|0,l=l|0}function Y4e(s,l){return s=s|0,l=l|0,K4e(l)|0}function K4e(s){return s=s|0,s|0}function J4e(){var s=0;return o[8080]|0||(jG(11040),Zt(70,11040,_|0)|0,s=8080,n[s>>2]=1,n[s+4>>2]=0),br(11040)|0||jG(11040),11040}function jG(s){s=s|0,X4e(s),vg(s,71)}function V4e(s){s=s|0,z4e(s+24|0)}function z4e(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function X4e(s){s=s|0;var l=0;l=Gr()|0,Wr(s,5,7,l,tUe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Z4e(s){s=s|0,$4e(s)}function $4e(s){s=s|0,eUe(s)}function eUe(s){s=s|0,o[s+8>>0]=1}function tUe(){return 1936}function rUe(){return nUe()|0}function nUe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0;return l=E,E=E+16|0,d=l+4|0,B=l,c=Ka(8)|0,s=c,m=s+4|0,n[m>>2]=Gt(1)|0,f=Gt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],iUe(f,m,d),n[c>>2]=f,E=l,s|0}function iUe(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Gt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1916,n[c+12>>2]=l,n[s+4>>2]=c}function sUe(s){s=s|0,Km(s),pt(s)}function oUe(s){s=s|0,s=n[s+12>>2]|0,s|0&&pt(s)}function aUe(s){s=s|0,pt(s)}function lUe(){var s=0;return o[8088]|0||(gUe(11076),Zt(25,11076,_|0)|0,s=8088,n[s>>2]=1,n[s+4>>2]=0),11076}function cUe(s,l){s=s|0,l=l|0,n[s>>2]=uUe()|0,n[s+4>>2]=AUe()|0,n[s+12>>2]=l,n[s+8>>2]=fUe()|0,n[s+32>>2]=10}function uUe(){return 11745}function AUe(){return 1940}function fUe(){return _v()|0}function pUe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(Dp(f,896)|0)==512?c|0&&(hUe(c),pt(c)):l|0&&pt(l)}function hUe(s){s=s|0,s=n[s+4>>2]|0,s|0&&Pp(s)}function gUe(s){s=s|0,Ip(s)}function xc(s,l){s=s|0,l=l|0,n[s>>2]=l}function gR(s){return s=s|0,n[s>>2]|0}function dUe(s){return s=s|0,o[n[s>>2]>>0]|0}function mUe(s,l){s=s|0,l=l|0;var c=0,f=0;c=E,E=E+16|0,f=c,n[f>>2]=n[s>>2],yUe(l,f)|0,E=c}function yUe(s,l){s=s|0,l=l|0;var c=0;return c=EUe(n[s>>2]|0,l)|0,l=s+4|0,n[(n[l>>2]|0)+8>>2]=c,n[(n[l>>2]|0)+8>>2]|0}function EUe(s,l){s=s|0,l=l|0;var c=0,f=0;return c=E,E=E+16|0,f=c,Ja(f),s=ga(s)|0,l=CUe(s,n[l>>2]|0)|0,Va(f),E=c,l|0}function Ja(s){s=s|0,n[s>>2]=n[2701],n[s+4>>2]=n[2703]}function CUe(s,l){s=s|0,l=l|0;var c=0;return c=Sl(IUe()|0)|0,Dn(0,c|0,s|0,lR(l)|0)|0}function Va(s){s=s|0,FG(n[s>>2]|0,n[s+4>>2]|0)}function IUe(){var s=0;return o[8096]|0||(wUe(11120),s=8096,n[s>>2]=1,n[s+4>>2]=0),11120}function wUe(s){s=s|0,Pl(s,BUe()|0,1)}function BUe(){return 1948}function vUe(){DUe()}function DUe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0,We=0,Oe=0,Re=0;if(Oe=E,E=E+16|0,O=Oe+4|0,j=Oe,Fi(65536,10804,n[2702]|0,10812),c=pG()|0,l=n[c>>2]|0,s=n[l>>2]|0,s|0)for(f=n[c+8>>2]|0,c=n[c+4>>2]|0;Ac(s|0,u[c>>0]|0|0,o[f>>0]|0),l=l+4|0,s=n[l>>2]|0,s;)f=f+1|0,c=c+1|0;if(s=hG()|0,l=n[s>>2]|0,l|0)do gu(l|0,n[s+4>>2]|0),s=s+8|0,l=n[s>>2]|0;while((l|0)!=0);gu(SUe()|0,5167),M=qm()|0,s=n[M>>2]|0;e:do if(s|0){do PUe(n[s+4>>2]|0),s=n[s>>2]|0;while((s|0)!=0);if(s=n[M>>2]|0,s|0){k=M;do{for(;d=s,s=n[s>>2]|0,d=n[d+4>>2]|0,!!(xUe(d)|0);)if(n[j>>2]=k,n[O>>2]=n[j>>2],bUe(M,O)|0,!s)break e;if(QUe(d),k=n[k>>2]|0,l=GG(d)|0,m=_i()|0,B=E,E=E+((1*(l<<2)|0)+15&-16)|0,Q=E,E=E+((1*(l<<2)|0)+15&-16)|0,l=n[(SG(d)|0)>>2]|0,l|0)for(c=B,f=Q;n[c>>2]=n[(jm(n[l+4>>2]|0)|0)>>2],n[f>>2]=n[l+8>>2],l=n[l>>2]|0,l;)c=c+4|0,f=f+4|0;Re=jm(d)|0,l=kUe(d)|0,c=GG(d)|0,f=FUe(d)|0,du(Re|0,l|0,B|0,Q|0,c|0,f|0,rR(d)|0),Ui(m|0)}while((s|0)!=0)}}while(0);if(s=n[(nR()|0)>>2]|0,s|0)do Re=s+4|0,M=iR(Re)|0,d=vI(M)|0,m=wI(M)|0,B=(BI(M)|0)+1|0,Q=Wv(M)|0,k=WG(Re)|0,M=br(M)|0,O=qv(Re)|0,j=dR(Re)|0,yl(0,d|0,m|0,B|0,Q|0,k|0,M|0,O|0,j|0,mR(Re)|0),s=n[s>>2]|0;while((s|0)!=0);s=n[(qm()|0)>>2]|0;e:do if(s|0){t:for(;;){if(l=n[s+4>>2]|0,l|0&&(se=n[(jm(l)|0)>>2]|0,We=n[(PG(l)|0)>>2]|0,We|0)){c=We;do{l=c+4|0,f=iR(l)|0;r:do if(f|0)switch(br(f)|0){case 0:break t;case 4:case 3:case 2:{Q=vI(f)|0,k=wI(f)|0,M=(BI(f)|0)+1|0,O=Wv(f)|0,j=br(f)|0,Re=qv(l)|0,yl(se|0,Q|0,k|0,M|0,O|0,0,j|0,Re|0,dR(l)|0,mR(l)|0);break r}case 1:{B=vI(f)|0,Q=wI(f)|0,k=(BI(f)|0)+1|0,M=Wv(f)|0,O=WG(l)|0,j=br(f)|0,Re=qv(l)|0,yl(se|0,B|0,Q|0,k|0,M|0,O|0,j|0,Re|0,dR(l)|0,mR(l)|0);break r}case 5:{M=vI(f)|0,O=wI(f)|0,j=(BI(f)|0)+1|0,Re=Wv(f)|0,yl(se|0,M|0,O|0,j|0,Re|0,RUe(f)|0,br(f)|0,0,0,0);break r}default:break r}while(0);c=n[c>>2]|0}while((c|0)!=0)}if(s=n[s>>2]|0,!s)break e}Rt()}while(0);Ce(),E=Oe}function SUe(){return 11703}function PUe(s){s=s|0,o[s+40>>0]=0}function xUe(s){return s=s|0,(o[s+40>>0]|0)!=0|0}function bUe(s,l){return s=s|0,l=l|0,l=TUe(l)|0,s=n[l>>2]|0,n[l>>2]=n[s>>2],pt(s),n[l>>2]|0}function QUe(s){s=s|0,o[s+40>>0]=1}function GG(s){return s=s|0,n[s+20>>2]|0}function kUe(s){return s=s|0,n[s+8>>2]|0}function FUe(s){return s=s|0,n[s+32>>2]|0}function Wv(s){return s=s|0,n[s+4>>2]|0}function WG(s){return s=s|0,n[s+4>>2]|0}function dR(s){return s=s|0,n[s+8>>2]|0}function mR(s){return s=s|0,n[s+16>>2]|0}function RUe(s){return s=s|0,n[s+20>>2]|0}function TUe(s){return s=s|0,n[s>>2]|0}function Yv(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0,We=0,Oe=0,Re=0,et=0,Ze=0,at=0,He=0,Ge=0,Tt=0;Tt=E,E=E+16|0,se=Tt;do if(s>>>0<245){if(M=s>>>0<11?16:s+11&-8,s=M>>>3,j=n[2783]|0,c=j>>>s,c&3|0)return l=(c&1^1)+s|0,s=11172+(l<<1<<2)|0,c=s+8|0,f=n[c>>2]|0,d=f+8|0,m=n[d>>2]|0,(s|0)==(m|0)?n[2783]=j&~(1<<l):(n[m+12>>2]=s,n[c>>2]=m),Ge=l<<3,n[f+4>>2]=Ge|3,Ge=f+Ge+4|0,n[Ge>>2]=n[Ge>>2]|1,Ge=d,E=Tt,Ge|0;if(O=n[2785]|0,M>>>0>O>>>0){if(c|0)return l=2<<s,l=c<<s&(l|0-l),l=(l&0-l)+-1|0,B=l>>>12&16,l=l>>>B,c=l>>>5&8,l=l>>>c,d=l>>>2&4,l=l>>>d,s=l>>>1&2,l=l>>>s,f=l>>>1&1,f=(c|B|d|s|f)+(l>>>f)|0,l=11172+(f<<1<<2)|0,s=l+8|0,d=n[s>>2]|0,B=d+8|0,c=n[B>>2]|0,(l|0)==(c|0)?(s=j&~(1<<f),n[2783]=s):(n[c+12>>2]=l,n[s>>2]=c,s=j),m=(f<<3)-M|0,n[d+4>>2]=M|3,f=d+M|0,n[f+4>>2]=m|1,n[f+m>>2]=m,O|0&&(d=n[2788]|0,l=O>>>3,c=11172+(l<<1<<2)|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=d,n[l+12>>2]=d,n[d+8>>2]=l,n[d+12>>2]=c),n[2785]=m,n[2788]=f,Ge=B,E=Tt,Ge|0;if(Q=n[2784]|0,Q){if(c=(Q&0-Q)+-1|0,B=c>>>12&16,c=c>>>B,m=c>>>5&8,c=c>>>m,k=c>>>2&4,c=c>>>k,f=c>>>1&2,c=c>>>f,s=c>>>1&1,s=n[11436+((m|B|k|f|s)+(c>>>s)<<2)>>2]|0,c=(n[s+4>>2]&-8)-M|0,f=n[s+16+(((n[s+16>>2]|0)==0&1)<<2)>>2]|0,!f)k=s,m=c;else{do B=(n[f+4>>2]&-8)-M|0,k=B>>>0<c>>>0,c=k?B:c,s=k?f:s,f=n[f+16+(((n[f+16>>2]|0)==0&1)<<2)>>2]|0;while((f|0)!=0);k=s,m=c}if(B=k+M|0,k>>>0<B>>>0){d=n[k+24>>2]|0,l=n[k+12>>2]|0;do if((l|0)==(k|0)){if(s=k+20|0,l=n[s>>2]|0,!l&&(s=k+16|0,l=n[s>>2]|0,!l)){c=0;break}for(;;){if(c=l+20|0,f=n[c>>2]|0,f|0){l=f,s=c;continue}if(c=l+16|0,f=n[c>>2]|0,f)l=f,s=c;else break}n[s>>2]=0,c=l}else c=n[k+8>>2]|0,n[c+12>>2]=l,n[l+8>>2]=c,c=l;while(0);do if(d|0){if(l=n[k+28>>2]|0,s=11436+(l<<2)|0,(k|0)==(n[s>>2]|0)){if(n[s>>2]=c,!c){n[2784]=Q&~(1<<l);break}}else if(n[d+16+(((n[d+16>>2]|0)!=(k|0)&1)<<2)>>2]=c,!c)break;n[c+24>>2]=d,l=n[k+16>>2]|0,l|0&&(n[c+16>>2]=l,n[l+24>>2]=c),l=n[k+20>>2]|0,l|0&&(n[c+20>>2]=l,n[l+24>>2]=c)}while(0);return m>>>0<16?(Ge=m+M|0,n[k+4>>2]=Ge|3,Ge=k+Ge+4|0,n[Ge>>2]=n[Ge>>2]|1):(n[k+4>>2]=M|3,n[B+4>>2]=m|1,n[B+m>>2]=m,O|0&&(f=n[2788]|0,l=O>>>3,c=11172+(l<<1<<2)|0,l=1<<l,j&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=j|l,l=c,s=c+8|0),n[s>>2]=f,n[l+12>>2]=f,n[f+8>>2]=l,n[f+12>>2]=c),n[2785]=m,n[2788]=B),Ge=k+8|0,E=Tt,Ge|0}else j=M}else j=M}else j=M}else if(s>>>0<=4294967231)if(s=s+11|0,M=s&-8,k=n[2784]|0,k){f=0-M|0,s=s>>>8,s?M>>>0>16777215?Q=31:(j=(s+1048320|0)>>>16&8,He=s<<j,O=(He+520192|0)>>>16&4,He=He<<O,Q=(He+245760|0)>>>16&2,Q=14-(O|j|Q)+(He<<Q>>>15)|0,Q=M>>>(Q+7|0)&1|Q<<1):Q=0,c=n[11436+(Q<<2)>>2]|0;e:do if(!c)c=0,s=0,He=57;else for(s=0,B=M<<((Q|0)==31?0:25-(Q>>>1)|0),m=0;;){if(d=(n[c+4>>2]&-8)-M|0,d>>>0<f>>>0)if(d)s=c,f=d;else{s=c,f=0,d=c,He=61;break e}if(d=n[c+20>>2]|0,c=n[c+16+(B>>>31<<2)>>2]|0,m=(d|0)==0|(d|0)==(c|0)?m:d,d=(c|0)==0,d){c=m,He=57;break}else B=B<<((d^1)&1)}while(0);if((He|0)==57){if((c|0)==0&(s|0)==0){if(s=2<<Q,s=k&(s|0-s),!s){j=M;break}j=(s&0-s)+-1|0,B=j>>>12&16,j=j>>>B,m=j>>>5&8,j=j>>>m,Q=j>>>2&4,j=j>>>Q,O=j>>>1&2,j=j>>>O,c=j>>>1&1,s=0,c=n[11436+((m|B|Q|O|c)+(j>>>c)<<2)>>2]|0}c?(d=c,He=61):(Q=s,B=f)}if((He|0)==61)for(;;)if(He=0,c=(n[d+4>>2]&-8)-M|0,j=c>>>0<f>>>0,c=j?c:f,s=j?d:s,d=n[d+16+(((n[d+16>>2]|0)==0&1)<<2)>>2]|0,d)f=c,He=61;else{Q=s,B=c;break}if((Q|0)!=0&&B>>>0<((n[2785]|0)-M|0)>>>0){if(m=Q+M|0,Q>>>0>=m>>>0)return Ge=0,E=Tt,Ge|0;d=n[Q+24>>2]|0,l=n[Q+12>>2]|0;do if((l|0)==(Q|0)){if(s=Q+20|0,l=n[s>>2]|0,!l&&(s=Q+16|0,l=n[s>>2]|0,!l)){l=0;break}for(;;){if(c=l+20|0,f=n[c>>2]|0,f|0){l=f,s=c;continue}if(c=l+16|0,f=n[c>>2]|0,f)l=f,s=c;else break}n[s>>2]=0}else Ge=n[Q+8>>2]|0,n[Ge+12>>2]=l,n[l+8>>2]=Ge;while(0);do if(d){if(s=n[Q+28>>2]|0,c=11436+(s<<2)|0,(Q|0)==(n[c>>2]|0)){if(n[c>>2]=l,!l){f=k&~(1<<s),n[2784]=f;break}}else if(n[d+16+(((n[d+16>>2]|0)!=(Q|0)&1)<<2)>>2]=l,!l){f=k;break}n[l+24>>2]=d,s=n[Q+16>>2]|0,s|0&&(n[l+16>>2]=s,n[s+24>>2]=l),s=n[Q+20>>2]|0,s&&(n[l+20>>2]=s,n[s+24>>2]=l),f=k}else f=k;while(0);do if(B>>>0>=16){if(n[Q+4>>2]=M|3,n[m+4>>2]=B|1,n[m+B>>2]=B,l=B>>>3,B>>>0<256){c=11172+(l<<1<<2)|0,s=n[2783]|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=m,n[l+12>>2]=m,n[m+8>>2]=l,n[m+12>>2]=c;break}if(l=B>>>8,l?B>>>0>16777215?l=31:(He=(l+1048320|0)>>>16&8,Ge=l<<He,at=(Ge+520192|0)>>>16&4,Ge=Ge<<at,l=(Ge+245760|0)>>>16&2,l=14-(at|He|l)+(Ge<<l>>>15)|0,l=B>>>(l+7|0)&1|l<<1):l=0,c=11436+(l<<2)|0,n[m+28>>2]=l,s=m+16|0,n[s+4>>2]=0,n[s>>2]=0,s=1<<l,!(f&s)){n[2784]=f|s,n[c>>2]=m,n[m+24>>2]=c,n[m+12>>2]=m,n[m+8>>2]=m;break}for(s=B<<((l|0)==31?0:25-(l>>>1)|0),c=n[c>>2]|0;;){if((n[c+4>>2]&-8|0)==(B|0)){He=97;break}if(f=c+16+(s>>>31<<2)|0,l=n[f>>2]|0,l)s=s<<1,c=l;else{He=96;break}}if((He|0)==96){n[f>>2]=m,n[m+24>>2]=c,n[m+12>>2]=m,n[m+8>>2]=m;break}else if((He|0)==97){He=c+8|0,Ge=n[He>>2]|0,n[Ge+12>>2]=m,n[He>>2]=m,n[m+8>>2]=Ge,n[m+12>>2]=c,n[m+24>>2]=0;break}}else Ge=B+M|0,n[Q+4>>2]=Ge|3,Ge=Q+Ge+4|0,n[Ge>>2]=n[Ge>>2]|1;while(0);return Ge=Q+8|0,E=Tt,Ge|0}else j=M}else j=M;else j=-1;while(0);if(c=n[2785]|0,c>>>0>=j>>>0)return l=c-j|0,s=n[2788]|0,l>>>0>15?(Ge=s+j|0,n[2788]=Ge,n[2785]=l,n[Ge+4>>2]=l|1,n[Ge+l>>2]=l,n[s+4>>2]=j|3):(n[2785]=0,n[2788]=0,n[s+4>>2]=c|3,Ge=s+c+4|0,n[Ge>>2]=n[Ge>>2]|1),Ge=s+8|0,E=Tt,Ge|0;if(B=n[2786]|0,B>>>0>j>>>0)return at=B-j|0,n[2786]=at,Ge=n[2789]|0,He=Ge+j|0,n[2789]=He,n[He+4>>2]=at|1,n[Ge+4>>2]=j|3,Ge=Ge+8|0,E=Tt,Ge|0;if(n[2901]|0?s=n[2903]|0:(n[2903]=4096,n[2902]=4096,n[2904]=-1,n[2905]=-1,n[2906]=0,n[2894]=0,s=se&-16^1431655768,n[se>>2]=s,n[2901]=s,s=4096),Q=j+48|0,k=j+47|0,m=s+k|0,d=0-s|0,M=m&d,M>>>0<=j>>>0||(s=n[2893]|0,s|0&&(O=n[2891]|0,se=O+M|0,se>>>0<=O>>>0|se>>>0>s>>>0)))return Ge=0,E=Tt,Ge|0;e:do if(n[2894]&4)l=0,He=133;else{c=n[2789]|0;t:do if(c){for(f=11580;s=n[f>>2]|0,!(s>>>0<=c>>>0&&(Re=f+4|0,(s+(n[Re>>2]|0)|0)>>>0>c>>>0));)if(s=n[f+8>>2]|0,s)f=s;else{He=118;break t}if(l=m-B&d,l>>>0<2147483647)if(s=xp(l|0)|0,(s|0)==((n[f>>2]|0)+(n[Re>>2]|0)|0)){if((s|0)!=-1){B=l,m=s,He=135;break e}}else f=s,He=126;else l=0}else He=118;while(0);do if((He|0)==118)if(c=xp(0)|0,(c|0)!=-1&&(l=c,We=n[2902]|0,Oe=We+-1|0,l=((Oe&l|0)==0?0:(Oe+l&0-We)-l|0)+M|0,We=n[2891]|0,Oe=l+We|0,l>>>0>j>>>0&l>>>0<2147483647)){if(Re=n[2893]|0,Re|0&&Oe>>>0<=We>>>0|Oe>>>0>Re>>>0){l=0;break}if(s=xp(l|0)|0,(s|0)==(c|0)){B=l,m=c,He=135;break e}else f=s,He=126}else l=0;while(0);do if((He|0)==126){if(c=0-l|0,!(Q>>>0>l>>>0&(l>>>0<2147483647&(f|0)!=-1)))if((f|0)==-1){l=0;break}else{B=l,m=f,He=135;break e}if(s=n[2903]|0,s=k-l+s&0-s,s>>>0>=2147483647){B=l,m=f,He=135;break e}if((xp(s|0)|0)==-1){xp(c|0)|0,l=0;break}else{B=s+l|0,m=f,He=135;break e}}while(0);n[2894]=n[2894]|4,He=133}while(0);if((He|0)==133&&M>>>0<2147483647&&(at=xp(M|0)|0,Re=xp(0)|0,et=Re-at|0,Ze=et>>>0>(j+40|0)>>>0,!((at|0)==-1|Ze^1|at>>>0<Re>>>0&((at|0)!=-1&(Re|0)!=-1)^1))&&(B=Ze?et:l,m=at,He=135),(He|0)==135){l=(n[2891]|0)+B|0,n[2891]=l,l>>>0>(n[2892]|0)>>>0&&(n[2892]=l),k=n[2789]|0;do if(k){for(l=11580;;){if(s=n[l>>2]|0,c=l+4|0,f=n[c>>2]|0,(m|0)==(s+f|0)){He=145;break}if(d=n[l+8>>2]|0,d)l=d;else break}if((He|0)==145&&(n[l+12>>2]&8|0)==0&&k>>>0<m>>>0&k>>>0>=s>>>0){n[c>>2]=f+B,Ge=k+8|0,Ge=(Ge&7|0)==0?0:0-Ge&7,He=k+Ge|0,Ge=(n[2786]|0)+(B-Ge)|0,n[2789]=He,n[2786]=Ge,n[He+4>>2]=Ge|1,n[He+Ge+4>>2]=40,n[2790]=n[2905];break}for(m>>>0<(n[2787]|0)>>>0&&(n[2787]=m),c=m+B|0,l=11580;;){if((n[l>>2]|0)==(c|0)){He=153;break}if(s=n[l+8>>2]|0,s)l=s;else break}if((He|0)==153&&(n[l+12>>2]&8|0)==0){n[l>>2]=m,O=l+4|0,n[O>>2]=(n[O>>2]|0)+B,O=m+8|0,O=m+((O&7|0)==0?0:0-O&7)|0,l=c+8|0,l=c+((l&7|0)==0?0:0-l&7)|0,M=O+j|0,Q=l-O-j|0,n[O+4>>2]=j|3;do if((l|0)!=(k|0)){if((l|0)==(n[2788]|0)){Ge=(n[2785]|0)+Q|0,n[2785]=Ge,n[2788]=M,n[M+4>>2]=Ge|1,n[M+Ge>>2]=Ge;break}if(s=n[l+4>>2]|0,(s&3|0)==1){B=s&-8,f=s>>>3;e:do if(s>>>0<256)if(s=n[l+8>>2]|0,c=n[l+12>>2]|0,(c|0)==(s|0)){n[2783]=n[2783]&~(1<<f);break}else{n[s+12>>2]=c,n[c+8>>2]=s;break}else{m=n[l+24>>2]|0,s=n[l+12>>2]|0;do if((s|0)==(l|0)){if(f=l+16|0,c=f+4|0,s=n[c>>2]|0,!s)if(s=n[f>>2]|0,s)c=f;else{s=0;break}for(;;){if(f=s+20|0,d=n[f>>2]|0,d|0){s=d,c=f;continue}if(f=s+16|0,d=n[f>>2]|0,d)s=d,c=f;else break}n[c>>2]=0}else Ge=n[l+8>>2]|0,n[Ge+12>>2]=s,n[s+8>>2]=Ge;while(0);if(!m)break;c=n[l+28>>2]|0,f=11436+(c<<2)|0;do if((l|0)!=(n[f>>2]|0)){if(n[m+16+(((n[m+16>>2]|0)!=(l|0)&1)<<2)>>2]=s,!s)break e}else{if(n[f>>2]=s,s|0)break;n[2784]=n[2784]&~(1<<c);break e}while(0);if(n[s+24>>2]=m,c=l+16|0,f=n[c>>2]|0,f|0&&(n[s+16>>2]=f,n[f+24>>2]=s),c=n[c+4>>2]|0,!c)break;n[s+20>>2]=c,n[c+24>>2]=s}while(0);l=l+B|0,d=B+Q|0}else d=Q;if(l=l+4|0,n[l>>2]=n[l>>2]&-2,n[M+4>>2]=d|1,n[M+d>>2]=d,l=d>>>3,d>>>0<256){c=11172+(l<<1<<2)|0,s=n[2783]|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=M,n[l+12>>2]=M,n[M+8>>2]=l,n[M+12>>2]=c;break}l=d>>>8;do if(!l)l=0;else{if(d>>>0>16777215){l=31;break}He=(l+1048320|0)>>>16&8,Ge=l<<He,at=(Ge+520192|0)>>>16&4,Ge=Ge<<at,l=(Ge+245760|0)>>>16&2,l=14-(at|He|l)+(Ge<<l>>>15)|0,l=d>>>(l+7|0)&1|l<<1}while(0);if(f=11436+(l<<2)|0,n[M+28>>2]=l,s=M+16|0,n[s+4>>2]=0,n[s>>2]=0,s=n[2784]|0,c=1<<l,!(s&c)){n[2784]=s|c,n[f>>2]=M,n[M+24>>2]=f,n[M+12>>2]=M,n[M+8>>2]=M;break}for(s=d<<((l|0)==31?0:25-(l>>>1)|0),c=n[f>>2]|0;;){if((n[c+4>>2]&-8|0)==(d|0)){He=194;break}if(f=c+16+(s>>>31<<2)|0,l=n[f>>2]|0,l)s=s<<1,c=l;else{He=193;break}}if((He|0)==193){n[f>>2]=M,n[M+24>>2]=c,n[M+12>>2]=M,n[M+8>>2]=M;break}else if((He|0)==194){He=c+8|0,Ge=n[He>>2]|0,n[Ge+12>>2]=M,n[He>>2]=M,n[M+8>>2]=Ge,n[M+12>>2]=c,n[M+24>>2]=0;break}}else Ge=(n[2786]|0)+Q|0,n[2786]=Ge,n[2789]=M,n[M+4>>2]=Ge|1;while(0);return Ge=O+8|0,E=Tt,Ge|0}for(l=11580;s=n[l>>2]|0,!(s>>>0<=k>>>0&&(Ge=s+(n[l+4>>2]|0)|0,Ge>>>0>k>>>0));)l=n[l+8>>2]|0;d=Ge+-47|0,s=d+8|0,s=d+((s&7|0)==0?0:0-s&7)|0,d=k+16|0,s=s>>>0<d>>>0?k:s,l=s+8|0,c=m+8|0,c=(c&7|0)==0?0:0-c&7,He=m+c|0,c=B+-40-c|0,n[2789]=He,n[2786]=c,n[He+4>>2]=c|1,n[He+c+4>>2]=40,n[2790]=n[2905],c=s+4|0,n[c>>2]=27,n[l>>2]=n[2895],n[l+4>>2]=n[2896],n[l+8>>2]=n[2897],n[l+12>>2]=n[2898],n[2895]=m,n[2896]=B,n[2898]=0,n[2897]=l,l=s+24|0;do He=l,l=l+4|0,n[l>>2]=7;while((He+8|0)>>>0<Ge>>>0);if((s|0)!=(k|0)){if(m=s-k|0,n[c>>2]=n[c>>2]&-2,n[k+4>>2]=m|1,n[s>>2]=m,l=m>>>3,m>>>0<256){c=11172+(l<<1<<2)|0,s=n[2783]|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=k,n[l+12>>2]=k,n[k+8>>2]=l,n[k+12>>2]=c;break}if(l=m>>>8,l?m>>>0>16777215?c=31:(He=(l+1048320|0)>>>16&8,Ge=l<<He,at=(Ge+520192|0)>>>16&4,Ge=Ge<<at,c=(Ge+245760|0)>>>16&2,c=14-(at|He|c)+(Ge<<c>>>15)|0,c=m>>>(c+7|0)&1|c<<1):c=0,f=11436+(c<<2)|0,n[k+28>>2]=c,n[k+20>>2]=0,n[d>>2]=0,l=n[2784]|0,s=1<<c,!(l&s)){n[2784]=l|s,n[f>>2]=k,n[k+24>>2]=f,n[k+12>>2]=k,n[k+8>>2]=k;break}for(s=m<<((c|0)==31?0:25-(c>>>1)|0),c=n[f>>2]|0;;){if((n[c+4>>2]&-8|0)==(m|0)){He=216;break}if(f=c+16+(s>>>31<<2)|0,l=n[f>>2]|0,l)s=s<<1,c=l;else{He=215;break}}if((He|0)==215){n[f>>2]=k,n[k+24>>2]=c,n[k+12>>2]=k,n[k+8>>2]=k;break}else if((He|0)==216){He=c+8|0,Ge=n[He>>2]|0,n[Ge+12>>2]=k,n[He>>2]=k,n[k+8>>2]=Ge,n[k+12>>2]=c,n[k+24>>2]=0;break}}}else{Ge=n[2787]|0,(Ge|0)==0|m>>>0<Ge>>>0&&(n[2787]=m),n[2895]=m,n[2896]=B,n[2898]=0,n[2792]=n[2901],n[2791]=-1,l=0;do Ge=11172+(l<<1<<2)|0,n[Ge+12>>2]=Ge,n[Ge+8>>2]=Ge,l=l+1|0;while((l|0)!=32);Ge=m+8|0,Ge=(Ge&7|0)==0?0:0-Ge&7,He=m+Ge|0,Ge=B+-40-Ge|0,n[2789]=He,n[2786]=Ge,n[He+4>>2]=Ge|1,n[He+Ge+4>>2]=40,n[2790]=n[2905]}while(0);if(l=n[2786]|0,l>>>0>j>>>0)return at=l-j|0,n[2786]=at,Ge=n[2789]|0,He=Ge+j|0,n[2789]=He,n[He+4>>2]=at|1,n[Ge+4>>2]=j|3,Ge=Ge+8|0,E=Tt,Ge|0}return n[(Wm()|0)>>2]=12,Ge=0,E=Tt,Ge|0}function Kv(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,Q=0,k=0;if(!!s){c=s+-8|0,d=n[2787]|0,s=n[s+-4>>2]|0,l=s&-8,k=c+l|0;do if(s&1)Q=c,B=c;else{if(f=n[c>>2]|0,!(s&3)||(B=c+(0-f)|0,m=f+l|0,B>>>0<d>>>0))return;if((B|0)==(n[2788]|0)){if(s=k+4|0,l=n[s>>2]|0,(l&3|0)!=3){Q=B,l=m;break}n[2785]=m,n[s>>2]=l&-2,n[B+4>>2]=m|1,n[B+m>>2]=m;return}if(c=f>>>3,f>>>0<256)if(s=n[B+8>>2]|0,l=n[B+12>>2]|0,(l|0)==(s|0)){n[2783]=n[2783]&~(1<<c),Q=B,l=m;break}else{n[s+12>>2]=l,n[l+8>>2]=s,Q=B,l=m;break}d=n[B+24>>2]|0,s=n[B+12>>2]|0;do if((s|0)==(B|0)){if(c=B+16|0,l=c+4|0,s=n[l>>2]|0,!s)if(s=n[c>>2]|0,s)l=c;else{s=0;break}for(;;){if(c=s+20|0,f=n[c>>2]|0,f|0){s=f,l=c;continue}if(c=s+16|0,f=n[c>>2]|0,f)s=f,l=c;else break}n[l>>2]=0}else Q=n[B+8>>2]|0,n[Q+12>>2]=s,n[s+8>>2]=Q;while(0);if(d){if(l=n[B+28>>2]|0,c=11436+(l<<2)|0,(B|0)==(n[c>>2]|0)){if(n[c>>2]=s,!s){n[2784]=n[2784]&~(1<<l),Q=B,l=m;break}}else if(n[d+16+(((n[d+16>>2]|0)!=(B|0)&1)<<2)>>2]=s,!s){Q=B,l=m;break}n[s+24>>2]=d,l=B+16|0,c=n[l>>2]|0,c|0&&(n[s+16>>2]=c,n[c+24>>2]=s),l=n[l+4>>2]|0,l?(n[s+20>>2]=l,n[l+24>>2]=s,Q=B,l=m):(Q=B,l=m)}else Q=B,l=m}while(0);if(!(B>>>0>=k>>>0)&&(s=k+4|0,f=n[s>>2]|0,!!(f&1))){if(f&2)n[s>>2]=f&-2,n[Q+4>>2]=l|1,n[B+l>>2]=l,d=l;else{if(s=n[2788]|0,(k|0)==(n[2789]|0)){if(k=(n[2786]|0)+l|0,n[2786]=k,n[2789]=Q,n[Q+4>>2]=k|1,(Q|0)!=(s|0))return;n[2788]=0,n[2785]=0;return}if((k|0)==(s|0)){k=(n[2785]|0)+l|0,n[2785]=k,n[2788]=B,n[Q+4>>2]=k|1,n[B+k>>2]=k;return}d=(f&-8)+l|0,c=f>>>3;do if(f>>>0<256)if(l=n[k+8>>2]|0,s=n[k+12>>2]|0,(s|0)==(l|0)){n[2783]=n[2783]&~(1<<c);break}else{n[l+12>>2]=s,n[s+8>>2]=l;break}else{m=n[k+24>>2]|0,s=n[k+12>>2]|0;do if((s|0)==(k|0)){if(c=k+16|0,l=c+4|0,s=n[l>>2]|0,!s)if(s=n[c>>2]|0,s)l=c;else{c=0;break}for(;;){if(c=s+20|0,f=n[c>>2]|0,f|0){s=f,l=c;continue}if(c=s+16|0,f=n[c>>2]|0,f)s=f,l=c;else break}n[l>>2]=0,c=s}else c=n[k+8>>2]|0,n[c+12>>2]=s,n[s+8>>2]=c,c=s;while(0);if(m|0){if(s=n[k+28>>2]|0,l=11436+(s<<2)|0,(k|0)==(n[l>>2]|0)){if(n[l>>2]=c,!c){n[2784]=n[2784]&~(1<<s);break}}else if(n[m+16+(((n[m+16>>2]|0)!=(k|0)&1)<<2)>>2]=c,!c)break;n[c+24>>2]=m,s=k+16|0,l=n[s>>2]|0,l|0&&(n[c+16>>2]=l,n[l+24>>2]=c),s=n[s+4>>2]|0,s|0&&(n[c+20>>2]=s,n[s+24>>2]=c)}}while(0);if(n[Q+4>>2]=d|1,n[B+d>>2]=d,(Q|0)==(n[2788]|0)){n[2785]=d;return}}if(s=d>>>3,d>>>0<256){c=11172+(s<<1<<2)|0,l=n[2783]|0,s=1<<s,l&s?(l=c+8|0,s=n[l>>2]|0):(n[2783]=l|s,s=c,l=c+8|0),n[l>>2]=Q,n[s+12>>2]=Q,n[Q+8>>2]=s,n[Q+12>>2]=c;return}s=d>>>8,s?d>>>0>16777215?s=31:(B=(s+1048320|0)>>>16&8,k=s<<B,m=(k+520192|0)>>>16&4,k=k<<m,s=(k+245760|0)>>>16&2,s=14-(m|B|s)+(k<<s>>>15)|0,s=d>>>(s+7|0)&1|s<<1):s=0,f=11436+(s<<2)|0,n[Q+28>>2]=s,n[Q+20>>2]=0,n[Q+16>>2]=0,l=n[2784]|0,c=1<<s;do if(l&c){for(l=d<<((s|0)==31?0:25-(s>>>1)|0),c=n[f>>2]|0;;){if((n[c+4>>2]&-8|0)==(d|0)){s=73;break}if(f=c+16+(l>>>31<<2)|0,s=n[f>>2]|0,s)l=l<<1,c=s;else{s=72;break}}if((s|0)==72){n[f>>2]=Q,n[Q+24>>2]=c,n[Q+12>>2]=Q,n[Q+8>>2]=Q;break}else if((s|0)==73){B=c+8|0,k=n[B>>2]|0,n[k+12>>2]=Q,n[B>>2]=Q,n[Q+8>>2]=k,n[Q+12>>2]=c,n[Q+24>>2]=0;break}}else n[2784]=l|c,n[f>>2]=Q,n[Q+24>>2]=f,n[Q+12>>2]=Q,n[Q+8>>2]=Q;while(0);if(k=(n[2791]|0)+-1|0,n[2791]=k,!k)s=11588;else return;for(;s=n[s>>2]|0,s;)s=s+8|0;n[2791]=-1}}}function NUe(){return 11628}function LUe(s){s=s|0;var l=0,c=0;return l=E,E=E+16|0,c=l,n[c>>2]=UUe(n[s+60>>2]|0)|0,s=Jv(gc(6,c|0)|0)|0,E=l,s|0}function YG(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0,We=0;j=E,E=E+48|0,M=j+16|0,m=j,d=j+32|0,Q=s+28|0,f=n[Q>>2]|0,n[d>>2]=f,k=s+20|0,f=(n[k>>2]|0)-f|0,n[d+4>>2]=f,n[d+8>>2]=l,n[d+12>>2]=c,f=f+c|0,B=s+60|0,n[m>>2]=n[B>>2],n[m+4>>2]=d,n[m+8>>2]=2,m=Jv(Hi(146,m|0)|0)|0;e:do if((f|0)!=(m|0)){for(l=2;!((m|0)<0);)if(f=f-m|0,We=n[d+4>>2]|0,se=m>>>0>We>>>0,d=se?d+8|0:d,l=(se<<31>>31)+l|0,We=m-(se?We:0)|0,n[d>>2]=(n[d>>2]|0)+We,se=d+4|0,n[se>>2]=(n[se>>2]|0)-We,n[M>>2]=n[B>>2],n[M+4>>2]=d,n[M+8>>2]=l,m=Jv(Hi(146,M|0)|0)|0,(f|0)==(m|0)){O=3;break e}n[s+16>>2]=0,n[Q>>2]=0,n[k>>2]=0,n[s>>2]=n[s>>2]|32,(l|0)==2?c=0:c=c-(n[d+4>>2]|0)|0}else O=3;while(0);return(O|0)==3&&(We=n[s+44>>2]|0,n[s+16>>2]=We+(n[s+48>>2]|0),n[Q>>2]=We,n[k>>2]=We),E=j,c|0}function OUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;return d=E,E=E+32|0,m=d,f=d+20|0,n[m>>2]=n[s+60>>2],n[m+4>>2]=0,n[m+8>>2]=l,n[m+12>>2]=f,n[m+16>>2]=c,(Jv(ta(140,m|0)|0)|0)<0?(n[f>>2]=-1,s=-1):s=n[f>>2]|0,E=d,s|0}function Jv(s){return s=s|0,s>>>0>4294963200&&(n[(Wm()|0)>>2]=0-s,s=-1),s|0}function Wm(){return(MUe()|0)+64|0}function MUe(){return yR()|0}function yR(){return 2084}function UUe(s){return s=s|0,s|0}function _Ue(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;return d=E,E=E+32|0,f=d,n[s+36>>2]=1,(n[s>>2]&64|0)==0&&(n[f>>2]=n[s+60>>2],n[f+4>>2]=21523,n[f+8>>2]=d+16,mu(54,f|0)|0)&&(o[s+75>>0]=-1),f=YG(s,l,c)|0,E=d,f|0}function KG(s,l){s=s|0,l=l|0;var c=0,f=0;if(c=o[s>>0]|0,f=o[l>>0]|0,c<<24>>24==0||c<<24>>24!=f<<24>>24)s=f;else{do s=s+1|0,l=l+1|0,c=o[s>>0]|0,f=o[l>>0]|0;while(!(c<<24>>24==0||c<<24>>24!=f<<24>>24));s=f}return(c&255)-(s&255)|0}function HUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;e:do if(!c)s=0;else{for(;f=o[s>>0]|0,d=o[l>>0]|0,f<<24>>24==d<<24>>24;)if(c=c+-1|0,c)s=s+1|0,l=l+1|0;else{s=0;break e}s=(f&255)-(d&255)|0}while(0);return s|0}function JG(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0,We=0,Oe=0,Re=0;Re=E,E=E+224|0,O=Re+120|0,j=Re+80|0,We=Re,Oe=Re+136|0,f=j,d=f+40|0;do n[f>>2]=0,f=f+4|0;while((f|0)<(d|0));return n[O>>2]=n[c>>2],(ER(0,l,O,We,j)|0)<0?c=-1:((n[s+76>>2]|0)>-1?se=qUe(s)|0:se=0,c=n[s>>2]|0,M=c&32,(o[s+74>>0]|0)<1&&(n[s>>2]=c&-33),f=s+48|0,n[f>>2]|0?c=ER(s,l,O,We,j)|0:(d=s+44|0,m=n[d>>2]|0,n[d>>2]=Oe,B=s+28|0,n[B>>2]=Oe,Q=s+20|0,n[Q>>2]=Oe,n[f>>2]=80,k=s+16|0,n[k>>2]=Oe+80,c=ER(s,l,O,We,j)|0,m&&(Zv[n[s+36>>2]&7](s,0,0)|0,c=(n[Q>>2]|0)==0?-1:c,n[d>>2]=m,n[f>>2]=0,n[k>>2]=0,n[B>>2]=0,n[Q>>2]=0)),f=n[s>>2]|0,n[s>>2]=f|M,se|0&&jUe(s),c=(f&32|0)==0?c:-1),E=Re,c|0}function ER(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0,We=0,Oe=0,Re=0,et=0,Ze=0,at=0,He=0,Ge=0,Tt=0,Rr=0,ir=0,Vt=0,Ir=0,Qr=0,rr=0;rr=E,E=E+64|0,ir=rr+16|0,Vt=rr,Tt=rr+24|0,Ir=rr+8|0,Qr=rr+20|0,n[ir>>2]=l,at=(s|0)!=0,He=Tt+40|0,Ge=He,Tt=Tt+39|0,Rr=Ir+4|0,B=0,m=0,O=0;e:for(;;){do if((m|0)>-1)if((B|0)>(2147483647-m|0)){n[(Wm()|0)>>2]=75,m=-1;break}else{m=B+m|0;break}while(0);if(B=o[l>>0]|0,B<<24>>24)Q=l;else{Ze=87;break}t:for(;;){switch(B<<24>>24){case 37:{B=Q,Ze=9;break t}case 0:{B=Q;break t}default:}et=Q+1|0,n[ir>>2]=et,B=o[et>>0]|0,Q=et}t:do if((Ze|0)==9)for(;;){if(Ze=0,(o[Q+1>>0]|0)!=37)break t;if(B=B+1|0,Q=Q+2|0,n[ir>>2]=Q,(o[Q>>0]|0)==37)Ze=9;else break}while(0);if(B=B-l|0,at&&ss(s,l,B),B|0){l=Q;continue}k=Q+1|0,B=(o[k>>0]|0)+-48|0,B>>>0<10?(et=(o[Q+2>>0]|0)==36,Re=et?B:-1,O=et?1:O,k=et?Q+3|0:k):Re=-1,n[ir>>2]=k,B=o[k>>0]|0,Q=(B<<24>>24)+-32|0;t:do if(Q>>>0<32)for(M=0,j=B;;){if(B=1<<Q,!(B&75913)){B=j;break t}if(M=B|M,k=k+1|0,n[ir>>2]=k,B=o[k>>0]|0,Q=(B<<24>>24)+-32|0,Q>>>0>=32)break;j=B}else M=0;while(0);if(B<<24>>24==42){if(Q=k+1|0,B=(o[Q>>0]|0)+-48|0,B>>>0<10&&(o[k+2>>0]|0)==36)n[d+(B<<2)>>2]=10,B=n[f+((o[Q>>0]|0)+-48<<3)>>2]|0,O=1,k=k+3|0;else{if(O|0){m=-1;break}at?(O=(n[c>>2]|0)+(4-1)&~(4-1),B=n[O>>2]|0,n[c>>2]=O+4,O=0,k=Q):(B=0,O=0,k=Q)}n[ir>>2]=k,et=(B|0)<0,B=et?0-B|0:B,M=et?M|8192:M}else{if(B=VG(ir)|0,(B|0)<0){m=-1;break}k=n[ir>>2]|0}do if((o[k>>0]|0)==46){if((o[k+1>>0]|0)!=42){n[ir>>2]=k+1,Q=VG(ir)|0,k=n[ir>>2]|0;break}if(j=k+2|0,Q=(o[j>>0]|0)+-48|0,Q>>>0<10&&(o[k+3>>0]|0)==36){n[d+(Q<<2)>>2]=10,Q=n[f+((o[j>>0]|0)+-48<<3)>>2]|0,k=k+4|0,n[ir>>2]=k;break}if(O|0){m=-1;break e}at?(et=(n[c>>2]|0)+(4-1)&~(4-1),Q=n[et>>2]|0,n[c>>2]=et+4):Q=0,n[ir>>2]=j,k=j}else Q=-1;while(0);for(Oe=0;;){if(((o[k>>0]|0)+-65|0)>>>0>57){m=-1;break e}if(et=k+1|0,n[ir>>2]=et,j=o[(o[k>>0]|0)+-65+(5178+(Oe*58|0))>>0]|0,se=j&255,(se+-1|0)>>>0<8)Oe=se,k=et;else break}if(!(j<<24>>24)){m=-1;break}We=(Re|0)>-1;do if(j<<24>>24==19)if(We){m=-1;break e}else Ze=49;else{if(We){n[d+(Re<<2)>>2]=se,We=f+(Re<<3)|0,Re=n[We+4>>2]|0,Ze=Vt,n[Ze>>2]=n[We>>2],n[Ze+4>>2]=Re,Ze=49;break}if(!at){m=0;break e}zG(Vt,se,c)}while(0);if((Ze|0)==49&&(Ze=0,!at)){B=0,l=et;continue}k=o[k>>0]|0,k=(Oe|0)!=0&(k&15|0)==3?k&-33:k,We=M&-65537,Re=(M&8192|0)==0?M:We;t:do switch(k|0){case 110:switch((Oe&255)<<24>>24){case 0:{n[n[Vt>>2]>>2]=m,B=0,l=et;continue e}case 1:{n[n[Vt>>2]>>2]=m,B=0,l=et;continue e}case 2:{B=n[Vt>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=et;continue e}case 3:{a[n[Vt>>2]>>1]=m,B=0,l=et;continue e}case 4:{o[n[Vt>>2]>>0]=m,B=0,l=et;continue e}case 6:{n[n[Vt>>2]>>2]=m,B=0,l=et;continue e}case 7:{B=n[Vt>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=et;continue e}default:{B=0,l=et;continue e}}case 112:{k=120,Q=Q>>>0>8?Q:8,l=Re|8,Ze=61;break}case 88:case 120:{l=Re,Ze=61;break}case 111:{k=Vt,l=n[k>>2]|0,k=n[k+4>>2]|0,se=WUe(l,k,He)|0,We=Ge-se|0,M=0,j=5642,Q=(Re&8|0)==0|(Q|0)>(We|0)?Q:We+1|0,We=Re,Ze=67;break}case 105:case 100:if(k=Vt,l=n[k>>2]|0,k=n[k+4>>2]|0,(k|0)<0){l=Vv(0,0,l|0,k|0)|0,k=Ee,M=Vt,n[M>>2]=l,n[M+4>>2]=k,M=1,j=5642,Ze=66;break t}else{M=(Re&2049|0)!=0&1,j=(Re&2048|0)==0?(Re&1|0)==0?5642:5644:5643,Ze=66;break t}case 117:{k=Vt,M=0,j=5642,l=n[k>>2]|0,k=n[k+4>>2]|0,Ze=66;break}case 99:{o[Tt>>0]=n[Vt>>2],l=Tt,M=0,j=5642,se=He,k=1,Q=We;break}case 109:{k=YUe(n[(Wm()|0)>>2]|0)|0,Ze=71;break}case 115:{k=n[Vt>>2]|0,k=k|0?k:5652,Ze=71;break}case 67:{n[Ir>>2]=n[Vt>>2],n[Rr>>2]=0,n[Vt>>2]=Ir,se=-1,k=Ir,Ze=75;break}case 83:{l=n[Vt>>2]|0,Q?(se=Q,k=l,Ze=75):(Is(s,32,B,0,Re),l=0,Ze=84);break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{B=JUe(s,+C[Vt>>3],B,Q,Re,k)|0,l=et;continue e}default:M=0,j=5642,se=He,k=Q,Q=Re}while(0);t:do if((Ze|0)==61)Re=Vt,Oe=n[Re>>2]|0,Re=n[Re+4>>2]|0,se=GUe(Oe,Re,He,k&32)|0,j=(l&8|0)==0|(Oe|0)==0&(Re|0)==0,M=j?0:2,j=j?5642:5642+(k>>4)|0,We=l,l=Oe,k=Re,Ze=67;else if((Ze|0)==66)se=Ym(l,k,He)|0,We=Re,Ze=67;else if((Ze|0)==71)Ze=0,Re=KUe(k,0,Q)|0,Oe=(Re|0)==0,l=k,M=0,j=5642,se=Oe?k+Q|0:Re,k=Oe?Q:Re-k|0,Q=We;else if((Ze|0)==75){for(Ze=0,j=k,l=0,Q=0;M=n[j>>2]|0,!(!M||(Q=XG(Qr,M)|0,(Q|0)<0|Q>>>0>(se-l|0)>>>0));)if(l=Q+l|0,se>>>0>l>>>0)j=j+4|0;else break;if((Q|0)<0){m=-1;break e}if(Is(s,32,B,l,Re),!l)l=0,Ze=84;else for(M=0;;){if(Q=n[k>>2]|0,!Q){Ze=84;break t}if(Q=XG(Qr,Q)|0,M=Q+M|0,(M|0)>(l|0)){Ze=84;break t}if(ss(s,Qr,Q),M>>>0>=l>>>0){Ze=84;break}else k=k+4|0}}while(0);if((Ze|0)==67)Ze=0,k=(l|0)!=0|(k|0)!=0,Re=(Q|0)!=0|k,k=((k^1)&1)+(Ge-se)|0,l=Re?se:He,se=He,k=Re?(Q|0)>(k|0)?Q:k:Q,Q=(Q|0)>-1?We&-65537:We;else if((Ze|0)==84){Ze=0,Is(s,32,B,l,Re^8192),B=(B|0)>(l|0)?B:l,l=et;continue}Oe=se-l|0,We=(k|0)<(Oe|0)?Oe:k,Re=We+M|0,B=(B|0)<(Re|0)?Re:B,Is(s,32,B,Re,Q),ss(s,j,M),Is(s,48,B,Re,Q^65536),Is(s,48,We,Oe,0),ss(s,l,Oe),Is(s,32,B,Re,Q^8192),l=et}e:do if((Ze|0)==87&&!s)if(!O)m=0;else{for(m=1;l=n[d+(m<<2)>>2]|0,!!l;)if(zG(f+(m<<3)|0,l,c),m=m+1|0,(m|0)>=10){m=1;break e}for(;;){if(n[d+(m<<2)>>2]|0){m=-1;break e}if(m=m+1|0,(m|0)>=10){m=1;break}}}while(0);return E=rr,m|0}function qUe(s){return s=s|0,0}function jUe(s){s=s|0}function ss(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]&32||n3e(l,c,s)|0}function VG(s){s=s|0;var l=0,c=0,f=0;if(c=n[s>>2]|0,f=(o[c>>0]|0)+-48|0,f>>>0<10){l=0;do l=f+(l*10|0)|0,c=c+1|0,n[s>>2]=c,f=(o[c>>0]|0)+-48|0;while(f>>>0<10)}else l=0;return l|0}function zG(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;e:do if(l>>>0<=20)do switch(l|0){case 9:{f=(n[c>>2]|0)+(4-1)&~(4-1),l=n[f>>2]|0,n[c>>2]=f+4,n[s>>2]=l;break e}case 10:{f=(n[c>>2]|0)+(4-1)&~(4-1),l=n[f>>2]|0,n[c>>2]=f+4,f=s,n[f>>2]=l,n[f+4>>2]=((l|0)<0)<<31>>31;break e}case 11:{f=(n[c>>2]|0)+(4-1)&~(4-1),l=n[f>>2]|0,n[c>>2]=f+4,f=s,n[f>>2]=l,n[f+4>>2]=0;break e}case 12:{f=(n[c>>2]|0)+(8-1)&~(8-1),l=f,d=n[l>>2]|0,l=n[l+4>>2]|0,n[c>>2]=f+8,f=s,n[f>>2]=d,n[f+4>>2]=l;break e}case 13:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,f=(f&65535)<<16>>16,d=s,n[d>>2]=f,n[d+4>>2]=((f|0)<0)<<31>>31;break e}case 14:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,d=s,n[d>>2]=f&65535,n[d+4>>2]=0;break e}case 15:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,f=(f&255)<<24>>24,d=s,n[d>>2]=f,n[d+4>>2]=((f|0)<0)<<31>>31;break e}case 16:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,d=s,n[d>>2]=f&255,n[d+4>>2]=0;break e}case 17:{d=(n[c>>2]|0)+(8-1)&~(8-1),m=+C[d>>3],n[c>>2]=d+8,C[s>>3]=m;break e}case 18:{d=(n[c>>2]|0)+(8-1)&~(8-1),m=+C[d>>3],n[c>>2]=d+8,C[s>>3]=m;break e}default:break e}while(0);while(0)}function GUe(s,l,c,f){if(s=s|0,l=l|0,c=c|0,f=f|0,!((s|0)==0&(l|0)==0))do c=c+-1|0,o[c>>0]=u[5694+(s&15)>>0]|0|f,s=zv(s|0,l|0,4)|0,l=Ee;while(!((s|0)==0&(l|0)==0));return c|0}function WUe(s,l,c){if(s=s|0,l=l|0,c=c|0,!((s|0)==0&(l|0)==0))do c=c+-1|0,o[c>>0]=s&7|48,s=zv(s|0,l|0,3)|0,l=Ee;while(!((s|0)==0&(l|0)==0));return c|0}function Ym(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;if(l>>>0>0|(l|0)==0&s>>>0>4294967295){for(;f=BR(s|0,l|0,10,0)|0,c=c+-1|0,o[c>>0]=f&255|48,f=s,s=wR(s|0,l|0,10,0)|0,l>>>0>9|(l|0)==9&f>>>0>4294967295;)l=Ee;l=s}else l=s;if(l)for(;c=c+-1|0,o[c>>0]=(l>>>0)%10|0|48,!(l>>>0<10);)l=(l>>>0)/10|0;return c|0}function YUe(s){return s=s|0,$Ue(s,n[(ZUe()|0)+188>>2]|0)|0}function KUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;m=l&255,f=(c|0)!=0;e:do if(f&(s&3|0)!=0)for(d=l&255;;){if((o[s>>0]|0)==d<<24>>24){B=6;break e}if(s=s+1|0,c=c+-1|0,f=(c|0)!=0,!(f&(s&3|0)!=0)){B=5;break}}else B=5;while(0);(B|0)==5&&(f?B=6:c=0);e:do if((B|0)==6&&(d=l&255,(o[s>>0]|0)!=d<<24>>24)){f=Le(m,16843009)|0;t:do if(c>>>0>3){for(;m=n[s>>2]^f,!((m&-2139062144^-2139062144)&m+-16843009|0);)if(s=s+4|0,c=c+-4|0,c>>>0<=3){B=11;break t}}else B=11;while(0);if((B|0)==11&&!c){c=0;break}for(;;){if((o[s>>0]|0)==d<<24>>24)break e;if(s=s+1|0,c=c+-1|0,!c){c=0;break}}}while(0);return(c|0?s:0)|0}function Is(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0;if(B=E,E=E+256|0,m=B,(c|0)>(f|0)&(d&73728|0)==0){if(d=c-f|0,Jm(m|0,l|0,(d>>>0<256?d:256)|0)|0,d>>>0>255){l=c-f|0;do ss(s,m,256),d=d+-256|0;while(d>>>0>255);d=l&255}ss(s,m,d)}E=B}function XG(s,l){return s=s|0,l=l|0,s?s=zUe(s,l,0)|0:s=0,s|0}function JUe(s,l,c,f,d,m){s=s|0,l=+l,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,Q=0,k=0,M=0,O=0,j=0,se=0,We=0,Oe=0,Re=0,et=0,Ze=0,at=0,He=0,Ge=0,Tt=0,Rr=0,ir=0,Vt=0,Ir=0,Qr=0,rr=0,Bn=0;Bn=E,E=E+560|0,k=Bn+8|0,et=Bn,rr=Bn+524|0,Qr=rr,M=Bn+512|0,n[et>>2]=0,Ir=M+12|0,ZG(l)|0,(Ee|0)<0?(l=-l,ir=1,Rr=5659):(ir=(d&2049|0)!=0&1,Rr=(d&2048|0)==0?(d&1|0)==0?5660:5665:5662),ZG(l)|0,Vt=Ee&2146435072;do if(Vt>>>0<2146435072|(Vt|0)==2146435072&0<0){if(We=+VUe(l,et)*2,B=We!=0,B&&(n[et>>2]=(n[et>>2]|0)+-1),at=m|32,(at|0)==97){Oe=m&32,se=(Oe|0)==0?Rr:Rr+9|0,j=ir|2,B=12-f|0;do if(f>>>0>11|(B|0)==0)l=We;else{l=8;do B=B+-1|0,l=l*16;while((B|0)!=0);if((o[se>>0]|0)==45){l=-(l+(-We-l));break}else{l=We+l-l;break}}while(0);Q=n[et>>2]|0,B=(Q|0)<0?0-Q|0:Q,B=Ym(B,((B|0)<0)<<31>>31,Ir)|0,(B|0)==(Ir|0)&&(B=M+11|0,o[B>>0]=48),o[B+-1>>0]=(Q>>31&2)+43,O=B+-2|0,o[O>>0]=m+15,M=(f|0)<1,k=(d&8|0)==0,B=rr;do Vt=~~l,Q=B+1|0,o[B>>0]=u[5694+Vt>>0]|Oe,l=(l-+(Vt|0))*16,(Q-Qr|0)==1&&!(k&(M&l==0))?(o[Q>>0]=46,B=B+2|0):B=Q;while(l!=0);Vt=B-Qr|0,Qr=Ir-O|0,Ir=(f|0)!=0&(Vt+-2|0)<(f|0)?f+2|0:Vt,B=Qr+j+Ir|0,Is(s,32,c,B,d),ss(s,se,j),Is(s,48,c,B,d^65536),ss(s,rr,Vt),Is(s,48,Ir-Vt|0,0,0),ss(s,O,Qr),Is(s,32,c,B,d^8192);break}Q=(f|0)<0?6:f,B?(B=(n[et>>2]|0)+-28|0,n[et>>2]=B,l=We*268435456):(l=We,B=n[et>>2]|0),Vt=(B|0)<0?k:k+288|0,k=Vt;do Ge=~~l>>>0,n[k>>2]=Ge,k=k+4|0,l=(l-+(Ge>>>0))*1e9;while(l!=0);if((B|0)>0)for(M=Vt,j=k;;){if(O=(B|0)<29?B:29,B=j+-4|0,B>>>0>=M>>>0){k=0;do He=i7(n[B>>2]|0,0,O|0)|0,He=IR(He|0,Ee|0,k|0,0)|0,Ge=Ee,Ze=BR(He|0,Ge|0,1e9,0)|0,n[B>>2]=Ze,k=wR(He|0,Ge|0,1e9,0)|0,B=B+-4|0;while(B>>>0>=M>>>0);k&&(M=M+-4|0,n[M>>2]=k)}for(k=j;!(k>>>0<=M>>>0);)if(B=k+-4|0,!(n[B>>2]|0))k=B;else break;if(B=(n[et>>2]|0)-O|0,n[et>>2]=B,(B|0)>0)j=k;else break}else M=Vt;if((B|0)<0){f=((Q+25|0)/9|0)+1|0,Re=(at|0)==102;do{if(Oe=0-B|0,Oe=(Oe|0)<9?Oe:9,M>>>0<k>>>0){O=(1<<Oe)+-1|0,j=1e9>>>Oe,se=0,B=M;do Ge=n[B>>2]|0,n[B>>2]=(Ge>>>Oe)+se,se=Le(Ge&O,j)|0,B=B+4|0;while(B>>>0<k>>>0);B=(n[M>>2]|0)==0?M+4|0:M,se?(n[k>>2]=se,M=B,B=k+4|0):(M=B,B=k)}else M=(n[M>>2]|0)==0?M+4|0:M,B=k;k=Re?Vt:M,k=(B-k>>2|0)>(f|0)?k+(f<<2)|0:B,B=(n[et>>2]|0)+Oe|0,n[et>>2]=B}while((B|0)<0);B=M,f=k}else B=M,f=k;if(Ge=Vt,B>>>0<f>>>0){if(k=(Ge-B>>2)*9|0,O=n[B>>2]|0,O>>>0>=10){M=10;do M=M*10|0,k=k+1|0;while(O>>>0>=M>>>0)}}else k=0;if(Re=(at|0)==103,Ze=(Q|0)!=0,M=Q-((at|0)!=102?k:0)+((Ze&Re)<<31>>31)|0,(M|0)<(((f-Ge>>2)*9|0)+-9|0)){if(M=M+9216|0,Oe=Vt+4+(((M|0)/9|0)+-1024<<2)|0,M=((M|0)%9|0)+1|0,(M|0)<9){O=10;do O=O*10|0,M=M+1|0;while((M|0)!=9)}else O=10;if(j=n[Oe>>2]|0,se=(j>>>0)%(O>>>0)|0,M=(Oe+4|0)==(f|0),M&(se|0)==0)M=Oe;else if(We=(((j>>>0)/(O>>>0)|0)&1|0)==0?9007199254740992:9007199254740994,He=(O|0)/2|0,l=se>>>0<He>>>0?.5:M&(se|0)==(He|0)?1:1.5,ir&&(He=(o[Rr>>0]|0)==45,l=He?-l:l,We=He?-We:We),M=j-se|0,n[Oe>>2]=M,We+l!=We){if(He=M+O|0,n[Oe>>2]=He,He>>>0>999999999)for(k=Oe;M=k+-4|0,n[k>>2]=0,M>>>0<B>>>0&&(B=B+-4|0,n[B>>2]=0),He=(n[M>>2]|0)+1|0,n[M>>2]=He,He>>>0>999999999;)k=M;else M=Oe;if(k=(Ge-B>>2)*9|0,j=n[B>>2]|0,j>>>0>=10){O=10;do O=O*10|0,k=k+1|0;while(j>>>0>=O>>>0)}}else M=Oe;M=M+4|0,M=f>>>0>M>>>0?M:f,He=B}else M=f,He=B;for(at=M;;){if(at>>>0<=He>>>0){et=0;break}if(B=at+-4|0,!(n[B>>2]|0))at=B;else{et=1;break}}f=0-k|0;do if(Re)if(B=((Ze^1)&1)+Q|0,(B|0)>(k|0)&(k|0)>-5?(O=m+-1|0,Q=B+-1-k|0):(O=m+-2|0,Q=B+-1|0),B=d&8,B)Oe=B;else{if(et&&(Tt=n[at+-4>>2]|0,(Tt|0)!=0))if((Tt>>>0)%10|0)M=0;else{M=0,B=10;do B=B*10|0,M=M+1|0;while(!((Tt>>>0)%(B>>>0)|0|0))}else M=9;if(B=((at-Ge>>2)*9|0)+-9|0,(O|32|0)==102){Oe=B-M|0,Oe=(Oe|0)>0?Oe:0,Q=(Q|0)<(Oe|0)?Q:Oe,Oe=0;break}else{Oe=B+k-M|0,Oe=(Oe|0)>0?Oe:0,Q=(Q|0)<(Oe|0)?Q:Oe,Oe=0;break}}else O=m,Oe=d&8;while(0);if(Re=Q|Oe,j=(Re|0)!=0&1,se=(O|32|0)==102,se)Ze=0,B=(k|0)>0?k:0;else{if(B=(k|0)<0?f:k,B=Ym(B,((B|0)<0)<<31>>31,Ir)|0,M=Ir,(M-B|0)<2)do B=B+-1|0,o[B>>0]=48;while((M-B|0)<2);o[B+-1>>0]=(k>>31&2)+43,B=B+-2|0,o[B>>0]=O,Ze=B,B=M-B|0}if(B=ir+1+Q+j+B|0,Is(s,32,c,B,d),ss(s,Rr,ir),Is(s,48,c,B,d^65536),se){O=He>>>0>Vt>>>0?Vt:He,Oe=rr+9|0,j=Oe,se=rr+8|0,M=O;do{if(k=Ym(n[M>>2]|0,0,Oe)|0,(M|0)==(O|0))(k|0)==(Oe|0)&&(o[se>>0]=48,k=se);else if(k>>>0>rr>>>0){Jm(rr|0,48,k-Qr|0)|0;do k=k+-1|0;while(k>>>0>rr>>>0)}ss(s,k,j-k|0),M=M+4|0}while(M>>>0<=Vt>>>0);if(Re|0&&ss(s,5710,1),M>>>0<at>>>0&(Q|0)>0)for(;;){if(k=Ym(n[M>>2]|0,0,Oe)|0,k>>>0>rr>>>0){Jm(rr|0,48,k-Qr|0)|0;do k=k+-1|0;while(k>>>0>rr>>>0)}if(ss(s,k,(Q|0)<9?Q:9),M=M+4|0,k=Q+-9|0,M>>>0<at>>>0&(Q|0)>9)Q=k;else{Q=k;break}}Is(s,48,Q+9|0,9,0)}else{if(Re=et?at:He+4|0,(Q|0)>-1){et=rr+9|0,Oe=(Oe|0)==0,f=et,j=0-Qr|0,se=rr+8|0,O=He;do{k=Ym(n[O>>2]|0,0,et)|0,(k|0)==(et|0)&&(o[se>>0]=48,k=se);do if((O|0)==(He|0)){if(M=k+1|0,ss(s,k,1),Oe&(Q|0)<1){k=M;break}ss(s,5710,1),k=M}else{if(k>>>0<=rr>>>0)break;Jm(rr|0,48,k+j|0)|0;do k=k+-1|0;while(k>>>0>rr>>>0)}while(0);Qr=f-k|0,ss(s,k,(Q|0)>(Qr|0)?Qr:Q),Q=Q-Qr|0,O=O+4|0}while(O>>>0<Re>>>0&(Q|0)>-1)}Is(s,48,Q+18|0,18,0),ss(s,Ze,Ir-Ze|0)}Is(s,32,c,B,d^8192)}else rr=(m&32|0)!=0,B=ir+3|0,Is(s,32,c,B,d&-65537),ss(s,Rr,ir),ss(s,l!=l|!1?rr?5686:5690:rr?5678:5682,3),Is(s,32,c,B,d^8192);while(0);return E=Bn,((B|0)<(c|0)?c:B)|0}function ZG(s){s=+s;var l=0;return C[v>>3]=s,l=n[v>>2]|0,Ee=n[v+4>>2]|0,l|0}function VUe(s,l){return s=+s,l=l|0,+ +$G(s,l)}function $G(s,l){s=+s,l=l|0;var c=0,f=0,d=0;switch(C[v>>3]=s,c=n[v>>2]|0,f=n[v+4>>2]|0,d=zv(c|0,f|0,52)|0,d&2047){case 0:{s!=0?(s=+$G(s*18446744073709552e3,l),c=(n[l>>2]|0)+-64|0):c=0,n[l>>2]=c;break}case 2047:break;default:n[l>>2]=(d&2047)+-1022,n[v>>2]=c,n[v+4>>2]=f&-2146435073|1071644672,s=+C[v>>3]}return+s}function zUe(s,l,c){s=s|0,l=l|0,c=c|0;do if(s){if(l>>>0<128){o[s>>0]=l,s=1;break}if(!(n[n[(XUe()|0)+188>>2]>>2]|0))if((l&-128|0)==57216){o[s>>0]=l,s=1;break}else{n[(Wm()|0)>>2]=84,s=-1;break}if(l>>>0<2048){o[s>>0]=l>>>6|192,o[s+1>>0]=l&63|128,s=2;break}if(l>>>0<55296|(l&-8192|0)==57344){o[s>>0]=l>>>12|224,o[s+1>>0]=l>>>6&63|128,o[s+2>>0]=l&63|128,s=3;break}if((l+-65536|0)>>>0<1048576){o[s>>0]=l>>>18|240,o[s+1>>0]=l>>>12&63|128,o[s+2>>0]=l>>>6&63|128,o[s+3>>0]=l&63|128,s=4;break}else{n[(Wm()|0)>>2]=84,s=-1;break}}else s=1;while(0);return s|0}function XUe(){return yR()|0}function ZUe(){return yR()|0}function $Ue(s,l){s=s|0,l=l|0;var c=0,f=0;for(f=0;;){if((u[5712+f>>0]|0)==(s|0)){s=2;break}if(c=f+1|0,(c|0)==87){c=5800,f=87,s=5;break}else f=c}if((s|0)==2&&(f?(c=5800,s=5):c=5800),(s|0)==5)for(;;){do s=c,c=c+1|0;while((o[s>>0]|0)!=0);if(f=f+-1|0,f)s=5;else break}return e3e(c,n[l+20>>2]|0)|0}function e3e(s,l){return s=s|0,l=l|0,t3e(s,l)|0}function t3e(s,l){return s=s|0,l=l|0,l?l=r3e(n[l>>2]|0,n[l+4>>2]|0,s)|0:l=0,(l|0?l:s)|0}function r3e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;se=(n[s>>2]|0)+1794895138|0,m=Sg(n[s+8>>2]|0,se)|0,f=Sg(n[s+12>>2]|0,se)|0,d=Sg(n[s+16>>2]|0,se)|0;e:do if(m>>>0<l>>>2>>>0&&(j=l-(m<<2)|0,f>>>0<j>>>0&d>>>0<j>>>0)&&((d|f)&3|0)==0){for(j=f>>>2,O=d>>>2,M=0;;){if(Q=m>>>1,k=M+Q|0,B=k<<1,d=B+j|0,f=Sg(n[s+(d<<2)>>2]|0,se)|0,d=Sg(n[s+(d+1<<2)>>2]|0,se)|0,!(d>>>0<l>>>0&f>>>0<(l-d|0)>>>0)){f=0;break e}if(o[s+(d+f)>>0]|0){f=0;break e}if(f=KG(c,s+d|0)|0,!f)break;if(f=(f|0)<0,(m|0)==1){f=0;break e}else M=f?M:k,m=f?Q:m-Q|0}f=B+O|0,d=Sg(n[s+(f<<2)>>2]|0,se)|0,f=Sg(n[s+(f+1<<2)>>2]|0,se)|0,f>>>0<l>>>0&d>>>0<(l-f|0)>>>0?f=(o[s+(f+d)>>0]|0)==0?s+f|0:0:f=0}else f=0;while(0);return f|0}function Sg(s,l){s=s|0,l=l|0;var c=0;return c=a7(s|0)|0,((l|0)==0?s:c)|0}function n3e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=c+16|0,d=n[f>>2]|0,d?m=5:i3e(c)|0?f=0:(d=n[f>>2]|0,m=5);e:do if((m|0)==5){if(Q=c+20|0,B=n[Q>>2]|0,f=B,(d-B|0)>>>0<l>>>0){f=Zv[n[c+36>>2]&7](c,s,l)|0;break}t:do if((o[c+75>>0]|0)>-1){for(B=l;;){if(!B){m=0,d=s;break t}if(d=B+-1|0,(o[s+d>>0]|0)==10)break;B=d}if(f=Zv[n[c+36>>2]&7](c,s,B)|0,f>>>0<B>>>0)break e;m=B,d=s+B|0,l=l-B|0,f=n[Q>>2]|0}else m=0,d=s;while(0);Cr(f|0,d|0,l|0)|0,n[Q>>2]=(n[Q>>2]|0)+l,f=m+l|0}while(0);return f|0}function i3e(s){s=s|0;var l=0,c=0;return l=s+74|0,c=o[l>>0]|0,o[l>>0]=c+255|c,l=n[s>>2]|0,l&8?(n[s>>2]=l|32,s=-1):(n[s+8>>2]=0,n[s+4>>2]=0,c=n[s+44>>2]|0,n[s+28>>2]=c,n[s+20>>2]=c,n[s+16>>2]=c+(n[s+48>>2]|0),s=0),s|0}function Nn(s,l){s=y(s),l=y(l);var c=0,f=0;c=e7(s)|0;do if((c&2147483647)>>>0<=2139095040){if(f=e7(l)|0,(f&2147483647)>>>0<=2139095040)if((f^c|0)<0){s=(c|0)<0?l:s;break}else{s=s<l?l:s;break}}else s=l;while(0);return y(s)}function e7(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function Pg(s,l){s=y(s),l=y(l);var c=0,f=0;c=t7(s)|0;do if((c&2147483647)>>>0<=2139095040){if(f=t7(l)|0,(f&2147483647)>>>0<=2139095040)if((f^c|0)<0){s=(c|0)<0?s:l;break}else{s=s<l?s:l;break}}else s=l;while(0);return y(s)}function t7(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function CR(s,l){s=y(s),l=y(l);var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0;m=(h[v>>2]=s,n[v>>2]|0),Q=(h[v>>2]=l,n[v>>2]|0),c=m>>>23&255,B=Q>>>23&255,k=m&-2147483648,d=Q<<1;e:do if((d|0)!=0&&!((c|0)==255|((s3e(l)|0)&2147483647)>>>0>2139095040)){if(f=m<<1,f>>>0<=d>>>0)return l=y(s*y(0)),y((f|0)==(d|0)?l:s);if(c)f=m&8388607|8388608;else{if(c=m<<9,(c|0)>-1){f=c,c=0;do c=c+-1|0,f=f<<1;while((f|0)>-1)}else c=0;f=m<<1-c}if(B)Q=Q&8388607|8388608;else{if(m=Q<<9,(m|0)>-1){d=0;do d=d+-1|0,m=m<<1;while((m|0)>-1)}else d=0;B=d,Q=Q<<1-d}d=f-Q|0,m=(d|0)>-1;t:do if((c|0)>(B|0)){for(;;){if(m)if(d)f=d;else break;if(f=f<<1,c=c+-1|0,d=f-Q|0,m=(d|0)>-1,(c|0)<=(B|0))break t}l=y(s*y(0));break e}while(0);if(m)if(d)f=d;else{l=y(s*y(0));break}if(f>>>0<8388608)do f=f<<1,c=c+-1|0;while(f>>>0<8388608);(c|0)>0?c=f+-8388608|c<<23:c=f>>>(1-c|0),l=(n[v>>2]=c|k,y(h[v>>2]))}else M=3;while(0);return(M|0)==3&&(l=y(s*l),l=y(l/l)),y(l)}function s3e(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function o3e(s,l){return s=s|0,l=l|0,JG(n[582]|0,s,l)|0}function Jr(s){s=s|0,Rt()}function Km(s){s=s|0}function a3e(s,l){return s=s|0,l=l|0,0}function l3e(s){return s=s|0,(r7(s+4|0)|0)==-1?($A[n[(n[s>>2]|0)+8>>2]&127](s),s=1):s=0,s|0}function r7(s){s=s|0;var l=0;return l=n[s>>2]|0,n[s>>2]=l+-1,l+-1|0}function Pp(s){s=s|0,l3e(s)|0&&c3e(s)}function c3e(s){s=s|0;var l=0;l=s+8|0,(n[l>>2]|0)!=0&&(r7(l)|0)!=-1||$A[n[(n[s>>2]|0)+16>>2]&127](s)}function Gt(s){s=s|0;var l=0;for(l=(s|0)==0?1:s;s=Yv(l)|0,!(s|0);){if(s=A3e()|0,!s){s=0;break}m7[s&0]()}return s|0}function n7(s){return s=s|0,Gt(s)|0}function pt(s){s=s|0,Kv(s)}function u3e(s){s=s|0,(o[s+11>>0]|0)<0&&pt(n[s>>2]|0)}function A3e(){var s=0;return s=n[2923]|0,n[2923]=s+0,s|0}function f3e(){}function Vv(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,f=l-f-(c>>>0>s>>>0|0)>>>0,Ee=f,s-c>>>0|0|0}function IR(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,c=s+c>>>0,Ee=l+f+(c>>>0<s>>>0|0)>>>0,c|0|0}function Jm(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;if(m=s+c|0,l=l&255,(c|0)>=67){for(;s&3;)o[s>>0]=l,s=s+1|0;for(f=m&-4|0,d=f-64|0,B=l|l<<8|l<<16|l<<24;(s|0)<=(d|0);)n[s>>2]=B,n[s+4>>2]=B,n[s+8>>2]=B,n[s+12>>2]=B,n[s+16>>2]=B,n[s+20>>2]=B,n[s+24>>2]=B,n[s+28>>2]=B,n[s+32>>2]=B,n[s+36>>2]=B,n[s+40>>2]=B,n[s+44>>2]=B,n[s+48>>2]=B,n[s+52>>2]=B,n[s+56>>2]=B,n[s+60>>2]=B,s=s+64|0;for(;(s|0)<(f|0);)n[s>>2]=B,s=s+4|0}for(;(s|0)<(m|0);)o[s>>0]=l,s=s+1|0;return m-c|0}function i7(s,l,c){return s=s|0,l=l|0,c=c|0,(c|0)<32?(Ee=l<<c|(s&(1<<c)-1<<32-c)>>>32-c,s<<c):(Ee=s<<c-32,0)}function zv(s,l,c){return s=s|0,l=l|0,c=c|0,(c|0)<32?(Ee=l>>>c,s>>>c|(l&(1<<c)-1)<<32-c):(Ee=0,l>>>c-32|0)}function Cr(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;if((c|0)>=8192)return fc(s|0,l|0,c|0)|0;if(m=s|0,d=s+c|0,(s&3)==(l&3)){for(;s&3;){if(!c)return m|0;o[s>>0]=o[l>>0]|0,s=s+1|0,l=l+1|0,c=c-1|0}for(c=d&-4|0,f=c-64|0;(s|0)<=(f|0);)n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=n[l+8>>2],n[s+12>>2]=n[l+12>>2],n[s+16>>2]=n[l+16>>2],n[s+20>>2]=n[l+20>>2],n[s+24>>2]=n[l+24>>2],n[s+28>>2]=n[l+28>>2],n[s+32>>2]=n[l+32>>2],n[s+36>>2]=n[l+36>>2],n[s+40>>2]=n[l+40>>2],n[s+44>>2]=n[l+44>>2],n[s+48>>2]=n[l+48>>2],n[s+52>>2]=n[l+52>>2],n[s+56>>2]=n[l+56>>2],n[s+60>>2]=n[l+60>>2],s=s+64|0,l=l+64|0;for(;(s|0)<(c|0);)n[s>>2]=n[l>>2],s=s+4|0,l=l+4|0}else for(c=d-4|0;(s|0)<(c|0);)o[s>>0]=o[l>>0]|0,o[s+1>>0]=o[l+1>>0]|0,o[s+2>>0]=o[l+2>>0]|0,o[s+3>>0]=o[l+3>>0]|0,s=s+4|0,l=l+4|0;for(;(s|0)<(d|0);)o[s>>0]=o[l>>0]|0,s=s+1|0,l=l+1|0;return m|0}function s7(s){s=s|0;var l=0;return l=o[L+(s&255)>>0]|0,(l|0)<8?l|0:(l=o[L+(s>>8&255)>>0]|0,(l|0)<8?l+8|0:(l=o[L+(s>>16&255)>>0]|0,(l|0)<8?l+16|0:(o[L+(s>>>24)>>0]|0)+24|0))}function o7(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0,We=0,Oe=0;if(O=s,k=l,M=k,B=c,se=f,Q=se,!M)return m=(d|0)!=0,Q?m?(n[d>>2]=s|0,n[d+4>>2]=l&0,se=0,d=0,Ee=se,d|0):(se=0,d=0,Ee=se,d|0):(m&&(n[d>>2]=(O>>>0)%(B>>>0),n[d+4>>2]=0),se=0,d=(O>>>0)/(B>>>0)>>>0,Ee=se,d|0);m=(Q|0)==0;do if(B){if(!m){if(m=(P(Q|0)|0)-(P(M|0)|0)|0,m>>>0<=31){j=m+1|0,Q=31-m|0,l=m-31>>31,B=j,s=O>>>(j>>>0)&l|M<<Q,l=M>>>(j>>>0)&l,m=0,Q=O<<Q;break}return d?(n[d>>2]=s|0,n[d+4>>2]=k|l&0,se=0,d=0,Ee=se,d|0):(se=0,d=0,Ee=se,d|0)}if(m=B-1|0,m&B|0){Q=(P(B|0)|0)+33-(P(M|0)|0)|0,Oe=64-Q|0,j=32-Q|0,k=j>>31,We=Q-32|0,l=We>>31,B=Q,s=j-1>>31&M>>>(We>>>0)|(M<<j|O>>>(Q>>>0))&l,l=l&M>>>(Q>>>0),m=O<<Oe&k,Q=(M<<Oe|O>>>(We>>>0))&k|O<<j&Q-33>>31;break}return d|0&&(n[d>>2]=m&O,n[d+4>>2]=0),(B|0)==1?(We=k|l&0,Oe=s|0|0,Ee=We,Oe|0):(Oe=s7(B|0)|0,We=M>>>(Oe>>>0)|0,Oe=M<<32-Oe|O>>>(Oe>>>0)|0,Ee=We,Oe|0)}else{if(m)return d|0&&(n[d>>2]=(M>>>0)%(B>>>0),n[d+4>>2]=0),We=0,Oe=(M>>>0)/(B>>>0)>>>0,Ee=We,Oe|0;if(!O)return d|0&&(n[d>>2]=0,n[d+4>>2]=(M>>>0)%(Q>>>0)),We=0,Oe=(M>>>0)/(Q>>>0)>>>0,Ee=We,Oe|0;if(m=Q-1|0,!(m&Q))return d|0&&(n[d>>2]=s|0,n[d+4>>2]=m&M|l&0),We=0,Oe=M>>>((s7(Q|0)|0)>>>0),Ee=We,Oe|0;if(m=(P(Q|0)|0)-(P(M|0)|0)|0,m>>>0<=30){l=m+1|0,Q=31-m|0,B=l,s=M<<Q|O>>>(l>>>0),l=M>>>(l>>>0),m=0,Q=O<<Q;break}return d?(n[d>>2]=s|0,n[d+4>>2]=k|l&0,We=0,Oe=0,Ee=We,Oe|0):(We=0,Oe=0,Ee=We,Oe|0)}while(0);if(!B)M=Q,k=0,Q=0;else{j=c|0|0,O=se|f&0,M=IR(j|0,O|0,-1,-1)|0,c=Ee,k=Q,Q=0;do f=k,k=m>>>31|k<<1,m=Q|m<<1,f=s<<1|f>>>31|0,se=s>>>31|l<<1|0,Vv(M|0,c|0,f|0,se|0)|0,Oe=Ee,We=Oe>>31|((Oe|0)<0?-1:0)<<1,Q=We&1,s=Vv(f|0,se|0,We&j|0,(((Oe|0)<0?-1:0)>>31|((Oe|0)<0?-1:0)<<1)&O|0)|0,l=Ee,B=B-1|0;while((B|0)!=0);M=k,k=0}return B=0,d|0&&(n[d>>2]=s,n[d+4>>2]=l),We=(m|0)>>>31|(M|B)<<1|(B<<1|m>>>31)&0|k,Oe=(m<<1|0>>>31)&-2|Q,Ee=We,Oe|0}function wR(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,o7(s,l,c,f,0)|0}function xp(s){s=s|0;var l=0,c=0;return c=s+15&-16|0,l=n[w>>2]|0,s=l+c|0,(c|0)>0&(s|0)<(l|0)|(s|0)<0?(ie()|0,DA(12),-1):(n[w>>2]=s,(s|0)>($()|0)&&(X()|0)==0?(n[w>>2]=l,DA(12),-1):l|0)}function DI(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;if((l|0)<(s|0)&(s|0)<(l+c|0)){for(f=s,l=l+c|0,s=s+c|0;(c|0)>0;)s=s-1|0,l=l-1|0,c=c-1|0,o[s>>0]=o[l>>0]|0;s=f}else Cr(s,l,c)|0;return s|0}function BR(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;return m=E,E=E+16|0,d=m|0,o7(s,l,c,f,d)|0,E=m,Ee=n[d+4>>2]|0,n[d>>2]|0|0}function a7(s){return s=s|0,(s&255)<<24|(s>>8&255)<<16|(s>>16&255)<<8|s>>>24|0}function p3e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,l7[s&1](l|0,c|0,f|0,d|0,m|0)}function h3e(s,l,c){s=s|0,l=l|0,c=y(c),c7[s&1](l|0,y(c))}function g3e(s,l,c){s=s|0,l=l|0,c=+c,u7[s&31](l|0,+c)}function d3e(s,l,c,f){return s=s|0,l=l|0,c=y(c),f=y(f),y(A7[s&0](l|0,y(c),y(f)))}function m3e(s,l){s=s|0,l=l|0,$A[s&127](l|0)}function y3e(s,l,c){s=s|0,l=l|0,c=c|0,ef[s&31](l|0,c|0)}function E3e(s,l){return s=s|0,l=l|0,bg[s&31](l|0)|0}function C3e(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0,f7[s&1](l|0,+c,+f,d|0)}function I3e(s,l,c,f){s=s|0,l=l|0,c=+c,f=+f,t_e[s&1](l|0,+c,+f)}function w3e(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,Zv[s&7](l|0,c|0,f|0)|0}function B3e(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,+r_e[s&1](l|0,c|0,f|0)}function v3e(s,l){return s=s|0,l=l|0,+p7[s&15](l|0)}function D3e(s,l,c){return s=s|0,l=l|0,c=+c,n_e[s&1](l|0,+c)|0}function S3e(s,l,c){return s=s|0,l=l|0,c=c|0,DR[s&15](l|0,c|0)|0}function P3e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=+f,d=+d,m=m|0,i_e[s&1](l|0,c|0,+f,+d,m|0)}function x3e(s,l,c,f,d,m,B){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0,s_e[s&1](l|0,c|0,f|0,d|0,m|0,B|0)}function b3e(s,l,c){return s=s|0,l=l|0,c=c|0,+h7[s&7](l|0,c|0)}function Q3e(s){return s=s|0,$v[s&7]()|0}function k3e(s,l,c,f,d,m){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,g7[s&1](l|0,c|0,f|0,d|0,m|0)|0}function F3e(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=+d,o_e[s&1](l|0,c|0,f|0,+d)}function R3e(s,l,c,f,d,m,B){s=s|0,l=l|0,c=c|0,f=y(f),d=d|0,m=y(m),B=B|0,d7[s&1](l|0,c|0,y(f),d|0,y(m),B|0)}function T3e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,xI[s&15](l|0,c|0,f|0)}function N3e(s){s=s|0,m7[s&0]()}function L3e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f,y7[s&15](l|0,c|0,+f)}function O3e(s,l,c){return s=s|0,l=+l,c=+c,a_e[s&1](+l,+c)|0}function M3e(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,SR[s&15](l|0,c|0,f|0,d|0)}function U3e(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,F(0)}function _3e(s,l){s=s|0,l=y(l),F(1)}function da(s,l){s=s|0,l=+l,F(2)}function H3e(s,l,c){return s=s|0,l=y(l),c=y(c),F(3),$e}function hr(s){s=s|0,F(4)}function SI(s,l){s=s|0,l=l|0,F(5)}function za(s){return s=s|0,F(6),0}function q3e(s,l,c,f){s=s|0,l=+l,c=+c,f=f|0,F(7)}function j3e(s,l,c){s=s|0,l=+l,c=+c,F(8)}function G3e(s,l,c){return s=s|0,l=l|0,c=c|0,F(9),0}function W3e(s,l,c){return s=s|0,l=l|0,c=c|0,F(10),0}function xg(s){return s=s|0,F(11),0}function Y3e(s,l){return s=s|0,l=+l,F(12),0}function PI(s,l){return s=s|0,l=l|0,F(13),0}function K3e(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0,F(14)}function J3e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,F(15)}function vR(s,l){return s=s|0,l=l|0,F(16),0}function V3e(){return F(17),0}function z3e(s,l,c,f,d){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,F(18),0}function X3e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f,F(19)}function Z3e(s,l,c,f,d,m){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=m|0,F(20)}function Xv(s,l,c){s=s|0,l=l|0,c=c|0,F(21)}function $3e(){F(22)}function Vm(s,l,c){s=s|0,l=l|0,c=+c,F(23)}function e_e(s,l){return s=+s,l=+l,F(24),0}function zm(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,F(25)}var l7=[U3e,zLe],c7=[_3e,uo],u7=[da,dI,mI,AF,fF,Dl,yI,pF,Um,ku,CI,hF,Fv,WA,Rv,_m,Tv,Nv,Hm,da,da,da,da,da,da,da,da,da,da,da,da,da],A7=[H3e],$A=[hr,Km,QDe,kDe,FDe,abe,lbe,cbe,DNe,SNe,PNe,OLe,MLe,ULe,sUe,oUe,aUe,ds,Pv,Mm,GA,EI,Sve,Pve,CDe,_De,ZDe,dSe,FSe,VSe,fPe,PPe,qPe,ixe,Cxe,Lxe,Zxe,Sbe,qbe,iQe,CQe,LQe,ZQe,mke,Fke,Yke,lFe,Pc,UFe,tRe,CRe,MRe,$Re,CTe,QTe,RTe,zTe,$Te,dNe,bNe,FNe,VNe,pLe,J9,JOe,DMe,_Me,t4e,B4e,M4e,V4e,Z4e,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr],ef=[SI,iF,sF,gI,Qu,oF,aF,Cp,lF,cF,uF,kv,YA,Ve,ft,jt,Er,In,Sr,dF,pve,Lve,Ike,Nke,qRe,XOe,ILe,FG,SI,SI,SI,SI],bg=[za,LUe,nF,D,ce,Se,It,Et,xt,Nr,fi,Ao,uve,Ave,xve,AFe,nTe,ZNe,tMe,Ka,za,za,za,za,za,za,za,za,za,za,za,za],f7=[q3e,bve],t_e=[j3e,ENe],Zv=[G3e,YG,OUe,_Ue,$Se,Qbe,jFe,s4e],r_e=[W3e,vxe],p7=[xg,_o,rt,wn,Qve,kve,Fve,Rve,Tve,Nve,xg,xg,xg,xg,xg,xg],n_e=[Y3e,PTe],DR=[PI,a3e,fve,vDe,CSe,gPe,QPe,rbe,Ybe,zke,Dv,GMe,PI,PI,PI,PI],i_e=[K3e,rSe],s_e=[J3e,P4e],h7=[vR,ri,Ove,Mve,Uve,_xe,vR,vR],$v=[V3e,_ve,pI,ha,OTe,nNe,LNe,rUe],g7=[z3e,aI],o_e=[X3e,vQe],d7=[Z3e,hve],xI=[Xv,T,is,Xr,fo,LSe,WPe,_Qe,rke,Om,EOe,bMe,q4e,Xv,Xv,Xv],m7=[$3e],y7=[Vm,xv,bv,Qv,jA,Lv,gF,S,lQe,sRe,BTe,Vm,Vm,Vm,Vm,Vm],a_e=[e_e,BNe],SR=[zm,lxe,EFe,vRe,fTe,jTe,cNe,jNe,yLe,aMe,pUe,zm,zm,zm,zm,zm];return{_llvm_bswap_i32:a7,dynCall_idd:O3e,dynCall_i:Q3e,_i64Subtract:Vv,___udivdi3:wR,dynCall_vif:h3e,setThrew:Eu,dynCall_viii:T3e,_bitshift64Lshr:zv,_bitshift64Shl:i7,dynCall_vi:m3e,dynCall_viiddi:P3e,dynCall_diii:B3e,dynCall_iii:S3e,_memset:Jm,_sbrk:xp,_memcpy:Cr,__GLOBAL__sub_I_Yoga_cpp:Lm,dynCall_vii:y3e,___uremdi3:BR,dynCall_vid:g3e,stackAlloc:so,_nbind_init:vUe,getTempRet0:Oa,dynCall_di:v3e,dynCall_iid:D3e,setTempRet0:bA,_i64Add:IR,dynCall_fiff:d3e,dynCall_iiii:w3e,_emscripten_get_global_libc:NUe,dynCall_viid:L3e,dynCall_viiid:F3e,dynCall_viififi:R3e,dynCall_ii:E3e,__GLOBAL__sub_I_Binding_cc:_Oe,dynCall_viiii:M3e,dynCall_iiiiii:k3e,stackSave:Cl,dynCall_viiiii:p3e,__GLOBAL__sub_I_nbind_cc:Hve,dynCall_vidd:I3e,_free:Kv,runPostSets:f3e,dynCall_viiiiii:x3e,establishStackSpace:qi,_memmove:DI,stackRestore:yu,_malloc:Yv,__GLOBAL__sub_I_common_cc:oLe,dynCall_viddi:C3e,dynCall_dii:b3e,dynCall_v:N3e}}(Module.asmGlobalArg,Module.asmLibraryArg,buffer),_llvm_bswap_i32=Module._llvm_bswap_i32=asm._llvm_bswap_i32,getTempRet0=Module.getTempRet0=asm.getTempRet0,___udivdi3=Module.___udivdi3=asm.___udivdi3,setThrew=Module.setThrew=asm.setThrew,_bitshift64Lshr=Module._bitshift64Lshr=asm._bitshift64Lshr,_bitshift64Shl=Module._bitshift64Shl=asm._bitshift64Shl,_memset=Module._memset=asm._memset,_sbrk=Module._sbrk=asm._sbrk,_memcpy=Module._memcpy=asm._memcpy,stackAlloc=Module.stackAlloc=asm.stackAlloc,___uremdi3=Module.___uremdi3=asm.___uremdi3,_nbind_init=Module._nbind_init=asm._nbind_init,_i64Subtract=Module._i64Subtract=asm._i64Subtract,setTempRet0=Module.setTempRet0=asm.setTempRet0,_i64Add=Module._i64Add=asm._i64Add,_emscripten_get_global_libc=Module._emscripten_get_global_libc=asm._emscripten_get_global_libc,__GLOBAL__sub_I_Yoga_cpp=Module.__GLOBAL__sub_I_Yoga_cpp=asm.__GLOBAL__sub_I_Yoga_cpp,__GLOBAL__sub_I_Binding_cc=Module.__GLOBAL__sub_I_Binding_cc=asm.__GLOBAL__sub_I_Binding_cc,stackSave=Module.stackSave=asm.stackSave,__GLOBAL__sub_I_nbind_cc=Module.__GLOBAL__sub_I_nbind_cc=asm.__GLOBAL__sub_I_nbind_cc,_free=Module._free=asm._free,runPostSets=Module.runPostSets=asm.runPostSets,establishStackSpace=Module.establishStackSpace=asm.establishStackSpace,_memmove=Module._memmove=asm._memmove,stackRestore=Module.stackRestore=asm.stackRestore,_malloc=Module._malloc=asm._malloc,__GLOBAL__sub_I_common_cc=Module.__GLOBAL__sub_I_common_cc=asm.__GLOBAL__sub_I_common_cc,dynCall_viiiii=Module.dynCall_viiiii=asm.dynCall_viiiii,dynCall_vif=Module.dynCall_vif=asm.dynCall_vif,dynCall_vid=Module.dynCall_vid=asm.dynCall_vid,dynCall_fiff=Module.dynCall_fiff=asm.dynCall_fiff,dynCall_vi=Module.dynCall_vi=asm.dynCall_vi,dynCall_vii=Module.dynCall_vii=asm.dynCall_vii,dynCall_ii=Module.dynCall_ii=asm.dynCall_ii,dynCall_viddi=Module.dynCall_viddi=asm.dynCall_viddi,dynCall_vidd=Module.dynCall_vidd=asm.dynCall_vidd,dynCall_iiii=Module.dynCall_iiii=asm.dynCall_iiii,dynCall_diii=Module.dynCall_diii=asm.dynCall_diii,dynCall_di=Module.dynCall_di=asm.dynCall_di,dynCall_iid=Module.dynCall_iid=asm.dynCall_iid,dynCall_iii=Module.dynCall_iii=asm.dynCall_iii,dynCall_viiddi=Module.dynCall_viiddi=asm.dynCall_viiddi,dynCall_viiiiii=Module.dynCall_viiiiii=asm.dynCall_viiiiii,dynCall_dii=Module.dynCall_dii=asm.dynCall_dii,dynCall_i=Module.dynCall_i=asm.dynCall_i,dynCall_iiiiii=Module.dynCall_iiiiii=asm.dynCall_iiiiii,dynCall_viiid=Module.dynCall_viiid=asm.dynCall_viiid,dynCall_viififi=Module.dynCall_viififi=asm.dynCall_viififi,dynCall_viii=Module.dynCall_viii=asm.dynCall_viii,dynCall_v=Module.dynCall_v=asm.dynCall_v,dynCall_viid=Module.dynCall_viid=asm.dynCall_viid,dynCall_idd=Module.dynCall_idd=asm.dynCall_idd,dynCall_viiii=Module.dynCall_viiii=asm.dynCall_viiii;Runtime.stackAlloc=Module.stackAlloc,Runtime.stackSave=Module.stackSave,Runtime.stackRestore=Module.stackRestore,Runtime.establishStackSpace=Module.establishStackSpace,Runtime.setTempRet0=Module.setTempRet0,Runtime.getTempRet0=Module.getTempRet0,Module.asm=asm;function ExitStatus(t){this.name="ExitStatus",this.message="Program terminated with exit("+t+")",this.status=t}ExitStatus.prototype=new Error,ExitStatus.prototype.constructor=ExitStatus;var initialStackTop,preloadStartTime=null,calledMain=!1;dependenciesFulfilled=function t(){Module.calledRun||run(),Module.calledRun||(dependenciesFulfilled=t)},Module.callMain=Module.callMain=function t(e){e=e||[],ensureInitRuntime();var r=e.length+1;function o(){for(var p=0;p<4-1;p++)a.push(0)}var a=[allocate(intArrayFromString(Module.thisProgram),"i8",ALLOC_NORMAL)];o();for(var n=0;n<r-1;n=n+1)a.push(allocate(intArrayFromString(e[n]),"i8",ALLOC_NORMAL)),o();a.push(0),a=allocate(a,"i32",ALLOC_NORMAL);try{var u=Module._main(r,a,0);exit(u,!0)}catch(p){if(p instanceof ExitStatus)return;if(p=="SimulateInfiniteLoop"){Module.noExitRuntime=!0;return}else{var A=p;p&&typeof p=="object"&&p.stack&&(A=[p,p.stack]),Module.printErr("exception thrown: "+A),Module.quit(1,p)}}finally{calledMain=!0}};function run(t){if(t=t||Module.arguments,preloadStartTime===null&&(preloadStartTime=Date.now()),runDependencies>0||(preRun(),runDependencies>0)||Module.calledRun)return;function e(){Module.calledRun||(Module.calledRun=!0,!ABORT&&(ensureInitRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),Module._main&&shouldRunNow&&Module.callMain(t),postRun()))}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),e()},1)):e()}Module.run=Module.run=run;function exit(t,e){e&&Module.noExitRuntime||(Module.noExitRuntime||(ABORT=!0,EXITSTATUS=t,STACKTOP=initialStackTop,exitRuntime(),Module.onExit&&Module.onExit(t)),ENVIRONMENT_IS_NODE&&process.exit(t),Module.quit(t,new ExitStatus(t)))}Module.exit=Module.exit=exit;var abortDecorators=[];function abort(t){Module.onAbort&&Module.onAbort(t),t!==void 0?(Module.print(t),Module.printErr(t),t=JSON.stringify(t)):t="",ABORT=!0,EXITSTATUS=1;var e=` | 285 | `+Module.extraStackTrace()),demangleAll(t)}Module.stackTrace=stackTrace;var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module.HEAP8=HEAP8=new Int8Array(buffer),Module.HEAP16=HEAP16=new Int16Array(buffer),Module.HEAP32=HEAP32=new Int32Array(buffer),Module.HEAPU8=HEAPU8=new Uint8Array(buffer),Module.HEAPU16=HEAPU16=new Uint16Array(buffer),Module.HEAPU32=HEAPU32=new Uint32Array(buffer),Module.HEAPF32=HEAPF32=new Float32Array(buffer),Module.HEAPF64=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed,STACK_BASE,STACKTOP,STACK_MAX,DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0,staticSealed=!1;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||134217728;TOTAL_MEMORY<TOTAL_STACK&&Module.printErr("TOTAL_MEMORY should be larger than TOTAL_STACK, was "+TOTAL_MEMORY+"! (TOTAL_STACK="+TOTAL_STACK+")"),Module.buffer?buffer=Module.buffer:buffer=new ArrayBuffer(TOTAL_MEMORY),updateGlobalBufferViews();function getTotalMemory(){return TOTAL_MEMORY}if(HEAP32[0]=1668509029,HEAP16[1]=25459,HEAPU8[2]!==115||HEAPU8[3]!==99)throw"Runtime error: expected the system to be little-endian!";Module.HEAP=HEAP,Module.buffer=buffer,Module.HEAP8=HEAP8,Module.HEAP16=HEAP16,Module.HEAP32=HEAP32,Module.HEAPU8=HEAPU8,Module.HEAPU16=HEAPU16,Module.HEAPU32=HEAPU32,Module.HEAPF32=HEAPF32,Module.HEAPF64=HEAPF64;function callRuntimeCallbacks(t){for(;t.length>0;){var e=t.shift();if(typeof e=="function"){e();continue}var r=e.func;typeof r=="number"?e.arg===void 0?Module.dynCall_v(r):Module.dynCall_vi(r,e.arg):r(e.arg===void 0?null:e.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){runtimeInitialized||(runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__))}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__),runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(t){__ATPRERUN__.unshift(t)}Module.addOnPreRun=addOnPreRun;function addOnInit(t){__ATINIT__.unshift(t)}Module.addOnInit=addOnInit;function addOnPreMain(t){__ATMAIN__.unshift(t)}Module.addOnPreMain=addOnPreMain;function addOnExit(t){__ATEXIT__.unshift(t)}Module.addOnExit=addOnExit;function addOnPostRun(t){__ATPOSTRUN__.unshift(t)}Module.addOnPostRun=addOnPostRun;function intArrayFromString(t,e,r){var o=r>0?r:lengthBytesUTF8(t)+1,a=new Array(o),n=stringToUTF8Array(t,a,0,a.length);return e&&(a.length=n),a}Module.intArrayFromString=intArrayFromString;function intArrayToString(t){for(var e=[],r=0;r<t.length;r++){var o=t[r];o>255&&(o&=255),e.push(String.fromCharCode(o))}return e.join("")}Module.intArrayToString=intArrayToString;function writeStringToMemory(t,e,r){Runtime.warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!");var o,a;r&&(a=e+lengthBytesUTF8(t),o=HEAP8[a]),stringToUTF8(t,e,1/0),r&&(HEAP8[a]=o)}Module.writeStringToMemory=writeStringToMemory;function writeArrayToMemory(t,e){HEAP8.set(t,e)}Module.writeArrayToMemory=writeArrayToMemory;function writeAsciiToMemory(t,e,r){for(var o=0;o<t.length;++o)HEAP8[e++>>0]=t.charCodeAt(o);r||(HEAP8[e>>0]=0)}if(Module.writeAsciiToMemory=writeAsciiToMemory,(!Math.imul||Math.imul(4294967295,5)!==-5)&&(Math.imul=function t(e,r){var o=e>>>16,a=e&65535,n=r>>>16,u=r&65535;return a*u+(o*u+a*n<<16)|0}),Math.imul=Math.imul,!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(t){return froundBuffer[0]=t,froundBuffer[0]}}Math.fround=Math.fround,Math.clz32||(Math.clz32=function(t){t=t>>>0;for(var e=0;e<32;e++)if(t&1<<31-e)return e;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(t){return t<0?Math.ceil(t):Math.floor(t)}),Math.trunc=Math.trunc;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_round=Math.round,Math_min=Math.min,Math_clz32=Math.clz32,Math_trunc=Math.trunc,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(t){return t}function addRunDependency(t){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}Module.addRunDependency=addRunDependency;function removeRunDependency(t){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var e=dependenciesFulfilled;dependenciesFulfilled=null,e()}}Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={};var ASM_CONSTS=[function(t,e,r,o,a,n,u,A){return _nbind.callbackSignatureList[t].apply(this,arguments)}];function _emscripten_asm_const_iiiiiiii(t,e,r,o,a,n,u,A){return ASM_CONSTS[t](e,r,o,a,n,u,A)}function _emscripten_asm_const_iiiii(t,e,r,o,a){return ASM_CONSTS[t](e,r,o,a)}function _emscripten_asm_const_iiidddddd(t,e,r,o,a,n,u,A,p){return ASM_CONSTS[t](e,r,o,a,n,u,A,p)}function _emscripten_asm_const_iiididi(t,e,r,o,a,n,u){return ASM_CONSTS[t](e,r,o,a,n,u)}function _emscripten_asm_const_iiii(t,e,r,o){return ASM_CONSTS[t](e,r,o)}function _emscripten_asm_const_iiiid(t,e,r,o,a){return ASM_CONSTS[t](e,r,o,a)}function _emscripten_asm_const_iiiiii(t,e,r,o,a,n){return ASM_CONSTS[t](e,r,o,a,n)}STATIC_BASE=Runtime.GLOBAL_BASE,STATICTOP=STATIC_BASE+12800,__ATINIT__.push({func:function(){__GLOBAL__sub_I_Yoga_cpp()}},{func:function(){__GLOBAL__sub_I_nbind_cc()}},{func:function(){__GLOBAL__sub_I_common_cc()}},{func:function(){__GLOBAL__sub_I_Binding_cc()}}),allocate([0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,192,127,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,128,191,0,0,128,191,0,0,192,127,0,0,0,0,0,0,0,0,0,0,128,63,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,190,12,0,0,200,12,0,0,208,12,0,0,216,12,0,0,230,12,0,0,242,12,0,0,1,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0,0,192,127,3,0,0,0,180,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,182,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,183,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,184,45,0,0,185,45,0,0,181,45,0,0,181,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,148,4,0,0,3,0,0,0,187,45,0,0,164,4,0,0,188,45,0,0,2,0,0,0,189,45,0,0,164,4,0,0,188,45,0,0,185,45,0,0,164,4,0,0,185,45,0,0,164,4,0,0,188,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,183,45,0,0,182,45,0,0,181,45,0,0,190,45,0,0,190,45,0,0,182,45,0,0,182,45,0,0,185,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,185,45,0,0,48,5,0,0,3,0,0,0,56,5,0,0,1,0,0,0,189,45,0,0,185,45,0,0,164,4,0,0,76,5,0,0,2,0,0,0,191,45,0,0,186,45,0,0,182,45,0,0,185,45,0,0,192,45,0,0,185,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,76,5,0,0,76,5,0,0,136,5,0,0,182,45,0,0,181,45,0,0,2,0,0,0,190,45,0,0,136,5,0,0,56,19,0,0,156,5,0,0,2,0,0,0,184,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,1,0,0,0,10,0,0,0,204,5,0,0,181,45,0,0,181,45,0,0,2,0,0,0,180,45,0,0,204,5,0,0,2,0,0,0,195,45,0,0,236,5,0,0,97,19,0,0,198,45,0,0,211,45,0,0,212,45,0,0,213,45,0,0,214,45,0,0,215,45,0,0,188,45,0,0,182,45,0,0,216,45,0,0,217,45,0,0,218,45,0,0,219,45,0,0,192,45,0,0,181,45,0,0,0,0,0,0,185,45,0,0,110,19,0,0,186,45,0,0,115,19,0,0,221,45,0,0,120,19,0,0,148,4,0,0,132,19,0,0,96,6,0,0,145,19,0,0,222,45,0,0,164,19,0,0,223,45,0,0,173,19,0,0,0,0,0,0,3,0,0,0,104,6,0,0,1,0,0,0,187,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,185,45,0,0,224,45,0,0,164,6,0,0,188,45,0,0,172,6,0,0,180,6,0,0,2,0,0,0,188,6,0,0,7,0,0,0,224,45,0,0,7,0,0,0,164,6,0,0,1,0,0,0,213,45,0,0,185,45,0,0,224,45,0,0,172,6,0,0,185,45,0,0,224,45,0,0,164,6,0,0,185,45,0,0,224,45,0,0,211,45,0,0,211,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,172,6,0,0,222,45,0,0,211,45,0,0,224,45,0,0,188,45,0,0,222,45,0,0,211,45,0,0,40,7,0,0,188,45,0,0,2,0,0,0,224,45,0,0,185,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,222,45,0,0,224,45,0,0,148,4,0,0,185,45,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,185,45,0,0,164,6,0,0,148,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,148,7,0,0,2,0,0,0,225,45,0,0,183,45,0,0,188,45,0,0,168,7,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,9,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,242,45,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,110,111,100,101,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,119,104,105,99,104,32,115,116,105,108,108,32,104,97,115,32,99,104,105,108,100,114,101,110,32,97,116,116,97,99,104,101,100,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,115,116,105,108,108,32,97,116,116,97,99,104,101,100,32,116,111,32,97,32,112,97,114,101,110,116,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,99,111,110,102,105,103,0,67,97,110,110,111,116,32,115,101,116,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,67,104,105,108,100,32,97,108,114,101,97,100,121,32,104,97,115,32,97,32,112,97,114,101,110,116,44,32,105,116,32,109,117,115,116,32,98,101,32,114,101,109,111,118,101,100,32,102,105,114,115,116,46,0,67,97,110,110,111,116,32,97,100,100,32,99,104,105,108,100,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,79,110,108,121,32,108,101,97,102,32,110,111,100,101,115,32,119,105,116,104,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,115,104,111,117,108,100,32,109,97,110,117,97,108,108,121,32,109,97,114,107,32,116,104,101,109,115,101,108,118,101,115,32,97,115,32,100,105,114,116,121,0,67,97,110,110,111,116,32,103,101,116,32,108,97,121,111,117,116,32,112,114,111,112,101,114,116,105,101,115,32,111,102,32,109,117,108,116,105,45,101,100,103,101,32,115,104,111,114,116,104,97,110,100,115,0,37,115,37,100,46,123,91,115,107,105,112,112,101,100,93,32,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,61,62,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,37,115,37,100,46,123,37,115,0,42,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,37,115,10,0,37,115,37,100,46,125,37,115,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,79,117,116,32,111,102,32,99,97,99,104,101,32,101,110,116,114,105,101,115,33,10,0,83,99,97,108,101,32,102,97,99,116,111,114,32,115,104,111,117,108,100,32,110,111,116,32,98,101,32,108,101,115,115,32,116,104,97,110,32,122,101,114,111,0,105,110,105,116,105,97,108,0,37,115,10,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,85,78,68,69,70,73,78,69,68,0,69,88,65,67,84,76,89,0,65,84,95,77,79,83,84,0,76,65,89,95,85,78,68,69,70,73,78,69,68,0,76,65,89,95,69,88,65,67,84,76,89,0,76,65,89,95,65,84,95,77,79,83,84,0,97,118,97,105,108,97,98,108,101,87,105,100,116,104,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,119,105,100,116,104,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,97,118,97,105,108,97,98,108,101,72,101,105,103,104,116,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,104,101,105,103,104,116,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,102,108,101,120,0,115,116,114,101,116,99,104,0,109,117,108,116,105,108,105,110,101,45,115,116,114,101,116,99,104,0,69,120,112,101,99,116,101,100,32,110,111,100,101,32,116,111,32,104,97,118,101,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,0,109,101,97,115,117,114,101,0,69,120,112,101,99,116,32,99,117,115,116,111,109,32,98,97,115,101,108,105,110,101,32,102,117,110,99,116,105,111,110,32,116,111,32,110,111,116,32,114,101,116,117,114,110,32,78,97,78,0,97,98,115,45,109,101,97,115,117,114,101,0,97,98,115,45,108,97,121,111,117,116,0,78,111,100,101,0,99,114,101,97,116,101,68,101,102,97,117,108,116,0,99,114,101,97,116,101,87,105,116,104,67,111,110,102,105,103,0,100,101,115,116,114,111,121,0,114,101,115,101,116,0,99,111,112,121,83,116,121,108,101,0,115,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,115,101,116,80,111,115,105,116,105,111,110,0,115,101,116,80,111,115,105,116,105,111,110,80,101,114,99,101,110,116,0,115,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,115,101,116,65,108,105,103,110,73,116,101,109,115,0,115,101,116,65,108,105,103,110,83,101,108,102,0,115,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,115,101,116,70,108,101,120,87,114,97,112,0,115,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,115,101,116,77,97,114,103,105,110,0,115,101,116,77,97,114,103,105,110,80,101,114,99,101,110,116,0,115,101,116,77,97,114,103,105,110,65,117,116,111,0,115,101,116,79,118,101,114,102,108,111,119,0,115,101,116,68,105,115,112,108,97,121,0,115,101,116,70,108,101,120,0,115,101,116,70,108,101,120,66,97,115,105,115,0,115,101,116,70,108,101,120,66,97,115,105,115,80,101,114,99,101,110,116,0,115,101,116,70,108,101,120,71,114,111,119,0,115,101,116,70,108,101,120,83,104,114,105,110,107,0,115,101,116,87,105,100,116,104,0,115,101,116,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,87,105,100,116,104,65,117,116,111,0,115,101,116,72,101,105,103,104,116,0,115,101,116,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,72,101,105,103,104,116,65,117,116,111,0,115,101,116,77,105,110,87,105,100,116,104,0,115,101,116,77,105,110,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,105,110,72,101,105,103,104,116,0,115,101,116,77,105,110,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,77,97,120,87,105,100,116,104,0,115,101,116,77,97,120,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,97,120,72,101,105,103,104,116,0,115,101,116,77,97,120,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,65,115,112,101,99,116,82,97,116,105,111,0,115,101,116,66,111,114,100,101,114,0,115,101,116,80,97,100,100,105,110,103,0,115,101,116,80,97,100,100,105,110,103,80,101,114,99,101,110,116,0,103,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,103,101,116,80,111,115,105,116,105,111,110,0,103,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,103,101,116,65,108,105,103,110,73,116,101,109,115,0,103,101,116,65,108,105,103,110,83,101,108,102,0,103,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,103,101,116,70,108,101,120,87,114,97,112,0,103,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,103,101,116,77,97,114,103,105,110,0,103,101,116,70,108,101,120,66,97,115,105,115,0,103,101,116,70,108,101,120,71,114,111,119,0,103,101,116,70,108,101,120,83,104,114,105,110,107,0,103,101,116,87,105,100,116,104,0,103,101,116,72,101,105,103,104,116,0,103,101,116,77,105,110,87,105,100,116,104,0,103,101,116,77,105,110,72,101,105,103,104,116,0,103,101,116,77,97,120,87,105,100,116,104,0,103,101,116,77,97,120,72,101,105,103,104,116,0,103,101,116,65,115,112,101,99,116,82,97,116,105,111,0,103,101,116,66,111,114,100,101,114,0,103,101,116,79,118,101,114,102,108,111,119,0,103,101,116,68,105,115,112,108,97,121,0,103,101,116,80,97,100,100,105,110,103,0,105,110,115,101,114,116,67,104,105,108,100,0,114,101,109,111,118,101,67,104,105,108,100,0,103,101,116,67,104,105,108,100,67,111,117,110,116,0,103,101,116,80,97,114,101,110,116,0,103,101,116,67,104,105,108,100,0,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,117,110,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,109,97,114,107,68,105,114,116,121,0,105,115,68,105,114,116,121,0,99,97,108,99,117,108,97,116,101,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,76,101,102,116,0,103,101,116,67,111,109,112,117,116,101,100,82,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,84,111,112,0,103,101,116,67,111,109,112,117,116,101,100,66,111,116,116,111,109,0,103,101,116,67,111,109,112,117,116,101,100,87,105,100,116,104,0,103,101,116,67,111,109,112,117,116,101,100,72,101,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,77,97,114,103,105,110,0,103,101,116,67,111,109,112,117,116,101,100,66,111,114,100,101,114,0,103,101,116,67,111,109,112,117,116,101,100,80,97,100,100,105,110,103,0,67,111,110,102,105,103,0,99,114,101,97,116,101,0,115,101,116,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,115,101,116,80,111,105,110,116,83,99,97,108,101,70,97,99,116,111,114,0,105,115,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,86,97,108,117,101,0,76,97,121,111,117,116,0,83,105,122,101,0,103,101,116,73,110,115,116,97,110,99,101,67,111,117,110,116,0,73,110,116,54,52,0,1,1,1,2,2,4,4,4,4,8,8,4,8,118,111,105,100,0,98,111,111,108,0,115,116,100,58,58,115,116,114,105,110,103,0,99,98,70,117,110,99,116,105,111,110,32,38,0,99,111,110,115,116,32,99,98,70,117,110,99,116,105,111,110,32,38,0,69,120,116,101,114,110,97,108,0,66,117,102,102,101,114,0,78,66,105,110,100,73,68,0,78,66,105,110,100,0,98,105,110,100,95,118,97,108,117,101,0,114,101,102,108,101,99,116,0,113,117,101,114,121,84,121,112,101,0,108,97,108,108,111,99,0,108,114,101,115,101,116,0,123,114,101,116,117,114,110,40,95,110,98,105,110,100,46,99,97,108,108,98,97,99,107,83,105,103,110,97,116,117,114,101,76,105,115,116,91,36,48,93,46,97,112,112,108,121,40,116,104,105,115,44,97,114,103,117,109,101,110,116,115,41,41,59,125,0,95,110,98,105,110,100,95,110,101,119,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=STATICTOP;STATICTOP+=16;function _atexit(t,e){__ATEXIT__.unshift({func:t,arg:e})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}function _abort(){Module.abort()}function __ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj(){Module.printErr("missing function: _ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj"),abort(-1)}function __decorate(t,e,r,o){var a=arguments.length,n=a<3?e:o===null?o=Object.getOwnPropertyDescriptor(e,r):o,u;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")n=Reflect.decorate(t,e,r,o);else for(var A=t.length-1;A>=0;A--)(u=t[A])&&(n=(a<3?u(n):a>3?u(e,r,n):u(e,r))||n);return a>3&&n&&Object.defineProperty(e,r,n),n}function _defineHidden(t){return function(e,r){Object.defineProperty(e,r,{configurable:!1,enumerable:!1,value:t,writable:!0})}}var _nbind={};function __nbind_free_external(t){_nbind.externalList[t].dereference(t)}function __nbind_reference_external(t){_nbind.externalList[t].reference()}function _llvm_stackrestore(t){var e=_llvm_stacksave,r=e.LLVM_SAVEDSTACKS[t];e.LLVM_SAVEDSTACKS.splice(t,1),Runtime.stackRestore(r)}function __nbind_register_pool(t,e,r,o){_nbind.Pool.pageSize=t,_nbind.Pool.usedPtr=e/4,_nbind.Pool.rootPtr=r,_nbind.Pool.pagePtr=o/4,HEAP32[e/4]=16909060,HEAP8[e]==1&&(_nbind.bigEndian=!0),HEAP32[e/4]=0,_nbind.makeTypeKindTbl=(n={},n[1024]=_nbind.PrimitiveType,n[64]=_nbind.Int64Type,n[2048]=_nbind.BindClass,n[3072]=_nbind.BindClassPtr,n[4096]=_nbind.SharedClassPtr,n[5120]=_nbind.ArrayType,n[6144]=_nbind.ArrayType,n[7168]=_nbind.CStringType,n[9216]=_nbind.CallbackType,n[10240]=_nbind.BindType,n),_nbind.makeTypeNameTbl={Buffer:_nbind.BufferType,External:_nbind.ExternalType,Int64:_nbind.Int64Type,_nbind_new:_nbind.CreateValueType,bool:_nbind.BooleanType,"cbFunction &":_nbind.CallbackType,"const cbFunction &":_nbind.CallbackType,"const std::string &":_nbind.StringType,"std::string":_nbind.StringType},Module.toggleLightGC=_nbind.toggleLightGC,_nbind.callUpcast=Module.dynCall_ii;var a=_nbind.makeType(_nbind.constructType,{flags:2048,id:0,name:""});a.proto=Module,_nbind.BindClass.list.push(a);var n}function _emscripten_set_main_loop_timing(t,e){if(Browser.mainLoop.timingMode=t,Browser.mainLoop.timingValue=e,!Browser.mainLoop.func)return 1;if(t==0)Browser.mainLoop.scheduler=function(){var u=Math.max(0,Browser.mainLoop.tickStartTime+e-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,u)},Browser.mainLoop.method="timeout";else if(t==1)Browser.mainLoop.scheduler=function(){Browser.requestAnimationFrame(Browser.mainLoop.runner)},Browser.mainLoop.method="rAF";else if(t==2){if(!window.setImmediate){let n=function(u){u.source===window&&u.data===o&&(u.stopPropagation(),r.shift()())};var a=n,r=[],o="setimmediate";window.addEventListener("message",n,!0),window.setImmediate=function(A){r.push(A),ENVIRONMENT_IS_WORKER?(Module.setImmediates===void 0&&(Module.setImmediates=[]),Module.setImmediates.push(A),window.postMessage({target:o})):window.postMessage(o,"*")}}Browser.mainLoop.scheduler=function(){window.setImmediate(Browser.mainLoop.runner)},Browser.mainLoop.method="immediate"}return 0}function _emscripten_get_now(){abort()}function _emscripten_set_main_loop(t,e,r,o,a){Module.noExitRuntime=!0,assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."),Browser.mainLoop.func=t,Browser.mainLoop.arg=o;var n;typeof o<"u"?n=function(){Module.dynCall_vi(t,o)}:n=function(){Module.dynCall_v(t)};var u=Browser.mainLoop.currentlyRunningMainloop;if(Browser.mainLoop.runner=function(){if(!ABORT){if(Browser.mainLoop.queue.length>0){var p=Date.now(),h=Browser.mainLoop.queue.shift();if(h.func(h.arg),Browser.mainLoop.remainingBlockers){var C=Browser.mainLoop.remainingBlockers,w=C%1==0?C-1:Math.floor(C);h.counted?Browser.mainLoop.remainingBlockers=w:(w=w+.5,Browser.mainLoop.remainingBlockers=(8*C+w)/9)}if(console.log('main loop blocker "'+h.name+'" took '+(Date.now()-p)+" ms"),Browser.mainLoop.updateStatus(),u<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(!(u<Browser.mainLoop.currentlyRunningMainloop)){if(Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0,Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else Browser.mainLoop.timingMode==0&&(Browser.mainLoop.tickStartTime=_emscripten_get_now());Browser.mainLoop.method==="timeout"&&Module.ctx&&(Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!"),Browser.mainLoop.method=""),Browser.mainLoop.runIter(n),!(u<Browser.mainLoop.currentlyRunningMainloop)&&(typeof SDL=="object"&&SDL.audio&&SDL.audio.queueNewAudioData&&SDL.audio.queueNewAudioData(),Browser.mainLoop.scheduler())}}},a||(e&&e>0?_emscripten_set_main_loop_timing(0,1e3/e):_emscripten_set_main_loop_timing(1,1),Browser.mainLoop.scheduler()),r)throw"SimulateInfiniteLoop"}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null,Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var t=Browser.mainLoop.timingMode,e=Browser.mainLoop.timingValue,r=Browser.mainLoop.func;Browser.mainLoop.func=null,_emscripten_set_main_loop(r,0,!1,Browser.mainLoop.arg,!0),_emscripten_set_main_loop_timing(t,e),Browser.mainLoop.scheduler()},updateStatus:function(){if(Module.setStatus){var t=Module.statusMessage||"Please wait...",e=Browser.mainLoop.remainingBlockers,r=Browser.mainLoop.expectedBlockers;e?e<r?Module.setStatus(t+" ("+(r-e)+"/"+r+")"):Module.setStatus(t):Module.setStatus("")}},runIter:function(t){if(!ABORT){if(Module.preMainLoop){var e=Module.preMainLoop();if(e===!1)return}try{t()}catch(r){if(r instanceof ExitStatus)return;throw r&&typeof r=="object"&&r.stack&&Module.printErr("exception thrown: "+[r,r.stack]),r}Module.postMainLoop&&Module.postMainLoop()}}},isFullscreen:!1,pointerLock:!1,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(Module.preloadPlugins||(Module.preloadPlugins=[]),Browser.initted)return;Browser.initted=!0;try{new Blob,Browser.hasBlobConstructor=!0}catch{Browser.hasBlobConstructor=!1,console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=typeof MozBlobBuilder<"u"?MozBlobBuilder:typeof WebKitBlobBuilder<"u"?WebKitBlobBuilder:Browser.hasBlobConstructor?null:console.log("warning: no BlobBuilder"),Browser.URLObject=typeof window<"u"?window.URL?window.URL:window.webkitURL:void 0,!Module.noImageDecoding&&typeof Browser.URLObject>"u"&&(console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."),Module.noImageDecoding=!0);var t={};t.canHandle=function(n){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(n)},t.handle=function(n,u,A,p){var h=null;if(Browser.hasBlobConstructor)try{h=new Blob([n],{type:Browser.getMimetype(u)}),h.size!==n.length&&(h=new Blob([new Uint8Array(n).buffer],{type:Browser.getMimetype(u)}))}catch(b){Runtime.warnOnce("Blob constructor present but fails: "+b+"; falling back to blob builder")}if(!h){var C=new Browser.BlobBuilder;C.append(new Uint8Array(n).buffer),h=C.getBlob()}var w=Browser.URLObject.createObjectURL(h),v=new Image;v.onload=function(){assert(v.complete,"Image "+u+" could not be decoded");var E=document.createElement("canvas");E.width=v.width,E.height=v.height;var R=E.getContext("2d");R.drawImage(v,0,0),Module.preloadedImages[u]=E,Browser.URLObject.revokeObjectURL(w),A&&A(n)},v.onerror=function(E){console.log("Image "+w+" could not be decoded"),p&&p()},v.src=w},Module.preloadPlugins.push(t);var e={};e.canHandle=function(n){return!Module.noAudioDecoding&&n.substr(-4)in{".ogg":1,".wav":1,".mp3":1}},e.handle=function(n,u,A,p){var h=!1;function C(R){h||(h=!0,Module.preloadedAudios[u]=R,A&&A(n))}function w(){h||(h=!0,Module.preloadedAudios[u]=new Audio,p&&p())}if(Browser.hasBlobConstructor){try{var v=new Blob([n],{type:Browser.getMimetype(u)})}catch{return w()}var b=Browser.URLObject.createObjectURL(v),E=new Audio;E.addEventListener("canplaythrough",function(){C(E)},!1),E.onerror=function(L){if(h)return;console.log("warning: browser could not fully decode audio "+u+", trying slower base64 approach");function _(V){for(var re="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ae="=",he="",pe=0,De=0,ge=0;ge<V.length;ge++)for(pe=pe<<8|V[ge],De+=8;De>=6;){var le=pe>>De-6&63;De-=6,he+=re[le]}return De==2?(he+=re[(pe&3)<<4],he+=ae+ae):De==4&&(he+=re[(pe&15)<<2],he+=ae),he}E.src="data:audio/x-"+u.substr(-3)+";base64,"+_(n),C(E)},E.src=b,Browser.safeSetTimeout(function(){C(E)},1e4)}else return w()},Module.preloadPlugins.push(e);function r(){Browser.pointerLock=document.pointerLockElement===Module.canvas||document.mozPointerLockElement===Module.canvas||document.webkitPointerLockElement===Module.canvas||document.msPointerLockElement===Module.canvas}var o=Module.canvas;o&&(o.requestPointerLock=o.requestPointerLock||o.mozRequestPointerLock||o.webkitRequestPointerLock||o.msRequestPointerLock||function(){},o.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},o.exitPointerLock=o.exitPointerLock.bind(document),document.addEventListener("pointerlockchange",r,!1),document.addEventListener("mozpointerlockchange",r,!1),document.addEventListener("webkitpointerlockchange",r,!1),document.addEventListener("mspointerlockchange",r,!1),Module.elementPointerLock&&o.addEventListener("click",function(a){!Browser.pointerLock&&Module.canvas.requestPointerLock&&(Module.canvas.requestPointerLock(),a.preventDefault())},!1))},createContext:function(t,e,r,o){if(e&&Module.ctx&&t==Module.canvas)return Module.ctx;var a,n;if(e){var u={antialias:!1,alpha:!1};if(o)for(var A in o)u[A]=o[A];n=GL.createContext(t,u),n&&(a=GL.getContext(n).GLctx)}else a=t.getContext("2d");return a?(r&&(e||assert(typeof GLctx>"u","cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),Module.ctx=a,e&&GL.makeContextCurrent(n),Module.useWebGL=e,Browser.moduleContextCreatedCallbacks.forEach(function(p){p()}),Browser.init()),a):null},destroyContext:function(t,e,r){},fullscreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullscreen:function(t,e,r){Browser.lockPointer=t,Browser.resizeCanvas=e,Browser.vrDevice=r,typeof Browser.lockPointer>"u"&&(Browser.lockPointer=!0),typeof Browser.resizeCanvas>"u"&&(Browser.resizeCanvas=!1),typeof Browser.vrDevice>"u"&&(Browser.vrDevice=null);var o=Module.canvas;function a(){Browser.isFullscreen=!1;var u=o.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===u?(o.exitFullscreen=document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){},o.exitFullscreen=o.exitFullscreen.bind(document),Browser.lockPointer&&o.requestPointerLock(),Browser.isFullscreen=!0,Browser.resizeCanvas&&Browser.setFullscreenCanvasSize()):(u.parentNode.insertBefore(o,u),u.parentNode.removeChild(u),Browser.resizeCanvas&&Browser.setWindowedCanvasSize()),Module.onFullScreen&&Module.onFullScreen(Browser.isFullscreen),Module.onFullscreen&&Module.onFullscreen(Browser.isFullscreen),Browser.updateCanvasDimensions(o)}Browser.fullscreenHandlersInstalled||(Browser.fullscreenHandlersInstalled=!0,document.addEventListener("fullscreenchange",a,!1),document.addEventListener("mozfullscreenchange",a,!1),document.addEventListener("webkitfullscreenchange",a,!1),document.addEventListener("MSFullscreenChange",a,!1));var n=document.createElement("div");o.parentNode.insertBefore(n,o),n.appendChild(o),n.requestFullscreen=n.requestFullscreen||n.mozRequestFullScreen||n.msRequestFullscreen||(n.webkitRequestFullscreen?function(){n.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}:null)||(n.webkitRequestFullScreen?function(){n.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),r?n.requestFullscreen({vrDisplay:r}):n.requestFullscreen()},requestFullScreen:function(t,e,r){return Module.printErr("Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead."),Browser.requestFullScreen=function(o,a,n){return Browser.requestFullscreen(o,a,n)},Browser.requestFullscreen(t,e,r)},nextRAF:0,fakeRequestAnimationFrame:function(t){var e=Date.now();if(Browser.nextRAF===0)Browser.nextRAF=e+1e3/60;else for(;e+2>=Browser.nextRAF;)Browser.nextRAF+=1e3/60;var r=Math.max(Browser.nextRAF-e,0);setTimeout(t,r)},requestAnimationFrame:function t(e){typeof window>"u"?Browser.fakeRequestAnimationFrame(e):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||Browser.fakeRequestAnimationFrame),window.requestAnimationFrame(e))},safeCallback:function(t){return function(){if(!ABORT)return t.apply(null,arguments)}},allowAsyncCallbacks:!0,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=!1},resumeAsyncCallbacks:function(){if(Browser.allowAsyncCallbacks=!0,Browser.queuedAsyncCallbacks.length>0){var t=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[],t.forEach(function(e){e()})}},safeRequestAnimationFrame:function(t){return Browser.requestAnimationFrame(function(){ABORT||(Browser.allowAsyncCallbacks?t():Browser.queuedAsyncCallbacks.push(t))})},safeSetTimeout:function(t,e){return Module.noExitRuntime=!0,setTimeout(function(){ABORT||(Browser.allowAsyncCallbacks?t():Browser.queuedAsyncCallbacks.push(t))},e)},safeSetInterval:function(t,e){return Module.noExitRuntime=!0,setInterval(function(){ABORT||Browser.allowAsyncCallbacks&&t()},e)},getMimetype:function(t){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[t.substr(t.lastIndexOf(".")+1)]},getUserMedia:function(t){window.getUserMedia||(window.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia),window.getUserMedia(t)},getMovementX:function(t){return t.movementX||t.mozMovementX||t.webkitMovementX||0},getMovementY:function(t){return t.movementY||t.mozMovementY||t.webkitMovementY||0},getMouseWheelDelta:function(t){var e=0;switch(t.type){case"DOMMouseScroll":e=t.detail;break;case"mousewheel":e=t.wheelDelta;break;case"wheel":e=t.deltaY;break;default:throw"unrecognized mouse wheel event: "+t.type}return e},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(t){if(Browser.pointerLock)t.type!="mousemove"&&"mozMovementX"in t?Browser.mouseMovementX=Browser.mouseMovementY=0:(Browser.mouseMovementX=Browser.getMovementX(t),Browser.mouseMovementY=Browser.getMovementY(t)),typeof SDL<"u"?(Browser.mouseX=SDL.mouseX+Browser.mouseMovementX,Browser.mouseY=SDL.mouseY+Browser.mouseMovementY):(Browser.mouseX+=Browser.mouseMovementX,Browser.mouseY+=Browser.mouseMovementY);else{var e=Module.canvas.getBoundingClientRect(),r=Module.canvas.width,o=Module.canvas.height,a=typeof window.scrollX<"u"?window.scrollX:window.pageXOffset,n=typeof window.scrollY<"u"?window.scrollY:window.pageYOffset;if(t.type==="touchstart"||t.type==="touchend"||t.type==="touchmove"){var u=t.touch;if(u===void 0)return;var A=u.pageX-(a+e.left),p=u.pageY-(n+e.top);A=A*(r/e.width),p=p*(o/e.height);var h={x:A,y:p};if(t.type==="touchstart")Browser.lastTouches[u.identifier]=h,Browser.touches[u.identifier]=h;else if(t.type==="touchend"||t.type==="touchmove"){var C=Browser.touches[u.identifier];C||(C=h),Browser.lastTouches[u.identifier]=C,Browser.touches[u.identifier]=h}return}var w=t.pageX-(a+e.left),v=t.pageY-(n+e.top);w=w*(r/e.width),v=v*(o/e.height),Browser.mouseMovementX=w-Browser.mouseX,Browser.mouseMovementY=v-Browser.mouseY,Browser.mouseX=w,Browser.mouseY=v}},asyncLoad:function(t,e,r,o){var a=o?"":"al "+t;Module.readAsync(t,function(n){assert(n,'Loading data file "'+t+'" failed (no arrayBuffer).'),e(new Uint8Array(n)),a&&removeRunDependency(a)},function(n){if(r)r();else throw'Loading data file "'+t+'" failed.'}),a&&addRunDependency(a)},resizeListeners:[],updateResizeListeners:function(){var t=Module.canvas;Browser.resizeListeners.forEach(function(e){e(t.width,t.height)})},setCanvasSize:function(t,e,r){var o=Module.canvas;Browser.updateCanvasDimensions(o,t,e),r||Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL<"u"){var t=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];t=t|8388608,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=t}Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL<"u"){var t=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];t=t&-8388609,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=t}Browser.updateResizeListeners()},updateCanvasDimensions:function(t,e,r){e&&r?(t.widthNative=e,t.heightNative=r):(e=t.widthNative,r=t.heightNative);var o=e,a=r;if(Module.forcedAspectRatio&&Module.forcedAspectRatio>0&&(o/a<Module.forcedAspectRatio?o=Math.round(a*Module.forcedAspectRatio):a=Math.round(o/Module.forcedAspectRatio)),(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===t.parentNode&&typeof screen<"u"){var n=Math.min(screen.width/o,screen.height/a);o=Math.round(o*n),a=Math.round(a*n)}Browser.resizeCanvas?(t.width!=o&&(t.width=o),t.height!=a&&(t.height=a),typeof t.style<"u"&&(t.style.removeProperty("width"),t.style.removeProperty("height"))):(t.width!=e&&(t.width=e),t.height!=r&&(t.height=r),typeof t.style<"u"&&(o!=e||a!=r?(t.style.setProperty("width",o+"px","important"),t.style.setProperty("height",a+"px","important")):(t.style.removeProperty("width"),t.style.removeProperty("height"))))},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var t=Browser.nextWgetRequestHandle;return Browser.nextWgetRequestHandle++,t}},SYSCALLS={varargs:0,get:function(t){SYSCALLS.varargs+=4;var e=HEAP32[SYSCALLS.varargs-4>>2];return e},getStr:function(){var t=Pointer_stringify(SYSCALLS.get());return t},get64:function(){var t=SYSCALLS.get(),e=SYSCALLS.get();return t>=0?assert(e===0):assert(e===-1),t},getZero:function(){assert(SYSCALLS.get()===0)}};function ___syscall6(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.getStreamFromFD();return FS.close(r),0}catch(o){return(typeof FS>"u"||!(o instanceof FS.ErrnoError))&&abort(o),-o.errno}}function ___syscall54(t,e){SYSCALLS.varargs=e;try{return 0}catch(r){return(typeof FS>"u"||!(r instanceof FS.ErrnoError))&&abort(r),-r.errno}}function _typeModule(t){var e=[[0,1,"X"],[1,1,"const X"],[128,1,"X *"],[256,1,"X &"],[384,1,"X &&"],[512,1,"std::shared_ptr<X>"],[640,1,"std::unique_ptr<X>"],[5120,1,"std::vector<X>"],[6144,2,"std::array<X, Y>"],[9216,-1,"std::function<X (Y)>"]];function r(p,h,C,w,v,b){if(h==1){var E=w&896;(E==128||E==256||E==384)&&(p="X const")}var R;return b?R=C.replace("X",p).replace("Y",v):R=p.replace("X",C).replace("Y",v),R.replace(/([*&]) (?=[*&])/g,"$1")}function o(p,h,C,w,v){throw new Error(p+" type "+C.replace("X",h+"?")+(w?" with flag "+w:"")+" in "+v)}function a(p,h,C,w,v,b,E,R){b===void 0&&(b="X"),R===void 0&&(R=1);var L=C(p);if(L)return L;var _=w(p),V=_.placeholderFlag,re=e[V];E&&re&&(b=r(E[2],E[0],b,re[0],"?",!0));var ae;V==0&&(ae="Unbound"),V>=10&&(ae="Corrupt"),R>20&&(ae="Deeply nested"),ae&&o(ae,p,b,V,v||"?");var he=_.paramList[0],pe=a(he,h,C,w,v,b,re,R+1),De,ge={flags:re[0],id:p,name:"",paramList:[pe]},le=[],Pe="?";switch(_.placeholderFlag){case 1:De=pe.spec;break;case 2:if((pe.flags&15360)==1024&&pe.spec.ptrSize==1){ge.flags=7168;break}case 3:case 6:case 5:De=pe.spec,pe.flags&15360;break;case 8:Pe=""+_.paramList[1],ge.paramList.push(_.paramList[1]);break;case 9:for(var g=0,ve=_.paramList[1];g<ve.length;g++){var Ee=ve[g],de=a(Ee,h,C,w,v,b,re,R+1);le.push(de.name),ge.paramList.push(de)}Pe=le.join(", ");break;default:break}if(ge.name=r(re[2],re[0],pe.name,pe.flags,Pe),De){for(var ne=0,Z=Object.keys(De);ne<Z.length;ne++){var me=Z[ne];ge[me]=ge[me]||De[me]}ge.flags|=De.flags}return n(h,ge)}function n(p,h){var C=h.flags,w=C&896,v=C&15360;return!h.name&&v==1024&&(h.ptrSize==1?h.name=(C&16?"":(C&8?"un":"")+"signed ")+"char":h.name=(C&8?"u":"")+(C&32?"float":"int")+(h.ptrSize*8+"_t")),h.ptrSize==8&&!(C&32)&&(v=64),v==2048&&(w==512||w==640?v=4096:w&&(v=3072)),p(v,h)}var u=function(){function p(h){this.id=h.id,this.name=h.name,this.flags=h.flags,this.spec=h}return p.prototype.toString=function(){return this.name},p}(),A={Type:u,getComplexType:a,makeType:n,structureList:e};return t.output=A,t.output||A}function __nbind_register_type(t,e){var r=_nbind.readAsciiString(e),o={flags:10240,id:t,name:r};_nbind.makeType(_nbind.constructType,o)}function __nbind_register_callback_signature(t,e){var r=_nbind.readTypeIdList(t,e),o=_nbind.callbackSignatureList.length;return _nbind.callbackSignatureList[o]=_nbind.makeJSCaller(r),o}function __extends(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);function o(){this.constructor=t}o.prototype=e.prototype,t.prototype=new o}function __nbind_register_class(t,e,r,o,a,n,u){var A=_nbind.readAsciiString(u),p=_nbind.readPolicyList(e),h=HEAPU32.subarray(t/4,t/4+2),C={flags:2048|(p.Value?2:0),id:h[0],name:A},w=_nbind.makeType(_nbind.constructType,C);w.ptrType=_nbind.getComplexType(h[1],_nbind.constructType,_nbind.getType,_nbind.queryType),w.destroy=_nbind.makeMethodCaller(w.ptrType,{boundID:C.id,flags:0,name:"destroy",num:0,ptr:n,title:w.name+".free",typeList:["void","uint32_t","uint32_t"]}),a&&(w.superIdList=Array.prototype.slice.call(HEAPU32.subarray(r/4,r/4+a)),w.upcastList=Array.prototype.slice.call(HEAPU32.subarray(o/4,o/4+a))),Module[w.name]=w.makeBound(p),_nbind.BindClass.list.push(w)}function _removeAccessorPrefix(t){var e=/^[Gg]et_?([A-Z]?([A-Z]?))/;return t.replace(e,function(r,o,a){return a?o:o.toLowerCase()})}function __nbind_register_function(t,e,r,o,a,n,u,A,p,h){var C=_nbind.getType(t),w=_nbind.readPolicyList(e),v=_nbind.readTypeIdList(r,o),b;if(u==5)b=[{direct:a,name:"__nbindConstructor",ptr:0,title:C.name+" constructor",typeList:["uint32_t"].concat(v.slice(1))},{direct:n,name:"__nbindValueConstructor",ptr:0,title:C.name+" value constructor",typeList:["void","uint32_t"].concat(v.slice(1))}];else{var E=_nbind.readAsciiString(A),R=(C.name&&C.name+".")+E;(u==3||u==4)&&(E=_removeAccessorPrefix(E)),b=[{boundID:t,direct:n,name:E,ptr:a,title:R,typeList:v}]}for(var L=0,_=b;L<_.length;L++){var V=_[L];V.signatureType=u,V.policyTbl=w,V.num=p,V.flags=h,C.addMethod(V)}}function _nbind_value(t,e){_nbind.typeNameTbl[t]||_nbind.throwError("Unknown value type "+t),Module.NBind.bind_value(t,e),_defineHidden(_nbind.typeNameTbl[t].proto.prototype.__nbindValueConstructor)(e.prototype,"__nbindValueConstructor")}Module._nbind_value=_nbind_value;function __nbind_get_value_object(t,e){var r=_nbind.popValue(t);if(!r.fromJS)throw new Error("Object "+r+" has no fromJS function");r.fromJS(function(){r.__nbindValueConstructor.apply(this,Array.prototype.concat.apply([e],arguments))})}function _emscripten_memcpy_big(t,e,r){return HEAPU8.set(HEAPU8.subarray(e,e+r),t),t}function __nbind_register_primitive(t,e,r){var o={flags:1024|r,id:t,ptrSize:e};_nbind.makeType(_nbind.constructType,o)}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",ALLOC_STATIC);function ___setErrNo(t){return Module.___errno_location&&(HEAP32[Module.___errno_location()>>2]=t),t}function _llvm_stacksave(){var t=_llvm_stacksave;return t.LLVM_SAVEDSTACKS||(t.LLVM_SAVEDSTACKS=[]),t.LLVM_SAVEDSTACKS.push(Runtime.stackSave()),t.LLVM_SAVEDSTACKS.length-1}function ___syscall140(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.getStreamFromFD(),o=SYSCALLS.get(),a=SYSCALLS.get(),n=SYSCALLS.get(),u=SYSCALLS.get(),A=a;return FS.llseek(r,A,u),HEAP32[n>>2]=r.position,r.getdents&&A===0&&u===0&&(r.getdents=null),0}catch(p){return(typeof FS>"u"||!(p instanceof FS.ErrnoError))&&abort(p),-p.errno}}function ___syscall146(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.get(),o=SYSCALLS.get(),a=SYSCALLS.get(),n=0;___syscall146.buffer||(___syscall146.buffers=[null,[],[]],___syscall146.printChar=function(C,w){var v=___syscall146.buffers[C];assert(v),w===0||w===10?((C===1?Module.print:Module.printErr)(UTF8ArrayToString(v,0)),v.length=0):v.push(w)});for(var u=0;u<a;u++){for(var A=HEAP32[o+u*8>>2],p=HEAP32[o+(u*8+4)>>2],h=0;h<p;h++)___syscall146.printChar(r,HEAPU8[A+h]);n+=p}return n}catch(C){return(typeof FS>"u"||!(C instanceof FS.ErrnoError))&&abort(C),-C.errno}}function __nbind_finish(){for(var t=0,e=_nbind.BindClass.list;t<e.length;t++){var r=e[t];r.finish()}}var ___dso_handle=STATICTOP;STATICTOP+=16,function(_nbind){var typeIdTbl={};_nbind.typeNameTbl={};var Pool=function(){function t(){}return t.lalloc=function(e){e=e+7&-8;var r=HEAPU32[t.usedPtr];if(e>t.pageSize/2||e>t.pageSize-r){var o=_nbind.typeNameTbl.NBind.proto;return o.lalloc(e)}else return HEAPU32[t.usedPtr]=r+e,t.rootPtr+r},t.lreset=function(e,r){var o=HEAPU32[t.pagePtr];if(o){var a=_nbind.typeNameTbl.NBind.proto;a.lreset(e,r)}else HEAPU32[t.usedPtr]=e},t}();_nbind.Pool=Pool;function constructType(t,e){var r=t==10240?_nbind.makeTypeNameTbl[e.name]||_nbind.BindType:_nbind.makeTypeKindTbl[t],o=new r(e);return typeIdTbl[e.id]=o,_nbind.typeNameTbl[e.name]=o,o}_nbind.constructType=constructType;function getType(t){return typeIdTbl[t]}_nbind.getType=getType;function queryType(t){var e=HEAPU8[t],r=_nbind.structureList[e][1];t/=4,r<0&&(++t,r=HEAPU32[t]+1);var o=Array.prototype.slice.call(HEAPU32.subarray(t+1,t+1+r));return e==9&&(o=[o[0],o.slice(1)]),{paramList:o,placeholderFlag:e}}_nbind.queryType=queryType;function getTypes(t,e){return t.map(function(r){return typeof r=="number"?_nbind.getComplexType(r,constructType,getType,queryType,e):_nbind.typeNameTbl[r]})}_nbind.getTypes=getTypes;function readTypeIdList(t,e){return Array.prototype.slice.call(HEAPU32,t/4,t/4+e)}_nbind.readTypeIdList=readTypeIdList;function readAsciiString(t){for(var e=t;HEAPU8[e++];);return String.fromCharCode.apply("",HEAPU8.subarray(t,e-1))}_nbind.readAsciiString=readAsciiString;function readPolicyList(t){var e={};if(t)for(;;){var r=HEAPU32[t/4];if(!r)break;e[readAsciiString(r)]=!0,t+=4}return e}_nbind.readPolicyList=readPolicyList;function getDynCall(t,e){var r={float32_t:"d",float64_t:"d",int64_t:"d",uint64_t:"d",void:"v"},o=t.map(function(n){return r[n.name]||"i"}).join(""),a=Module["dynCall_"+o];if(!a)throw new Error("dynCall_"+o+" not found for "+e+"("+t.map(function(n){return n.name}).join(", ")+")");return a}_nbind.getDynCall=getDynCall;function addMethod(t,e,r,o){var a=t[e];t.hasOwnProperty(e)&&a?((a.arity||a.arity===0)&&(a=_nbind.makeOverloader(a,a.arity),t[e]=a),a.addMethod(r,o)):(r.arity=o,t[e]=r)}_nbind.addMethod=addMethod;function throwError(t){throw new Error(t)}_nbind.throwError=throwError,_nbind.bigEndian=!1,_a=_typeModule(_typeModule),_nbind.Type=_a.Type,_nbind.makeType=_a.makeType,_nbind.getComplexType=_a.getComplexType,_nbind.structureList=_a.structureList;var BindType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.heap=HEAPU32,r.ptrSize=4,r}return e.prototype.needsWireRead=function(r){return!!this.wireRead||!!this.makeWireRead},e.prototype.needsWireWrite=function(r){return!!this.wireWrite||!!this.makeWireWrite},e}(_nbind.Type);_nbind.BindType=BindType;var PrimitiveType=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this,a=r.flags&32?{32:HEAPF32,64:HEAPF64}:r.flags&8?{8:HEAPU8,16:HEAPU16,32:HEAPU32}:{8:HEAP8,16:HEAP16,32:HEAP32};return o.heap=a[r.ptrSize*8],o.ptrSize=r.ptrSize,o}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireWrite=function(r,o){return o&&o.Strict&&function(a){if(typeof a=="number")return a;throw new Error("Type mismatch")}},e}(BindType);_nbind.PrimitiveType=PrimitiveType;function pushCString(t,e){if(t==null){if(e&&e.Nullable)return 0;throw new Error("Type mismatch")}if(e&&e.Strict){if(typeof t!="string")throw new Error("Type mismatch")}else t=t.toString();var r=Module.lengthBytesUTF8(t)+1,o=_nbind.Pool.lalloc(r);return Module.stringToUTF8Array(t,HEAPU8,o,r),o}_nbind.pushCString=pushCString;function popCString(t){return t===0?null:Module.Pointer_stringify(t)}_nbind.popCString=popCString;var CStringType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popCString,r.wireWrite=pushCString,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,o){return function(a){return pushCString(a,o)}},e}(BindType);_nbind.CStringType=CStringType;var BooleanType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=function(o){return!!o},r}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireRead=function(r){return"!!("+r+")"},e.prototype.makeWireWrite=function(r,o){return o&&o.Strict&&function(a){if(typeof a=="boolean")return a;throw new Error("Type mismatch")}||r},e}(BindType);_nbind.BooleanType=BooleanType;var Wrapper=function(){function t(){}return t.prototype.persist=function(){this.__nbindState|=1},t}();_nbind.Wrapper=Wrapper;function makeBound(t,e){var r=function(o){__extends(a,o);function a(n,u,A,p){var h=o.call(this)||this;if(!(h instanceof a))return new(Function.prototype.bind.apply(a,Array.prototype.concat.apply([null],arguments)));var C=u,w=A,v=p;if(n!==_nbind.ptrMarker){var b=h.__nbindConstructor.apply(h,arguments);C=4608,v=HEAPU32[b/4],w=HEAPU32[b/4+1]}var E={configurable:!0,enumerable:!1,value:null,writable:!1},R={__nbindFlags:C,__nbindPtr:w};v&&(R.__nbindShared=v,_nbind.mark(h));for(var L=0,_=Object.keys(R);L<_.length;L++){var V=_[L];E.value=R[V],Object.defineProperty(h,V,E)}return _defineHidden(0)(h,"__nbindState"),h}return a.prototype.free=function(){e.destroy.call(this,this.__nbindShared,this.__nbindFlags),this.__nbindState|=2,disableMember(this,"__nbindShared"),disableMember(this,"__nbindPtr")},a}(Wrapper);return __decorate([_defineHidden()],r.prototype,"__nbindConstructor",void 0),__decorate([_defineHidden()],r.prototype,"__nbindValueConstructor",void 0),__decorate([_defineHidden(t)],r.prototype,"__nbindPolicies",void 0),r}_nbind.makeBound=makeBound;function disableMember(t,e){function r(){throw new Error("Accessing deleted object")}Object.defineProperty(t,e,{configurable:!1,enumerable:!1,get:r,set:r})}_nbind.ptrMarker={};var BindClass=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this;return o.wireRead=function(a){return _nbind.popValue(a,o.ptrType)},o.wireWrite=function(a){return pushPointer(a,o.ptrType,!0)},o.pendingSuperCount=0,o.ready=!1,o.methodTbl={},r.paramList?(o.classType=r.paramList[0].classType,o.proto=o.classType.proto):o.classType=o,o}return e.prototype.makeBound=function(r){var o=_nbind.makeBound(r,this);return this.proto=o,this.ptrType.proto=o,o},e.prototype.addMethod=function(r){var o=this.methodTbl[r.name]||[];o.push(r),this.methodTbl[r.name]=o},e.prototype.registerMethods=function(r,o){for(var a,n=0,u=Object.keys(r.methodTbl);n<u.length;n++)for(var A=u[n],p=r.methodTbl[A],h=0,C=p;h<C.length;h++){var w=C[h],v=void 0,b=void 0;if(v=this.proto.prototype,!(o&&w.signatureType!=1))switch(w.signatureType){case 1:v=this.proto;case 5:b=_nbind.makeCaller(w),_nbind.addMethod(v,w.name,b,w.typeList.length-1);break;case 4:a=_nbind.makeMethodCaller(r.ptrType,w);break;case 3:Object.defineProperty(v,w.name,{configurable:!0,enumerable:!1,get:_nbind.makeMethodCaller(r.ptrType,w),set:a});break;case 2:b=_nbind.makeMethodCaller(r.ptrType,w),_nbind.addMethod(v,w.name,b,w.typeList.length-1);break;default:break}}},e.prototype.registerSuperMethods=function(r,o,a){if(!a[r.name]){a[r.name]=!0;for(var n=0,u,A=0,p=r.superIdList||[];A<p.length;A++){var h=p[A],C=_nbind.getType(h);n++<o||o<0?u=-1:u=0,this.registerSuperMethods(C,u,a)}this.registerMethods(r,o<0)}},e.prototype.finish=function(){if(this.ready)return this;this.ready=!0,this.superList=(this.superIdList||[]).map(function(a){return _nbind.getType(a).finish()});var r=this.proto;if(this.superList.length){var o=function(){this.constructor=r};o.prototype=this.superList[0].proto.prototype,r.prototype=new o}return r!=Module&&(r.prototype.__nbindType=this),this.registerSuperMethods(this,1,{}),this},e.prototype.upcastStep=function(r,o){if(r==this)return o;for(var a=0;a<this.superList.length;++a){var n=this.superList[a].upcastStep(r,_nbind.callUpcast(this.upcastList[a],o));if(n)return n}return 0},e}(_nbind.BindType);BindClass.list=[],_nbind.BindClass=BindClass;function popPointer(t,e){return t?new e.proto(_nbind.ptrMarker,e.flags,t):null}_nbind.popPointer=popPointer;function pushPointer(t,e,r){if(!(t instanceof _nbind.Wrapper)){if(r)return _nbind.pushValue(t);throw new Error("Type mismatch")}var o=t.__nbindPtr,a=t.__nbindType.classType,n=e.classType;if(t instanceof e.proto)for(;a!=n;)o=_nbind.callUpcast(a.upcastList[0],o),a=a.superList[0];else if(o=a.upcastStep(n,o),!o)throw new Error("Type mismatch");return o}_nbind.pushPointer=pushPointer;function pushMutablePointer(t,e){var r=pushPointer(t,e);if(t.__nbindFlags&1)throw new Error("Passing a const value as a non-const argument");return r}var BindClassPtr=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this;o.classType=r.paramList[0].classType,o.proto=o.classType.proto;var a=r.flags&1,n=(o.flags&896)==256&&r.flags&2,u=a?pushPointer:pushMutablePointer,A=n?_nbind.popValue:popPointer;return o.makeWireWrite=function(p,h){return h.Nullable?function(C){return C?u(C,o):0}:function(C){return u(C,o)}},o.wireRead=function(p){return A(p,o)},o.wireWrite=function(p){return u(p,o)},o}return e}(_nbind.BindType);_nbind.BindClassPtr=BindClassPtr;function popShared(t,e){var r=HEAPU32[t/4],o=HEAPU32[t/4+1];return o?new e.proto(_nbind.ptrMarker,e.flags,o,r):null}_nbind.popShared=popShared;function pushShared(t,e){if(!(t instanceof e.proto))throw new Error("Type mismatch");return t.__nbindShared}function pushMutableShared(t,e){if(!(t instanceof e.proto))throw new Error("Type mismatch");if(t.__nbindFlags&1)throw new Error("Passing a const value as a non-const argument");return t.__nbindShared}var SharedClassPtr=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this;o.readResources=[_nbind.resources.pool],o.classType=r.paramList[0].classType,o.proto=o.classType.proto;var a=r.flags&1,n=a?pushShared:pushMutableShared;return o.wireRead=function(u){return popShared(u,o)},o.wireWrite=function(u){return n(u,o)},o}return e}(_nbind.BindType);_nbind.SharedClassPtr=SharedClassPtr,_nbind.externalList=[0];var firstFreeExternal=0,External=function(){function t(e){this.refCount=1,this.data=e}return t.prototype.register=function(){var e=firstFreeExternal;return e?firstFreeExternal=_nbind.externalList[e]:e=_nbind.externalList.length,_nbind.externalList[e]=this,e},t.prototype.reference=function(){++this.refCount},t.prototype.dereference=function(e){--this.refCount==0&&(this.free&&this.free(),_nbind.externalList[e]=firstFreeExternal,firstFreeExternal=e)},t}();_nbind.External=External;function popExternal(t){var e=_nbind.externalList[t];return e.dereference(t),e.data}function pushExternal(t){var e=new External(t);return e.reference(),e.register()}var ExternalType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popExternal,r.wireWrite=pushExternal,r}return e}(_nbind.BindType);_nbind.ExternalType=ExternalType,_nbind.callbackSignatureList=[];var CallbackType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireWrite=function(o){return typeof o!="function"&&_nbind.throwError("Type mismatch"),new _nbind.External(o).register()},r}return e}(_nbind.BindType);_nbind.CallbackType=CallbackType,_nbind.valueList=[0];var firstFreeValue=0;function pushValue(t){var e=firstFreeValue;return e?firstFreeValue=_nbind.valueList[e]:e=_nbind.valueList.length,_nbind.valueList[e]=t,e*2+1}_nbind.pushValue=pushValue;function popValue(t,e){if(t||_nbind.throwError("Value type JavaScript class is missing or not registered"),t&1){t>>=1;var r=_nbind.valueList[t];return _nbind.valueList[t]=firstFreeValue,firstFreeValue=t,r}else{if(e)return _nbind.popShared(t,e);throw new Error("Invalid value slot "+t)}}_nbind.popValue=popValue;var valueBase=18446744073709552e3;function push64(t){return typeof t=="number"?t:pushValue(t)*4096+valueBase}function pop64(t){return t<valueBase?t:popValue((t-valueBase)/4096)}var CreateValueType=function(t){__extends(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.makeWireWrite=function(r){return"(_nbind.pushValue(new "+r+"))"},e}(_nbind.BindType);_nbind.CreateValueType=CreateValueType;var Int64Type=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireWrite=push64,r.wireRead=pop64,r}return e}(_nbind.BindType);_nbind.Int64Type=Int64Type;function pushArray(t,e){if(!t)return 0;var r=t.length;if((e.size||e.size===0)&&r<e.size)throw new Error("Type mismatch");var o=e.memberType.ptrSize,a=_nbind.Pool.lalloc(4+r*o);HEAPU32[a/4]=r;var n=e.memberType.heap,u=(a+4)/o,A=e.memberType.wireWrite,p=0;if(A)for(;p<r;)n[u++]=A(t[p++]);else for(;p<r;)n[u++]=t[p++];return a}_nbind.pushArray=pushArray;function popArray(t,e){if(t===0)return null;var r=HEAPU32[t/4],o=new Array(r),a=e.memberType.heap;t=(t+4)/e.memberType.ptrSize;var n=e.memberType.wireRead,u=0;if(n)for(;u<r;)o[u++]=n(a[t++]);else for(;u<r;)o[u++]=a[t++];return o}_nbind.popArray=popArray;var ArrayType=function(t){__extends(e,t);function e(r){var o=t.call(this,r)||this;return o.wireRead=function(a){return popArray(a,o)},o.wireWrite=function(a){return pushArray(a,o)},o.readResources=[_nbind.resources.pool],o.writeResources=[_nbind.resources.pool],o.memberType=r.paramList[0],r.paramList[1]&&(o.size=r.paramList[1]),o}return e}(_nbind.BindType);_nbind.ArrayType=ArrayType;function pushString(t,e){if(t==null)if(e&&e.Nullable)t="";else throw new Error("Type mismatch");if(e&&e.Strict){if(typeof t!="string")throw new Error("Type mismatch")}else t=t.toString();var r=Module.lengthBytesUTF8(t),o=_nbind.Pool.lalloc(4+r+1);return HEAPU32[o/4]=r,Module.stringToUTF8Array(t,HEAPU8,o+4,r+1),o}_nbind.pushString=pushString;function popString(t){if(t===0)return null;var e=HEAPU32[t/4];return Module.Pointer_stringify(t+4,e)}_nbind.popString=popString;var StringType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popString,r.wireWrite=pushString,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,o){return function(a){return pushString(a,o)}},e}(_nbind.BindType);_nbind.StringType=StringType;function makeArgList(t){return Array.apply(null,Array(t)).map(function(e,r){return"a"+(r+1)})}function anyNeedsWireWrite(t,e){return t.reduce(function(r,o){return r||o.needsWireWrite(e)},!1)}function anyNeedsWireRead(t,e){return t.reduce(function(r,o){return r||!!o.needsWireRead(e)},!1)}function makeWireRead(t,e,r,o){var a=t.length;return r.makeWireRead?r.makeWireRead(o,t,a):r.wireRead?(t[a]=r.wireRead,"(convertParamList["+a+"]("+o+"))"):o}function makeWireWrite(t,e,r,o){var a,n=t.length;return r.makeWireWrite?a=r.makeWireWrite(o,e,t,n):a=r.wireWrite,a?typeof a=="string"?a:(t[n]=a,"(convertParamList["+n+"]("+o+"))"):o}function buildCallerFunction(dynCall,ptrType,ptr,num,policyTbl,needsWireWrite,prefix,returnType,argTypeList,mask,err){var argList=makeArgList(argTypeList.length),convertParamList=[],callExpression=makeWireRead(convertParamList,policyTbl,returnType,"dynCall("+[prefix].concat(argList.map(function(t,e){return makeWireWrite(convertParamList,policyTbl,argTypeList[e],t)})).join(",")+")"),resourceSet=_nbind.listResources([returnType],argTypeList),sourceCode="function("+argList.join(",")+"){"+(mask?"this.__nbindFlags&mask&&err();":"")+resourceSet.makeOpen()+"var r="+callExpression+";"+resourceSet.makeClose()+"return r;}";return eval("("+sourceCode+")")}function buildJSCallerFunction(returnType,argTypeList){var argList=makeArgList(argTypeList.length),convertParamList=[],callExpression=makeWireWrite(convertParamList,null,returnType,"_nbind.externalList[num].data("+argList.map(function(t,e){return makeWireRead(convertParamList,null,argTypeList[e],t)}).join(",")+")"),resourceSet=_nbind.listResources(argTypeList,[returnType]);resourceSet.remove(_nbind.resources.pool);var sourceCode="function("+["dummy","num"].concat(argList).join(",")+"){"+resourceSet.makeOpen()+"var r="+callExpression+";"+resourceSet.makeClose()+"return r;}";return eval("("+sourceCode+")")}_nbind.buildJSCallerFunction=buildJSCallerFunction;function makeJSCaller(t){var e=t.length-1,r=_nbind.getTypes(t,"callback"),o=r[0],a=r.slice(1),n=anyNeedsWireRead(a,null),u=o.needsWireWrite(null);if(!u&&!n)switch(e){case 0:return function(A,p){return _nbind.externalList[p].data()};case 1:return function(A,p,h){return _nbind.externalList[p].data(h)};case 2:return function(A,p,h,C){return _nbind.externalList[p].data(h,C)};case 3:return function(A,p,h,C,w){return _nbind.externalList[p].data(h,C,w)};default:break}return buildJSCallerFunction(o,a)}_nbind.makeJSCaller=makeJSCaller;function makeMethodCaller(t,e){var r=e.typeList.length-1,o=e.typeList.slice(0);o.splice(1,0,"uint32_t",e.boundID);var a=_nbind.getTypes(o,e.title),n=a[0],u=a.slice(3),A=n.needsWireRead(e.policyTbl),p=anyNeedsWireWrite(u,e.policyTbl),h=e.ptr,C=e.num,w=_nbind.getDynCall(a,e.title),v=~e.flags&1;function b(){throw new Error("Calling a non-const method on a const object")}if(!A&&!p)switch(r){case 0:return function(){return this.__nbindFlags&v?b():w(h,C,_nbind.pushPointer(this,t))};case 1:return function(E){return this.__nbindFlags&v?b():w(h,C,_nbind.pushPointer(this,t),E)};case 2:return function(E,R){return this.__nbindFlags&v?b():w(h,C,_nbind.pushPointer(this,t),E,R)};case 3:return function(E,R,L){return this.__nbindFlags&v?b():w(h,C,_nbind.pushPointer(this,t),E,R,L)};default:break}return buildCallerFunction(w,t,h,C,e.policyTbl,p,"ptr,num,pushPointer(this,ptrType)",n,u,v,b)}_nbind.makeMethodCaller=makeMethodCaller;function makeCaller(t){var e=t.typeList.length-1,r=_nbind.getTypes(t.typeList,t.title),o=r[0],a=r.slice(1),n=o.needsWireRead(t.policyTbl),u=anyNeedsWireWrite(a,t.policyTbl),A=t.direct,p=t.ptr;if(t.direct&&!n&&!u){var h=_nbind.getDynCall(r,t.title);switch(e){case 0:return function(){return h(A)};case 1:return function(b){return h(A,b)};case 2:return function(b,E){return h(A,b,E)};case 3:return function(b,E,R){return h(A,b,E,R)};default:break}p=0}var C;if(p){var w=t.typeList.slice(0);w.splice(1,0,"uint32_t"),r=_nbind.getTypes(w,t.title),C="ptr,num"}else p=A,C="ptr";var v=_nbind.getDynCall(r,t.title);return buildCallerFunction(v,null,p,t.num,t.policyTbl,u,C,o,a)}_nbind.makeCaller=makeCaller;function makeOverloader(t,e){var r=[];function o(){return r[arguments.length].apply(this,arguments)}return o.addMethod=function(a,n){r[n]=a},o.addMethod(t,e),o}_nbind.makeOverloader=makeOverloader;var Resource=function(){function t(e,r){var o=this;this.makeOpen=function(){return Object.keys(o.openTbl).join("")},this.makeClose=function(){return Object.keys(o.closeTbl).join("")},this.openTbl={},this.closeTbl={},e&&(this.openTbl[e]=!0),r&&(this.closeTbl[r]=!0)}return t.prototype.add=function(e){for(var r=0,o=Object.keys(e.openTbl);r<o.length;r++){var a=o[r];this.openTbl[a]=!0}for(var n=0,u=Object.keys(e.closeTbl);n<u.length;n++){var a=u[n];this.closeTbl[a]=!0}},t.prototype.remove=function(e){for(var r=0,o=Object.keys(e.openTbl);r<o.length;r++){var a=o[r];delete this.openTbl[a]}for(var n=0,u=Object.keys(e.closeTbl);n<u.length;n++){var a=u[n];delete this.closeTbl[a]}},t}();_nbind.Resource=Resource;function listResources(t,e){for(var r=new Resource,o=0,a=t;o<a.length;o++)for(var n=a[o],u=0,A=n.readResources||[];u<A.length;u++){var p=A[u];r.add(p)}for(var h=0,C=e;h<C.length;h++)for(var n=C[h],w=0,v=n.writeResources||[];w<v.length;w++){var p=v[w];r.add(p)}return r}_nbind.listResources=listResources,_nbind.resources={pool:new Resource("var used=HEAPU32[_nbind.Pool.usedPtr],page=HEAPU32[_nbind.Pool.pagePtr];","_nbind.Pool.lreset(used,page);")};var ExternalBuffer=function(t){__extends(e,t);function e(r,o){var a=t.call(this,r)||this;return a.ptr=o,a}return e.prototype.free=function(){_free(this.ptr)},e}(_nbind.External);function getBuffer(t){return t instanceof ArrayBuffer?new Uint8Array(t):t instanceof DataView?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t}function pushBuffer(t,e){if(t==null&&e&&e.Nullable&&(t=[]),typeof t!="object")throw new Error("Type mismatch");var r=t,o=r.byteLength||r.length;if(!o&&o!==0&&r.byteLength!==0)throw new Error("Type mismatch");var a=_nbind.Pool.lalloc(8),n=_malloc(o),u=a/4;return HEAPU32[u++]=o,HEAPU32[u++]=n,HEAPU32[u++]=new ExternalBuffer(t,n).register(),HEAPU8.set(getBuffer(t),n),a}var BufferType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireWrite=pushBuffer,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,o){return function(a){return pushBuffer(a,o)}},e}(_nbind.BindType);_nbind.BufferType=BufferType;function commitBuffer(t,e,r){var o=_nbind.externalList[t].data,a=Buffer;if(typeof Buffer!="function"&&(a=function(){}),!(o instanceof Array)){var n=HEAPU8.subarray(e,e+r);if(o instanceof a){var u=void 0;typeof Buffer.from=="function"&&Buffer.from.length>=3?u=Buffer.from(n):u=new Buffer(n),u.copy(o)}else getBuffer(o).set(n)}}_nbind.commitBuffer=commitBuffer;var dirtyList=[],gcTimer=0;function sweep(){for(var t=0,e=dirtyList;t<e.length;t++){var r=e[t];r.__nbindState&3||r.free()}dirtyList=[],gcTimer=0}_nbind.mark=function(t){};function toggleLightGC(t){t?_nbind.mark=function(e){dirtyList.push(e),gcTimer||(gcTimer=setTimeout(sweep,0))}:_nbind.mark=function(e){}}_nbind.toggleLightGC=toggleLightGC}(_nbind),Module.requestFullScreen=function t(e,r,o){Module.printErr("Module.requestFullScreen is deprecated. Please call Module.requestFullscreen instead."),Module.requestFullScreen=Module.requestFullscreen,Browser.requestFullScreen(e,r,o)},Module.requestFullscreen=function t(e,r,o){Browser.requestFullscreen(e,r,o)},Module.requestAnimationFrame=function t(e){Browser.requestAnimationFrame(e)},Module.setCanvasSize=function t(e,r,o){Browser.setCanvasSize(e,r,o)},Module.pauseMainLoop=function t(){Browser.mainLoop.pause()},Module.resumeMainLoop=function t(){Browser.mainLoop.resume()},Module.getUserMedia=function t(){Browser.getUserMedia()},Module.createContext=function t(e,r,o,a){return Browser.createContext(e,r,o,a)},ENVIRONMENT_IS_NODE?_emscripten_get_now=function(){var e=process.hrtime();return e[0]*1e3+e[1]/1e6}:typeof dateNow<"u"?_emscripten_get_now=dateNow:typeof self=="object"&&self.performance&&typeof self.performance.now=="function"?_emscripten_get_now=function(){return self.performance.now()}:typeof performance=="object"&&typeof performance.now=="function"?_emscripten_get_now=function(){return performance.now()}:_emscripten_get_now=Date.now,__ATEXIT__.push(function(){var t=Module._fflush;t&&t(0);var e=___syscall146.printChar;if(!!e){var r=___syscall146.buffers;r[1].length&&e(1,10),r[2].length&&e(2,10)}}),DYNAMICTOP_PTR=allocate(1,"i32",ALLOC_STATIC),STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP),STACK_MAX=STACK_BASE+TOTAL_STACK,DYNAMIC_BASE=Runtime.alignMemory(STACK_MAX),HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE,staticSealed=!0;function invoke_viiiii(t,e,r,o,a,n){try{Module.dynCall_viiiii(t,e,r,o,a,n)}catch(u){if(typeof u!="number"&&u!=="longjmp")throw u;Module.setThrew(1,0)}}function invoke_vif(t,e,r){try{Module.dynCall_vif(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_vid(t,e,r){try{Module.dynCall_vid(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_fiff(t,e,r,o){try{return Module.dynCall_fiff(t,e,r,o)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_vi(t,e){try{Module.dynCall_vi(t,e)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_vii(t,e,r){try{Module.dynCall_vii(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_ii(t,e){try{return Module.dynCall_ii(t,e)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_viddi(t,e,r,o,a){try{Module.dynCall_viddi(t,e,r,o,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}function invoke_vidd(t,e,r,o){try{Module.dynCall_vidd(t,e,r,o)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_iiii(t,e,r,o){try{return Module.dynCall_iiii(t,e,r,o)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_diii(t,e,r,o){try{return Module.dynCall_diii(t,e,r,o)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_di(t,e){try{return Module.dynCall_di(t,e)}catch(r){if(typeof r!="number"&&r!=="longjmp")throw r;Module.setThrew(1,0)}}function invoke_iid(t,e,r){try{return Module.dynCall_iid(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_iii(t,e,r){try{return Module.dynCall_iii(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_viiddi(t,e,r,o,a,n){try{Module.dynCall_viiddi(t,e,r,o,a,n)}catch(u){if(typeof u!="number"&&u!=="longjmp")throw u;Module.setThrew(1,0)}}function invoke_viiiiii(t,e,r,o,a,n,u){try{Module.dynCall_viiiiii(t,e,r,o,a,n,u)}catch(A){if(typeof A!="number"&&A!=="longjmp")throw A;Module.setThrew(1,0)}}function invoke_dii(t,e,r){try{return Module.dynCall_dii(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_i(t){try{return Module.dynCall_i(t)}catch(e){if(typeof e!="number"&&e!=="longjmp")throw e;Module.setThrew(1,0)}}function invoke_iiiiii(t,e,r,o,a,n){try{return Module.dynCall_iiiiii(t,e,r,o,a,n)}catch(u){if(typeof u!="number"&&u!=="longjmp")throw u;Module.setThrew(1,0)}}function invoke_viiid(t,e,r,o,a){try{Module.dynCall_viiid(t,e,r,o,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}function invoke_viififi(t,e,r,o,a,n,u){try{Module.dynCall_viififi(t,e,r,o,a,n,u)}catch(A){if(typeof A!="number"&&A!=="longjmp")throw A;Module.setThrew(1,0)}}function invoke_viii(t,e,r,o){try{Module.dynCall_viii(t,e,r,o)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_v(t){try{Module.dynCall_v(t)}catch(e){if(typeof e!="number"&&e!=="longjmp")throw e;Module.setThrew(1,0)}}function invoke_viid(t,e,r,o){try{Module.dynCall_viid(t,e,r,o)}catch(a){if(typeof a!="number"&&a!=="longjmp")throw a;Module.setThrew(1,0)}}function invoke_idd(t,e,r){try{return Module.dynCall_idd(t,e,r)}catch(o){if(typeof o!="number"&&o!=="longjmp")throw o;Module.setThrew(1,0)}}function invoke_viiii(t,e,r,o,a){try{Module.dynCall_viiii(t,e,r,o,a)}catch(n){if(typeof n!="number"&&n!=="longjmp")throw n;Module.setThrew(1,0)}}Module.asmGlobalArg={Math,Int8Array,Int16Array,Int32Array,Uint8Array,Uint16Array,Uint32Array,Float32Array,Float64Array,NaN:NaN,Infinity:1/0},Module.asmLibraryArg={abort,assert,enlargeMemory,getTotalMemory,abortOnCannotGrowMemory,invoke_viiiii,invoke_vif,invoke_vid,invoke_fiff,invoke_vi,invoke_vii,invoke_ii,invoke_viddi,invoke_vidd,invoke_iiii,invoke_diii,invoke_di,invoke_iid,invoke_iii,invoke_viiddi,invoke_viiiiii,invoke_dii,invoke_i,invoke_iiiiii,invoke_viiid,invoke_viififi,invoke_viii,invoke_v,invoke_viid,invoke_idd,invoke_viiii,_emscripten_asm_const_iiiii,_emscripten_asm_const_iiidddddd,_emscripten_asm_const_iiiid,__nbind_reference_external,_emscripten_asm_const_iiiiiiii,_removeAccessorPrefix,_typeModule,__nbind_register_pool,__decorate,_llvm_stackrestore,___cxa_atexit,__extends,__nbind_get_value_object,__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,_emscripten_set_main_loop_timing,__nbind_register_primitive,__nbind_register_type,_emscripten_memcpy_big,__nbind_register_function,___setErrNo,__nbind_register_class,__nbind_finish,_abort,_nbind_value,_llvm_stacksave,___syscall54,_defineHidden,_emscripten_set_main_loop,_emscripten_get_now,__nbind_register_callback_signature,_emscripten_asm_const_iiiiii,__nbind_free_external,_emscripten_asm_const_iiii,_emscripten_asm_const_iiididi,___syscall6,_atexit,___syscall140,___syscall146,DYNAMICTOP_PTR,tempDoublePtr,ABORT,STACKTOP,STACK_MAX,cttz_i8,___dso_handle};var asm=function(t,e,r){var o=new t.Int8Array(r),a=new t.Int16Array(r),n=new t.Int32Array(r),u=new t.Uint8Array(r),A=new t.Uint16Array(r),p=new t.Uint32Array(r),h=new t.Float32Array(r),C=new t.Float64Array(r),w=e.DYNAMICTOP_PTR|0,v=e.tempDoublePtr|0,b=e.ABORT|0,E=e.STACKTOP|0,R=e.STACK_MAX|0,L=e.cttz_i8|0,_=e.___dso_handle|0,V=0,re=0,ae=0,he=0,pe=t.NaN,De=t.Infinity,ge=0,le=0,Pe=0,g=0,ve=0,Ee=0,de=t.Math.floor,ne=t.Math.abs,Z=t.Math.sqrt,me=t.Math.pow,be=t.Math.cos,ut=t.Math.sin,H=t.Math.tan,yt=t.Math.acos,Me=t.Math.asin,Te=t.Math.atan,Qe=t.Math.atan2,_e=t.Math.exp,qe=t.Math.log,At=t.Math.ceil,Oe=t.Math.imul,x=t.Math.min,I=t.Math.max,P=t.Math.clz32,y=t.Math.fround,F=e.abort,z=e.assert,X=e.enlargeMemory,$=e.getTotalMemory,ie=e.abortOnCannotGrowMemory,ke=e.invoke_viiiii,Ne=e.invoke_vif,st=e.invoke_vid,ht=e.invoke_fiff,Ut=e.invoke_vi,Xt=e.invoke_vii,xt=e.invoke_ii,tn=e.invoke_viddi,Dr=e.invoke_vidd,fr=e.invoke_iiii,Br=e.invoke_diii,jr=e.invoke_di,Hn=e.invoke_iid,bs=e.invoke_iii,ki=e.invoke_viiddi,gs=e.invoke_viiiiii,to=e.invoke_dii,Di=e.invoke_i,Qs=e.invoke_iiiiii,ro=e.invoke_viiid,hc=e.invoke_viififi,gu=e.invoke_viii,cp=e.invoke_v,up=e.invoke_viid,ks=e.invoke_idd,Cn=e.invoke_viiii,no=e._emscripten_asm_const_iiiii,Fs=e._emscripten_asm_const_iiidddddd,Cl=e._emscripten_asm_const_iiiid,Il=e.__nbind_reference_external,io=e._emscripten_asm_const_iiiiiiii,Ue=e._removeAccessorPrefix,Fn=e._typeModule,Fi=e.__nbind_register_pool,Rn=e.__decorate,Ui=e._llvm_stackrestore,Zt=e.___cxa_atexit,Ri=e.__extends,$n=e.__nbind_get_value_object,Ua=e.__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,$t=e._emscripten_set_main_loop_timing,gc=e.__nbind_register_primitive,du=e.__nbind_register_type,dc=e._emscripten_memcpy_big,wl=e.__nbind_register_function,xA=e.___setErrNo,mu=e.__nbind_register_class,Ce=e.__nbind_finish,Rt=e._abort,mc=e._nbind_value,_i=e._llvm_stacksave,yu=e.___syscall54,qt=e._defineHidden,Bl=e._emscripten_set_main_loop,bA=e._emscripten_get_now,Ap=e.__nbind_register_callback_signature,yc=e._emscripten_asm_const_iiiiii,QA=e.__nbind_free_external,Dn=e._emscripten_asm_const_iiii,ui=e._emscripten_asm_const_iiididi,Ec=e.___syscall6,kA=e._atexit,na=e.___syscall140,Hi=e.___syscall146,Mo=y(0);let $e=y(0);function so(s){s=s|0;var l=0;return l=E,E=E+s|0,E=E+15&-16,l|0}function vl(){return E|0}function Eu(s){s=s|0,E=s}function qi(s,l){s=s|0,l=l|0,E=s,R=l}function Cu(s,l){s=s|0,l=l|0,V||(V=s,re=l)}function FA(s){s=s|0,Ee=s}function Ha(){return Ee|0}function Cc(){var s=0,l=0;Cr(8104,8,400)|0,Cr(8504,408,540)|0,s=9044,l=s+44|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));o[9088]=0,o[9089]=1,n[2273]=0,n[2274]=948,n[2275]=948,Zt(17,8104,_|0)|0}function ds(s){s=s|0,Be(s+948|0)}function Ot(s){return s=y(s),((bu(s)|0)&2147483647)>>>0>2139095040|0}function Sn(s,l,c){s=s|0,l=l|0,c=c|0;e:do if(n[s+(l<<3)+4>>2]|0)s=s+(l<<3)|0;else{if((l|2|0)==3&&n[s+60>>2]|0){s=s+56|0;break}switch(l|0){case 0:case 2:case 4:case 5:{if(n[s+52>>2]|0){s=s+48|0;break e}break}default:}if(n[s+68>>2]|0){s=s+64|0;break}else{s=(l|1|0)==5?948:c;break}}while(0);return s|0}function di(s){s=s|0;var l=0;return l=tD(1e3)|0,ia(s,(l|0)!=0,2456),n[2276]=(n[2276]|0)+1,Cr(l|0,8104,1e3)|0,o[s+2>>0]|0&&(n[l+4>>2]=2,n[l+12>>2]=4),n[l+976>>2]=s,l|0}function ia(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;d=E,E=E+16|0,f=d,l||(n[f>>2]=c,dg(s,5,3197,f)),E=d}function oo(){return di(956)|0}function Rs(s){s=s|0;var l=0;return l=Gt(1e3)|0,sa(l,s),ia(n[s+976>>2]|0,1,2456),n[2276]=(n[2276]|0)+1,n[l+944>>2]=0,l|0}function sa(s,l){s=s|0,l=l|0;var c=0;Cr(s|0,l|0,948)|0,Nm(s+948|0,l+948|0),c=s+960|0,s=l+960|0,l=c+40|0;do n[c>>2]=n[s>>2],c=c+4|0,s=s+4|0;while((c|0)<(l|0))}function oa(s){s=s|0;var l=0,c=0,f=0,d=0;if(l=s+944|0,c=n[l>>2]|0,c|0&&(Uo(c+948|0,s)|0,n[l>>2]=0),c=Zi(s)|0,c|0){l=0;do n[(Ts(s,l)|0)+944>>2]=0,l=l+1|0;while((l|0)!=(c|0))}c=s+948|0,f=n[c>>2]|0,d=s+952|0,l=n[d>>2]|0,(l|0)!=(f|0)&&(n[d>>2]=l+(~((l+-4-f|0)>>>2)<<2)),Ns(c),rD(s),n[2276]=(n[2276]|0)+-1}function Uo(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0;f=n[s>>2]|0,Q=s+4|0,c=n[Q>>2]|0,m=c;e:do if((f|0)==(c|0))d=f,B=4;else for(s=f;;){if((n[s>>2]|0)==(l|0)){d=s,B=4;break e}if(s=s+4|0,(s|0)==(c|0)){s=0;break}}while(0);return(B|0)==4&&((d|0)!=(c|0)?(f=d+4|0,s=m-f|0,l=s>>2,l&&(bI(d|0,f|0,s|0)|0,c=n[Q>>2]|0),s=d+(l<<2)|0,(c|0)==(s|0)||(n[Q>>2]=c+(~((c+-4-s|0)>>>2)<<2)),s=1):s=0),s|0}function Zi(s){return s=s|0,(n[s+952>>2]|0)-(n[s+948>>2]|0)>>2|0}function Ts(s,l){s=s|0,l=l|0;var c=0;return c=n[s+948>>2]|0,(n[s+952>>2]|0)-c>>2>>>0>l>>>0?s=n[c+(l<<2)>>2]|0:s=0,s|0}function Ns(s){s=s|0;var l=0,c=0,f=0,d=0;f=E,E=E+32|0,l=f,d=n[s>>2]|0,c=(n[s+4>>2]|0)-d|0,((n[s+8>>2]|0)-d|0)>>>0>c>>>0&&(d=c>>2,wp(l,d,d,s+8|0),Cg(s,l),HA(l)),E=f}function Ls(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0;M=Zi(s)|0;do if(M|0){if((n[(Ts(s,0)|0)+944>>2]|0)==(s|0)){if(!(Uo(s+948|0,l)|0))break;Cr(l+400|0,8504,540)|0,n[l+944>>2]=0,je(s);break}B=n[(n[s+976>>2]|0)+12>>2]|0,Q=s+948|0,k=(B|0)==0,c=0,m=0;do f=n[(n[Q>>2]|0)+(m<<2)>>2]|0,(f|0)==(l|0)?je(s):(d=Rs(f)|0,n[(n[Q>>2]|0)+(c<<2)>>2]=d,n[d+944>>2]=s,k||QR[B&15](f,d,s,c),c=c+1|0),m=m+1|0;while((m|0)!=(M|0));if(c>>>0<M>>>0){k=s+948|0,Q=s+952|0,B=c,c=n[Q>>2]|0;do m=(n[k>>2]|0)+(B<<2)|0,f=m+4|0,d=c-f|0,l=d>>2,l&&(bI(m|0,f|0,d|0)|0,c=n[Q>>2]|0),d=c,f=m+(l<<2)|0,(d|0)!=(f|0)&&(c=d+(~((d+-4-f|0)>>>2)<<2)|0,n[Q>>2]=c),B=B+1|0;while((B|0)!=(M|0))}}while(0)}function ao(s){s=s|0;var l=0,c=0,f=0,d=0;Yn(s,(Zi(s)|0)==0,2491),Yn(s,(n[s+944>>2]|0)==0,2545),l=s+948|0,c=n[l>>2]|0,f=s+952|0,d=n[f>>2]|0,(d|0)!=(c|0)&&(n[f>>2]=d+(~((d+-4-c|0)>>>2)<<2)),Ns(l),l=s+976|0,c=n[l>>2]|0,Cr(s|0,8104,1e3)|0,o[c+2>>0]|0&&(n[s+4>>2]=2,n[s+12>>2]=4),n[l>>2]=c}function Yn(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;d=E,E=E+16|0,f=d,l||(n[f>>2]=c,co(s,5,3197,f)),E=d}function qn(){return n[2276]|0}function $i(){var s=0;return s=tD(20)|0,es((s|0)!=0,2592),n[2277]=(n[2277]|0)+1,n[s>>2]=n[239],n[s+4>>2]=n[240],n[s+8>>2]=n[241],n[s+12>>2]=n[242],n[s+16>>2]=n[243],s|0}function es(s,l){s=s|0,l=l|0;var c=0,f=0;f=E,E=E+16|0,c=f,s||(n[c>>2]=l,co(0,5,3197,c)),E=f}function mi(s){s=s|0,rD(s),n[2277]=(n[2277]|0)+-1}function qa(s,l){s=s|0,l=l|0;var c=0;l?(Yn(s,(Zi(s)|0)==0,2629),c=1):(c=0,l=0),n[s+964>>2]=l,n[s+988>>2]=c}function aa(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=E,E=E+16|0,m=f+8|0,d=f+4|0,B=f,n[d>>2]=l,Yn(s,(n[l+944>>2]|0)==0,2709),Yn(s,(n[s+964>>2]|0)==0,2763),ee(s),l=s+948|0,n[B>>2]=(n[l>>2]|0)+(c<<2),n[m>>2]=n[B>>2],we(l,m,d)|0,n[(n[d>>2]|0)+944>>2]=s,je(s),E=f}function ee(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,Q=0;if(c=Zi(s)|0,c|0&&(n[(Ts(s,0)|0)+944>>2]|0)!=(s|0)){f=n[(n[s+976>>2]|0)+12>>2]|0,d=s+948|0,m=(f|0)==0,l=0;do B=n[(n[d>>2]|0)+(l<<2)>>2]|0,Q=Rs(B)|0,n[(n[d>>2]|0)+(l<<2)>>2]=Q,n[Q+944>>2]=s,m||QR[f&15](B,Q,s,l),l=l+1|0;while((l|0)!=(c|0))}}function we(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0,Ye=0,Le=0,Re=0,et=0,Ze=0;et=E,E=E+64|0,j=et+52|0,Q=et+48|0,se=et+28|0,Ye=et+24|0,Le=et+20|0,Re=et,f=n[s>>2]|0,m=f,l=f+((n[l>>2]|0)-m>>2<<2)|0,f=s+4|0,d=n[f>>2]|0,B=s+8|0;do if(d>>>0<(n[B>>2]|0)>>>0){if((l|0)==(d|0)){n[l>>2]=n[c>>2],n[f>>2]=(n[f>>2]|0)+4;break}qA(s,l,d,l+4|0),l>>>0<=c>>>0&&(c=(n[f>>2]|0)>>>0>c>>>0?c+4|0:c),n[l>>2]=n[c>>2]}else{f=(d-m>>2)+1|0,d=N(s)|0,d>>>0<f>>>0&&Vr(s),O=n[s>>2]|0,M=(n[B>>2]|0)-O|0,m=M>>1,wp(Re,M>>2>>>0<d>>>1>>>0?m>>>0<f>>>0?f:m:d,l-O>>2,s+8|0),O=Re+8|0,f=n[O>>2]|0,m=Re+12|0,M=n[m>>2]|0,B=M,k=f;do if((f|0)==(M|0)){if(M=Re+4|0,f=n[M>>2]|0,Ze=n[Re>>2]|0,d=Ze,f>>>0<=Ze>>>0){f=B-d>>1,f=(f|0)==0?1:f,wp(se,f,f>>>2,n[Re+16>>2]|0),n[Ye>>2]=n[M>>2],n[Le>>2]=n[O>>2],n[Q>>2]=n[Ye>>2],n[j>>2]=n[Le>>2],dI(se,Q,j),f=n[Re>>2]|0,n[Re>>2]=n[se>>2],n[se>>2]=f,f=se+4|0,Ze=n[M>>2]|0,n[M>>2]=n[f>>2],n[f>>2]=Ze,f=se+8|0,Ze=n[O>>2]|0,n[O>>2]=n[f>>2],n[f>>2]=Ze,f=se+12|0,Ze=n[m>>2]|0,n[m>>2]=n[f>>2],n[f>>2]=Ze,HA(se),f=n[O>>2]|0;break}m=f,B=((m-d>>2)+1|0)/-2|0,Q=f+(B<<2)|0,d=k-m|0,m=d>>2,m&&(bI(Q|0,f|0,d|0)|0,f=n[M>>2]|0),Ze=Q+(m<<2)|0,n[O>>2]=Ze,n[M>>2]=f+(B<<2),f=Ze}while(0);n[f>>2]=n[c>>2],n[O>>2]=(n[O>>2]|0)+4,l=Ig(s,Re,l)|0,HA(Re)}while(0);return E=et,l|0}function je(s){s=s|0;var l=0;do{if(l=s+984|0,o[l>>0]|0)break;o[l>>0]=1,h[s+504>>2]=y(pe),s=n[s+944>>2]|0}while((s|0)!=0)}function Be(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-4-f|0)>>>2)<<2)),pt(c))}function xe(s){return s=s|0,n[s+944>>2]|0}function Ve(s){s=s|0,Yn(s,(n[s+964>>2]|0)!=0,2832),je(s)}function vt(s){return s=s|0,(o[s+984>>0]|0)!=0|0}function tr(s,l){s=s|0,l=l|0,r3e(s,l,400)|0&&(Cr(s|0,l|0,400)|0,je(s))}function Zr(s){s=s|0;var l=$e;return l=y(h[s+44>>2]),s=Ot(l)|0,y(s?y(0):l)}function Tn(s){s=s|0;var l=$e;return l=y(h[s+48>>2]),Ot(l)|0&&(l=o[(n[s+976>>2]|0)+2>>0]|0?y(1):y(0)),y(l)}function _r(s,l){s=s|0,l=l|0,n[s+980>>2]=l}function ei(s){return s=s|0,n[s+980>>2]|0}function Ti(s,l){s=s|0,l=l|0;var c=0;c=s+4|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,je(s))}function Kn(s){return s=s|0,n[s+4>>2]|0}function ja(s,l){s=s|0,l=l|0;var c=0;c=s+8|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,je(s))}function la(s){return s=s|0,n[s+8>>2]|0}function yi(s,l){s=s|0,l=l|0;var c=0;c=s+12|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,je(s))}function ca(s){return s=s|0,n[s+12>>2]|0}function Ga(s,l){s=s|0,l=l|0;var c=0;c=s+16|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,je(s))}function lo(s){return s=s|0,n[s+16>>2]|0}function RA(s,l){s=s|0,l=l|0;var c=0;c=s+20|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,je(s))}function Ic(s){return s=s|0,n[s+20>>2]|0}function ua(s,l){s=s|0,l=l|0;var c=0;c=s+24|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,je(s))}function ng(s){return s=s|0,n[s+24>>2]|0}function wc(s,l){s=s|0,l=l|0;var c=0;c=s+28|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,je(s))}function bm(s){return s=s|0,n[s+28>>2]|0}function ig(s,l){s=s|0,l=l|0;var c=0;c=s+32|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,je(s))}function Vn(s){return s=s|0,n[s+32>>2]|0}function fp(s,l){s=s|0,l=l|0;var c=0;c=s+36|0,(n[c>>2]|0)!=(l|0)&&(n[c>>2]=l,je(s))}function sg(s){return s=s|0,n[s+36>>2]|0}function TA(s,l){s=s|0,l=y(l);var c=0;c=s+40|0,y(h[c>>2])!=l&&(h[c>>2]=l,je(s))}function Os(s,l){s=s|0,l=y(l);var c=0;c=s+44|0,y(h[c>>2])!=l&&(h[c>>2]=l,je(s))}function Iu(s,l){s=s|0,l=y(l);var c=0;c=s+48|0,y(h[c>>2])!=l&&(h[c>>2]=l,je(s))}function Wa(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ot(l)|0,c=(m^1)&1,f=s+52|0,d=s+56|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,je(s))}function ji(s,l){s=s|0,l=y(l);var c=0,f=0;f=s+52|0,c=s+56|0,y(h[f>>2])==l&&(n[c>>2]|0)==2||(h[f>>2]=l,f=Ot(l)|0,n[c>>2]=f?3:2,je(s))}function Aa(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+52|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function wu(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=Ot(c)|0,f=(m^1)&1,d=s+132+(l<<3)|0,l=s+132+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,je(s))}function ms(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=Ot(c)|0,f=m?0:2,d=s+132+(l<<3)|0,l=s+132+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,je(s))}function Bc(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=l+132+(c<<3)|0,l=n[f+4>>2]|0,c=s,n[c>>2]=n[f>>2],n[c+4>>2]=l}function vc(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=Ot(c)|0,f=(m^1)&1,d=s+60+(l<<3)|0,l=s+60+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,je(s))}function G(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=Ot(c)|0,f=m?0:2,d=s+60+(l<<3)|0,l=s+60+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,je(s))}function Dt(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=l+60+(c<<3)|0,l=n[f+4>>2]|0,c=s,n[c>>2]=n[f>>2],n[c+4>>2]=l}function Dl(s,l){s=s|0,l=l|0;var c=0;c=s+60+(l<<3)+4|0,(n[c>>2]|0)!=3&&(h[s+60+(l<<3)>>2]=y(pe),n[c>>2]=3,je(s))}function Si(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=Ot(c)|0,f=(m^1)&1,d=s+204+(l<<3)|0,l=s+204+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,je(s))}function Dc(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=Ot(c)|0,f=m?0:2,d=s+204+(l<<3)|0,l=s+204+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,je(s))}function lt(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=l+204+(c<<3)|0,l=n[f+4>>2]|0,c=s,n[c>>2]=n[f>>2],n[c+4>>2]=l}function Bu(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0,m=0;m=Ot(c)|0,f=(m^1)&1,d=s+276+(l<<3)|0,l=s+276+(l<<3)+4|0,m|y(h[d>>2])==c&&(n[l>>2]|0)==(f|0)||(h[d>>2]=c,n[l>>2]=f,je(s))}function og(s,l){return s=s|0,l=l|0,y(h[s+276+(l<<3)>>2])}function cI(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ot(l)|0,c=(m^1)&1,f=s+348|0,d=s+352|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,je(s))}function NA(s,l){s=s|0,l=y(l);var c=0,f=0;f=s+348|0,c=s+352|0,y(h[f>>2])==l&&(n[c>>2]|0)==2||(h[f>>2]=l,f=Ot(l)|0,n[c>>2]=f?3:2,je(s))}function pp(s){s=s|0;var l=0;l=s+352|0,(n[l>>2]|0)!=3&&(h[s+348>>2]=y(pe),n[l>>2]=3,je(s))}function yr(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+348|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function ys(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ot(l)|0,c=(m^1)&1,f=s+356|0,d=s+360|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,je(s))}function ag(s,l){s=s|0,l=y(l);var c=0,f=0;f=s+356|0,c=s+360|0,y(h[f>>2])==l&&(n[c>>2]|0)==2||(h[f>>2]=l,f=Ot(l)|0,n[c>>2]=f?3:2,je(s))}function lg(s){s=s|0;var l=0;l=s+360|0,(n[l>>2]|0)!=3&&(h[s+356>>2]=y(pe),n[l>>2]=3,je(s))}function cg(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+356|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function hp(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ot(l)|0,c=(m^1)&1,f=s+364|0,d=s+368|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,je(s))}function Sc(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ot(l)|0,c=m?0:2,f=s+364|0,d=s+368|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,je(s))}function mt(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+364|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function Qm(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ot(l)|0,c=(m^1)&1,f=s+372|0,d=s+376|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,je(s))}function ug(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ot(l)|0,c=m?0:2,f=s+372|0,d=s+376|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,je(s))}function Ag(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+372|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function vu(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ot(l)|0,c=(m^1)&1,f=s+380|0,d=s+384|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,je(s))}function km(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ot(l)|0,c=m?0:2,f=s+380|0,d=s+384|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,je(s))}function fg(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+380|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function Du(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ot(l)|0,c=(m^1)&1,f=s+388|0,d=s+392|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,je(s))}function uI(s,l){s=s|0,l=y(l);var c=0,f=0,d=0,m=0;m=Ot(l)|0,c=m?0:2,f=s+388|0,d=s+392|0,m|y(h[f>>2])==l&&(n[d>>2]|0)==(c|0)||(h[f>>2]=l,n[d>>2]=c,je(s))}function Fm(s,l){s=s|0,l=l|0;var c=0,f=0;f=l+388|0,c=n[f+4>>2]|0,l=s,n[l>>2]=n[f>>2],n[l+4>>2]=c}function fa(s,l){s=s|0,l=y(l);var c=0;c=s+396|0,y(h[c>>2])!=l&&(h[c>>2]=l,je(s))}function Pc(s){return s=s|0,y(h[s+396>>2])}function Sl(s){return s=s|0,y(h[s+400>>2])}function Su(s){return s=s|0,y(h[s+404>>2])}function pg(s){return s=s|0,y(h[s+408>>2])}function LA(s){return s=s|0,y(h[s+412>>2])}function gp(s){return s=s|0,y(h[s+416>>2])}function Ya(s){return s=s|0,y(h[s+420>>2])}function hg(s,l){switch(s=s|0,l=l|0,Yn(s,(l|0)<6,2918),l|0){case 0:{l=(n[s+496>>2]|0)==2?5:4;break}case 2:{l=(n[s+496>>2]|0)==2?4:5;break}default:}return y(h[s+424+(l<<2)>>2])}function dp(s,l){switch(s=s|0,l=l|0,Yn(s,(l|0)<6,2918),l|0){case 0:{l=(n[s+496>>2]|0)==2?5:4;break}case 2:{l=(n[s+496>>2]|0)==2?4:5;break}default:}return y(h[s+448+(l<<2)>>2])}function _o(s,l){switch(s=s|0,l=l|0,Yn(s,(l|0)<6,2918),l|0){case 0:{l=(n[s+496>>2]|0)==2?5:4;break}case 2:{l=(n[s+496>>2]|0)==2?4:5;break}default:}return y(h[s+472+(l<<2)>>2])}function Es(s,l){s=s|0,l=l|0;var c=0,f=$e;return c=n[s+4>>2]|0,(c|0)==(n[l+4>>2]|0)?c?(f=y(h[s>>2]),s=y(ne(y(f-y(h[l>>2]))))<y(999999974e-13)):s=1:s=0,s|0}function Ei(s,l){s=y(s),l=y(l);var c=0;return Ot(s)|0?c=Ot(l)|0:c=y(ne(y(s-l)))<y(999999974e-13),c|0}function Rm(s,l){s=s|0,l=l|0,Tm(s,l)}function Tm(s,l){s=s|0,l=l|0;var c=0,f=0;c=E,E=E+16|0,f=c+4|0,n[f>>2]=0,n[f+4>>2]=0,n[f+8>>2]=0,Ua(f|0,s|0,l|0,0),co(s,3,(o[f+11>>0]|0)<0?n[f>>2]|0:f,c),D3e(f),E=c}function Ho(s,l,c,f){s=y(s),l=y(l),c=c|0,f=f|0;var d=$e;s=y(s*l),d=y(vR(s,y(1)));do if(Ei(d,y(0))|0)s=y(s-d);else{if(s=y(s-d),Ei(d,y(1))|0){s=y(s+y(1));break}if(c){s=y(s+y(1));break}f||(d>y(.5)?d=y(1):(f=Ei(d,y(.5))|0,d=y(f?1:0)),s=y(s+d))}while(0);return y(s/l)}function OA(s,l,c,f,d,m,B,Q,k,M,O,j,se){s=s|0,l=y(l),c=c|0,f=y(f),d=d|0,m=y(m),B=B|0,Q=y(Q),k=y(k),M=y(M),O=y(O),j=y(j),se=se|0;var Ye=0,Le=$e,Re=$e,et=$e,Ze=$e,at=$e,He=$e;return k<y(0)|M<y(0)?se=0:((se|0)!=0&&(Le=y(h[se+4>>2]),Le!=y(0))?(et=y(Ho(l,Le,0,0)),Ze=y(Ho(f,Le,0,0)),Re=y(Ho(m,Le,0,0)),Le=y(Ho(Q,Le,0,0))):(Re=m,et=l,Le=Q,Ze=f),(d|0)==(s|0)?Ye=Ei(Re,et)|0:Ye=0,(B|0)==(c|0)?se=Ei(Le,Ze)|0:se=0,!Ye&&(at=y(l-O),!(mp(s,at,k)|0))&&!(yp(s,at,d,k)|0)?Ye=gg(s,at,d,m,k)|0:Ye=1,!se&&(He=y(f-j),!(mp(c,He,M)|0))&&!(yp(c,He,B,M)|0)?se=gg(c,He,B,Q,M)|0:se=1,se=Ye&se),se|0}function mp(s,l,c){return s=s|0,l=y(l),c=y(c),(s|0)==1?s=Ei(l,c)|0:s=0,s|0}function yp(s,l,c,f){return s=s|0,l=y(l),c=c|0,f=y(f),(s|0)==2&(c|0)==0?l>=f?s=1:s=Ei(l,f)|0:s=0,s|0}function gg(s,l,c,f,d){return s=s|0,l=y(l),c=c|0,f=y(f),d=y(d),(s|0)==2&(c|0)==2&f>l?d<=l?s=1:s=Ei(l,d)|0:s=0,s|0}function pa(s,l,c,f,d,m,B,Q,k,M,O){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=m|0,B=y(B),Q=y(Q),k=k|0,M=M|0,O=O|0;var j=0,se=0,Ye=0,Le=0,Re=$e,et=$e,Ze=0,at=0,He=0,Ge=0,Tt=0,Rr=0,ir=0,Jt=0,Ir=0,Qr=0,rr=0,Bn=$e,po=$e,ho=$e,go=0,Ea=0;rr=E,E=E+160|0,Jt=rr+152|0,ir=rr+120|0,Rr=rr+104|0,He=rr+72|0,Le=rr+56|0,Tt=rr+8|0,at=rr,Ge=(n[2279]|0)+1|0,n[2279]=Ge,Ir=s+984|0,(o[Ir>>0]|0)!=0&&(n[s+512>>2]|0)!=(n[2278]|0)?Ze=4:(n[s+516>>2]|0)==(f|0)?Qr=0:Ze=4,(Ze|0)==4&&(n[s+520>>2]=0,n[s+924>>2]=-1,n[s+928>>2]=-1,h[s+932>>2]=y(-1),h[s+936>>2]=y(-1),Qr=1);e:do if(n[s+964>>2]|0)if(Re=y(rn(s,2,B)),et=y(rn(s,0,B)),j=s+916|0,ho=y(h[j>>2]),po=y(h[s+920>>2]),Bn=y(h[s+932>>2]),OA(d,l,m,c,n[s+924>>2]|0,ho,n[s+928>>2]|0,po,Bn,y(h[s+936>>2]),Re,et,O)|0)Ze=22;else if(Ye=n[s+520>>2]|0,!Ye)Ze=21;else for(se=0;;){if(j=s+524+(se*24|0)|0,Bn=y(h[j>>2]),po=y(h[s+524+(se*24|0)+4>>2]),ho=y(h[s+524+(se*24|0)+16>>2]),OA(d,l,m,c,n[s+524+(se*24|0)+8>>2]|0,Bn,n[s+524+(se*24|0)+12>>2]|0,po,ho,y(h[s+524+(se*24|0)+20>>2]),Re,et,O)|0){Ze=22;break e}if(se=se+1|0,se>>>0>=Ye>>>0){Ze=21;break}}else{if(k){if(j=s+916|0,!(Ei(y(h[j>>2]),l)|0)){Ze=21;break}if(!(Ei(y(h[s+920>>2]),c)|0)){Ze=21;break}if((n[s+924>>2]|0)!=(d|0)){Ze=21;break}j=(n[s+928>>2]|0)==(m|0)?j:0,Ze=22;break}if(Ye=n[s+520>>2]|0,!Ye)Ze=21;else for(se=0;;){if(j=s+524+(se*24|0)|0,Ei(y(h[j>>2]),l)|0&&Ei(y(h[s+524+(se*24|0)+4>>2]),c)|0&&(n[s+524+(se*24|0)+8>>2]|0)==(d|0)&&(n[s+524+(se*24|0)+12>>2]|0)==(m|0)){Ze=22;break e}if(se=se+1|0,se>>>0>=Ye>>>0){Ze=21;break}}}while(0);do if((Ze|0)==21)o[11697]|0?(j=0,Ze=28):(j=0,Ze=31);else if((Ze|0)==22){if(se=(o[11697]|0)!=0,!((j|0)!=0&(Qr^1)))if(se){Ze=28;break}else{Ze=31;break}Le=j+16|0,n[s+908>>2]=n[Le>>2],Ye=j+20|0,n[s+912>>2]=n[Ye>>2],(o[11698]|0)==0|se^1||(n[at>>2]=MA(Ge)|0,n[at+4>>2]=Ge,co(s,4,2972,at),se=n[s+972>>2]|0,se|0&&rf[se&127](s),d=Ka(d,k)|0,m=Ka(m,k)|0,Ea=+y(h[Le>>2]),go=+y(h[Ye>>2]),n[Tt>>2]=d,n[Tt+4>>2]=m,C[Tt+8>>3]=+l,C[Tt+16>>3]=+c,C[Tt+24>>3]=Ea,C[Tt+32>>3]=go,n[Tt+40>>2]=M,co(s,4,2989,Tt))}while(0);return(Ze|0)==28&&(se=MA(Ge)|0,n[Le>>2]=se,n[Le+4>>2]=Ge,n[Le+8>>2]=Qr?3047:11699,co(s,4,3038,Le),se=n[s+972>>2]|0,se|0&&rf[se&127](s),Tt=Ka(d,k)|0,Ze=Ka(m,k)|0,n[He>>2]=Tt,n[He+4>>2]=Ze,C[He+8>>3]=+l,C[He+16>>3]=+c,n[He+24>>2]=M,co(s,4,3049,He),Ze=31),(Ze|0)==31&&(ti(s,l,c,f,d,m,B,Q,k,O),o[11697]|0&&(se=n[2279]|0,Tt=MA(se)|0,n[Rr>>2]=Tt,n[Rr+4>>2]=se,n[Rr+8>>2]=Qr?3047:11699,co(s,4,3083,Rr),se=n[s+972>>2]|0,se|0&&rf[se&127](s),Tt=Ka(d,k)|0,Rr=Ka(m,k)|0,go=+y(h[s+908>>2]),Ea=+y(h[s+912>>2]),n[ir>>2]=Tt,n[ir+4>>2]=Rr,C[ir+8>>3]=go,C[ir+16>>3]=Ea,n[ir+24>>2]=M,co(s,4,3092,ir)),n[s+516>>2]=f,j||(se=s+520|0,j=n[se>>2]|0,(j|0)==16&&(o[11697]|0&&co(s,4,3124,Jt),n[se>>2]=0,j=0),k?j=s+916|0:(n[se>>2]=j+1,j=s+524+(j*24|0)|0),h[j>>2]=l,h[j+4>>2]=c,n[j+8>>2]=d,n[j+12>>2]=m,n[j+16>>2]=n[s+908>>2],n[j+20>>2]=n[s+912>>2],j=0)),k&&(n[s+416>>2]=n[s+908>>2],n[s+420>>2]=n[s+912>>2],o[s+985>>0]=1,o[Ir>>0]=0),n[2279]=(n[2279]|0)+-1,n[s+512>>2]=n[2278],E=rr,Qr|(j|0)==0|0}function rn(s,l,c){s=s|0,l=l|0,c=y(c);var f=$e;return f=y(K(s,l,c)),y(f+y(te(s,l,c)))}function co(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=E,E=E+16|0,d=m,n[d>>2]=f,s?f=n[s+976>>2]|0:f=0,mg(f,s,l,c,d),E=m}function MA(s){return s=s|0,(s>>>0>60?3201:3201+(60-s)|0)|0}function Ka(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;return d=E,E=E+32|0,c=d+12|0,f=d,n[c>>2]=n[254],n[c+4>>2]=n[255],n[c+8>>2]=n[256],n[f>>2]=n[257],n[f+4>>2]=n[258],n[f+8>>2]=n[259],(s|0)>2?s=11699:s=n[(l?f:c)+(s<<2)>>2]|0,E=d,s|0}function ti(s,l,c,f,d,m,B,Q,k,M){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=m|0,B=y(B),Q=y(Q),k=k|0,M=M|0;var O=0,j=0,se=0,Ye=0,Le=$e,Re=$e,et=$e,Ze=$e,at=$e,He=$e,Ge=$e,Tt=0,Rr=0,ir=0,Jt=$e,Ir=$e,Qr=0,rr=$e,Bn=0,po=0,ho=0,go=0,Ea=0,Fp=0,Rp=0,Fl=0,Tp=0,Lu=0,Ou=0,Np=0,Lp=0,Op=0,Jr=0,Rl=0,Mp=0,Rc=0,Up=$e,_p=$e,Mu=$e,Uu=$e,Tc=$e,Us=0,el=0,jo=0,Tl=0,sf=0,of=$e,_u=$e,af=$e,lf=$e,_s=$e,ws=$e,Nl=0,Pn=$e,cf=$e,mo=$e,Nc=$e,yo=$e,Lc=$e,uf=0,Af=0,Oc=$e,Hs=$e,Ll=0,ff=0,pf=0,hf=0,vr=$e,jn=0,Bs=0,Eo=0,qs=0,Pr=0,lr=0,Ol=0,Wt=$e,gf=0,ii=0;Ol=E,E=E+16|0,Us=Ol+12|0,el=Ol+8|0,jo=Ol+4|0,Tl=Ol,Yn(s,(d|0)==0|(Ot(l)|0)^1,3326),Yn(s,(m|0)==0|(Ot(c)|0)^1,3406),Bs=gt(s,f)|0,n[s+496>>2]=Bs,Pr=ur(2,Bs)|0,lr=ur(0,Bs)|0,h[s+440>>2]=y(K(s,Pr,B)),h[s+444>>2]=y(te(s,Pr,B)),h[s+428>>2]=y(K(s,lr,B)),h[s+436>>2]=y(te(s,lr,B)),h[s+464>>2]=y(gr(s,Pr)),h[s+468>>2]=y(hn(s,Pr)),h[s+452>>2]=y(gr(s,lr)),h[s+460>>2]=y(hn(s,lr)),h[s+488>>2]=y(ri(s,Pr,B)),h[s+492>>2]=y(Ni(s,Pr,B)),h[s+476>>2]=y(ri(s,lr,B)),h[s+484>>2]=y(Ni(s,lr,B));do if(n[s+964>>2]|0)Eg(s,l,c,d,m,B,Q);else{if(Eo=s+948|0,qs=(n[s+952>>2]|0)-(n[Eo>>2]|0)>>2,!qs){Fv(s,l,c,d,m,B,Q);break}if(!k&&Rv(s,l,c,d,m,B,Q)|0)break;ee(s),Rl=s+508|0,o[Rl>>0]=0,Pr=ur(n[s+4>>2]|0,Bs)|0,lr=fI(Pr,Bs)|0,jn=Ae(Pr)|0,Mp=n[s+8>>2]|0,ff=s+28|0,Rc=(n[ff>>2]|0)!=0,yo=jn?B:Q,Oc=jn?Q:B,Up=y(Cp(s,Pr,B)),_p=y(pI(s,Pr,B)),Le=y(Cp(s,lr,B)),Lc=y(gn(s,Pr,B)),Hs=y(gn(s,lr,B)),ir=jn?d:m,Ll=jn?m:d,vr=jn?Lc:Hs,at=jn?Hs:Lc,Nc=y(rn(s,2,B)),Ze=y(rn(s,0,B)),Re=y(y(Hr(s+364|0,B))-vr),et=y(y(Hr(s+380|0,B))-vr),He=y(y(Hr(s+372|0,Q))-at),Ge=y(y(Hr(s+388|0,Q))-at),Mu=jn?Re:He,Uu=jn?et:Ge,Nc=y(l-Nc),l=y(Nc-vr),Ot(l)|0?vr=l:vr=y(Nn(y(kg(l,et)),Re)),cf=y(c-Ze),l=y(cf-at),Ot(l)|0?mo=l:mo=y(Nn(y(kg(l,Ge)),He)),Re=jn?vr:mo,Pn=jn?mo:vr;e:do if((ir|0)==1)for(f=0,j=0;;){if(O=Ts(s,j)|0,!f)y(rs(O))>y(0)&&y(Ms(O))>y(0)?f=O:f=0;else if(Lm(O)|0){Ye=0;break e}if(j=j+1|0,j>>>0>=qs>>>0){Ye=f;break}}else Ye=0;while(0);Tt=Ye+500|0,Rr=Ye+504|0,f=0,O=0,l=y(0),se=0;do{if(j=n[(n[Eo>>2]|0)+(se<<2)>>2]|0,(n[j+36>>2]|0)==1)Pu(j),o[j+985>>0]=1,o[j+984>>0]=0;else{Pl(j),k&&Ep(j,gt(j,Bs)|0,Re,Pn,vr);do if((n[j+24>>2]|0)!=1)if((j|0)==(Ye|0)){n[Tt>>2]=n[2278],h[Rr>>2]=y(0);break}else{Om(s,j,vr,d,mo,vr,mo,m,Bs,M);break}else O|0&&(n[O+960>>2]=j),n[j+960>>2]=0,O=j,f=(f|0)==0?j:f;while(0);ws=y(h[j+504>>2]),l=y(l+y(ws+y(rn(j,Pr,vr))))}se=se+1|0}while((se|0)!=(qs|0));for(ho=l>Re,Nl=Rc&((ir|0)==2&ho)?1:ir,Bn=(Ll|0)==1,Ea=Bn&(k^1),Fp=(Nl|0)==1,Rp=(Nl|0)==2,Fl=976+(Pr<<2)|0,Tp=(Ll|2|0)==2,Op=Bn&(Rc^1),Lu=1040+(lr<<2)|0,Ou=1040+(Pr<<2)|0,Np=976+(lr<<2)|0,Lp=(Ll|0)!=1,ho=Rc&((ir|0)!=0&ho),po=s+976|0,Bn=Bn^1,l=Re,Qr=0,go=0,ws=y(0),Tc=y(0);;){e:do if(Qr>>>0<qs>>>0)for(Rr=n[Eo>>2]|0,se=0,Ge=y(0),He=y(0),et=y(0),Re=y(0),j=0,O=0,Ye=Qr;;){if(Tt=n[Rr+(Ye<<2)>>2]|0,(n[Tt+36>>2]|0)!=1&&(n[Tt+940>>2]=go,(n[Tt+24>>2]|0)!=1)){if(Ze=y(rn(Tt,Pr,vr)),Jr=n[Fl>>2]|0,c=y(Hr(Tt+380+(Jr<<3)|0,yo)),at=y(h[Tt+504>>2]),c=y(kg(c,at)),c=y(Nn(y(Hr(Tt+364+(Jr<<3)|0,yo)),c)),Rc&(se|0)!=0&y(Ze+y(He+c))>l){m=se,Ze=Ge,ir=Ye;break e}Ze=y(Ze+c),c=y(He+Ze),Ze=y(Ge+Ze),Lm(Tt)|0&&(et=y(et+y(rs(Tt))),Re=y(Re-y(at*y(Ms(Tt))))),O|0&&(n[O+960>>2]=Tt),n[Tt+960>>2]=0,se=se+1|0,O=Tt,j=(j|0)==0?Tt:j}else Ze=Ge,c=He;if(Ye=Ye+1|0,Ye>>>0<qs>>>0)Ge=Ze,He=c;else{m=se,ir=Ye;break}}else m=0,Ze=y(0),et=y(0),Re=y(0),j=0,ir=Qr;while(0);Jr=et>y(0)&et<y(1),Jt=Jr?y(1):et,Jr=Re>y(0)&Re<y(1),Ge=Jr?y(1):Re;do if(Fp)Jr=51;else if(Ze<Mu&((Ot(Mu)|0)^1))l=Mu,Jr=51;else if(Ze>Uu&((Ot(Uu)|0)^1))l=Uu,Jr=51;else if(o[(n[po>>2]|0)+3>>0]|0)Jr=51;else{if(Jt!=y(0)&&y(rs(s))!=y(0)){Jr=53;break}l=Ze,Jr=53}while(0);if((Jr|0)==51&&(Jr=0,Ot(l)|0?Jr=53:(Ir=y(l-Ze),rr=l)),(Jr|0)==53&&(Jr=0,Ze<y(0)?(Ir=y(-Ze),rr=l):(Ir=y(0),rr=l)),!Ea&&(sf=(j|0)==0,!sf)){se=n[Fl>>2]|0,Ye=Ir<y(0),at=y(Ir/Ge),Tt=Ir>y(0),He=y(Ir/Jt),et=y(0),Ze=y(0),l=y(0),O=j;do c=y(Hr(O+380+(se<<3)|0,yo)),Re=y(Hr(O+364+(se<<3)|0,yo)),Re=y(kg(c,y(Nn(Re,y(h[O+504>>2]))))),Ye?(c=y(Re*y(Ms(O))),c!=y(-0)&&(Wt=y(Re-y(at*c)),of=y(Ci(O,Pr,Wt,rr,vr)),Wt!=of)&&(et=y(et-y(of-Re)),l=y(l+c))):Tt&&(_u=y(rs(O)),_u!=y(0))&&(Wt=y(Re+y(He*_u)),af=y(Ci(O,Pr,Wt,rr,vr)),Wt!=af)&&(et=y(et-y(af-Re)),Ze=y(Ze-_u)),O=n[O+960>>2]|0;while((O|0)!=0);if(l=y(Ge+l),Re=y(Ir+et),sf)l=y(0);else{at=y(Jt+Ze),Ye=n[Fl>>2]|0,Tt=Re<y(0),Rr=l==y(0),He=y(Re/l),se=Re>y(0),at=y(Re/at),l=y(0);do{Wt=y(Hr(j+380+(Ye<<3)|0,yo)),et=y(Hr(j+364+(Ye<<3)|0,yo)),et=y(kg(Wt,y(Nn(et,y(h[j+504>>2]))))),Tt?(Wt=y(et*y(Ms(j))),Re=y(-Wt),Wt!=y(-0)?(Wt=y(He*Re),Re=y(Ci(j,Pr,y(et+(Rr?Re:Wt)),rr,vr))):Re=et):se&&(lf=y(rs(j)),lf!=y(0))?Re=y(Ci(j,Pr,y(et+y(at*lf)),rr,vr)):Re=et,l=y(l-y(Re-et)),Ze=y(rn(j,Pr,vr)),c=y(rn(j,lr,vr)),Re=y(Re+Ze),h[el>>2]=Re,n[Tl>>2]=1,et=y(h[j+396>>2]);e:do if(Ot(et)|0){O=Ot(Pn)|0;do if(!O){if(ho|(ts(j,lr,Pn)|0|Bn)||(ga(s,j)|0)!=4||(n[(xl(j,lr)|0)+4>>2]|0)==3||(n[(Qc(j,lr)|0)+4>>2]|0)==3)break;h[Us>>2]=Pn,n[jo>>2]=1;break e}while(0);if(ts(j,lr,Pn)|0){O=n[j+992+(n[Np>>2]<<2)>>2]|0,Wt=y(c+y(Hr(O,Pn))),h[Us>>2]=Wt,O=Lp&(n[O+4>>2]|0)==2,n[jo>>2]=((Ot(Wt)|0|O)^1)&1;break}else{h[Us>>2]=Pn,n[jo>>2]=O?0:2;break}}else Wt=y(Re-Ze),Jt=y(Wt/et),Wt=y(et*Wt),n[jo>>2]=1,h[Us>>2]=y(c+(jn?Jt:Wt));while(0);pr(j,Pr,rr,vr,Tl,el),pr(j,lr,Pn,vr,jo,Us);do if(!(ts(j,lr,Pn)|0)&&(ga(s,j)|0)==4){if((n[(xl(j,lr)|0)+4>>2]|0)==3){O=0;break}O=(n[(Qc(j,lr)|0)+4>>2]|0)!=3}else O=0;while(0);Wt=y(h[el>>2]),Jt=y(h[Us>>2]),gf=n[Tl>>2]|0,ii=n[jo>>2]|0,pa(j,jn?Wt:Jt,jn?Jt:Wt,Bs,jn?gf:ii,jn?ii:gf,vr,mo,k&(O^1),3488,M)|0,o[Rl>>0]=o[Rl>>0]|o[j+508>>0],j=n[j+960>>2]|0}while((j|0)!=0)}}else l=y(0);if(l=y(Ir+l),ii=l<y(0)&1,o[Rl>>0]=ii|u[Rl>>0],Rp&l>y(0)?(O=n[Fl>>2]|0,(n[s+364+(O<<3)+4>>2]|0)!=0&&(_s=y(Hr(s+364+(O<<3)|0,yo)),_s>=y(0))?Re=y(Nn(y(0),y(_s-y(rr-l)))):Re=y(0)):Re=l,Tt=Qr>>>0<ir>>>0,Tt){Ye=n[Eo>>2]|0,se=Qr,O=0;do j=n[Ye+(se<<2)>>2]|0,n[j+24>>2]|0||(O=((n[(xl(j,Pr)|0)+4>>2]|0)==3&1)+O|0,O=O+((n[(Qc(j,Pr)|0)+4>>2]|0)==3&1)|0),se=se+1|0;while((se|0)!=(ir|0));O?(Ze=y(0),c=y(0)):Jr=101}else Jr=101;e:do if((Jr|0)==101)switch(Jr=0,Mp|0){case 1:{O=0,Ze=y(Re*y(.5)),c=y(0);break e}case 2:{O=0,Ze=Re,c=y(0);break e}case 3:{if(m>>>0<=1){O=0,Ze=y(0),c=y(0);break e}c=y((m+-1|0)>>>0),O=0,Ze=y(0),c=y(y(Nn(Re,y(0)))/c);break e}case 5:{c=y(Re/y((m+1|0)>>>0)),O=0,Ze=c;break e}case 4:{c=y(Re/y(m>>>0)),O=0,Ze=y(c*y(.5));break e}default:{O=0,Ze=y(0),c=y(0);break e}}while(0);if(l=y(Up+Ze),Tt){et=y(Re/y(O|0)),se=n[Eo>>2]|0,j=Qr,Re=y(0);do{O=n[se+(j<<2)>>2]|0;e:do if((n[O+36>>2]|0)!=1){switch(n[O+24>>2]|0){case 1:{if(Ai(O,Pr)|0){if(!k)break e;Wt=y(Fr(O,Pr,rr)),Wt=y(Wt+y(gr(s,Pr))),Wt=y(Wt+y(K(O,Pr,vr))),h[O+400+(n[Ou>>2]<<2)>>2]=Wt;break e}break}case 0:if(ii=(n[(xl(O,Pr)|0)+4>>2]|0)==3,Wt=y(et+l),l=ii?Wt:l,k&&(ii=O+400+(n[Ou>>2]<<2)|0,h[ii>>2]=y(l+y(h[ii>>2]))),ii=(n[(Qc(O,Pr)|0)+4>>2]|0)==3,Wt=y(et+l),l=ii?Wt:l,Ea){Wt=y(c+y(rn(O,Pr,vr))),Re=Pn,l=y(l+y(Wt+y(h[O+504>>2])));break e}else{l=y(l+y(c+y(ns(O,Pr,vr)))),Re=y(Nn(Re,y(ns(O,lr,vr))));break e}default:}k&&(Wt=y(Ze+y(gr(s,Pr))),ii=O+400+(n[Ou>>2]<<2)|0,h[ii>>2]=y(Wt+y(h[ii>>2])))}while(0);j=j+1|0}while((j|0)!=(ir|0))}else Re=y(0);if(c=y(_p+l),Tp?Ze=y(y(Ci(s,lr,y(Hs+Re),Oc,B))-Hs):Ze=Pn,et=y(y(Ci(s,lr,y(Hs+(Op?Pn:Re)),Oc,B))-Hs),Tt&k){j=Qr;do{se=n[(n[Eo>>2]|0)+(j<<2)>>2]|0;do if((n[se+36>>2]|0)!=1){if((n[se+24>>2]|0)==1){if(Ai(se,lr)|0){if(Wt=y(Fr(se,lr,Pn)),Wt=y(Wt+y(gr(s,lr))),Wt=y(Wt+y(K(se,lr,vr))),O=n[Lu>>2]|0,h[se+400+(O<<2)>>2]=Wt,!(Ot(Wt)|0))break}else O=n[Lu>>2]|0;Wt=y(gr(s,lr)),h[se+400+(O<<2)>>2]=y(Wt+y(K(se,lr,vr)));break}O=ga(s,se)|0;do if((O|0)==4){if((n[(xl(se,lr)|0)+4>>2]|0)==3){Jr=139;break}if((n[(Qc(se,lr)|0)+4>>2]|0)==3){Jr=139;break}if(ts(se,lr,Pn)|0){l=Le;break}gf=n[se+908+(n[Fl>>2]<<2)>>2]|0,n[Us>>2]=gf,l=y(h[se+396>>2]),ii=Ot(l)|0,Re=(n[v>>2]=gf,y(h[v>>2])),ii?l=et:(Ir=y(rn(se,lr,vr)),Wt=y(Re/l),l=y(l*Re),l=y(Ir+(jn?Wt:l))),h[el>>2]=l,h[Us>>2]=y(y(rn(se,Pr,vr))+Re),n[jo>>2]=1,n[Tl>>2]=1,pr(se,Pr,rr,vr,jo,Us),pr(se,lr,Pn,vr,Tl,el),l=y(h[Us>>2]),Ir=y(h[el>>2]),Wt=jn?l:Ir,l=jn?Ir:l,ii=((Ot(Wt)|0)^1)&1,pa(se,Wt,l,Bs,ii,((Ot(l)|0)^1)&1,vr,mo,1,3493,M)|0,l=Le}else Jr=139;while(0);e:do if((Jr|0)==139){Jr=0,l=y(Ze-y(ns(se,lr,vr)));do if((n[(xl(se,lr)|0)+4>>2]|0)==3){if((n[(Qc(se,lr)|0)+4>>2]|0)!=3)break;l=y(Le+y(Nn(y(0),y(l*y(.5)))));break e}while(0);if((n[(Qc(se,lr)|0)+4>>2]|0)==3){l=Le;break}if((n[(xl(se,lr)|0)+4>>2]|0)==3){l=y(Le+y(Nn(y(0),l)));break}switch(O|0){case 1:{l=Le;break e}case 2:{l=y(Le+y(l*y(.5)));break e}default:{l=y(Le+l);break e}}}while(0);Wt=y(ws+l),ii=se+400+(n[Lu>>2]<<2)|0,h[ii>>2]=y(Wt+y(h[ii>>2]))}while(0);j=j+1|0}while((j|0)!=(ir|0))}if(ws=y(ws+et),Tc=y(Nn(Tc,c)),m=go+1|0,ir>>>0>=qs>>>0)break;l=rr,Qr=ir,go=m}do if(k){if(O=m>>>0>1,!O&&!(Gi(s)|0))break;if(!(Ot(Pn)|0)){l=y(Pn-ws);e:do switch(n[s+12>>2]|0){case 3:{Le=y(Le+l),He=y(0);break}case 2:{Le=y(Le+y(l*y(.5))),He=y(0);break}case 4:{Pn>ws?He=y(l/y(m>>>0)):He=y(0);break}case 7:if(Pn>ws){Le=y(Le+y(l/y(m<<1>>>0))),He=y(l/y(m>>>0)),He=O?He:y(0);break e}else{Le=y(Le+y(l*y(.5))),He=y(0);break e}case 6:{He=y(l/y(go>>>0)),He=Pn>ws&O?He:y(0);break}default:He=y(0)}while(0);if(m|0)for(Tt=1040+(lr<<2)|0,Rr=976+(lr<<2)|0,Ye=0,j=0;;){e:do if(j>>>0<qs>>>0)for(Re=y(0),et=y(0),l=y(0),se=j;;){O=n[(n[Eo>>2]|0)+(se<<2)>>2]|0;do if((n[O+36>>2]|0)!=1&&(n[O+24>>2]|0)==0){if((n[O+940>>2]|0)!=(Ye|0))break e;if(Mm(O,lr)|0&&(Wt=y(h[O+908+(n[Rr>>2]<<2)>>2]),l=y(Nn(l,y(Wt+y(rn(O,lr,vr)))))),(ga(s,O)|0)!=5)break;_s=y(Ja(O)),_s=y(_s+y(K(O,0,vr))),Wt=y(h[O+912>>2]),Wt=y(y(Wt+y(rn(O,0,vr)))-_s),_s=y(Nn(et,_s)),Wt=y(Nn(Re,Wt)),Re=Wt,et=_s,l=y(Nn(l,y(_s+Wt)))}while(0);if(O=se+1|0,O>>>0<qs>>>0)se=O;else{se=O;break}}else et=y(0),l=y(0),se=j;while(0);if(at=y(He+l),c=Le,Le=y(Le+at),j>>>0<se>>>0){Ze=y(c+et),O=j;do{j=n[(n[Eo>>2]|0)+(O<<2)>>2]|0;e:do if((n[j+36>>2]|0)!=1&&(n[j+24>>2]|0)==0)switch(ga(s,j)|0){case 1:{Wt=y(c+y(K(j,lr,vr))),h[j+400+(n[Tt>>2]<<2)>>2]=Wt;break e}case 3:{Wt=y(y(Le-y(te(j,lr,vr)))-y(h[j+908+(n[Rr>>2]<<2)>>2])),h[j+400+(n[Tt>>2]<<2)>>2]=Wt;break e}case 2:{Wt=y(c+y(y(at-y(h[j+908+(n[Rr>>2]<<2)>>2]))*y(.5))),h[j+400+(n[Tt>>2]<<2)>>2]=Wt;break e}case 4:{if(Wt=y(c+y(K(j,lr,vr))),h[j+400+(n[Tt>>2]<<2)>>2]=Wt,ts(j,lr,Pn)|0||(jn?(Re=y(h[j+908>>2]),l=y(Re+y(rn(j,Pr,vr))),et=at):(et=y(h[j+912>>2]),et=y(et+y(rn(j,lr,vr))),l=at,Re=y(h[j+908>>2])),Ei(l,Re)|0&&Ei(et,y(h[j+912>>2]))|0))break e;pa(j,l,et,Bs,1,1,vr,mo,1,3501,M)|0;break e}case 5:{h[j+404>>2]=y(y(Ze-y(Ja(j)))+y(Fr(j,0,Pn)));break e}default:break e}while(0);O=O+1|0}while((O|0)!=(se|0))}if(Ye=Ye+1|0,(Ye|0)==(m|0))break;j=se}}}while(0);if(h[s+908>>2]=y(Ci(s,2,Nc,B,B)),h[s+912>>2]=y(Ci(s,0,cf,Q,B)),(Nl|0)!=0&&(uf=n[s+32>>2]|0,Af=(Nl|0)==2,!(Af&(uf|0)!=2))?Af&(uf|0)==2&&(l=y(Lc+rr),l=y(Nn(y(kg(l,y(UA(s,Pr,Tc,yo)))),Lc)),Jr=198):(l=y(Ci(s,Pr,Tc,yo,B)),Jr=198),(Jr|0)==198&&(h[s+908+(n[976+(Pr<<2)>>2]<<2)>>2]=l),(Ll|0)!=0&&(pf=n[s+32>>2]|0,hf=(Ll|0)==2,!(hf&(pf|0)!=2))?hf&(pf|0)==2&&(l=y(Hs+Pn),l=y(Nn(y(kg(l,y(UA(s,lr,y(Hs+ws),Oc)))),Hs)),Jr=204):(l=y(Ci(s,lr,y(Hs+ws),Oc,B)),Jr=204),(Jr|0)==204&&(h[s+908+(n[976+(lr<<2)>>2]<<2)>>2]=l),k){if((n[ff>>2]|0)==2){j=976+(lr<<2)|0,se=1040+(lr<<2)|0,O=0;do Ye=Ts(s,O)|0,n[Ye+24>>2]|0||(gf=n[j>>2]|0,Wt=y(h[s+908+(gf<<2)>>2]),ii=Ye+400+(n[se>>2]<<2)|0,Wt=y(Wt-y(h[ii>>2])),h[ii>>2]=y(Wt-y(h[Ye+908+(gf<<2)>>2]))),O=O+1|0;while((O|0)!=(qs|0))}if(f|0){O=jn?Nl:d;do Um(s,f,vr,O,mo,Bs,M),f=n[f+960>>2]|0;while((f|0)!=0)}if(O=(Pr|2|0)==3,j=(lr|2|0)==3,O|j){f=0;do se=n[(n[Eo>>2]|0)+(f<<2)>>2]|0,(n[se+36>>2]|0)!=1&&(O&&Ip(s,se,Pr),j&&Ip(s,se,lr)),f=f+1|0;while((f|0)!=(qs|0))}}}while(0);E=Ol}function ha(s,l){s=s|0,l=y(l);var c=0;ia(s,l>=y(0),3147),c=l==y(0),h[s+4>>2]=c?y(0):l}function xc(s,l,c,f){s=s|0,l=y(l),c=y(c),f=f|0;var d=$e,m=$e,B=0,Q=0,k=0;n[2278]=(n[2278]|0)+1,Pl(s),ts(s,2,l)|0?(d=y(Hr(n[s+992>>2]|0,l)),k=1,d=y(d+y(rn(s,2,l)))):(d=y(Hr(s+380|0,l)),d>=y(0)?k=2:(k=((Ot(l)|0)^1)&1,d=l)),ts(s,0,c)|0?(m=y(Hr(n[s+996>>2]|0,c)),Q=1,m=y(m+y(rn(s,0,l)))):(m=y(Hr(s+388|0,c)),m>=y(0)?Q=2:(Q=((Ot(c)|0)^1)&1,m=c)),B=s+976|0,pa(s,d,m,f,k,Q,l,c,1,3189,n[B>>2]|0)|0&&(Ep(s,n[s+496>>2]|0,l,c,l),bc(s,y(h[(n[B>>2]|0)+4>>2]),y(0),y(0)),o[11696]|0)&&Rm(s,7)}function Pl(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;Q=E,E=E+32|0,B=Q+24|0,m=Q+16|0,f=Q+8|0,d=Q,c=0;do l=s+380+(c<<3)|0,(n[s+380+(c<<3)+4>>2]|0)!=0&&(k=l,M=n[k+4>>2]|0,O=f,n[O>>2]=n[k>>2],n[O+4>>2]=M,O=s+364+(c<<3)|0,M=n[O+4>>2]|0,k=d,n[k>>2]=n[O>>2],n[k+4>>2]=M,n[m>>2]=n[f>>2],n[m+4>>2]=n[f+4>>2],n[B>>2]=n[d>>2],n[B+4>>2]=n[d+4>>2],Es(m,B)|0)||(l=s+348+(c<<3)|0),n[s+992+(c<<2)>>2]=l,c=c+1|0;while((c|0)!=2);E=Q}function ts(s,l,c){s=s|0,l=l|0,c=y(c);var f=0;switch(s=n[s+992+(n[976+(l<<2)>>2]<<2)>>2]|0,n[s+4>>2]|0){case 0:case 3:{s=0;break}case 1:{y(h[s>>2])<y(0)?s=0:f=5;break}case 2:{y(h[s>>2])<y(0)?s=0:s=(Ot(c)|0)^1;break}default:f=5}return(f|0)==5&&(s=1),s|0}function Hr(s,l){switch(s=s|0,l=y(l),n[s+4>>2]|0){case 2:{l=y(y(y(h[s>>2])*l)/y(100));break}case 1:{l=y(h[s>>2]);break}default:l=y(pe)}return y(l)}function Ep(s,l,c,f,d){s=s|0,l=l|0,c=y(c),f=y(f),d=y(d);var m=0,B=$e;l=n[s+944>>2]|0?l:1,m=ur(n[s+4>>2]|0,l)|0,l=fI(m,l)|0,c=y(_m(s,m,c)),f=y(_m(s,l,f)),B=y(c+y(K(s,m,d))),h[s+400+(n[1040+(m<<2)>>2]<<2)>>2]=B,c=y(c+y(te(s,m,d))),h[s+400+(n[1e3+(m<<2)>>2]<<2)>>2]=c,c=y(f+y(K(s,l,d))),h[s+400+(n[1040+(l<<2)>>2]<<2)>>2]=c,d=y(f+y(te(s,l,d))),h[s+400+(n[1e3+(l<<2)>>2]<<2)>>2]=d}function bc(s,l,c,f){s=s|0,l=y(l),c=y(c),f=y(f);var d=0,m=0,B=$e,Q=$e,k=0,M=0,O=$e,j=0,se=$e,Ye=$e,Le=$e,Re=$e;if(l!=y(0)&&(d=s+400|0,Re=y(h[d>>2]),m=s+404|0,Le=y(h[m>>2]),j=s+416|0,Ye=y(h[j>>2]),M=s+420|0,B=y(h[M>>2]),se=y(Re+c),O=y(Le+f),f=y(se+Ye),Q=y(O+B),k=(n[s+988>>2]|0)==1,h[d>>2]=y(Ho(Re,l,0,k)),h[m>>2]=y(Ho(Le,l,0,k)),c=y(vR(y(Ye*l),y(1))),Ei(c,y(0))|0?m=0:m=(Ei(c,y(1))|0)^1,c=y(vR(y(B*l),y(1))),Ei(c,y(0))|0?d=0:d=(Ei(c,y(1))|0)^1,Re=y(Ho(f,l,k&m,k&(m^1))),h[j>>2]=y(Re-y(Ho(se,l,0,k))),Re=y(Ho(Q,l,k&d,k&(d^1))),h[M>>2]=y(Re-y(Ho(O,l,0,k))),m=(n[s+952>>2]|0)-(n[s+948>>2]|0)>>2,m|0)){d=0;do bc(Ts(s,d)|0,l,se,O),d=d+1|0;while((d|0)!=(m|0))}}function AI(s,l,c,f,d){switch(s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,c|0){case 5:case 0:{s=r7(n[489]|0,f,d)|0;break}default:s=I3e(f,d)|0}return s|0}function dg(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;d=E,E=E+16|0,m=d,n[m>>2]=f,mg(s,0,l,c,m),E=d}function mg(s,l,c,f,d){if(s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,s=s|0?s:956,B7[n[s+8>>2]&1](s,l,c,f,d)|0,(c|0)==5)Rt();else return}function Va(s,l,c){s=s|0,l=l|0,c=c|0,o[s+l>>0]=c&1}function Nm(s,l){s=s|0,l=l|0;var c=0,f=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,c=l+4|0,f=(n[c>>2]|0)-(n[l>>2]|0)>>2,f|0&&(yg(s,f),kt(s,n[l>>2]|0,n[c>>2]|0,f))}function yg(s,l){s=s|0,l=l|0;var c=0;if((N(s)|0)>>>0<l>>>0&&Vr(s),l>>>0>1073741823)Rt();else{c=Gt(l<<2)|0,n[s+4>>2]=c,n[s>>2]=c,n[s+8>>2]=c+(l<<2);return}}function kt(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,f=s+4|0,s=c-l|0,(s|0)>0&&(Cr(n[f>>2]|0,l|0,s|0)|0,n[f>>2]=(n[f>>2]|0)+(s>>>2<<2))}function N(s){return s=s|0,1073741823}function K(s,l,c){return s=s|0,l=l|0,c=y(c),Ae(l)|0&&(n[s+96>>2]|0)!=0?s=s+92|0:s=Sn(s+60|0,n[1040+(l<<2)>>2]|0,992)|0,y(ze(s,c))}function te(s,l,c){return s=s|0,l=l|0,c=y(c),Ae(l)|0&&(n[s+104>>2]|0)!=0?s=s+100|0:s=Sn(s+60|0,n[1e3+(l<<2)>>2]|0,992)|0,y(ze(s,c))}function Ae(s){return s=s|0,(s|1|0)==3|0}function ze(s,l){return s=s|0,l=y(l),(n[s+4>>2]|0)==3?l=y(0):l=y(Hr(s,l)),y(l)}function gt(s,l){return s=s|0,l=l|0,s=n[s>>2]|0,((s|0)==0?(l|0)>1?l:1:s)|0}function ur(s,l){s=s|0,l=l|0;var c=0;e:do if((l|0)==2){switch(s|0){case 2:{s=3;break e}case 3:break;default:{c=4;break e}}s=2}else c=4;while(0);return s|0}function gr(s,l){s=s|0,l=l|0;var c=$e;return Ae(l)|0&&(n[s+312>>2]|0)!=0&&(c=y(h[s+308>>2]),c>=y(0))||(c=y(Nn(y(h[(Sn(s+276|0,n[1040+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(c)}function hn(s,l){s=s|0,l=l|0;var c=$e;return Ae(l)|0&&(n[s+320>>2]|0)!=0&&(c=y(h[s+316>>2]),c>=y(0))||(c=y(Nn(y(h[(Sn(s+276|0,n[1e3+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(c)}function ri(s,l,c){s=s|0,l=l|0,c=y(c);var f=$e;return Ae(l)|0&&(n[s+240>>2]|0)!=0&&(f=y(Hr(s+236|0,c)),f>=y(0))||(f=y(Nn(y(Hr(Sn(s+204|0,n[1040+(l<<2)>>2]|0,992)|0,c)),y(0)))),y(f)}function Ni(s,l,c){s=s|0,l=l|0,c=y(c);var f=$e;return Ae(l)|0&&(n[s+248>>2]|0)!=0&&(f=y(Hr(s+244|0,c)),f>=y(0))||(f=y(Nn(y(Hr(Sn(s+204|0,n[1e3+(l<<2)>>2]|0,992)|0,c)),y(0)))),y(f)}function Eg(s,l,c,f,d,m,B){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=y(m),B=y(B);var Q=$e,k=$e,M=$e,O=$e,j=$e,se=$e,Ye=0,Le=0,Re=0;Re=E,E=E+16|0,Ye=Re,Le=s+964|0,Yn(s,(n[Le>>2]|0)!=0,3519),Q=y(gn(s,2,l)),k=y(gn(s,0,l)),M=y(rn(s,2,l)),O=y(rn(s,0,l)),Ot(l)|0?j=l:j=y(Nn(y(0),y(y(l-M)-Q))),Ot(c)|0?se=c:se=y(Nn(y(0),y(y(c-O)-k))),(f|0)==1&(d|0)==1?(h[s+908>>2]=y(Ci(s,2,y(l-M),m,m)),l=y(Ci(s,0,y(c-O),B,m))):(v7[n[Le>>2]&1](Ye,s,j,f,se,d),j=y(Q+y(h[Ye>>2])),se=y(l-M),h[s+908>>2]=y(Ci(s,2,(f|2|0)==2?j:se,m,m)),se=y(k+y(h[Ye+4>>2])),l=y(c-O),l=y(Ci(s,0,(d|2|0)==2?se:l,B,m))),h[s+912>>2]=l,E=Re}function Fv(s,l,c,f,d,m,B){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=y(m),B=y(B);var Q=$e,k=$e,M=$e,O=$e;M=y(gn(s,2,m)),Q=y(gn(s,0,m)),O=y(rn(s,2,m)),k=y(rn(s,0,m)),l=y(l-O),h[s+908>>2]=y(Ci(s,2,(f|2|0)==2?M:l,m,m)),c=y(c-k),h[s+912>>2]=y(Ci(s,0,(d|2|0)==2?Q:c,B,m))}function Rv(s,l,c,f,d,m,B){s=s|0,l=y(l),c=y(c),f=f|0,d=d|0,m=y(m),B=y(B);var Q=0,k=$e,M=$e;return Q=(f|0)==2,!(l<=y(0)&Q)&&!(c<=y(0)&(d|0)==2)&&!((f|0)==1&(d|0)==1)?s=0:(k=y(rn(s,0,m)),M=y(rn(s,2,m)),Q=l<y(0)&Q|(Ot(l)|0),l=y(l-M),h[s+908>>2]=y(Ci(s,2,Q?y(0):l,m,m)),l=y(c-k),Q=c<y(0)&(d|0)==2|(Ot(c)|0),h[s+912>>2]=y(Ci(s,0,Q?y(0):l,B,m)),s=1),s|0}function fI(s,l){return s=s|0,l=l|0,_A(s)|0?s=ur(2,l)|0:s=0,s|0}function Cp(s,l,c){return s=s|0,l=l|0,c=y(c),c=y(ri(s,l,c)),y(c+y(gr(s,l)))}function pI(s,l,c){return s=s|0,l=l|0,c=y(c),c=y(Ni(s,l,c)),y(c+y(hn(s,l)))}function gn(s,l,c){s=s|0,l=l|0,c=y(c);var f=$e;return f=y(Cp(s,l,c)),y(f+y(pI(s,l,c)))}function Lm(s){return s=s|0,n[s+24>>2]|0?s=0:y(rs(s))!=y(0)?s=1:s=y(Ms(s))!=y(0),s|0}function rs(s){s=s|0;var l=$e;if(n[s+944>>2]|0){if(l=y(h[s+44>>2]),Ot(l)|0)return l=y(h[s+40>>2]),s=l>y(0)&((Ot(l)|0)^1),y(s?l:y(0))}else l=y(0);return y(l)}function Ms(s){s=s|0;var l=$e,c=0,f=$e;do if(n[s+944>>2]|0){if(l=y(h[s+48>>2]),Ot(l)|0){if(c=o[(n[s+976>>2]|0)+2>>0]|0,c<<24>>24==0&&(f=y(h[s+40>>2]),f<y(0)&((Ot(f)|0)^1))){l=y(-f);break}l=c<<24>>24?y(1):y(0)}}else l=y(0);while(0);return y(l)}function Pu(s){s=s|0;var l=0,c=0;if($m(s+400|0,0,540)|0,o[s+985>>0]=1,ee(s),c=Zi(s)|0,c|0){l=s+948|0,s=0;do Pu(n[(n[l>>2]|0)+(s<<2)>>2]|0),s=s+1|0;while((s|0)!=(c|0))}}function Om(s,l,c,f,d,m,B,Q,k,M){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=y(m),B=y(B),Q=Q|0,k=k|0,M=M|0;var O=0,j=$e,se=0,Ye=0,Le=$e,Re=$e,et=0,Ze=$e,at=0,He=$e,Ge=0,Tt=0,Rr=0,ir=0,Jt=0,Ir=0,Qr=0,rr=0,Bn=0,po=0;Bn=E,E=E+16|0,Rr=Bn+12|0,ir=Bn+8|0,Jt=Bn+4|0,Ir=Bn,rr=ur(n[s+4>>2]|0,k)|0,Ge=Ae(rr)|0,j=y(Hr(hI(l)|0,Ge?m:B)),Tt=ts(l,2,m)|0,Qr=ts(l,0,B)|0;do if(!(Ot(j)|0)&&!(Ot(Ge?c:d)|0)){if(O=l+504|0,!(Ot(y(h[O>>2]))|0)&&(!(gI(n[l+976>>2]|0,0)|0)||(n[l+500>>2]|0)==(n[2278]|0)))break;h[O>>2]=y(Nn(j,y(gn(l,rr,m))))}else se=7;while(0);do if((se|0)==7){if(at=Ge^1,!(at|Tt^1)){B=y(Hr(n[l+992>>2]|0,m)),h[l+504>>2]=y(Nn(B,y(gn(l,2,m))));break}if(!(Ge|Qr^1)){B=y(Hr(n[l+996>>2]|0,B)),h[l+504>>2]=y(Nn(B,y(gn(l,0,m))));break}h[Rr>>2]=y(pe),h[ir>>2]=y(pe),n[Jt>>2]=0,n[Ir>>2]=0,Ze=y(rn(l,2,m)),He=y(rn(l,0,m)),Tt?(Le=y(Ze+y(Hr(n[l+992>>2]|0,m))),h[Rr>>2]=Le,n[Jt>>2]=1,Ye=1):(Ye=0,Le=y(pe)),Qr?(j=y(He+y(Hr(n[l+996>>2]|0,B))),h[ir>>2]=j,n[Ir>>2]=1,O=1):(O=0,j=y(pe)),se=n[s+32>>2]|0,Ge&(se|0)==2?se=2:Ot(Le)|0&&!(Ot(c)|0)&&(h[Rr>>2]=c,n[Jt>>2]=2,Ye=2,Le=c),!((se|0)==2&at)&&Ot(j)|0&&!(Ot(d)|0)&&(h[ir>>2]=d,n[Ir>>2]=2,O=2,j=d),Re=y(h[l+396>>2]),et=Ot(Re)|0;do if(et)se=Ye;else{if((Ye|0)==1&at){h[ir>>2]=y(y(Le-Ze)/Re),n[Ir>>2]=1,O=1,se=1;break}Ge&(O|0)==1?(h[Rr>>2]=y(Re*y(j-He)),n[Jt>>2]=1,O=1,se=1):se=Ye}while(0);po=Ot(c)|0,Ye=(ga(s,l)|0)!=4,!(Ge|Tt|((f|0)!=1|po)|(Ye|(se|0)==1))&&(h[Rr>>2]=c,n[Jt>>2]=1,!et)&&(h[ir>>2]=y(y(c-Ze)/Re),n[Ir>>2]=1,O=1),!(Qr|at|((Q|0)!=1|(Ot(d)|0))|(Ye|(O|0)==1))&&(h[ir>>2]=d,n[Ir>>2]=1,!et)&&(h[Rr>>2]=y(Re*y(d-He)),n[Jt>>2]=1),pr(l,2,m,m,Jt,Rr),pr(l,0,B,m,Ir,ir),c=y(h[Rr>>2]),d=y(h[ir>>2]),pa(l,c,d,k,n[Jt>>2]|0,n[Ir>>2]|0,m,B,0,3565,M)|0,B=y(h[l+908+(n[976+(rr<<2)>>2]<<2)>>2]),h[l+504>>2]=y(Nn(B,y(gn(l,rr,m))))}while(0);n[l+500>>2]=n[2278],E=Bn}function Ci(s,l,c,f,d){return s=s|0,l=l|0,c=y(c),f=y(f),d=y(d),f=y(UA(s,l,c,f)),y(Nn(f,y(gn(s,l,d))))}function ga(s,l){return s=s|0,l=l|0,l=l+20|0,l=n[((n[l>>2]|0)==0?s+16|0:l)>>2]|0,(l|0)==5&&_A(n[s+4>>2]|0)|0&&(l=1),l|0}function xl(s,l){return s=s|0,l=l|0,Ae(l)|0&&(n[s+96>>2]|0)!=0?l=4:l=n[1040+(l<<2)>>2]|0,s+60+(l<<3)|0}function Qc(s,l){return s=s|0,l=l|0,Ae(l)|0&&(n[s+104>>2]|0)!=0?l=5:l=n[1e3+(l<<2)>>2]|0,s+60+(l<<3)|0}function pr(s,l,c,f,d,m){switch(s=s|0,l=l|0,c=y(c),f=y(f),d=d|0,m=m|0,c=y(Hr(s+380+(n[976+(l<<2)>>2]<<3)|0,c)),c=y(c+y(rn(s,l,f))),n[d>>2]|0){case 2:case 1:{d=Ot(c)|0,f=y(h[m>>2]),h[m>>2]=d|f<c?f:c;break}case 0:{Ot(c)|0||(n[d>>2]=2,h[m>>2]=c);break}default:}}function Ai(s,l){return s=s|0,l=l|0,s=s+132|0,Ae(l)|0&&(n[(Sn(s,4,948)|0)+4>>2]|0)!=0?s=1:s=(n[(Sn(s,n[1040+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,s|0}function Fr(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0;return s=s+132|0,Ae(l)|0&&(f=Sn(s,4,948)|0,(n[f+4>>2]|0)!=0)?d=4:(f=Sn(s,n[1040+(l<<2)>>2]|0,948)|0,n[f+4>>2]|0?d=4:c=y(0)),(d|0)==4&&(c=y(Hr(f,c))),y(c)}function ns(s,l,c){s=s|0,l=l|0,c=y(c);var f=$e;return f=y(h[s+908+(n[976+(l<<2)>>2]<<2)>>2]),f=y(f+y(K(s,l,c))),y(f+y(te(s,l,c)))}function Gi(s){s=s|0;var l=0,c=0,f=0;e:do if(_A(n[s+4>>2]|0)|0)l=0;else if((n[s+16>>2]|0)!=5)if(c=Zi(s)|0,!c)l=0;else for(l=0;;){if(f=Ts(s,l)|0,(n[f+24>>2]|0)==0&&(n[f+20>>2]|0)==5){l=1;break e}if(l=l+1|0,l>>>0>=c>>>0){l=0;break}}else l=1;while(0);return l|0}function Mm(s,l){s=s|0,l=l|0;var c=$e;return c=y(h[s+908+(n[976+(l<<2)>>2]<<2)>>2]),c>=y(0)&((Ot(c)|0)^1)|0}function Ja(s){s=s|0;var l=$e,c=0,f=0,d=0,m=0,B=0,Q=0,k=$e;if(c=n[s+968>>2]|0,c)k=y(h[s+908>>2]),l=y(h[s+912>>2]),l=y(E7[c&0](s,k,l)),Yn(s,(Ot(l)|0)^1,3573);else{m=Zi(s)|0;do if(m|0){for(c=0,d=0;;){if(f=Ts(s,d)|0,n[f+940>>2]|0){B=8;break}if((n[f+24>>2]|0)!=1)if(Q=(ga(s,f)|0)==5,Q){c=f;break}else c=(c|0)==0?f:c;if(d=d+1|0,d>>>0>=m>>>0){B=8;break}}if((B|0)==8&&!c)break;return l=y(Ja(c)),y(l+y(h[c+404>>2]))}while(0);l=y(h[s+912>>2])}return y(l)}function UA(s,l,c,f){s=s|0,l=l|0,c=y(c),f=y(f);var d=$e,m=0;return _A(l)|0?(l=1,m=3):Ae(l)|0?(l=0,m=3):(f=y(pe),d=y(pe)),(m|0)==3&&(d=y(Hr(s+364+(l<<3)|0,f)),f=y(Hr(s+380+(l<<3)|0,f))),m=f<c&(f>=y(0)&((Ot(f)|0)^1)),c=m?f:c,m=d>=y(0)&((Ot(d)|0)^1)&c<d,y(m?d:c)}function Um(s,l,c,f,d,m,B){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=m|0,B=B|0;var Q=$e,k=$e,M=0,O=0,j=$e,se=$e,Ye=$e,Le=0,Re=0,et=0,Ze=0,at=$e,He=0;et=ur(n[s+4>>2]|0,m)|0,Le=fI(et,m)|0,Re=Ae(et)|0,j=y(rn(l,2,c)),se=y(rn(l,0,c)),ts(l,2,c)|0?Q=y(j+y(Hr(n[l+992>>2]|0,c))):Ai(l,2)|0&&nr(l,2)|0?(Q=y(h[s+908>>2]),k=y(gr(s,2)),k=y(Q-y(k+y(hn(s,2)))),Q=y(Fr(l,2,c)),Q=y(Ci(l,2,y(k-y(Q+y(xu(l,2,c)))),c,c))):Q=y(pe),ts(l,0,d)|0?k=y(se+y(Hr(n[l+996>>2]|0,d))):Ai(l,0)|0&&nr(l,0)|0?(k=y(h[s+912>>2]),at=y(gr(s,0)),at=y(k-y(at+y(hn(s,0)))),k=y(Fr(l,0,d)),k=y(Ci(l,0,y(at-y(k+y(xu(l,0,d)))),d,c))):k=y(pe),M=Ot(Q)|0,O=Ot(k)|0;do if(M^O&&(Ye=y(h[l+396>>2]),!(Ot(Ye)|0)))if(M){Q=y(j+y(y(k-se)*Ye));break}else{at=y(se+y(y(Q-j)/Ye)),k=O?at:k;break}while(0);O=Ot(Q)|0,M=Ot(k)|0,O|M&&(He=(O^1)&1,f=c>y(0)&((f|0)!=0&O),Q=Re?Q:f?c:Q,pa(l,Q,k,m,Re?He:f?2:He,O&(M^1)&1,Q,k,0,3623,B)|0,Q=y(h[l+908>>2]),Q=y(Q+y(rn(l,2,c))),k=y(h[l+912>>2]),k=y(k+y(rn(l,0,c)))),pa(l,Q,k,m,1,1,Q,k,1,3635,B)|0,nr(l,et)|0&&!(Ai(l,et)|0)?(He=n[976+(et<<2)>>2]|0,at=y(h[s+908+(He<<2)>>2]),at=y(at-y(h[l+908+(He<<2)>>2])),at=y(at-y(hn(s,et))),at=y(at-y(te(l,et,c))),at=y(at-y(xu(l,et,Re?c:d))),h[l+400+(n[1040+(et<<2)>>2]<<2)>>2]=at):Ze=21;do if((Ze|0)==21){if(!(Ai(l,et)|0)&&(n[s+8>>2]|0)==1){He=n[976+(et<<2)>>2]|0,at=y(h[s+908+(He<<2)>>2]),at=y(y(at-y(h[l+908+(He<<2)>>2]))*y(.5)),h[l+400+(n[1040+(et<<2)>>2]<<2)>>2]=at;break}!(Ai(l,et)|0)&&(n[s+8>>2]|0)==2&&(He=n[976+(et<<2)>>2]|0,at=y(h[s+908+(He<<2)>>2]),at=y(at-y(h[l+908+(He<<2)>>2])),h[l+400+(n[1040+(et<<2)>>2]<<2)>>2]=at)}while(0);nr(l,Le)|0&&!(Ai(l,Le)|0)?(He=n[976+(Le<<2)>>2]|0,at=y(h[s+908+(He<<2)>>2]),at=y(at-y(h[l+908+(He<<2)>>2])),at=y(at-y(hn(s,Le))),at=y(at-y(te(l,Le,c))),at=y(at-y(xu(l,Le,Re?d:c))),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=at):Ze=30;do if((Ze|0)==30&&!(Ai(l,Le)|0)){if((ga(s,l)|0)==2){He=n[976+(Le<<2)>>2]|0,at=y(h[s+908+(He<<2)>>2]),at=y(y(at-y(h[l+908+(He<<2)>>2]))*y(.5)),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=at;break}He=(ga(s,l)|0)==3,He^(n[s+28>>2]|0)==2&&(He=n[976+(Le<<2)>>2]|0,at=y(h[s+908+(He<<2)>>2]),at=y(at-y(h[l+908+(He<<2)>>2])),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=at)}while(0)}function Ip(s,l,c){s=s|0,l=l|0,c=c|0;var f=$e,d=0;d=n[976+(c<<2)>>2]|0,f=y(h[l+908+(d<<2)>>2]),f=y(y(h[s+908+(d<<2)>>2])-f),f=y(f-y(h[l+400+(n[1040+(c<<2)>>2]<<2)>>2])),h[l+400+(n[1e3+(c<<2)>>2]<<2)>>2]=f}function _A(s){return s=s|0,(s|1|0)==1|0}function hI(s){s=s|0;var l=$e;switch(n[s+56>>2]|0){case 0:case 3:{l=y(h[s+40>>2]),l>y(0)&((Ot(l)|0)^1)?s=o[(n[s+976>>2]|0)+2>>0]|0?1056:992:s=1056;break}default:s=s+52|0}return s|0}function gI(s,l){return s=s|0,l=l|0,(o[s+l>>0]|0)!=0|0}function nr(s,l){return s=s|0,l=l|0,s=s+132|0,Ae(l)|0&&(n[(Sn(s,5,948)|0)+4>>2]|0)!=0?s=1:s=(n[(Sn(s,n[1e3+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,s|0}function xu(s,l,c){s=s|0,l=l|0,c=y(c);var f=0,d=0;return s=s+132|0,Ae(l)|0&&(f=Sn(s,5,948)|0,(n[f+4>>2]|0)!=0)?d=4:(f=Sn(s,n[1e3+(l<<2)>>2]|0,948)|0,n[f+4>>2]|0?d=4:c=y(0)),(d|0)==4&&(c=y(Hr(f,c))),y(c)}function _m(s,l,c){return s=s|0,l=l|0,c=y(c),Ai(s,l)|0?c=y(Fr(s,l,c)):c=y(-y(xu(s,l,c))),y(c)}function bu(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function wp(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>1073741823)Rt();else{d=Gt(l<<2)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<2)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<2)}function Cg(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function HA(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-4-l|0)>>>2)<<2)),s=n[s>>2]|0,s|0&&pt(s)}function qA(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0;if(B=s+4|0,Q=n[B>>2]|0,d=Q-f|0,m=d>>2,s=l+(m<<2)|0,s>>>0<c>>>0){f=Q;do n[f>>2]=n[s>>2],s=s+4|0,f=(n[B>>2]|0)+4|0,n[B>>2]=f;while(s>>>0<c>>>0)}m|0&&bI(Q+(0-m<<2)|0,l|0,d|0)|0}function Ig(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0;return Q=l+4|0,k=n[Q>>2]|0,d=n[s>>2]|0,B=c,m=B-d|0,f=k+(0-(m>>2)<<2)|0,n[Q>>2]=f,(m|0)>0&&Cr(f|0,d|0,m|0)|0,d=s+4|0,m=l+8|0,f=(n[d>>2]|0)-B|0,(f|0)>0&&(Cr(n[m>>2]|0,c|0,f|0)|0,n[m>>2]=(n[m>>2]|0)+(f>>>2<<2)),B=n[s>>2]|0,n[s>>2]=n[Q>>2],n[Q>>2]=B,B=n[d>>2]|0,n[d>>2]=n[m>>2],n[m>>2]=B,B=s+8|0,c=l+12|0,s=n[B>>2]|0,n[B>>2]=n[c>>2],n[c>>2]=s,n[l>>2]=n[Q>>2],k|0}function dI(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;if(B=n[l>>2]|0,m=n[c>>2]|0,(B|0)!=(m|0)){d=s+8|0,c=((m+-4-B|0)>>>2)+1|0,s=B,f=n[d>>2]|0;do n[f>>2]=n[s>>2],f=(n[d>>2]|0)+4|0,n[d>>2]=f,s=s+4|0;while((s|0)!=(m|0));n[l>>2]=B+(c<<2)}}function Hm(){Cc()}function da(){var s=0;return s=Gt(4)|0,jA(s),s|0}function jA(s){s=s|0,n[s>>2]=$i()|0}function kc(s){s=s|0,s|0&&(wg(s),pt(s))}function wg(s){s=s|0,mi(n[s>>2]|0)}function qm(s,l,c){s=s|0,l=l|0,c=c|0,Va(n[s>>2]|0,l,c)}function uo(s,l){s=s|0,l=y(l),ha(n[s>>2]|0,l)}function Tv(s,l){return s=s|0,l=l|0,gI(n[s>>2]|0,l)|0}function mI(){var s=0;return s=Gt(8)|0,Nv(s,0),s|0}function Nv(s,l){s=s|0,l=l|0,l?l=di(n[l>>2]|0)|0:l=oo()|0,n[s>>2]=l,n[s+4>>2]=0,_r(l,s)}function aF(s){s=s|0;var l=0;return l=Gt(8)|0,Nv(l,s),l|0}function Lv(s){s=s|0,s|0&&(Qu(s),pt(s))}function Qu(s){s=s|0;var l=0;oa(n[s>>2]|0),l=s+4|0,s=n[l>>2]|0,n[l>>2]=0,s|0&&(GA(s),pt(s))}function GA(s){s=s|0,WA(s)}function WA(s){s=s|0,s=n[s>>2]|0,s|0&&QA(s|0)}function yI(s){return s=s|0,ei(s)|0}function jm(s){s=s|0;var l=0,c=0;c=s+4|0,l=n[c>>2]|0,n[c>>2]=0,l|0&&(GA(l),pt(l)),ao(n[s>>2]|0)}function lF(s,l){s=s|0,l=l|0,tr(n[s>>2]|0,n[l>>2]|0)}function cF(s,l){s=s|0,l=l|0,ua(n[s>>2]|0,l)}function Ov(s,l,c){s=s|0,l=l|0,c=+c,wu(n[s>>2]|0,l,y(c))}function Mv(s,l,c){s=s|0,l=l|0,c=+c,ms(n[s>>2]|0,l,y(c))}function EI(s,l){s=s|0,l=l|0,yi(n[s>>2]|0,l)}function ku(s,l){s=s|0,l=l|0,Ga(n[s>>2]|0,l)}function uF(s,l){s=s|0,l=l|0,RA(n[s>>2]|0,l)}function AF(s,l){s=s|0,l=l|0,Ti(n[s>>2]|0,l)}function Bp(s,l){s=s|0,l=l|0,wc(n[s>>2]|0,l)}function fF(s,l){s=s|0,l=l|0,ja(n[s>>2]|0,l)}function Uv(s,l,c){s=s|0,l=l|0,c=+c,vc(n[s>>2]|0,l,y(c))}function YA(s,l,c){s=s|0,l=l|0,c=+c,G(n[s>>2]|0,l,y(c))}function pF(s,l){s=s|0,l=l|0,Dl(n[s>>2]|0,l)}function hF(s,l){s=s|0,l=l|0,ig(n[s>>2]|0,l)}function _v(s,l){s=s|0,l=l|0,fp(n[s>>2]|0,l)}function CI(s,l){s=s|0,l=+l,TA(n[s>>2]|0,y(l))}function II(s,l){s=s|0,l=+l,Wa(n[s>>2]|0,y(l))}function gF(s,l){s=s|0,l=+l,ji(n[s>>2]|0,y(l))}function dF(s,l){s=s|0,l=+l,Os(n[s>>2]|0,y(l))}function bl(s,l){s=s|0,l=+l,Iu(n[s>>2]|0,y(l))}function wI(s,l){s=s|0,l=+l,cI(n[s>>2]|0,y(l))}function mF(s,l){s=s|0,l=+l,NA(n[s>>2]|0,y(l))}function KA(s){s=s|0,pp(n[s>>2]|0)}function Gm(s,l){s=s|0,l=+l,ys(n[s>>2]|0,y(l))}function Fu(s,l){s=s|0,l=+l,ag(n[s>>2]|0,y(l))}function BI(s){s=s|0,lg(n[s>>2]|0)}function vI(s,l){s=s|0,l=+l,hp(n[s>>2]|0,y(l))}function yF(s,l){s=s|0,l=+l,Sc(n[s>>2]|0,y(l))}function Hv(s,l){s=s|0,l=+l,Qm(n[s>>2]|0,y(l))}function VA(s,l){s=s|0,l=+l,ug(n[s>>2]|0,y(l))}function qv(s,l){s=s|0,l=+l,vu(n[s>>2]|0,y(l))}function Wm(s,l){s=s|0,l=+l,km(n[s>>2]|0,y(l))}function jv(s,l){s=s|0,l=+l,Du(n[s>>2]|0,y(l))}function Gv(s,l){s=s|0,l=+l,uI(n[s>>2]|0,y(l))}function Ym(s,l){s=s|0,l=+l,fa(n[s>>2]|0,y(l))}function Wv(s,l,c){s=s|0,l=l|0,c=+c,Bu(n[s>>2]|0,l,y(c))}function EF(s,l,c){s=s|0,l=l|0,c=+c,Si(n[s>>2]|0,l,y(c))}function S(s,l,c){s=s|0,l=l|0,c=+c,Dc(n[s>>2]|0,l,y(c))}function D(s){return s=s|0,ng(n[s>>2]|0)|0}function T(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=E,E=E+16|0,d=f,Bc(d,n[l>>2]|0,c),q(s,d),E=f}function q(s,l){s=s|0,l=l|0,W(s,n[l+4>>2]|0,+y(h[l>>2]))}function W(s,l,c){s=s|0,l=l|0,c=+c,n[s>>2]=l,C[s+8>>3]=c}function ce(s){return s=s|0,ca(n[s>>2]|0)|0}function Se(s){return s=s|0,lo(n[s>>2]|0)|0}function It(s){return s=s|0,Ic(n[s>>2]|0)|0}function Et(s){return s=s|0,Kn(n[s>>2]|0)|0}function bt(s){return s=s|0,bm(n[s>>2]|0)|0}function Nr(s){return s=s|0,la(n[s>>2]|0)|0}function is(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=E,E=E+16|0,d=f,Dt(d,n[l>>2]|0,c),q(s,d),E=f}function fi(s){return s=s|0,Vn(n[s>>2]|0)|0}function Ao(s){return s=s|0,sg(n[s>>2]|0)|0}function JA(s,l){s=s|0,l=l|0;var c=0,f=0;c=E,E=E+16|0,f=c,Aa(f,n[l>>2]|0),q(s,f),E=c}function qo(s){return s=s|0,+ +y(Zr(n[s>>2]|0))}function rt(s){return s=s|0,+ +y(Tn(n[s>>2]|0))}function Je(s,l){s=s|0,l=l|0;var c=0,f=0;c=E,E=E+16|0,f=c,yr(f,n[l>>2]|0),q(s,f),E=c}function ft(s,l){s=s|0,l=l|0;var c=0,f=0;c=E,E=E+16|0,f=c,cg(f,n[l>>2]|0),q(s,f),E=c}function jt(s,l){s=s|0,l=l|0;var c=0,f=0;c=E,E=E+16|0,f=c,mt(f,n[l>>2]|0),q(s,f),E=c}function Er(s,l){s=s|0,l=l|0;var c=0,f=0;c=E,E=E+16|0,f=c,Ag(f,n[l>>2]|0),q(s,f),E=c}function In(s,l){s=s|0,l=l|0;var c=0,f=0;c=E,E=E+16|0,f=c,fg(f,n[l>>2]|0),q(s,f),E=c}function Sr(s,l){s=s|0,l=l|0;var c=0,f=0;c=E,E=E+16|0,f=c,Fm(f,n[l>>2]|0),q(s,f),E=c}function wn(s){return s=s|0,+ +y(Pc(n[s>>2]|0))}function ni(s,l){return s=s|0,l=l|0,+ +y(og(n[s>>2]|0,l))}function Xr(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=E,E=E+16|0,d=f,lt(d,n[l>>2]|0,c),q(s,d),E=f}function fo(s,l,c){s=s|0,l=l|0,c=c|0,aa(n[s>>2]|0,n[l>>2]|0,c)}function CF(s,l){s=s|0,l=l|0,Ls(n[s>>2]|0,n[l>>2]|0)}function Dve(s){return s=s|0,Zi(n[s>>2]|0)|0}function Sve(s){return s=s|0,s=xe(n[s>>2]|0)|0,s?s=yI(s)|0:s=0,s|0}function Pve(s,l){return s=s|0,l=l|0,s=Ts(n[s>>2]|0,l)|0,s?s=yI(s)|0:s=0,s|0}function xve(s,l){s=s|0,l=l|0;var c=0,f=0;f=Gt(4)|0,VG(f,l),c=s+4|0,l=n[c>>2]|0,n[c>>2]=f,l|0&&(GA(l),pt(l)),qa(n[s>>2]|0,1)}function VG(s,l){s=s|0,l=l|0,_ve(s,l)}function bve(s,l,c,f,d,m){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=m|0;var B=0,Q=0;B=E,E=E+16|0,Q=B,Qve(Q,ei(l)|0,+c,f,+d,m),h[s>>2]=y(+C[Q>>3]),h[s+4>>2]=y(+C[Q+8>>3]),E=B}function Qve(s,l,c,f,d,m){s=s|0,l=l|0,c=+c,f=f|0,d=+d,m=m|0;var B=0,Q=0,k=0,M=0,O=0;B=E,E=E+32|0,O=B+8|0,M=B+20|0,k=B,Q=B+16|0,C[O>>3]=c,n[M>>2]=f,C[k>>3]=d,n[Q>>2]=m,kve(s,n[l+4>>2]|0,O,M,k,Q),E=B}function kve(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,Q=0;B=E,E=E+16|0,Q=B,Xa(Q),l=ma(l)|0,Fve(s,l,+C[c>>3],n[f>>2]|0,+C[d>>3],n[m>>2]|0),Za(Q),E=B}function ma(s){return s=s|0,n[s>>2]|0}function Fve(s,l,c,f,d,m){s=s|0,l=l|0,c=+c,f=f|0,d=+d,m=m|0;var B=0;B=Ql(Rve()|0)|0,c=+zA(c),f=IF(f)|0,d=+zA(d),Tve(s,ui(0,B|0,l|0,+c,f|0,+d,IF(m)|0)|0)}function Rve(){var s=0;return o[7608]|0||(Mve(9120),s=7608,n[s>>2]=1,n[s+4>>2]=0),9120}function Ql(s){return s=s|0,n[s+8>>2]|0}function zA(s){return s=+s,+ +wF(s)}function IF(s){return s=s|0,zG(s)|0}function Tve(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;d=E,E=E+32|0,c=d,f=l,f&1?(Nve(c,0),$n(f|0,c|0)|0,Lve(s,c),Ove(c)):(n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=n[l+8>>2],n[s+12>>2]=n[l+12>>2]),E=d}function Nve(s,l){s=s|0,l=l|0,JG(s,l),n[s+8>>2]=0,o[s+24>>0]=0}function Lve(s,l){s=s|0,l=l|0,l=l+8|0,n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=n[l+8>>2],n[s+12>>2]=n[l+12>>2]}function Ove(s){s=s|0,o[s+24>>0]=0}function JG(s,l){s=s|0,l=l|0,n[s>>2]=l}function zG(s){return s=s|0,s|0}function wF(s){return s=+s,+s}function Mve(s){s=s|0,kl(s,Uve()|0,4)}function Uve(){return 1064}function kl(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c,n[s+8>>2]=Ap(l|0,c+1|0)|0}function _ve(s,l){s=s|0,l=l|0,l=n[l>>2]|0,n[s>>2]=l,Il(l|0)}function Hve(s){s=s|0;var l=0,c=0;c=s+4|0,l=n[c>>2]|0,n[c>>2]=0,l|0&&(GA(l),pt(l)),qa(n[s>>2]|0,0)}function qve(s){s=s|0,Ve(n[s>>2]|0)}function jve(s){return s=s|0,vt(n[s>>2]|0)|0}function Gve(s,l,c,f){s=s|0,l=+l,c=+c,f=f|0,xc(n[s>>2]|0,y(l),y(c),f)}function Wve(s){return s=s|0,+ +y(Sl(n[s>>2]|0))}function Yve(s){return s=s|0,+ +y(pg(n[s>>2]|0))}function Kve(s){return s=s|0,+ +y(Su(n[s>>2]|0))}function Vve(s){return s=s|0,+ +y(LA(n[s>>2]|0))}function Jve(s){return s=s|0,+ +y(gp(n[s>>2]|0))}function zve(s){return s=s|0,+ +y(Ya(n[s>>2]|0))}function Xve(s,l){s=s|0,l=l|0,C[s>>3]=+y(Sl(n[l>>2]|0)),C[s+8>>3]=+y(pg(n[l>>2]|0)),C[s+16>>3]=+y(Su(n[l>>2]|0)),C[s+24>>3]=+y(LA(n[l>>2]|0)),C[s+32>>3]=+y(gp(n[l>>2]|0)),C[s+40>>3]=+y(Ya(n[l>>2]|0))}function Zve(s,l){return s=s|0,l=l|0,+ +y(hg(n[s>>2]|0,l))}function $ve(s,l){return s=s|0,l=l|0,+ +y(dp(n[s>>2]|0,l))}function eDe(s,l){return s=s|0,l=l|0,+ +y(_o(n[s>>2]|0,l))}function tDe(){return qn()|0}function rDe(){nDe(),iDe(),sDe(),oDe(),aDe(),lDe()}function nDe(){aLe(11713,4938,1)}function iDe(){SNe(10448)}function sDe(){aNe(10408)}function oDe(){QTe(10324)}function aDe(){MFe(10096)}function lDe(){cDe(9132)}function cDe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0,Ye=0,Le=0,Re=0,et=0,Ze=0,at=0,He=0,Ge=0,Tt=0,Rr=0,ir=0,Jt=0,Ir=0,Qr=0,rr=0,Bn=0,po=0,ho=0,go=0,Ea=0,Fp=0,Rp=0,Fl=0,Tp=0,Lu=0,Ou=0,Np=0,Lp=0,Op=0,Jr=0,Rl=0,Mp=0,Rc=0,Up=0,_p=0,Mu=0,Uu=0,Tc=0,Us=0,el=0,jo=0,Tl=0,sf=0,of=0,_u=0,af=0,lf=0,_s=0,ws=0,Nl=0,Pn=0,cf=0,mo=0,Nc=0,yo=0,Lc=0,uf=0,Af=0,Oc=0,Hs=0,Ll=0,ff=0,pf=0,hf=0,vr=0,jn=0,Bs=0,Eo=0,qs=0,Pr=0,lr=0,Ol=0;l=E,E=E+672|0,c=l+656|0,Ol=l+648|0,lr=l+640|0,Pr=l+632|0,qs=l+624|0,Eo=l+616|0,Bs=l+608|0,jn=l+600|0,vr=l+592|0,hf=l+584|0,pf=l+576|0,ff=l+568|0,Ll=l+560|0,Hs=l+552|0,Oc=l+544|0,Af=l+536|0,uf=l+528|0,Lc=l+520|0,yo=l+512|0,Nc=l+504|0,mo=l+496|0,cf=l+488|0,Pn=l+480|0,Nl=l+472|0,ws=l+464|0,_s=l+456|0,lf=l+448|0,af=l+440|0,_u=l+432|0,of=l+424|0,sf=l+416|0,Tl=l+408|0,jo=l+400|0,el=l+392|0,Us=l+384|0,Tc=l+376|0,Uu=l+368|0,Mu=l+360|0,_p=l+352|0,Up=l+344|0,Rc=l+336|0,Mp=l+328|0,Rl=l+320|0,Jr=l+312|0,Op=l+304|0,Lp=l+296|0,Np=l+288|0,Ou=l+280|0,Lu=l+272|0,Tp=l+264|0,Fl=l+256|0,Rp=l+248|0,Fp=l+240|0,Ea=l+232|0,go=l+224|0,ho=l+216|0,po=l+208|0,Bn=l+200|0,rr=l+192|0,Qr=l+184|0,Ir=l+176|0,Jt=l+168|0,ir=l+160|0,Rr=l+152|0,Tt=l+144|0,Ge=l+136|0,He=l+128|0,at=l+120|0,Ze=l+112|0,et=l+104|0,Re=l+96|0,Le=l+88|0,Ye=l+80|0,se=l+72|0,j=l+64|0,O=l+56|0,M=l+48|0,k=l+40|0,Q=l+32|0,B=l+24|0,m=l+16|0,d=l+8|0,f=l,uDe(s,3646),ADe(s,3651,2)|0,fDe(s,3665,2)|0,pDe(s,3682,18)|0,n[Ol>>2]=19,n[Ol+4>>2]=0,n[c>>2]=n[Ol>>2],n[c+4>>2]=n[Ol+4>>2],DI(s,3690,c)|0,n[lr>>2]=1,n[lr+4>>2]=0,n[c>>2]=n[lr>>2],n[c+4>>2]=n[lr+4>>2],hDe(s,3696,c)|0,n[Pr>>2]=2,n[Pr+4>>2]=0,n[c>>2]=n[Pr>>2],n[c+4>>2]=n[Pr+4>>2],Ru(s,3706,c)|0,n[qs>>2]=1,n[qs+4>>2]=0,n[c>>2]=n[qs>>2],n[c+4>>2]=n[qs+4>>2],Bg(s,3722,c)|0,n[Eo>>2]=2,n[Eo+4>>2]=0,n[c>>2]=n[Eo>>2],n[c+4>>2]=n[Eo+4>>2],Bg(s,3734,c)|0,n[Bs>>2]=3,n[Bs+4>>2]=0,n[c>>2]=n[Bs>>2],n[c+4>>2]=n[Bs+4>>2],Ru(s,3753,c)|0,n[jn>>2]=4,n[jn+4>>2]=0,n[c>>2]=n[jn>>2],n[c+4>>2]=n[jn+4>>2],Ru(s,3769,c)|0,n[vr>>2]=5,n[vr+4>>2]=0,n[c>>2]=n[vr>>2],n[c+4>>2]=n[vr+4>>2],Ru(s,3783,c)|0,n[hf>>2]=6,n[hf+4>>2]=0,n[c>>2]=n[hf>>2],n[c+4>>2]=n[hf+4>>2],Ru(s,3796,c)|0,n[pf>>2]=7,n[pf+4>>2]=0,n[c>>2]=n[pf>>2],n[c+4>>2]=n[pf+4>>2],Ru(s,3813,c)|0,n[ff>>2]=8,n[ff+4>>2]=0,n[c>>2]=n[ff>>2],n[c+4>>2]=n[ff+4>>2],Ru(s,3825,c)|0,n[Ll>>2]=3,n[Ll+4>>2]=0,n[c>>2]=n[Ll>>2],n[c+4>>2]=n[Ll+4>>2],Bg(s,3843,c)|0,n[Hs>>2]=4,n[Hs+4>>2]=0,n[c>>2]=n[Hs>>2],n[c+4>>2]=n[Hs+4>>2],Bg(s,3853,c)|0,n[Oc>>2]=9,n[Oc+4>>2]=0,n[c>>2]=n[Oc>>2],n[c+4>>2]=n[Oc+4>>2],Ru(s,3870,c)|0,n[Af>>2]=10,n[Af+4>>2]=0,n[c>>2]=n[Af>>2],n[c+4>>2]=n[Af+4>>2],Ru(s,3884,c)|0,n[uf>>2]=11,n[uf+4>>2]=0,n[c>>2]=n[uf>>2],n[c+4>>2]=n[uf+4>>2],Ru(s,3896,c)|0,n[Lc>>2]=1,n[Lc+4>>2]=0,n[c>>2]=n[Lc>>2],n[c+4>>2]=n[Lc+4>>2],Cs(s,3907,c)|0,n[yo>>2]=2,n[yo+4>>2]=0,n[c>>2]=n[yo>>2],n[c+4>>2]=n[yo+4>>2],Cs(s,3915,c)|0,n[Nc>>2]=3,n[Nc+4>>2]=0,n[c>>2]=n[Nc>>2],n[c+4>>2]=n[Nc+4>>2],Cs(s,3928,c)|0,n[mo>>2]=4,n[mo+4>>2]=0,n[c>>2]=n[mo>>2],n[c+4>>2]=n[mo+4>>2],Cs(s,3948,c)|0,n[cf>>2]=5,n[cf+4>>2]=0,n[c>>2]=n[cf>>2],n[c+4>>2]=n[cf+4>>2],Cs(s,3960,c)|0,n[Pn>>2]=6,n[Pn+4>>2]=0,n[c>>2]=n[Pn>>2],n[c+4>>2]=n[Pn+4>>2],Cs(s,3974,c)|0,n[Nl>>2]=7,n[Nl+4>>2]=0,n[c>>2]=n[Nl>>2],n[c+4>>2]=n[Nl+4>>2],Cs(s,3983,c)|0,n[ws>>2]=20,n[ws+4>>2]=0,n[c>>2]=n[ws>>2],n[c+4>>2]=n[ws+4>>2],DI(s,3999,c)|0,n[_s>>2]=8,n[_s+4>>2]=0,n[c>>2]=n[_s>>2],n[c+4>>2]=n[_s+4>>2],Cs(s,4012,c)|0,n[lf>>2]=9,n[lf+4>>2]=0,n[c>>2]=n[lf>>2],n[c+4>>2]=n[lf+4>>2],Cs(s,4022,c)|0,n[af>>2]=21,n[af+4>>2]=0,n[c>>2]=n[af>>2],n[c+4>>2]=n[af+4>>2],DI(s,4039,c)|0,n[_u>>2]=10,n[_u+4>>2]=0,n[c>>2]=n[_u>>2],n[c+4>>2]=n[_u+4>>2],Cs(s,4053,c)|0,n[of>>2]=11,n[of+4>>2]=0,n[c>>2]=n[of>>2],n[c+4>>2]=n[of+4>>2],Cs(s,4065,c)|0,n[sf>>2]=12,n[sf+4>>2]=0,n[c>>2]=n[sf>>2],n[c+4>>2]=n[sf+4>>2],Cs(s,4084,c)|0,n[Tl>>2]=13,n[Tl+4>>2]=0,n[c>>2]=n[Tl>>2],n[c+4>>2]=n[Tl+4>>2],Cs(s,4097,c)|0,n[jo>>2]=14,n[jo+4>>2]=0,n[c>>2]=n[jo>>2],n[c+4>>2]=n[jo+4>>2],Cs(s,4117,c)|0,n[el>>2]=15,n[el+4>>2]=0,n[c>>2]=n[el>>2],n[c+4>>2]=n[el+4>>2],Cs(s,4129,c)|0,n[Us>>2]=16,n[Us+4>>2]=0,n[c>>2]=n[Us>>2],n[c+4>>2]=n[Us+4>>2],Cs(s,4148,c)|0,n[Tc>>2]=17,n[Tc+4>>2]=0,n[c>>2]=n[Tc>>2],n[c+4>>2]=n[Tc+4>>2],Cs(s,4161,c)|0,n[Uu>>2]=18,n[Uu+4>>2]=0,n[c>>2]=n[Uu>>2],n[c+4>>2]=n[Uu+4>>2],Cs(s,4181,c)|0,n[Mu>>2]=5,n[Mu+4>>2]=0,n[c>>2]=n[Mu>>2],n[c+4>>2]=n[Mu+4>>2],Bg(s,4196,c)|0,n[_p>>2]=6,n[_p+4>>2]=0,n[c>>2]=n[_p>>2],n[c+4>>2]=n[_p+4>>2],Bg(s,4206,c)|0,n[Up>>2]=7,n[Up+4>>2]=0,n[c>>2]=n[Up>>2],n[c+4>>2]=n[Up+4>>2],Bg(s,4217,c)|0,n[Rc>>2]=3,n[Rc+4>>2]=0,n[c>>2]=n[Rc>>2],n[c+4>>2]=n[Rc+4>>2],XA(s,4235,c)|0,n[Mp>>2]=1,n[Mp+4>>2]=0,n[c>>2]=n[Mp>>2],n[c+4>>2]=n[Mp+4>>2],BF(s,4251,c)|0,n[Rl>>2]=4,n[Rl+4>>2]=0,n[c>>2]=n[Rl>>2],n[c+4>>2]=n[Rl+4>>2],XA(s,4263,c)|0,n[Jr>>2]=5,n[Jr+4>>2]=0,n[c>>2]=n[Jr>>2],n[c+4>>2]=n[Jr+4>>2],XA(s,4279,c)|0,n[Op>>2]=6,n[Op+4>>2]=0,n[c>>2]=n[Op>>2],n[c+4>>2]=n[Op+4>>2],XA(s,4293,c)|0,n[Lp>>2]=7,n[Lp+4>>2]=0,n[c>>2]=n[Lp>>2],n[c+4>>2]=n[Lp+4>>2],XA(s,4306,c)|0,n[Np>>2]=8,n[Np+4>>2]=0,n[c>>2]=n[Np>>2],n[c+4>>2]=n[Np+4>>2],XA(s,4323,c)|0,n[Ou>>2]=9,n[Ou+4>>2]=0,n[c>>2]=n[Ou>>2],n[c+4>>2]=n[Ou+4>>2],XA(s,4335,c)|0,n[Lu>>2]=2,n[Lu+4>>2]=0,n[c>>2]=n[Lu>>2],n[c+4>>2]=n[Lu+4>>2],BF(s,4353,c)|0,n[Tp>>2]=12,n[Tp+4>>2]=0,n[c>>2]=n[Tp>>2],n[c+4>>2]=n[Tp+4>>2],vg(s,4363,c)|0,n[Fl>>2]=1,n[Fl+4>>2]=0,n[c>>2]=n[Fl>>2],n[c+4>>2]=n[Fl+4>>2],ZA(s,4376,c)|0,n[Rp>>2]=2,n[Rp+4>>2]=0,n[c>>2]=n[Rp>>2],n[c+4>>2]=n[Rp+4>>2],ZA(s,4388,c)|0,n[Fp>>2]=13,n[Fp+4>>2]=0,n[c>>2]=n[Fp>>2],n[c+4>>2]=n[Fp+4>>2],vg(s,4402,c)|0,n[Ea>>2]=14,n[Ea+4>>2]=0,n[c>>2]=n[Ea>>2],n[c+4>>2]=n[Ea+4>>2],vg(s,4411,c)|0,n[go>>2]=15,n[go+4>>2]=0,n[c>>2]=n[go>>2],n[c+4>>2]=n[go+4>>2],vg(s,4421,c)|0,n[ho>>2]=16,n[ho+4>>2]=0,n[c>>2]=n[ho>>2],n[c+4>>2]=n[ho+4>>2],vg(s,4433,c)|0,n[po>>2]=17,n[po+4>>2]=0,n[c>>2]=n[po>>2],n[c+4>>2]=n[po+4>>2],vg(s,4446,c)|0,n[Bn>>2]=18,n[Bn+4>>2]=0,n[c>>2]=n[Bn>>2],n[c+4>>2]=n[Bn+4>>2],vg(s,4458,c)|0,n[rr>>2]=3,n[rr+4>>2]=0,n[c>>2]=n[rr>>2],n[c+4>>2]=n[rr+4>>2],ZA(s,4471,c)|0,n[Qr>>2]=1,n[Qr+4>>2]=0,n[c>>2]=n[Qr>>2],n[c+4>>2]=n[Qr+4>>2],Yv(s,4486,c)|0,n[Ir>>2]=10,n[Ir+4>>2]=0,n[c>>2]=n[Ir>>2],n[c+4>>2]=n[Ir+4>>2],XA(s,4496,c)|0,n[Jt>>2]=11,n[Jt+4>>2]=0,n[c>>2]=n[Jt>>2],n[c+4>>2]=n[Jt+4>>2],XA(s,4508,c)|0,n[ir>>2]=3,n[ir+4>>2]=0,n[c>>2]=n[ir>>2],n[c+4>>2]=n[ir+4>>2],BF(s,4519,c)|0,n[Rr>>2]=4,n[Rr+4>>2]=0,n[c>>2]=n[Rr>>2],n[c+4>>2]=n[Rr+4>>2],gDe(s,4530,c)|0,n[Tt>>2]=19,n[Tt+4>>2]=0,n[c>>2]=n[Tt>>2],n[c+4>>2]=n[Tt+4>>2],dDe(s,4542,c)|0,n[Ge>>2]=12,n[Ge+4>>2]=0,n[c>>2]=n[Ge>>2],n[c+4>>2]=n[Ge+4>>2],mDe(s,4554,c)|0,n[He>>2]=13,n[He+4>>2]=0,n[c>>2]=n[He>>2],n[c+4>>2]=n[He+4>>2],yDe(s,4568,c)|0,n[at>>2]=2,n[at+4>>2]=0,n[c>>2]=n[at>>2],n[c+4>>2]=n[at+4>>2],EDe(s,4578,c)|0,n[Ze>>2]=20,n[Ze+4>>2]=0,n[c>>2]=n[Ze>>2],n[c+4>>2]=n[Ze+4>>2],CDe(s,4587,c)|0,n[et>>2]=22,n[et+4>>2]=0,n[c>>2]=n[et>>2],n[c+4>>2]=n[et+4>>2],DI(s,4602,c)|0,n[Re>>2]=23,n[Re+4>>2]=0,n[c>>2]=n[Re>>2],n[c+4>>2]=n[Re+4>>2],DI(s,4619,c)|0,n[Le>>2]=14,n[Le+4>>2]=0,n[c>>2]=n[Le>>2],n[c+4>>2]=n[Le+4>>2],IDe(s,4629,c)|0,n[Ye>>2]=1,n[Ye+4>>2]=0,n[c>>2]=n[Ye>>2],n[c+4>>2]=n[Ye+4>>2],wDe(s,4637,c)|0,n[se>>2]=4,n[se+4>>2]=0,n[c>>2]=n[se>>2],n[c+4>>2]=n[se+4>>2],ZA(s,4653,c)|0,n[j>>2]=5,n[j+4>>2]=0,n[c>>2]=n[j>>2],n[c+4>>2]=n[j+4>>2],ZA(s,4669,c)|0,n[O>>2]=6,n[O+4>>2]=0,n[c>>2]=n[O>>2],n[c+4>>2]=n[O+4>>2],ZA(s,4686,c)|0,n[M>>2]=7,n[M+4>>2]=0,n[c>>2]=n[M>>2],n[c+4>>2]=n[M+4>>2],ZA(s,4701,c)|0,n[k>>2]=8,n[k+4>>2]=0,n[c>>2]=n[k>>2],n[c+4>>2]=n[k+4>>2],ZA(s,4719,c)|0,n[Q>>2]=9,n[Q+4>>2]=0,n[c>>2]=n[Q>>2],n[c+4>>2]=n[Q+4>>2],ZA(s,4736,c)|0,n[B>>2]=21,n[B+4>>2]=0,n[c>>2]=n[B>>2],n[c+4>>2]=n[B+4>>2],BDe(s,4754,c)|0,n[m>>2]=2,n[m+4>>2]=0,n[c>>2]=n[m>>2],n[c+4>>2]=n[m+4>>2],Yv(s,4772,c)|0,n[d>>2]=3,n[d+4>>2]=0,n[c>>2]=n[d>>2],n[c+4>>2]=n[d+4>>2],Yv(s,4790,c)|0,n[f>>2]=4,n[f+4>>2]=0,n[c>>2]=n[f>>2],n[c+4>>2]=n[f+4>>2],Yv(s,4808,c)|0,E=l}function uDe(s,l){s=s|0,l=l|0;var c=0;c=bFe()|0,n[s>>2]=c,QFe(c,l),bp(n[s>>2]|0)}function ADe(s,l,c){return s=s|0,l=l|0,c=c|0,gFe(s,cn(l)|0,c,0),s|0}function fDe(s,l,c){return s=s|0,l=l|0,c=c|0,$ke(s,cn(l)|0,c,0),s|0}function pDe(s,l,c){return s=s|0,l=l|0,c=c|0,Uke(s,cn(l)|0,c,0),s|0}function DI(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Bke(s,l,d),E=f,s|0}function hDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ike(s,l,d),E=f,s|0}function Ru(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],qQe(s,l,d),E=f,s|0}function Bg(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],SQe(s,l,d),E=f,s|0}function Cs(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],uQe(s,l,d),E=f,s|0}function XA(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Vbe(s,l,d),E=f,s|0}function BF(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Fbe(s,l,d),E=f,s|0}function vg(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ibe(s,l,d),E=f,s|0}function ZA(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],qxe(s,l,d),E=f,s|0}function Yv(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Sxe(s,l,d),E=f,s|0}function gDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],uxe(s,l,d),E=f,s|0}function dDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],VPe(s,l,d),E=f,s|0}function mDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],RPe(s,l,d),E=f,s|0}function yDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],yPe(s,l,d),E=f,s|0}function EDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],tPe(s,l,d),E=f,s|0}function CDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],MSe(s,l,d),E=f,s|0}function IDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],wSe(s,l,d),E=f,s|0}function wDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],iSe(s,l,d),E=f,s|0}function BDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],vDe(s,l,d),E=f,s|0}function vDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],DDe(s,c,d,1),E=f}function cn(s){return s=s|0,s|0}function DDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=vF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=SDe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,PDe(m,f)|0,f),E=d}function vF(){var s=0,l=0;if(o[7616]|0||($G(9136),Zt(24,9136,_|0)|0,l=7616,n[l>>2]=1,n[l+4>>2]=0),!(br(9136)|0)){s=9136,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));$G(9136)}return 9136}function SDe(s){return s=s|0,0}function PDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=vF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],ZG(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(QDe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function un(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,Q=0,k=0,M=0,O=0,j=0,se=0,Ye=0;B=E,E=E+32|0,se=B+24|0,j=B+20|0,k=B+16|0,O=B+12|0,M=B+8|0,Q=B+4|0,Ye=B,n[j>>2]=l,n[k>>2]=c,n[O>>2]=f,n[M>>2]=d,n[Q>>2]=m,m=s+28|0,n[Ye>>2]=n[m>>2],n[se>>2]=n[Ye>>2],xDe(s+24|0,se,j,O,M,k,Q)|0,n[m>>2]=n[n[m>>2]>>2],E=B}function xDe(s,l,c,f,d,m,B){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0,s=bDe(l)|0,l=Gt(24)|0,XG(l+4|0,n[c>>2]|0,n[f>>2]|0,n[d>>2]|0,n[m>>2]|0,n[B>>2]|0),n[l>>2]=n[s>>2],n[s>>2]=l,l|0}function bDe(s){return s=s|0,n[s>>2]|0}function XG(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,n[s>>2]=l,n[s+4>>2]=c,n[s+8>>2]=f,n[s+12>>2]=d,n[s+16>>2]=m}function Ar(s,l){return s=s|0,l=l|0,l|s|0}function ZG(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function QDe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=kDe(s)|0,m>>>0<d>>>0)Vr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,FDe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],ZG(m,f,c),n[k>>2]=(n[k>>2]|0)+12,RDe(s,Q),TDe(Q),E=M;return}}function kDe(s){return s=s|0,357913941}function FDe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function RDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function TDe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function $G(s){s=s|0,ODe(s)}function NDe(s){s=s|0,LDe(s+24|0)}function br(s){return s=s|0,n[s>>2]|0}function LDe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function ODe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,3,l,MDe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Gr(){return 9228}function MDe(){return 1140}function UDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=E,E=E+16|0,f=c+8|0,d=c,m=_De(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=HDe(l,f)|0,E=c,l|0}function Wr(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,n[s>>2]=l,n[s+4>>2]=c,n[s+8>>2]=f,n[s+12>>2]=d,n[s+16>>2]=m}function _De(s){return s=s|0,(n[(vF()|0)+24>>2]|0)+(s*12|0)|0}function HDe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;return d=E,E=E+48|0,f=d,c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),nf[c&31](f,s),f=qDe(f)|0,E=d,f|0}function qDe(s){s=s|0;var l=0,c=0,f=0,d=0;return d=E,E=E+32|0,l=d+12|0,c=d,f=DF(e9()|0)|0,f?(SF(l,f),PF(c,l),jDe(s,c),s=xF(l)|0):s=GDe(s)|0,E=d,s|0}function e9(){var s=0;return o[7632]|0||(eSe(9184),Zt(25,9184,_|0)|0,s=7632,n[s>>2]=1,n[s+4>>2]=0),9184}function DF(s){return s=s|0,n[s+36>>2]|0}function SF(s,l){s=s|0,l=l|0,n[s>>2]=l,n[s+4>>2]=s,n[s+8>>2]=0}function PF(s,l){s=s|0,l=l|0,n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=0}function jDe(s,l){s=s|0,l=l|0,VDe(l,s,s+8|0,s+16|0,s+24|0,s+32|0,s+40|0)|0}function xF(s){return s=s|0,n[(n[s+4>>2]|0)+8>>2]|0}function GDe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,Q=0,k=0;k=E,E=E+16|0,c=k+4|0,f=k,d=za(8)|0,m=d,B=Gt(48)|0,Q=B,l=Q+48|0;do n[Q>>2]=n[s>>2],Q=Q+4|0,s=s+4|0;while((Q|0)<(l|0));return l=m+4|0,n[l>>2]=B,Q=Gt(8)|0,B=n[l>>2]|0,n[f>>2]=0,n[c>>2]=n[f>>2],t9(Q,B,c),n[d>>2]=Q,E=k,m|0}function t9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Gt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1092,n[c+12>>2]=l,n[s+4>>2]=c}function WDe(s){s=s|0,Zm(s),pt(s)}function YDe(s){s=s|0,s=n[s+12>>2]|0,s|0&&pt(s)}function KDe(s){s=s|0,pt(s)}function VDe(s,l,c,f,d,m,B){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0,m=JDe(n[s>>2]|0,l,c,f,d,m,B)|0,B=s+4|0,n[(n[B>>2]|0)+8>>2]=m,n[(n[B>>2]|0)+8>>2]|0}function JDe(s,l,c,f,d,m,B){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0;var Q=0,k=0;return Q=E,E=E+16|0,k=Q,Xa(k),s=ma(s)|0,B=zDe(s,+C[l>>3],+C[c>>3],+C[f>>3],+C[d>>3],+C[m>>3],+C[B>>3])|0,Za(k),E=Q,B|0}function zDe(s,l,c,f,d,m,B){s=s|0,l=+l,c=+c,f=+f,d=+d,m=+m,B=+B;var Q=0;return Q=Ql(XDe()|0)|0,l=+zA(l),c=+zA(c),f=+zA(f),d=+zA(d),m=+zA(m),Fs(0,Q|0,s|0,+l,+c,+f,+d,+m,+ +zA(B))|0}function XDe(){var s=0;return o[7624]|0||(ZDe(9172),s=7624,n[s>>2]=1,n[s+4>>2]=0),9172}function ZDe(s){s=s|0,kl(s,$De()|0,6)}function $De(){return 1112}function eSe(s){s=s|0,vp(s)}function tSe(s){s=s|0,r9(s+24|0),n9(s+16|0)}function r9(s){s=s|0,nSe(s)}function n9(s){s=s|0,rSe(s)}function rSe(s){s=s|0;var l=0,c=0;if(l=n[s>>2]|0,l|0)do c=l,l=n[l>>2]|0,pt(c);while((l|0)!=0);n[s>>2]=0}function nSe(s){s=s|0;var l=0,c=0;if(l=n[s>>2]|0,l|0)do c=l,l=n[l>>2]|0,pt(c);while((l|0)!=0);n[s>>2]=0}function vp(s){s=s|0;var l=0;n[s+16>>2]=0,n[s+20>>2]=0,l=s+24|0,n[l>>2]=0,n[s+28>>2]=l,n[s+36>>2]=0,o[s+40>>0]=0,o[s+41>>0]=0}function iSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],sSe(s,c,d,0),E=f}function sSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=bF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=oSe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,aSe(m,f)|0,f),E=d}function bF(){var s=0,l=0;if(o[7640]|0||(s9(9232),Zt(26,9232,_|0)|0,l=7640,n[l>>2]=1,n[l+4>>2]=0),!(br(9232)|0)){s=9232,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));s9(9232)}return 9232}function oSe(s){return s=s|0,0}function aSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=bF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],i9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(lSe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function i9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function lSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=cSe(s)|0,m>>>0<d>>>0)Vr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,uSe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],i9(m,f,c),n[k>>2]=(n[k>>2]|0)+12,ASe(s,Q),fSe(Q),E=M;return}}function cSe(s){return s=s|0,357913941}function uSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function ASe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function fSe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function s9(s){s=s|0,gSe(s)}function pSe(s){s=s|0,hSe(s+24|0)}function hSe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function gSe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,1,l,dSe()|0,3),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function dSe(){return 1144}function mSe(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0;var m=0,B=0,Q=0,k=0;m=E,E=E+16|0,B=m+8|0,Q=m,k=ySe(s)|0,s=n[k+4>>2]|0,n[Q>>2]=n[k>>2],n[Q+4>>2]=s,n[B>>2]=n[Q>>2],n[B+4>>2]=n[Q+4>>2],ESe(l,B,c,f,d),E=m}function ySe(s){return s=s|0,(n[(bF()|0)+24>>2]|0)+(s*12|0)|0}function ESe(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0;var m=0,B=0,Q=0,k=0,M=0;M=E,E=E+16|0,B=M+2|0,Q=M+1|0,k=M,m=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(m=n[(n[s>>2]|0)+m>>2]|0),Tu(B,c),c=+Nu(B,c),Tu(Q,f),f=+Nu(Q,f),$A(k,d),k=ef(k,d)|0,C7[m&1](s,c,f,k),E=M}function Tu(s,l){s=s|0,l=+l}function Nu(s,l){return s=s|0,l=+l,+ +ISe(l)}function $A(s,l){s=s|0,l=l|0}function ef(s,l){return s=s|0,l=l|0,CSe(l)|0}function CSe(s){return s=s|0,s|0}function ISe(s){return s=+s,+s}function wSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],BSe(s,c,d,1),E=f}function BSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=QF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=vSe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,DSe(m,f)|0,f),E=d}function QF(){var s=0,l=0;if(o[7648]|0||(a9(9268),Zt(27,9268,_|0)|0,l=7648,n[l>>2]=1,n[l+4>>2]=0),!(br(9268)|0)){s=9268,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));a9(9268)}return 9268}function vSe(s){return s=s|0,0}function DSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=QF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],o9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(SSe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function o9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function SSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=PSe(s)|0,m>>>0<d>>>0)Vr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,xSe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],o9(m,f,c),n[k>>2]=(n[k>>2]|0)+12,bSe(s,Q),QSe(Q),E=M;return}}function PSe(s){return s=s|0,357913941}function xSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function bSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function QSe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function a9(s){s=s|0,RSe(s)}function kSe(s){s=s|0,FSe(s+24|0)}function FSe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function RSe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,4,l,TSe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function TSe(){return 1160}function NSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=E,E=E+16|0,f=c+8|0,d=c,m=LSe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=OSe(l,f)|0,E=c,l|0}function LSe(s){return s=s|0,(n[(QF()|0)+24>>2]|0)+(s*12|0)|0}function OSe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),l9(Rg[c&31](s)|0)|0}function l9(s){return s=s|0,s&1|0}function MSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],USe(s,c,d,0),E=f}function USe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=kF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=_Se(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,HSe(m,f)|0,f),E=d}function kF(){var s=0,l=0;if(o[7656]|0||(u9(9304),Zt(28,9304,_|0)|0,l=7656,n[l>>2]=1,n[l+4>>2]=0),!(br(9304)|0)){s=9304,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));u9(9304)}return 9304}function _Se(s){return s=s|0,0}function HSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=kF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],c9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(qSe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function c9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function qSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=jSe(s)|0,m>>>0<d>>>0)Vr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,GSe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],c9(m,f,c),n[k>>2]=(n[k>>2]|0)+12,WSe(s,Q),YSe(Q),E=M;return}}function jSe(s){return s=s|0,357913941}function GSe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function WSe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function YSe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function u9(s){s=s|0,JSe(s)}function KSe(s){s=s|0,VSe(s+24|0)}function VSe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function JSe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,5,l,zSe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function zSe(){return 1164}function XSe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=E,E=E+16|0,d=f+8|0,m=f,B=ZSe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],$Se(l,d,c),E=f}function ZSe(s){return s=s|0,(n[(kF()|0)+24>>2]|0)+(s*12|0)|0}function $Se(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=E,E=E+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),Dp(d,c),c=Sp(d,c)|0,nf[f&31](s,c),Pp(d),E=m}function Dp(s,l){s=s|0,l=l|0,ePe(s,l)}function Sp(s,l){return s=s|0,l=l|0,s|0}function Pp(s){s=s|0,GA(s)}function ePe(s,l){s=s|0,l=l|0,FF(s,l)}function FF(s,l){s=s|0,l=l|0,n[s>>2]=l}function tPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],rPe(s,c,d,0),E=f}function rPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=RF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=nPe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,iPe(m,f)|0,f),E=d}function RF(){var s=0,l=0;if(o[7664]|0||(f9(9340),Zt(29,9340,_|0)|0,l=7664,n[l>>2]=1,n[l+4>>2]=0),!(br(9340)|0)){s=9340,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));f9(9340)}return 9340}function nPe(s){return s=s|0,0}function iPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=RF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],A9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(sPe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function A9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function sPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=oPe(s)|0,m>>>0<d>>>0)Vr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,aPe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],A9(m,f,c),n[k>>2]=(n[k>>2]|0)+12,lPe(s,Q),cPe(Q),E=M;return}}function oPe(s){return s=s|0,357913941}function aPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function lPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function cPe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function f9(s){s=s|0,fPe(s)}function uPe(s){s=s|0,APe(s+24|0)}function APe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function fPe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,4,l,pPe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function pPe(){return 1180}function hPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=gPe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=dPe(l,d,c)|0,E=f,c|0}function gPe(s){return s=s|0,(n[(RF()|0)+24>>2]|0)+(s*12|0)|0}function dPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;return m=E,E=E+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),Dg(d,c),d=Sg(d,c)|0,d=Kv(bR[f&15](s,d)|0)|0,E=m,d|0}function Dg(s,l){s=s|0,l=l|0}function Sg(s,l){return s=s|0,l=l|0,mPe(l)|0}function Kv(s){return s=s|0,s|0}function mPe(s){return s=s|0,s|0}function yPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],EPe(s,c,d,0),E=f}function EPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=TF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=CPe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,IPe(m,f)|0,f),E=d}function TF(){var s=0,l=0;if(o[7672]|0||(h9(9376),Zt(30,9376,_|0)|0,l=7672,n[l>>2]=1,n[l+4>>2]=0),!(br(9376)|0)){s=9376,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));h9(9376)}return 9376}function CPe(s){return s=s|0,0}function IPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=TF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],p9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(wPe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function p9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function wPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=BPe(s)|0,m>>>0<d>>>0)Vr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,vPe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],p9(m,f,c),n[k>>2]=(n[k>>2]|0)+12,DPe(s,Q),SPe(Q),E=M;return}}function BPe(s){return s=s|0,357913941}function vPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function DPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function SPe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function h9(s){s=s|0,bPe(s)}function PPe(s){s=s|0,xPe(s+24|0)}function xPe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function bPe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,5,l,g9()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function g9(){return 1196}function QPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=E,E=E+16|0,f=c+8|0,d=c,m=kPe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=FPe(l,f)|0,E=c,l|0}function kPe(s){return s=s|0,(n[(TF()|0)+24>>2]|0)+(s*12|0)|0}function FPe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),Kv(Rg[c&31](s)|0)|0}function RPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],TPe(s,c,d,1),E=f}function TPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=NF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=NPe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,LPe(m,f)|0,f),E=d}function NF(){var s=0,l=0;if(o[7680]|0||(m9(9412),Zt(31,9412,_|0)|0,l=7680,n[l>>2]=1,n[l+4>>2]=0),!(br(9412)|0)){s=9412,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));m9(9412)}return 9412}function NPe(s){return s=s|0,0}function LPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=NF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],d9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(OPe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function d9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function OPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=MPe(s)|0,m>>>0<d>>>0)Vr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,UPe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],d9(m,f,c),n[k>>2]=(n[k>>2]|0)+12,_Pe(s,Q),HPe(Q),E=M;return}}function MPe(s){return s=s|0,357913941}function UPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function _Pe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function HPe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function m9(s){s=s|0,GPe(s)}function qPe(s){s=s|0,jPe(s+24|0)}function jPe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function GPe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,6,l,y9()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function y9(){return 1200}function WPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=E,E=E+16|0,f=c+8|0,d=c,m=YPe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=KPe(l,f)|0,E=c,l|0}function YPe(s){return s=s|0,(n[(NF()|0)+24>>2]|0)+(s*12|0)|0}function KPe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),Vv(Rg[c&31](s)|0)|0}function Vv(s){return s=s|0,s|0}function VPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],JPe(s,c,d,0),E=f}function JPe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=LF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=zPe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,XPe(m,f)|0,f),E=d}function LF(){var s=0,l=0;if(o[7688]|0||(C9(9448),Zt(32,9448,_|0)|0,l=7688,n[l>>2]=1,n[l+4>>2]=0),!(br(9448)|0)){s=9448,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));C9(9448)}return 9448}function zPe(s){return s=s|0,0}function XPe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=LF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],E9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(ZPe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function E9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function ZPe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=$Pe(s)|0,m>>>0<d>>>0)Vr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,exe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],E9(m,f,c),n[k>>2]=(n[k>>2]|0)+12,txe(s,Q),rxe(Q),E=M;return}}function $Pe(s){return s=s|0,357913941}function exe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function txe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function rxe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function C9(s){s=s|0,sxe(s)}function nxe(s){s=s|0,ixe(s+24|0)}function ixe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function sxe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,6,l,I9()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function I9(){return 1204}function oxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=E,E=E+16|0,d=f+8|0,m=f,B=axe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],lxe(l,d,c),E=f}function axe(s){return s=s|0,(n[(LF()|0)+24>>2]|0)+(s*12|0)|0}function lxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=E,E=E+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),OF(d,c),d=MF(d,c)|0,nf[f&31](s,d),E=m}function OF(s,l){s=s|0,l=l|0}function MF(s,l){return s=s|0,l=l|0,cxe(l)|0}function cxe(s){return s=s|0,s|0}function uxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Axe(s,c,d,0),E=f}function Axe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=UF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=fxe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,pxe(m,f)|0,f),E=d}function UF(){var s=0,l=0;if(o[7696]|0||(B9(9484),Zt(33,9484,_|0)|0,l=7696,n[l>>2]=1,n[l+4>>2]=0),!(br(9484)|0)){s=9484,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));B9(9484)}return 9484}function fxe(s){return s=s|0,0}function pxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=UF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],w9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(hxe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function w9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function hxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=gxe(s)|0,m>>>0<d>>>0)Vr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,dxe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],w9(m,f,c),n[k>>2]=(n[k>>2]|0)+12,mxe(s,Q),yxe(Q),E=M;return}}function gxe(s){return s=s|0,357913941}function dxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function mxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function yxe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function B9(s){s=s|0,Ixe(s)}function Exe(s){s=s|0,Cxe(s+24|0)}function Cxe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function Ixe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,1,l,wxe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function wxe(){return 1212}function Bxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0;d=E,E=E+16|0,m=d+8|0,B=d,Q=vxe(s)|0,s=n[Q+4>>2]|0,n[B>>2]=n[Q>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],Dxe(l,m,c,f),E=d}function vxe(s){return s=s|0,(n[(UF()|0)+24>>2]|0)+(s*12|0)|0}function Dxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0;Q=E,E=E+16|0,m=Q+1|0,B=Q,d=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(d=n[(n[s>>2]|0)+d>>2]|0),OF(m,c),m=MF(m,c)|0,Dg(B,f),B=Sg(B,f)|0,FI[d&15](s,m,B),E=Q}function Sxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Pxe(s,c,d,1),E=f}function Pxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=_F()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=xxe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,bxe(m,f)|0,f),E=d}function _F(){var s=0,l=0;if(o[7704]|0||(D9(9520),Zt(34,9520,_|0)|0,l=7704,n[l>>2]=1,n[l+4>>2]=0),!(br(9520)|0)){s=9520,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));D9(9520)}return 9520}function xxe(s){return s=s|0,0}function bxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=_F()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],v9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Qxe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function v9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Qxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=kxe(s)|0,m>>>0<d>>>0)Vr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,Fxe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],v9(m,f,c),n[k>>2]=(n[k>>2]|0)+12,Rxe(s,Q),Txe(Q),E=M;return}}function kxe(s){return s=s|0,357913941}function Fxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function Rxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Txe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function D9(s){s=s|0,Oxe(s)}function Nxe(s){s=s|0,Lxe(s+24|0)}function Lxe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function Oxe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,1,l,Mxe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Mxe(){return 1224}function Uxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;return d=E,E=E+16|0,m=d+8|0,B=d,Q=_xe(s)|0,s=n[Q+4>>2]|0,n[B>>2]=n[Q>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],f=+Hxe(l,m,c),E=d,+f}function _xe(s){return s=s|0,(n[(_F()|0)+24>>2]|0)+(s*12|0)|0}function Hxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return m=E,E=E+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),$A(d,c),d=ef(d,c)|0,B=+wF(+w7[f&7](s,d)),E=m,+B}function qxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],jxe(s,c,d,1),E=f}function jxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=HF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Gxe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,Wxe(m,f)|0,f),E=d}function HF(){var s=0,l=0;if(o[7712]|0||(P9(9556),Zt(35,9556,_|0)|0,l=7712,n[l>>2]=1,n[l+4>>2]=0),!(br(9556)|0)){s=9556,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));P9(9556)}return 9556}function Gxe(s){return s=s|0,0}function Wxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=HF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],S9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Yxe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function S9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Yxe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Kxe(s)|0,m>>>0<d>>>0)Vr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,Vxe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],S9(m,f,c),n[k>>2]=(n[k>>2]|0)+12,Jxe(s,Q),zxe(Q),E=M;return}}function Kxe(s){return s=s|0,357913941}function Vxe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function Jxe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function zxe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function P9(s){s=s|0,$xe(s)}function Xxe(s){s=s|0,Zxe(s+24|0)}function Zxe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function $xe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,5,l,ebe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function ebe(){return 1232}function tbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=rbe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=+nbe(l,d),E=f,+c}function rbe(s){return s=s|0,(n[(HF()|0)+24>>2]|0)+(s*12|0)|0}function nbe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),+ +wF(+I7[c&15](s))}function ibe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],sbe(s,c,d,1),E=f}function sbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=qF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=obe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,abe(m,f)|0,f),E=d}function qF(){var s=0,l=0;if(o[7720]|0||(b9(9592),Zt(36,9592,_|0)|0,l=7720,n[l>>2]=1,n[l+4>>2]=0),!(br(9592)|0)){s=9592,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));b9(9592)}return 9592}function obe(s){return s=s|0,0}function abe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=qF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],x9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(lbe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function x9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function lbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=cbe(s)|0,m>>>0<d>>>0)Vr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,ube(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],x9(m,f,c),n[k>>2]=(n[k>>2]|0)+12,Abe(s,Q),fbe(Q),E=M;return}}function cbe(s){return s=s|0,357913941}function ube(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function Abe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function fbe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function b9(s){s=s|0,gbe(s)}function pbe(s){s=s|0,hbe(s+24|0)}function hbe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function gbe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,7,l,dbe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function dbe(){return 1276}function mbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=E,E=E+16|0,f=c+8|0,d=c,m=ybe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=Ebe(l,f)|0,E=c,l|0}function ybe(s){return s=s|0,(n[(qF()|0)+24>>2]|0)+(s*12|0)|0}function Ebe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;return d=E,E=E+16|0,f=d,c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),nf[c&31](f,s),f=Q9(f)|0,E=d,f|0}function Q9(s){s=s|0;var l=0,c=0,f=0,d=0;return d=E,E=E+32|0,l=d+12|0,c=d,f=DF(k9()|0)|0,f?(SF(l,f),PF(c,l),Cbe(s,c),s=xF(l)|0):s=Ibe(s)|0,E=d,s|0}function k9(){var s=0;return o[7736]|0||(kbe(9640),Zt(25,9640,_|0)|0,s=7736,n[s>>2]=1,n[s+4>>2]=0),9640}function Cbe(s,l){s=s|0,l=l|0,Dbe(l,s,s+8|0)|0}function Ibe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,Q=0;return c=E,E=E+16|0,d=c+4|0,B=c,f=za(8)|0,l=f,Q=Gt(16)|0,n[Q>>2]=n[s>>2],n[Q+4>>2]=n[s+4>>2],n[Q+8>>2]=n[s+8>>2],n[Q+12>>2]=n[s+12>>2],m=l+4|0,n[m>>2]=Q,s=Gt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],jF(s,m,d),n[f>>2]=s,E=c,l|0}function jF(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Gt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1244,n[c+12>>2]=l,n[s+4>>2]=c}function wbe(s){s=s|0,Zm(s),pt(s)}function Bbe(s){s=s|0,s=n[s+12>>2]|0,s|0&&pt(s)}function vbe(s){s=s|0,pt(s)}function Dbe(s,l,c){return s=s|0,l=l|0,c=c|0,l=Sbe(n[s>>2]|0,l,c)|0,c=s+4|0,n[(n[c>>2]|0)+8>>2]=l,n[(n[c>>2]|0)+8>>2]|0}function Sbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;return f=E,E=E+16|0,d=f,Xa(d),s=ma(s)|0,c=Pbe(s,n[l>>2]|0,+C[c>>3])|0,Za(d),E=f,c|0}function Pbe(s,l,c){s=s|0,l=l|0,c=+c;var f=0;return f=Ql(xbe()|0)|0,l=IF(l)|0,Cl(0,f|0,s|0,l|0,+ +zA(c))|0}function xbe(){var s=0;return o[7728]|0||(bbe(9628),s=7728,n[s>>2]=1,n[s+4>>2]=0),9628}function bbe(s){s=s|0,kl(s,Qbe()|0,2)}function Qbe(){return 1264}function kbe(s){s=s|0,vp(s)}function Fbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Rbe(s,c,d,1),E=f}function Rbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=GF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Tbe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,Nbe(m,f)|0,f),E=d}function GF(){var s=0,l=0;if(o[7744]|0||(R9(9684),Zt(37,9684,_|0)|0,l=7744,n[l>>2]=1,n[l+4>>2]=0),!(br(9684)|0)){s=9684,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));R9(9684)}return 9684}function Tbe(s){return s=s|0,0}function Nbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=GF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],F9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Lbe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function F9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Lbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=Obe(s)|0,m>>>0<d>>>0)Vr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,Mbe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],F9(m,f,c),n[k>>2]=(n[k>>2]|0)+12,Ube(s,Q),_be(Q),E=M;return}}function Obe(s){return s=s|0,357913941}function Mbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function Ube(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function _be(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function R9(s){s=s|0,jbe(s)}function Hbe(s){s=s|0,qbe(s+24|0)}function qbe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function jbe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,5,l,Gbe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Gbe(){return 1280}function Wbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=Ybe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=Kbe(l,d,c)|0,E=f,c|0}function Ybe(s){return s=s|0,(n[(GF()|0)+24>>2]|0)+(s*12|0)|0}function Kbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return B=E,E=E+32|0,d=B,m=B+16|0,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),$A(m,c),m=ef(m,c)|0,FI[f&15](d,s,m),m=Q9(d)|0,E=B,m|0}function Vbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Jbe(s,c,d,1),E=f}function Jbe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=WF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=zbe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,Xbe(m,f)|0,f),E=d}function WF(){var s=0,l=0;if(o[7752]|0||(N9(9720),Zt(38,9720,_|0)|0,l=7752,n[l>>2]=1,n[l+4>>2]=0),!(br(9720)|0)){s=9720,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));N9(9720)}return 9720}function zbe(s){return s=s|0,0}function Xbe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=WF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],T9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Zbe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function T9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Zbe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=$be(s)|0,m>>>0<d>>>0)Vr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,eQe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],T9(m,f,c),n[k>>2]=(n[k>>2]|0)+12,tQe(s,Q),rQe(Q),E=M;return}}function $be(s){return s=s|0,357913941}function eQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function tQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function rQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function N9(s){s=s|0,sQe(s)}function nQe(s){s=s|0,iQe(s+24|0)}function iQe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function sQe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,8,l,oQe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function oQe(){return 1288}function aQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;return c=E,E=E+16|0,f=c+8|0,d=c,m=lQe(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],l=cQe(l,f)|0,E=c,l|0}function lQe(s){return s=s|0,(n[(WF()|0)+24>>2]|0)+(s*12|0)|0}function cQe(s,l){s=s|0,l=l|0;var c=0;return c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),zG(Rg[c&31](s)|0)|0}function uQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],AQe(s,c,d,0),E=f}function AQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=YF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=fQe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,pQe(m,f)|0,f),E=d}function YF(){var s=0,l=0;if(o[7760]|0||(O9(9756),Zt(39,9756,_|0)|0,l=7760,n[l>>2]=1,n[l+4>>2]=0),!(br(9756)|0)){s=9756,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));O9(9756)}return 9756}function fQe(s){return s=s|0,0}function pQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=YF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],L9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(hQe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function L9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function hQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=gQe(s)|0,m>>>0<d>>>0)Vr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,dQe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],L9(m,f,c),n[k>>2]=(n[k>>2]|0)+12,mQe(s,Q),yQe(Q),E=M;return}}function gQe(s){return s=s|0,357913941}function dQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function mQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function yQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function O9(s){s=s|0,IQe(s)}function EQe(s){s=s|0,CQe(s+24|0)}function CQe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function IQe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,8,l,wQe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function wQe(){return 1292}function BQe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=0;f=E,E=E+16|0,d=f+8|0,m=f,B=vQe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],DQe(l,d,c),E=f}function vQe(s){return s=s|0,(n[(YF()|0)+24>>2]|0)+(s*12|0)|0}function DQe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0;m=E,E=E+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),Tu(d,c),c=+Nu(d,c),y7[f&31](s,c),E=m}function SQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],PQe(s,c,d,0),E=f}function PQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=KF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=xQe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,bQe(m,f)|0,f),E=d}function KF(){var s=0,l=0;if(o[7768]|0||(U9(9792),Zt(40,9792,_|0)|0,l=7768,n[l>>2]=1,n[l+4>>2]=0),!(br(9792)|0)){s=9792,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));U9(9792)}return 9792}function xQe(s){return s=s|0,0}function bQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=KF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],M9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(QQe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function M9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function QQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=kQe(s)|0,m>>>0<d>>>0)Vr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,FQe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],M9(m,f,c),n[k>>2]=(n[k>>2]|0)+12,RQe(s,Q),TQe(Q),E=M;return}}function kQe(s){return s=s|0,357913941}function FQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function RQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function TQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function U9(s){s=s|0,OQe(s)}function NQe(s){s=s|0,LQe(s+24|0)}function LQe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function OQe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,1,l,MQe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function MQe(){return 1300}function UQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f;var d=0,m=0,B=0,Q=0;d=E,E=E+16|0,m=d+8|0,B=d,Q=_Qe(s)|0,s=n[Q+4>>2]|0,n[B>>2]=n[Q>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],HQe(l,m,c,f),E=d}function _Qe(s){return s=s|0,(n[(KF()|0)+24>>2]|0)+(s*12|0)|0}function HQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f;var d=0,m=0,B=0,Q=0;Q=E,E=E+16|0,m=Q+1|0,B=Q,d=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(d=n[(n[s>>2]|0)+d>>2]|0),$A(m,c),m=ef(m,c)|0,Tu(B,f),f=+Nu(B,f),S7[d&15](s,m,f),E=Q}function qQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],jQe(s,c,d,0),E=f}function jQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=VF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=GQe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,WQe(m,f)|0,f),E=d}function VF(){var s=0,l=0;if(o[7776]|0||(H9(9828),Zt(41,9828,_|0)|0,l=7776,n[l>>2]=1,n[l+4>>2]=0),!(br(9828)|0)){s=9828,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));H9(9828)}return 9828}function GQe(s){return s=s|0,0}function WQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=VF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],_9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(YQe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function _9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function YQe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=KQe(s)|0,m>>>0<d>>>0)Vr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,VQe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],_9(m,f,c),n[k>>2]=(n[k>>2]|0)+12,JQe(s,Q),zQe(Q),E=M;return}}function KQe(s){return s=s|0,357913941}function VQe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function JQe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function zQe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function H9(s){s=s|0,$Qe(s)}function XQe(s){s=s|0,ZQe(s+24|0)}function ZQe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function $Qe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,7,l,eke()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function eke(){return 1312}function tke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=E,E=E+16|0,d=f+8|0,m=f,B=rke(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],nke(l,d,c),E=f}function rke(s){return s=s|0,(n[(VF()|0)+24>>2]|0)+(s*12|0)|0}function nke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=E,E=E+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),$A(d,c),d=ef(d,c)|0,nf[f&31](s,d),E=m}function ike(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ske(s,c,d,0),E=f}function ske(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=JF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=oke(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,ake(m,f)|0,f),E=d}function JF(){var s=0,l=0;if(o[7784]|0||(j9(9864),Zt(42,9864,_|0)|0,l=7784,n[l>>2]=1,n[l+4>>2]=0),!(br(9864)|0)){s=9864,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));j9(9864)}return 9864}function oke(s){return s=s|0,0}function ake(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=JF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],q9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(lke(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function q9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function lke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=cke(s)|0,m>>>0<d>>>0)Vr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,uke(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],q9(m,f,c),n[k>>2]=(n[k>>2]|0)+12,Ake(s,Q),fke(Q),E=M;return}}function cke(s){return s=s|0,357913941}function uke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function Ake(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function fke(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function j9(s){s=s|0,gke(s)}function pke(s){s=s|0,hke(s+24|0)}function hke(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function gke(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,8,l,dke()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function dke(){return 1320}function mke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=E,E=E+16|0,d=f+8|0,m=f,B=yke(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Eke(l,d,c),E=f}function yke(s){return s=s|0,(n[(JF()|0)+24>>2]|0)+(s*12|0)|0}function Eke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;m=E,E=E+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),Cke(d,c),d=Ike(d,c)|0,nf[f&31](s,d),E=m}function Cke(s,l){s=s|0,l=l|0}function Ike(s,l){return s=s|0,l=l|0,wke(l)|0}function wke(s){return s=s|0,s|0}function Bke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],vke(s,c,d,0),E=f}function vke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=zF()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=Dke(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,Ske(m,f)|0,f),E=d}function zF(){var s=0,l=0;if(o[7792]|0||(W9(9900),Zt(43,9900,_|0)|0,l=7792,n[l>>2]=1,n[l+4>>2]=0),!(br(9900)|0)){s=9900,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));W9(9900)}return 9900}function Dke(s){return s=s|0,0}function Ske(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=zF()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],G9(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(Pke(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function G9(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function Pke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=xke(s)|0,m>>>0<d>>>0)Vr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,bke(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],G9(m,f,c),n[k>>2]=(n[k>>2]|0)+12,Qke(s,Q),kke(Q),E=M;return}}function xke(s){return s=s|0,357913941}function bke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function Qke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function kke(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function W9(s){s=s|0,Tke(s)}function Fke(s){s=s|0,Rke(s+24|0)}function Rke(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function Tke(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,22,l,Nke()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function Nke(){return 1344}function Lke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0;c=E,E=E+16|0,f=c+8|0,d=c,m=Oke(s)|0,s=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=s,n[f>>2]=n[d>>2],n[f+4>>2]=n[d+4>>2],Mke(l,f),E=c}function Oke(s){return s=s|0,(n[(zF()|0)+24>>2]|0)+(s*12|0)|0}function Mke(s,l){s=s|0,l=l|0;var c=0;c=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(c=n[(n[s>>2]|0)+c>>2]|0),rf[c&127](s)}function Uke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=XF()|0,s=_ke(c)|0,un(m,l,d,s,Hke(c,f)|0,f)}function XF(){var s=0,l=0;if(o[7800]|0||(K9(9936),Zt(44,9936,_|0)|0,l=7800,n[l>>2]=1,n[l+4>>2]=0),!(br(9936)|0)){s=9936,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));K9(9936)}return 9936}function _ke(s){return s=s|0,s|0}function Hke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return Q=E,E=E+16|0,d=Q,m=Q+4|0,n[d>>2]=s,k=XF()|0,B=k+24|0,l=Ar(l,4)|0,n[m>>2]=l,c=k+28|0,f=n[c>>2]|0,f>>>0<(n[k+32>>2]|0)>>>0?(Y9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(qke(B,d,m),l=n[c>>2]|0),E=Q,(l-(n[B>>2]|0)>>3)+-1|0}function Y9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function qke(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;if(Q=E,E=E+32|0,d=Q,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=jke(s)|0,f>>>0<B>>>0)Vr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,M=O>>2,Gke(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-k>>3,s+8|0),B=d+8|0,Y9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,Wke(s,d),Yke(d),E=Q;return}}function jke(s){return s=s|0,536870911}function Gke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Gt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function Wke(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Yke(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&pt(s)}function K9(s){s=s|0,Jke(s)}function Kke(s){s=s|0,Vke(s+24|0)}function Vke(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function Jke(s){s=s|0;var l=0;l=Gr()|0,Wr(s,1,23,l,I9()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function zke(s,l){s=s|0,l=l|0,Zke(n[(Xke(s)|0)>>2]|0,l)}function Xke(s){return s=s|0,(n[(XF()|0)+24>>2]|0)+(s<<3)|0}function Zke(s,l){s=s|0,l=l|0;var c=0,f=0;c=E,E=E+16|0,f=c,OF(f,l),l=MF(f,l)|0,rf[s&127](l),E=c}function $ke(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=ZF()|0,s=eFe(c)|0,un(m,l,d,s,tFe(c,f)|0,f)}function ZF(){var s=0,l=0;if(o[7808]|0||(J9(9972),Zt(45,9972,_|0)|0,l=7808,n[l>>2]=1,n[l+4>>2]=0),!(br(9972)|0)){s=9972,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));J9(9972)}return 9972}function eFe(s){return s=s|0,s|0}function tFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return Q=E,E=E+16|0,d=Q,m=Q+4|0,n[d>>2]=s,k=ZF()|0,B=k+24|0,l=Ar(l,4)|0,n[m>>2]=l,c=k+28|0,f=n[c>>2]|0,f>>>0<(n[k+32>>2]|0)>>>0?(V9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(rFe(B,d,m),l=n[c>>2]|0),E=Q,(l-(n[B>>2]|0)>>3)+-1|0}function V9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function rFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;if(Q=E,E=E+32|0,d=Q,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=nFe(s)|0,f>>>0<B>>>0)Vr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,M=O>>2,iFe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-k>>3,s+8|0),B=d+8|0,V9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,sFe(s,d),oFe(d),E=Q;return}}function nFe(s){return s=s|0,536870911}function iFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Gt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function sFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function oFe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&pt(s)}function J9(s){s=s|0,cFe(s)}function aFe(s){s=s|0,lFe(s+24|0)}function lFe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function cFe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,1,9,l,uFe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function uFe(){return 1348}function AFe(s,l){return s=s|0,l=l|0,pFe(n[(fFe(s)|0)>>2]|0,l)|0}function fFe(s){return s=s|0,(n[(ZF()|0)+24>>2]|0)+(s<<3)|0}function pFe(s,l){s=s|0,l=l|0;var c=0,f=0;return c=E,E=E+16|0,f=c,z9(f,l),l=X9(f,l)|0,l=Kv(Rg[s&31](l)|0)|0,E=c,l|0}function z9(s,l){s=s|0,l=l|0}function X9(s,l){return s=s|0,l=l|0,hFe(l)|0}function hFe(s){return s=s|0,s|0}function gFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=$F()|0,s=dFe(c)|0,un(m,l,d,s,mFe(c,f)|0,f)}function $F(){var s=0,l=0;if(o[7816]|0||($9(10008),Zt(46,10008,_|0)|0,l=7816,n[l>>2]=1,n[l+4>>2]=0),!(br(10008)|0)){s=10008,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));$9(10008)}return 10008}function dFe(s){return s=s|0,s|0}function mFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return Q=E,E=E+16|0,d=Q,m=Q+4|0,n[d>>2]=s,k=$F()|0,B=k+24|0,l=Ar(l,4)|0,n[m>>2]=l,c=k+28|0,f=n[c>>2]|0,f>>>0<(n[k+32>>2]|0)>>>0?(Z9(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(yFe(B,d,m),l=n[c>>2]|0),E=Q,(l-(n[B>>2]|0)>>3)+-1|0}function Z9(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function yFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;if(Q=E,E=E+32|0,d=Q,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=EFe(s)|0,f>>>0<B>>>0)Vr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,M=O>>2,CFe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-k>>3,s+8|0),B=d+8|0,Z9(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,IFe(s,d),wFe(d),E=Q;return}}function EFe(s){return s=s|0,536870911}function CFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Gt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function IFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function wFe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&pt(s)}function $9(s){s=s|0,DFe(s)}function BFe(s){s=s|0,vFe(s+24|0)}function vFe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function DFe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,1,15,l,g9()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function SFe(s){return s=s|0,xFe(n[(PFe(s)|0)>>2]|0)|0}function PFe(s){return s=s|0,(n[($F()|0)+24>>2]|0)+(s<<3)|0}function xFe(s){return s=s|0,Kv(lD[s&7]()|0)|0}function bFe(){var s=0;return o[7832]|0||(OFe(10052),Zt(25,10052,_|0)|0,s=7832,n[s>>2]=1,n[s+4>>2]=0),10052}function QFe(s,l){s=s|0,l=l|0,n[s>>2]=kFe()|0,n[s+4>>2]=FFe()|0,n[s+12>>2]=l,n[s+8>>2]=RFe()|0,n[s+32>>2]=2}function kFe(){return 11709}function FFe(){return 1188}function RFe(){return Jv()|0}function TFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(xp(f,896)|0)==512?c|0&&(NFe(c),pt(c)):l|0&&(Qu(l),pt(l))}function xp(s,l){return s=s|0,l=l|0,l&s|0}function NFe(s){s=s|0,s=n[s+4>>2]|0,s|0&&Qp(s)}function Jv(){var s=0;return o[7824]|0||(n[2511]=LFe()|0,n[2512]=0,s=7824,n[s>>2]=1,n[s+4>>2]=0),10044}function LFe(){return 0}function OFe(s){s=s|0,vp(s)}function MFe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0;l=E,E=E+32|0,c=l+24|0,m=l+16|0,d=l+8|0,f=l,UFe(s,4827),_Fe(s,4834,3)|0,HFe(s,3682,47)|0,n[m>>2]=9,n[m+4>>2]=0,n[c>>2]=n[m>>2],n[c+4>>2]=n[m+4>>2],qFe(s,4841,c)|0,n[d>>2]=1,n[d+4>>2]=0,n[c>>2]=n[d>>2],n[c+4>>2]=n[d+4>>2],jFe(s,4871,c)|0,n[f>>2]=10,n[f+4>>2]=0,n[c>>2]=n[f>>2],n[c+4>>2]=n[f+4>>2],GFe(s,4891,c)|0,E=l}function UFe(s,l){s=s|0,l=l|0;var c=0;c=wTe()|0,n[s>>2]=c,BTe(c,l),bp(n[s>>2]|0)}function _Fe(s,l,c){return s=s|0,l=l|0,c=c|0,oTe(s,cn(l)|0,c,0),s|0}function HFe(s,l,c){return s=s|0,l=l|0,c=c|0,WRe(s,cn(l)|0,c,0),s|0}function qFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],SRe(s,l,d),E=f,s|0}function jFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],aRe(s,l,d),E=f,s|0}function GFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=n[c+4>>2]|0,n[m>>2]=n[c>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],WFe(s,l,d),E=f,s|0}function WFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],YFe(s,c,d,1),E=f}function YFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=eR()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=KFe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,VFe(m,f)|0,f),E=d}function eR(){var s=0,l=0;if(o[7840]|0||(t5(10100),Zt(48,10100,_|0)|0,l=7840,n[l>>2]=1,n[l+4>>2]=0),!(br(10100)|0)){s=10100,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));t5(10100)}return 10100}function KFe(s){return s=s|0,0}function VFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=eR()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],e5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(JFe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function e5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function JFe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=zFe(s)|0,m>>>0<d>>>0)Vr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,XFe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],e5(m,f,c),n[k>>2]=(n[k>>2]|0)+12,ZFe(s,Q),$Fe(Q),E=M;return}}function zFe(s){return s=s|0,357913941}function XFe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function ZFe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function $Fe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function t5(s){s=s|0,rRe(s)}function eRe(s){s=s|0,tRe(s+24|0)}function tRe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function rRe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,6,l,nRe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function nRe(){return 1364}function iRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;return f=E,E=E+16|0,d=f+8|0,m=f,B=sRe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],c=oRe(l,d,c)|0,E=f,c|0}function sRe(s){return s=s|0,(n[(eR()|0)+24>>2]|0)+(s*12|0)|0}function oRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;return m=E,E=E+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),$A(d,c),d=ef(d,c)|0,d=l9(bR[f&15](s,d)|0)|0,E=m,d|0}function aRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],lRe(s,c,d,0),E=f}function lRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=tR()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=cRe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,uRe(m,f)|0,f),E=d}function tR(){var s=0,l=0;if(o[7848]|0||(n5(10136),Zt(49,10136,_|0)|0,l=7848,n[l>>2]=1,n[l+4>>2]=0),!(br(10136)|0)){s=10136,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));n5(10136)}return 10136}function cRe(s){return s=s|0,0}function uRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=tR()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],r5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(ARe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function r5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function ARe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=fRe(s)|0,m>>>0<d>>>0)Vr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,pRe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],r5(m,f,c),n[k>>2]=(n[k>>2]|0)+12,hRe(s,Q),gRe(Q),E=M;return}}function fRe(s){return s=s|0,357913941}function pRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function hRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function gRe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function n5(s){s=s|0,yRe(s)}function dRe(s){s=s|0,mRe(s+24|0)}function mRe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function yRe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,9,l,ERe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function ERe(){return 1372}function CRe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=0;f=E,E=E+16|0,d=f+8|0,m=f,B=IRe(s)|0,s=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=s,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],wRe(l,d,c),E=f}function IRe(s){return s=s|0,(n[(tR()|0)+24>>2]|0)+(s*12|0)|0}function wRe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=$e;m=E,E=E+16|0,d=m,f=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(f=n[(n[s>>2]|0)+f>>2]|0),BRe(d,c),B=y(vRe(d,c)),m7[f&1](s,B),E=m}function BRe(s,l){s=s|0,l=+l}function vRe(s,l){return s=s|0,l=+l,y(DRe(l))}function DRe(s){return s=+s,y(s)}function SRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,d=f+8|0,m=f,Q=n[c>>2]|0,B=n[c+4>>2]|0,c=cn(l)|0,n[m>>2]=Q,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],PRe(s,c,d,0),E=f}function PRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0,k=0,M=0,O=0;d=E,E=E+32|0,m=d+16|0,O=d+8|0,Q=d,M=n[c>>2]|0,k=n[c+4>>2]|0,B=n[s>>2]|0,s=rR()|0,n[O>>2]=M,n[O+4>>2]=k,n[m>>2]=n[O>>2],n[m+4>>2]=n[O+4>>2],c=xRe(m)|0,n[Q>>2]=M,n[Q+4>>2]=k,n[m>>2]=n[Q>>2],n[m+4>>2]=n[Q+4>>2],un(B,l,s,c,bRe(m,f)|0,f),E=d}function rR(){var s=0,l=0;if(o[7856]|0||(s5(10172),Zt(50,10172,_|0)|0,l=7856,n[l>>2]=1,n[l+4>>2]=0),!(br(10172)|0)){s=10172,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));s5(10172)}return 10172}function xRe(s){return s=s|0,0}function bRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0;return O=E,E=E+32|0,d=O+24|0,B=O+16|0,Q=O,k=O+8|0,m=n[s>>2]|0,f=n[s+4>>2]|0,n[Q>>2]=m,n[Q+4>>2]=f,j=rR()|0,M=j+24|0,s=Ar(l,4)|0,n[k>>2]=s,l=j+28|0,c=n[l>>2]|0,c>>>0<(n[j+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=f,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],i5(c,d,s),s=(n[l>>2]|0)+12|0,n[l>>2]=s):(QRe(M,Q,k),s=n[l>>2]|0),E=O,((s-(n[M>>2]|0)|0)/12|0)+-1|0}function i5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=n[l+4>>2]|0,n[s>>2]=n[l>>2],n[s+4>>2]=f,n[s+8>>2]=c}function QRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;if(M=E,E=E+48|0,f=M+32|0,B=M+24|0,Q=M,k=s+4|0,d=(((n[k>>2]|0)-(n[s>>2]|0)|0)/12|0)+1|0,m=kRe(s)|0,m>>>0<d>>>0)Vr(s);else{O=n[s>>2]|0,se=((n[s+8>>2]|0)-O|0)/12|0,j=se<<1,FRe(Q,se>>>0<m>>>1>>>0?j>>>0<d>>>0?d:j:m,((n[k>>2]|0)-O|0)/12|0,s+8|0),k=Q+8|0,m=n[k>>2]|0,d=n[l+4>>2]|0,c=n[c>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[f>>2]=n[B>>2],n[f+4>>2]=n[B+4>>2],i5(m,f,c),n[k>>2]=(n[k>>2]|0)+12,RRe(s,Q),TRe(Q),E=M;return}}function kRe(s){return s=s|0,357913941}function FRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>357913941)Rt();else{d=Gt(l*12|0)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c*12|0)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l*12|0)}function RRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function TRe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~(((f+-12-l|0)>>>0)/12|0)*12|0)),s=n[s>>2]|0,s|0&&pt(s)}function s5(s){s=s|0,ORe(s)}function NRe(s){s=s|0,LRe(s+24|0)}function LRe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~(((l+-12-f|0)>>>0)/12|0)*12|0)),pt(c))}function ORe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,2,3,l,MRe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function MRe(){return 1380}function URe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0;d=E,E=E+16|0,m=d+8|0,B=d,Q=_Re(s)|0,s=n[Q+4>>2]|0,n[B>>2]=n[Q>>2],n[B+4>>2]=s,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],HRe(l,m,c,f),E=d}function _Re(s){return s=s|0,(n[(rR()|0)+24>>2]|0)+(s*12|0)|0}function HRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0;Q=E,E=E+16|0,m=Q+1|0,B=Q,d=n[l>>2]|0,l=n[l+4>>2]|0,s=s+(l>>1)|0,l&1&&(d=n[(n[s>>2]|0)+d>>2]|0),$A(m,c),m=ef(m,c)|0,qRe(B,f),B=jRe(B,f)|0,FI[d&15](s,m,B),E=Q}function qRe(s,l){s=s|0,l=l|0}function jRe(s,l){return s=s|0,l=l|0,GRe(l)|0}function GRe(s){return s=s|0,(s|0)!=0|0}function WRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=nR()|0,s=YRe(c)|0,un(m,l,d,s,KRe(c,f)|0,f)}function nR(){var s=0,l=0;if(o[7864]|0||(a5(10208),Zt(51,10208,_|0)|0,l=7864,n[l>>2]=1,n[l+4>>2]=0),!(br(10208)|0)){s=10208,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));a5(10208)}return 10208}function YRe(s){return s=s|0,s|0}function KRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return Q=E,E=E+16|0,d=Q,m=Q+4|0,n[d>>2]=s,k=nR()|0,B=k+24|0,l=Ar(l,4)|0,n[m>>2]=l,c=k+28|0,f=n[c>>2]|0,f>>>0<(n[k+32>>2]|0)>>>0?(o5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(VRe(B,d,m),l=n[c>>2]|0),E=Q,(l-(n[B>>2]|0)>>3)+-1|0}function o5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function VRe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;if(Q=E,E=E+32|0,d=Q,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=JRe(s)|0,f>>>0<B>>>0)Vr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,M=O>>2,zRe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-k>>3,s+8|0),B=d+8|0,o5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,XRe(s,d),ZRe(d),E=Q;return}}function JRe(s){return s=s|0,536870911}function zRe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Gt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function XRe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function ZRe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&pt(s)}function a5(s){s=s|0,tTe(s)}function $Re(s){s=s|0,eTe(s+24|0)}function eTe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function tTe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,1,24,l,rTe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function rTe(){return 1392}function nTe(s,l){s=s|0,l=l|0,sTe(n[(iTe(s)|0)>>2]|0,l)}function iTe(s){return s=s|0,(n[(nR()|0)+24>>2]|0)+(s<<3)|0}function sTe(s,l){s=s|0,l=l|0;var c=0,f=0;c=E,E=E+16|0,f=c,z9(f,l),l=X9(f,l)|0,rf[s&127](l),E=c}function oTe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=iR()|0,s=aTe(c)|0,un(m,l,d,s,lTe(c,f)|0,f)}function iR(){var s=0,l=0;if(o[7872]|0||(c5(10244),Zt(52,10244,_|0)|0,l=7872,n[l>>2]=1,n[l+4>>2]=0),!(br(10244)|0)){s=10244,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));c5(10244)}return 10244}function aTe(s){return s=s|0,s|0}function lTe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return Q=E,E=E+16|0,d=Q,m=Q+4|0,n[d>>2]=s,k=iR()|0,B=k+24|0,l=Ar(l,4)|0,n[m>>2]=l,c=k+28|0,f=n[c>>2]|0,f>>>0<(n[k+32>>2]|0)>>>0?(l5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(cTe(B,d,m),l=n[c>>2]|0),E=Q,(l-(n[B>>2]|0)>>3)+-1|0}function l5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function cTe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;if(Q=E,E=E+32|0,d=Q,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=uTe(s)|0,f>>>0<B>>>0)Vr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,M=O>>2,ATe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-k>>3,s+8|0),B=d+8|0,l5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,fTe(s,d),pTe(d),E=Q;return}}function uTe(s){return s=s|0,536870911}function ATe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Gt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function fTe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function pTe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&pt(s)}function c5(s){s=s|0,dTe(s)}function hTe(s){s=s|0,gTe(s+24|0)}function gTe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function dTe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,1,16,l,mTe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function mTe(){return 1400}function yTe(s){return s=s|0,CTe(n[(ETe(s)|0)>>2]|0)|0}function ETe(s){return s=s|0,(n[(iR()|0)+24>>2]|0)+(s<<3)|0}function CTe(s){return s=s|0,ITe(lD[s&7]()|0)|0}function ITe(s){return s=s|0,s|0}function wTe(){var s=0;return o[7880]|0||(bTe(10280),Zt(25,10280,_|0)|0,s=7880,n[s>>2]=1,n[s+4>>2]=0),10280}function BTe(s,l){s=s|0,l=l|0,n[s>>2]=vTe()|0,n[s+4>>2]=DTe()|0,n[s+12>>2]=l,n[s+8>>2]=STe()|0,n[s+32>>2]=4}function vTe(){return 11711}function DTe(){return 1356}function STe(){return Jv()|0}function PTe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(xp(f,896)|0)==512?c|0&&(xTe(c),pt(c)):l|0&&(wg(l),pt(l))}function xTe(s){s=s|0,s=n[s+4>>2]|0,s|0&&Qp(s)}function bTe(s){s=s|0,vp(s)}function QTe(s){s=s|0,kTe(s,4920),FTe(s)|0,RTe(s)|0}function kTe(s,l){s=s|0,l=l|0;var c=0;c=k9()|0,n[s>>2]=c,eNe(c,l),bp(n[s>>2]|0)}function FTe(s){s=s|0;var l=0;return l=n[s>>2]|0,Pg(l,GTe()|0),s|0}function RTe(s){s=s|0;var l=0;return l=n[s>>2]|0,Pg(l,TTe()|0),s|0}function TTe(){var s=0;return o[7888]|0||(u5(10328),Zt(53,10328,_|0)|0,s=7888,n[s>>2]=1,n[s+4>>2]=0),br(10328)|0||u5(10328),10328}function Pg(s,l){s=s|0,l=l|0,un(s,0,l,0,0,0)}function u5(s){s=s|0,OTe(s),xg(s,10)}function NTe(s){s=s|0,LTe(s+24|0)}function LTe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function OTe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,5,1,l,HTe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function MTe(s,l,c){s=s|0,l=l|0,c=+c,UTe(s,l,c)}function xg(s,l){s=s|0,l=l|0,n[s+20>>2]=l}function UTe(s,l,c){s=s|0,l=l|0,c=+c;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+16|0,m=f+8|0,Q=f+13|0,d=f,B=f+12|0,$A(Q,l),n[m>>2]=ef(Q,l)|0,Tu(B,c),C[d>>3]=+Nu(B,c),_Te(s,m,d),E=f}function _Te(s,l,c){s=s|0,l=l|0,c=c|0,W(s+8|0,n[l>>2]|0,+C[c>>3]),o[s+24>>0]=1}function HTe(){return 1404}function qTe(s,l){return s=s|0,l=+l,jTe(s,l)|0}function jTe(s,l){s=s|0,l=+l;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return f=E,E=E+16|0,m=f+4|0,B=f+8|0,Q=f,d=za(8)|0,c=d,k=Gt(16)|0,$A(m,s),s=ef(m,s)|0,Tu(B,l),W(k,s,+Nu(B,l)),B=c+4|0,n[B>>2]=k,s=Gt(8)|0,B=n[B>>2]|0,n[Q>>2]=0,n[m>>2]=n[Q>>2],jF(s,B,m),n[d>>2]=s,E=f,c|0}function GTe(){var s=0;return o[7896]|0||(A5(10364),Zt(54,10364,_|0)|0,s=7896,n[s>>2]=1,n[s+4>>2]=0),br(10364)|0||A5(10364),10364}function A5(s){s=s|0,KTe(s),xg(s,55)}function WTe(s){s=s|0,YTe(s+24|0)}function YTe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function KTe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,5,4,l,XTe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function VTe(s){s=s|0,JTe(s)}function JTe(s){s=s|0,zTe(s)}function zTe(s){s=s|0,f5(s+8|0),o[s+24>>0]=1}function f5(s){s=s|0,n[s>>2]=0,C[s+8>>3]=0}function XTe(){return 1424}function ZTe(){return $Te()|0}function $Te(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0;return l=E,E=E+16|0,d=l+4|0,B=l,c=za(8)|0,s=c,f=Gt(16)|0,f5(f),m=s+4|0,n[m>>2]=f,f=Gt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],jF(f,m,d),n[c>>2]=f,E=l,s|0}function eNe(s,l){s=s|0,l=l|0,n[s>>2]=tNe()|0,n[s+4>>2]=rNe()|0,n[s+12>>2]=l,n[s+8>>2]=nNe()|0,n[s+32>>2]=5}function tNe(){return 11710}function rNe(){return 1416}function nNe(){return zv()|0}function iNe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(xp(f,896)|0)==512?c|0&&(sNe(c),pt(c)):l|0&&pt(l)}function sNe(s){s=s|0,s=n[s+4>>2]|0,s|0&&Qp(s)}function zv(){var s=0;return o[7904]|0||(n[2600]=oNe()|0,n[2601]=0,s=7904,n[s>>2]=1,n[s+4>>2]=0),10400}function oNe(){return n[357]|0}function aNe(s){s=s|0,lNe(s,4926),cNe(s)|0}function lNe(s,l){s=s|0,l=l|0;var c=0;c=e9()|0,n[s>>2]=c,CNe(c,l),bp(n[s>>2]|0)}function cNe(s){s=s|0;var l=0;return l=n[s>>2]|0,Pg(l,uNe()|0),s|0}function uNe(){var s=0;return o[7912]|0||(p5(10412),Zt(56,10412,_|0)|0,s=7912,n[s>>2]=1,n[s+4>>2]=0),br(10412)|0||p5(10412),10412}function p5(s){s=s|0,pNe(s),xg(s,57)}function ANe(s){s=s|0,fNe(s+24|0)}function fNe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function pNe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,5,5,l,mNe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function hNe(s){s=s|0,gNe(s)}function gNe(s){s=s|0,dNe(s)}function dNe(s){s=s|0;var l=0,c=0;l=s+8|0,c=l+48|0;do n[l>>2]=0,l=l+4|0;while((l|0)<(c|0));o[s+56>>0]=1}function mNe(){return 1432}function yNe(){return ENe()|0}function ENe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0,Q=0;B=E,E=E+16|0,s=B+4|0,l=B,c=za(8)|0,f=c,d=Gt(48)|0,m=d,Q=m+48|0;do n[m>>2]=0,m=m+4|0;while((m|0)<(Q|0));return m=f+4|0,n[m>>2]=d,Q=Gt(8)|0,m=n[m>>2]|0,n[l>>2]=0,n[s>>2]=n[l>>2],t9(Q,m,s),n[c>>2]=Q,E=B,f|0}function CNe(s,l){s=s|0,l=l|0,n[s>>2]=INe()|0,n[s+4>>2]=wNe()|0,n[s+12>>2]=l,n[s+8>>2]=BNe()|0,n[s+32>>2]=6}function INe(){return 11704}function wNe(){return 1436}function BNe(){return zv()|0}function vNe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(xp(f,896)|0)==512?c|0&&(DNe(c),pt(c)):l|0&&pt(l)}function DNe(s){s=s|0,s=n[s+4>>2]|0,s|0&&Qp(s)}function SNe(s){s=s|0,PNe(s,4933),xNe(s)|0,bNe(s)|0}function PNe(s,l){s=s|0,l=l|0;var c=0;c=$Ne()|0,n[s>>2]=c,eLe(c,l),bp(n[s>>2]|0)}function xNe(s){s=s|0;var l=0;return l=n[s>>2]|0,Pg(l,jNe()|0),s|0}function bNe(s){s=s|0;var l=0;return l=n[s>>2]|0,Pg(l,QNe()|0),s|0}function QNe(){var s=0;return o[7920]|0||(h5(10452),Zt(58,10452,_|0)|0,s=7920,n[s>>2]=1,n[s+4>>2]=0),br(10452)|0||h5(10452),10452}function h5(s){s=s|0,RNe(s),xg(s,1)}function kNe(s){s=s|0,FNe(s+24|0)}function FNe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function RNe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,5,1,l,ONe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function TNe(s,l,c){s=s|0,l=+l,c=+c,NNe(s,l,c)}function NNe(s,l,c){s=s|0,l=+l,c=+c;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+32|0,m=f+8|0,Q=f+17|0,d=f,B=f+16|0,Tu(Q,l),C[m>>3]=+Nu(Q,l),Tu(B,c),C[d>>3]=+Nu(B,c),LNe(s,m,d),E=f}function LNe(s,l,c){s=s|0,l=l|0,c=c|0,g5(s+8|0,+C[l>>3],+C[c>>3]),o[s+24>>0]=1}function g5(s,l,c){s=s|0,l=+l,c=+c,C[s>>3]=l,C[s+8>>3]=c}function ONe(){return 1472}function MNe(s,l){return s=+s,l=+l,UNe(s,l)|0}function UNe(s,l){s=+s,l=+l;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return f=E,E=E+16|0,B=f+4|0,Q=f+8|0,k=f,d=za(8)|0,c=d,m=Gt(16)|0,Tu(B,s),s=+Nu(B,s),Tu(Q,l),g5(m,s,+Nu(Q,l)),Q=c+4|0,n[Q>>2]=m,m=Gt(8)|0,Q=n[Q>>2]|0,n[k>>2]=0,n[B>>2]=n[k>>2],d5(m,Q,B),n[d>>2]=m,E=f,c|0}function d5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Gt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1452,n[c+12>>2]=l,n[s+4>>2]=c}function _Ne(s){s=s|0,Zm(s),pt(s)}function HNe(s){s=s|0,s=n[s+12>>2]|0,s|0&&pt(s)}function qNe(s){s=s|0,pt(s)}function jNe(){var s=0;return o[7928]|0||(m5(10488),Zt(59,10488,_|0)|0,s=7928,n[s>>2]=1,n[s+4>>2]=0),br(10488)|0||m5(10488),10488}function m5(s){s=s|0,YNe(s),xg(s,60)}function GNe(s){s=s|0,WNe(s+24|0)}function WNe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function YNe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,5,6,l,zNe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function KNe(s){s=s|0,VNe(s)}function VNe(s){s=s|0,JNe(s)}function JNe(s){s=s|0,y5(s+8|0),o[s+24>>0]=1}function y5(s){s=s|0,n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,n[s+12>>2]=0}function zNe(){return 1492}function XNe(){return ZNe()|0}function ZNe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0;return l=E,E=E+16|0,d=l+4|0,B=l,c=za(8)|0,s=c,f=Gt(16)|0,y5(f),m=s+4|0,n[m>>2]=f,f=Gt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],d5(f,m,d),n[c>>2]=f,E=l,s|0}function $Ne(){var s=0;return o[7936]|0||(oLe(10524),Zt(25,10524,_|0)|0,s=7936,n[s>>2]=1,n[s+4>>2]=0),10524}function eLe(s,l){s=s|0,l=l|0,n[s>>2]=tLe()|0,n[s+4>>2]=rLe()|0,n[s+12>>2]=l,n[s+8>>2]=nLe()|0,n[s+32>>2]=7}function tLe(){return 11700}function rLe(){return 1484}function nLe(){return zv()|0}function iLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(xp(f,896)|0)==512?c|0&&(sLe(c),pt(c)):l|0&&pt(l)}function sLe(s){s=s|0,s=n[s+4>>2]|0,s|0&&Qp(s)}function oLe(s){s=s|0,vp(s)}function aLe(s,l,c){s=s|0,l=l|0,c=c|0,s=cn(l)|0,l=lLe(c)|0,c=cLe(c,0)|0,ULe(s,l,c,sR()|0,0)}function lLe(s){return s=s|0,s|0}function cLe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return Q=E,E=E+16|0,d=Q,m=Q+4|0,n[d>>2]=s,k=sR()|0,B=k+24|0,l=Ar(l,4)|0,n[m>>2]=l,c=k+28|0,f=n[c>>2]|0,f>>>0<(n[k+32>>2]|0)>>>0?(C5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(dLe(B,d,m),l=n[c>>2]|0),E=Q,(l-(n[B>>2]|0)>>3)+-1|0}function sR(){var s=0,l=0;if(o[7944]|0||(E5(10568),Zt(61,10568,_|0)|0,l=7944,n[l>>2]=1,n[l+4>>2]=0),!(br(10568)|0)){s=10568,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));E5(10568)}return 10568}function E5(s){s=s|0,fLe(s)}function uLe(s){s=s|0,ALe(s+24|0)}function ALe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function fLe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,1,17,l,y9()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function pLe(s){return s=s|0,gLe(n[(hLe(s)|0)>>2]|0)|0}function hLe(s){return s=s|0,(n[(sR()|0)+24>>2]|0)+(s<<3)|0}function gLe(s){return s=s|0,Vv(lD[s&7]()|0)|0}function C5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function dLe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;if(Q=E,E=E+32|0,d=Q,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=mLe(s)|0,f>>>0<B>>>0)Vr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,M=O>>2,yLe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-k>>3,s+8|0),B=d+8|0,C5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,ELe(s,d),CLe(d),E=Q;return}}function mLe(s){return s=s|0,536870911}function yLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Gt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function ELe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function CLe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&pt(s)}function ILe(){wLe()}function wLe(){BLe(10604)}function BLe(s){s=s|0,vLe(s,4955)}function vLe(s,l){s=s|0,l=l|0;var c=0;c=DLe()|0,n[s>>2]=c,SLe(c,l),bp(n[s>>2]|0)}function DLe(){var s=0;return o[7952]|0||(NLe(10612),Zt(25,10612,_|0)|0,s=7952,n[s>>2]=1,n[s+4>>2]=0),10612}function SLe(s,l){s=s|0,l=l|0,n[s>>2]=QLe()|0,n[s+4>>2]=kLe()|0,n[s+12>>2]=l,n[s+8>>2]=FLe()|0,n[s+32>>2]=8}function bp(s){s=s|0;var l=0,c=0;l=E,E=E+16|0,c=l,Km()|0,n[c>>2]=s,PLe(10608,c),E=l}function Km(){return o[11714]|0||(n[2652]=0,Zt(62,10608,_|0)|0,o[11714]=1),10608}function PLe(s,l){s=s|0,l=l|0;var c=0;c=Gt(8)|0,n[c+4>>2]=n[l>>2],n[c>>2]=n[s>>2],n[s>>2]=c}function xLe(s){s=s|0,bLe(s)}function bLe(s){s=s|0;var l=0,c=0;if(l=n[s>>2]|0,l|0)do c=l,l=n[l>>2]|0,pt(c);while((l|0)!=0);n[s>>2]=0}function QLe(){return 11715}function kLe(){return 1496}function FLe(){return Jv()|0}function RLe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(xp(f,896)|0)==512?c|0&&(TLe(c),pt(c)):l|0&&pt(l)}function TLe(s){s=s|0,s=n[s+4>>2]|0,s|0&&Qp(s)}function NLe(s){s=s|0,vp(s)}function LLe(s,l){s=s|0,l=l|0;var c=0,f=0;Km()|0,c=n[2652]|0;e:do if(c|0){for(;f=n[c+4>>2]|0,!(f|0&&(t7(oR(f)|0,s)|0)==0);)if(c=n[c>>2]|0,!c)break e;OLe(f,l)}while(0)}function oR(s){return s=s|0,n[s+12>>2]|0}function OLe(s,l){s=s|0,l=l|0;var c=0;s=s+36|0,c=n[s>>2]|0,c|0&&(GA(c),pt(c)),c=Gt(4)|0,VG(c,l),n[s>>2]=c}function aR(){return o[11716]|0||(n[2664]=0,Zt(63,10656,_|0)|0,o[11716]=1),10656}function I5(){var s=0;return o[11717]|0?s=n[2665]|0:(MLe(),n[2665]=1504,o[11717]=1,s=1504),s|0}function MLe(){o[11740]|0||(o[11718]=Ar(Ar(8,0)|0,0)|0,o[11719]=Ar(Ar(0,0)|0,0)|0,o[11720]=Ar(Ar(0,16)|0,0)|0,o[11721]=Ar(Ar(8,0)|0,0)|0,o[11722]=Ar(Ar(0,0)|0,0)|0,o[11723]=Ar(Ar(8,0)|0,0)|0,o[11724]=Ar(Ar(0,0)|0,0)|0,o[11725]=Ar(Ar(8,0)|0,0)|0,o[11726]=Ar(Ar(0,0)|0,0)|0,o[11727]=Ar(Ar(8,0)|0,0)|0,o[11728]=Ar(Ar(0,0)|0,0)|0,o[11729]=Ar(Ar(0,0)|0,32)|0,o[11730]=Ar(Ar(0,0)|0,32)|0,o[11740]=1)}function w5(){return 1572}function ULe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,Q=0,k=0,M=0,O=0;m=E,E=E+32|0,O=m+16|0,M=m+12|0,k=m+8|0,Q=m+4|0,B=m,n[O>>2]=s,n[M>>2]=l,n[k>>2]=c,n[Q>>2]=f,n[B>>2]=d,aR()|0,_Le(10656,O,M,k,Q,B),E=m}function _Le(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0;B=Gt(24)|0,XG(B+4|0,n[l>>2]|0,n[c>>2]|0,n[f>>2]|0,n[d>>2]|0,n[m>>2]|0),n[B>>2]=n[s>>2],n[s>>2]=B}function B5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0,Ye=0,Le=0,Re=0,et=0,Ze=0,at=0;if(at=E,E=E+32|0,Le=at+20|0,Re=at+8|0,et=at+4|0,Ze=at,l=n[l>>2]|0,l|0){Ye=Le+4|0,k=Le+8|0,M=Re+4|0,O=Re+8|0,j=Re+8|0,se=Le+8|0;do{if(B=l+4|0,Q=lR(B)|0,Q|0){if(d=SI(Q)|0,n[Le>>2]=0,n[Ye>>2]=0,n[k>>2]=0,f=(PI(Q)|0)+1|0,HLe(Le,f),f|0)for(;f=f+-1|0,Fc(Re,n[d>>2]|0),m=n[Ye>>2]|0,m>>>0<(n[se>>2]|0)>>>0?(n[m>>2]=n[Re>>2],n[Ye>>2]=(n[Ye>>2]|0)+4):cR(Le,Re),f;)d=d+4|0;f=xI(Q)|0,n[Re>>2]=0,n[M>>2]=0,n[O>>2]=0;e:do if(n[f>>2]|0)for(d=0,m=0;;){if((d|0)==(m|0)?qLe(Re,f):(n[d>>2]=n[f>>2],n[M>>2]=(n[M>>2]|0)+4),f=f+4|0,!(n[f>>2]|0))break e;d=n[M>>2]|0,m=n[j>>2]|0}while(0);n[et>>2]=Xv(B)|0,n[Ze>>2]=br(Q)|0,jLe(c,s,et,Ze,Le,Re),uR(Re),tf(Le)}l=n[l>>2]|0}while((l|0)!=0)}E=at}function lR(s){return s=s|0,n[s+12>>2]|0}function SI(s){return s=s|0,n[s+12>>2]|0}function PI(s){return s=s|0,n[s+16>>2]|0}function HLe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;d=E,E=E+32|0,c=d,f=n[s>>2]|0,(n[s+8>>2]|0)-f>>2>>>0<l>>>0&&(k5(c,l,(n[s+4>>2]|0)-f>>2,s+8|0),F5(s,c),R5(c)),E=d}function cR(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0;if(B=E,E=E+32|0,c=B,f=s+4|0,d=((n[f>>2]|0)-(n[s>>2]|0)>>2)+1|0,m=Q5(s)|0,m>>>0<d>>>0)Vr(s);else{Q=n[s>>2]|0,M=(n[s+8>>2]|0)-Q|0,k=M>>1,k5(c,M>>2>>>0<m>>>1>>>0?k>>>0<d>>>0?d:k:m,(n[f>>2]|0)-Q>>2,s+8|0),m=c+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,F5(s,c),R5(c),E=B;return}}function xI(s){return s=s|0,n[s+8>>2]|0}function qLe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0;if(B=E,E=E+32|0,c=B,f=s+4|0,d=((n[f>>2]|0)-(n[s>>2]|0)>>2)+1|0,m=b5(s)|0,m>>>0<d>>>0)Vr(s);else{Q=n[s>>2]|0,M=(n[s+8>>2]|0)-Q|0,k=M>>1,lOe(c,M>>2>>>0<m>>>1>>>0?k>>>0<d>>>0?d:k:m,(n[f>>2]|0)-Q>>2,s+8|0),m=c+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,cOe(s,c),uOe(c),E=B;return}}function Xv(s){return s=s|0,n[s>>2]|0}function jLe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,GLe(s,l,c,f,d,m)}function uR(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-4-f|0)>>>2)<<2)),pt(c))}function tf(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-4-f|0)>>>2)<<2)),pt(c))}function GLe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,Q=0,k=0,M=0,O=0,j=0;B=E,E=E+48|0,O=B+40|0,Q=B+32|0,j=B+24|0,k=B+12|0,M=B,Xa(Q),s=ma(s)|0,n[j>>2]=n[l>>2],c=n[c>>2]|0,f=n[f>>2]|0,AR(k,d),WLe(M,m),n[O>>2]=n[j>>2],YLe(s,O,c,f,k,M),uR(M),tf(k),Za(Q),E=B}function AR(s,l){s=s|0,l=l|0;var c=0,f=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,c=l+4|0,f=(n[c>>2]|0)-(n[l>>2]|0)>>2,f|0&&(oOe(s,f),aOe(s,n[l>>2]|0,n[c>>2]|0,f))}function WLe(s,l){s=s|0,l=l|0;var c=0,f=0;n[s>>2]=0,n[s+4>>2]=0,n[s+8>>2]=0,c=l+4|0,f=(n[c>>2]|0)-(n[l>>2]|0)>>2,f|0&&(iOe(s,f),sOe(s,n[l>>2]|0,n[c>>2]|0,f))}function YLe(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,Q=0,k=0,M=0,O=0,j=0;B=E,E=E+32|0,O=B+28|0,j=B+24|0,Q=B+12|0,k=B,M=Ql(KLe()|0)|0,n[j>>2]=n[l>>2],n[O>>2]=n[j>>2],l=bg(O)|0,c=v5(c)|0,f=fR(f)|0,n[Q>>2]=n[d>>2],O=d+4|0,n[Q+4>>2]=n[O>>2],j=d+8|0,n[Q+8>>2]=n[j>>2],n[j>>2]=0,n[O>>2]=0,n[d>>2]=0,d=pR(Q)|0,n[k>>2]=n[m>>2],O=m+4|0,n[k+4>>2]=n[O>>2],j=m+8|0,n[k+8>>2]=n[j>>2],n[j>>2]=0,n[O>>2]=0,n[m>>2]=0,io(0,M|0,s|0,l|0,c|0,f|0,d|0,VLe(k)|0)|0,uR(k),tf(Q),E=B}function KLe(){var s=0;return o[7968]|0||(rOe(10708),s=7968,n[s>>2]=1,n[s+4>>2]=0),10708}function bg(s){return s=s|0,S5(s)|0}function v5(s){return s=s|0,D5(s)|0}function fR(s){return s=s|0,Vv(s)|0}function pR(s){return s=s|0,zLe(s)|0}function VLe(s){return s=s|0,JLe(s)|0}function JLe(s){s=s|0;var l=0,c=0,f=0;if(f=(n[s+4>>2]|0)-(n[s>>2]|0)|0,c=f>>2,f=za(f+4|0)|0,n[f>>2]=c,c|0){l=0;do n[f+4+(l<<2)>>2]=D5(n[(n[s>>2]|0)+(l<<2)>>2]|0)|0,l=l+1|0;while((l|0)!=(c|0))}return f|0}function D5(s){return s=s|0,s|0}function zLe(s){s=s|0;var l=0,c=0,f=0;if(f=(n[s+4>>2]|0)-(n[s>>2]|0)|0,c=f>>2,f=za(f+4|0)|0,n[f>>2]=c,c|0){l=0;do n[f+4+(l<<2)>>2]=S5((n[s>>2]|0)+(l<<2)|0)|0,l=l+1|0;while((l|0)!=(c|0))}return f|0}function S5(s){s=s|0;var l=0,c=0,f=0,d=0;return d=E,E=E+32|0,l=d+12|0,c=d,f=DF(P5()|0)|0,f?(SF(l,f),PF(c,l),FUe(s,c),s=xF(l)|0):s=XLe(s)|0,E=d,s|0}function P5(){var s=0;return o[7960]|0||(tOe(10664),Zt(25,10664,_|0)|0,s=7960,n[s>>2]=1,n[s+4>>2]=0),10664}function XLe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,Q=0;return c=E,E=E+16|0,d=c+4|0,B=c,f=za(8)|0,l=f,Q=Gt(4)|0,n[Q>>2]=n[s>>2],m=l+4|0,n[m>>2]=Q,s=Gt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],x5(s,m,d),n[f>>2]=s,E=c,l|0}function x5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Gt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1656,n[c+12>>2]=l,n[s+4>>2]=c}function ZLe(s){s=s|0,Zm(s),pt(s)}function $Le(s){s=s|0,s=n[s+12>>2]|0,s|0&&pt(s)}function eOe(s){s=s|0,pt(s)}function tOe(s){s=s|0,vp(s)}function rOe(s){s=s|0,kl(s,nOe()|0,5)}function nOe(){return 1676}function iOe(s,l){s=s|0,l=l|0;var c=0;if((b5(s)|0)>>>0<l>>>0&&Vr(s),l>>>0>1073741823)Rt();else{c=Gt(l<<2)|0,n[s+4>>2]=c,n[s>>2]=c,n[s+8>>2]=c+(l<<2);return}}function sOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,f=s+4|0,s=c-l|0,(s|0)>0&&(Cr(n[f>>2]|0,l|0,s|0)|0,n[f>>2]=(n[f>>2]|0)+(s>>>2<<2))}function b5(s){return s=s|0,1073741823}function oOe(s,l){s=s|0,l=l|0;var c=0;if((Q5(s)|0)>>>0<l>>>0&&Vr(s),l>>>0>1073741823)Rt();else{c=Gt(l<<2)|0,n[s+4>>2]=c,n[s>>2]=c,n[s+8>>2]=c+(l<<2);return}}function aOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,f=s+4|0,s=c-l|0,(s|0)>0&&(Cr(n[f>>2]|0,l|0,s|0)|0,n[f>>2]=(n[f>>2]|0)+(s>>>2<<2))}function Q5(s){return s=s|0,1073741823}function lOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>1073741823)Rt();else{d=Gt(l<<2)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<2)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<2)}function cOe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function uOe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-4-l|0)>>>2)<<2)),s=n[s>>2]|0,s|0&&pt(s)}function k5(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>1073741823)Rt();else{d=Gt(l<<2)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<2)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<2)}function F5(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function R5(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-4-l|0)>>>2)<<2)),s=n[s>>2]|0,s|0&&pt(s)}function AOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0,Ye=0,Le=0,Re=0;if(Re=E,E=E+32|0,O=Re+20|0,j=Re+12|0,M=Re+16|0,se=Re+4|0,Ye=Re,Le=Re+8|0,Q=I5()|0,m=n[Q>>2]|0,B=n[m>>2]|0,B|0)for(k=n[Q+8>>2]|0,Q=n[Q+4>>2]|0;Fc(O,B),fOe(s,O,Q,k),m=m+4|0,B=n[m>>2]|0,B;)k=k+1|0,Q=Q+1|0;if(m=w5()|0,B=n[m>>2]|0,B|0)do Fc(O,B),n[j>>2]=n[m+4>>2],pOe(l,O,j),m=m+8|0,B=n[m>>2]|0;while((B|0)!=0);if(m=n[(Km()|0)>>2]|0,m|0)do l=n[m+4>>2]|0,Fc(O,n[(Vm(l)|0)>>2]|0),n[j>>2]=oR(l)|0,hOe(c,O,j),m=n[m>>2]|0;while((m|0)!=0);if(Fc(M,0),m=aR()|0,n[O>>2]=n[M>>2],B5(O,m,d),m=n[(Km()|0)>>2]|0,m|0){s=O+4|0,l=O+8|0,c=O+8|0;do{if(k=n[m+4>>2]|0,Fc(j,n[(Vm(k)|0)>>2]|0),gOe(se,T5(k)|0),B=n[se>>2]|0,B|0){n[O>>2]=0,n[s>>2]=0,n[l>>2]=0;do Fc(Ye,n[(Vm(n[B+4>>2]|0)|0)>>2]|0),Q=n[s>>2]|0,Q>>>0<(n[c>>2]|0)>>>0?(n[Q>>2]=n[Ye>>2],n[s>>2]=(n[s>>2]|0)+4):cR(O,Ye),B=n[B>>2]|0;while((B|0)!=0);dOe(f,j,O),tf(O)}n[Le>>2]=n[j>>2],M=N5(k)|0,n[O>>2]=n[Le>>2],B5(O,M,d),n9(se),m=n[m>>2]|0}while((m|0)!=0)}E=Re}function fOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,xOe(s,l,c,f)}function pOe(s,l,c){s=s|0,l=l|0,c=c|0,POe(s,l,c)}function Vm(s){return s=s|0,s|0}function hOe(s,l,c){s=s|0,l=l|0,c=c|0,BOe(s,l,c)}function T5(s){return s=s|0,s+16|0}function gOe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;if(m=E,E=E+16|0,d=m+8|0,c=m,n[s>>2]=0,f=n[l>>2]|0,n[d>>2]=f,n[c>>2]=s,c=wOe(c)|0,f|0){if(f=Gt(12)|0,B=(L5(d)|0)+4|0,s=n[B+4>>2]|0,l=f+4|0,n[l>>2]=n[B>>2],n[l+4>>2]=s,l=n[n[d>>2]>>2]|0,n[d>>2]=l,!l)s=f;else for(l=f;s=Gt(12)|0,k=(L5(d)|0)+4|0,Q=n[k+4>>2]|0,B=s+4|0,n[B>>2]=n[k>>2],n[B+4>>2]=Q,n[l>>2]=s,B=n[n[d>>2]>>2]|0,n[d>>2]=B,B;)l=s;n[s>>2]=n[c>>2],n[c>>2]=f}E=m}function dOe(s,l,c){s=s|0,l=l|0,c=c|0,mOe(s,l,c)}function N5(s){return s=s|0,s+24|0}function mOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+32|0,B=f+24|0,d=f+16|0,Q=f+12|0,m=f,Xa(d),s=ma(s)|0,n[Q>>2]=n[l>>2],AR(m,c),n[B>>2]=n[Q>>2],yOe(s,B,m),tf(m),Za(d),E=f}function yOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=E,E=E+32|0,B=f+16|0,Q=f+12|0,d=f,m=Ql(EOe()|0)|0,n[Q>>2]=n[l>>2],n[B>>2]=n[Q>>2],l=bg(B)|0,n[d>>2]=n[c>>2],B=c+4|0,n[d+4>>2]=n[B>>2],Q=c+8|0,n[d+8>>2]=n[Q>>2],n[Q>>2]=0,n[B>>2]=0,n[c>>2]=0,no(0,m|0,s|0,l|0,pR(d)|0)|0,tf(d),E=f}function EOe(){var s=0;return o[7976]|0||(COe(10720),s=7976,n[s>>2]=1,n[s+4>>2]=0),10720}function COe(s){s=s|0,kl(s,IOe()|0,2)}function IOe(){return 1732}function wOe(s){return s=s|0,n[s>>2]|0}function L5(s){return s=s|0,n[s>>2]|0}function BOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=E,E=E+32|0,m=f+16|0,d=f+8|0,B=f,Xa(d),s=ma(s)|0,n[B>>2]=n[l>>2],c=n[c>>2]|0,n[m>>2]=n[B>>2],O5(s,m,c),Za(d),E=f}function O5(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=E,E=E+16|0,m=f+4|0,B=f,d=Ql(vOe()|0)|0,n[B>>2]=n[l>>2],n[m>>2]=n[B>>2],l=bg(m)|0,no(0,d|0,s|0,l|0,v5(c)|0)|0,E=f}function vOe(){var s=0;return o[7984]|0||(DOe(10732),s=7984,n[s>>2]=1,n[s+4>>2]=0),10732}function DOe(s){s=s|0,kl(s,SOe()|0,2)}function SOe(){return 1744}function POe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;f=E,E=E+32|0,m=f+16|0,d=f+8|0,B=f,Xa(d),s=ma(s)|0,n[B>>2]=n[l>>2],c=n[c>>2]|0,n[m>>2]=n[B>>2],O5(s,m,c),Za(d),E=f}function xOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0;d=E,E=E+32|0,B=d+16|0,m=d+8|0,Q=d,Xa(m),s=ma(s)|0,n[Q>>2]=n[l>>2],c=o[c>>0]|0,f=o[f>>0]|0,n[B>>2]=n[Q>>2],bOe(s,B,c,f),Za(m),E=d}function bOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0;d=E,E=E+16|0,B=d+4|0,Q=d,m=Ql(QOe()|0)|0,n[Q>>2]=n[l>>2],n[B>>2]=n[Q>>2],l=bg(B)|0,c=Jm(c)|0,yc(0,m|0,s|0,l|0,c|0,Jm(f)|0)|0,E=d}function QOe(){var s=0;return o[7992]|0||(FOe(10744),s=7992,n[s>>2]=1,n[s+4>>2]=0),10744}function Jm(s){return s=s|0,kOe(s)|0}function kOe(s){return s=s|0,s&255|0}function FOe(s){s=s|0,kl(s,ROe()|0,3)}function ROe(){return 1756}function TOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;switch(se=E,E=E+32|0,Q=se+8|0,k=se+4|0,M=se+20|0,O=se,FF(s,0),f=kUe(l)|0,n[Q>>2]=0,j=Q+4|0,n[j>>2]=0,n[Q+8>>2]=0,f<<24>>24){case 0:{o[M>>0]=0,NOe(k,c,M),Zv(s,k)|0,WA(k);break}case 8:{j=ER(l)|0,o[M>>0]=8,Fc(O,n[j+4>>2]|0),LOe(k,c,M,O,j+8|0),Zv(s,k)|0,WA(k);break}case 9:{if(m=ER(l)|0,l=n[m+4>>2]|0,l|0)for(B=Q+8|0,d=m+12|0;l=l+-1|0,Fc(k,n[d>>2]|0),f=n[j>>2]|0,f>>>0<(n[B>>2]|0)>>>0?(n[f>>2]=n[k>>2],n[j>>2]=(n[j>>2]|0)+4):cR(Q,k),l;)d=d+4|0;o[M>>0]=9,Fc(O,n[m+8>>2]|0),OOe(k,c,M,O,Q),Zv(s,k)|0,WA(k);break}default:j=ER(l)|0,o[M>>0]=f,Fc(O,n[j+4>>2]|0),MOe(k,c,M,O),Zv(s,k)|0,WA(k)}tf(Q),E=se}function NOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;f=E,E=E+16|0,d=f,Xa(d),l=ma(l)|0,XOe(s,l,o[c>>0]|0),Za(d),E=f}function Zv(s,l){s=s|0,l=l|0;var c=0;return c=n[s>>2]|0,c|0&&QA(c|0),n[s>>2]=n[l>>2],n[l>>2]=0,s|0}function LOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,Q=0,k=0;m=E,E=E+32|0,Q=m+16|0,B=m+8|0,k=m,Xa(B),l=ma(l)|0,c=o[c>>0]|0,n[k>>2]=n[f>>2],d=n[d>>2]|0,n[Q>>2]=n[k>>2],KOe(s,l,c,Q,d),Za(B),E=m}function OOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,Q=0,k=0,M=0;m=E,E=E+32|0,k=m+24|0,B=m+16|0,M=m+12|0,Q=m,Xa(B),l=ma(l)|0,c=o[c>>0]|0,n[M>>2]=n[f>>2],AR(Q,d),n[k>>2]=n[M>>2],jOe(s,l,c,k,Q),tf(Q),Za(B),E=m}function MOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0;d=E,E=E+32|0,B=d+16|0,m=d+8|0,Q=d,Xa(m),l=ma(l)|0,c=o[c>>0]|0,n[Q>>2]=n[f>>2],n[B>>2]=n[Q>>2],UOe(s,l,c,B),Za(m),E=d}function UOe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0,B=0,Q=0;d=E,E=E+16|0,m=d+4|0,Q=d,B=Ql(_Oe()|0)|0,c=Jm(c)|0,n[Q>>2]=n[f>>2],n[m>>2]=n[Q>>2],$v(s,no(0,B|0,l|0,c|0,bg(m)|0)|0),E=d}function _Oe(){var s=0;return o[8e3]|0||(HOe(10756),s=8e3,n[s>>2]=1,n[s+4>>2]=0),10756}function $v(s,l){s=s|0,l=l|0,FF(s,l)}function HOe(s){s=s|0,kl(s,qOe()|0,2)}function qOe(){return 1772}function jOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,Q=0,k=0,M=0;m=E,E=E+32|0,k=m+16|0,M=m+12|0,B=m,Q=Ql(GOe()|0)|0,c=Jm(c)|0,n[M>>2]=n[f>>2],n[k>>2]=n[M>>2],f=bg(k)|0,n[B>>2]=n[d>>2],k=d+4|0,n[B+4>>2]=n[k>>2],M=d+8|0,n[B+8>>2]=n[M>>2],n[M>>2]=0,n[k>>2]=0,n[d>>2]=0,$v(s,yc(0,Q|0,l|0,c|0,f|0,pR(B)|0)|0),tf(B),E=m}function GOe(){var s=0;return o[8008]|0||(WOe(10768),s=8008,n[s>>2]=1,n[s+4>>2]=0),10768}function WOe(s){s=s|0,kl(s,YOe()|0,3)}function YOe(){return 1784}function KOe(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,Q=0,k=0;m=E,E=E+16|0,Q=m+4|0,k=m,B=Ql(VOe()|0)|0,c=Jm(c)|0,n[k>>2]=n[f>>2],n[Q>>2]=n[k>>2],f=bg(Q)|0,$v(s,yc(0,B|0,l|0,c|0,f|0,fR(d)|0)|0),E=m}function VOe(){var s=0;return o[8016]|0||(JOe(10780),s=8016,n[s>>2]=1,n[s+4>>2]=0),10780}function JOe(s){s=s|0,kl(s,zOe()|0,3)}function zOe(){return 1800}function XOe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;f=Ql(ZOe()|0)|0,$v(s,Dn(0,f|0,l|0,Jm(c)|0)|0)}function ZOe(){var s=0;return o[8024]|0||($Oe(10792),s=8024,n[s>>2]=1,n[s+4>>2]=0),10792}function $Oe(s){s=s|0,kl(s,eMe()|0,1)}function eMe(){return 1816}function tMe(){rMe(),nMe(),iMe()}function rMe(){n[2702]=A7(65536)|0}function nMe(){vMe(10856)}function iMe(){sMe(10816)}function sMe(s){s=s|0,oMe(s,5044),aMe(s)|0}function oMe(s,l){s=s|0,l=l|0;var c=0;c=P5()|0,n[s>>2]=c,yMe(c,l),bp(n[s>>2]|0)}function aMe(s){s=s|0;var l=0;return l=n[s>>2]|0,Pg(l,lMe()|0),s|0}function lMe(){var s=0;return o[8032]|0||(M5(10820),Zt(64,10820,_|0)|0,s=8032,n[s>>2]=1,n[s+4>>2]=0),br(10820)|0||M5(10820),10820}function M5(s){s=s|0,AMe(s),xg(s,25)}function cMe(s){s=s|0,uMe(s+24|0)}function uMe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function AMe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,5,18,l,gMe()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function fMe(s,l){s=s|0,l=l|0,pMe(s,l)}function pMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;c=E,E=E+16|0,f=c,d=c+4|0,Dg(d,l),n[f>>2]=Sg(d,l)|0,hMe(s,f),E=c}function hMe(s,l){s=s|0,l=l|0,U5(s+4|0,n[l>>2]|0),o[s+8>>0]=1}function U5(s,l){s=s|0,l=l|0,n[s>>2]=l}function gMe(){return 1824}function dMe(s){return s=s|0,mMe(s)|0}function mMe(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,Q=0;return c=E,E=E+16|0,d=c+4|0,B=c,f=za(8)|0,l=f,Q=Gt(4)|0,Dg(d,s),U5(Q,Sg(d,s)|0),m=l+4|0,n[m>>2]=Q,s=Gt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],x5(s,m,d),n[f>>2]=s,E=c,l|0}function za(s){s=s|0;var l=0,c=0;return s=s+7&-8,s>>>0<=32768&&(l=n[2701]|0,s>>>0<=(65536-l|0)>>>0)?(c=(n[2702]|0)+l|0,n[2701]=l+s,s=c):(s=A7(s+8|0)|0,n[s>>2]=n[2703],n[2703]=s,s=s+8|0),s|0}function yMe(s,l){s=s|0,l=l|0,n[s>>2]=EMe()|0,n[s+4>>2]=CMe()|0,n[s+12>>2]=l,n[s+8>>2]=IMe()|0,n[s+32>>2]=9}function EMe(){return 11744}function CMe(){return 1832}function IMe(){return zv()|0}function wMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(xp(f,896)|0)==512?c|0&&(BMe(c),pt(c)):l|0&&pt(l)}function BMe(s){s=s|0,s=n[s+4>>2]|0,s|0&&Qp(s)}function vMe(s){s=s|0,DMe(s,5052),SMe(s)|0,PMe(s,5058,26)|0,xMe(s,5069,1)|0,bMe(s,5077,10)|0,QMe(s,5087,19)|0,kMe(s,5094,27)|0}function DMe(s,l){s=s|0,l=l|0;var c=0;c=BUe()|0,n[s>>2]=c,vUe(c,l),bp(n[s>>2]|0)}function SMe(s){s=s|0;var l=0;return l=n[s>>2]|0,Pg(l,cUe()|0),s|0}function PMe(s,l,c){return s=s|0,l=l|0,c=c|0,W4e(s,cn(l)|0,c,0),s|0}function xMe(s,l,c){return s=s|0,l=l|0,c=c|0,Q4e(s,cn(l)|0,c,0),s|0}function bMe(s,l,c){return s=s|0,l=l|0,c=c|0,l4e(s,cn(l)|0,c,0),s|0}function QMe(s,l,c){return s=s|0,l=l|0,c=c|0,KMe(s,cn(l)|0,c,0),s|0}function _5(s,l){s=s|0,l=l|0;var c=0,f=0;e:for(;;){for(c=n[2703]|0;;){if((c|0)==(l|0))break e;if(f=n[c>>2]|0,n[2703]=f,!c)c=f;else break}pt(c)}n[2701]=s}function kMe(s,l,c){return s=s|0,l=l|0,c=c|0,FMe(s,cn(l)|0,c,0),s|0}function FMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=hR()|0,s=RMe(c)|0,un(m,l,d,s,TMe(c,f)|0,f)}function hR(){var s=0,l=0;if(o[8040]|0||(q5(10860),Zt(65,10860,_|0)|0,l=8040,n[l>>2]=1,n[l+4>>2]=0),!(br(10860)|0)){s=10860,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));q5(10860)}return 10860}function RMe(s){return s=s|0,s|0}function TMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return Q=E,E=E+16|0,d=Q,m=Q+4|0,n[d>>2]=s,k=hR()|0,B=k+24|0,l=Ar(l,4)|0,n[m>>2]=l,c=k+28|0,f=n[c>>2]|0,f>>>0<(n[k+32>>2]|0)>>>0?(H5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(NMe(B,d,m),l=n[c>>2]|0),E=Q,(l-(n[B>>2]|0)>>3)+-1|0}function H5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function NMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;if(Q=E,E=E+32|0,d=Q,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=LMe(s)|0,f>>>0<B>>>0)Vr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,M=O>>2,OMe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-k>>3,s+8|0),B=d+8|0,H5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,MMe(s,d),UMe(d),E=Q;return}}function LMe(s){return s=s|0,536870911}function OMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Gt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function MMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function UMe(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&pt(s)}function q5(s){s=s|0,qMe(s)}function _Me(s){s=s|0,HMe(s+24|0)}function HMe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function qMe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,1,11,l,jMe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function jMe(){return 1840}function GMe(s,l,c){s=s|0,l=l|0,c=c|0,YMe(n[(WMe(s)|0)>>2]|0,l,c)}function WMe(s){return s=s|0,(n[(hR()|0)+24>>2]|0)+(s<<3)|0}function YMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;f=E,E=E+16|0,m=f+1|0,d=f,Dg(m,l),l=Sg(m,l)|0,Dg(d,c),c=Sg(d,c)|0,nf[s&31](l,c),E=f}function KMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=gR()|0,s=VMe(c)|0,un(m,l,d,s,JMe(c,f)|0,f)}function gR(){var s=0,l=0;if(o[8048]|0||(G5(10896),Zt(66,10896,_|0)|0,l=8048,n[l>>2]=1,n[l+4>>2]=0),!(br(10896)|0)){s=10896,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));G5(10896)}return 10896}function VMe(s){return s=s|0,s|0}function JMe(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return Q=E,E=E+16|0,d=Q,m=Q+4|0,n[d>>2]=s,k=gR()|0,B=k+24|0,l=Ar(l,4)|0,n[m>>2]=l,c=k+28|0,f=n[c>>2]|0,f>>>0<(n[k+32>>2]|0)>>>0?(j5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(zMe(B,d,m),l=n[c>>2]|0),E=Q,(l-(n[B>>2]|0)>>3)+-1|0}function j5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function zMe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;if(Q=E,E=E+32|0,d=Q,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=XMe(s)|0,f>>>0<B>>>0)Vr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,M=O>>2,ZMe(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-k>>3,s+8|0),B=d+8|0,j5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,$Me(s,d),e4e(d),E=Q;return}}function XMe(s){return s=s|0,536870911}function ZMe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Gt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function $Me(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function e4e(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&pt(s)}function G5(s){s=s|0,n4e(s)}function t4e(s){s=s|0,r4e(s+24|0)}function r4e(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function n4e(s){s=s|0;var l=0;l=Gr()|0,Wr(s,1,11,l,i4e()|0,1),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function i4e(){return 1852}function s4e(s,l){return s=s|0,l=l|0,a4e(n[(o4e(s)|0)>>2]|0,l)|0}function o4e(s){return s=s|0,(n[(gR()|0)+24>>2]|0)+(s<<3)|0}function a4e(s,l){s=s|0,l=l|0;var c=0,f=0;return c=E,E=E+16|0,f=c,Dg(f,l),l=Sg(f,l)|0,l=Vv(Rg[s&31](l)|0)|0,E=c,l|0}function l4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=dR()|0,s=c4e(c)|0,un(m,l,d,s,u4e(c,f)|0,f)}function dR(){var s=0,l=0;if(o[8056]|0||(Y5(10932),Zt(67,10932,_|0)|0,l=8056,n[l>>2]=1,n[l+4>>2]=0),!(br(10932)|0)){s=10932,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));Y5(10932)}return 10932}function c4e(s){return s=s|0,s|0}function u4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return Q=E,E=E+16|0,d=Q,m=Q+4|0,n[d>>2]=s,k=dR()|0,B=k+24|0,l=Ar(l,4)|0,n[m>>2]=l,c=k+28|0,f=n[c>>2]|0,f>>>0<(n[k+32>>2]|0)>>>0?(W5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(A4e(B,d,m),l=n[c>>2]|0),E=Q,(l-(n[B>>2]|0)>>3)+-1|0}function W5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function A4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;if(Q=E,E=E+32|0,d=Q,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=f4e(s)|0,f>>>0<B>>>0)Vr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,M=O>>2,p4e(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-k>>3,s+8|0),B=d+8|0,W5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,h4e(s,d),g4e(d),E=Q;return}}function f4e(s){return s=s|0,536870911}function p4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Gt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function h4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function g4e(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&pt(s)}function Y5(s){s=s|0,y4e(s)}function d4e(s){s=s|0,m4e(s+24|0)}function m4e(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function y4e(s){s=s|0;var l=0;l=Gr()|0,Wr(s,1,7,l,E4e()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function E4e(){return 1860}function C4e(s,l,c){return s=s|0,l=l|0,c=c|0,w4e(n[(I4e(s)|0)>>2]|0,l,c)|0}function I4e(s){return s=s|0,(n[(dR()|0)+24>>2]|0)+(s<<3)|0}function w4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0;return f=E,E=E+32|0,B=f+12|0,m=f+8|0,Q=f,k=f+16|0,d=f+4|0,B4e(k,l),v4e(Q,k,l),Dp(d,c),c=Sp(d,c)|0,n[B>>2]=n[Q>>2],FI[s&15](m,B,c),c=D4e(m)|0,WA(m),Pp(d),E=f,c|0}function B4e(s,l){s=s|0,l=l|0}function v4e(s,l,c){s=s|0,l=l|0,c=c|0,S4e(s,c)}function D4e(s){return s=s|0,ma(s)|0}function S4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0;d=E,E=E+16|0,c=d,f=l,f&1?(P4e(c,0),$n(f|0,c|0)|0,x4e(s,c),b4e(c)):n[s>>2]=n[l>>2],E=d}function P4e(s,l){s=s|0,l=l|0,JG(s,l),n[s+4>>2]=0,o[s+8>>0]=0}function x4e(s,l){s=s|0,l=l|0,n[s>>2]=n[l+4>>2]}function b4e(s){s=s|0,o[s+8>>0]=0}function Q4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=mR()|0,s=k4e(c)|0,un(m,l,d,s,F4e(c,f)|0,f)}function mR(){var s=0,l=0;if(o[8064]|0||(V5(10968),Zt(68,10968,_|0)|0,l=8064,n[l>>2]=1,n[l+4>>2]=0),!(br(10968)|0)){s=10968,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));V5(10968)}return 10968}function k4e(s){return s=s|0,s|0}function F4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return Q=E,E=E+16|0,d=Q,m=Q+4|0,n[d>>2]=s,k=mR()|0,B=k+24|0,l=Ar(l,4)|0,n[m>>2]=l,c=k+28|0,f=n[c>>2]|0,f>>>0<(n[k+32>>2]|0)>>>0?(K5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(R4e(B,d,m),l=n[c>>2]|0),E=Q,(l-(n[B>>2]|0)>>3)+-1|0}function K5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function R4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;if(Q=E,E=E+32|0,d=Q,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=T4e(s)|0,f>>>0<B>>>0)Vr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,M=O>>2,N4e(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-k>>3,s+8|0),B=d+8|0,K5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,L4e(s,d),O4e(d),E=Q;return}}function T4e(s){return s=s|0,536870911}function N4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Gt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function L4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function O4e(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&pt(s)}function V5(s){s=s|0,_4e(s)}function M4e(s){s=s|0,U4e(s+24|0)}function U4e(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function _4e(s){s=s|0;var l=0;l=Gr()|0,Wr(s,1,1,l,H4e()|0,5),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function H4e(){return 1872}function q4e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,G4e(n[(j4e(s)|0)>>2]|0,l,c,f,d,m)}function j4e(s){return s=s|0,(n[(mR()|0)+24>>2]|0)+(s<<3)|0}function G4e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,Q=0,k=0,M=0,O=0,j=0;B=E,E=E+32|0,Q=B+16|0,k=B+12|0,M=B+8|0,O=B+4|0,j=B,Dp(Q,l),l=Sp(Q,l)|0,Dp(k,c),c=Sp(k,c)|0,Dp(M,f),f=Sp(M,f)|0,Dp(O,d),d=Sp(O,d)|0,Dp(j,m),m=Sp(j,m)|0,d7[s&1](l,c,f,d,m),Pp(j),Pp(O),Pp(M),Pp(k),Pp(Q),E=B}function W4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;m=n[s>>2]|0,d=yR()|0,s=Y4e(c)|0,un(m,l,d,s,K4e(c,f)|0,f)}function yR(){var s=0,l=0;if(o[8072]|0||(z5(11004),Zt(69,11004,_|0)|0,l=8072,n[l>>2]=1,n[l+4>>2]=0),!(br(11004)|0)){s=11004,l=s+36|0;do n[s>>2]=0,s=s+4|0;while((s|0)<(l|0));z5(11004)}return 11004}function Y4e(s){return s=s|0,s|0}function K4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0,Q=0,k=0;return Q=E,E=E+16|0,d=Q,m=Q+4|0,n[d>>2]=s,k=yR()|0,B=k+24|0,l=Ar(l,4)|0,n[m>>2]=l,c=k+28|0,f=n[c>>2]|0,f>>>0<(n[k+32>>2]|0)>>>0?(J5(f,s,l),l=(n[c>>2]|0)+8|0,n[c>>2]=l):(V4e(B,d,m),l=n[c>>2]|0),E=Q,(l-(n[B>>2]|0)>>3)+-1|0}function J5(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,n[s+4>>2]=c}function V4e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0;if(Q=E,E=E+32|0,d=Q,m=s+4|0,B=((n[m>>2]|0)-(n[s>>2]|0)>>3)+1|0,f=J4e(s)|0,f>>>0<B>>>0)Vr(s);else{k=n[s>>2]|0,O=(n[s+8>>2]|0)-k|0,M=O>>2,z4e(d,O>>3>>>0<f>>>1>>>0?M>>>0<B>>>0?B:M:f,(n[m>>2]|0)-k>>3,s+8|0),B=d+8|0,J5(n[B>>2]|0,n[l>>2]|0,n[c>>2]|0),n[B>>2]=(n[B>>2]|0)+8,X4e(s,d),Z4e(d),E=Q;return}}function J4e(s){return s=s|0,536870911}function z4e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0;n[s+12>>2]=0,n[s+16>>2]=f;do if(l)if(l>>>0>536870911)Rt();else{d=Gt(l<<3)|0;break}else d=0;while(0);n[s>>2]=d,f=d+(c<<3)|0,n[s+8>>2]=f,n[s+4>>2]=f,n[s+12>>2]=d+(l<<3)}function X4e(s,l){s=s|0,l=l|0;var c=0,f=0,d=0,m=0,B=0;f=n[s>>2]|0,B=s+4|0,m=l+4|0,d=(n[B>>2]|0)-f|0,c=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=c,(d|0)>0?(Cr(c|0,f|0,d|0)|0,f=m,c=n[m>>2]|0):f=m,m=n[s>>2]|0,n[s>>2]=c,n[f>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=s+8|0,B=l+12|0,s=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=s,n[l>>2]=n[f>>2]}function Z4e(s){s=s|0;var l=0,c=0,f=0;l=n[s+4>>2]|0,c=s+8|0,f=n[c>>2]|0,(f|0)!=(l|0)&&(n[c>>2]=f+(~((f+-8-l|0)>>>3)<<3)),s=n[s>>2]|0,s|0&&pt(s)}function z5(s){s=s|0,tUe(s)}function $4e(s){s=s|0,eUe(s+24|0)}function eUe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function tUe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,1,12,l,rUe()|0,2),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function rUe(){return 1896}function nUe(s,l,c){s=s|0,l=l|0,c=c|0,sUe(n[(iUe(s)|0)>>2]|0,l,c)}function iUe(s){return s=s|0,(n[(yR()|0)+24>>2]|0)+(s<<3)|0}function sUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;f=E,E=E+16|0,m=f+4|0,d=f,oUe(m,l),l=aUe(m,l)|0,Dp(d,c),c=Sp(d,c)|0,nf[s&31](l,c),Pp(d),E=f}function oUe(s,l){s=s|0,l=l|0}function aUe(s,l){return s=s|0,l=l|0,lUe(l)|0}function lUe(s){return s=s|0,s|0}function cUe(){var s=0;return o[8080]|0||(X5(11040),Zt(70,11040,_|0)|0,s=8080,n[s>>2]=1,n[s+4>>2]=0),br(11040)|0||X5(11040),11040}function X5(s){s=s|0,fUe(s),xg(s,71)}function uUe(s){s=s|0,AUe(s+24|0)}function AUe(s){s=s|0;var l=0,c=0,f=0;c=n[s>>2]|0,f=c,c|0&&(s=s+4|0,l=n[s>>2]|0,(l|0)!=(c|0)&&(n[s>>2]=l+(~((l+-8-f|0)>>>3)<<3)),pt(c))}function fUe(s){s=s|0;var l=0;l=Gr()|0,Wr(s,5,7,l,dUe()|0,0),n[s+24>>2]=0,n[s+28>>2]=0,n[s+32>>2]=0}function pUe(s){s=s|0,hUe(s)}function hUe(s){s=s|0,gUe(s)}function gUe(s){s=s|0,o[s+8>>0]=1}function dUe(){return 1936}function mUe(){return yUe()|0}function yUe(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0;return l=E,E=E+16|0,d=l+4|0,B=l,c=za(8)|0,s=c,m=s+4|0,n[m>>2]=Gt(1)|0,f=Gt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],EUe(f,m,d),n[c>>2]=f,E=l,s|0}function EUe(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]=l,c=Gt(16)|0,n[c+4>>2]=0,n[c+8>>2]=0,n[c>>2]=1916,n[c+12>>2]=l,n[s+4>>2]=c}function CUe(s){s=s|0,Zm(s),pt(s)}function IUe(s){s=s|0,s=n[s+12>>2]|0,s|0&&pt(s)}function wUe(s){s=s|0,pt(s)}function BUe(){var s=0;return o[8088]|0||(QUe(11076),Zt(25,11076,_|0)|0,s=8088,n[s>>2]=1,n[s+4>>2]=0),11076}function vUe(s,l){s=s|0,l=l|0,n[s>>2]=DUe()|0,n[s+4>>2]=SUe()|0,n[s+12>>2]=l,n[s+8>>2]=PUe()|0,n[s+32>>2]=10}function DUe(){return 11745}function SUe(){return 1940}function PUe(){return Jv()|0}function xUe(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,(xp(f,896)|0)==512?c|0&&(bUe(c),pt(c)):l|0&&pt(l)}function bUe(s){s=s|0,s=n[s+4>>2]|0,s|0&&Qp(s)}function QUe(s){s=s|0,vp(s)}function Fc(s,l){s=s|0,l=l|0,n[s>>2]=l}function ER(s){return s=s|0,n[s>>2]|0}function kUe(s){return s=s|0,o[n[s>>2]>>0]|0}function FUe(s,l){s=s|0,l=l|0;var c=0,f=0;c=E,E=E+16|0,f=c,n[f>>2]=n[s>>2],RUe(l,f)|0,E=c}function RUe(s,l){s=s|0,l=l|0;var c=0;return c=TUe(n[s>>2]|0,l)|0,l=s+4|0,n[(n[l>>2]|0)+8>>2]=c,n[(n[l>>2]|0)+8>>2]|0}function TUe(s,l){s=s|0,l=l|0;var c=0,f=0;return c=E,E=E+16|0,f=c,Xa(f),s=ma(s)|0,l=NUe(s,n[l>>2]|0)|0,Za(f),E=c,l|0}function Xa(s){s=s|0,n[s>>2]=n[2701],n[s+4>>2]=n[2703]}function NUe(s,l){s=s|0,l=l|0;var c=0;return c=Ql(LUe()|0)|0,Dn(0,c|0,s|0,fR(l)|0)|0}function Za(s){s=s|0,_5(n[s>>2]|0,n[s+4>>2]|0)}function LUe(){var s=0;return o[8096]|0||(OUe(11120),s=8096,n[s>>2]=1,n[s+4>>2]=0),11120}function OUe(s){s=s|0,kl(s,MUe()|0,1)}function MUe(){return 1948}function UUe(){_Ue()}function _Ue(){var s=0,l=0,c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0,Ye=0,Le=0,Re=0;if(Le=E,E=E+16|0,O=Le+4|0,j=Le,Fi(65536,10804,n[2702]|0,10812),c=I5()|0,l=n[c>>2]|0,s=n[l>>2]|0,s|0)for(f=n[c+8>>2]|0,c=n[c+4>>2]|0;gc(s|0,u[c>>0]|0|0,o[f>>0]|0),l=l+4|0,s=n[l>>2]|0,s;)f=f+1|0,c=c+1|0;if(s=w5()|0,l=n[s>>2]|0,l|0)do du(l|0,n[s+4>>2]|0),s=s+8|0,l=n[s>>2]|0;while((l|0)!=0);du(HUe()|0,5167),M=Km()|0,s=n[M>>2]|0;e:do if(s|0){do qUe(n[s+4>>2]|0),s=n[s>>2]|0;while((s|0)!=0);if(s=n[M>>2]|0,s|0){k=M;do{for(;d=s,s=n[s>>2]|0,d=n[d+4>>2]|0,!!(jUe(d)|0);)if(n[j>>2]=k,n[O>>2]=n[j>>2],GUe(M,O)|0,!s)break e;if(WUe(d),k=n[k>>2]|0,l=Z5(d)|0,m=_i()|0,B=E,E=E+((1*(l<<2)|0)+15&-16)|0,Q=E,E=E+((1*(l<<2)|0)+15&-16)|0,l=n[(T5(d)|0)>>2]|0,l|0)for(c=B,f=Q;n[c>>2]=n[(Vm(n[l+4>>2]|0)|0)>>2],n[f>>2]=n[l+8>>2],l=n[l>>2]|0,l;)c=c+4|0,f=f+4|0;Re=Vm(d)|0,l=YUe(d)|0,c=Z5(d)|0,f=KUe(d)|0,mu(Re|0,l|0,B|0,Q|0,c|0,f|0,oR(d)|0),Ui(m|0)}while((s|0)!=0)}}while(0);if(s=n[(aR()|0)>>2]|0,s|0)do Re=s+4|0,M=lR(Re)|0,d=xI(M)|0,m=SI(M)|0,B=(PI(M)|0)+1|0,Q=eD(M)|0,k=$5(Re)|0,M=br(M)|0,O=Xv(Re)|0,j=CR(Re)|0,wl(0,d|0,m|0,B|0,Q|0,k|0,M|0,O|0,j|0,IR(Re)|0),s=n[s>>2]|0;while((s|0)!=0);s=n[(Km()|0)>>2]|0;e:do if(s|0){t:for(;;){if(l=n[s+4>>2]|0,l|0&&(se=n[(Vm(l)|0)>>2]|0,Ye=n[(N5(l)|0)>>2]|0,Ye|0)){c=Ye;do{l=c+4|0,f=lR(l)|0;r:do if(f|0)switch(br(f)|0){case 0:break t;case 4:case 3:case 2:{Q=xI(f)|0,k=SI(f)|0,M=(PI(f)|0)+1|0,O=eD(f)|0,j=br(f)|0,Re=Xv(l)|0,wl(se|0,Q|0,k|0,M|0,O|0,0,j|0,Re|0,CR(l)|0,IR(l)|0);break r}case 1:{B=xI(f)|0,Q=SI(f)|0,k=(PI(f)|0)+1|0,M=eD(f)|0,O=$5(l)|0,j=br(f)|0,Re=Xv(l)|0,wl(se|0,B|0,Q|0,k|0,M|0,O|0,j|0,Re|0,CR(l)|0,IR(l)|0);break r}case 5:{M=xI(f)|0,O=SI(f)|0,j=(PI(f)|0)+1|0,Re=eD(f)|0,wl(se|0,M|0,O|0,j|0,Re|0,VUe(f)|0,br(f)|0,0,0,0);break r}default:break r}while(0);c=n[c>>2]|0}while((c|0)!=0)}if(s=n[s>>2]|0,!s)break e}Rt()}while(0);Ce(),E=Le}function HUe(){return 11703}function qUe(s){s=s|0,o[s+40>>0]=0}function jUe(s){return s=s|0,(o[s+40>>0]|0)!=0|0}function GUe(s,l){return s=s|0,l=l|0,l=JUe(l)|0,s=n[l>>2]|0,n[l>>2]=n[s>>2],pt(s),n[l>>2]|0}function WUe(s){s=s|0,o[s+40>>0]=1}function Z5(s){return s=s|0,n[s+20>>2]|0}function YUe(s){return s=s|0,n[s+8>>2]|0}function KUe(s){return s=s|0,n[s+32>>2]|0}function eD(s){return s=s|0,n[s+4>>2]|0}function $5(s){return s=s|0,n[s+4>>2]|0}function CR(s){return s=s|0,n[s+8>>2]|0}function IR(s){return s=s|0,n[s+16>>2]|0}function VUe(s){return s=s|0,n[s+20>>2]|0}function JUe(s){return s=s|0,n[s>>2]|0}function tD(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0,Ye=0,Le=0,Re=0,et=0,Ze=0,at=0,He=0,Ge=0,Tt=0;Tt=E,E=E+16|0,se=Tt;do if(s>>>0<245){if(M=s>>>0<11?16:s+11&-8,s=M>>>3,j=n[2783]|0,c=j>>>s,c&3|0)return l=(c&1^1)+s|0,s=11172+(l<<1<<2)|0,c=s+8|0,f=n[c>>2]|0,d=f+8|0,m=n[d>>2]|0,(s|0)==(m|0)?n[2783]=j&~(1<<l):(n[m+12>>2]=s,n[c>>2]=m),Ge=l<<3,n[f+4>>2]=Ge|3,Ge=f+Ge+4|0,n[Ge>>2]=n[Ge>>2]|1,Ge=d,E=Tt,Ge|0;if(O=n[2785]|0,M>>>0>O>>>0){if(c|0)return l=2<<s,l=c<<s&(l|0-l),l=(l&0-l)+-1|0,B=l>>>12&16,l=l>>>B,c=l>>>5&8,l=l>>>c,d=l>>>2&4,l=l>>>d,s=l>>>1&2,l=l>>>s,f=l>>>1&1,f=(c|B|d|s|f)+(l>>>f)|0,l=11172+(f<<1<<2)|0,s=l+8|0,d=n[s>>2]|0,B=d+8|0,c=n[B>>2]|0,(l|0)==(c|0)?(s=j&~(1<<f),n[2783]=s):(n[c+12>>2]=l,n[s>>2]=c,s=j),m=(f<<3)-M|0,n[d+4>>2]=M|3,f=d+M|0,n[f+4>>2]=m|1,n[f+m>>2]=m,O|0&&(d=n[2788]|0,l=O>>>3,c=11172+(l<<1<<2)|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=d,n[l+12>>2]=d,n[d+8>>2]=l,n[d+12>>2]=c),n[2785]=m,n[2788]=f,Ge=B,E=Tt,Ge|0;if(Q=n[2784]|0,Q){if(c=(Q&0-Q)+-1|0,B=c>>>12&16,c=c>>>B,m=c>>>5&8,c=c>>>m,k=c>>>2&4,c=c>>>k,f=c>>>1&2,c=c>>>f,s=c>>>1&1,s=n[11436+((m|B|k|f|s)+(c>>>s)<<2)>>2]|0,c=(n[s+4>>2]&-8)-M|0,f=n[s+16+(((n[s+16>>2]|0)==0&1)<<2)>>2]|0,!f)k=s,m=c;else{do B=(n[f+4>>2]&-8)-M|0,k=B>>>0<c>>>0,c=k?B:c,s=k?f:s,f=n[f+16+(((n[f+16>>2]|0)==0&1)<<2)>>2]|0;while((f|0)!=0);k=s,m=c}if(B=k+M|0,k>>>0<B>>>0){d=n[k+24>>2]|0,l=n[k+12>>2]|0;do if((l|0)==(k|0)){if(s=k+20|0,l=n[s>>2]|0,!l&&(s=k+16|0,l=n[s>>2]|0,!l)){c=0;break}for(;;){if(c=l+20|0,f=n[c>>2]|0,f|0){l=f,s=c;continue}if(c=l+16|0,f=n[c>>2]|0,f)l=f,s=c;else break}n[s>>2]=0,c=l}else c=n[k+8>>2]|0,n[c+12>>2]=l,n[l+8>>2]=c,c=l;while(0);do if(d|0){if(l=n[k+28>>2]|0,s=11436+(l<<2)|0,(k|0)==(n[s>>2]|0)){if(n[s>>2]=c,!c){n[2784]=Q&~(1<<l);break}}else if(n[d+16+(((n[d+16>>2]|0)!=(k|0)&1)<<2)>>2]=c,!c)break;n[c+24>>2]=d,l=n[k+16>>2]|0,l|0&&(n[c+16>>2]=l,n[l+24>>2]=c),l=n[k+20>>2]|0,l|0&&(n[c+20>>2]=l,n[l+24>>2]=c)}while(0);return m>>>0<16?(Ge=m+M|0,n[k+4>>2]=Ge|3,Ge=k+Ge+4|0,n[Ge>>2]=n[Ge>>2]|1):(n[k+4>>2]=M|3,n[B+4>>2]=m|1,n[B+m>>2]=m,O|0&&(f=n[2788]|0,l=O>>>3,c=11172+(l<<1<<2)|0,l=1<<l,j&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=j|l,l=c,s=c+8|0),n[s>>2]=f,n[l+12>>2]=f,n[f+8>>2]=l,n[f+12>>2]=c),n[2785]=m,n[2788]=B),Ge=k+8|0,E=Tt,Ge|0}else j=M}else j=M}else j=M}else if(s>>>0<=4294967231)if(s=s+11|0,M=s&-8,k=n[2784]|0,k){f=0-M|0,s=s>>>8,s?M>>>0>16777215?Q=31:(j=(s+1048320|0)>>>16&8,He=s<<j,O=(He+520192|0)>>>16&4,He=He<<O,Q=(He+245760|0)>>>16&2,Q=14-(O|j|Q)+(He<<Q>>>15)|0,Q=M>>>(Q+7|0)&1|Q<<1):Q=0,c=n[11436+(Q<<2)>>2]|0;e:do if(!c)c=0,s=0,He=57;else for(s=0,B=M<<((Q|0)==31?0:25-(Q>>>1)|0),m=0;;){if(d=(n[c+4>>2]&-8)-M|0,d>>>0<f>>>0)if(d)s=c,f=d;else{s=c,f=0,d=c,He=61;break e}if(d=n[c+20>>2]|0,c=n[c+16+(B>>>31<<2)>>2]|0,m=(d|0)==0|(d|0)==(c|0)?m:d,d=(c|0)==0,d){c=m,He=57;break}else B=B<<((d^1)&1)}while(0);if((He|0)==57){if((c|0)==0&(s|0)==0){if(s=2<<Q,s=k&(s|0-s),!s){j=M;break}j=(s&0-s)+-1|0,B=j>>>12&16,j=j>>>B,m=j>>>5&8,j=j>>>m,Q=j>>>2&4,j=j>>>Q,O=j>>>1&2,j=j>>>O,c=j>>>1&1,s=0,c=n[11436+((m|B|Q|O|c)+(j>>>c)<<2)>>2]|0}c?(d=c,He=61):(Q=s,B=f)}if((He|0)==61)for(;;)if(He=0,c=(n[d+4>>2]&-8)-M|0,j=c>>>0<f>>>0,c=j?c:f,s=j?d:s,d=n[d+16+(((n[d+16>>2]|0)==0&1)<<2)>>2]|0,d)f=c,He=61;else{Q=s,B=c;break}if((Q|0)!=0&&B>>>0<((n[2785]|0)-M|0)>>>0){if(m=Q+M|0,Q>>>0>=m>>>0)return Ge=0,E=Tt,Ge|0;d=n[Q+24>>2]|0,l=n[Q+12>>2]|0;do if((l|0)==(Q|0)){if(s=Q+20|0,l=n[s>>2]|0,!l&&(s=Q+16|0,l=n[s>>2]|0,!l)){l=0;break}for(;;){if(c=l+20|0,f=n[c>>2]|0,f|0){l=f,s=c;continue}if(c=l+16|0,f=n[c>>2]|0,f)l=f,s=c;else break}n[s>>2]=0}else Ge=n[Q+8>>2]|0,n[Ge+12>>2]=l,n[l+8>>2]=Ge;while(0);do if(d){if(s=n[Q+28>>2]|0,c=11436+(s<<2)|0,(Q|0)==(n[c>>2]|0)){if(n[c>>2]=l,!l){f=k&~(1<<s),n[2784]=f;break}}else if(n[d+16+(((n[d+16>>2]|0)!=(Q|0)&1)<<2)>>2]=l,!l){f=k;break}n[l+24>>2]=d,s=n[Q+16>>2]|0,s|0&&(n[l+16>>2]=s,n[s+24>>2]=l),s=n[Q+20>>2]|0,s&&(n[l+20>>2]=s,n[s+24>>2]=l),f=k}else f=k;while(0);do if(B>>>0>=16){if(n[Q+4>>2]=M|3,n[m+4>>2]=B|1,n[m+B>>2]=B,l=B>>>3,B>>>0<256){c=11172+(l<<1<<2)|0,s=n[2783]|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=m,n[l+12>>2]=m,n[m+8>>2]=l,n[m+12>>2]=c;break}if(l=B>>>8,l?B>>>0>16777215?l=31:(He=(l+1048320|0)>>>16&8,Ge=l<<He,at=(Ge+520192|0)>>>16&4,Ge=Ge<<at,l=(Ge+245760|0)>>>16&2,l=14-(at|He|l)+(Ge<<l>>>15)|0,l=B>>>(l+7|0)&1|l<<1):l=0,c=11436+(l<<2)|0,n[m+28>>2]=l,s=m+16|0,n[s+4>>2]=0,n[s>>2]=0,s=1<<l,!(f&s)){n[2784]=f|s,n[c>>2]=m,n[m+24>>2]=c,n[m+12>>2]=m,n[m+8>>2]=m;break}for(s=B<<((l|0)==31?0:25-(l>>>1)|0),c=n[c>>2]|0;;){if((n[c+4>>2]&-8|0)==(B|0)){He=97;break}if(f=c+16+(s>>>31<<2)|0,l=n[f>>2]|0,l)s=s<<1,c=l;else{He=96;break}}if((He|0)==96){n[f>>2]=m,n[m+24>>2]=c,n[m+12>>2]=m,n[m+8>>2]=m;break}else if((He|0)==97){He=c+8|0,Ge=n[He>>2]|0,n[Ge+12>>2]=m,n[He>>2]=m,n[m+8>>2]=Ge,n[m+12>>2]=c,n[m+24>>2]=0;break}}else Ge=B+M|0,n[Q+4>>2]=Ge|3,Ge=Q+Ge+4|0,n[Ge>>2]=n[Ge>>2]|1;while(0);return Ge=Q+8|0,E=Tt,Ge|0}else j=M}else j=M;else j=-1;while(0);if(c=n[2785]|0,c>>>0>=j>>>0)return l=c-j|0,s=n[2788]|0,l>>>0>15?(Ge=s+j|0,n[2788]=Ge,n[2785]=l,n[Ge+4>>2]=l|1,n[Ge+l>>2]=l,n[s+4>>2]=j|3):(n[2785]=0,n[2788]=0,n[s+4>>2]=c|3,Ge=s+c+4|0,n[Ge>>2]=n[Ge>>2]|1),Ge=s+8|0,E=Tt,Ge|0;if(B=n[2786]|0,B>>>0>j>>>0)return at=B-j|0,n[2786]=at,Ge=n[2789]|0,He=Ge+j|0,n[2789]=He,n[He+4>>2]=at|1,n[Ge+4>>2]=j|3,Ge=Ge+8|0,E=Tt,Ge|0;if(n[2901]|0?s=n[2903]|0:(n[2903]=4096,n[2902]=4096,n[2904]=-1,n[2905]=-1,n[2906]=0,n[2894]=0,s=se&-16^1431655768,n[se>>2]=s,n[2901]=s,s=4096),Q=j+48|0,k=j+47|0,m=s+k|0,d=0-s|0,M=m&d,M>>>0<=j>>>0||(s=n[2893]|0,s|0&&(O=n[2891]|0,se=O+M|0,se>>>0<=O>>>0|se>>>0>s>>>0)))return Ge=0,E=Tt,Ge|0;e:do if(n[2894]&4)l=0,He=133;else{c=n[2789]|0;t:do if(c){for(f=11580;s=n[f>>2]|0,!(s>>>0<=c>>>0&&(Re=f+4|0,(s+(n[Re>>2]|0)|0)>>>0>c>>>0));)if(s=n[f+8>>2]|0,s)f=s;else{He=118;break t}if(l=m-B&d,l>>>0<2147483647)if(s=kp(l|0)|0,(s|0)==((n[f>>2]|0)+(n[Re>>2]|0)|0)){if((s|0)!=-1){B=l,m=s,He=135;break e}}else f=s,He=126;else l=0}else He=118;while(0);do if((He|0)==118)if(c=kp(0)|0,(c|0)!=-1&&(l=c,Ye=n[2902]|0,Le=Ye+-1|0,l=((Le&l|0)==0?0:(Le+l&0-Ye)-l|0)+M|0,Ye=n[2891]|0,Le=l+Ye|0,l>>>0>j>>>0&l>>>0<2147483647)){if(Re=n[2893]|0,Re|0&&Le>>>0<=Ye>>>0|Le>>>0>Re>>>0){l=0;break}if(s=kp(l|0)|0,(s|0)==(c|0)){B=l,m=c,He=135;break e}else f=s,He=126}else l=0;while(0);do if((He|0)==126){if(c=0-l|0,!(Q>>>0>l>>>0&(l>>>0<2147483647&(f|0)!=-1)))if((f|0)==-1){l=0;break}else{B=l,m=f,He=135;break e}if(s=n[2903]|0,s=k-l+s&0-s,s>>>0>=2147483647){B=l,m=f,He=135;break e}if((kp(s|0)|0)==-1){kp(c|0)|0,l=0;break}else{B=s+l|0,m=f,He=135;break e}}while(0);n[2894]=n[2894]|4,He=133}while(0);if((He|0)==133&&M>>>0<2147483647&&(at=kp(M|0)|0,Re=kp(0)|0,et=Re-at|0,Ze=et>>>0>(j+40|0)>>>0,!((at|0)==-1|Ze^1|at>>>0<Re>>>0&((at|0)!=-1&(Re|0)!=-1)^1))&&(B=Ze?et:l,m=at,He=135),(He|0)==135){l=(n[2891]|0)+B|0,n[2891]=l,l>>>0>(n[2892]|0)>>>0&&(n[2892]=l),k=n[2789]|0;do if(k){for(l=11580;;){if(s=n[l>>2]|0,c=l+4|0,f=n[c>>2]|0,(m|0)==(s+f|0)){He=145;break}if(d=n[l+8>>2]|0,d)l=d;else break}if((He|0)==145&&(n[l+12>>2]&8|0)==0&&k>>>0<m>>>0&k>>>0>=s>>>0){n[c>>2]=f+B,Ge=k+8|0,Ge=(Ge&7|0)==0?0:0-Ge&7,He=k+Ge|0,Ge=(n[2786]|0)+(B-Ge)|0,n[2789]=He,n[2786]=Ge,n[He+4>>2]=Ge|1,n[He+Ge+4>>2]=40,n[2790]=n[2905];break}for(m>>>0<(n[2787]|0)>>>0&&(n[2787]=m),c=m+B|0,l=11580;;){if((n[l>>2]|0)==(c|0)){He=153;break}if(s=n[l+8>>2]|0,s)l=s;else break}if((He|0)==153&&(n[l+12>>2]&8|0)==0){n[l>>2]=m,O=l+4|0,n[O>>2]=(n[O>>2]|0)+B,O=m+8|0,O=m+((O&7|0)==0?0:0-O&7)|0,l=c+8|0,l=c+((l&7|0)==0?0:0-l&7)|0,M=O+j|0,Q=l-O-j|0,n[O+4>>2]=j|3;do if((l|0)!=(k|0)){if((l|0)==(n[2788]|0)){Ge=(n[2785]|0)+Q|0,n[2785]=Ge,n[2788]=M,n[M+4>>2]=Ge|1,n[M+Ge>>2]=Ge;break}if(s=n[l+4>>2]|0,(s&3|0)==1){B=s&-8,f=s>>>3;e:do if(s>>>0<256)if(s=n[l+8>>2]|0,c=n[l+12>>2]|0,(c|0)==(s|0)){n[2783]=n[2783]&~(1<<f);break}else{n[s+12>>2]=c,n[c+8>>2]=s;break}else{m=n[l+24>>2]|0,s=n[l+12>>2]|0;do if((s|0)==(l|0)){if(f=l+16|0,c=f+4|0,s=n[c>>2]|0,!s)if(s=n[f>>2]|0,s)c=f;else{s=0;break}for(;;){if(f=s+20|0,d=n[f>>2]|0,d|0){s=d,c=f;continue}if(f=s+16|0,d=n[f>>2]|0,d)s=d,c=f;else break}n[c>>2]=0}else Ge=n[l+8>>2]|0,n[Ge+12>>2]=s,n[s+8>>2]=Ge;while(0);if(!m)break;c=n[l+28>>2]|0,f=11436+(c<<2)|0;do if((l|0)!=(n[f>>2]|0)){if(n[m+16+(((n[m+16>>2]|0)!=(l|0)&1)<<2)>>2]=s,!s)break e}else{if(n[f>>2]=s,s|0)break;n[2784]=n[2784]&~(1<<c);break e}while(0);if(n[s+24>>2]=m,c=l+16|0,f=n[c>>2]|0,f|0&&(n[s+16>>2]=f,n[f+24>>2]=s),c=n[c+4>>2]|0,!c)break;n[s+20>>2]=c,n[c+24>>2]=s}while(0);l=l+B|0,d=B+Q|0}else d=Q;if(l=l+4|0,n[l>>2]=n[l>>2]&-2,n[M+4>>2]=d|1,n[M+d>>2]=d,l=d>>>3,d>>>0<256){c=11172+(l<<1<<2)|0,s=n[2783]|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=M,n[l+12>>2]=M,n[M+8>>2]=l,n[M+12>>2]=c;break}l=d>>>8;do if(!l)l=0;else{if(d>>>0>16777215){l=31;break}He=(l+1048320|0)>>>16&8,Ge=l<<He,at=(Ge+520192|0)>>>16&4,Ge=Ge<<at,l=(Ge+245760|0)>>>16&2,l=14-(at|He|l)+(Ge<<l>>>15)|0,l=d>>>(l+7|0)&1|l<<1}while(0);if(f=11436+(l<<2)|0,n[M+28>>2]=l,s=M+16|0,n[s+4>>2]=0,n[s>>2]=0,s=n[2784]|0,c=1<<l,!(s&c)){n[2784]=s|c,n[f>>2]=M,n[M+24>>2]=f,n[M+12>>2]=M,n[M+8>>2]=M;break}for(s=d<<((l|0)==31?0:25-(l>>>1)|0),c=n[f>>2]|0;;){if((n[c+4>>2]&-8|0)==(d|0)){He=194;break}if(f=c+16+(s>>>31<<2)|0,l=n[f>>2]|0,l)s=s<<1,c=l;else{He=193;break}}if((He|0)==193){n[f>>2]=M,n[M+24>>2]=c,n[M+12>>2]=M,n[M+8>>2]=M;break}else if((He|0)==194){He=c+8|0,Ge=n[He>>2]|0,n[Ge+12>>2]=M,n[He>>2]=M,n[M+8>>2]=Ge,n[M+12>>2]=c,n[M+24>>2]=0;break}}else Ge=(n[2786]|0)+Q|0,n[2786]=Ge,n[2789]=M,n[M+4>>2]=Ge|1;while(0);return Ge=O+8|0,E=Tt,Ge|0}for(l=11580;s=n[l>>2]|0,!(s>>>0<=k>>>0&&(Ge=s+(n[l+4>>2]|0)|0,Ge>>>0>k>>>0));)l=n[l+8>>2]|0;d=Ge+-47|0,s=d+8|0,s=d+((s&7|0)==0?0:0-s&7)|0,d=k+16|0,s=s>>>0<d>>>0?k:s,l=s+8|0,c=m+8|0,c=(c&7|0)==0?0:0-c&7,He=m+c|0,c=B+-40-c|0,n[2789]=He,n[2786]=c,n[He+4>>2]=c|1,n[He+c+4>>2]=40,n[2790]=n[2905],c=s+4|0,n[c>>2]=27,n[l>>2]=n[2895],n[l+4>>2]=n[2896],n[l+8>>2]=n[2897],n[l+12>>2]=n[2898],n[2895]=m,n[2896]=B,n[2898]=0,n[2897]=l,l=s+24|0;do He=l,l=l+4|0,n[l>>2]=7;while((He+8|0)>>>0<Ge>>>0);if((s|0)!=(k|0)){if(m=s-k|0,n[c>>2]=n[c>>2]&-2,n[k+4>>2]=m|1,n[s>>2]=m,l=m>>>3,m>>>0<256){c=11172+(l<<1<<2)|0,s=n[2783]|0,l=1<<l,s&l?(s=c+8|0,l=n[s>>2]|0):(n[2783]=s|l,l=c,s=c+8|0),n[s>>2]=k,n[l+12>>2]=k,n[k+8>>2]=l,n[k+12>>2]=c;break}if(l=m>>>8,l?m>>>0>16777215?c=31:(He=(l+1048320|0)>>>16&8,Ge=l<<He,at=(Ge+520192|0)>>>16&4,Ge=Ge<<at,c=(Ge+245760|0)>>>16&2,c=14-(at|He|c)+(Ge<<c>>>15)|0,c=m>>>(c+7|0)&1|c<<1):c=0,f=11436+(c<<2)|0,n[k+28>>2]=c,n[k+20>>2]=0,n[d>>2]=0,l=n[2784]|0,s=1<<c,!(l&s)){n[2784]=l|s,n[f>>2]=k,n[k+24>>2]=f,n[k+12>>2]=k,n[k+8>>2]=k;break}for(s=m<<((c|0)==31?0:25-(c>>>1)|0),c=n[f>>2]|0;;){if((n[c+4>>2]&-8|0)==(m|0)){He=216;break}if(f=c+16+(s>>>31<<2)|0,l=n[f>>2]|0,l)s=s<<1,c=l;else{He=215;break}}if((He|0)==215){n[f>>2]=k,n[k+24>>2]=c,n[k+12>>2]=k,n[k+8>>2]=k;break}else if((He|0)==216){He=c+8|0,Ge=n[He>>2]|0,n[Ge+12>>2]=k,n[He>>2]=k,n[k+8>>2]=Ge,n[k+12>>2]=c,n[k+24>>2]=0;break}}}else{Ge=n[2787]|0,(Ge|0)==0|m>>>0<Ge>>>0&&(n[2787]=m),n[2895]=m,n[2896]=B,n[2898]=0,n[2792]=n[2901],n[2791]=-1,l=0;do Ge=11172+(l<<1<<2)|0,n[Ge+12>>2]=Ge,n[Ge+8>>2]=Ge,l=l+1|0;while((l|0)!=32);Ge=m+8|0,Ge=(Ge&7|0)==0?0:0-Ge&7,He=m+Ge|0,Ge=B+-40-Ge|0,n[2789]=He,n[2786]=Ge,n[He+4>>2]=Ge|1,n[He+Ge+4>>2]=40,n[2790]=n[2905]}while(0);if(l=n[2786]|0,l>>>0>j>>>0)return at=l-j|0,n[2786]=at,Ge=n[2789]|0,He=Ge+j|0,n[2789]=He,n[He+4>>2]=at|1,n[Ge+4>>2]=j|3,Ge=Ge+8|0,E=Tt,Ge|0}return n[(zm()|0)>>2]=12,Ge=0,E=Tt,Ge|0}function rD(s){s=s|0;var l=0,c=0,f=0,d=0,m=0,B=0,Q=0,k=0;if(!!s){c=s+-8|0,d=n[2787]|0,s=n[s+-4>>2]|0,l=s&-8,k=c+l|0;do if(s&1)Q=c,B=c;else{if(f=n[c>>2]|0,!(s&3)||(B=c+(0-f)|0,m=f+l|0,B>>>0<d>>>0))return;if((B|0)==(n[2788]|0)){if(s=k+4|0,l=n[s>>2]|0,(l&3|0)!=3){Q=B,l=m;break}n[2785]=m,n[s>>2]=l&-2,n[B+4>>2]=m|1,n[B+m>>2]=m;return}if(c=f>>>3,f>>>0<256)if(s=n[B+8>>2]|0,l=n[B+12>>2]|0,(l|0)==(s|0)){n[2783]=n[2783]&~(1<<c),Q=B,l=m;break}else{n[s+12>>2]=l,n[l+8>>2]=s,Q=B,l=m;break}d=n[B+24>>2]|0,s=n[B+12>>2]|0;do if((s|0)==(B|0)){if(c=B+16|0,l=c+4|0,s=n[l>>2]|0,!s)if(s=n[c>>2]|0,s)l=c;else{s=0;break}for(;;){if(c=s+20|0,f=n[c>>2]|0,f|0){s=f,l=c;continue}if(c=s+16|0,f=n[c>>2]|0,f)s=f,l=c;else break}n[l>>2]=0}else Q=n[B+8>>2]|0,n[Q+12>>2]=s,n[s+8>>2]=Q;while(0);if(d){if(l=n[B+28>>2]|0,c=11436+(l<<2)|0,(B|0)==(n[c>>2]|0)){if(n[c>>2]=s,!s){n[2784]=n[2784]&~(1<<l),Q=B,l=m;break}}else if(n[d+16+(((n[d+16>>2]|0)!=(B|0)&1)<<2)>>2]=s,!s){Q=B,l=m;break}n[s+24>>2]=d,l=B+16|0,c=n[l>>2]|0,c|0&&(n[s+16>>2]=c,n[c+24>>2]=s),l=n[l+4>>2]|0,l?(n[s+20>>2]=l,n[l+24>>2]=s,Q=B,l=m):(Q=B,l=m)}else Q=B,l=m}while(0);if(!(B>>>0>=k>>>0)&&(s=k+4|0,f=n[s>>2]|0,!!(f&1))){if(f&2)n[s>>2]=f&-2,n[Q+4>>2]=l|1,n[B+l>>2]=l,d=l;else{if(s=n[2788]|0,(k|0)==(n[2789]|0)){if(k=(n[2786]|0)+l|0,n[2786]=k,n[2789]=Q,n[Q+4>>2]=k|1,(Q|0)!=(s|0))return;n[2788]=0,n[2785]=0;return}if((k|0)==(s|0)){k=(n[2785]|0)+l|0,n[2785]=k,n[2788]=B,n[Q+4>>2]=k|1,n[B+k>>2]=k;return}d=(f&-8)+l|0,c=f>>>3;do if(f>>>0<256)if(l=n[k+8>>2]|0,s=n[k+12>>2]|0,(s|0)==(l|0)){n[2783]=n[2783]&~(1<<c);break}else{n[l+12>>2]=s,n[s+8>>2]=l;break}else{m=n[k+24>>2]|0,s=n[k+12>>2]|0;do if((s|0)==(k|0)){if(c=k+16|0,l=c+4|0,s=n[l>>2]|0,!s)if(s=n[c>>2]|0,s)l=c;else{c=0;break}for(;;){if(c=s+20|0,f=n[c>>2]|0,f|0){s=f,l=c;continue}if(c=s+16|0,f=n[c>>2]|0,f)s=f,l=c;else break}n[l>>2]=0,c=s}else c=n[k+8>>2]|0,n[c+12>>2]=s,n[s+8>>2]=c,c=s;while(0);if(m|0){if(s=n[k+28>>2]|0,l=11436+(s<<2)|0,(k|0)==(n[l>>2]|0)){if(n[l>>2]=c,!c){n[2784]=n[2784]&~(1<<s);break}}else if(n[m+16+(((n[m+16>>2]|0)!=(k|0)&1)<<2)>>2]=c,!c)break;n[c+24>>2]=m,s=k+16|0,l=n[s>>2]|0,l|0&&(n[c+16>>2]=l,n[l+24>>2]=c),s=n[s+4>>2]|0,s|0&&(n[c+20>>2]=s,n[s+24>>2]=c)}}while(0);if(n[Q+4>>2]=d|1,n[B+d>>2]=d,(Q|0)==(n[2788]|0)){n[2785]=d;return}}if(s=d>>>3,d>>>0<256){c=11172+(s<<1<<2)|0,l=n[2783]|0,s=1<<s,l&s?(l=c+8|0,s=n[l>>2]|0):(n[2783]=l|s,s=c,l=c+8|0),n[l>>2]=Q,n[s+12>>2]=Q,n[Q+8>>2]=s,n[Q+12>>2]=c;return}s=d>>>8,s?d>>>0>16777215?s=31:(B=(s+1048320|0)>>>16&8,k=s<<B,m=(k+520192|0)>>>16&4,k=k<<m,s=(k+245760|0)>>>16&2,s=14-(m|B|s)+(k<<s>>>15)|0,s=d>>>(s+7|0)&1|s<<1):s=0,f=11436+(s<<2)|0,n[Q+28>>2]=s,n[Q+20>>2]=0,n[Q+16>>2]=0,l=n[2784]|0,c=1<<s;do if(l&c){for(l=d<<((s|0)==31?0:25-(s>>>1)|0),c=n[f>>2]|0;;){if((n[c+4>>2]&-8|0)==(d|0)){s=73;break}if(f=c+16+(l>>>31<<2)|0,s=n[f>>2]|0,s)l=l<<1,c=s;else{s=72;break}}if((s|0)==72){n[f>>2]=Q,n[Q+24>>2]=c,n[Q+12>>2]=Q,n[Q+8>>2]=Q;break}else if((s|0)==73){B=c+8|0,k=n[B>>2]|0,n[k+12>>2]=Q,n[B>>2]=Q,n[Q+8>>2]=k,n[Q+12>>2]=c,n[Q+24>>2]=0;break}}else n[2784]=l|c,n[f>>2]=Q,n[Q+24>>2]=f,n[Q+12>>2]=Q,n[Q+8>>2]=Q;while(0);if(k=(n[2791]|0)+-1|0,n[2791]=k,!k)s=11588;else return;for(;s=n[s>>2]|0,s;)s=s+8|0;n[2791]=-1}}}function zUe(){return 11628}function XUe(s){s=s|0;var l=0,c=0;return l=E,E=E+16|0,c=l,n[c>>2]=e3e(n[s+60>>2]|0)|0,s=nD(Ec(6,c|0)|0)|0,E=l,s|0}function e7(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0,Ye=0;j=E,E=E+48|0,M=j+16|0,m=j,d=j+32|0,Q=s+28|0,f=n[Q>>2]|0,n[d>>2]=f,k=s+20|0,f=(n[k>>2]|0)-f|0,n[d+4>>2]=f,n[d+8>>2]=l,n[d+12>>2]=c,f=f+c|0,B=s+60|0,n[m>>2]=n[B>>2],n[m+4>>2]=d,n[m+8>>2]=2,m=nD(Hi(146,m|0)|0)|0;e:do if((f|0)!=(m|0)){for(l=2;!((m|0)<0);)if(f=f-m|0,Ye=n[d+4>>2]|0,se=m>>>0>Ye>>>0,d=se?d+8|0:d,l=(se<<31>>31)+l|0,Ye=m-(se?Ye:0)|0,n[d>>2]=(n[d>>2]|0)+Ye,se=d+4|0,n[se>>2]=(n[se>>2]|0)-Ye,n[M>>2]=n[B>>2],n[M+4>>2]=d,n[M+8>>2]=l,m=nD(Hi(146,M|0)|0)|0,(f|0)==(m|0)){O=3;break e}n[s+16>>2]=0,n[Q>>2]=0,n[k>>2]=0,n[s>>2]=n[s>>2]|32,(l|0)==2?c=0:c=c-(n[d+4>>2]|0)|0}else O=3;while(0);return(O|0)==3&&(Ye=n[s+44>>2]|0,n[s+16>>2]=Ye+(n[s+48>>2]|0),n[Q>>2]=Ye,n[k>>2]=Ye),E=j,c|0}function ZUe(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;return d=E,E=E+32|0,m=d,f=d+20|0,n[m>>2]=n[s+60>>2],n[m+4>>2]=0,n[m+8>>2]=l,n[m+12>>2]=f,n[m+16>>2]=c,(nD(na(140,m|0)|0)|0)<0?(n[f>>2]=-1,s=-1):s=n[f>>2]|0,E=d,s|0}function nD(s){return s=s|0,s>>>0>4294963200&&(n[(zm()|0)>>2]=0-s,s=-1),s|0}function zm(){return($Ue()|0)+64|0}function $Ue(){return wR()|0}function wR(){return 2084}function e3e(s){return s=s|0,s|0}function t3e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;return d=E,E=E+32|0,f=d,n[s+36>>2]=1,(n[s>>2]&64|0)==0&&(n[f>>2]=n[s+60>>2],n[f+4>>2]=21523,n[f+8>>2]=d+16,yu(54,f|0)|0)&&(o[s+75>>0]=-1),f=e7(s,l,c)|0,E=d,f|0}function t7(s,l){s=s|0,l=l|0;var c=0,f=0;if(c=o[s>>0]|0,f=o[l>>0]|0,c<<24>>24==0||c<<24>>24!=f<<24>>24)s=f;else{do s=s+1|0,l=l+1|0,c=o[s>>0]|0,f=o[l>>0]|0;while(!(c<<24>>24==0||c<<24>>24!=f<<24>>24));s=f}return(c&255)-(s&255)|0}function r3e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0;e:do if(!c)s=0;else{for(;f=o[s>>0]|0,d=o[l>>0]|0,f<<24>>24==d<<24>>24;)if(c=c+-1|0,c)s=s+1|0,l=l+1|0;else{s=0;break e}s=(f&255)-(d&255)|0}while(0);return s|0}function r7(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0,Ye=0,Le=0,Re=0;Re=E,E=E+224|0,O=Re+120|0,j=Re+80|0,Ye=Re,Le=Re+136|0,f=j,d=f+40|0;do n[f>>2]=0,f=f+4|0;while((f|0)<(d|0));return n[O>>2]=n[c>>2],(BR(0,l,O,Ye,j)|0)<0?c=-1:((n[s+76>>2]|0)>-1?se=n3e(s)|0:se=0,c=n[s>>2]|0,M=c&32,(o[s+74>>0]|0)<1&&(n[s>>2]=c&-33),f=s+48|0,n[f>>2]|0?c=BR(s,l,O,Ye,j)|0:(d=s+44|0,m=n[d>>2]|0,n[d>>2]=Le,B=s+28|0,n[B>>2]=Le,Q=s+20|0,n[Q>>2]=Le,n[f>>2]=80,k=s+16|0,n[k>>2]=Le+80,c=BR(s,l,O,Ye,j)|0,m&&(aD[n[s+36>>2]&7](s,0,0)|0,c=(n[Q>>2]|0)==0?-1:c,n[d>>2]=m,n[f>>2]=0,n[k>>2]=0,n[B>>2]=0,n[Q>>2]=0)),f=n[s>>2]|0,n[s>>2]=f|M,se|0&&i3e(s),c=(f&32|0)==0?c:-1),E=Re,c|0}function BR(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0,Ye=0,Le=0,Re=0,et=0,Ze=0,at=0,He=0,Ge=0,Tt=0,Rr=0,ir=0,Jt=0,Ir=0,Qr=0,rr=0;rr=E,E=E+64|0,ir=rr+16|0,Jt=rr,Tt=rr+24|0,Ir=rr+8|0,Qr=rr+20|0,n[ir>>2]=l,at=(s|0)!=0,He=Tt+40|0,Ge=He,Tt=Tt+39|0,Rr=Ir+4|0,B=0,m=0,O=0;e:for(;;){do if((m|0)>-1)if((B|0)>(2147483647-m|0)){n[(zm()|0)>>2]=75,m=-1;break}else{m=B+m|0;break}while(0);if(B=o[l>>0]|0,B<<24>>24)Q=l;else{Ze=87;break}t:for(;;){switch(B<<24>>24){case 37:{B=Q,Ze=9;break t}case 0:{B=Q;break t}default:}et=Q+1|0,n[ir>>2]=et,B=o[et>>0]|0,Q=et}t:do if((Ze|0)==9)for(;;){if(Ze=0,(o[Q+1>>0]|0)!=37)break t;if(B=B+1|0,Q=Q+2|0,n[ir>>2]=Q,(o[Q>>0]|0)==37)Ze=9;else break}while(0);if(B=B-l|0,at&&ss(s,l,B),B|0){l=Q;continue}k=Q+1|0,B=(o[k>>0]|0)+-48|0,B>>>0<10?(et=(o[Q+2>>0]|0)==36,Re=et?B:-1,O=et?1:O,k=et?Q+3|0:k):Re=-1,n[ir>>2]=k,B=o[k>>0]|0,Q=(B<<24>>24)+-32|0;t:do if(Q>>>0<32)for(M=0,j=B;;){if(B=1<<Q,!(B&75913)){B=j;break t}if(M=B|M,k=k+1|0,n[ir>>2]=k,B=o[k>>0]|0,Q=(B<<24>>24)+-32|0,Q>>>0>=32)break;j=B}else M=0;while(0);if(B<<24>>24==42){if(Q=k+1|0,B=(o[Q>>0]|0)+-48|0,B>>>0<10&&(o[k+2>>0]|0)==36)n[d+(B<<2)>>2]=10,B=n[f+((o[Q>>0]|0)+-48<<3)>>2]|0,O=1,k=k+3|0;else{if(O|0){m=-1;break}at?(O=(n[c>>2]|0)+(4-1)&~(4-1),B=n[O>>2]|0,n[c>>2]=O+4,O=0,k=Q):(B=0,O=0,k=Q)}n[ir>>2]=k,et=(B|0)<0,B=et?0-B|0:B,M=et?M|8192:M}else{if(B=n7(ir)|0,(B|0)<0){m=-1;break}k=n[ir>>2]|0}do if((o[k>>0]|0)==46){if((o[k+1>>0]|0)!=42){n[ir>>2]=k+1,Q=n7(ir)|0,k=n[ir>>2]|0;break}if(j=k+2|0,Q=(o[j>>0]|0)+-48|0,Q>>>0<10&&(o[k+3>>0]|0)==36){n[d+(Q<<2)>>2]=10,Q=n[f+((o[j>>0]|0)+-48<<3)>>2]|0,k=k+4|0,n[ir>>2]=k;break}if(O|0){m=-1;break e}at?(et=(n[c>>2]|0)+(4-1)&~(4-1),Q=n[et>>2]|0,n[c>>2]=et+4):Q=0,n[ir>>2]=j,k=j}else Q=-1;while(0);for(Le=0;;){if(((o[k>>0]|0)+-65|0)>>>0>57){m=-1;break e}if(et=k+1|0,n[ir>>2]=et,j=o[(o[k>>0]|0)+-65+(5178+(Le*58|0))>>0]|0,se=j&255,(se+-1|0)>>>0<8)Le=se,k=et;else break}if(!(j<<24>>24)){m=-1;break}Ye=(Re|0)>-1;do if(j<<24>>24==19)if(Ye){m=-1;break e}else Ze=49;else{if(Ye){n[d+(Re<<2)>>2]=se,Ye=f+(Re<<3)|0,Re=n[Ye+4>>2]|0,Ze=Jt,n[Ze>>2]=n[Ye>>2],n[Ze+4>>2]=Re,Ze=49;break}if(!at){m=0;break e}i7(Jt,se,c)}while(0);if((Ze|0)==49&&(Ze=0,!at)){B=0,l=et;continue}k=o[k>>0]|0,k=(Le|0)!=0&(k&15|0)==3?k&-33:k,Ye=M&-65537,Re=(M&8192|0)==0?M:Ye;t:do switch(k|0){case 110:switch((Le&255)<<24>>24){case 0:{n[n[Jt>>2]>>2]=m,B=0,l=et;continue e}case 1:{n[n[Jt>>2]>>2]=m,B=0,l=et;continue e}case 2:{B=n[Jt>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=et;continue e}case 3:{a[n[Jt>>2]>>1]=m,B=0,l=et;continue e}case 4:{o[n[Jt>>2]>>0]=m,B=0,l=et;continue e}case 6:{n[n[Jt>>2]>>2]=m,B=0,l=et;continue e}case 7:{B=n[Jt>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=et;continue e}default:{B=0,l=et;continue e}}case 112:{k=120,Q=Q>>>0>8?Q:8,l=Re|8,Ze=61;break}case 88:case 120:{l=Re,Ze=61;break}case 111:{k=Jt,l=n[k>>2]|0,k=n[k+4>>2]|0,se=o3e(l,k,He)|0,Ye=Ge-se|0,M=0,j=5642,Q=(Re&8|0)==0|(Q|0)>(Ye|0)?Q:Ye+1|0,Ye=Re,Ze=67;break}case 105:case 100:if(k=Jt,l=n[k>>2]|0,k=n[k+4>>2]|0,(k|0)<0){l=iD(0,0,l|0,k|0)|0,k=Ee,M=Jt,n[M>>2]=l,n[M+4>>2]=k,M=1,j=5642,Ze=66;break t}else{M=(Re&2049|0)!=0&1,j=(Re&2048|0)==0?(Re&1|0)==0?5642:5644:5643,Ze=66;break t}case 117:{k=Jt,M=0,j=5642,l=n[k>>2]|0,k=n[k+4>>2]|0,Ze=66;break}case 99:{o[Tt>>0]=n[Jt>>2],l=Tt,M=0,j=5642,se=He,k=1,Q=Ye;break}case 109:{k=a3e(n[(zm()|0)>>2]|0)|0,Ze=71;break}case 115:{k=n[Jt>>2]|0,k=k|0?k:5652,Ze=71;break}case 67:{n[Ir>>2]=n[Jt>>2],n[Rr>>2]=0,n[Jt>>2]=Ir,se=-1,k=Ir,Ze=75;break}case 83:{l=n[Jt>>2]|0,Q?(se=Q,k=l,Ze=75):(Is(s,32,B,0,Re),l=0,Ze=84);break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{B=c3e(s,+C[Jt>>3],B,Q,Re,k)|0,l=et;continue e}default:M=0,j=5642,se=He,k=Q,Q=Re}while(0);t:do if((Ze|0)==61)Re=Jt,Le=n[Re>>2]|0,Re=n[Re+4>>2]|0,se=s3e(Le,Re,He,k&32)|0,j=(l&8|0)==0|(Le|0)==0&(Re|0)==0,M=j?0:2,j=j?5642:5642+(k>>4)|0,Ye=l,l=Le,k=Re,Ze=67;else if((Ze|0)==66)se=Xm(l,k,He)|0,Ye=Re,Ze=67;else if((Ze|0)==71)Ze=0,Re=l3e(k,0,Q)|0,Le=(Re|0)==0,l=k,M=0,j=5642,se=Le?k+Q|0:Re,k=Le?Q:Re-k|0,Q=Ye;else if((Ze|0)==75){for(Ze=0,j=k,l=0,Q=0;M=n[j>>2]|0,!(!M||(Q=s7(Qr,M)|0,(Q|0)<0|Q>>>0>(se-l|0)>>>0));)if(l=Q+l|0,se>>>0>l>>>0)j=j+4|0;else break;if((Q|0)<0){m=-1;break e}if(Is(s,32,B,l,Re),!l)l=0,Ze=84;else for(M=0;;){if(Q=n[k>>2]|0,!Q){Ze=84;break t}if(Q=s7(Qr,Q)|0,M=Q+M|0,(M|0)>(l|0)){Ze=84;break t}if(ss(s,Qr,Q),M>>>0>=l>>>0){Ze=84;break}else k=k+4|0}}while(0);if((Ze|0)==67)Ze=0,k=(l|0)!=0|(k|0)!=0,Re=(Q|0)!=0|k,k=((k^1)&1)+(Ge-se)|0,l=Re?se:He,se=He,k=Re?(Q|0)>(k|0)?Q:k:Q,Q=(Q|0)>-1?Ye&-65537:Ye;else if((Ze|0)==84){Ze=0,Is(s,32,B,l,Re^8192),B=(B|0)>(l|0)?B:l,l=et;continue}Le=se-l|0,Ye=(k|0)<(Le|0)?Le:k,Re=Ye+M|0,B=(B|0)<(Re|0)?Re:B,Is(s,32,B,Re,Q),ss(s,j,M),Is(s,48,B,Re,Q^65536),Is(s,48,Ye,Le,0),ss(s,l,Le),Is(s,32,B,Re,Q^8192),l=et}e:do if((Ze|0)==87&&!s)if(!O)m=0;else{for(m=1;l=n[d+(m<<2)>>2]|0,!!l;)if(i7(f+(m<<3)|0,l,c),m=m+1|0,(m|0)>=10){m=1;break e}for(;;){if(n[d+(m<<2)>>2]|0){m=-1;break e}if(m=m+1|0,(m|0)>=10){m=1;break}}}while(0);return E=rr,m|0}function n3e(s){return s=s|0,0}function i3e(s){s=s|0}function ss(s,l,c){s=s|0,l=l|0,c=c|0,n[s>>2]&32||y3e(l,c,s)|0}function n7(s){s=s|0;var l=0,c=0,f=0;if(c=n[s>>2]|0,f=(o[c>>0]|0)+-48|0,f>>>0<10){l=0;do l=f+(l*10|0)|0,c=c+1|0,n[s>>2]=c,f=(o[c>>0]|0)+-48|0;while(f>>>0<10)}else l=0;return l|0}function i7(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;e:do if(l>>>0<=20)do switch(l|0){case 9:{f=(n[c>>2]|0)+(4-1)&~(4-1),l=n[f>>2]|0,n[c>>2]=f+4,n[s>>2]=l;break e}case 10:{f=(n[c>>2]|0)+(4-1)&~(4-1),l=n[f>>2]|0,n[c>>2]=f+4,f=s,n[f>>2]=l,n[f+4>>2]=((l|0)<0)<<31>>31;break e}case 11:{f=(n[c>>2]|0)+(4-1)&~(4-1),l=n[f>>2]|0,n[c>>2]=f+4,f=s,n[f>>2]=l,n[f+4>>2]=0;break e}case 12:{f=(n[c>>2]|0)+(8-1)&~(8-1),l=f,d=n[l>>2]|0,l=n[l+4>>2]|0,n[c>>2]=f+8,f=s,n[f>>2]=d,n[f+4>>2]=l;break e}case 13:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,f=(f&65535)<<16>>16,d=s,n[d>>2]=f,n[d+4>>2]=((f|0)<0)<<31>>31;break e}case 14:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,d=s,n[d>>2]=f&65535,n[d+4>>2]=0;break e}case 15:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,f=(f&255)<<24>>24,d=s,n[d>>2]=f,n[d+4>>2]=((f|0)<0)<<31>>31;break e}case 16:{d=(n[c>>2]|0)+(4-1)&~(4-1),f=n[d>>2]|0,n[c>>2]=d+4,d=s,n[d>>2]=f&255,n[d+4>>2]=0;break e}case 17:{d=(n[c>>2]|0)+(8-1)&~(8-1),m=+C[d>>3],n[c>>2]=d+8,C[s>>3]=m;break e}case 18:{d=(n[c>>2]|0)+(8-1)&~(8-1),m=+C[d>>3],n[c>>2]=d+8,C[s>>3]=m;break e}default:break e}while(0);while(0)}function s3e(s,l,c,f){if(s=s|0,l=l|0,c=c|0,f=f|0,!((s|0)==0&(l|0)==0))do c=c+-1|0,o[c>>0]=u[5694+(s&15)>>0]|0|f,s=sD(s|0,l|0,4)|0,l=Ee;while(!((s|0)==0&(l|0)==0));return c|0}function o3e(s,l,c){if(s=s|0,l=l|0,c=c|0,!((s|0)==0&(l|0)==0))do c=c+-1|0,o[c>>0]=s&7|48,s=sD(s|0,l|0,3)|0,l=Ee;while(!((s|0)==0&(l|0)==0));return c|0}function Xm(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;if(l>>>0>0|(l|0)==0&s>>>0>4294967295){for(;f=PR(s|0,l|0,10,0)|0,c=c+-1|0,o[c>>0]=f&255|48,f=s,s=SR(s|0,l|0,10,0)|0,l>>>0>9|(l|0)==9&f>>>0>4294967295;)l=Ee;l=s}else l=s;if(l)for(;c=c+-1|0,o[c>>0]=(l>>>0)%10|0|48,!(l>>>0<10);)l=(l>>>0)/10|0;return c|0}function a3e(s){return s=s|0,h3e(s,n[(p3e()|0)+188>>2]|0)|0}function l3e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;m=l&255,f=(c|0)!=0;e:do if(f&(s&3|0)!=0)for(d=l&255;;){if((o[s>>0]|0)==d<<24>>24){B=6;break e}if(s=s+1|0,c=c+-1|0,f=(c|0)!=0,!(f&(s&3|0)!=0)){B=5;break}}else B=5;while(0);(B|0)==5&&(f?B=6:c=0);e:do if((B|0)==6&&(d=l&255,(o[s>>0]|0)!=d<<24>>24)){f=Oe(m,16843009)|0;t:do if(c>>>0>3){for(;m=n[s>>2]^f,!((m&-2139062144^-2139062144)&m+-16843009|0);)if(s=s+4|0,c=c+-4|0,c>>>0<=3){B=11;break t}}else B=11;while(0);if((B|0)==11&&!c){c=0;break}for(;;){if((o[s>>0]|0)==d<<24>>24)break e;if(s=s+1|0,c=c+-1|0,!c){c=0;break}}}while(0);return(c|0?s:0)|0}function Is(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0;if(B=E,E=E+256|0,m=B,(c|0)>(f|0)&(d&73728|0)==0){if(d=c-f|0,$m(m|0,l|0,(d>>>0<256?d:256)|0)|0,d>>>0>255){l=c-f|0;do ss(s,m,256),d=d+-256|0;while(d>>>0>255);d=l&255}ss(s,m,d)}E=B}function s7(s,l){return s=s|0,l=l|0,s?s=A3e(s,l,0)|0:s=0,s|0}function c3e(s,l,c,f,d,m){s=s|0,l=+l,c=c|0,f=f|0,d=d|0,m=m|0;var B=0,Q=0,k=0,M=0,O=0,j=0,se=0,Ye=0,Le=0,Re=0,et=0,Ze=0,at=0,He=0,Ge=0,Tt=0,Rr=0,ir=0,Jt=0,Ir=0,Qr=0,rr=0,Bn=0;Bn=E,E=E+560|0,k=Bn+8|0,et=Bn,rr=Bn+524|0,Qr=rr,M=Bn+512|0,n[et>>2]=0,Ir=M+12|0,o7(l)|0,(Ee|0)<0?(l=-l,ir=1,Rr=5659):(ir=(d&2049|0)!=0&1,Rr=(d&2048|0)==0?(d&1|0)==0?5660:5665:5662),o7(l)|0,Jt=Ee&2146435072;do if(Jt>>>0<2146435072|(Jt|0)==2146435072&0<0){if(Ye=+u3e(l,et)*2,B=Ye!=0,B&&(n[et>>2]=(n[et>>2]|0)+-1),at=m|32,(at|0)==97){Le=m&32,se=(Le|0)==0?Rr:Rr+9|0,j=ir|2,B=12-f|0;do if(f>>>0>11|(B|0)==0)l=Ye;else{l=8;do B=B+-1|0,l=l*16;while((B|0)!=0);if((o[se>>0]|0)==45){l=-(l+(-Ye-l));break}else{l=Ye+l-l;break}}while(0);Q=n[et>>2]|0,B=(Q|0)<0?0-Q|0:Q,B=Xm(B,((B|0)<0)<<31>>31,Ir)|0,(B|0)==(Ir|0)&&(B=M+11|0,o[B>>0]=48),o[B+-1>>0]=(Q>>31&2)+43,O=B+-2|0,o[O>>0]=m+15,M=(f|0)<1,k=(d&8|0)==0,B=rr;do Jt=~~l,Q=B+1|0,o[B>>0]=u[5694+Jt>>0]|Le,l=(l-+(Jt|0))*16,(Q-Qr|0)==1&&!(k&(M&l==0))?(o[Q>>0]=46,B=B+2|0):B=Q;while(l!=0);Jt=B-Qr|0,Qr=Ir-O|0,Ir=(f|0)!=0&(Jt+-2|0)<(f|0)?f+2|0:Jt,B=Qr+j+Ir|0,Is(s,32,c,B,d),ss(s,se,j),Is(s,48,c,B,d^65536),ss(s,rr,Jt),Is(s,48,Ir-Jt|0,0,0),ss(s,O,Qr),Is(s,32,c,B,d^8192);break}Q=(f|0)<0?6:f,B?(B=(n[et>>2]|0)+-28|0,n[et>>2]=B,l=Ye*268435456):(l=Ye,B=n[et>>2]|0),Jt=(B|0)<0?k:k+288|0,k=Jt;do Ge=~~l>>>0,n[k>>2]=Ge,k=k+4|0,l=(l-+(Ge>>>0))*1e9;while(l!=0);if((B|0)>0)for(M=Jt,j=k;;){if(O=(B|0)<29?B:29,B=j+-4|0,B>>>0>=M>>>0){k=0;do He=f7(n[B>>2]|0,0,O|0)|0,He=DR(He|0,Ee|0,k|0,0)|0,Ge=Ee,Ze=PR(He|0,Ge|0,1e9,0)|0,n[B>>2]=Ze,k=SR(He|0,Ge|0,1e9,0)|0,B=B+-4|0;while(B>>>0>=M>>>0);k&&(M=M+-4|0,n[M>>2]=k)}for(k=j;!(k>>>0<=M>>>0);)if(B=k+-4|0,!(n[B>>2]|0))k=B;else break;if(B=(n[et>>2]|0)-O|0,n[et>>2]=B,(B|0)>0)j=k;else break}else M=Jt;if((B|0)<0){f=((Q+25|0)/9|0)+1|0,Re=(at|0)==102;do{if(Le=0-B|0,Le=(Le|0)<9?Le:9,M>>>0<k>>>0){O=(1<<Le)+-1|0,j=1e9>>>Le,se=0,B=M;do Ge=n[B>>2]|0,n[B>>2]=(Ge>>>Le)+se,se=Oe(Ge&O,j)|0,B=B+4|0;while(B>>>0<k>>>0);B=(n[M>>2]|0)==0?M+4|0:M,se?(n[k>>2]=se,M=B,B=k+4|0):(M=B,B=k)}else M=(n[M>>2]|0)==0?M+4|0:M,B=k;k=Re?Jt:M,k=(B-k>>2|0)>(f|0)?k+(f<<2)|0:B,B=(n[et>>2]|0)+Le|0,n[et>>2]=B}while((B|0)<0);B=M,f=k}else B=M,f=k;if(Ge=Jt,B>>>0<f>>>0){if(k=(Ge-B>>2)*9|0,O=n[B>>2]|0,O>>>0>=10){M=10;do M=M*10|0,k=k+1|0;while(O>>>0>=M>>>0)}}else k=0;if(Re=(at|0)==103,Ze=(Q|0)!=0,M=Q-((at|0)!=102?k:0)+((Ze&Re)<<31>>31)|0,(M|0)<(((f-Ge>>2)*9|0)+-9|0)){if(M=M+9216|0,Le=Jt+4+(((M|0)/9|0)+-1024<<2)|0,M=((M|0)%9|0)+1|0,(M|0)<9){O=10;do O=O*10|0,M=M+1|0;while((M|0)!=9)}else O=10;if(j=n[Le>>2]|0,se=(j>>>0)%(O>>>0)|0,M=(Le+4|0)==(f|0),M&(se|0)==0)M=Le;else if(Ye=(((j>>>0)/(O>>>0)|0)&1|0)==0?9007199254740992:9007199254740994,He=(O|0)/2|0,l=se>>>0<He>>>0?.5:M&(se|0)==(He|0)?1:1.5,ir&&(He=(o[Rr>>0]|0)==45,l=He?-l:l,Ye=He?-Ye:Ye),M=j-se|0,n[Le>>2]=M,Ye+l!=Ye){if(He=M+O|0,n[Le>>2]=He,He>>>0>999999999)for(k=Le;M=k+-4|0,n[k>>2]=0,M>>>0<B>>>0&&(B=B+-4|0,n[B>>2]=0),He=(n[M>>2]|0)+1|0,n[M>>2]=He,He>>>0>999999999;)k=M;else M=Le;if(k=(Ge-B>>2)*9|0,j=n[B>>2]|0,j>>>0>=10){O=10;do O=O*10|0,k=k+1|0;while(j>>>0>=O>>>0)}}else M=Le;M=M+4|0,M=f>>>0>M>>>0?M:f,He=B}else M=f,He=B;for(at=M;;){if(at>>>0<=He>>>0){et=0;break}if(B=at+-4|0,!(n[B>>2]|0))at=B;else{et=1;break}}f=0-k|0;do if(Re)if(B=((Ze^1)&1)+Q|0,(B|0)>(k|0)&(k|0)>-5?(O=m+-1|0,Q=B+-1-k|0):(O=m+-2|0,Q=B+-1|0),B=d&8,B)Le=B;else{if(et&&(Tt=n[at+-4>>2]|0,(Tt|0)!=0))if((Tt>>>0)%10|0)M=0;else{M=0,B=10;do B=B*10|0,M=M+1|0;while(!((Tt>>>0)%(B>>>0)|0|0))}else M=9;if(B=((at-Ge>>2)*9|0)+-9|0,(O|32|0)==102){Le=B-M|0,Le=(Le|0)>0?Le:0,Q=(Q|0)<(Le|0)?Q:Le,Le=0;break}else{Le=B+k-M|0,Le=(Le|0)>0?Le:0,Q=(Q|0)<(Le|0)?Q:Le,Le=0;break}}else O=m,Le=d&8;while(0);if(Re=Q|Le,j=(Re|0)!=0&1,se=(O|32|0)==102,se)Ze=0,B=(k|0)>0?k:0;else{if(B=(k|0)<0?f:k,B=Xm(B,((B|0)<0)<<31>>31,Ir)|0,M=Ir,(M-B|0)<2)do B=B+-1|0,o[B>>0]=48;while((M-B|0)<2);o[B+-1>>0]=(k>>31&2)+43,B=B+-2|0,o[B>>0]=O,Ze=B,B=M-B|0}if(B=ir+1+Q+j+B|0,Is(s,32,c,B,d),ss(s,Rr,ir),Is(s,48,c,B,d^65536),se){O=He>>>0>Jt>>>0?Jt:He,Le=rr+9|0,j=Le,se=rr+8|0,M=O;do{if(k=Xm(n[M>>2]|0,0,Le)|0,(M|0)==(O|0))(k|0)==(Le|0)&&(o[se>>0]=48,k=se);else if(k>>>0>rr>>>0){$m(rr|0,48,k-Qr|0)|0;do k=k+-1|0;while(k>>>0>rr>>>0)}ss(s,k,j-k|0),M=M+4|0}while(M>>>0<=Jt>>>0);if(Re|0&&ss(s,5710,1),M>>>0<at>>>0&(Q|0)>0)for(;;){if(k=Xm(n[M>>2]|0,0,Le)|0,k>>>0>rr>>>0){$m(rr|0,48,k-Qr|0)|0;do k=k+-1|0;while(k>>>0>rr>>>0)}if(ss(s,k,(Q|0)<9?Q:9),M=M+4|0,k=Q+-9|0,M>>>0<at>>>0&(Q|0)>9)Q=k;else{Q=k;break}}Is(s,48,Q+9|0,9,0)}else{if(Re=et?at:He+4|0,(Q|0)>-1){et=rr+9|0,Le=(Le|0)==0,f=et,j=0-Qr|0,se=rr+8|0,O=He;do{k=Xm(n[O>>2]|0,0,et)|0,(k|0)==(et|0)&&(o[se>>0]=48,k=se);do if((O|0)==(He|0)){if(M=k+1|0,ss(s,k,1),Le&(Q|0)<1){k=M;break}ss(s,5710,1),k=M}else{if(k>>>0<=rr>>>0)break;$m(rr|0,48,k+j|0)|0;do k=k+-1|0;while(k>>>0>rr>>>0)}while(0);Qr=f-k|0,ss(s,k,(Q|0)>(Qr|0)?Qr:Q),Q=Q-Qr|0,O=O+4|0}while(O>>>0<Re>>>0&(Q|0)>-1)}Is(s,48,Q+18|0,18,0),ss(s,Ze,Ir-Ze|0)}Is(s,32,c,B,d^8192)}else rr=(m&32|0)!=0,B=ir+3|0,Is(s,32,c,B,d&-65537),ss(s,Rr,ir),ss(s,l!=l|!1?rr?5686:5690:rr?5678:5682,3),Is(s,32,c,B,d^8192);while(0);return E=Bn,((B|0)<(c|0)?c:B)|0}function o7(s){s=+s;var l=0;return C[v>>3]=s,l=n[v>>2]|0,Ee=n[v+4>>2]|0,l|0}function u3e(s,l){return s=+s,l=l|0,+ +a7(s,l)}function a7(s,l){s=+s,l=l|0;var c=0,f=0,d=0;switch(C[v>>3]=s,c=n[v>>2]|0,f=n[v+4>>2]|0,d=sD(c|0,f|0,52)|0,d&2047){case 0:{s!=0?(s=+a7(s*18446744073709552e3,l),c=(n[l>>2]|0)+-64|0):c=0,n[l>>2]=c;break}case 2047:break;default:n[l>>2]=(d&2047)+-1022,n[v>>2]=c,n[v+4>>2]=f&-2146435073|1071644672,s=+C[v>>3]}return+s}function A3e(s,l,c){s=s|0,l=l|0,c=c|0;do if(s){if(l>>>0<128){o[s>>0]=l,s=1;break}if(!(n[n[(f3e()|0)+188>>2]>>2]|0))if((l&-128|0)==57216){o[s>>0]=l,s=1;break}else{n[(zm()|0)>>2]=84,s=-1;break}if(l>>>0<2048){o[s>>0]=l>>>6|192,o[s+1>>0]=l&63|128,s=2;break}if(l>>>0<55296|(l&-8192|0)==57344){o[s>>0]=l>>>12|224,o[s+1>>0]=l>>>6&63|128,o[s+2>>0]=l&63|128,s=3;break}if((l+-65536|0)>>>0<1048576){o[s>>0]=l>>>18|240,o[s+1>>0]=l>>>12&63|128,o[s+2>>0]=l>>>6&63|128,o[s+3>>0]=l&63|128,s=4;break}else{n[(zm()|0)>>2]=84,s=-1;break}}else s=1;while(0);return s|0}function f3e(){return wR()|0}function p3e(){return wR()|0}function h3e(s,l){s=s|0,l=l|0;var c=0,f=0;for(f=0;;){if((u[5712+f>>0]|0)==(s|0)){s=2;break}if(c=f+1|0,(c|0)==87){c=5800,f=87,s=5;break}else f=c}if((s|0)==2&&(f?(c=5800,s=5):c=5800),(s|0)==5)for(;;){do s=c,c=c+1|0;while((o[s>>0]|0)!=0);if(f=f+-1|0,f)s=5;else break}return g3e(c,n[l+20>>2]|0)|0}function g3e(s,l){return s=s|0,l=l|0,d3e(s,l)|0}function d3e(s,l){return s=s|0,l=l|0,l?l=m3e(n[l>>2]|0,n[l+4>>2]|0,s)|0:l=0,(l|0?l:s)|0}function m3e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0;se=(n[s>>2]|0)+1794895138|0,m=Qg(n[s+8>>2]|0,se)|0,f=Qg(n[s+12>>2]|0,se)|0,d=Qg(n[s+16>>2]|0,se)|0;e:do if(m>>>0<l>>>2>>>0&&(j=l-(m<<2)|0,f>>>0<j>>>0&d>>>0<j>>>0)&&((d|f)&3|0)==0){for(j=f>>>2,O=d>>>2,M=0;;){if(Q=m>>>1,k=M+Q|0,B=k<<1,d=B+j|0,f=Qg(n[s+(d<<2)>>2]|0,se)|0,d=Qg(n[s+(d+1<<2)>>2]|0,se)|0,!(d>>>0<l>>>0&f>>>0<(l-d|0)>>>0)){f=0;break e}if(o[s+(d+f)>>0]|0){f=0;break e}if(f=t7(c,s+d|0)|0,!f)break;if(f=(f|0)<0,(m|0)==1){f=0;break e}else M=f?M:k,m=f?Q:m-Q|0}f=B+O|0,d=Qg(n[s+(f<<2)>>2]|0,se)|0,f=Qg(n[s+(f+1<<2)>>2]|0,se)|0,f>>>0<l>>>0&d>>>0<(l-f|0)>>>0?f=(o[s+(f+d)>>0]|0)==0?s+f|0:0:f=0}else f=0;while(0);return f|0}function Qg(s,l){s=s|0,l=l|0;var c=0;return c=g7(s|0)|0,((l|0)==0?s:c)|0}function y3e(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0,Q=0;f=c+16|0,d=n[f>>2]|0,d?m=5:E3e(c)|0?f=0:(d=n[f>>2]|0,m=5);e:do if((m|0)==5){if(Q=c+20|0,B=n[Q>>2]|0,f=B,(d-B|0)>>>0<l>>>0){f=aD[n[c+36>>2]&7](c,s,l)|0;break}t:do if((o[c+75>>0]|0)>-1){for(B=l;;){if(!B){m=0,d=s;break t}if(d=B+-1|0,(o[s+d>>0]|0)==10)break;B=d}if(f=aD[n[c+36>>2]&7](c,s,B)|0,f>>>0<B>>>0)break e;m=B,d=s+B|0,l=l-B|0,f=n[Q>>2]|0}else m=0,d=s;while(0);Cr(f|0,d|0,l|0)|0,n[Q>>2]=(n[Q>>2]|0)+l,f=m+l|0}while(0);return f|0}function E3e(s){s=s|0;var l=0,c=0;return l=s+74|0,c=o[l>>0]|0,o[l>>0]=c+255|c,l=n[s>>2]|0,l&8?(n[s>>2]=l|32,s=-1):(n[s+8>>2]=0,n[s+4>>2]=0,c=n[s+44>>2]|0,n[s+28>>2]=c,n[s+20>>2]=c,n[s+16>>2]=c+(n[s+48>>2]|0),s=0),s|0}function Nn(s,l){s=y(s),l=y(l);var c=0,f=0;c=l7(s)|0;do if((c&2147483647)>>>0<=2139095040){if(f=l7(l)|0,(f&2147483647)>>>0<=2139095040)if((f^c|0)<0){s=(c|0)<0?l:s;break}else{s=s<l?l:s;break}}else s=l;while(0);return y(s)}function l7(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function kg(s,l){s=y(s),l=y(l);var c=0,f=0;c=c7(s)|0;do if((c&2147483647)>>>0<=2139095040){if(f=c7(l)|0,(f&2147483647)>>>0<=2139095040)if((f^c|0)<0){s=(c|0)<0?s:l;break}else{s=s<l?s:l;break}}else s=l;while(0);return y(s)}function c7(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function vR(s,l){s=y(s),l=y(l);var c=0,f=0,d=0,m=0,B=0,Q=0,k=0,M=0;m=(h[v>>2]=s,n[v>>2]|0),Q=(h[v>>2]=l,n[v>>2]|0),c=m>>>23&255,B=Q>>>23&255,k=m&-2147483648,d=Q<<1;e:do if((d|0)!=0&&!((c|0)==255|((C3e(l)|0)&2147483647)>>>0>2139095040)){if(f=m<<1,f>>>0<=d>>>0)return l=y(s*y(0)),y((f|0)==(d|0)?l:s);if(c)f=m&8388607|8388608;else{if(c=m<<9,(c|0)>-1){f=c,c=0;do c=c+-1|0,f=f<<1;while((f|0)>-1)}else c=0;f=m<<1-c}if(B)Q=Q&8388607|8388608;else{if(m=Q<<9,(m|0)>-1){d=0;do d=d+-1|0,m=m<<1;while((m|0)>-1)}else d=0;B=d,Q=Q<<1-d}d=f-Q|0,m=(d|0)>-1;t:do if((c|0)>(B|0)){for(;;){if(m)if(d)f=d;else break;if(f=f<<1,c=c+-1|0,d=f-Q|0,m=(d|0)>-1,(c|0)<=(B|0))break t}l=y(s*y(0));break e}while(0);if(m)if(d)f=d;else{l=y(s*y(0));break}if(f>>>0<8388608)do f=f<<1,c=c+-1|0;while(f>>>0<8388608);(c|0)>0?c=f+-8388608|c<<23:c=f>>>(1-c|0),l=(n[v>>2]=c|k,y(h[v>>2]))}else M=3;while(0);return(M|0)==3&&(l=y(s*l),l=y(l/l)),y(l)}function C3e(s){return s=y(s),h[v>>2]=s,n[v>>2]|0|0}function I3e(s,l){return s=s|0,l=l|0,r7(n[582]|0,s,l)|0}function Vr(s){s=s|0,Rt()}function Zm(s){s=s|0}function w3e(s,l){return s=s|0,l=l|0,0}function B3e(s){return s=s|0,(u7(s+4|0)|0)==-1?(rf[n[(n[s>>2]|0)+8>>2]&127](s),s=1):s=0,s|0}function u7(s){s=s|0;var l=0;return l=n[s>>2]|0,n[s>>2]=l+-1,l+-1|0}function Qp(s){s=s|0,B3e(s)|0&&v3e(s)}function v3e(s){s=s|0;var l=0;l=s+8|0,(n[l>>2]|0)!=0&&(u7(l)|0)!=-1||rf[n[(n[s>>2]|0)+16>>2]&127](s)}function Gt(s){s=s|0;var l=0;for(l=(s|0)==0?1:s;s=tD(l)|0,!(s|0);){if(s=S3e()|0,!s){s=0;break}D7[s&0]()}return s|0}function A7(s){return s=s|0,Gt(s)|0}function pt(s){s=s|0,rD(s)}function D3e(s){s=s|0,(o[s+11>>0]|0)<0&&pt(n[s>>2]|0)}function S3e(){var s=0;return s=n[2923]|0,n[2923]=s+0,s|0}function P3e(){}function iD(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,f=l-f-(c>>>0>s>>>0|0)>>>0,Ee=f,s-c>>>0|0|0}function DR(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,c=s+c>>>0,Ee=l+f+(c>>>0<s>>>0|0)>>>0,c|0|0}function $m(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0,B=0;if(m=s+c|0,l=l&255,(c|0)>=67){for(;s&3;)o[s>>0]=l,s=s+1|0;for(f=m&-4|0,d=f-64|0,B=l|l<<8|l<<16|l<<24;(s|0)<=(d|0);)n[s>>2]=B,n[s+4>>2]=B,n[s+8>>2]=B,n[s+12>>2]=B,n[s+16>>2]=B,n[s+20>>2]=B,n[s+24>>2]=B,n[s+28>>2]=B,n[s+32>>2]=B,n[s+36>>2]=B,n[s+40>>2]=B,n[s+44>>2]=B,n[s+48>>2]=B,n[s+52>>2]=B,n[s+56>>2]=B,n[s+60>>2]=B,s=s+64|0;for(;(s|0)<(f|0);)n[s>>2]=B,s=s+4|0}for(;(s|0)<(m|0);)o[s>>0]=l,s=s+1|0;return m-c|0}function f7(s,l,c){return s=s|0,l=l|0,c=c|0,(c|0)<32?(Ee=l<<c|(s&(1<<c)-1<<32-c)>>>32-c,s<<c):(Ee=s<<c-32,0)}function sD(s,l,c){return s=s|0,l=l|0,c=c|0,(c|0)<32?(Ee=l>>>c,s>>>c|(l&(1<<c)-1)<<32-c):(Ee=0,l>>>c-32|0)}function Cr(s,l,c){s=s|0,l=l|0,c=c|0;var f=0,d=0,m=0;if((c|0)>=8192)return dc(s|0,l|0,c|0)|0;if(m=s|0,d=s+c|0,(s&3)==(l&3)){for(;s&3;){if(!c)return m|0;o[s>>0]=o[l>>0]|0,s=s+1|0,l=l+1|0,c=c-1|0}for(c=d&-4|0,f=c-64|0;(s|0)<=(f|0);)n[s>>2]=n[l>>2],n[s+4>>2]=n[l+4>>2],n[s+8>>2]=n[l+8>>2],n[s+12>>2]=n[l+12>>2],n[s+16>>2]=n[l+16>>2],n[s+20>>2]=n[l+20>>2],n[s+24>>2]=n[l+24>>2],n[s+28>>2]=n[l+28>>2],n[s+32>>2]=n[l+32>>2],n[s+36>>2]=n[l+36>>2],n[s+40>>2]=n[l+40>>2],n[s+44>>2]=n[l+44>>2],n[s+48>>2]=n[l+48>>2],n[s+52>>2]=n[l+52>>2],n[s+56>>2]=n[l+56>>2],n[s+60>>2]=n[l+60>>2],s=s+64|0,l=l+64|0;for(;(s|0)<(c|0);)n[s>>2]=n[l>>2],s=s+4|0,l=l+4|0}else for(c=d-4|0;(s|0)<(c|0);)o[s>>0]=o[l>>0]|0,o[s+1>>0]=o[l+1>>0]|0,o[s+2>>0]=o[l+2>>0]|0,o[s+3>>0]=o[l+3>>0]|0,s=s+4|0,l=l+4|0;for(;(s|0)<(d|0);)o[s>>0]=o[l>>0]|0,s=s+1|0,l=l+1|0;return m|0}function p7(s){s=s|0;var l=0;return l=o[L+(s&255)>>0]|0,(l|0)<8?l|0:(l=o[L+(s>>8&255)>>0]|0,(l|0)<8?l+8|0:(l=o[L+(s>>16&255)>>0]|0,(l|0)<8?l+16|0:(o[L+(s>>>24)>>0]|0)+24|0))}function h7(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0;var m=0,B=0,Q=0,k=0,M=0,O=0,j=0,se=0,Ye=0,Le=0;if(O=s,k=l,M=k,B=c,se=f,Q=se,!M)return m=(d|0)!=0,Q?m?(n[d>>2]=s|0,n[d+4>>2]=l&0,se=0,d=0,Ee=se,d|0):(se=0,d=0,Ee=se,d|0):(m&&(n[d>>2]=(O>>>0)%(B>>>0),n[d+4>>2]=0),se=0,d=(O>>>0)/(B>>>0)>>>0,Ee=se,d|0);m=(Q|0)==0;do if(B){if(!m){if(m=(P(Q|0)|0)-(P(M|0)|0)|0,m>>>0<=31){j=m+1|0,Q=31-m|0,l=m-31>>31,B=j,s=O>>>(j>>>0)&l|M<<Q,l=M>>>(j>>>0)&l,m=0,Q=O<<Q;break}return d?(n[d>>2]=s|0,n[d+4>>2]=k|l&0,se=0,d=0,Ee=se,d|0):(se=0,d=0,Ee=se,d|0)}if(m=B-1|0,m&B|0){Q=(P(B|0)|0)+33-(P(M|0)|0)|0,Le=64-Q|0,j=32-Q|0,k=j>>31,Ye=Q-32|0,l=Ye>>31,B=Q,s=j-1>>31&M>>>(Ye>>>0)|(M<<j|O>>>(Q>>>0))&l,l=l&M>>>(Q>>>0),m=O<<Le&k,Q=(M<<Le|O>>>(Ye>>>0))&k|O<<j&Q-33>>31;break}return d|0&&(n[d>>2]=m&O,n[d+4>>2]=0),(B|0)==1?(Ye=k|l&0,Le=s|0|0,Ee=Ye,Le|0):(Le=p7(B|0)|0,Ye=M>>>(Le>>>0)|0,Le=M<<32-Le|O>>>(Le>>>0)|0,Ee=Ye,Le|0)}else{if(m)return d|0&&(n[d>>2]=(M>>>0)%(B>>>0),n[d+4>>2]=0),Ye=0,Le=(M>>>0)/(B>>>0)>>>0,Ee=Ye,Le|0;if(!O)return d|0&&(n[d>>2]=0,n[d+4>>2]=(M>>>0)%(Q>>>0)),Ye=0,Le=(M>>>0)/(Q>>>0)>>>0,Ee=Ye,Le|0;if(m=Q-1|0,!(m&Q))return d|0&&(n[d>>2]=s|0,n[d+4>>2]=m&M|l&0),Ye=0,Le=M>>>((p7(Q|0)|0)>>>0),Ee=Ye,Le|0;if(m=(P(Q|0)|0)-(P(M|0)|0)|0,m>>>0<=30){l=m+1|0,Q=31-m|0,B=l,s=M<<Q|O>>>(l>>>0),l=M>>>(l>>>0),m=0,Q=O<<Q;break}return d?(n[d>>2]=s|0,n[d+4>>2]=k|l&0,Ye=0,Le=0,Ee=Ye,Le|0):(Ye=0,Le=0,Ee=Ye,Le|0)}while(0);if(!B)M=Q,k=0,Q=0;else{j=c|0|0,O=se|f&0,M=DR(j|0,O|0,-1,-1)|0,c=Ee,k=Q,Q=0;do f=k,k=m>>>31|k<<1,m=Q|m<<1,f=s<<1|f>>>31|0,se=s>>>31|l<<1|0,iD(M|0,c|0,f|0,se|0)|0,Le=Ee,Ye=Le>>31|((Le|0)<0?-1:0)<<1,Q=Ye&1,s=iD(f|0,se|0,Ye&j|0,(((Le|0)<0?-1:0)>>31|((Le|0)<0?-1:0)<<1)&O|0)|0,l=Ee,B=B-1|0;while((B|0)!=0);M=k,k=0}return B=0,d|0&&(n[d>>2]=s,n[d+4>>2]=l),Ye=(m|0)>>>31|(M|B)<<1|(B<<1|m>>>31)&0|k,Le=(m<<1|0>>>31)&-2|Q,Ee=Ye,Le|0}function SR(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,h7(s,l,c,f,0)|0}function kp(s){s=s|0;var l=0,c=0;return c=s+15&-16|0,l=n[w>>2]|0,s=l+c|0,(c|0)>0&(s|0)<(l|0)|(s|0)<0?(ie()|0,xA(12),-1):(n[w>>2]=s,(s|0)>($()|0)&&(X()|0)==0?(n[w>>2]=l,xA(12),-1):l|0)}function bI(s,l,c){s=s|0,l=l|0,c=c|0;var f=0;if((l|0)<(s|0)&(s|0)<(l+c|0)){for(f=s,l=l+c|0,s=s+c|0;(c|0)>0;)s=s-1|0,l=l-1|0,c=c-1|0,o[s>>0]=o[l>>0]|0;s=f}else Cr(s,l,c)|0;return s|0}function PR(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0;var d=0,m=0;return m=E,E=E+16|0,d=m|0,h7(s,l,c,f,d)|0,E=m,Ee=n[d+4>>2]|0,n[d>>2]|0|0}function g7(s){return s=s|0,(s&255)<<24|(s>>8&255)<<16|(s>>16&255)<<8|s>>>24|0}function x3e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,d7[s&1](l|0,c|0,f|0,d|0,m|0)}function b3e(s,l,c){s=s|0,l=l|0,c=y(c),m7[s&1](l|0,y(c))}function Q3e(s,l,c){s=s|0,l=l|0,c=+c,y7[s&31](l|0,+c)}function k3e(s,l,c,f){return s=s|0,l=l|0,c=y(c),f=y(f),y(E7[s&0](l|0,y(c),y(f)))}function F3e(s,l){s=s|0,l=l|0,rf[s&127](l|0)}function R3e(s,l,c){s=s|0,l=l|0,c=c|0,nf[s&31](l|0,c|0)}function T3e(s,l){return s=s|0,l=l|0,Rg[s&31](l|0)|0}function N3e(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0,C7[s&1](l|0,+c,+f,d|0)}function L3e(s,l,c,f){s=s|0,l=l|0,c=+c,f=+f,d_e[s&1](l|0,+c,+f)}function O3e(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,aD[s&7](l|0,c|0,f|0)|0}function M3e(s,l,c,f){return s=s|0,l=l|0,c=c|0,f=f|0,+m_e[s&1](l|0,c|0,f|0)}function U3e(s,l){return s=s|0,l=l|0,+I7[s&15](l|0)}function _3e(s,l,c){return s=s|0,l=l|0,c=+c,y_e[s&1](l|0,+c)|0}function H3e(s,l,c){return s=s|0,l=l|0,c=c|0,bR[s&15](l|0,c|0)|0}function q3e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=+f,d=+d,m=m|0,E_e[s&1](l|0,c|0,+f,+d,m|0)}function j3e(s,l,c,f,d,m,B){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B=B|0,C_e[s&1](l|0,c|0,f|0,d|0,m|0,B|0)}function G3e(s,l,c){return s=s|0,l=l|0,c=c|0,+w7[s&7](l|0,c|0)}function W3e(s){return s=s|0,lD[s&7]()|0}function Y3e(s,l,c,f,d,m){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,B7[s&1](l|0,c|0,f|0,d|0,m|0)|0}function K3e(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=+d,I_e[s&1](l|0,c|0,f|0,+d)}function V3e(s,l,c,f,d,m,B){s=s|0,l=l|0,c=c|0,f=y(f),d=d|0,m=y(m),B=B|0,v7[s&1](l|0,c|0,y(f),d|0,y(m),B|0)}function J3e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,FI[s&15](l|0,c|0,f|0)}function z3e(s){s=s|0,D7[s&0]()}function X3e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f,S7[s&15](l|0,c|0,+f)}function Z3e(s,l,c){return s=s|0,l=+l,c=+c,w_e[s&1](+l,+c)|0}function $3e(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,QR[s&15](l|0,c|0,f|0,d|0)}function e_e(s,l,c,f,d){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,F(0)}function t_e(s,l){s=s|0,l=y(l),F(1)}function ya(s,l){s=s|0,l=+l,F(2)}function r_e(s,l,c){return s=s|0,l=y(l),c=y(c),F(3),$e}function hr(s){s=s|0,F(4)}function QI(s,l){s=s|0,l=l|0,F(5)}function $a(s){return s=s|0,F(6),0}function n_e(s,l,c,f){s=s|0,l=+l,c=+c,f=f|0,F(7)}function i_e(s,l,c){s=s|0,l=+l,c=+c,F(8)}function s_e(s,l,c){return s=s|0,l=l|0,c=c|0,F(9),0}function o_e(s,l,c){return s=s|0,l=l|0,c=c|0,F(10),0}function Fg(s){return s=s|0,F(11),0}function a_e(s,l){return s=s|0,l=+l,F(12),0}function kI(s,l){return s=s|0,l=l|0,F(13),0}function l_e(s,l,c,f,d){s=s|0,l=l|0,c=+c,f=+f,d=d|0,F(14)}function c_e(s,l,c,f,d,m){s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,m=m|0,F(15)}function xR(s,l){return s=s|0,l=l|0,F(16),0}function u_e(){return F(17),0}function A_e(s,l,c,f,d){return s=s|0,l=l|0,c=c|0,f=f|0,d=d|0,F(18),0}function f_e(s,l,c,f){s=s|0,l=l|0,c=c|0,f=+f,F(19)}function p_e(s,l,c,f,d,m){s=s|0,l=l|0,c=y(c),f=f|0,d=y(d),m=m|0,F(20)}function oD(s,l,c){s=s|0,l=l|0,c=c|0,F(21)}function h_e(){F(22)}function ey(s,l,c){s=s|0,l=l|0,c=+c,F(23)}function g_e(s,l){return s=+s,l=+l,F(24),0}function ty(s,l,c,f){s=s|0,l=l|0,c=c|0,f=f|0,F(25)}var d7=[e_e,AOe],m7=[t_e,uo],y7=[ya,CI,II,gF,dF,bl,wI,mF,Gm,Fu,vI,yF,Hv,VA,qv,Wm,jv,Gv,Ym,ya,ya,ya,ya,ya,ya,ya,ya,ya,ya,ya,ya,ya],E7=[r_e],rf=[hr,Zm,WDe,YDe,KDe,wbe,Bbe,vbe,_Ne,HNe,qNe,ZLe,$Le,eOe,CUe,IUe,wUe,ds,Lv,jm,KA,BI,Hve,qve,NDe,tSe,pSe,kSe,KSe,uPe,PPe,qPe,nxe,Exe,Nxe,Xxe,pbe,Hbe,nQe,EQe,NQe,XQe,pke,Fke,Kke,aFe,BFe,kc,eRe,dRe,NRe,$Re,hTe,NTe,WTe,VTe,ANe,hNe,kNe,GNe,KNe,uLe,xLe,r9,cMe,_Me,t4e,d4e,M4e,$4e,uUe,pUe,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr,hr],nf=[QI,lF,cF,EI,ku,uF,AF,Bp,fF,pF,hF,_v,JA,Je,ft,jt,Er,In,Sr,CF,xve,Xve,Lke,zke,nTe,fMe,LLe,_5,QI,QI,QI,QI],Rg=[$a,XUe,aF,D,ce,Se,It,Et,bt,Nr,fi,Ao,Dve,Sve,jve,SFe,yTe,pLe,dMe,za,$a,$a,$a,$a,$a,$a,$a,$a,$a,$a,$a,$a],C7=[n_e,Gve],d_e=[i_e,TNe],aD=[s_e,e7,ZUe,t3e,hPe,Wbe,iRe,C4e],m_e=[o_e,Uxe],I7=[Fg,qo,rt,wn,Wve,Yve,Kve,Vve,Jve,zve,Fg,Fg,Fg,Fg,Fg,Fg],y_e=[a_e,qTe],bR=[kI,w3e,Pve,UDe,NSe,QPe,WPe,mbe,aQe,AFe,Tv,s4e,kI,kI,kI,kI],E_e=[l_e,mSe],C_e=[c_e,q4e],w7=[xR,ni,Zve,$ve,eDe,tbe,xR,xR],lD=[u_e,tDe,mI,da,ZTe,yNe,XNe,mUe],B7=[A_e,AI],I_e=[f_e,UQe],v7=[p_e,bve],FI=[oD,T,is,Xr,fo,XSe,oxe,tke,mke,qm,TOe,GMe,nUe,oD,oD,oD],D7=[h_e],S7=[ey,Ov,Mv,Uv,YA,Wv,EF,S,BQe,CRe,MTe,ey,ey,ey,ey,ey],w_e=[g_e,MNe],QR=[ty,Bxe,TFe,URe,PTe,iNe,vNe,iLe,RLe,wMe,xUe,ty,ty,ty,ty,ty];return{_llvm_bswap_i32:g7,dynCall_idd:Z3e,dynCall_i:W3e,_i64Subtract:iD,___udivdi3:SR,dynCall_vif:b3e,setThrew:Cu,dynCall_viii:J3e,_bitshift64Lshr:sD,_bitshift64Shl:f7,dynCall_vi:F3e,dynCall_viiddi:q3e,dynCall_diii:M3e,dynCall_iii:H3e,_memset:$m,_sbrk:kp,_memcpy:Cr,__GLOBAL__sub_I_Yoga_cpp:Hm,dynCall_vii:R3e,___uremdi3:PR,dynCall_vid:Q3e,stackAlloc:so,_nbind_init:UUe,getTempRet0:Ha,dynCall_di:U3e,dynCall_iid:_3e,setTempRet0:FA,_i64Add:DR,dynCall_fiff:k3e,dynCall_iiii:O3e,_emscripten_get_global_libc:zUe,dynCall_viid:X3e,dynCall_viiid:K3e,dynCall_viififi:V3e,dynCall_ii:T3e,__GLOBAL__sub_I_Binding_cc:tMe,dynCall_viiii:$3e,dynCall_iiiiii:Y3e,stackSave:vl,dynCall_viiiii:x3e,__GLOBAL__sub_I_nbind_cc:rDe,dynCall_vidd:L3e,_free:rD,runPostSets:P3e,dynCall_viiiiii:j3e,establishStackSpace:qi,_memmove:bI,stackRestore:Eu,_malloc:tD,__GLOBAL__sub_I_common_cc:ILe,dynCall_viddi:N3e,dynCall_dii:G3e,dynCall_v:z3e}}(Module.asmGlobalArg,Module.asmLibraryArg,buffer),_llvm_bswap_i32=Module._llvm_bswap_i32=asm._llvm_bswap_i32,getTempRet0=Module.getTempRet0=asm.getTempRet0,___udivdi3=Module.___udivdi3=asm.___udivdi3,setThrew=Module.setThrew=asm.setThrew,_bitshift64Lshr=Module._bitshift64Lshr=asm._bitshift64Lshr,_bitshift64Shl=Module._bitshift64Shl=asm._bitshift64Shl,_memset=Module._memset=asm._memset,_sbrk=Module._sbrk=asm._sbrk,_memcpy=Module._memcpy=asm._memcpy,stackAlloc=Module.stackAlloc=asm.stackAlloc,___uremdi3=Module.___uremdi3=asm.___uremdi3,_nbind_init=Module._nbind_init=asm._nbind_init,_i64Subtract=Module._i64Subtract=asm._i64Subtract,setTempRet0=Module.setTempRet0=asm.setTempRet0,_i64Add=Module._i64Add=asm._i64Add,_emscripten_get_global_libc=Module._emscripten_get_global_libc=asm._emscripten_get_global_libc,__GLOBAL__sub_I_Yoga_cpp=Module.__GLOBAL__sub_I_Yoga_cpp=asm.__GLOBAL__sub_I_Yoga_cpp,__GLOBAL__sub_I_Binding_cc=Module.__GLOBAL__sub_I_Binding_cc=asm.__GLOBAL__sub_I_Binding_cc,stackSave=Module.stackSave=asm.stackSave,__GLOBAL__sub_I_nbind_cc=Module.__GLOBAL__sub_I_nbind_cc=asm.__GLOBAL__sub_I_nbind_cc,_free=Module._free=asm._free,runPostSets=Module.runPostSets=asm.runPostSets,establishStackSpace=Module.establishStackSpace=asm.establishStackSpace,_memmove=Module._memmove=asm._memmove,stackRestore=Module.stackRestore=asm.stackRestore,_malloc=Module._malloc=asm._malloc,__GLOBAL__sub_I_common_cc=Module.__GLOBAL__sub_I_common_cc=asm.__GLOBAL__sub_I_common_cc,dynCall_viiiii=Module.dynCall_viiiii=asm.dynCall_viiiii,dynCall_vif=Module.dynCall_vif=asm.dynCall_vif,dynCall_vid=Module.dynCall_vid=asm.dynCall_vid,dynCall_fiff=Module.dynCall_fiff=asm.dynCall_fiff,dynCall_vi=Module.dynCall_vi=asm.dynCall_vi,dynCall_vii=Module.dynCall_vii=asm.dynCall_vii,dynCall_ii=Module.dynCall_ii=asm.dynCall_ii,dynCall_viddi=Module.dynCall_viddi=asm.dynCall_viddi,dynCall_vidd=Module.dynCall_vidd=asm.dynCall_vidd,dynCall_iiii=Module.dynCall_iiii=asm.dynCall_iiii,dynCall_diii=Module.dynCall_diii=asm.dynCall_diii,dynCall_di=Module.dynCall_di=asm.dynCall_di,dynCall_iid=Module.dynCall_iid=asm.dynCall_iid,dynCall_iii=Module.dynCall_iii=asm.dynCall_iii,dynCall_viiddi=Module.dynCall_viiddi=asm.dynCall_viiddi,dynCall_viiiiii=Module.dynCall_viiiiii=asm.dynCall_viiiiii,dynCall_dii=Module.dynCall_dii=asm.dynCall_dii,dynCall_i=Module.dynCall_i=asm.dynCall_i,dynCall_iiiiii=Module.dynCall_iiiiii=asm.dynCall_iiiiii,dynCall_viiid=Module.dynCall_viiid=asm.dynCall_viiid,dynCall_viififi=Module.dynCall_viififi=asm.dynCall_viififi,dynCall_viii=Module.dynCall_viii=asm.dynCall_viii,dynCall_v=Module.dynCall_v=asm.dynCall_v,dynCall_viid=Module.dynCall_viid=asm.dynCall_viid,dynCall_idd=Module.dynCall_idd=asm.dynCall_idd,dynCall_viiii=Module.dynCall_viiii=asm.dynCall_viiii;Runtime.stackAlloc=Module.stackAlloc,Runtime.stackSave=Module.stackSave,Runtime.stackRestore=Module.stackRestore,Runtime.establishStackSpace=Module.establishStackSpace,Runtime.setTempRet0=Module.setTempRet0,Runtime.getTempRet0=Module.getTempRet0,Module.asm=asm;function ExitStatus(t){this.name="ExitStatus",this.message="Program terminated with exit("+t+")",this.status=t}ExitStatus.prototype=new Error,ExitStatus.prototype.constructor=ExitStatus;var initialStackTop,preloadStartTime=null,calledMain=!1;dependenciesFulfilled=function t(){Module.calledRun||run(),Module.calledRun||(dependenciesFulfilled=t)},Module.callMain=Module.callMain=function t(e){e=e||[],ensureInitRuntime();var r=e.length+1;function o(){for(var p=0;p<4-1;p++)a.push(0)}var a=[allocate(intArrayFromString(Module.thisProgram),"i8",ALLOC_NORMAL)];o();for(var n=0;n<r-1;n=n+1)a.push(allocate(intArrayFromString(e[n]),"i8",ALLOC_NORMAL)),o();a.push(0),a=allocate(a,"i32",ALLOC_NORMAL);try{var u=Module._main(r,a,0);exit(u,!0)}catch(p){if(p instanceof ExitStatus)return;if(p=="SimulateInfiniteLoop"){Module.noExitRuntime=!0;return}else{var A=p;p&&typeof p=="object"&&p.stack&&(A=[p,p.stack]),Module.printErr("exception thrown: "+A),Module.quit(1,p)}}finally{calledMain=!0}};function run(t){if(t=t||Module.arguments,preloadStartTime===null&&(preloadStartTime=Date.now()),runDependencies>0||(preRun(),runDependencies>0)||Module.calledRun)return;function e(){Module.calledRun||(Module.calledRun=!0,!ABORT&&(ensureInitRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),Module._main&&shouldRunNow&&Module.callMain(t),postRun()))}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),e()},1)):e()}Module.run=Module.run=run;function exit(t,e){e&&Module.noExitRuntime||(Module.noExitRuntime||(ABORT=!0,EXITSTATUS=t,STACKTOP=initialStackTop,exitRuntime(),Module.onExit&&Module.onExit(t)),ENVIRONMENT_IS_NODE&&process.exit(t),Module.quit(t,new ExitStatus(t)))}Module.exit=Module.exit=exit;var abortDecorators=[];function abort(t){Module.onAbort&&Module.onAbort(t),t!==void 0?(Module.print(t),Module.printErr(t),t=JSON.stringify(t)):t="",ABORT=!0,EXITSTATUS=1;var e=` |
286 | If this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.`,r="abort("+t+") at "+stackTrace()+e;throw abortDecorators&&abortDecorators.forEach(function(o){r=o(r,t)}),r}if(Module.abort=Module.abort=abort,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run()})});var om=U((dYt,zEe)=>{"use strict";var Jmt=JEe(),Vmt=VEe(),P6=!1,x6=null;Vmt({},function(t,e){if(!P6){if(P6=!0,t)throw t;x6=e}});if(!P6)throw new Error("Failed to load the yoga module - it needed to be loaded synchronously, but didn't");zEe.exports=Jmt(x6.bind,x6.lib)});var Q6=U((mYt,b6)=>{"use strict";var XEe=t=>Number.isNaN(t)?!1:t>=4352&&(t<=4447||t===9001||t===9002||11904<=t&&t<=12871&&t!==12351||12880<=t&&t<=19903||19968<=t&&t<=42182||43360<=t&&t<=43388||44032<=t&&t<=55203||63744<=t&&t<=64255||65040<=t&&t<=65049||65072<=t&&t<=65131||65281<=t&&t<=65376||65504<=t&&t<=65510||110592<=t&&t<=110593||127488<=t&&t<=127569||131072<=t&&t<=262141);b6.exports=XEe;b6.exports.default=XEe});var $Ee=U((yYt,ZEe)=>{"use strict";ZEe.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}});var FQ=U((EYt,k6)=>{"use strict";var zmt=ES(),Xmt=Q6(),Zmt=$Ee(),eCe=t=>{if(typeof t!="string"||t.length===0||(t=zmt(t),t.length===0))return 0;t=t.replace(Zmt()," ");let e=0;for(let r=0;r<t.length;r++){let o=t.codePointAt(r);o<=31||o>=127&&o<=159||o>=768&&o<=879||(o>65535&&r++,e+=Xmt(o)?2:1)}return e};k6.exports=eCe;k6.exports.default=eCe});var R6=U((CYt,F6)=>{"use strict";var $mt=FQ(),tCe=t=>{let e=0;for(let r of t.split(` | 286 | If this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.`,r="abort("+t+") at "+stackTrace()+e;throw abortDecorators&&abortDecorators.forEach(function(o){r=o(r,t)}),r}if(Module.abort=Module.abort=abort,Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run()})});var um=U((QYt,iCe)=>{"use strict";var uyt=rCe(),Ayt=nCe(),Q6=!1,k6=null;Ayt({},function(t,e){if(!Q6){if(Q6=!0,t)throw t;k6=e}});if(!Q6)throw new Error("Failed to load the yoga module - it needed to be loaded synchronously, but didn't");iCe.exports=uyt(k6.bind,k6.lib)});var R6=U((kYt,F6)=>{"use strict";var sCe=t=>Number.isNaN(t)?!1:t>=4352&&(t<=4447||t===9001||t===9002||11904<=t&&t<=12871&&t!==12351||12880<=t&&t<=19903||19968<=t&&t<=42182||43360<=t&&t<=43388||44032<=t&&t<=55203||63744<=t&&t<=64255||65040<=t&&t<=65049||65072<=t&&t<=65131||65281<=t&&t<=65376||65504<=t&&t<=65510||110592<=t&&t<=110593||127488<=t&&t<=127569||131072<=t&&t<=262141);F6.exports=sCe;F6.exports.default=sCe});var aCe=U((FYt,oCe)=>{"use strict";oCe.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}});var qQ=U((RYt,T6)=>{"use strict";var fyt=xS(),pyt=R6(),hyt=aCe(),lCe=t=>{if(typeof t!="string"||t.length===0||(t=fyt(t),t.length===0))return 0;t=t.replace(hyt()," ");let e=0;for(let r=0;r<t.length;r++){let o=t.codePointAt(r);o<=31||o>=127&&o<=159||o>=768&&o<=879||(o>65535&&r++,e+=pyt(o)?2:1)}return e};T6.exports=lCe;T6.exports.default=lCe});var L6=U((TYt,N6)=>{"use strict";var gyt=qQ(),cCe=t=>{let e=0;for(let r of t.split(` |
287 | `))e=Math.max(e,$mt(r));return e};F6.exports=tCe;F6.exports.default=tCe});var rCe=U(W2=>{"use strict";var eyt=W2&&W2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(W2,"__esModule",{value:!0});var tyt=eyt(R6()),T6={};W2.default=t=>{if(t.length===0)return{width:0,height:0};if(T6[t])return T6[t];let e=tyt.default(t),r=t.split(` | 287 | `))e=Math.max(e,gyt(r));return e};N6.exports=cCe;N6.exports.default=cCe});var uCe=U(X2=>{"use strict";var dyt=X2&&X2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(X2,"__esModule",{value:!0});var myt=dyt(L6()),O6={};X2.default=t=>{if(t.length===0)return{width:0,height:0};if(O6[t])return O6[t];let e=myt.default(t),r=t.split(` |
288 | `).length;return T6[t]={width:e,height:r},{width:e,height:r}}});var nCe=U(Y2=>{"use strict";var ryt=Y2&&Y2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Y2,"__esModule",{value:!0});var fn=ryt(om()),nyt=(t,e)=>{"position"in e&&t.setPositionType(e.position==="absolute"?fn.default.POSITION_TYPE_ABSOLUTE:fn.default.POSITION_TYPE_RELATIVE)},iyt=(t,e)=>{"marginLeft"in e&&t.setMargin(fn.default.EDGE_START,e.marginLeft||0),"marginRight"in e&&t.setMargin(fn.default.EDGE_END,e.marginRight||0),"marginTop"in e&&t.setMargin(fn.default.EDGE_TOP,e.marginTop||0),"marginBottom"in e&&t.setMargin(fn.default.EDGE_BOTTOM,e.marginBottom||0)},syt=(t,e)=>{"paddingLeft"in e&&t.setPadding(fn.default.EDGE_LEFT,e.paddingLeft||0),"paddingRight"in e&&t.setPadding(fn.default.EDGE_RIGHT,e.paddingRight||0),"paddingTop"in e&&t.setPadding(fn.default.EDGE_TOP,e.paddingTop||0),"paddingBottom"in e&&t.setPadding(fn.default.EDGE_BOTTOM,e.paddingBottom||0)},oyt=(t,e)=>{var r;"flexGrow"in e&&t.setFlexGrow((r=e.flexGrow)!==null&&r!==void 0?r:0),"flexShrink"in e&&t.setFlexShrink(typeof e.flexShrink=="number"?e.flexShrink:1),"flexDirection"in e&&(e.flexDirection==="row"&&t.setFlexDirection(fn.default.FLEX_DIRECTION_ROW),e.flexDirection==="row-reverse"&&t.setFlexDirection(fn.default.FLEX_DIRECTION_ROW_REVERSE),e.flexDirection==="column"&&t.setFlexDirection(fn.default.FLEX_DIRECTION_COLUMN),e.flexDirection==="column-reverse"&&t.setFlexDirection(fn.default.FLEX_DIRECTION_COLUMN_REVERSE)),"flexBasis"in e&&(typeof e.flexBasis=="number"?t.setFlexBasis(e.flexBasis):typeof e.flexBasis=="string"?t.setFlexBasisPercent(Number.parseInt(e.flexBasis,10)):t.setFlexBasis(NaN)),"alignItems"in e&&((e.alignItems==="stretch"||!e.alignItems)&&t.setAlignItems(fn.default.ALIGN_STRETCH),e.alignItems==="flex-start"&&t.setAlignItems(fn.default.ALIGN_FLEX_START),e.alignItems==="center"&&t.setAlignItems(fn.default.ALIGN_CENTER),e.alignItems==="flex-end"&&t.setAlignItems(fn.default.ALIGN_FLEX_END)),"alignSelf"in e&&((e.alignSelf==="auto"||!e.alignSelf)&&t.setAlignSelf(fn.default.ALIGN_AUTO),e.alignSelf==="flex-start"&&t.setAlignSelf(fn.default.ALIGN_FLEX_START),e.alignSelf==="center"&&t.setAlignSelf(fn.default.ALIGN_CENTER),e.alignSelf==="flex-end"&&t.setAlignSelf(fn.default.ALIGN_FLEX_END)),"justifyContent"in e&&((e.justifyContent==="flex-start"||!e.justifyContent)&&t.setJustifyContent(fn.default.JUSTIFY_FLEX_START),e.justifyContent==="center"&&t.setJustifyContent(fn.default.JUSTIFY_CENTER),e.justifyContent==="flex-end"&&t.setJustifyContent(fn.default.JUSTIFY_FLEX_END),e.justifyContent==="space-between"&&t.setJustifyContent(fn.default.JUSTIFY_SPACE_BETWEEN),e.justifyContent==="space-around"&&t.setJustifyContent(fn.default.JUSTIFY_SPACE_AROUND))},ayt=(t,e)=>{var r,o;"width"in e&&(typeof e.width=="number"?t.setWidth(e.width):typeof e.width=="string"?t.setWidthPercent(Number.parseInt(e.width,10)):t.setWidthAuto()),"height"in e&&(typeof e.height=="number"?t.setHeight(e.height):typeof e.height=="string"?t.setHeightPercent(Number.parseInt(e.height,10)):t.setHeightAuto()),"minWidth"in e&&(typeof e.minWidth=="string"?t.setMinWidthPercent(Number.parseInt(e.minWidth,10)):t.setMinWidth((r=e.minWidth)!==null&&r!==void 0?r:0)),"minHeight"in e&&(typeof e.minHeight=="string"?t.setMinHeightPercent(Number.parseInt(e.minHeight,10)):t.setMinHeight((o=e.minHeight)!==null&&o!==void 0?o:0))},lyt=(t,e)=>{"display"in e&&t.setDisplay(e.display==="flex"?fn.default.DISPLAY_FLEX:fn.default.DISPLAY_NONE)},cyt=(t,e)=>{if("borderStyle"in e){let r=typeof e.borderStyle=="string"?1:0;t.setBorder(fn.default.EDGE_TOP,r),t.setBorder(fn.default.EDGE_BOTTOM,r),t.setBorder(fn.default.EDGE_LEFT,r),t.setBorder(fn.default.EDGE_RIGHT,r)}};Y2.default=(t,e={})=>{nyt(t,e),iyt(t,e),syt(t,e),oyt(t,e),ayt(t,e),lyt(t,e),cyt(t,e)}});var oCe=U((BYt,sCe)=>{"use strict";var K2=FQ(),uyt=ES(),Ayt=Aw(),L6=new Set(["\x1B","\x9B"]),fyt=39,iCe=t=>`${L6.values().next().value}[${t}m`,pyt=t=>t.split(" ").map(e=>K2(e)),N6=(t,e,r)=>{let o=[...e],a=!1,n=K2(uyt(t[t.length-1]));for(let[u,A]of o.entries()){let p=K2(A);if(n+p<=r?t[t.length-1]+=A:(t.push(A),n=0),L6.has(A))a=!0;else if(a&&A==="m"){a=!1;continue}a||(n+=p,n===r&&u<o.length-1&&(t.push(""),n=0))}!n&&t[t.length-1].length>0&&t.length>1&&(t[t.length-2]+=t.pop())},hyt=t=>{let e=t.split(" "),r=e.length;for(;r>0&&!(K2(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(" ")+e.slice(r).join("")},gyt=(t,e,r={})=>{if(r.trim!==!1&&t.trim()==="")return"";let o="",a="",n,u=pyt(t),A=[""];for(let[p,h]of t.split(" ").entries()){r.trim!==!1&&(A[A.length-1]=A[A.length-1].trimLeft());let C=K2(A[A.length-1]);if(p!==0&&(C>=e&&(r.wordWrap===!1||r.trim===!1)&&(A.push(""),C=0),(C>0||r.trim===!1)&&(A[A.length-1]+=" ",C++)),r.hard&&u[p]>e){let w=e-C,v=1+Math.floor((u[p]-w-1)/e);Math.floor((u[p]-1)/e)<v&&A.push(""),N6(A,h,e);continue}if(C+u[p]>e&&C>0&&u[p]>0){if(r.wordWrap===!1&&C<e){N6(A,h,e);continue}A.push("")}if(C+u[p]>e&&r.wordWrap===!1){N6(A,h,e);continue}A[A.length-1]+=h}r.trim!==!1&&(A=A.map(hyt)),o=A.join(` | 288 | `).length;return O6[t]={width:e,height:r},{width:e,height:r}}});var ACe=U(Z2=>{"use strict";var yyt=Z2&&Z2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Z2,"__esModule",{value:!0});var fn=yyt(um()),Eyt=(t,e)=>{"position"in e&&t.setPositionType(e.position==="absolute"?fn.default.POSITION_TYPE_ABSOLUTE:fn.default.POSITION_TYPE_RELATIVE)},Cyt=(t,e)=>{"marginLeft"in e&&t.setMargin(fn.default.EDGE_START,e.marginLeft||0),"marginRight"in e&&t.setMargin(fn.default.EDGE_END,e.marginRight||0),"marginTop"in e&&t.setMargin(fn.default.EDGE_TOP,e.marginTop||0),"marginBottom"in e&&t.setMargin(fn.default.EDGE_BOTTOM,e.marginBottom||0)},Iyt=(t,e)=>{"paddingLeft"in e&&t.setPadding(fn.default.EDGE_LEFT,e.paddingLeft||0),"paddingRight"in e&&t.setPadding(fn.default.EDGE_RIGHT,e.paddingRight||0),"paddingTop"in e&&t.setPadding(fn.default.EDGE_TOP,e.paddingTop||0),"paddingBottom"in e&&t.setPadding(fn.default.EDGE_BOTTOM,e.paddingBottom||0)},wyt=(t,e)=>{var r;"flexGrow"in e&&t.setFlexGrow((r=e.flexGrow)!==null&&r!==void 0?r:0),"flexShrink"in e&&t.setFlexShrink(typeof e.flexShrink=="number"?e.flexShrink:1),"flexDirection"in e&&(e.flexDirection==="row"&&t.setFlexDirection(fn.default.FLEX_DIRECTION_ROW),e.flexDirection==="row-reverse"&&t.setFlexDirection(fn.default.FLEX_DIRECTION_ROW_REVERSE),e.flexDirection==="column"&&t.setFlexDirection(fn.default.FLEX_DIRECTION_COLUMN),e.flexDirection==="column-reverse"&&t.setFlexDirection(fn.default.FLEX_DIRECTION_COLUMN_REVERSE)),"flexBasis"in e&&(typeof e.flexBasis=="number"?t.setFlexBasis(e.flexBasis):typeof e.flexBasis=="string"?t.setFlexBasisPercent(Number.parseInt(e.flexBasis,10)):t.setFlexBasis(NaN)),"alignItems"in e&&((e.alignItems==="stretch"||!e.alignItems)&&t.setAlignItems(fn.default.ALIGN_STRETCH),e.alignItems==="flex-start"&&t.setAlignItems(fn.default.ALIGN_FLEX_START),e.alignItems==="center"&&t.setAlignItems(fn.default.ALIGN_CENTER),e.alignItems==="flex-end"&&t.setAlignItems(fn.default.ALIGN_FLEX_END)),"alignSelf"in e&&((e.alignSelf==="auto"||!e.alignSelf)&&t.setAlignSelf(fn.default.ALIGN_AUTO),e.alignSelf==="flex-start"&&t.setAlignSelf(fn.default.ALIGN_FLEX_START),e.alignSelf==="center"&&t.setAlignSelf(fn.default.ALIGN_CENTER),e.alignSelf==="flex-end"&&t.setAlignSelf(fn.default.ALIGN_FLEX_END)),"justifyContent"in e&&((e.justifyContent==="flex-start"||!e.justifyContent)&&t.setJustifyContent(fn.default.JUSTIFY_FLEX_START),e.justifyContent==="center"&&t.setJustifyContent(fn.default.JUSTIFY_CENTER),e.justifyContent==="flex-end"&&t.setJustifyContent(fn.default.JUSTIFY_FLEX_END),e.justifyContent==="space-between"&&t.setJustifyContent(fn.default.JUSTIFY_SPACE_BETWEEN),e.justifyContent==="space-around"&&t.setJustifyContent(fn.default.JUSTIFY_SPACE_AROUND))},Byt=(t,e)=>{var r,o;"width"in e&&(typeof e.width=="number"?t.setWidth(e.width):typeof e.width=="string"?t.setWidthPercent(Number.parseInt(e.width,10)):t.setWidthAuto()),"height"in e&&(typeof e.height=="number"?t.setHeight(e.height):typeof e.height=="string"?t.setHeightPercent(Number.parseInt(e.height,10)):t.setHeightAuto()),"minWidth"in e&&(typeof e.minWidth=="string"?t.setMinWidthPercent(Number.parseInt(e.minWidth,10)):t.setMinWidth((r=e.minWidth)!==null&&r!==void 0?r:0)),"minHeight"in e&&(typeof e.minHeight=="string"?t.setMinHeightPercent(Number.parseInt(e.minHeight,10)):t.setMinHeight((o=e.minHeight)!==null&&o!==void 0?o:0))},vyt=(t,e)=>{"display"in e&&t.setDisplay(e.display==="flex"?fn.default.DISPLAY_FLEX:fn.default.DISPLAY_NONE)},Dyt=(t,e)=>{if("borderStyle"in e){let r=typeof e.borderStyle=="string"?1:0;t.setBorder(fn.default.EDGE_TOP,r),t.setBorder(fn.default.EDGE_BOTTOM,r),t.setBorder(fn.default.EDGE_LEFT,r),t.setBorder(fn.default.EDGE_RIGHT,r)}};Z2.default=(t,e={})=>{Eyt(t,e),Cyt(t,e),Iyt(t,e),wyt(t,e),Byt(t,e),vyt(t,e),Dyt(t,e)}});var hCe=U((OYt,pCe)=>{"use strict";var $2=qQ(),Syt=xS(),Pyt=dw(),U6=new Set(["\x1B","\x9B"]),xyt=39,fCe=t=>`${U6.values().next().value}[${t}m`,byt=t=>t.split(" ").map(e=>$2(e)),M6=(t,e,r)=>{let o=[...e],a=!1,n=$2(Syt(t[t.length-1]));for(let[u,A]of o.entries()){let p=$2(A);if(n+p<=r?t[t.length-1]+=A:(t.push(A),n=0),U6.has(A))a=!0;else if(a&&A==="m"){a=!1;continue}a||(n+=p,n===r&&u<o.length-1&&(t.push(""),n=0))}!n&&t[t.length-1].length>0&&t.length>1&&(t[t.length-2]+=t.pop())},Qyt=t=>{let e=t.split(" "),r=e.length;for(;r>0&&!($2(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(" ")+e.slice(r).join("")},kyt=(t,e,r={})=>{if(r.trim!==!1&&t.trim()==="")return"";let o="",a="",n,u=byt(t),A=[""];for(let[p,h]of t.split(" ").entries()){r.trim!==!1&&(A[A.length-1]=A[A.length-1].trimLeft());let C=$2(A[A.length-1]);if(p!==0&&(C>=e&&(r.wordWrap===!1||r.trim===!1)&&(A.push(""),C=0),(C>0||r.trim===!1)&&(A[A.length-1]+=" ",C++)),r.hard&&u[p]>e){let w=e-C,v=1+Math.floor((u[p]-w-1)/e);Math.floor((u[p]-1)/e)<v&&A.push(""),M6(A,h,e);continue}if(C+u[p]>e&&C>0&&u[p]>0){if(r.wordWrap===!1&&C<e){M6(A,h,e);continue}A.push("")}if(C+u[p]>e&&r.wordWrap===!1){M6(A,h,e);continue}A[A.length-1]+=h}r.trim!==!1&&(A=A.map(Qyt)),o=A.join(` |
289 | `);for(let[p,h]of[...o].entries()){if(a+=h,L6.has(h)){let w=parseFloat(/\d[^m]*/.exec(o.slice(p,p+4)));n=w===fyt?null:w}let C=Ayt.codes.get(Number(n));n&&C&&(o[p+1]===` | 289 | `);for(let[p,h]of[...o].entries()){if(a+=h,U6.has(h)){let w=parseFloat(/\d[^m]*/.exec(o.slice(p,p+4)));n=w===xyt?null:w}let C=Pyt.codes.get(Number(n));n&&C&&(o[p+1]===` |
290 | `?a+=iCe(C):h===` | 290 | `?a+=fCe(C):h===` |
291 | `&&(a+=iCe(n)))}return a};sCe.exports=(t,e,r)=>String(t).normalize().replace(/\r\n/g,` | 291 | `&&(a+=fCe(n)))}return a};pCe.exports=(t,e,r)=>String(t).normalize().replace(/\r\n/g,` |
292 | `).split(` | 292 | `).split(` |
293 | `).map(o=>gyt(o,e,r)).join(` | 293 | `).map(o=>kyt(o,e,r)).join(` |
294 | `)});var cCe=U((vYt,lCe)=>{"use strict";var aCe="[\uD800-\uDBFF][\uDC00-\uDFFF]",dyt=t=>t&&t.exact?new RegExp(`^${aCe}$`):new RegExp(aCe,"g");lCe.exports=dyt});var O6=U((DYt,pCe)=>{"use strict";var myt=Q6(),yyt=cCe(),uCe=Aw(),fCe=["\x1B","\x9B"],RQ=t=>`${fCe[0]}[${t}m`,ACe=(t,e,r)=>{let o=[];t=[...t];for(let a of t){let n=a;a.match(";")&&(a=a.split(";")[0][0]+"0");let u=uCe.codes.get(parseInt(a,10));if(u){let A=t.indexOf(u.toString());A>=0?t.splice(A,1):o.push(RQ(e?u:n))}else if(e){o.push(RQ(0));break}else o.push(RQ(n))}if(e&&(o=o.filter((a,n)=>o.indexOf(a)===n),r!==void 0)){let a=RQ(uCe.codes.get(parseInt(r,10)));o=o.reduce((n,u)=>u===a?[u,...n]:[...n,u],[])}return o.join("")};pCe.exports=(t,e,r)=>{let o=[...t.normalize()],a=[];r=typeof r=="number"?r:o.length;let n=!1,u,A=0,p="";for(let[h,C]of o.entries()){let w=!1;if(fCe.includes(C)){let v=/\d[^m]*/.exec(t.slice(h,h+18));u=v&&v.length>0?v[0]:void 0,A<r&&(n=!0,u!==void 0&&a.push(u))}else n&&C==="m"&&(n=!1,w=!0);if(!n&&!w&&++A,!yyt({exact:!0}).test(C)&&myt(C.codePointAt())&&++A,A>e&&A<=r)p+=C;else if(A===e&&!n&&u!==void 0)p=ACe(a);else if(A>=r){p+=ACe(a,!0,u);break}}return p}});var gCe=U((SYt,hCe)=>{"use strict";var gh=O6(),Eyt=FQ();function TQ(t,e,r){if(t.charAt(e)===" ")return e;for(let o=1;o<=3;o++)if(r){if(t.charAt(e+o)===" ")return e+o}else if(t.charAt(e-o)===" ")return e-o;return e}hCe.exports=(t,e,r)=>{r={position:"end",preferTruncationOnSpace:!1,...r};let{position:o,space:a,preferTruncationOnSpace:n}=r,u="\u2026",A=1;if(typeof t!="string")throw new TypeError(`Expected \`input\` to be a string, got ${typeof t}`);if(typeof e!="number")throw new TypeError(`Expected \`columns\` to be a number, got ${typeof e}`);if(e<1)return"";if(e===1)return u;let p=Eyt(t);if(p<=e)return t;if(o==="start"){if(n){let h=TQ(t,p-e+1,!0);return u+gh(t,h,p).trim()}return a===!0&&(u+=" ",A=2),u+gh(t,p-e+A,p)}if(o==="middle"){a===!0&&(u=" "+u+" ",A=3);let h=Math.floor(e/2);if(n){let C=TQ(t,h),w=TQ(t,p-(e-h)+1,!0);return gh(t,0,C)+u+gh(t,w,p).trim()}return gh(t,0,h)+u+gh(t,p-(e-h)+A,p)}if(o==="end"){if(n){let h=TQ(t,e-1);return gh(t,0,h)+u}return a===!0&&(u=" "+u,A=2),gh(t,0,e-A)+u}throw new Error(`Expected \`options.position\` to be either \`start\`, \`middle\` or \`end\`, got ${o}`)}});var U6=U(J2=>{"use strict";var dCe=J2&&J2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(J2,"__esModule",{value:!0});var Cyt=dCe(oCe()),Iyt=dCe(gCe()),M6={};J2.default=(t,e,r)=>{let o=t+String(e)+String(r);if(M6[o])return M6[o];let a=t;if(r==="wrap"&&(a=Cyt.default(t,e,{trim:!1,hard:!0})),r.startsWith("truncate")){let n="end";r==="truncate-middle"&&(n="middle"),r==="truncate-start"&&(n="start"),a=Iyt.default(t,e,{position:n})}return M6[o]=a,a}});var H6=U(_6=>{"use strict";Object.defineProperty(_6,"__esModule",{value:!0});var mCe=t=>{let e="";if(t.childNodes.length>0)for(let r of t.childNodes){let o="";r.nodeName==="#text"?o=r.nodeValue:((r.nodeName==="ink-text"||r.nodeName==="ink-virtual-text")&&(o=mCe(r)),o.length>0&&typeof r.internal_transform=="function"&&(o=r.internal_transform(o))),e+=o}return e};_6.default=mCe});var q6=U(ci=>{"use strict";var V2=ci&&ci.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ci,"__esModule",{value:!0});ci.setTextNodeValue=ci.createTextNode=ci.setStyle=ci.setAttribute=ci.removeChildNode=ci.insertBeforeNode=ci.appendChildNode=ci.createNode=ci.TEXT_NAME=void 0;var wyt=V2(om()),yCe=V2(rCe()),Byt=V2(nCe()),vyt=V2(U6()),Dyt=V2(H6());ci.TEXT_NAME="#text";ci.createNode=t=>{var e;let r={nodeName:t,style:{},attributes:{},childNodes:[],parentNode:null,yogaNode:t==="ink-virtual-text"?void 0:wyt.default.Node.create()};return t==="ink-text"&&((e=r.yogaNode)===null||e===void 0||e.setMeasureFunc(Syt.bind(null,r))),r};ci.appendChildNode=(t,e)=>{var r;e.parentNode&&ci.removeChildNode(e.parentNode,e),e.parentNode=t,t.childNodes.push(e),e.yogaNode&&((r=t.yogaNode)===null||r===void 0||r.insertChild(e.yogaNode,t.yogaNode.getChildCount())),(t.nodeName==="ink-text"||t.nodeName==="ink-virtual-text")&&NQ(t)};ci.insertBeforeNode=(t,e,r)=>{var o,a;e.parentNode&&ci.removeChildNode(e.parentNode,e),e.parentNode=t;let n=t.childNodes.indexOf(r);if(n>=0){t.childNodes.splice(n,0,e),e.yogaNode&&((o=t.yogaNode)===null||o===void 0||o.insertChild(e.yogaNode,n));return}t.childNodes.push(e),e.yogaNode&&((a=t.yogaNode)===null||a===void 0||a.insertChild(e.yogaNode,t.yogaNode.getChildCount())),(t.nodeName==="ink-text"||t.nodeName==="ink-virtual-text")&&NQ(t)};ci.removeChildNode=(t,e)=>{var r,o;e.yogaNode&&((o=(r=e.parentNode)===null||r===void 0?void 0:r.yogaNode)===null||o===void 0||o.removeChild(e.yogaNode)),e.parentNode=null;let a=t.childNodes.indexOf(e);a>=0&&t.childNodes.splice(a,1),(t.nodeName==="ink-text"||t.nodeName==="ink-virtual-text")&&NQ(t)};ci.setAttribute=(t,e,r)=>{t.attributes[e]=r};ci.setStyle=(t,e)=>{t.style=e,t.yogaNode&&Byt.default(t.yogaNode,e)};ci.createTextNode=t=>{let e={nodeName:"#text",nodeValue:t,yogaNode:void 0,parentNode:null,style:{}};return ci.setTextNodeValue(e,t),e};var Syt=function(t,e){var r,o;let a=t.nodeName==="#text"?t.nodeValue:Dyt.default(t),n=yCe.default(a);if(n.width<=e||n.width>=1&&e>0&&e<1)return n;let u=(o=(r=t.style)===null||r===void 0?void 0:r.textWrap)!==null&&o!==void 0?o:"wrap",A=vyt.default(a,e,u);return yCe.default(A)},ECe=t=>{var e;if(!(!t||!t.parentNode))return(e=t.yogaNode)!==null&&e!==void 0?e:ECe(t.parentNode)},NQ=t=>{let e=ECe(t);e==null||e.markDirty()};ci.setTextNodeValue=(t,e)=>{typeof e!="string"&&(e=String(e)),t.nodeValue=e,NQ(t)}});var vCe=U(z2=>{"use strict";var BCe=z2&&z2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(z2,"__esModule",{value:!0});var CCe=v6(),Pyt=BCe(qEe()),ICe=BCe(om()),To=q6(),wCe=t=>{t==null||t.unsetMeasureFunc(),t==null||t.freeRecursive()};z2.default=Pyt.default({schedulePassiveEffects:CCe.unstable_scheduleCallback,cancelPassiveEffects:CCe.unstable_cancelCallback,now:Date.now,getRootHostContext:()=>({isInsideText:!1}),prepareForCommit:()=>{},resetAfterCommit:t=>{if(t.isStaticDirty){t.isStaticDirty=!1,typeof t.onImmediateRender=="function"&&t.onImmediateRender();return}typeof t.onRender=="function"&&t.onRender()},getChildHostContext:(t,e)=>{let r=t.isInsideText,o=e==="ink-text"||e==="ink-virtual-text";return r===o?t:{isInsideText:o}},shouldSetTextContent:()=>!1,createInstance:(t,e,r,o)=>{if(o.isInsideText&&t==="ink-box")throw new Error("<Box> can\u2019t be nested inside <Text> component");let a=t==="ink-text"&&o.isInsideText?"ink-virtual-text":t,n=To.createNode(a);for(let[u,A]of Object.entries(e))u!=="children"&&(u==="style"?To.setStyle(n,A):u==="internal_transform"?n.internal_transform=A:u==="internal_static"?n.internal_static=!0:To.setAttribute(n,u,A));return n},createTextInstance:(t,e,r)=>{if(!r.isInsideText)throw new Error(`Text string "${t}" must be rendered inside <Text> component`);return To.createTextNode(t)},resetTextContent:()=>{},hideTextInstance:t=>{To.setTextNodeValue(t,"")},unhideTextInstance:(t,e)=>{To.setTextNodeValue(t,e)},getPublicInstance:t=>t,hideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(ICe.default.DISPLAY_NONE)},unhideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(ICe.default.DISPLAY_FLEX)},appendInitialChild:To.appendChildNode,appendChild:To.appendChildNode,insertBefore:To.insertBeforeNode,finalizeInitialChildren:(t,e,r,o)=>(t.internal_static&&(o.isStaticDirty=!0,o.staticNode=t),!1),supportsMutation:!0,appendChildToContainer:To.appendChildNode,insertInContainerBefore:To.insertBeforeNode,removeChildFromContainer:(t,e)=>{To.removeChildNode(t,e),wCe(e.yogaNode)},prepareUpdate:(t,e,r,o,a)=>{t.internal_static&&(a.isStaticDirty=!0);let n={},u=Object.keys(o);for(let A of u)if(o[A]!==r[A]){if(A==="style"&&typeof o.style=="object"&&typeof r.style=="object"){let h=o.style,C=r.style,w=Object.keys(h);for(let v of w){if(v==="borderStyle"||v==="borderColor"){if(typeof n.style!="object"){let b={};n.style=b}n.style.borderStyle=h.borderStyle,n.style.borderColor=h.borderColor}if(h[v]!==C[v]){if(typeof n.style!="object"){let b={};n.style=b}n.style[v]=h[v]}}continue}n[A]=o[A]}return n},commitUpdate:(t,e)=>{for(let[r,o]of Object.entries(e))r!=="children"&&(r==="style"?To.setStyle(t,o):r==="internal_transform"?t.internal_transform=o:r==="internal_static"?t.internal_static=!0:To.setAttribute(t,r,o))},commitTextUpdate:(t,e,r)=>{To.setTextNodeValue(t,r)},removeChild:(t,e)=>{To.removeChildNode(t,e),wCe(e.yogaNode)}})});var SCe=U((kYt,DCe)=>{"use strict";DCe.exports=(t,e=1,r)=>{if(r={indent:" ",includeEmptyLines:!1,...r},typeof t!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof t}\``);if(typeof e!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof e}\``);if(typeof r.indent!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof r.indent}\``);if(e===0)return t;let o=r.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return t.replace(o,r.indent.repeat(e))}});var PCe=U(X2=>{"use strict";var xyt=X2&&X2.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(X2,"__esModule",{value:!0});var LQ=xyt(om());X2.default=t=>t.getComputedWidth()-t.getComputedPadding(LQ.default.EDGE_LEFT)-t.getComputedPadding(LQ.default.EDGE_RIGHT)-t.getComputedBorder(LQ.default.EDGE_LEFT)-t.getComputedBorder(LQ.default.EDGE_RIGHT)});var xCe=U((RYt,byt)=>{byt.exports={single:{topLeft:"\u250C",topRight:"\u2510",bottomRight:"\u2518",bottomLeft:"\u2514",vertical:"\u2502",horizontal:"\u2500"},double:{topLeft:"\u2554",topRight:"\u2557",bottomRight:"\u255D",bottomLeft:"\u255A",vertical:"\u2551",horizontal:"\u2550"},round:{topLeft:"\u256D",topRight:"\u256E",bottomRight:"\u256F",bottomLeft:"\u2570",vertical:"\u2502",horizontal:"\u2500"},bold:{topLeft:"\u250F",topRight:"\u2513",bottomRight:"\u251B",bottomLeft:"\u2517",vertical:"\u2503",horizontal:"\u2501"},singleDouble:{topLeft:"\u2553",topRight:"\u2556",bottomRight:"\u255C",bottomLeft:"\u2559",vertical:"\u2551",horizontal:"\u2500"},doubleSingle:{topLeft:"\u2552",topRight:"\u2555",bottomRight:"\u255B",bottomLeft:"\u2558",vertical:"\u2502",horizontal:"\u2550"},classic:{topLeft:"+",topRight:"+",bottomRight:"+",bottomLeft:"+",vertical:"|",horizontal:"-"}}});var QCe=U((TYt,j6)=>{"use strict";var bCe=xCe();j6.exports=bCe;j6.exports.default=bCe});var FCe=U((NYt,kCe)=>{"use strict";var Qyt=(t,e,r)=>{let o=t.indexOf(e);if(o===-1)return t;let a=e.length,n=0,u="";do u+=t.substr(n,o-n)+e+r,n=o+a,o=t.indexOf(e,n);while(o!==-1);return u+=t.substr(n),u},kyt=(t,e,r,o)=>{let a=0,n="";do{let u=t[o-1]==="\r";n+=t.substr(a,(u?o-1:o)-a)+e+(u?`\r | 294 | `)});var mCe=U((MYt,dCe)=>{"use strict";var gCe="[\uD800-\uDBFF][\uDC00-\uDFFF]",Fyt=t=>t&&t.exact?new RegExp(`^${gCe}$`):new RegExp(gCe,"g");dCe.exports=Fyt});var _6=U((UYt,ICe)=>{"use strict";var Ryt=R6(),Tyt=mCe(),yCe=dw(),CCe=["\x1B","\x9B"],jQ=t=>`${CCe[0]}[${t}m`,ECe=(t,e,r)=>{let o=[];t=[...t];for(let a of t){let n=a;a.match(";")&&(a=a.split(";")[0][0]+"0");let u=yCe.codes.get(parseInt(a,10));if(u){let A=t.indexOf(u.toString());A>=0?t.splice(A,1):o.push(jQ(e?u:n))}else if(e){o.push(jQ(0));break}else o.push(jQ(n))}if(e&&(o=o.filter((a,n)=>o.indexOf(a)===n),r!==void 0)){let a=jQ(yCe.codes.get(parseInt(r,10)));o=o.reduce((n,u)=>u===a?[u,...n]:[...n,u],[])}return o.join("")};ICe.exports=(t,e,r)=>{let o=[...t.normalize()],a=[];r=typeof r=="number"?r:o.length;let n=!1,u,A=0,p="";for(let[h,C]of o.entries()){let w=!1;if(CCe.includes(C)){let v=/\d[^m]*/.exec(t.slice(h,h+18));u=v&&v.length>0?v[0]:void 0,A<r&&(n=!0,u!==void 0&&a.push(u))}else n&&C==="m"&&(n=!1,w=!0);if(!n&&!w&&++A,!Tyt({exact:!0}).test(C)&&Ryt(C.codePointAt())&&++A,A>e&&A<=r)p+=C;else if(A===e&&!n&&u!==void 0)p=ECe(a);else if(A>=r){p+=ECe(a,!0,u);break}}return p}});var BCe=U((_Yt,wCe)=>{"use strict";var mh=_6(),Nyt=qQ();function GQ(t,e,r){if(t.charAt(e)===" ")return e;for(let o=1;o<=3;o++)if(r){if(t.charAt(e+o)===" ")return e+o}else if(t.charAt(e-o)===" ")return e-o;return e}wCe.exports=(t,e,r)=>{r={position:"end",preferTruncationOnSpace:!1,...r};let{position:o,space:a,preferTruncationOnSpace:n}=r,u="\u2026",A=1;if(typeof t!="string")throw new TypeError(`Expected \`input\` to be a string, got ${typeof t}`);if(typeof e!="number")throw new TypeError(`Expected \`columns\` to be a number, got ${typeof e}`);if(e<1)return"";if(e===1)return u;let p=Nyt(t);if(p<=e)return t;if(o==="start"){if(n){let h=GQ(t,p-e+1,!0);return u+mh(t,h,p).trim()}return a===!0&&(u+=" ",A=2),u+mh(t,p-e+A,p)}if(o==="middle"){a===!0&&(u=" "+u+" ",A=3);let h=Math.floor(e/2);if(n){let C=GQ(t,h),w=GQ(t,p-(e-h)+1,!0);return mh(t,0,C)+u+mh(t,w,p).trim()}return mh(t,0,h)+u+mh(t,p-(e-h)+A,p)}if(o==="end"){if(n){let h=GQ(t,e-1);return mh(t,0,h)+u}return a===!0&&(u=" "+u,A=2),mh(t,0,e-A)+u}throw new Error(`Expected \`options.position\` to be either \`start\`, \`middle\` or \`end\`, got ${o}`)}});var q6=U(eB=>{"use strict";var vCe=eB&&eB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(eB,"__esModule",{value:!0});var Lyt=vCe(hCe()),Oyt=vCe(BCe()),H6={};eB.default=(t,e,r)=>{let o=t+String(e)+String(r);if(H6[o])return H6[o];let a=t;if(r==="wrap"&&(a=Lyt.default(t,e,{trim:!1,hard:!0})),r.startsWith("truncate")){let n="end";r==="truncate-middle"&&(n="middle"),r==="truncate-start"&&(n="start"),a=Oyt.default(t,e,{position:n})}return H6[o]=a,a}});var G6=U(j6=>{"use strict";Object.defineProperty(j6,"__esModule",{value:!0});var DCe=t=>{let e="";if(t.childNodes.length>0)for(let r of t.childNodes){let o="";r.nodeName==="#text"?o=r.nodeValue:((r.nodeName==="ink-text"||r.nodeName==="ink-virtual-text")&&(o=DCe(r)),o.length>0&&typeof r.internal_transform=="function"&&(o=r.internal_transform(o))),e+=o}return e};j6.default=DCe});var W6=U(ci=>{"use strict";var tB=ci&&ci.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ci,"__esModule",{value:!0});ci.setTextNodeValue=ci.createTextNode=ci.setStyle=ci.setAttribute=ci.removeChildNode=ci.insertBeforeNode=ci.appendChildNode=ci.createNode=ci.TEXT_NAME=void 0;var Myt=tB(um()),SCe=tB(uCe()),Uyt=tB(ACe()),_yt=tB(q6()),Hyt=tB(G6());ci.TEXT_NAME="#text";ci.createNode=t=>{var e;let r={nodeName:t,style:{},attributes:{},childNodes:[],parentNode:null,yogaNode:t==="ink-virtual-text"?void 0:Myt.default.Node.create()};return t==="ink-text"&&((e=r.yogaNode)===null||e===void 0||e.setMeasureFunc(qyt.bind(null,r))),r};ci.appendChildNode=(t,e)=>{var r;e.parentNode&&ci.removeChildNode(e.parentNode,e),e.parentNode=t,t.childNodes.push(e),e.yogaNode&&((r=t.yogaNode)===null||r===void 0||r.insertChild(e.yogaNode,t.yogaNode.getChildCount())),(t.nodeName==="ink-text"||t.nodeName==="ink-virtual-text")&&WQ(t)};ci.insertBeforeNode=(t,e,r)=>{var o,a;e.parentNode&&ci.removeChildNode(e.parentNode,e),e.parentNode=t;let n=t.childNodes.indexOf(r);if(n>=0){t.childNodes.splice(n,0,e),e.yogaNode&&((o=t.yogaNode)===null||o===void 0||o.insertChild(e.yogaNode,n));return}t.childNodes.push(e),e.yogaNode&&((a=t.yogaNode)===null||a===void 0||a.insertChild(e.yogaNode,t.yogaNode.getChildCount())),(t.nodeName==="ink-text"||t.nodeName==="ink-virtual-text")&&WQ(t)};ci.removeChildNode=(t,e)=>{var r,o;e.yogaNode&&((o=(r=e.parentNode)===null||r===void 0?void 0:r.yogaNode)===null||o===void 0||o.removeChild(e.yogaNode)),e.parentNode=null;let a=t.childNodes.indexOf(e);a>=0&&t.childNodes.splice(a,1),(t.nodeName==="ink-text"||t.nodeName==="ink-virtual-text")&&WQ(t)};ci.setAttribute=(t,e,r)=>{t.attributes[e]=r};ci.setStyle=(t,e)=>{t.style=e,t.yogaNode&&Uyt.default(t.yogaNode,e)};ci.createTextNode=t=>{let e={nodeName:"#text",nodeValue:t,yogaNode:void 0,parentNode:null,style:{}};return ci.setTextNodeValue(e,t),e};var qyt=function(t,e){var r,o;let a=t.nodeName==="#text"?t.nodeValue:Hyt.default(t),n=SCe.default(a);if(n.width<=e||n.width>=1&&e>0&&e<1)return n;let u=(o=(r=t.style)===null||r===void 0?void 0:r.textWrap)!==null&&o!==void 0?o:"wrap",A=_yt.default(a,e,u);return SCe.default(A)},PCe=t=>{var e;if(!(!t||!t.parentNode))return(e=t.yogaNode)!==null&&e!==void 0?e:PCe(t.parentNode)},WQ=t=>{let e=PCe(t);e==null||e.markDirty()};ci.setTextNodeValue=(t,e)=>{typeof e!="string"&&(e=String(e)),t.nodeValue=e,WQ(t)}});var FCe=U(rB=>{"use strict";var kCe=rB&&rB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(rB,"__esModule",{value:!0});var xCe=P6(),jyt=kCe(zEe()),bCe=kCe(um()),To=W6(),QCe=t=>{t==null||t.unsetMeasureFunc(),t==null||t.freeRecursive()};rB.default=jyt.default({schedulePassiveEffects:xCe.unstable_scheduleCallback,cancelPassiveEffects:xCe.unstable_cancelCallback,now:Date.now,getRootHostContext:()=>({isInsideText:!1}),prepareForCommit:()=>{},resetAfterCommit:t=>{if(t.isStaticDirty){t.isStaticDirty=!1,typeof t.onImmediateRender=="function"&&t.onImmediateRender();return}typeof t.onRender=="function"&&t.onRender()},getChildHostContext:(t,e)=>{let r=t.isInsideText,o=e==="ink-text"||e==="ink-virtual-text";return r===o?t:{isInsideText:o}},shouldSetTextContent:()=>!1,createInstance:(t,e,r,o)=>{if(o.isInsideText&&t==="ink-box")throw new Error("<Box> can\u2019t be nested inside <Text> component");let a=t==="ink-text"&&o.isInsideText?"ink-virtual-text":t,n=To.createNode(a);for(let[u,A]of Object.entries(e))u!=="children"&&(u==="style"?To.setStyle(n,A):u==="internal_transform"?n.internal_transform=A:u==="internal_static"?n.internal_static=!0:To.setAttribute(n,u,A));return n},createTextInstance:(t,e,r)=>{if(!r.isInsideText)throw new Error(`Text string "${t}" must be rendered inside <Text> component`);return To.createTextNode(t)},resetTextContent:()=>{},hideTextInstance:t=>{To.setTextNodeValue(t,"")},unhideTextInstance:(t,e)=>{To.setTextNodeValue(t,e)},getPublicInstance:t=>t,hideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(bCe.default.DISPLAY_NONE)},unhideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(bCe.default.DISPLAY_FLEX)},appendInitialChild:To.appendChildNode,appendChild:To.appendChildNode,insertBefore:To.insertBeforeNode,finalizeInitialChildren:(t,e,r,o)=>(t.internal_static&&(o.isStaticDirty=!0,o.staticNode=t),!1),supportsMutation:!0,appendChildToContainer:To.appendChildNode,insertInContainerBefore:To.insertBeforeNode,removeChildFromContainer:(t,e)=>{To.removeChildNode(t,e),QCe(e.yogaNode)},prepareUpdate:(t,e,r,o,a)=>{t.internal_static&&(a.isStaticDirty=!0);let n={},u=Object.keys(o);for(let A of u)if(o[A]!==r[A]){if(A==="style"&&typeof o.style=="object"&&typeof r.style=="object"){let h=o.style,C=r.style,w=Object.keys(h);for(let v of w){if(v==="borderStyle"||v==="borderColor"){if(typeof n.style!="object"){let b={};n.style=b}n.style.borderStyle=h.borderStyle,n.style.borderColor=h.borderColor}if(h[v]!==C[v]){if(typeof n.style!="object"){let b={};n.style=b}n.style[v]=h[v]}}continue}n[A]=o[A]}return n},commitUpdate:(t,e)=>{for(let[r,o]of Object.entries(e))r!=="children"&&(r==="style"?To.setStyle(t,o):r==="internal_transform"?t.internal_transform=o:r==="internal_static"?t.internal_static=!0:To.setAttribute(t,r,o))},commitTextUpdate:(t,e,r)=>{To.setTextNodeValue(t,r)},removeChild:(t,e)=>{To.removeChildNode(t,e),QCe(e.yogaNode)}})});var TCe=U((WYt,RCe)=>{"use strict";RCe.exports=(t,e=1,r)=>{if(r={indent:" ",includeEmptyLines:!1,...r},typeof t!="string")throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof t}\``);if(typeof e!="number")throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof e}\``);if(typeof r.indent!="string")throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof r.indent}\``);if(e===0)return t;let o=r.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return t.replace(o,r.indent.repeat(e))}});var NCe=U(nB=>{"use strict";var Gyt=nB&&nB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(nB,"__esModule",{value:!0});var YQ=Gyt(um());nB.default=t=>t.getComputedWidth()-t.getComputedPadding(YQ.default.EDGE_LEFT)-t.getComputedPadding(YQ.default.EDGE_RIGHT)-t.getComputedBorder(YQ.default.EDGE_LEFT)-t.getComputedBorder(YQ.default.EDGE_RIGHT)});var LCe=U((KYt,Wyt)=>{Wyt.exports={single:{topLeft:"\u250C",topRight:"\u2510",bottomRight:"\u2518",bottomLeft:"\u2514",vertical:"\u2502",horizontal:"\u2500"},double:{topLeft:"\u2554",topRight:"\u2557",bottomRight:"\u255D",bottomLeft:"\u255A",vertical:"\u2551",horizontal:"\u2550"},round:{topLeft:"\u256D",topRight:"\u256E",bottomRight:"\u256F",bottomLeft:"\u2570",vertical:"\u2502",horizontal:"\u2500"},bold:{topLeft:"\u250F",topRight:"\u2513",bottomRight:"\u251B",bottomLeft:"\u2517",vertical:"\u2503",horizontal:"\u2501"},singleDouble:{topLeft:"\u2553",topRight:"\u2556",bottomRight:"\u255C",bottomLeft:"\u2559",vertical:"\u2551",horizontal:"\u2500"},doubleSingle:{topLeft:"\u2552",topRight:"\u2555",bottomRight:"\u255B",bottomLeft:"\u2558",vertical:"\u2502",horizontal:"\u2550"},classic:{topLeft:"+",topRight:"+",bottomRight:"+",bottomLeft:"+",vertical:"|",horizontal:"-"}}});var MCe=U((VYt,Y6)=>{"use strict";var OCe=LCe();Y6.exports=OCe;Y6.exports.default=OCe});var _Ce=U((JYt,UCe)=>{"use strict";var Yyt=(t,e,r)=>{let o=t.indexOf(e);if(o===-1)return t;let a=e.length,n=0,u="";do u+=t.substr(n,o-n)+e+r,n=o+a,o=t.indexOf(e,n);while(o!==-1);return u+=t.substr(n),u},Kyt=(t,e,r,o)=>{let a=0,n="";do{let u=t[o-1]==="\r";n+=t.substr(a,(u?o-1:o)-a)+e+(u?`\r |
295 | `:` | 295 | `:` |
296 | `)+r,a=o+1,o=t.indexOf(` | 296 | `)+r,a=o+1,o=t.indexOf(` |
297 | `,a)}while(o!==-1);return n+=t.substr(a),n};kCe.exports={stringReplaceAll:Qyt,stringEncaseCRLFWithFirstIndex:kyt}});var OCe=U((LYt,LCe)=>{"use strict";var Fyt=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,RCe=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,Ryt=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,Tyt=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,Nyt=new Map([["n",` | 297 | `,a)}while(o!==-1);return n+=t.substr(a),n};UCe.exports={stringReplaceAll:Yyt,stringEncaseCRLFWithFirstIndex:Kyt}});var WCe=U((zYt,GCe)=>{"use strict";var Vyt=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,HCe=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,Jyt=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,zyt=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,Xyt=new Map([["n",` |
298 | `],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function NCe(t){let e=t[0]==="u",r=t[1]==="{";return e&&!r&&t.length===5||t[0]==="x"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):Nyt.get(t)||t}function Lyt(t,e){let r=[],o=e.trim().split(/\s*,\s*/g),a;for(let n of o){let u=Number(n);if(!Number.isNaN(u))r.push(u);else if(a=n.match(Ryt))r.push(a[2].replace(Tyt,(A,p,h)=>p?NCe(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function Oyt(t){RCe.lastIndex=0;let e=[],r;for(;(r=RCe.exec(t))!==null;){let o=r[1];if(r[2]){let a=Lyt(o,r[2]);e.push([o].concat(a))}else e.push([o])}return e}function TCe(t,e){let r={};for(let a of e)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let o=t;for(let[a,n]of Object.entries(r))if(!!Array.isArray(n)){if(!(a in o))throw new Error(`Unknown Chalk style: ${a}`);o=n.length>0?o[a](...n):o[a]}return o}LCe.exports=(t,e)=>{let r=[],o=[],a=[];if(e.replace(Fyt,(n,u,A,p,h,C)=>{if(u)a.push(NCe(u));else if(p){let w=a.join("");a=[],o.push(r.length===0?w:TCe(t,r)(w)),r.push({inverse:A,styles:Oyt(p)})}else if(h){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");o.push(TCe(t,r)(a.join(""))),a=[],r.pop()}else a.push(C)}),o.push(a.join("")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(n)}return o.join("")}});var HQ=U((OYt,jCe)=>{"use strict";var Z2=Aw(),{stdout:W6,stderr:Y6}=cN(),{stringReplaceAll:Myt,stringEncaseCRLFWithFirstIndex:Uyt}=FCe(),{isArray:OQ}=Array,UCe=["ansi","ansi","ansi256","ansi16m"],QC=Object.create(null),_yt=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=W6?W6.level:0;t.level=e.level===void 0?r:e.level},K6=class{constructor(e){return _Ce(e)}},_Ce=t=>{let e={};return _yt(e,t),e.template=(...r)=>qCe(e.template,...r),Object.setPrototypeOf(e,MQ.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=K6,e.template};function MQ(t){return _Ce(t)}for(let[t,e]of Object.entries(Z2))QC[t]={get(){let r=UQ(this,J6(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};QC.visible={get(){let t=UQ(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:t}),t}};var HCe=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let t of HCe)QC[t]={get(){let{level:e}=this;return function(...r){let o=J6(Z2.color[UCe[e]][t](...r),Z2.color.close,this._styler);return UQ(this,o,this._isEmpty)}}};for(let t of HCe){let e="bg"+t[0].toUpperCase()+t.slice(1);QC[e]={get(){let{level:r}=this;return function(...o){let a=J6(Z2.bgColor[UCe[r]][t](...o),Z2.bgColor.close,this._styler);return UQ(this,a,this._isEmpty)}}}}var Hyt=Object.defineProperties(()=>{},{...QC,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),J6=(t,e,r)=>{let o,a;return r===void 0?(o=t,a=e):(o=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:o,closeAll:a,parent:r}},UQ=(t,e,r)=>{let o=(...a)=>OQ(a[0])&&OQ(a[0].raw)?MCe(o,qCe(o,...a)):MCe(o,a.length===1?""+a[0]:a.join(" "));return Object.setPrototypeOf(o,Hyt),o._generator=t,o._styler=e,o._isEmpty=r,o},MCe=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?"":e;let r=t._styler;if(r===void 0)return e;let{openAll:o,closeAll:a}=r;if(e.indexOf("\x1B")!==-1)for(;r!==void 0;)e=Myt(e,r.close,r.open),r=r.parent;let n=e.indexOf(` | 298 | `],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function jCe(t){let e=t[0]==="u",r=t[1]==="{";return e&&!r&&t.length===5||t[0]==="x"&&t.length===3?String.fromCharCode(parseInt(t.slice(1),16)):e&&r?String.fromCodePoint(parseInt(t.slice(2,-1),16)):Xyt.get(t)||t}function Zyt(t,e){let r=[],o=e.trim().split(/\s*,\s*/g),a;for(let n of o){let u=Number(n);if(!Number.isNaN(u))r.push(u);else if(a=n.match(Jyt))r.push(a[2].replace(zyt,(A,p,h)=>p?jCe(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function $yt(t){HCe.lastIndex=0;let e=[],r;for(;(r=HCe.exec(t))!==null;){let o=r[1];if(r[2]){let a=Zyt(o,r[2]);e.push([o].concat(a))}else e.push([o])}return e}function qCe(t,e){let r={};for(let a of e)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let o=t;for(let[a,n]of Object.entries(r))if(!!Array.isArray(n)){if(!(a in o))throw new Error(`Unknown Chalk style: ${a}`);o=n.length>0?o[a](...n):o[a]}return o}GCe.exports=(t,e)=>{let r=[],o=[],a=[];if(e.replace(Vyt,(n,u,A,p,h,C)=>{if(u)a.push(jCe(u));else if(p){let w=a.join("");a=[],o.push(r.length===0?w:qCe(t,r)(w)),r.push({inverse:A,styles:$yt(p)})}else if(h){if(r.length===0)throw new Error("Found extraneous } in Chalk template literal");o.push(qCe(t,r)(a.join(""))),a=[],r.pop()}else a.push(C)}),o.push(a.join("")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?"":"s"} (\`}\`)`;throw new Error(n)}return o.join("")}});var XQ=U((XYt,XCe)=>{"use strict";var iB=dw(),{stdout:V6,stderr:J6}=fN(),{stringReplaceAll:eEt,stringEncaseCRLFWithFirstIndex:tEt}=_Ce(),{isArray:KQ}=Array,KCe=["ansi","ansi","ansi256","ansi16m"],NC=Object.create(null),rEt=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=V6?V6.level:0;t.level=e.level===void 0?r:e.level},z6=class{constructor(e){return VCe(e)}},VCe=t=>{let e={};return rEt(e,t),e.template=(...r)=>zCe(e.template,...r),Object.setPrototypeOf(e,VQ.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=z6,e.template};function VQ(t){return VCe(t)}for(let[t,e]of Object.entries(iB))NC[t]={get(){let r=JQ(this,X6(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};NC.visible={get(){let t=JQ(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:t}),t}};var JCe=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let t of JCe)NC[t]={get(){let{level:e}=this;return function(...r){let o=X6(iB.color[KCe[e]][t](...r),iB.color.close,this._styler);return JQ(this,o,this._isEmpty)}}};for(let t of JCe){let e="bg"+t[0].toUpperCase()+t.slice(1);NC[e]={get(){let{level:r}=this;return function(...o){let a=X6(iB.bgColor[KCe[r]][t](...o),iB.bgColor.close,this._styler);return JQ(this,a,this._isEmpty)}}}}var nEt=Object.defineProperties(()=>{},{...NC,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),X6=(t,e,r)=>{let o,a;return r===void 0?(o=t,a=e):(o=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:o,closeAll:a,parent:r}},JQ=(t,e,r)=>{let o=(...a)=>KQ(a[0])&&KQ(a[0].raw)?YCe(o,zCe(o,...a)):YCe(o,a.length===1?""+a[0]:a.join(" "));return Object.setPrototypeOf(o,nEt),o._generator=t,o._styler=e,o._isEmpty=r,o},YCe=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?"":e;let r=t._styler;if(r===void 0)return e;let{openAll:o,closeAll:a}=r;if(e.indexOf("\x1B")!==-1)for(;r!==void 0;)e=eEt(e,r.close,r.open),r=r.parent;let n=e.indexOf(` |
299 | `);return n!==-1&&(e=Uyt(e,a,o,n)),o+e+a},G6,qCe=(t,...e)=>{let[r]=e;if(!OQ(r)||!OQ(r.raw))return e.join(" ");let o=e.slice(1),a=[r.raw[0]];for(let n=1;n<r.length;n++)a.push(String(o[n-1]).replace(/[{}\\]/g,"\\$&"),String(r.raw[n]));return G6===void 0&&(G6=OCe()),G6(t,a.join(""))};Object.defineProperties(MQ.prototype,QC);var _Q=MQ();_Q.supportsColor=W6;_Q.stderr=MQ({level:Y6?Y6.level:0});_Q.stderr.supportsColor=Y6;jCe.exports=_Q});var V6=U(eB=>{"use strict";var qyt=eB&&eB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(eB,"__esModule",{value:!0});var $2=qyt(HQ()),jyt=/^(rgb|hsl|hsv|hwb)\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,Gyt=/^(ansi|ansi256)\(\s?(\d+)\s?\)$/,qQ=(t,e)=>e==="foreground"?t:"bg"+t[0].toUpperCase()+t.slice(1);eB.default=(t,e,r)=>{if(!e)return t;if(e in $2.default){let a=qQ(e,r);return $2.default[a](t)}if(e.startsWith("#")){let a=qQ("hex",r);return $2.default[a](e)(t)}if(e.startsWith("ansi")){let a=Gyt.exec(e);if(!a)return t;let n=qQ(a[1],r),u=Number(a[2]);return $2.default[n](u)(t)}if(e.startsWith("rgb")||e.startsWith("hsl")||e.startsWith("hsv")||e.startsWith("hwb")){let a=jyt.exec(e);if(!a)return t;let n=qQ(a[1],r),u=Number(a[2]),A=Number(a[3]),p=Number(a[4]);return $2.default[n](u,A,p)(t)}return t}});var WCe=U(tB=>{"use strict";var GCe=tB&&tB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(tB,"__esModule",{value:!0});var Wyt=GCe(QCe()),z6=GCe(V6());tB.default=(t,e,r,o)=>{if(typeof r.style.borderStyle=="string"){let a=r.yogaNode.getComputedWidth(),n=r.yogaNode.getComputedHeight(),u=r.style.borderColor,A=Wyt.default[r.style.borderStyle],p=z6.default(A.topLeft+A.horizontal.repeat(a-2)+A.topRight,u,"foreground"),h=(z6.default(A.vertical,u,"foreground")+` | 299 | `);return n!==-1&&(e=tEt(e,a,o,n)),o+e+a},K6,zCe=(t,...e)=>{let[r]=e;if(!KQ(r)||!KQ(r.raw))return e.join(" ");let o=e.slice(1),a=[r.raw[0]];for(let n=1;n<r.length;n++)a.push(String(o[n-1]).replace(/[{}\\]/g,"\\$&"),String(r.raw[n]));return K6===void 0&&(K6=WCe()),K6(t,a.join(""))};Object.defineProperties(VQ.prototype,NC);var zQ=VQ();zQ.supportsColor=V6;zQ.stderr=VQ({level:J6?J6.level:0});zQ.stderr.supportsColor=J6;XCe.exports=zQ});var Z6=U(oB=>{"use strict";var iEt=oB&&oB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(oB,"__esModule",{value:!0});var sB=iEt(XQ()),sEt=/^(rgb|hsl|hsv|hwb)\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,oEt=/^(ansi|ansi256)\(\s?(\d+)\s?\)$/,ZQ=(t,e)=>e==="foreground"?t:"bg"+t[0].toUpperCase()+t.slice(1);oB.default=(t,e,r)=>{if(!e)return t;if(e in sB.default){let a=ZQ(e,r);return sB.default[a](t)}if(e.startsWith("#")){let a=ZQ("hex",r);return sB.default[a](e)(t)}if(e.startsWith("ansi")){let a=oEt.exec(e);if(!a)return t;let n=ZQ(a[1],r),u=Number(a[2]);return sB.default[n](u)(t)}if(e.startsWith("rgb")||e.startsWith("hsl")||e.startsWith("hsv")||e.startsWith("hwb")){let a=sEt.exec(e);if(!a)return t;let n=ZQ(a[1],r),u=Number(a[2]),A=Number(a[3]),p=Number(a[4]);return sB.default[n](u,A,p)(t)}return t}});var $Ce=U(aB=>{"use strict";var ZCe=aB&&aB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(aB,"__esModule",{value:!0});var aEt=ZCe(MCe()),$6=ZCe(Z6());aB.default=(t,e,r,o)=>{if(typeof r.style.borderStyle=="string"){let a=r.yogaNode.getComputedWidth(),n=r.yogaNode.getComputedHeight(),u=r.style.borderColor,A=aEt.default[r.style.borderStyle],p=$6.default(A.topLeft+A.horizontal.repeat(a-2)+A.topRight,u,"foreground"),h=($6.default(A.vertical,u,"foreground")+` |
300 | `).repeat(n-2),C=z6.default(A.bottomLeft+A.horizontal.repeat(a-2)+A.bottomRight,u,"foreground");o.write(t,e,p,{transformers:[]}),o.write(t,e+1,h,{transformers:[]}),o.write(t+a-1,e+1,h,{transformers:[]}),o.write(t,e+n-1,C,{transformers:[]})}}});var KCe=U(rB=>{"use strict";var am=rB&&rB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(rB,"__esModule",{value:!0});var Yyt=am(om()),Kyt=am(R6()),Jyt=am(SCe()),Vyt=am(U6()),zyt=am(PCe()),Xyt=am(H6()),Zyt=am(WCe()),$yt=(t,e)=>{var r;let o=(r=t.childNodes[0])===null||r===void 0?void 0:r.yogaNode;if(o){let a=o.getComputedLeft(),n=o.getComputedTop();e=` | 300 | `).repeat(n-2),C=$6.default(A.bottomLeft+A.horizontal.repeat(a-2)+A.bottomRight,u,"foreground");o.write(t,e,p,{transformers:[]}),o.write(t,e+1,h,{transformers:[]}),o.write(t+a-1,e+1,h,{transformers:[]}),o.write(t,e+n-1,C,{transformers:[]})}}});var tIe=U(lB=>{"use strict";var Am=lB&&lB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(lB,"__esModule",{value:!0});var lEt=Am(um()),cEt=Am(L6()),uEt=Am(TCe()),AEt=Am(q6()),fEt=Am(NCe()),pEt=Am(G6()),hEt=Am($Ce()),gEt=(t,e)=>{var r;let o=(r=t.childNodes[0])===null||r===void 0?void 0:r.yogaNode;if(o){let a=o.getComputedLeft(),n=o.getComputedTop();e=` |
301 | `.repeat(n)+Jyt.default(e,a)}return e},YCe=(t,e,r)=>{var o;let{offsetX:a=0,offsetY:n=0,transformers:u=[],skipStaticElements:A}=r;if(A&&t.internal_static)return;let{yogaNode:p}=t;if(p){if(p.getDisplay()===Yyt.default.DISPLAY_NONE)return;let h=a+p.getComputedLeft(),C=n+p.getComputedTop(),w=u;if(typeof t.internal_transform=="function"&&(w=[t.internal_transform,...u]),t.nodeName==="ink-text"){let v=Xyt.default(t);if(v.length>0){let b=Kyt.default(v),E=zyt.default(p);if(b>E){let R=(o=t.style.textWrap)!==null&&o!==void 0?o:"wrap";v=Vyt.default(v,E,R)}v=$yt(t,v),e.write(h,C,v,{transformers:w})}return}if(t.nodeName==="ink-box"&&Zyt.default(h,C,t,e),t.nodeName==="ink-root"||t.nodeName==="ink-box")for(let v of t.childNodes)YCe(v,e,{offsetX:h,offsetY:C,transformers:w,skipStaticElements:A})}};rB.default=YCe});var VCe=U((HYt,JCe)=>{"use strict";JCe.exports=t=>{t=Object.assign({onlyFirst:!1},t);let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,t.onlyFirst?void 0:"g")}});var XCe=U((qYt,X6)=>{"use strict";var eEt=VCe(),zCe=t=>typeof t=="string"?t.replace(eEt(),""):t;X6.exports=zCe;X6.exports.default=zCe});var eIe=U((jYt,$Ce)=>{"use strict";var ZCe="[\uD800-\uDBFF][\uDC00-\uDFFF]";$Ce.exports=t=>t&&t.exact?new RegExp(`^${ZCe}$`):new RegExp(ZCe,"g")});var rIe=U((GYt,Z6)=>{"use strict";var tEt=XCe(),rEt=eIe(),tIe=t=>tEt(t).replace(rEt()," ").length;Z6.exports=tIe;Z6.exports.default=tIe});var sIe=U(nB=>{"use strict";var iIe=nB&&nB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(nB,"__esModule",{value:!0});var nIe=iIe(O6()),nEt=iIe(rIe()),$6=class{constructor(e){this.writes=[];let{width:r,height:o}=e;this.width=r,this.height=o}write(e,r,o,a){let{transformers:n}=a;!o||this.writes.push({x:e,y:r,text:o,transformers:n})}get(){let e=[];for(let o=0;o<this.height;o++)e.push(" ".repeat(this.width));for(let o of this.writes){let{x:a,y:n,text:u,transformers:A}=o,p=u.split(` | 301 | `.repeat(n)+uEt.default(e,a)}return e},eIe=(t,e,r)=>{var o;let{offsetX:a=0,offsetY:n=0,transformers:u=[],skipStaticElements:A}=r;if(A&&t.internal_static)return;let{yogaNode:p}=t;if(p){if(p.getDisplay()===lEt.default.DISPLAY_NONE)return;let h=a+p.getComputedLeft(),C=n+p.getComputedTop(),w=u;if(typeof t.internal_transform=="function"&&(w=[t.internal_transform,...u]),t.nodeName==="ink-text"){let v=pEt.default(t);if(v.length>0){let b=cEt.default(v),E=fEt.default(p);if(b>E){let R=(o=t.style.textWrap)!==null&&o!==void 0?o:"wrap";v=AEt.default(v,E,R)}v=gEt(t,v),e.write(h,C,v,{transformers:w})}return}if(t.nodeName==="ink-box"&&hEt.default(h,C,t,e),t.nodeName==="ink-root"||t.nodeName==="ink-box")for(let v of t.childNodes)eIe(v,e,{offsetX:h,offsetY:C,transformers:w,skipStaticElements:A})}};lB.default=eIe});var nIe=U((tKt,rIe)=>{"use strict";rIe.exports=t=>{t=Object.assign({onlyFirst:!1},t);let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,t.onlyFirst?void 0:"g")}});var sIe=U((rKt,eq)=>{"use strict";var dEt=nIe(),iIe=t=>typeof t=="string"?t.replace(dEt(),""):t;eq.exports=iIe;eq.exports.default=iIe});var lIe=U((nKt,aIe)=>{"use strict";var oIe="[\uD800-\uDBFF][\uDC00-\uDFFF]";aIe.exports=t=>t&&t.exact?new RegExp(`^${oIe}$`):new RegExp(oIe,"g")});var uIe=U((iKt,tq)=>{"use strict";var mEt=sIe(),yEt=lIe(),cIe=t=>mEt(t).replace(yEt()," ").length;tq.exports=cIe;tq.exports.default=cIe});var pIe=U(cB=>{"use strict";var fIe=cB&&cB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(cB,"__esModule",{value:!0});var AIe=fIe(_6()),EEt=fIe(uIe()),rq=class{constructor(e){this.writes=[];let{width:r,height:o}=e;this.width=r,this.height=o}write(e,r,o,a){let{transformers:n}=a;!o||this.writes.push({x:e,y:r,text:o,transformers:n})}get(){let e=[];for(let o=0;o<this.height;o++)e.push(" ".repeat(this.width));for(let o of this.writes){let{x:a,y:n,text:u,transformers:A}=o,p=u.split(` |
302 | `),h=0;for(let C of p){let w=e[n+h];if(!w)continue;let v=nEt.default(C);for(let b of A)C=b(C);e[n+h]=nIe.default(w,0,a)+C+nIe.default(w,a+v),h++}}return{output:e.map(o=>o.trimRight()).join(` | 302 | `),h=0;for(let C of p){let w=e[n+h];if(!w)continue;let v=EEt.default(C);for(let b of A)C=b(C);e[n+h]=AIe.default(w,0,a)+C+AIe.default(w,a+v),h++}}return{output:e.map(o=>o.trimRight()).join(` |
303 | `),height:e.length}}};nB.default=$6});var lIe=U(iB=>{"use strict";var eq=iB&&iB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(iB,"__esModule",{value:!0});var iEt=eq(om()),oIe=eq(KCe()),aIe=eq(sIe());iB.default=(t,e)=>{var r;if(t.yogaNode.setWidth(e),t.yogaNode){t.yogaNode.calculateLayout(void 0,void 0,iEt.default.DIRECTION_LTR);let o=new aIe.default({width:t.yogaNode.getComputedWidth(),height:t.yogaNode.getComputedHeight()});oIe.default(t,o,{skipStaticElements:!0});let a;!((r=t.staticNode)===null||r===void 0)&&r.yogaNode&&(a=new aIe.default({width:t.staticNode.yogaNode.getComputedWidth(),height:t.staticNode.yogaNode.getComputedHeight()}),oIe.default(t.staticNode,a,{skipStaticElements:!1}));let{output:n,height:u}=o.get();return{output:n,outputHeight:u,staticOutput:a?`${a.get().output} | 303 | `),height:e.length}}};cB.default=rq});var dIe=U(uB=>{"use strict";var nq=uB&&uB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(uB,"__esModule",{value:!0});var CEt=nq(um()),hIe=nq(tIe()),gIe=nq(pIe());uB.default=(t,e)=>{var r;if(t.yogaNode.setWidth(e),t.yogaNode){t.yogaNode.calculateLayout(void 0,void 0,CEt.default.DIRECTION_LTR);let o=new gIe.default({width:t.yogaNode.getComputedWidth(),height:t.yogaNode.getComputedHeight()});hIe.default(t,o,{skipStaticElements:!0});let a;!((r=t.staticNode)===null||r===void 0)&&r.yogaNode&&(a=new gIe.default({width:t.staticNode.yogaNode.getComputedWidth(),height:t.staticNode.yogaNode.getComputedHeight()}),hIe.default(t.staticNode,a,{skipStaticElements:!1}));let{output:n,height:u}=o.get();return{output:n,outputHeight:u,staticOutput:a?`${a.get().output} |
304 | `:""}}return{output:"",outputHeight:0,staticOutput:""}}});var fIe=U((KYt,AIe)=>{"use strict";var cIe=Ie("stream"),uIe=["assert","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],tq={},sEt=t=>{let e=new cIe.PassThrough,r=new cIe.PassThrough;e.write=a=>t("stdout",a),r.write=a=>t("stderr",a);let o=new console.Console(e,r);for(let a of uIe)tq[a]=console[a],console[a]=o[a];return()=>{for(let a of uIe)console[a]=tq[a];tq={}}};AIe.exports=sEt});var nq=U(rq=>{"use strict";Object.defineProperty(rq,"__esModule",{value:!0});rq.default=new WeakMap});var sq=U(iq=>{"use strict";Object.defineProperty(iq,"__esModule",{value:!0});var oEt=en(),pIe=oEt.createContext({exit:()=>{}});pIe.displayName="InternalAppContext";iq.default=pIe});var aq=U(oq=>{"use strict";Object.defineProperty(oq,"__esModule",{value:!0});var aEt=en(),hIe=aEt.createContext({stdin:void 0,setRawMode:()=>{},isRawModeSupported:!1,internal_exitOnCtrlC:!0});hIe.displayName="InternalStdinContext";oq.default=hIe});var cq=U(lq=>{"use strict";Object.defineProperty(lq,"__esModule",{value:!0});var lEt=en(),gIe=lEt.createContext({stdout:void 0,write:()=>{}});gIe.displayName="InternalStdoutContext";lq.default=gIe});var Aq=U(uq=>{"use strict";Object.defineProperty(uq,"__esModule",{value:!0});var cEt=en(),dIe=cEt.createContext({stderr:void 0,write:()=>{}});dIe.displayName="InternalStderrContext";uq.default=dIe});var jQ=U(fq=>{"use strict";Object.defineProperty(fq,"__esModule",{value:!0});var uEt=en(),mIe=uEt.createContext({activeId:void 0,add:()=>{},remove:()=>{},activate:()=>{},deactivate:()=>{},enableFocus:()=>{},disableFocus:()=>{},focusNext:()=>{},focusPrevious:()=>{}});mIe.displayName="InternalFocusContext";fq.default=mIe});var EIe=U((eKt,yIe)=>{"use strict";var AEt=/[|\\{}()[\]^$+*?.-]/g;yIe.exports=t=>{if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(AEt,"\\$&")}});var BIe=U((tKt,wIe)=>{"use strict";var fEt=EIe(),pEt=typeof process=="object"&&process&&typeof process.cwd=="function"?process.cwd():".",IIe=[].concat(Ie("module").builtinModules,"bootstrap_node","node").map(t=>new RegExp(`(?:\\((?:node:)?${t}(?:\\.js)?:\\d+:\\d+\\)$|^\\s*at (?:node:)?${t}(?:\\.js)?:\\d+:\\d+$)`));IIe.push(/\((?:node:)?internal\/[^:]+:\d+:\d+\)$/,/\s*at (?:node:)?internal\/[^:]+:\d+:\d+$/,/\/\.node-spawn-wrap-\w+-\w+\/node:\d+:\d+\)?$/);var sB=class{constructor(e){e={ignoredPackages:[],...e},"internals"in e||(e.internals=sB.nodeInternals()),"cwd"in e||(e.cwd=pEt),this._cwd=e.cwd.replace(/\\/g,"/"),this._internals=[].concat(e.internals,hEt(e.ignoredPackages)),this._wrapCallSite=e.wrapCallSite||!1}static nodeInternals(){return[...IIe]}clean(e,r=0){r=" ".repeat(r),Array.isArray(e)||(e=e.split(` | 304 | `:""}}return{output:"",outputHeight:0,staticOutput:""}}});var CIe=U((aKt,EIe)=>{"use strict";var mIe=Ie("stream"),yIe=["assert","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],iq={},IEt=t=>{let e=new mIe.PassThrough,r=new mIe.PassThrough;e.write=a=>t("stdout",a),r.write=a=>t("stderr",a);let o=new console.Console(e,r);for(let a of yIe)iq[a]=console[a],console[a]=o[a];return()=>{for(let a of yIe)console[a]=iq[a];iq={}}};EIe.exports=IEt});var oq=U(sq=>{"use strict";Object.defineProperty(sq,"__esModule",{value:!0});sq.default=new WeakMap});var lq=U(aq=>{"use strict";Object.defineProperty(aq,"__esModule",{value:!0});var wEt=en(),IIe=wEt.createContext({exit:()=>{}});IIe.displayName="InternalAppContext";aq.default=IIe});var uq=U(cq=>{"use strict";Object.defineProperty(cq,"__esModule",{value:!0});var BEt=en(),wIe=BEt.createContext({stdin:void 0,setRawMode:()=>{},isRawModeSupported:!1,internal_exitOnCtrlC:!0});wIe.displayName="InternalStdinContext";cq.default=wIe});var fq=U(Aq=>{"use strict";Object.defineProperty(Aq,"__esModule",{value:!0});var vEt=en(),BIe=vEt.createContext({stdout:void 0,write:()=>{}});BIe.displayName="InternalStdoutContext";Aq.default=BIe});var hq=U(pq=>{"use strict";Object.defineProperty(pq,"__esModule",{value:!0});var DEt=en(),vIe=DEt.createContext({stderr:void 0,write:()=>{}});vIe.displayName="InternalStderrContext";pq.default=vIe});var $Q=U(gq=>{"use strict";Object.defineProperty(gq,"__esModule",{value:!0});var SEt=en(),DIe=SEt.createContext({activeId:void 0,add:()=>{},remove:()=>{},activate:()=>{},deactivate:()=>{},enableFocus:()=>{},disableFocus:()=>{},focusNext:()=>{},focusPrevious:()=>{}});DIe.displayName="InternalFocusContext";gq.default=DIe});var PIe=U((hKt,SIe)=>{"use strict";var PEt=/[|\\{}()[\]^$+*?.-]/g;SIe.exports=t=>{if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(PEt,"\\$&")}});var kIe=U((gKt,QIe)=>{"use strict";var xEt=PIe(),bEt=typeof process=="object"&&process&&typeof process.cwd=="function"?process.cwd():".",bIe=[].concat(Ie("module").builtinModules,"bootstrap_node","node").map(t=>new RegExp(`(?:\\((?:node:)?${t}(?:\\.js)?:\\d+:\\d+\\)$|^\\s*at (?:node:)?${t}(?:\\.js)?:\\d+:\\d+$)`));bIe.push(/\((?:node:)?internal\/[^:]+:\d+:\d+\)$/,/\s*at (?:node:)?internal\/[^:]+:\d+:\d+$/,/\/\.node-spawn-wrap-\w+-\w+\/node:\d+:\d+\)?$/);var AB=class{constructor(e){e={ignoredPackages:[],...e},"internals"in e||(e.internals=AB.nodeInternals()),"cwd"in e||(e.cwd=bEt),this._cwd=e.cwd.replace(/\\/g,"/"),this._internals=[].concat(e.internals,QEt(e.ignoredPackages)),this._wrapCallSite=e.wrapCallSite||!1}static nodeInternals(){return[...bIe]}clean(e,r=0){r=" ".repeat(r),Array.isArray(e)||(e=e.split(` |
305 | `)),!/^\s*at /.test(e[0])&&/^\s*at /.test(e[1])&&(e=e.slice(1));let o=!1,a=null,n=[];return e.forEach(u=>{if(u=u.replace(/\\/g,"/"),this._internals.some(p=>p.test(u)))return;let A=/^\s*at /.test(u);o?u=u.trimEnd().replace(/^(\s+)at /,"$1"):(u=u.trim(),A&&(u=u.slice(3))),u=u.replace(`${this._cwd}/`,""),u&&(A?(a&&(n.push(a),a=null),n.push(u)):(o=!0,a=u))}),n.map(u=>`${r}${u} | 305 | `)),!/^\s*at /.test(e[0])&&/^\s*at /.test(e[1])&&(e=e.slice(1));let o=!1,a=null,n=[];return e.forEach(u=>{if(u=u.replace(/\\/g,"/"),this._internals.some(p=>p.test(u)))return;let A=/^\s*at /.test(u);o?u=u.trimEnd().replace(/^(\s+)at /,"$1"):(u=u.trim(),A&&(u=u.slice(3))),u=u.replace(`${this._cwd}/`,""),u&&(A?(a&&(n.push(a),a=null),n.push(u)):(o=!0,a=u))}),n.map(u=>`${r}${u} |
306 | `).join("")}captureString(e,r=this.captureString){typeof e=="function"&&(r=e,e=1/0);let{stackTraceLimit:o}=Error;e&&(Error.stackTraceLimit=e);let a={};Error.captureStackTrace(a,r);let{stack:n}=a;return Error.stackTraceLimit=o,this.clean(n)}capture(e,r=this.capture){typeof e=="function"&&(r=e,e=1/0);let{prepareStackTrace:o,stackTraceLimit:a}=Error;Error.prepareStackTrace=(A,p)=>this._wrapCallSite?p.map(this._wrapCallSite):p,e&&(Error.stackTraceLimit=e);let n={};Error.captureStackTrace(n,r);let{stack:u}=n;return Object.assign(Error,{prepareStackTrace:o,stackTraceLimit:a}),u}at(e=this.at){let[r]=this.capture(1,e);if(!r)return{};let o={line:r.getLineNumber(),column:r.getColumnNumber()};CIe(o,r.getFileName(),this._cwd),r.isConstructor()&&(o.constructor=!0),r.isEval()&&(o.evalOrigin=r.getEvalOrigin()),r.isNative()&&(o.native=!0);let a;try{a=r.getTypeName()}catch{}a&&a!=="Object"&&a!=="[object Object]"&&(o.type=a);let n=r.getFunctionName();n&&(o.function=n);let u=r.getMethodName();return u&&n!==u&&(o.method=u),o}parseLine(e){let r=e&&e.match(gEt);if(!r)return null;let o=r[1]==="new",a=r[2],n=r[3],u=r[4],A=Number(r[5]),p=Number(r[6]),h=r[7],C=r[8],w=r[9],v=r[10]==="native",b=r[11]===")",E,R={};if(C&&(R.line=Number(C)),w&&(R.column=Number(w)),b&&h){let L=0;for(let _=h.length-1;_>0;_--)if(h.charAt(_)===")")L++;else if(h.charAt(_)==="("&&h.charAt(_-1)===" "&&(L--,L===-1&&h.charAt(_-1)===" ")){let J=h.slice(0,_-1);h=h.slice(_+1),a+=` (${J}`;break}}if(a){let L=a.match(dEt);L&&(a=L[1],E=L[2])}return CIe(R,h,this._cwd),o&&(R.constructor=!0),n&&(R.evalOrigin=n,R.evalLine=A,R.evalColumn=p,R.evalFile=u&&u.replace(/\\/g,"/")),v&&(R.native=!0),a&&(R.function=a),E&&a!==E&&(R.method=E),R}};function CIe(t,e,r){e&&(e=e.replace(/\\/g,"/"),e.startsWith(`${r}/`)&&(e=e.slice(r.length+1)),t.file=e)}function hEt(t){if(t.length===0)return[];let e=t.map(r=>fEt(r));return new RegExp(`[/\\\\]node_modules[/\\\\](?:${e.join("|")})[/\\\\][^:]+:\\d+:\\d+`)}var gEt=new RegExp("^(?:\\s*at )?(?:(new) )?(?:(.*?) \\()?(?:eval at ([^ ]+) \\((.+?):(\\d+):(\\d+)\\), )?(?:(.+?):(\\d+):(\\d+)|(native))(\\)?)$"),dEt=/^(.*?) \[as (.*?)\]$/;wIe.exports=sB});var DIe=U((rKt,vIe)=>{"use strict";vIe.exports=(t,e)=>t.replace(/^\t+/gm,r=>" ".repeat(r.length*(e||2)))});var PIe=U((nKt,SIe)=>{"use strict";var mEt=DIe(),yEt=(t,e)=>{let r=[],o=t-e,a=t+e;for(let n=o;n<=a;n++)r.push(n);return r};SIe.exports=(t,e,r)=>{if(typeof t!="string")throw new TypeError("Source code is missing.");if(!e||e<1)throw new TypeError("Line number must start from `1`.");if(t=mEt(t).split(/\r?\n/),!(e>t.length))return r={around:3,...r},yEt(e,r.around).filter(o=>t[o-1]!==void 0).map(o=>({line:o,value:t[o-1]}))}});var GQ=U(iu=>{"use strict";var EEt=iu&&iu.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),CEt=iu&&iu.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),IEt=iu&&iu.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&EEt(e,t,r);return CEt(e,t),e},wEt=iu&&iu.__rest||function(t,e){var r={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&e.indexOf(o)<0&&(r[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,o=Object.getOwnPropertySymbols(t);a<o.length;a++)e.indexOf(o[a])<0&&Object.prototype.propertyIsEnumerable.call(t,o[a])&&(r[o[a]]=t[o[a]]);return r};Object.defineProperty(iu,"__esModule",{value:!0});var xIe=IEt(en()),pq=xIe.forwardRef((t,e)=>{var{children:r}=t,o=wEt(t,["children"]);let a=Object.assign(Object.assign({},o),{marginLeft:o.marginLeft||o.marginX||o.margin||0,marginRight:o.marginRight||o.marginX||o.margin||0,marginTop:o.marginTop||o.marginY||o.margin||0,marginBottom:o.marginBottom||o.marginY||o.margin||0,paddingLeft:o.paddingLeft||o.paddingX||o.padding||0,paddingRight:o.paddingRight||o.paddingX||o.padding||0,paddingTop:o.paddingTop||o.paddingY||o.padding||0,paddingBottom:o.paddingBottom||o.paddingY||o.padding||0});return xIe.default.createElement("ink-box",{ref:e,style:a},r)});pq.displayName="Box";pq.defaultProps={flexDirection:"row",flexGrow:0,flexShrink:1};iu.default=pq});var dq=U(oB=>{"use strict";var hq=oB&&oB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(oB,"__esModule",{value:!0});var BEt=hq(en()),kC=hq(HQ()),bIe=hq(V6()),gq=({color:t,backgroundColor:e,dimColor:r,bold:o,italic:a,underline:n,strikethrough:u,inverse:A,wrap:p,children:h})=>{if(h==null)return null;let C=w=>(r&&(w=kC.default.dim(w)),t&&(w=bIe.default(w,t,"foreground")),e&&(w=bIe.default(w,e,"background")),o&&(w=kC.default.bold(w)),a&&(w=kC.default.italic(w)),n&&(w=kC.default.underline(w)),u&&(w=kC.default.strikethrough(w)),A&&(w=kC.default.inverse(w)),w);return BEt.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row",textWrap:p},internal_transform:C},h)};gq.displayName="Text";gq.defaultProps={dimColor:!1,bold:!1,italic:!1,underline:!1,strikethrough:!1,wrap:"wrap"};oB.default=gq});var RIe=U(su=>{"use strict";var vEt=su&&su.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),DEt=su&&su.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),SEt=su&&su.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&vEt(e,t,r);return DEt(e,t),e},aB=su&&su.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(su,"__esModule",{value:!0});var QIe=SEt(Ie("fs")),hs=aB(en()),kIe=aB(BIe()),PEt=aB(PIe()),Vf=aB(GQ()),gA=aB(dq()),FIe=new kIe.default({cwd:process.cwd(),internals:kIe.default.nodeInternals()}),xEt=({error:t})=>{let e=t.stack?t.stack.split(` | 306 | `).join("")}captureString(e,r=this.captureString){typeof e=="function"&&(r=e,e=1/0);let{stackTraceLimit:o}=Error;e&&(Error.stackTraceLimit=e);let a={};Error.captureStackTrace(a,r);let{stack:n}=a;return Error.stackTraceLimit=o,this.clean(n)}capture(e,r=this.capture){typeof e=="function"&&(r=e,e=1/0);let{prepareStackTrace:o,stackTraceLimit:a}=Error;Error.prepareStackTrace=(A,p)=>this._wrapCallSite?p.map(this._wrapCallSite):p,e&&(Error.stackTraceLimit=e);let n={};Error.captureStackTrace(n,r);let{stack:u}=n;return Object.assign(Error,{prepareStackTrace:o,stackTraceLimit:a}),u}at(e=this.at){let[r]=this.capture(1,e);if(!r)return{};let o={line:r.getLineNumber(),column:r.getColumnNumber()};xIe(o,r.getFileName(),this._cwd),r.isConstructor()&&(o.constructor=!0),r.isEval()&&(o.evalOrigin=r.getEvalOrigin()),r.isNative()&&(o.native=!0);let a;try{a=r.getTypeName()}catch{}a&&a!=="Object"&&a!=="[object Object]"&&(o.type=a);let n=r.getFunctionName();n&&(o.function=n);let u=r.getMethodName();return u&&n!==u&&(o.method=u),o}parseLine(e){let r=e&&e.match(kEt);if(!r)return null;let o=r[1]==="new",a=r[2],n=r[3],u=r[4],A=Number(r[5]),p=Number(r[6]),h=r[7],C=r[8],w=r[9],v=r[10]==="native",b=r[11]===")",E,R={};if(C&&(R.line=Number(C)),w&&(R.column=Number(w)),b&&h){let L=0;for(let _=h.length-1;_>0;_--)if(h.charAt(_)===")")L++;else if(h.charAt(_)==="("&&h.charAt(_-1)===" "&&(L--,L===-1&&h.charAt(_-1)===" ")){let V=h.slice(0,_-1);h=h.slice(_+1),a+=` (${V}`;break}}if(a){let L=a.match(FEt);L&&(a=L[1],E=L[2])}return xIe(R,h,this._cwd),o&&(R.constructor=!0),n&&(R.evalOrigin=n,R.evalLine=A,R.evalColumn=p,R.evalFile=u&&u.replace(/\\/g,"/")),v&&(R.native=!0),a&&(R.function=a),E&&a!==E&&(R.method=E),R}};function xIe(t,e,r){e&&(e=e.replace(/\\/g,"/"),e.startsWith(`${r}/`)&&(e=e.slice(r.length+1)),t.file=e)}function QEt(t){if(t.length===0)return[];let e=t.map(r=>xEt(r));return new RegExp(`[/\\\\]node_modules[/\\\\](?:${e.join("|")})[/\\\\][^:]+:\\d+:\\d+`)}var kEt=new RegExp("^(?:\\s*at )?(?:(new) )?(?:(.*?) \\()?(?:eval at ([^ ]+) \\((.+?):(\\d+):(\\d+)\\), )?(?:(.+?):(\\d+):(\\d+)|(native))(\\)?)$"),FEt=/^(.*?) \[as (.*?)\]$/;QIe.exports=AB});var RIe=U((dKt,FIe)=>{"use strict";FIe.exports=(t,e)=>t.replace(/^\t+/gm,r=>" ".repeat(r.length*(e||2)))});var NIe=U((mKt,TIe)=>{"use strict";var REt=RIe(),TEt=(t,e)=>{let r=[],o=t-e,a=t+e;for(let n=o;n<=a;n++)r.push(n);return r};TIe.exports=(t,e,r)=>{if(typeof t!="string")throw new TypeError("Source code is missing.");if(!e||e<1)throw new TypeError("Line number must start from `1`.");if(t=REt(t).split(/\r?\n/),!(e>t.length))return r={around:3,...r},TEt(e,r.around).filter(o=>t[o-1]!==void 0).map(o=>({line:o,value:t[o-1]}))}});var ek=U(au=>{"use strict";var NEt=au&&au.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),LEt=au&&au.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),OEt=au&&au.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&NEt(e,t,r);return LEt(e,t),e},MEt=au&&au.__rest||function(t,e){var r={};for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&e.indexOf(o)<0&&(r[o]=t[o]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,o=Object.getOwnPropertySymbols(t);a<o.length;a++)e.indexOf(o[a])<0&&Object.prototype.propertyIsEnumerable.call(t,o[a])&&(r[o[a]]=t[o[a]]);return r};Object.defineProperty(au,"__esModule",{value:!0});var LIe=OEt(en()),dq=LIe.forwardRef((t,e)=>{var{children:r}=t,o=MEt(t,["children"]);let a=Object.assign(Object.assign({},o),{marginLeft:o.marginLeft||o.marginX||o.margin||0,marginRight:o.marginRight||o.marginX||o.margin||0,marginTop:o.marginTop||o.marginY||o.margin||0,marginBottom:o.marginBottom||o.marginY||o.margin||0,paddingLeft:o.paddingLeft||o.paddingX||o.padding||0,paddingRight:o.paddingRight||o.paddingX||o.padding||0,paddingTop:o.paddingTop||o.paddingY||o.padding||0,paddingBottom:o.paddingBottom||o.paddingY||o.padding||0});return LIe.default.createElement("ink-box",{ref:e,style:a},r)});dq.displayName="Box";dq.defaultProps={flexDirection:"row",flexGrow:0,flexShrink:1};au.default=dq});var Eq=U(fB=>{"use strict";var mq=fB&&fB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(fB,"__esModule",{value:!0});var UEt=mq(en()),LC=mq(XQ()),OIe=mq(Z6()),yq=({color:t,backgroundColor:e,dimColor:r,bold:o,italic:a,underline:n,strikethrough:u,inverse:A,wrap:p,children:h})=>{if(h==null)return null;let C=w=>(r&&(w=LC.default.dim(w)),t&&(w=OIe.default(w,t,"foreground")),e&&(w=OIe.default(w,e,"background")),o&&(w=LC.default.bold(w)),a&&(w=LC.default.italic(w)),n&&(w=LC.default.underline(w)),u&&(w=LC.default.strikethrough(w)),A&&(w=LC.default.inverse(w)),w);return UEt.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row",textWrap:p},internal_transform:C},h)};yq.displayName="Text";yq.defaultProps={dimColor:!1,bold:!1,italic:!1,underline:!1,strikethrough:!1,wrap:"wrap"};fB.default=yq});var HIe=U(lu=>{"use strict";var _Et=lu&&lu.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),HEt=lu&&lu.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),qEt=lu&&lu.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&_Et(e,t,r);return HEt(e,t),e},pB=lu&&lu.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(lu,"__esModule",{value:!0});var MIe=qEt(Ie("fs")),hs=pB(en()),UIe=pB(kIe()),jEt=pB(NIe()),$f=pB(ek()),dA=pB(Eq()),_Ie=new UIe.default({cwd:process.cwd(),internals:UIe.default.nodeInternals()}),GEt=({error:t})=>{let e=t.stack?t.stack.split(` |
307 | `).slice(1):void 0,r=e?FIe.parseLine(e[0]):void 0,o,a=0;if((r==null?void 0:r.file)&&(r==null?void 0:r.line)&&QIe.existsSync(r.file)){let n=QIe.readFileSync(r.file,"utf8");if(o=PEt.default(n,r.line),o)for(let{line:u}of o)a=Math.max(a,String(u).length)}return hs.default.createElement(Vf.default,{flexDirection:"column",padding:1},hs.default.createElement(Vf.default,null,hs.default.createElement(gA.default,{backgroundColor:"red",color:"white"}," ","ERROR"," "),hs.default.createElement(gA.default,null," ",t.message)),r&&hs.default.createElement(Vf.default,{marginTop:1},hs.default.createElement(gA.default,{dimColor:!0},r.file,":",r.line,":",r.column)),r&&o&&hs.default.createElement(Vf.default,{marginTop:1,flexDirection:"column"},o.map(({line:n,value:u})=>hs.default.createElement(Vf.default,{key:n},hs.default.createElement(Vf.default,{width:a+1},hs.default.createElement(gA.default,{dimColor:n!==r.line,backgroundColor:n===r.line?"red":void 0,color:n===r.line?"white":void 0},String(n).padStart(a," "),":")),hs.default.createElement(gA.default,{key:n,backgroundColor:n===r.line?"red":void 0,color:n===r.line?"white":void 0}," "+u)))),t.stack&&hs.default.createElement(Vf.default,{marginTop:1,flexDirection:"column"},t.stack.split(` | 307 | `).slice(1):void 0,r=e?_Ie.parseLine(e[0]):void 0,o,a=0;if((r==null?void 0:r.file)&&(r==null?void 0:r.line)&&MIe.existsSync(r.file)){let n=MIe.readFileSync(r.file,"utf8");if(o=jEt.default(n,r.line),o)for(let{line:u}of o)a=Math.max(a,String(u).length)}return hs.default.createElement($f.default,{flexDirection:"column",padding:1},hs.default.createElement($f.default,null,hs.default.createElement(dA.default,{backgroundColor:"red",color:"white"}," ","ERROR"," "),hs.default.createElement(dA.default,null," ",t.message)),r&&hs.default.createElement($f.default,{marginTop:1},hs.default.createElement(dA.default,{dimColor:!0},r.file,":",r.line,":",r.column)),r&&o&&hs.default.createElement($f.default,{marginTop:1,flexDirection:"column"},o.map(({line:n,value:u})=>hs.default.createElement($f.default,{key:n},hs.default.createElement($f.default,{width:a+1},hs.default.createElement(dA.default,{dimColor:n!==r.line,backgroundColor:n===r.line?"red":void 0,color:n===r.line?"white":void 0},String(n).padStart(a," "),":")),hs.default.createElement(dA.default,{key:n,backgroundColor:n===r.line?"red":void 0,color:n===r.line?"white":void 0}," "+u)))),t.stack&&hs.default.createElement($f.default,{marginTop:1,flexDirection:"column"},t.stack.split(` |
308 | `).slice(1).map(n=>{let u=FIe.parseLine(n);return u?hs.default.createElement(Vf.default,{key:n},hs.default.createElement(gA.default,{dimColor:!0},"- "),hs.default.createElement(gA.default,{dimColor:!0,bold:!0},u.function),hs.default.createElement(gA.default,{dimColor:!0,color:"gray"}," ","(",u.file,":",u.line,":",u.column,")")):hs.default.createElement(Vf.default,{key:n},hs.default.createElement(gA.default,{dimColor:!0},"- "),hs.default.createElement(gA.default,{dimColor:!0,bold:!0},n))})))};su.default=xEt});var NIe=U(ou=>{"use strict";var bEt=ou&&ou.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),QEt=ou&&ou.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),kEt=ou&&ou.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&bEt(e,t,r);return QEt(e,t),e},cm=ou&&ou.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ou,"__esModule",{value:!0});var lm=kEt(en()),TIe=cm(p6()),FEt=cm(sq()),REt=cm(aq()),TEt=cm(cq()),NEt=cm(Aq()),LEt=cm(jQ()),OEt=cm(RIe()),MEt=" ",UEt="\x1B[Z",_Et="\x1B",WQ=class extends lm.PureComponent{constructor(){super(...arguments),this.state={isFocusEnabled:!0,activeFocusId:void 0,focusables:[],error:void 0},this.rawModeEnabledCount=0,this.handleSetRawMode=e=>{let{stdin:r}=this.props;if(!this.isRawModeSupported())throw r===process.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default. | 308 | `).slice(1).map(n=>{let u=_Ie.parseLine(n);return u?hs.default.createElement($f.default,{key:n},hs.default.createElement(dA.default,{dimColor:!0},"- "),hs.default.createElement(dA.default,{dimColor:!0,bold:!0},u.function),hs.default.createElement(dA.default,{dimColor:!0,color:"gray"}," ","(",u.file,":",u.line,":",u.column,")")):hs.default.createElement($f.default,{key:n},hs.default.createElement(dA.default,{dimColor:!0},"- "),hs.default.createElement(dA.default,{dimColor:!0,bold:!0},n))})))};lu.default=GEt});var jIe=U(cu=>{"use strict";var WEt=cu&&cu.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),YEt=cu&&cu.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),KEt=cu&&cu.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&WEt(e,t,r);return YEt(e,t),e},pm=cu&&cu.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(cu,"__esModule",{value:!0});var fm=KEt(en()),qIe=pm(d6()),VEt=pm(lq()),JEt=pm(uq()),zEt=pm(fq()),XEt=pm(hq()),ZEt=pm($Q()),$Et=pm(HIe()),eCt=" ",tCt="\x1B[Z",rCt="\x1B",tk=class extends fm.PureComponent{constructor(){super(...arguments),this.state={isFocusEnabled:!0,activeFocusId:void 0,focusables:[],error:void 0},this.rawModeEnabledCount=0,this.handleSetRawMode=e=>{let{stdin:r}=this.props;if(!this.isRawModeSupported())throw r===process.stdin?new Error(`Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default. |
309 | Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`):new Error(`Raw mode is not supported on the stdin provided to Ink. | 309 | Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`):new Error(`Raw mode is not supported on the stdin provided to Ink. |
310 | Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(r.setEncoding("utf8"),e){this.rawModeEnabledCount===0&&(r.addListener("data",this.handleInput),r.resume(),r.setRawMode(!0)),this.rawModeEnabledCount++;return}--this.rawModeEnabledCount===0&&(r.setRawMode(!1),r.removeListener("data",this.handleInput),r.pause())},this.handleInput=e=>{e===""&&this.props.exitOnCtrlC&&this.handleExit(),e===_Et&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(e===MEt&&this.focusNext(),e===UEt&&this.focusPrevious())},this.handleExit=e=>{this.isRawModeSupported()&&this.handleSetRawMode(!1),this.props.onExit(e)},this.enableFocus=()=>{this.setState({isFocusEnabled:!0})},this.disableFocus=()=>{this.setState({isFocusEnabled:!1})},this.focusNext=()=>{this.setState(e=>{let r=e.focusables[0].id;return{activeFocusId:this.findNextFocusable(e)||r}})},this.focusPrevious=()=>{this.setState(e=>{let r=e.focusables[e.focusables.length-1].id;return{activeFocusId:this.findPreviousFocusable(e)||r}})},this.addFocusable=(e,{autoFocus:r})=>{this.setState(o=>{let a=o.activeFocusId;return!a&&r&&(a=e),{activeFocusId:a,focusables:[...o.focusables,{id:e,isActive:!0}]}})},this.removeFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.filter(o=>o.id!==e)}))},this.activateFocusable=e=>{this.setState(r=>({focusables:r.focusables.map(o=>o.id!==e?o:{id:e,isActive:!0})}))},this.deactivateFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.map(o=>o.id!==e?o:{id:e,isActive:!1})}))},this.findNextFocusable=e=>{let r=e.focusables.findIndex(o=>o.id===e.activeFocusId);for(let o=r+1;o<e.focusables.length;o++)if(e.focusables[o].isActive)return e.focusables[o].id},this.findPreviousFocusable=e=>{let r=e.focusables.findIndex(o=>o.id===e.activeFocusId);for(let o=r-1;o>=0;o--)if(e.focusables[o].isActive)return e.focusables[o].id}}static getDerivedStateFromError(e){return{error:e}}isRawModeSupported(){return this.props.stdin.isTTY}render(){return lm.default.createElement(FEt.default.Provider,{value:{exit:this.handleExit}},lm.default.createElement(REt.default.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC}},lm.default.createElement(TEt.default.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout}},lm.default.createElement(NEt.default.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},lm.default.createElement(LEt.default.Provider,{value:{activeId:this.state.activeFocusId,add:this.addFocusable,remove:this.removeFocusable,activate:this.activateFocusable,deactivate:this.deactivateFocusable,enableFocus:this.enableFocus,disableFocus:this.disableFocus,focusNext:this.focusNext,focusPrevious:this.focusPrevious}},this.state.error?lm.default.createElement(OEt.default,{error:this.state.error}):this.props.children)))))}componentDidMount(){TIe.default.hide(this.props.stdout)}componentWillUnmount(){TIe.default.show(this.props.stdout),this.isRawModeSupported()&&this.handleSetRawMode(!1)}componentDidCatch(e){this.handleExit(e)}};ou.default=WQ;WQ.displayName="InternalApp"});var MIe=U(au=>{"use strict";var HEt=au&&au.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),qEt=au&&au.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),jEt=au&&au.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&HEt(e,t,r);return qEt(e,t),e},lu=au&&au.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(au,"__esModule",{value:!0});var GEt=lu(en()),LIe=dM(),WEt=lu(BEe()),YEt=lu(l6()),KEt=lu(bEe()),JEt=lu(kEe()),mq=lu(vCe()),VEt=lu(lIe()),zEt=lu(f6()),XEt=lu(fIe()),ZEt=jEt(q6()),$Et=lu(nq()),eCt=lu(NIe()),FC=process.env.CI==="false"?!1:KEt.default,OIe=()=>{},yq=class{constructor(e){this.resolveExitPromise=()=>{},this.rejectExitPromise=()=>{},this.unsubscribeExit=()=>{},this.onRender=()=>{if(this.isUnmounted)return;let{output:r,outputHeight:o,staticOutput:a}=VEt.default(this.rootNode,this.options.stdout.columns||80),n=a&&a!==` | 310 | Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(r.setEncoding("utf8"),e){this.rawModeEnabledCount===0&&(r.addListener("data",this.handleInput),r.resume(),r.setRawMode(!0)),this.rawModeEnabledCount++;return}--this.rawModeEnabledCount===0&&(r.setRawMode(!1),r.removeListener("data",this.handleInput),r.pause())},this.handleInput=e=>{e===""&&this.props.exitOnCtrlC&&this.handleExit(),e===rCt&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(e===eCt&&this.focusNext(),e===tCt&&this.focusPrevious())},this.handleExit=e=>{this.isRawModeSupported()&&this.handleSetRawMode(!1),this.props.onExit(e)},this.enableFocus=()=>{this.setState({isFocusEnabled:!0})},this.disableFocus=()=>{this.setState({isFocusEnabled:!1})},this.focusNext=()=>{this.setState(e=>{let r=e.focusables[0].id;return{activeFocusId:this.findNextFocusable(e)||r}})},this.focusPrevious=()=>{this.setState(e=>{let r=e.focusables[e.focusables.length-1].id;return{activeFocusId:this.findPreviousFocusable(e)||r}})},this.addFocusable=(e,{autoFocus:r})=>{this.setState(o=>{let a=o.activeFocusId;return!a&&r&&(a=e),{activeFocusId:a,focusables:[...o.focusables,{id:e,isActive:!0}]}})},this.removeFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.filter(o=>o.id!==e)}))},this.activateFocusable=e=>{this.setState(r=>({focusables:r.focusables.map(o=>o.id!==e?o:{id:e,isActive:!0})}))},this.deactivateFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.map(o=>o.id!==e?o:{id:e,isActive:!1})}))},this.findNextFocusable=e=>{let r=e.focusables.findIndex(o=>o.id===e.activeFocusId);for(let o=r+1;o<e.focusables.length;o++)if(e.focusables[o].isActive)return e.focusables[o].id},this.findPreviousFocusable=e=>{let r=e.focusables.findIndex(o=>o.id===e.activeFocusId);for(let o=r-1;o>=0;o--)if(e.focusables[o].isActive)return e.focusables[o].id}}static getDerivedStateFromError(e){return{error:e}}isRawModeSupported(){return this.props.stdin.isTTY}render(){return fm.default.createElement(VEt.default.Provider,{value:{exit:this.handleExit}},fm.default.createElement(JEt.default.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC}},fm.default.createElement(zEt.default.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout}},fm.default.createElement(XEt.default.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},fm.default.createElement(ZEt.default.Provider,{value:{activeId:this.state.activeFocusId,add:this.addFocusable,remove:this.removeFocusable,activate:this.activateFocusable,deactivate:this.deactivateFocusable,enableFocus:this.enableFocus,disableFocus:this.disableFocus,focusNext:this.focusNext,focusPrevious:this.focusPrevious}},this.state.error?fm.default.createElement($Et.default,{error:this.state.error}):this.props.children)))))}componentDidMount(){qIe.default.hide(this.props.stdout)}componentWillUnmount(){qIe.default.show(this.props.stdout),this.isRawModeSupported()&&this.handleSetRawMode(!1)}componentDidCatch(e){this.handleExit(e)}};cu.default=tk;tk.displayName="InternalApp"});var YIe=U(uu=>{"use strict";var nCt=uu&&uu.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),iCt=uu&&uu.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),sCt=uu&&uu.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&nCt(e,t,r);return iCt(e,t),e},Au=uu&&uu.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(uu,"__esModule",{value:!0});var oCt=Au(en()),GIe=EM(),aCt=Au(kEe()),lCt=Au(A6()),cCt=Au(OEe()),uCt=Au(UEe()),Cq=Au(FCe()),ACt=Au(dIe()),fCt=Au(g6()),pCt=Au(CIe()),hCt=sCt(W6()),gCt=Au(oq()),dCt=Au(jIe()),OC=process.env.CI==="false"?!1:cCt.default,WIe=()=>{},Iq=class{constructor(e){this.resolveExitPromise=()=>{},this.rejectExitPromise=()=>{},this.unsubscribeExit=()=>{},this.onRender=()=>{if(this.isUnmounted)return;let{output:r,outputHeight:o,staticOutput:a}=ACt.default(this.rootNode,this.options.stdout.columns||80),n=a&&a!==` |
311 | `;if(this.options.debug){n&&(this.fullStaticOutput+=a),this.options.stdout.write(this.fullStaticOutput+r);return}if(FC){n&&this.options.stdout.write(a),this.lastOutput=r;return}if(n&&(this.fullStaticOutput+=a),o>=this.options.stdout.rows){this.options.stdout.write(YEt.default.clearTerminal+this.fullStaticOutput+r),this.lastOutput=r;return}n&&(this.log.clear(),this.options.stdout.write(a),this.log(r)),!n&&r!==this.lastOutput&&this.throttledLog(r),this.lastOutput=r},JEt.default(this),this.options=e,this.rootNode=ZEt.createNode("ink-root"),this.rootNode.onRender=e.debug?this.onRender:LIe(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=WEt.default.create(e.stdout),this.throttledLog=e.debug?this.log:LIe(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput="",this.fullStaticOutput="",this.container=mq.default.createContainer(this.rootNode,!1,!1),this.unsubscribeExit=zEt.default(this.unmount,{alwaysLast:!1}),e.patchConsole&&this.patchConsole(),FC||(e.stdout.on("resize",this.onRender),this.unsubscribeResize=()=>{e.stdout.off("resize",this.onRender)})}render(e){let r=GEt.default.createElement(eCt.default,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount},e);mq.default.updateContainer(r,this.container,null,OIe)}writeToStdout(e){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(e+this.fullStaticOutput+this.lastOutput);return}if(FC){this.options.stdout.write(e);return}this.log.clear(),this.options.stdout.write(e),this.log(this.lastOutput)}}writeToStderr(e){if(!this.isUnmounted){if(this.options.debug){this.options.stderr.write(e),this.options.stdout.write(this.fullStaticOutput+this.lastOutput);return}if(FC){this.options.stderr.write(e);return}this.log.clear(),this.options.stderr.write(e),this.log(this.lastOutput)}}unmount(e){this.isUnmounted||(this.onRender(),this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize(),FC?this.options.stdout.write(this.lastOutput+` | 311 | `;if(this.options.debug){n&&(this.fullStaticOutput+=a),this.options.stdout.write(this.fullStaticOutput+r);return}if(OC){n&&this.options.stdout.write(a),this.lastOutput=r;return}if(n&&(this.fullStaticOutput+=a),o>=this.options.stdout.rows){this.options.stdout.write(lCt.default.clearTerminal+this.fullStaticOutput+r),this.lastOutput=r;return}n&&(this.log.clear(),this.options.stdout.write(a),this.log(r)),!n&&r!==this.lastOutput&&this.throttledLog(r),this.lastOutput=r},uCt.default(this),this.options=e,this.rootNode=hCt.createNode("ink-root"),this.rootNode.onRender=e.debug?this.onRender:GIe(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=aCt.default.create(e.stdout),this.throttledLog=e.debug?this.log:GIe(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput="",this.fullStaticOutput="",this.container=Cq.default.createContainer(this.rootNode,!1,!1),this.unsubscribeExit=fCt.default(this.unmount,{alwaysLast:!1}),e.patchConsole&&this.patchConsole(),OC||(e.stdout.on("resize",this.onRender),this.unsubscribeResize=()=>{e.stdout.off("resize",this.onRender)})}render(e){let r=oCt.default.createElement(dCt.default,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount},e);Cq.default.updateContainer(r,this.container,null,WIe)}writeToStdout(e){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(e+this.fullStaticOutput+this.lastOutput);return}if(OC){this.options.stdout.write(e);return}this.log.clear(),this.options.stdout.write(e),this.log(this.lastOutput)}}writeToStderr(e){if(!this.isUnmounted){if(this.options.debug){this.options.stderr.write(e),this.options.stdout.write(this.fullStaticOutput+this.lastOutput);return}if(OC){this.options.stderr.write(e);return}this.log.clear(),this.options.stderr.write(e),this.log(this.lastOutput)}}unmount(e){this.isUnmounted||(this.onRender(),this.unsubscribeExit(),typeof this.restoreConsole=="function"&&this.restoreConsole(),typeof this.unsubscribeResize=="function"&&this.unsubscribeResize(),OC?this.options.stdout.write(this.lastOutput+` |
312 | `):this.options.debug||this.log.done(),this.isUnmounted=!0,mq.default.updateContainer(null,this.container,null,OIe),$Et.default.delete(this.options.stdout),e instanceof Error?this.rejectExitPromise(e):this.resolveExitPromise())}waitUntilExit(){return this.exitPromise||(this.exitPromise=new Promise((e,r)=>{this.resolveExitPromise=e,this.rejectExitPromise=r})),this.exitPromise}clear(){!FC&&!this.options.debug&&this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=XEt.default((e,r)=>{e==="stdout"&&this.writeToStdout(r),e==="stderr"&&(r.startsWith("The above error occurred")||this.writeToStderr(r))}))}};au.default=yq});var _Ie=U(lB=>{"use strict";var UIe=lB&&lB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(lB,"__esModule",{value:!0});var tCt=UIe(MIe()),YQ=UIe(nq()),rCt=Ie("stream"),nCt=(t,e)=>{let r=Object.assign({stdout:process.stdout,stdin:process.stdin,stderr:process.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0},iCt(e)),o=sCt(r.stdout,()=>new tCt.default(r));return o.render(t),{rerender:o.render,unmount:()=>o.unmount(),waitUntilExit:o.waitUntilExit,cleanup:()=>YQ.default.delete(r.stdout),clear:o.clear}};lB.default=nCt;var iCt=(t={})=>t instanceof rCt.Stream?{stdout:t,stdin:process.stdin}:t,sCt=(t,e)=>{let r;return YQ.default.has(t)?r=YQ.default.get(t):(r=e(),YQ.default.set(t,r)),r}});var qIe=U(zf=>{"use strict";var oCt=zf&&zf.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),aCt=zf&&zf.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),lCt=zf&&zf.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&oCt(e,t,r);return aCt(e,t),e};Object.defineProperty(zf,"__esModule",{value:!0});var cB=lCt(en()),HIe=t=>{let{items:e,children:r,style:o}=t,[a,n]=cB.useState(0),u=cB.useMemo(()=>e.slice(a),[e,a]);cB.useLayoutEffect(()=>{n(e.length)},[e.length]);let A=u.map((h,C)=>r(h,a+C)),p=cB.useMemo(()=>Object.assign({position:"absolute",flexDirection:"column"},o),[o]);return cB.default.createElement("ink-box",{internal_static:!0,style:p},A)};HIe.displayName="Static";zf.default=HIe});var GIe=U(uB=>{"use strict";var cCt=uB&&uB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(uB,"__esModule",{value:!0});var uCt=cCt(en()),jIe=({children:t,transform:e})=>t==null?null:uCt.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row"},internal_transform:e},t);jIe.displayName="Transform";uB.default=jIe});var YIe=U(AB=>{"use strict";var ACt=AB&&AB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(AB,"__esModule",{value:!0});var fCt=ACt(en()),WIe=({count:t=1})=>fCt.default.createElement("ink-text",null,` | 312 | `):this.options.debug||this.log.done(),this.isUnmounted=!0,Cq.default.updateContainer(null,this.container,null,WIe),gCt.default.delete(this.options.stdout),e instanceof Error?this.rejectExitPromise(e):this.resolveExitPromise())}waitUntilExit(){return this.exitPromise||(this.exitPromise=new Promise((e,r)=>{this.resolveExitPromise=e,this.rejectExitPromise=r})),this.exitPromise}clear(){!OC&&!this.options.debug&&this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=pCt.default((e,r)=>{e==="stdout"&&this.writeToStdout(r),e==="stderr"&&(r.startsWith("The above error occurred")||this.writeToStderr(r))}))}};uu.default=Iq});var VIe=U(hB=>{"use strict";var KIe=hB&&hB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(hB,"__esModule",{value:!0});var mCt=KIe(YIe()),rk=KIe(oq()),yCt=Ie("stream"),ECt=(t,e)=>{let r=Object.assign({stdout:process.stdout,stdin:process.stdin,stderr:process.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0},CCt(e)),o=ICt(r.stdout,()=>new mCt.default(r));return o.render(t),{rerender:o.render,unmount:()=>o.unmount(),waitUntilExit:o.waitUntilExit,cleanup:()=>rk.default.delete(r.stdout),clear:o.clear}};hB.default=ECt;var CCt=(t={})=>t instanceof yCt.Stream?{stdout:t,stdin:process.stdin}:t,ICt=(t,e)=>{let r;return rk.default.has(t)?r=rk.default.get(t):(r=e(),rk.default.set(t,r)),r}});var zIe=U(ep=>{"use strict";var wCt=ep&&ep.__createBinding||(Object.create?function(t,e,r,o){o===void 0&&(o=r),Object.defineProperty(t,o,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,o){o===void 0&&(o=r),t[o]=e[r]}),BCt=ep&&ep.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),vCt=ep&&ep.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!=="default"&&Object.hasOwnProperty.call(t,r)&&wCt(e,t,r);return BCt(e,t),e};Object.defineProperty(ep,"__esModule",{value:!0});var gB=vCt(en()),JIe=t=>{let{items:e,children:r,style:o}=t,[a,n]=gB.useState(0),u=gB.useMemo(()=>e.slice(a),[e,a]);gB.useLayoutEffect(()=>{n(e.length)},[e.length]);let A=u.map((h,C)=>r(h,a+C)),p=gB.useMemo(()=>Object.assign({position:"absolute",flexDirection:"column"},o),[o]);return gB.default.createElement("ink-box",{internal_static:!0,style:p},A)};JIe.displayName="Static";ep.default=JIe});var ZIe=U(dB=>{"use strict";var DCt=dB&&dB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(dB,"__esModule",{value:!0});var SCt=DCt(en()),XIe=({children:t,transform:e})=>t==null?null:SCt.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row"},internal_transform:e},t);XIe.displayName="Transform";dB.default=XIe});var ewe=U(mB=>{"use strict";var PCt=mB&&mB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(mB,"__esModule",{value:!0});var xCt=PCt(en()),$Ie=({count:t=1})=>xCt.default.createElement("ink-text",null,` |
313 | `.repeat(t));WIe.displayName="Newline";AB.default=WIe});var VIe=U(fB=>{"use strict";var KIe=fB&&fB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(fB,"__esModule",{value:!0});var pCt=KIe(en()),hCt=KIe(GQ()),JIe=()=>pCt.default.createElement(hCt.default,{flexGrow:1});JIe.displayName="Spacer";fB.default=JIe});var KQ=U(pB=>{"use strict";var gCt=pB&&pB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(pB,"__esModule",{value:!0});var dCt=en(),mCt=gCt(aq()),yCt=()=>dCt.useContext(mCt.default);pB.default=yCt});var XIe=U(hB=>{"use strict";var ECt=hB&&hB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(hB,"__esModule",{value:!0});var zIe=en(),CCt=ECt(KQ()),ICt=(t,e={})=>{let{stdin:r,setRawMode:o,internal_exitOnCtrlC:a}=CCt.default();zIe.useEffect(()=>{if(e.isActive!==!1)return o(!0),()=>{o(!1)}},[e.isActive,o]),zIe.useEffect(()=>{if(e.isActive===!1)return;let n=u=>{let A=String(u),p={upArrow:A==="\x1B[A",downArrow:A==="\x1B[B",leftArrow:A==="\x1B[D",rightArrow:A==="\x1B[C",pageDown:A==="\x1B[6~",pageUp:A==="\x1B[5~",return:A==="\r",escape:A==="\x1B",ctrl:!1,shift:!1,tab:A===" "||A==="\x1B[Z",backspace:A==="\b",delete:A==="\x7F"||A==="\x1B[3~",meta:!1};A<=""&&!p.return&&(A=String.fromCharCode(A.charCodeAt(0)+"a".charCodeAt(0)-1),p.ctrl=!0),A.startsWith("\x1B")&&(A=A.slice(1),p.meta=!0);let h=A>="A"&&A<="Z",C=A>="\u0410"&&A<="\u042F";A.length===1&&(h||C)&&(p.shift=!0),p.tab&&A==="[Z"&&(p.shift=!0),(p.tab||p.backspace||p.delete)&&(A=""),(!(A==="c"&&p.ctrl)||!a)&&t(A,p)};return r==null||r.on("data",n),()=>{r==null||r.off("data",n)}},[e.isActive,r,a,t])};hB.default=ICt});var ZIe=U(gB=>{"use strict";var wCt=gB&&gB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(gB,"__esModule",{value:!0});var BCt=en(),vCt=wCt(sq()),DCt=()=>BCt.useContext(vCt.default);gB.default=DCt});var $Ie=U(dB=>{"use strict";var SCt=dB&&dB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(dB,"__esModule",{value:!0});var PCt=en(),xCt=SCt(cq()),bCt=()=>PCt.useContext(xCt.default);dB.default=bCt});var ewe=U(mB=>{"use strict";var QCt=mB&&mB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(mB,"__esModule",{value:!0});var kCt=en(),FCt=QCt(Aq()),RCt=()=>kCt.useContext(FCt.default);mB.default=RCt});var rwe=U(EB=>{"use strict";var twe=EB&&EB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(EB,"__esModule",{value:!0});var yB=en(),TCt=twe(jQ()),NCt=twe(KQ()),LCt=({isActive:t=!0,autoFocus:e=!1}={})=>{let{isRawModeSupported:r,setRawMode:o}=NCt.default(),{activeId:a,add:n,remove:u,activate:A,deactivate:p}=yB.useContext(TCt.default),h=yB.useMemo(()=>Math.random().toString().slice(2,7),[]);return yB.useEffect(()=>(n(h,{autoFocus:e}),()=>{u(h)}),[h,e]),yB.useEffect(()=>{t?A(h):p(h)},[t,h]),yB.useEffect(()=>{if(!(!r||!t))return o(!0),()=>{o(!1)}},[t]),{isFocused:Boolean(h)&&a===h}};EB.default=LCt});var nwe=U(CB=>{"use strict";var OCt=CB&&CB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(CB,"__esModule",{value:!0});var MCt=en(),UCt=OCt(jQ()),_Ct=()=>{let t=MCt.useContext(UCt.default);return{enableFocus:t.enableFocus,disableFocus:t.disableFocus,focusNext:t.focusNext,focusPrevious:t.focusPrevious}};CB.default=_Ct});var iwe=U(Eq=>{"use strict";Object.defineProperty(Eq,"__esModule",{value:!0});Eq.default=t=>{var e,r,o,a;return{width:(r=(e=t.yogaNode)===null||e===void 0?void 0:e.getComputedWidth())!==null&&r!==void 0?r:0,height:(a=(o=t.yogaNode)===null||o===void 0?void 0:o.getComputedHeight())!==null&&a!==void 0?a:0}}});var oc=U($s=>{"use strict";Object.defineProperty($s,"__esModule",{value:!0});var HCt=_Ie();Object.defineProperty($s,"render",{enumerable:!0,get:function(){return HCt.default}});var qCt=GQ();Object.defineProperty($s,"Box",{enumerable:!0,get:function(){return qCt.default}});var jCt=dq();Object.defineProperty($s,"Text",{enumerable:!0,get:function(){return jCt.default}});var GCt=qIe();Object.defineProperty($s,"Static",{enumerable:!0,get:function(){return GCt.default}});var WCt=GIe();Object.defineProperty($s,"Transform",{enumerable:!0,get:function(){return WCt.default}});var YCt=YIe();Object.defineProperty($s,"Newline",{enumerable:!0,get:function(){return YCt.default}});var KCt=VIe();Object.defineProperty($s,"Spacer",{enumerable:!0,get:function(){return KCt.default}});var JCt=XIe();Object.defineProperty($s,"useInput",{enumerable:!0,get:function(){return JCt.default}});var VCt=ZIe();Object.defineProperty($s,"useApp",{enumerable:!0,get:function(){return VCt.default}});var zCt=KQ();Object.defineProperty($s,"useStdin",{enumerable:!0,get:function(){return zCt.default}});var XCt=$Ie();Object.defineProperty($s,"useStdout",{enumerable:!0,get:function(){return XCt.default}});var ZCt=ewe();Object.defineProperty($s,"useStderr",{enumerable:!0,get:function(){return ZCt.default}});var $Ct=rwe();Object.defineProperty($s,"useFocus",{enumerable:!0,get:function(){return $Ct.default}});var eIt=nwe();Object.defineProperty($s,"useFocusManager",{enumerable:!0,get:function(){return eIt.default}});var tIt=iwe();Object.defineProperty($s,"measureElement",{enumerable:!0,get:function(){return tIt.default}})});var Iq={};Yt(Iq,{Gem:()=>Cq});var swe,um,Cq,JQ=dt(()=>{swe=tt(oc()),um=tt(en()),Cq=(0,um.memo)(({active:t})=>{let e=(0,um.useMemo)(()=>t?"\u25C9":"\u25EF",[t]),r=(0,um.useMemo)(()=>t?"green":"yellow",[t]);return um.default.createElement(swe.Text,{color:r},e)})});var awe={};Yt(awe,{useKeypress:()=>Am});function Am({active:t},e,r){let{stdin:o}=(0,owe.useStdin)(),a=(0,VQ.useCallback)((n,u)=>e(n,u),r);(0,VQ.useEffect)(()=>{if(!(!t||!o))return o.on("keypress",a),()=>{o.off("keypress",a)}},[t,a,o])}var owe,VQ,IB=dt(()=>{owe=tt(oc()),VQ=tt(en())});var cwe={};Yt(cwe,{FocusRequest:()=>lwe,useFocusRequest:()=>wq});var lwe,wq,Bq=dt(()=>{IB();lwe=(r=>(r.BEFORE="before",r.AFTER="after",r))(lwe||{}),wq=function({active:t},e,r){Am({active:t},(o,a)=>{a.name==="tab"&&(a.shift?e("before"):e("after"))},r)}});var uwe={};Yt(uwe,{useListInput:()=>wB});var wB,zQ=dt(()=>{IB();wB=function(t,e,{active:r,minus:o,plus:a,set:n,loop:u=!0}){Am({active:r},(A,p)=>{let h=e.indexOf(t);switch(p.name){case o:{let C=h-1;if(u){n(e[(e.length+C)%e.length]);return}if(C<0)return;n(e[C])}break;case a:{let C=h+1;if(u){n(e[C%e.length]);return}if(C>=e.length)return;n(e[C])}break}},[e,t,a,n,u])}});var XQ={};Yt(XQ,{ScrollableItems:()=>rIt});var dh,Na,rIt,ZQ=dt(()=>{dh=tt(oc()),Na=tt(en());Bq();zQ();rIt=({active:t=!0,children:e=[],radius:r=10,size:o=1,loop:a=!0,onFocusRequest:n,willReachEnd:u})=>{let A=L=>{if(L.key===null)throw new Error("Expected all children to have a key");return L.key},p=Na.default.Children.map(e,L=>A(L)),h=p[0],[C,w]=(0,Na.useState)(h),v=p.indexOf(C);(0,Na.useEffect)(()=>{p.includes(C)||w(h)},[e]),(0,Na.useEffect)(()=>{u&&v>=p.length-2&&u()},[v]),wq({active:t&&!!n},L=>{n==null||n(L)},[n]),wB(C,p,{active:t,minus:"up",plus:"down",set:w,loop:a});let b=v-r,E=v+r;E>p.length&&(b-=E-p.length,E=p.length),b<0&&(E+=-b,b=0),E>=p.length&&(E=p.length-1);let R=[];for(let L=b;L<=E;++L){let _=p[L],J=t&&_===C;R.push(Na.default.createElement(dh.Box,{key:_,height:o},Na.default.createElement(dh.Box,{marginLeft:1,marginRight:1},Na.default.createElement(dh.Text,null,J?Na.default.createElement(dh.Text,{color:"cyan",bold:!0},">"):" ")),Na.default.createElement(dh.Box,null,Na.default.cloneElement(e[L],{active:J}))))}return Na.default.createElement(dh.Box,{flexDirection:"column",width:"100%"},R)}});var Awe,Xf,fwe,vq,pwe,Dq=dt(()=>{Awe=tt(oc()),Xf=tt(en()),fwe=Ie("readline"),vq=Xf.default.createContext(null),pwe=({children:t})=>{let{stdin:e,setRawMode:r}=(0,Awe.useStdin)();(0,Xf.useEffect)(()=>{r&&r(!0),e&&(0,fwe.emitKeypressEvents)(e)},[e,r]);let[o,a]=(0,Xf.useState)(new Map),n=(0,Xf.useMemo)(()=>({getAll:()=>o,get:u=>o.get(u),set:(u,A)=>a(new Map([...o,[u,A]]))}),[o,a]);return Xf.default.createElement(vq.Provider,{value:n,children:t})}});var Sq={};Yt(Sq,{useMinistore:()=>nIt});function nIt(t,e){let r=(0,$Q.useContext)(vq);if(r===null)throw new Error("Expected this hook to run with a ministore context attached");if(typeof t>"u")return r.getAll();let o=(0,$Q.useCallback)(n=>{r.set(t,n)},[t,r.set]),a=r.get(t);return typeof a>"u"&&(a=e),[a,o]}var $Q,Pq=dt(()=>{$Q=tt(en());Dq()});var tk={};Yt(tk,{renderForm:()=>iIt});async function iIt(t,e,{stdin:r,stdout:o,stderr:a}){let n,u=p=>{let{exit:h}=(0,ek.useApp)();Am({active:!0},(C,w)=>{w.name==="return"&&(n=p,h())},[h,p])},{waitUntilExit:A}=(0,ek.render)(xq.default.createElement(pwe,null,xq.default.createElement(t,{...e,useSubmit:u})),{stdin:r,stdout:o,stderr:a});return await A(),n}var ek,xq,rk=dt(()=>{ek=tt(oc()),xq=tt(en());Dq();IB()});var mwe=U(BB=>{"use strict";Object.defineProperty(BB,"__esModule",{value:!0});BB.UncontrolledTextInput=void 0;var gwe=en(),bq=en(),hwe=oc(),fm=HQ(),dwe=({value:t,placeholder:e="",focus:r=!0,mask:o,highlightPastedText:a=!1,showCursor:n=!0,onChange:u,onSubmit:A})=>{let[{cursorOffset:p,cursorWidth:h},C]=bq.useState({cursorOffset:(t||"").length,cursorWidth:0});bq.useEffect(()=>{C(R=>{if(!r||!n)return R;let L=t||"";return R.cursorOffset>L.length-1?{cursorOffset:L.length,cursorWidth:0}:R})},[t,r,n]);let w=a?h:0,v=o?o.repeat(t.length):t,b=v,E=e?fm.grey(e):void 0;if(n&&r){E=e.length>0?fm.inverse(e[0])+fm.grey(e.slice(1)):fm.inverse(" "),b=v.length>0?"":fm.inverse(" ");let R=0;for(let L of v)R>=p-w&&R<=p?b+=fm.inverse(L):b+=L,R++;v.length>0&&p===v.length&&(b+=fm.inverse(" "))}return hwe.useInput((R,L)=>{if(L.upArrow||L.downArrow||L.ctrl&&R==="c"||L.tab||L.shift&&L.tab)return;if(L.return){A&&A(t);return}let _=p,J=t,re=0;L.leftArrow?n&&_--:L.rightArrow?n&&_++:L.backspace||L.delete?p>0&&(J=t.slice(0,p-1)+t.slice(p,t.length),_--):(J=t.slice(0,p)+R+t.slice(p,t.length),_+=R.length,R.length>1&&(re=R.length)),p<0&&(_=0),p>t.length&&(_=t.length),C({cursorOffset:_,cursorWidth:re}),J!==t&&u(J)},{isActive:r}),gwe.createElement(hwe.Text,null,e?v.length>0?b:E:b)};BB.default=dwe;BB.UncontrolledTextInput=t=>{let[e,r]=bq.useState("");return gwe.createElement(dwe,Object.assign({},t,{value:e,onChange:r}))}});var Cwe={};Yt(Cwe,{Pad:()=>Qq});var ywe,Ewe,Qq,kq=dt(()=>{ywe=tt(oc()),Ewe=tt(en()),Qq=({length:t,active:e})=>{if(t===0)return null;let r=t>1?` ${"-".repeat(t-1)}`:" ";return Ewe.default.createElement(ywe.Text,{dimColor:!e},r)}});var Iwe={};Yt(Iwe,{ItemOptions:()=>sIt});var DB,yh,sIt,wwe=dt(()=>{DB=tt(oc()),yh=tt(en());zQ();JQ();kq();sIt=function({active:t,skewer:e,options:r,value:o,onChange:a,sizes:n=[]}){let u=r.filter(({label:p})=>!!p).map(({value:p})=>p),A=r.findIndex(p=>p.value===o&&p.label!="");return wB(o,u,{active:t,minus:"left",plus:"right",set:a}),yh.default.createElement(yh.default.Fragment,null,r.map(({label:p},h)=>{let C=h===A,w=n[h]-1||0,v=p.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,""),b=Math.max(0,w-v.length-2);return p?yh.default.createElement(DB.Box,{key:p,width:w,marginLeft:1},yh.default.createElement(DB.Text,{wrap:"truncate"},yh.default.createElement(Cq,{active:C})," ",p),e?yh.default.createElement(Qq,{active:t,length:b}):null):yh.default.createElement(DB.Box,{key:`spacer-${h}`,width:w,marginLeft:1})}))}});var Mwe=U((WJt,Owe)=>{var _q;Owe.exports=()=>(typeof _q>"u"&&(_q=Ie("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),_q)});var c1e=U((jVt,l1e)=>{var Jq;l1e.exports=()=>(typeof Jq>"u"&&(Jq=Ie("zlib").brotliDecompressSync(Buffer.from("W0ITIYraNFp90uxo1RSxehqwHODJaHgPCKpVI9TOKNxKQOgrfkPf9qPYhNAiwG2mj0hIa32//Fn2z8/XW5zUvj45ZMY54BCnqINFYq0brVDR2oDL7fuq5s5l+qfwdAStAPFqPj+m10lwjCulgqaonb/Q6mvaXMT5ZVP/nssNfYbI4CKcrvFDv5SOJ6ywrRjXnSBOMlbptP+mOhMFyowrwUm8r6cAbbC1zTlTNvag4pLmZUqOQU31zFR19zJxiwud3J4+bG1ukPm2kICADy8l3a/3zV4ZSQBdJBcqlKKADnQxUwaZgmyn+3Q3MW+MFoMBtGY+vgPpsbTmdvd9DzMD/OUAuywCu9+aSMbbLHYmUjGMsCubxbJqWcmwCBbgjguRn87tlLfIErrZVZX1dk7eBbeECFA2K3nCpHNsmopJZAX8bWNZY7e13ee70xAgvIJbkugmNvFoKelDYWsTP7Iky7L8QNLNagz9H/Ji2x8rzkxa7+44UBQXJPkFW1tpHoKGuD0g4lUERPsty9eHl/fMO726Fa9yh5Lt17/E8xVb0tcxPve8y3hhE7BMHd93HS9sVj7pv8UnnCXHhXQQhilW9IApvrcD/EZNTgr4IyxyzWVeeWVdOH90iwyvIncs6Nmoelp2UhFrn8oQ+V3gMrJ67jUA3fuNaPGXA4QKWGIuDRIbAuD+/wZGONPrJ9iCXizbh6NxhCJO0QxaMSKwd40/xR5DwimYMf32dvfpAJKAhwCl5ZsGtHE+4cMDi8aM3SQ/IoMzy5y2GsFB/qV0pis0J7haUKkflx3lXm8GS7loQx/SyFt4Ry31j70SUHWtN2pefXYzGICnoLxmFr6bi+ZP+zqFKMwkx8SHWxE3dgEG6jJ4OPzxZjXjv50SUPs+qFALuLYKeekXiiMK1t+7EQcPpMe7AumjRCaDwIR/nswApZdJCb4ecCXokOo9FJdCDCChV0dryvWNhohtZDSK/+FiBT9titkW+o8yVMYyCCiu6crGwBbhg3ja3vTGjJggmmfuk3vqAc+ok78JTP6n0m6fbrevHw1nimLkef1CQWN/ZxWVNGcVqumu/HFnj1r0jarW57VbH6M7txPlQ1k5psWe4VV+1YyuWt/fNZqH7jVds8OWzE4vjyjg0HiXdZ+187HdotwXe6GcIapOmi7h67vkgtjowRca8CSH7+LO7kBdfTSXSR8r0QPzEf4oDGiNf2oMGtnK6QennRpkIdLs96IA/6iK7Ne4G9PqjFDfdh8XpMxF+Qbtyxk0FOUqOIsyGJ/NQ/JpvJ9/fpAkegDl/aTa4mPPP9vERPzfXHqxsKLP/Z0ol5bUrX0aIj1lRJfmd+hFc225AD2JVuJbQoncsoxHuX6EyY4unOel+XBAkIlEEEWM6ocjHBvvQjP5cIr8XmMl7894R2DdNXvAz6QScI23TPw0r/9h7pUq4ebzUa5SPIyfY6TP3aCwAAYr/OZd09JJCPlIW1iWrm5FJUxY6sYAJA8JDspArnN6q9fToey23T2kvF0NsFNf9Pc/PoIeEjqxpBbTYmQcjhscqy+3HkFc1aw9wUA/MJahYNyl0aCHpwBtn9ffXViy1yqU9nCk9Psr6dBNt9tfJ5TpO9Ohj5L54MarnqPB2jwj6hTGGzmxPZeEqSNQro6ZJ865vlQ37SmPaZBHyANEvHfLIIezfxloEAoA3FzNm9QIoq5YsW2p+ALbJRvpyfRYy81ReBPdrJjkllaY6j4HUb3yd6k2q2qrqrY50gUie0yinwEOpzCpZzNE/63j2qw8I2i1TiMCSIijlmMth13UDFPCo8WY1KFpFQzWfckyqtVS5bb0uWeVOwY9GcycDeH8AQAhrgKs3zyvu3dN1pBEGZ1L8ITmwwLPUH/mWv5xNumhinUnSWH3950r5jreCqNBopME9XhkKrnH78qlCeiy/yXNSbHMB1Nyj/5dTL9k8SXD8Vl51jFCZqHzShbpUHWwDxpZbeYiQoAONnuYgJre+qap69OVaNXmaRQDUhJpHBl5o/FdPArsJ9Xj1BDxE/IOIhXkk/OfoDTVVgH+sshDZ43NzBVgzm3pHYCV3RcbJPL3wva7KBtuv6M1RMyDsWDxg4EkKGMHVoRmBfAiy0AqNQKulv0YUWrjkqQXb4wS50CZ5rOQ4Eo1NSKIo+1dpurybqTn1zyGlokbq1aszpIC1BVR12qRTCm1HzYIuwIZwgAug3KoYXikrfnxSL8yWCQg3FviHuClVH9z9P6SHpEvxXyWpXDpiVqxmbl8PZH+jKSnpIdxN3szIid50bAaGYiCTjaOG1zRvQs4qud/pKj+glfHMLcLKMw5i28F7JdjzOrD/u64ayeXBUTg1fTcuCB3m3c75LHw5VALhh4YYSpm7GfEluemsapW0kqUaGRk37fkZd9k6KeuqbmumHLc7cLo5iAf62bkRulYqnk0VhxI8No7j2WU1NBTSlOG1qXzukddZZLaQTy5AccRlFcTr9hmvgyTBnNKM0/X0HrqSYkHVcCQyqNQURG3fBOmBziO8+9zGGO8oO6kZM6wQMe4aSLbFZxKXIHwwy1oTBu+9k0HZehekPenMK1tSahhoXkqPnFb3lU5OgTaMrZVmW1XQ39udD0OV470+Z0b+8SuXk9rB9zY+pznkzQI/C0Um4JB0Te/THlHik2RZnzYCeO8ArTlFGMu81c5N9q69F3Xr4+40kc7gPoBnzdh433r97+1g7/fkMtK1N8jwFi7ilbfgKCUuHe0FPCjMsk4z5CKUyAehVe7ereh+zhUAC6SxFhtaE1RnX7Xu2UXgICleXT+fNtwDORQ12aO30d9xmlxAw1Hqv3IZyDd58p5GdikT8ZHaKveHlnIhVZpDQqKCB5Kk+dpal/H4yA5gR1T9PWKWEyuEom9ImGJZJemue7gznW1i7XUL8mSL5Zar4FQ7xWRLQsR18WYXVpO2YIRIMb7T1eO3kHBdyz5nVNc2vhk2SSOMNdmHrh2Ie4YLfzct4xe9LuVma1WIqDkeWOcntlShwRNLWkB8ZJEeuZ5LKR6Uv8RPZeyNtVjLcNp37lc34vLBnxVA8J8Z349NBpfEY7TfR0uWhGbOEIJYZg57GS1vyDy/NPqB9UL5d8kvEBiV9UH8uVdw1FgV9Nr6gG95eyLwZdn8rwOYostuZTLiqfWWPQs5ptxLBKwGdSvrjKnByG3yeR3K3b8ikItNXRyhSiiEFLePVkstV7U1uqoqOffH6wR919bQ73AP1SZ1F4elU783fMDsn3l573DCGht+uadm53fBXhz3D1aG0tSVNO96Z7MkHU2Smv6+K8M0ZBm7wGxr1fXH6Smhn0kixSE40+LxCmVEqKp+v9/xmu7888fobVu3XvzYqLWnMY9uG2L64IIHvse4NPTfaQvOfSoNtFFD5uyEmDIUz16G33l2AlRcvpp4w5Q+h10CMdfmZ03l/0/1bMu17kgCD70clYIOGOhCGckK7P4O5PSMVYbeWx5cwGb8TT5xpIYNG8JmDWPe/UN/0CCwXwce2SQmXIN7RYgLS0rAPPGxg99vxYs4z4wuySXn9yqPjpw1c94JbVHUQL8dQK8PfcNtcMtp7iGe+pQHgS4Q1dAm75uIXzai7cJPY9c308EriN2cswPL8ajtJM9tP0D/GLF4jx+dRkmf6ifi6+I05q1Aa7sKD42iTLXf3REQf1dvHzC4ABqozH72DhIuEvfr7vGcD6dqZUiaYicKpwaQIWD7eUCP1F4GJpED/TPhaXOfCkjqTxB2F/e9MBLMXRQLqtaJaMD9MMlgzv8F2/qzXNIoNYdcBXw5Paa0EWch2Qd7OX0E3Lg4hWTAMmUvWMG4C0t5YCvkY3nxa6L88v7gVUAS4mFxGc0DqvKFHQ8aaHDYkg5XMHUpqEgbCLwqUT4nmaRNLIu83pfJKuAfzNJyLYXzhsv58vsHr0PNvxmkuysIu5Px+kX3+2ikuI51d8QfTRP4eWrZue3gh+auMOO/iOnu+MP/jxbyiy1LgxLHAtnTdZQopfpU46xkU0fZb6k46G+ZVAdHcAk2Tasjy7jExjgeXz+TmNu7TJ3lvkS4d5nb3bJGir9VRJZeBrCiaG1mwxVcr2hLkmtoymc5jIYfUD9iTtyDLl/Z0TWUaacQViaQXqApiXrPqrpNxpJFdC1EfBA1hnwKNcotAkRoTCXjCozOmGriZX1bm263iFsGwN5SZfeKpSzdt43TsO5FYqTbqVhVUFjJiZ2gyF4jG8J9CaQBPN9C8x/52Kr3myoAwk7svc9lnlZDkq8OkyF3HASEmbAM7fJoz0dg/DD7qLThG2JQgTT2lcVwuE0DpU30Ugy+3U37yLJkWWM++w+lc/qhjvXZAtFjL21h1Zjte5qfi06jdV1FHGGiiQXwRHEAvHyf53cCmkAb//Ju5VCwNDS+c3lqCCww8/4luU5/I5uOWwXP5uj/K8aolNYGYeht6QkdIcZ8K16llh7bD2pqXbyDeximDf1Iuml6cFD9B5IgOaAtbsDy4ETgTHtFx8cHVOgezTUGbdmBfBearm+MQDOISkQhZcb3r7XWj1FKCbB05MNAdGbPCqAwWsqa/idq7lxYAqQLYZhXtO2t5gCU99DzGjjiBI1PPs61xHSXd0EtlBh5dSCCztpwlmNAp/iO2+79ogmcNIvBG+tQnZPb/UJ9kMk7rGEYwIof+ZcWHUyczlf3S1gnyEHn5jA01puh8Mq6NedRl+1qQ49ey+rP6zXol/J/O35Tddjso6V+Zy8wmbtesDj4ss5j1ZAsEhyG4+m6e2pxhVoCjKRpLQUy+a28peh8QGuiI08RSTwUhWVr3i2CY0eA6jVxae0LSDodp2aHXRil8Cme0ujTMRwnpjQKPoObIXLFNfyX5eXhF/kWfT9CWrCrlk4yPvVyU75oh7Z4zAJ/rX3OHn49nYo/LaQYe2XraLbabp9sJeMyR0/EZgx2CswbunxpfBMdY4SbI/0r1Z4qkMmRBxjx4RJwklIZMSBJL/QuRXxHOatNiC7pZFf1Ozp2QzxXeRcmZfD9ZkxR2R9HjT1+PDyYo6i+38WzKngvLcRjK6pgidNOKh8tAhw6PTC7G5pOPTauXF6/7nUx3Mcl6/iPBxtdUdMGVxxcm72ysAtCDL9rR4vDiPm47BvefUgwUKmbx5u4sEZjh8Ap9W25/CfNn7mD+ZAw8XDtBeyUmHu7wGs9IVCW5b9W0J+r8kE15z4oig4NKajpvl0jxNTrD11bfZ8r/ORnWVJMCcYn5vVbaqxvcY2q+tyaxrW87s0jHjUfLoVtFR+FaNQ3ZjhimSUqmTNh5Heyr6A1TEl2gNXOtEnh517JMmJqVUGTDWrRheYhX5KGd1/9XbqtCgOx2GQjEj2h6aprm1O1/nIrC7yS4OxcHWAPdPnUL0uEUyv2XDM4Z7RtJXJjdmKnx/e8WVh99OFUt6+MWLAaM62NN33Lv98eawDYrcgDuG6g9CwEesK5PK9SQftIKYT0VDkQZhWU64olHyPol0jX1Kmb9hajshw5G3xGZ0ls/p1Id/4hhufW/AKTtvdoUVuG5iU32U4Ydsmz8IaK41Tb2byjwMyOGLnf7ISYlvDZyHjXCr3+V7a/SY0iClOon7s11G7knLa2sMjKi2jpE14uO8mB1No6HfYINXMmPtsd7BTSQihewtFuUi4nE8uhshrDx0yArRvap/TxbA+Fs2pYzkAR6yl19fJxywXLBUfe1qlBPueb08LjNsTArVhhcVyn6Mw8vAdcsh8mCCujR8qdJUGnNY2zQTGiuZ961CtGlhuDxcNNRpfA0b/bR5Qnrn7sH+raSUr2MnFnqawgDQp9w0TvbrWs7P9+pe6sO1rlKmXnh12fGb7eYuME8AdfxVv1+TBssLtg+0yHOjVoifAgtH7DywwwYhrAfqFkH4BPzC8fjxoFPoS9vwoTpsj1uMqKlLluWuYrvyVtg9oNlmsVg25rhCBkakm8NynwbvIJEzS3cR/wJeaillrKrJJkJLllMTWCMWpcCrI+Fztkv/QgGLZgmGstLrg5Et8MKsBSYC2NOg7l1J3dvO00drroa39OqSjFNbV2sERhmovrhiZRDKGNbEjQaBq732YHDhPipS8KG2DWF9AiLTg4MV7RpkSYEytARRMZxs8CwMEeEqqKgTCQW/0sMASxvtIXST1KL+TxnjNLLNJ7JVygTWsTKnTZngEpeyzKcHI6xZl/8JsEs13QIaNJfJ+HltlTVeRrsWkfo5VW+CTez0w5DENoUpTqDX8MSN7sJEIVocd2aS2WnomJnCBIvRKy2XoJz5l27Mdfd7kpiCpQ0B21rrSextsDl6DxncleHTbwTmQzj5y2/NwzJe46a1kUZEXNvHI3IsSsZn15bVCHUrRkOGUdPabvHXpYOTtHHCRZ8lFsx6XWwC/WoZKgmiK81IQ8VEXQhrHLMc5xQRLilDGKmXyEMPAOp/nqt7vghs+nGtDTEO+T0waWNiRQP2O0Zy72bBXHHa1gXjbOT7QvcguQ8SR0AYTQ6VY6aj3O+M777FtV1KogIU5/6U93f3mk/Rrd+rYg+aDSUJKwGK0Wp1xTLXSWe93znfeY3tH0qiMTUjC7rmwLM7ovX401x7d3m57A1k8gsu1vfrN4ErpZ+fNTEJB4/WK5QyaHHi0xUg91h6j/VCA0mXJR0STbaTTEPPYalBcJcvrmlQCk04PO8m7GpnGTmU1ChiMJT6957ukqCypAxgwQG7RoDZ5PerqCDbp3Q849wO+57GqwJYVhqWLe4n4rjk+Yqd6Lkt1tbHfrBilDeYFL8qVMlejOBDWPcN3JbvhCmzYPw7728D6cqZ9O5KU3fh2ODxM7qN77LrfU9nvoaXfg9llPZ0XFCzmqsm1m4xqeStXaZ9okPk9w71qMgQvo+8ZrijlqcM8T3FXzt61ylwrZi6x97x62uT/AYkKfqhQbNEJxZ66nNS8eblPqY98uQcqh9UDcjVJCQGPhC2ELCsTzDdfP16Eck5Bev8VBwGiqxYTtQI7Id4F9X7p0Q1t/vh6mKvusXJHgIZ5wdNCoXtt35O8eBO8gU8YyMpew2bMYkhUn/BtmfCwTbNuSl+BKdjUHRb3O1DX3U/5PErjUFLcB97h7M6KKJACJlPSJEFYygJIkfcsNplkMhcE5W4sMhFVXEyVhn5cCXfz/g+1VT1g2dPGN7hNHPJ88sj+fSFpS5tVaVy+R+K7j/zzthdO/q2FDfrJWTcm0TmtR/l0Fq4TfDd3wqepVLqefCLqYOMtj18BrCTCkWzdE6Pi53s4QkogBLK5IJ4gzGsYw5wEt1rEEehlgDcR0tfIhuUVb8fAJTrQBVnE5nPsxfkRhLwyxnaQFxIXc11iBbg//PzO9zpvLWrGpx25AK3o8pr5EQx+m2naHwzXECosHJgX6mTnwdJkWq5VLUKN4k6xuR3PiLflUhfDBGgM2GP2L3Az8DIjp7zeDwjdiRpnP/XVpG8OO10MfxQ/8WesFWzAhLB69BcFRNP7whirlNIgbGdNjlAc00xO4MrWdDtP+eP57M/B/wRG0+3J5pQ63OAxBsNKC3ZkzNUuajYDSmDOt/vAre6ZkADzzdTWj7uhNS7P+SPRBVSJw4op8u7tmltYbBH/du6/VLA+CFunA6PDurYNwuA6RveeQwwcogC/I0j6tP92zRSuk9mgA7YjsyqzljtFVPFFx1dQBXO0w5DaEsRkn85xP6qgyYW7JhvOcAw7HQCCyaSOh4pZRaEDh3wIq/iousFzhgbT9PfkQjO4wFAQpS4jzgyK6k9nEFHSy3azAM80EirWqYK4erN04bS01GbphRyVqO/3eZBaaIQ4tsigYg3NhhuZTnZpPNzhE8EQS3n90a28+yJWQHruSVgYI1HJ4+j6b+1W1/+QDf9WG64uDv8uG/a3IY+47M/HIIPM/RlWHcUJqY2uP9S452KiyxZ1hKhokk8TfqRov5UgRwXYbOJGn0J6v+u3Au7J2PHbxotsVY0q6cWPcO2fICWj3sSoZpYY2tjtWEfR0qnza9uNqu03+BSbmqBGdlYErM363chdDQdcc1j8SN62SOEFZx7li9U7laDIqUqWxlULU+o7Z2ehusGIZsj69s7cMrvGOtz5WJaOP+IPKBb/i3b7evjdHjWu8Ych7TJQx39A5BEf5H/pDw1z/wPszI8YUd+f24F5/xHiPorWV/nZPMqO2u+3DERlncr226kEmQ+VypqrdPsv7Kz3b7dhxzjsb0O9vkG/2cZ0lCKh/bQug2qStVO9TsPxi9CG1Mtw8Ed0g78jku7h7PXKG+3pOJuRUPBhDlL9FUQw0/Xp7K8w0m9uyMrNkC09VHtpEqV/QKMgPcsrRc2xUK86Ec5CeaDQ+DH/l7+/H2Ovgn1tqu+PsnSVhCOFKg2kiveDrXUb+rOa8ELo27pNyUqbU8drN0llSNAuP707gNuE+/XnUtTDOz0iwYnDKifJp5+mc658TZA2w8YphZLcFtbDsV5Rk+M6YR7xyAzs09NFwmqgW4sDh6wz1qDpt/d0STeE2oxuqp0Ta5O1kb2WTr+lKGWy99ukXvOHU6cjJ3Up2/bXAKJUurzk/ppAdOpyQrVGUD4GVdhAbj/KLckGeSm7T7JEdOcyMWY84LrMb3BnJxnxZ8sg/eT8kVH9+9D906nO098NhCz2m2kuyczGe1lMVCjXAM++Ro09HZ79XS6/LrWrRAngEkWHz3xOdbTbPTkD+jV/rdElwfKXOftzpAS/d7xjvpe8GGKGTPODNohAAasNZc2xZpWgimvf8QqMWlQ7W7pWSd7Mrq3ERo4nDmo1CWMqEHU4kRDgmN8Rs1Uf+TskEFqckaRJOihXmvS2jK721bzqe+2jYU74+z9SU0zg+m0mL4yTrDjrIDivdlbDetmeMqb0kJoHjqLkZu/UMr7FzO/t4+daxxqnQw+l+ar8UDG+6hqUtZrQ+NGZposN2c6OXjs1OwVYyWWYtd+f+OR+GGs/BuwDvzl1hl7b7ia9b7bLDbr9+V3mGAP507O5XCE0ZD/+rJVy0mszM+EiEZ2dY0xVagbUMo+TGK7gBlbo0q0X6ivdhOyj5Iytis5hK/DL9t0RDTYaLnlh6eunhmdXtxcdBTHd9aqjSpF5xFtMg3wt94LAvpyXXo5gGVyD5FXS0SGwTUR/nZWPE8QktUpbOkKHlj0fW47KB+Kpm1PMttj/oDIf+3b17jdkNRiH8DyxRaRt/JbeRJolFStLUPkj5h9zB7G/fepq7c9Ug9Ex0rwz3WVbhVhJUupi2pwcvipAs5+ZmFvlGkzhzzPS9RMs1FEZod9ktbZT22xXlHBkIwpzyZOxJb+5haTaFgk6AlBfO3VVPy3wsJOl4/ZAGbfkrpWpv79FIe47tl+BwZ1nlPE6redYEndPMtTKjG7NP2Q1vCORqqI2pczArGyZXWCEJWV6nPQppyX5GlNcca0wJgoobjdYTnB8+5lvnwUWFhqP/s2zqCUba/sgYPFHUcjTL1hyFXXfTnr3XEaxFgzbVoJuojfrSWN2DHhuYHiMG9U71mO4su8dgm3BKZrxAYY+EtTHVkoNTndk9buaPyD3K2tEmjw2VZ7iGH3qUbqhSqe9Tzead5yNphu08QfOEhlth8S+uNbRH/2xKmbpEgtDmPGHw3Q8HDWqyBlJOCSBAlZ6igLnGj7Gsw+QfJ1z7JH/O36w+xThJs2P4YEbPmRHEQwFS9HctCOKMuDDXs6swijvX5ZCf8eYy2fkYRnKvHAsZ9CFDKrY+twjMut1i61BWrPjYrulEmfJX36Edw6QzpRxCxFhLnN+gy9Y8N6j6Db0lXqT/04JRgFRw5+UDT5PMhksgISFLXvIgLt0BZsL2z5t0WcDTsrQYB/zCoxrYOh1c7lsmNRNgIimRxUBl/KwlUcHjS3hF7lP6L9weKoLZ2bGSPO6dF3piQFy/ydViu+WRDx+JiMwLXE9CIbDhnHC+CYR4037PtdPJidnp62bx7/KlujU8Qj2FVbCqB8uKh8Aqp45EsyhV/1oUFq8OA+wpI6kcu7rMi3jsld8Ug4EFu4LaOfaSk5KpxFjyTOD+AhhATLHPLNFefa5b5zG99g8rV62GeeHSAk9NbDpZTluTVZfm0907bk8GahjDrin/u0nSnz6Jv0sXQ0oLc/1KcXMvPNtsMPfS2ef+/cih7e0JcFS67CXtI9cb9KLNAJLUw/dvxO716Zqho8ga5F2MGnUqizE8e18xCi+ScXN9N7lZLNlkqvvB7OVMD5krVLeI5hP0nBxKwk78S0JfsXuDlND0Fj7DSgZxFduwTJX4Zqkk4vqL4C7L2QcGodzd3VOkkXNHS1lIlXunp3WlId8YCmFhqMXkC7J/kCX0eVQhsQy/MbAxb2BZFw1VChNiDzgv2eAPXZAe0eOyxUSsRyF3MdEW6CXMTl5PPkzK54B4FqoD9WxeYiAl+5LhVyH9rEcEUBbBIlhuVjvcEF7Z/KHJyfORa7a4jYLJyt76ZqS7/nsYnCU2zwoiVfq2aO7R2hnbmjhwMJVhMZK0ogYreM4MBS1LgB37yxg6WB7bjfpL9Mqg2gFONBTK3DEHq3l/TEK79NAFzQXzVa5bHBRz7805z/H+Mp7d5Ie3oc8nVBmHw02pfZE7P6faCcD0DnrkBhDOVMn52xBuMT6IYw1SJpb2bzkq6KHORIH4FH4sd2CnXhF9yeWOilKRdFqkKQH8DOJ5Ogh0nmQeGJLIKpHmx5IeRwT7S15t77FMi2d8O8+aXgSb87BA3O9BtTHKwVU/pbqZoP9jEHpu7MdtF9dz3KYxSAe3jTObvxGBEyzFCWiehPsVmKZDwjPQuJOXvGf28Cibas33XyndINYthUmQD9Kqr6jUYAyzQc+fKYnEmOJzkwikCMOAAEGk//27EsRaGow+PJ5+J9xzvmuSE1fNIujIdIwZXlXm6CJlO+24/xo+OEp/gRoOW3CDK991nyCTRIRTVet2Bqzli3z22BrTHcTbDo1W8IsP9Q2hEThB2kAIIveV6ZF4J1H5BM24Lt6UmHe3vKhvnQylWI3t391bSmdfHdnx01U/BbGbScN3E6mJ+WzhfnJooXZGti6sMDMVNrypXby7yQDvlymwVWRVaDh49KyLWk85RTKPDq+ZKTFBRlrWs5U0NEKxg8ai30PdI8Dg+MpuH/2mHkzDwRDsXuBt8ogA3bItGSkf/p1tE0P5g3Mdl7+Y4qykYkdXWyvaHaLKxWxcha/aFG7Dxt5qr4vB11ewBnQG2RxbcZG9QCzhbVXoTBAG0soPcKQNvm0lmAYqDphC3rlcxriEEWTAKtnHf/nw4DQuJWLAFjURjPIuCEWznnNdX1W7LWI/+qrP6wCNK4iF9dIGuwCIQ0E/0gYJi3aqlVPsGpj+BBNAmLYftBpClTaMoJNPl1kqRrva1yCpndtx/49UC+BMKlfQYhuvGyBjtMdpvojN0QfvDGOqHCwxco6o1/e8FXPvDXlVPC9WU202vafFmx+J2rmUFax0wLAlbttHC/KjKyb/Byx7Bwz22HduaN8jkLUaOeMR4bdccnCbij0dU1SpsHCnvlqjbhjh1YRfobGz7cNedbTHlUI66N5FzFgJzo9CXxQnKO75bBqe/fFWDpjlpfkvtuJnRaEFNY3Ylr8/bj6VfcAxQSCFxQEYJUt//8i9i1W3aAGkk/bpIPTn+atBUMyWfZpRVJl1pCRhh4lLdClIecHWfgp1tDbLmPRsdTrrhjFcO9FxXcWvDwXAqd7L+0K4L+jvANMMp4ulz+TVxKpCOtEG7GcoIzvvULgLMZsHzhADsXMqZbhzmybp8RcX7l3jh5TWrePzW1q3EnSwktSJtvNTLFto6FDUZ/lXceWtlZZzptBadWXchGK85F4YOWhRgnXaXPKc2/1N663Qrtpu4eRWkuEGViJ5lmvj2IK5XntF0KcBrglsEAB4w9PGfh176qA6qPcCYVNVO22wwkAJ+WFfNEBOxIrdDnVgsKJgvxqQ6g4SSfJnkLwk6GvcoyXxER9E5exj/zeE9F6pebJiNixcO5/citXBPVYoWttb5n1TNRmSZrtOgqPTFYR1L6Qb1I28CpCELIGNJjbOzU8bkkDvxbI2J3fR4HSDYdiw+GGvzR7bvSQp5RkuXZU4h3WmCRY+zU+/T9h1Ylwv6yugK65T2NAT1vkDN5qK8bPEUw4jW4waszRdCCVFXErJ7WBUGQ5EU/XhXy82FSiXFS0TDt8QQvnYh4rK7+Y3OmEl6oJpqD2cq5b2QrtGjFk6HKRFIdLnvDtms42s9LS9MH/Q5Qx+9QMYpUj4qBKvt3MfE3nsOvV9VUByjopsgw6SfFNaiWX7uVnbGuW+sv5mtH1g8LbC3ATFy5EQcpIA3t4RzUiWFEO1jTdLDX4zi1i743AkVZGeg5Uj6s5fFK6AUeUqwResC8liS7zuXZEc34ra/CBa2RnCfihLp9O/DTbiVzUgTHBYbA2oMNbBO/cnYckylO4JoepChmfCM103ieSOKuj1Oux34qn4E7mZE7mfM7m+hTvnNhl4v+aSnIOwMOjETIHKb+vfj66IF2EUtRm8yJHjriHGcmBwT+zqKBcnK9tiDUWv78ehmnSIwC0JfpDPmAdoohCMkSqsDX2ycx2KrDhOoImIgpZFL1Msyxdae98wEPoUIv/WuJqBeiUiCD0qiKaRzq0CCXA1nupeE1Gcb0CdCv9cEfPel5W7erRvxt4UFSZWupfhPdKF0L32T+/y6XzrABBjNKyO1cCkuwytfkJudh2kpzbfPQf1bACpnlJQX57Bx9YBtpQN0sgFmJxPLcoBCdf1sqjMkkwoUoyDo4xh7KuZqFD71QDSsd4egUMHptPAfAjqUTtdIjG9rHzVr1zKZGxXxHPwrqdOXt103P1G/oM8UW+VPIML3+tn5KLgf0v3lh2MEZCRRK8VxBD4WulYK/tjCalgSI7R2Y6yKsjM1Zx6E4k5nt/yDOU8vkLWlS+Ra1N6+V3WM9evTCcFRK4beRtkTQ1516at6RQPj3I81fy8d0rlqMbj8eyQkIAIhpY9JuJcRh9SgoZSe4lHrK6SAFSCyGf8fOLjw6Iit1JW8bf/6eIW9R8KVUQQOGH9/9Di9HP9n4FLUt/tzmf1qIORuQE4bx86GZxUZQMKPKwqczeRzmAWol9VSW168JmdYA2dl4UwUWwafl1WtIXEEVxlhRgKK+zSsKEQpG8VJMI08Xg8ziUbdP+nCRPdwbTJdRGE6C/6JBsoWoqntgSvI2fcX9wR7aaaogrMBWIFWjd/ox2OMILtx97GQnTiCG+3losVwCGK5KB3ymJQHuHWBR9AA/Tabg0S2tbnJqi782qVlkxS2q84wPm40h2TH22SqtCPJV87xntF/hdjEwJRnPbMq7dcqgnAOLGyTDTBTm0MznIIKPruDn1bwiYpPum2lQoyTm3dfP084O1pUP/0vR/191TOsr6tDatL9evr11fX63fWLuxVm0GYH2/7o7lvK1167Uem7vM+rg4BrbZgtavPXINlMA7aJHk0Hop+1NqaXiaZtk3TKkG7pkNBNd3Qy6G3FQIqRHH5RixKGYLdpQAUcNkFhxGvgt2XLK17T86Qv752Z503ScqswnA7OQ6LOe2TQdrArUj/dbgCPT2YdBbJx7K+GQ3axruvCz07YonTafZBAG5J5kL/+kzlLP7gvbEZE8FDIFlxR7CWEl3fNM3YcHwoBEHTwZPuWtG0Bt3kK0Pn1+dhyAaAH+h+MIMJFlXDgioTD5AwqSN7EbaZiplCmF7kWAPR4aVddSKcDJ/qDvaKquBxvVFcVwtmy2AtlnNweCbmP9vEaa8KHoDfH8/Bee4G0ZIecA4Oi5NgTwoMz731PT30HTdTaRdbmEH0WeueiHSDrlewDuahkqoaaejPG8I5f5uYYKc/TiOTxwWwQSaknQfw350UMsOn62VqHk/9Hsz84SUNHYJ2yZqRCJ/+cPbYp0GNCnafVtdNTfbSZ+FgCkvS5ca5MelqjgSqnVVnOaanbf8WvLqy3l26lSmWJsaA9B0i6UPJyTCXCEpWGUJckojvbregSKsfGHrFQJOqjU4Zd38xzrnA9nT7NCvwEHa4Igosm9b4IoOZcEQK7T1EdEpknG46PISOnB2GwDPmI8cxfgoQcKWjG6VtEsolVDLU8ytLxjRvrKnVOiUB0+HVwGszh/ctBj2dUxRJwBL1z4vyKX6ZDrTXTjyREgaL33w7cNgxqtNsDFmdfjGxf4e7h9hFLrBTy/xdsDmYwjuZamRbETmPKSao0nhxylAd12nqHbWD6B+wRIXDua7u1bUjhox8lw1d6FTkB3gUjkYFHqITvfDCMYJUnvUySsY4YJhiTYyRXWHwImVLH9j4LNHngVrDneHWBUANa3fhPNyMeReEvl9Qfy1lTH14iuXAJVPix3BhnlVyOFyYzpytVqTPs4Z5kw7yGmUG1hCo5aiefYG6/+8ajojnDLLtr1zpgPbK7pYT4xVi8uay02o/W5c/0JF/FukRwXRf30ZTWFg/4aPkas7Z8jDWn/8LtRvV7+zmmloEI2LQL12unTk+u0ev+MjO6cpq3hJYa+BQPFCJ/m1CtbC9cYWJ/t9QfGLspkc6Er5P7+Nrto1QDNxeQRd46biOdWUrX11Ip4Iu8p6KMfSg5KtBt9Zg7q9mpkmNlsvEeZqyybW+6PoDm076NeNrZl8Wdfi1JDp+uNEubau0bem50PeJU3p7IMJWt+jqMORVpF3a2p209uUPWUCH7KtaFLHSou+bYdA9YbeSaldzoalKMHfkF7MIk6A6m/PC93GE7VYQ06qyzNrjJcTW/0OqyTL90khL7ba7XARWPKDNaTs5vbjEKJslyII312plYJI+epUc2qnPbkuMK0Lnt4vim+HZv/SREKX2LBSNiGMnA+qzI6A4KRa8DptxFg6Tx4fxKfn6xcggmVcovm0FuLXSgNGatldv17ERsBwPk1UCWMb9O3F9EN0rhwGZqSBD5eQECuLYFlYk1InxrVVKDOvKR3tw8OTuHD4XDZCkWyL/EVEOb7uCQeIZqlKc4aqmiaxzAfySffyseXiFNFqCtS4sE1eauZiMr/niy3dLPVL+x0TxL/zHgSWb7LOA767+nb5bb7FhLu7Zm1/+z9pnKss2gc1IX4Gu+Kj8/ZutzjbL0+SdXmrN3o5RXBTPz9A9eU5jXOb23en4XGi2v+EAx+fBHxp9qDpTEM2tLjmK5rKyLxUTTEUXdpdrHLlX/LdkjMCylGXkKP+4Hpx8OFmWLbMEiD6LIALG2sqdV/rRmdxFLWtZY1uhbhhm3B9nGyiNZ1XoNgOD5Get9CQh/Bgip9BrccUYmueDPbhNCCvhi5jY//PhonTJdAWfER+nrbbfGbTEsvBIkWf9unR/8wvkFbFQSH5RMN0oRyZObBOmDH97C45GXPecGHokwgef6ZbO374dwlwmlzr+dExoIdD/mCtaKXDU09tvrskbj9VmLt3A6bNS6du7wzwXz1DSMG7sXg4aafMQ33vlUux1zDUdq2dQI0Pzx1lzOFuXpHkfLjpX8ClZo6ReaWkAe/abXiP+pmyEpchTeTFCuD5NDFR2dY77aAPY4QF9XOy5yEHgJNUJFyDqZg6AePAUqZ7P190iEB4h809CNNOeZ5GLIcpWEtk2GHXa8aagWpwFpbMllsUh8rkkAs4GKkScrKn1nHwgRXgtJJBGPF+A921A6ArarLiFsUUD3YNvIC7QR0brJqVJXA1tGv3v8RXP/DfV4N3raBBwCdVhlErnhktoUBuuVOrfuJA8xvVMeVmIYaThVU+e3TcUkqRbxuoM0bbS7Uu5Z8neIi6ag48Xihf43K1+OPbZqC7GXxOll1BO9gD7dYUCjyEQd8L5yO63rBB6wlc3GYSYkHn0sxyJjTLYGsqZ82fHHeby4CQFcs2zmajyIV/FQGJlNkN93SGRCf5LODlu2mxTMWAI3y1n4pGDmXR6TCf7P4ee7pbKTeYnm26em3sOnX4nfH/3cQxC73ApVXrkE0H//a6LQRu6OmbZc8E5g62hptGQkUKP9+Aq/SP4dkq3Ink4Q7gVGl1w7iGBBjUay12kiQWRDGOvZei4JJm0Gz/EwnSvrzlzw3D99v47Ne7eSg3vSl/VGZBhEI73ryMV/PzUIm++DFuw687zuou7+RwVEbzEx5sJ+HPx6Wx4Zw65aND0siCEYa+71w6RNhzDmYzwT5AMd2oOja6b+NHAWaao3KPTTN4O8B81k5+mA8fCOaTa3+yVzvx/HDV/jF/XDkmclBJ4BUEkOYYlIY9WWceypM=","base64")).toString()),Jq)});var d1e=U((ej,tj)=>{(function(t){ej&&typeof ej=="object"&&typeof tj<"u"?tj.exports=t():typeof define=="function"&&define.amd?define([],t):typeof window<"u"?window.isWindows=t():typeof global<"u"?global.isWindows=t():typeof self<"u"?self.isWindows=t():this.isWindows=t()})(function(){"use strict";return function(){return process&&(process.platform==="win32"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var C1e=U((jzt,E1e)=>{"use strict";rj.ifExists=ewt;var NC=Ie("util"),ac=Ie("path"),m1e=d1e(),XIt=/^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/,ZIt={createPwshFile:!0,createCmdFile:m1e(),fs:Ie("fs")},$It=new Map([[".js","node"],[".cjs","node"],[".mjs","node"],[".cmd","cmd"],[".bat","cmd"],[".ps1","pwsh"],[".sh","sh"]]);function y1e(t){let e={...ZIt,...t},r=e.fs;return e.fs_={chmod:r.chmod?NC.promisify(r.chmod):async()=>{},mkdir:NC.promisify(r.mkdir),readFile:NC.promisify(r.readFile),stat:NC.promisify(r.stat),unlink:NC.promisify(r.unlink),writeFile:NC.promisify(r.writeFile)},e}async function rj(t,e,r){let o=y1e(r);await o.fs_.stat(t),await rwt(t,e,o)}function ewt(t,e,r){return rj(t,e,r).catch(()=>{})}function twt(t,e){return e.fs_.unlink(t).catch(()=>{})}async function rwt(t,e,r){let o=await awt(t,r);return await nwt(e,r),iwt(t,e,o,r)}function nwt(t,e){return e.fs_.mkdir(ac.dirname(t),{recursive:!0})}function iwt(t,e,r,o){let a=y1e(o),n=[{generator:uwt,extension:""}];return a.createCmdFile&&n.push({generator:cwt,extension:".cmd"}),a.createPwshFile&&n.push({generator:Awt,extension:".ps1"}),Promise.all(n.map(u=>lwt(t,e+u.extension,r,u.generator,a)))}function swt(t,e){return twt(t,e)}function owt(t,e){return fwt(t,e)}async function awt(t,e){let a=(await e.fs_.readFile(t,"utf8")).trim().split(/\r*\n/)[0].match(XIt);if(!a){let n=ac.extname(t).toLowerCase();return{program:$It.get(n)||null,additionalArgs:""}}return{program:a[1],additionalArgs:a[2]}}async function lwt(t,e,r,o,a){let n=a.preserveSymlinks?"--preserve-symlinks":"",u=[r.additionalArgs,n].filter(A=>A).join(" ");return a=Object.assign({},a,{prog:r.program,args:u}),await swt(e,a),await a.fs_.writeFile(e,o(t,e,a),"utf8"),owt(e,a)}function cwt(t,e,r){let a=ac.relative(ac.dirname(e),t).split("/").join("\\"),n=ac.isAbsolute(a)?`"${a}"`:`"%~dp0\\${a}"`,u,A=r.prog,p=r.args||"",h=nj(r.nodePath).win32;A?(u=`"%~dp0\\${A}.exe"`,a=n):(A=n,p="",a="");let C=r.progArgs?`${r.progArgs.join(" ")} `:"",w=h?`@SET NODE_PATH=${h}\r | 313 | `.repeat(t));$Ie.displayName="Newline";mB.default=$Ie});var nwe=U(yB=>{"use strict";var twe=yB&&yB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(yB,"__esModule",{value:!0});var bCt=twe(en()),QCt=twe(ek()),rwe=()=>bCt.default.createElement(QCt.default,{flexGrow:1});rwe.displayName="Spacer";yB.default=rwe});var nk=U(EB=>{"use strict";var kCt=EB&&EB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(EB,"__esModule",{value:!0});var FCt=en(),RCt=kCt(uq()),TCt=()=>FCt.useContext(RCt.default);EB.default=TCt});var swe=U(CB=>{"use strict";var NCt=CB&&CB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(CB,"__esModule",{value:!0});var iwe=en(),LCt=NCt(nk()),OCt=(t,e={})=>{let{stdin:r,setRawMode:o,internal_exitOnCtrlC:a}=LCt.default();iwe.useEffect(()=>{if(e.isActive!==!1)return o(!0),()=>{o(!1)}},[e.isActive,o]),iwe.useEffect(()=>{if(e.isActive===!1)return;let n=u=>{let A=String(u),p={upArrow:A==="\x1B[A",downArrow:A==="\x1B[B",leftArrow:A==="\x1B[D",rightArrow:A==="\x1B[C",pageDown:A==="\x1B[6~",pageUp:A==="\x1B[5~",return:A==="\r",escape:A==="\x1B",ctrl:!1,shift:!1,tab:A===" "||A==="\x1B[Z",backspace:A==="\b",delete:A==="\x7F"||A==="\x1B[3~",meta:!1};A<=""&&!p.return&&(A=String.fromCharCode(A.charCodeAt(0)+"a".charCodeAt(0)-1),p.ctrl=!0),A.startsWith("\x1B")&&(A=A.slice(1),p.meta=!0);let h=A>="A"&&A<="Z",C=A>="\u0410"&&A<="\u042F";A.length===1&&(h||C)&&(p.shift=!0),p.tab&&A==="[Z"&&(p.shift=!0),(p.tab||p.backspace||p.delete)&&(A=""),(!(A==="c"&&p.ctrl)||!a)&&t(A,p)};return r==null||r.on("data",n),()=>{r==null||r.off("data",n)}},[e.isActive,r,a,t])};CB.default=OCt});var owe=U(IB=>{"use strict";var MCt=IB&&IB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(IB,"__esModule",{value:!0});var UCt=en(),_Ct=MCt(lq()),HCt=()=>UCt.useContext(_Ct.default);IB.default=HCt});var awe=U(wB=>{"use strict";var qCt=wB&&wB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(wB,"__esModule",{value:!0});var jCt=en(),GCt=qCt(fq()),WCt=()=>jCt.useContext(GCt.default);wB.default=WCt});var lwe=U(BB=>{"use strict";var YCt=BB&&BB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(BB,"__esModule",{value:!0});var KCt=en(),VCt=YCt(hq()),JCt=()=>KCt.useContext(VCt.default);BB.default=JCt});var uwe=U(DB=>{"use strict";var cwe=DB&&DB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(DB,"__esModule",{value:!0});var vB=en(),zCt=cwe($Q()),XCt=cwe(nk()),ZCt=({isActive:t=!0,autoFocus:e=!1}={})=>{let{isRawModeSupported:r,setRawMode:o}=XCt.default(),{activeId:a,add:n,remove:u,activate:A,deactivate:p}=vB.useContext(zCt.default),h=vB.useMemo(()=>Math.random().toString().slice(2,7),[]);return vB.useEffect(()=>(n(h,{autoFocus:e}),()=>{u(h)}),[h,e]),vB.useEffect(()=>{t?A(h):p(h)},[t,h]),vB.useEffect(()=>{if(!(!r||!t))return o(!0),()=>{o(!1)}},[t]),{isFocused:Boolean(h)&&a===h}};DB.default=ZCt});var Awe=U(SB=>{"use strict";var $Ct=SB&&SB.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(SB,"__esModule",{value:!0});var eIt=en(),tIt=$Ct($Q()),rIt=()=>{let t=eIt.useContext(tIt.default);return{enableFocus:t.enableFocus,disableFocus:t.disableFocus,focusNext:t.focusNext,focusPrevious:t.focusPrevious}};SB.default=rIt});var fwe=U(wq=>{"use strict";Object.defineProperty(wq,"__esModule",{value:!0});wq.default=t=>{var e,r,o,a;return{width:(r=(e=t.yogaNode)===null||e===void 0?void 0:e.getComputedWidth())!==null&&r!==void 0?r:0,height:(a=(o=t.yogaNode)===null||o===void 0?void 0:o.getComputedHeight())!==null&&a!==void 0?a:0}}});var uc=U($s=>{"use strict";Object.defineProperty($s,"__esModule",{value:!0});var nIt=VIe();Object.defineProperty($s,"render",{enumerable:!0,get:function(){return nIt.default}});var iIt=ek();Object.defineProperty($s,"Box",{enumerable:!0,get:function(){return iIt.default}});var sIt=Eq();Object.defineProperty($s,"Text",{enumerable:!0,get:function(){return sIt.default}});var oIt=zIe();Object.defineProperty($s,"Static",{enumerable:!0,get:function(){return oIt.default}});var aIt=ZIe();Object.defineProperty($s,"Transform",{enumerable:!0,get:function(){return aIt.default}});var lIt=ewe();Object.defineProperty($s,"Newline",{enumerable:!0,get:function(){return lIt.default}});var cIt=nwe();Object.defineProperty($s,"Spacer",{enumerable:!0,get:function(){return cIt.default}});var uIt=swe();Object.defineProperty($s,"useInput",{enumerable:!0,get:function(){return uIt.default}});var AIt=owe();Object.defineProperty($s,"useApp",{enumerable:!0,get:function(){return AIt.default}});var fIt=nk();Object.defineProperty($s,"useStdin",{enumerable:!0,get:function(){return fIt.default}});var pIt=awe();Object.defineProperty($s,"useStdout",{enumerable:!0,get:function(){return pIt.default}});var hIt=lwe();Object.defineProperty($s,"useStderr",{enumerable:!0,get:function(){return hIt.default}});var gIt=uwe();Object.defineProperty($s,"useFocus",{enumerable:!0,get:function(){return gIt.default}});var dIt=Awe();Object.defineProperty($s,"useFocusManager",{enumerable:!0,get:function(){return dIt.default}});var mIt=fwe();Object.defineProperty($s,"measureElement",{enumerable:!0,get:function(){return mIt.default}})});var vq={};Yt(vq,{Gem:()=>Bq});var pwe,hm,Bq,ik=dt(()=>{pwe=tt(uc()),hm=tt(en()),Bq=(0,hm.memo)(({active:t})=>{let e=(0,hm.useMemo)(()=>t?"\u25C9":"\u25EF",[t]),r=(0,hm.useMemo)(()=>t?"green":"yellow",[t]);return hm.default.createElement(pwe.Text,{color:r},e)})});var gwe={};Yt(gwe,{useKeypress:()=>gm});function gm({active:t},e,r){let{stdin:o}=(0,hwe.useStdin)(),a=(0,sk.useCallback)((n,u)=>e(n,u),r);(0,sk.useEffect)(()=>{if(!(!t||!o))return o.on("keypress",a),()=>{o.off("keypress",a)}},[t,a,o])}var hwe,sk,PB=dt(()=>{hwe=tt(uc()),sk=tt(en())});var mwe={};Yt(mwe,{FocusRequest:()=>dwe,useFocusRequest:()=>Dq});var dwe,Dq,Sq=dt(()=>{PB();dwe=(r=>(r.BEFORE="before",r.AFTER="after",r))(dwe||{}),Dq=function({active:t},e,r){gm({active:t},(o,a)=>{a.name==="tab"&&(a.shift?e("before"):e("after"))},r)}});var ywe={};Yt(ywe,{useListInput:()=>xB});var xB,ok=dt(()=>{PB();xB=function(t,e,{active:r,minus:o,plus:a,set:n,loop:u=!0}){gm({active:r},(A,p)=>{let h=e.indexOf(t);switch(p.name){case o:{let C=h-1;if(u){n(e[(e.length+C)%e.length]);return}if(C<0)return;n(e[C])}break;case a:{let C=h+1;if(u){n(e[C%e.length]);return}if(C>=e.length)return;n(e[C])}break}},[e,t,a,n,u])}});var ak={};Yt(ak,{ScrollableItems:()=>yIt});var yh,Oa,yIt,lk=dt(()=>{yh=tt(uc()),Oa=tt(en());Sq();ok();yIt=({active:t=!0,children:e=[],radius:r=10,size:o=1,loop:a=!0,onFocusRequest:n,willReachEnd:u})=>{let A=L=>{if(L.key===null)throw new Error("Expected all children to have a key");return L.key},p=Oa.default.Children.map(e,L=>A(L)),h=p[0],[C,w]=(0,Oa.useState)(h),v=p.indexOf(C);(0,Oa.useEffect)(()=>{p.includes(C)||w(h)},[e]),(0,Oa.useEffect)(()=>{u&&v>=p.length-2&&u()},[v]),Dq({active:t&&!!n},L=>{n==null||n(L)},[n]),xB(C,p,{active:t,minus:"up",plus:"down",set:w,loop:a});let b=v-r,E=v+r;E>p.length&&(b-=E-p.length,E=p.length),b<0&&(E+=-b,b=0),E>=p.length&&(E=p.length-1);let R=[];for(let L=b;L<=E;++L){let _=p[L],V=t&&_===C;R.push(Oa.default.createElement(yh.Box,{key:_,height:o},Oa.default.createElement(yh.Box,{marginLeft:1,marginRight:1},Oa.default.createElement(yh.Text,null,V?Oa.default.createElement(yh.Text,{color:"cyan",bold:!0},">"):" ")),Oa.default.createElement(yh.Box,null,Oa.default.cloneElement(e[L],{active:V}))))}return Oa.default.createElement(yh.Box,{flexDirection:"column",width:"100%"},R)}});var Ewe,tp,Cwe,Pq,Iwe,xq=dt(()=>{Ewe=tt(uc()),tp=tt(en()),Cwe=Ie("readline"),Pq=tp.default.createContext(null),Iwe=({children:t})=>{let{stdin:e,setRawMode:r}=(0,Ewe.useStdin)();(0,tp.useEffect)(()=>{r&&r(!0),e&&(0,Cwe.emitKeypressEvents)(e)},[e,r]);let[o,a]=(0,tp.useState)(new Map),n=(0,tp.useMemo)(()=>({getAll:()=>o,get:u=>o.get(u),set:(u,A)=>a(new Map([...o,[u,A]]))}),[o,a]);return tp.default.createElement(Pq.Provider,{value:n,children:t})}});var bq={};Yt(bq,{useMinistore:()=>EIt});function EIt(t,e){let r=(0,ck.useContext)(Pq);if(r===null)throw new Error("Expected this hook to run with a ministore context attached");if(typeof t>"u")return r.getAll();let o=(0,ck.useCallback)(n=>{r.set(t,n)},[t,r.set]),a=r.get(t);return typeof a>"u"&&(a=e),[a,o]}var ck,Qq=dt(()=>{ck=tt(en());xq()});var Ak={};Yt(Ak,{renderForm:()=>CIt});async function CIt(t,e,{stdin:r,stdout:o,stderr:a}){let n,u=p=>{let{exit:h}=(0,uk.useApp)();gm({active:!0},(C,w)=>{w.name==="return"&&(n=p,h())},[h,p])},{waitUntilExit:A}=(0,uk.render)(kq.default.createElement(Iwe,null,kq.default.createElement(t,{...e,useSubmit:u})),{stdin:r,stdout:o,stderr:a});return await A(),n}var uk,kq,fk=dt(()=>{uk=tt(uc()),kq=tt(en());xq();PB()});var Dwe=U(bB=>{"use strict";Object.defineProperty(bB,"__esModule",{value:!0});bB.UncontrolledTextInput=void 0;var Bwe=en(),Fq=en(),wwe=uc(),dm=XQ(),vwe=({value:t,placeholder:e="",focus:r=!0,mask:o,highlightPastedText:a=!1,showCursor:n=!0,onChange:u,onSubmit:A})=>{let[{cursorOffset:p,cursorWidth:h},C]=Fq.useState({cursorOffset:(t||"").length,cursorWidth:0});Fq.useEffect(()=>{C(R=>{if(!r||!n)return R;let L=t||"";return R.cursorOffset>L.length-1?{cursorOffset:L.length,cursorWidth:0}:R})},[t,r,n]);let w=a?h:0,v=o?o.repeat(t.length):t,b=v,E=e?dm.grey(e):void 0;if(n&&r){E=e.length>0?dm.inverse(e[0])+dm.grey(e.slice(1)):dm.inverse(" "),b=v.length>0?"":dm.inverse(" ");let R=0;for(let L of v)R>=p-w&&R<=p?b+=dm.inverse(L):b+=L,R++;v.length>0&&p===v.length&&(b+=dm.inverse(" "))}return wwe.useInput((R,L)=>{if(L.upArrow||L.downArrow||L.ctrl&&R==="c"||L.tab||L.shift&&L.tab)return;if(L.return){A&&A(t);return}let _=p,V=t,re=0;L.leftArrow?n&&_--:L.rightArrow?n&&_++:L.backspace||L.delete?p>0&&(V=t.slice(0,p-1)+t.slice(p,t.length),_--):(V=t.slice(0,p)+R+t.slice(p,t.length),_+=R.length,R.length>1&&(re=R.length)),p<0&&(_=0),p>t.length&&(_=t.length),C({cursorOffset:_,cursorWidth:re}),V!==t&&u(V)},{isActive:r}),Bwe.createElement(wwe.Text,null,e?v.length>0?b:E:b)};bB.default=vwe;bB.UncontrolledTextInput=t=>{let[e,r]=Fq.useState("");return Bwe.createElement(vwe,Object.assign({},t,{value:e,onChange:r}))}});var xwe={};Yt(xwe,{Pad:()=>Rq});var Swe,Pwe,Rq,Tq=dt(()=>{Swe=tt(uc()),Pwe=tt(en()),Rq=({length:t,active:e})=>{if(t===0)return null;let r=t>1?` ${"-".repeat(t-1)}`:" ";return Pwe.default.createElement(Swe.Text,{dimColor:!e},r)}});var bwe={};Yt(bwe,{ItemOptions:()=>IIt});var kB,Ch,IIt,Qwe=dt(()=>{kB=tt(uc()),Ch=tt(en());ok();ik();Tq();IIt=function({active:t,skewer:e,options:r,value:o,onChange:a,sizes:n=[]}){let u=r.filter(({label:p})=>!!p).map(({value:p})=>p),A=r.findIndex(p=>p.value===o&&p.label!="");return xB(o,u,{active:t,minus:"left",plus:"right",set:a}),Ch.default.createElement(Ch.default.Fragment,null,r.map(({label:p},h)=>{let C=h===A,w=n[h]-1||0,v=p.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,""),b=Math.max(0,w-v.length-2);return p?Ch.default.createElement(kB.Box,{key:p,width:w,marginLeft:1},Ch.default.createElement(kB.Text,{wrap:"truncate"},Ch.default.createElement(Bq,{active:C})," ",p),e?Ch.default.createElement(Rq,{active:t,length:b}):null):Ch.default.createElement(kB.Box,{key:`spacer-${h}`,width:w,marginLeft:1})}))}});var Ywe=U((sJt,Wwe)=>{var jq;Wwe.exports=()=>(typeof jq>"u"&&(jq=Ie("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),jq)});var p1e=U((QJt,f1e)=>{var Zq=Symbol("arg flag"),Ma=class extends Error{constructor(e,r){super(e),this.name="ArgError",this.code=r,Object.setPrototypeOf(this,Ma.prototype)}};function KB(t,{argv:e=process.argv.slice(2),permissive:r=!1,stopAtPositional:o=!1}={}){if(!t)throw new Ma("argument specification object is required","ARG_CONFIG_NO_SPEC");let a={_:[]},n={},u={};for(let A of Object.keys(t)){if(!A)throw new Ma("argument key cannot be an empty string","ARG_CONFIG_EMPTY_KEY");if(A[0]!=="-")throw new Ma(`argument key must start with '-' but found: '${A}'`,"ARG_CONFIG_NONOPT_KEY");if(A.length===1)throw new Ma(`argument key must have a name; singular '-' keys are not allowed: ${A}`,"ARG_CONFIG_NONAME_KEY");if(typeof t[A]=="string"){n[A]=t[A];continue}let p=t[A],h=!1;if(Array.isArray(p)&&p.length===1&&typeof p[0]=="function"){let[C]=p;p=(w,v,b=[])=>(b.push(C(w,v,b[b.length-1])),b),h=C===Boolean||C[Zq]===!0}else if(typeof p=="function")h=p===Boolean||p[Zq]===!0;else throw new Ma(`type missing or not a function or valid array type: ${A}`,"ARG_CONFIG_VAD_TYPE");if(A[1]!=="-"&&A.length>2)throw new Ma(`short argument keys (with a single hyphen) must have only one character: ${A}`,"ARG_CONFIG_SHORTOPT_TOOLONG");u[A]=[p,h]}for(let A=0,p=e.length;A<p;A++){let h=e[A];if(o&&a._.length>0){a._=a._.concat(e.slice(A));break}if(h==="--"){a._=a._.concat(e.slice(A+1));break}if(h.length>1&&h[0]==="-"){let C=h[1]==="-"||h.length===2?[h]:h.slice(1).split("").map(w=>`-${w}`);for(let w=0;w<C.length;w++){let v=C[w],[b,E]=v[1]==="-"?v.split(/=(.*)/,2):[v,void 0],R=b;for(;R in n;)R=n[R];if(!(R in u))if(r){a._.push(v);continue}else throw new Ma(`unknown or unexpected option: ${b}`,"ARG_UNKNOWN_OPTION");let[L,_]=u[R];if(!_&&w+1<C.length)throw new Ma(`option requires argument (but was followed by another short argument): ${b}`,"ARG_MISSING_REQUIRED_SHORTARG");if(_)a[R]=L(!0,R,a[R]);else if(E===void 0){if(e.length<A+2||e[A+1].length>1&&e[A+1][0]==="-"&&!(e[A+1].match(/^-?\d*(\.(?=\d))?\d*$/)&&(L===Number||typeof BigInt<"u"&&L===BigInt))){let V=b===R?"":` (alias for ${R})`;throw new Ma(`option requires argument: ${b}${V}`,"ARG_MISSING_REQUIRED_LONGARG")}a[R]=L(e[A+1],R,a[R]),++A}else a[R]=L(E,R,a[R])}}else a._.push(h)}return a}KB.flag=t=>(t[Zq]=!0,t);KB.COUNT=KB.flag((t,e,r)=>(r||0)+1);KB.ArgError=Ma;f1e.exports=KB});var w1e=U((ozt,I1e)=>{var rj;I1e.exports=()=>(typeof rj>"u"&&(rj=Ie("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),rj)});var b1e=U((lj,cj)=>{(function(t){lj&&typeof lj=="object"&&typeof cj<"u"?cj.exports=t():typeof define=="function"&&define.amd?define([],t):typeof window<"u"?window.isWindows=t():typeof global<"u"?global.isWindows=t():typeof self<"u"?self.isWindows=t():this.isWindows=t()})(function(){"use strict";return function(){return process&&(process.platform==="win32"||/^(msys|cygwin)$/.test(process.env.OSTYPE))}})});var R1e=U((iXt,F1e)=>{"use strict";uj.ifExists=Ewt;var UC=Ie("util"),Ac=Ie("path"),Q1e=b1e(),dwt=/^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/,mwt={createPwshFile:!0,createCmdFile:Q1e(),fs:Ie("fs")},ywt=new Map([[".js","node"],[".cjs","node"],[".mjs","node"],[".cmd","cmd"],[".bat","cmd"],[".ps1","pwsh"],[".sh","sh"]]);function k1e(t){let e={...mwt,...t},r=e.fs;return e.fs_={chmod:r.chmod?UC.promisify(r.chmod):async()=>{},mkdir:UC.promisify(r.mkdir),readFile:UC.promisify(r.readFile),stat:UC.promisify(r.stat),unlink:UC.promisify(r.unlink),writeFile:UC.promisify(r.writeFile)},e}async function uj(t,e,r){let o=k1e(r);await o.fs_.stat(t),await Iwt(t,e,o)}function Ewt(t,e,r){return uj(t,e,r).catch(()=>{})}function Cwt(t,e){return e.fs_.unlink(t).catch(()=>{})}async function Iwt(t,e,r){let o=await Swt(t,r);return await wwt(e,r),Bwt(t,e,o,r)}function wwt(t,e){return e.fs_.mkdir(Ac.dirname(t),{recursive:!0})}function Bwt(t,e,r,o){let a=k1e(o),n=[{generator:bwt,extension:""}];return a.createCmdFile&&n.push({generator:xwt,extension:".cmd"}),a.createPwshFile&&n.push({generator:Qwt,extension:".ps1"}),Promise.all(n.map(u=>Pwt(t,e+u.extension,r,u.generator,a)))}function vwt(t,e){return Cwt(t,e)}function Dwt(t,e){return kwt(t,e)}async function Swt(t,e){let a=(await e.fs_.readFile(t,"utf8")).trim().split(/\r*\n/)[0].match(dwt);if(!a){let n=Ac.extname(t).toLowerCase();return{program:ywt.get(n)||null,additionalArgs:""}}return{program:a[1],additionalArgs:a[2]}}async function Pwt(t,e,r,o,a){let n=a.preserveSymlinks?"--preserve-symlinks":"",u=[r.additionalArgs,n].filter(A=>A).join(" ");return a=Object.assign({},a,{prog:r.program,args:u}),await vwt(e,a),await a.fs_.writeFile(e,o(t,e,a),"utf8"),Dwt(e,a)}function xwt(t,e,r){let a=Ac.relative(Ac.dirname(e),t).split("/").join("\\"),n=Ac.isAbsolute(a)?`"${a}"`:`"%~dp0\\${a}"`,u,A=r.prog,p=r.args||"",h=Aj(r.nodePath).win32;A?(u=`"%~dp0\\${A}.exe"`,a=n):(A=n,p="",a="");let C=r.progArgs?`${r.progArgs.join(" ")} `:"",w=h?`@SET NODE_PATH=${h}\r |
314 | `:"";return u?w+=`@IF EXIST ${u} (\r | 314 | `:"";return u?w+=`@IF EXIST ${u} (\r |
315 | ${u} ${p} ${a} ${C}%*\r | 315 | ${u} ${p} ${a} ${C}%*\r |
316 | ) ELSE (\r | 316 | ) ELSE (\r |
@@ -319,7 +319,7 @@ Read about how to prevent this error on https://github.com/vadimdemedes/ink/#isr | |||
319 | ${A} ${p} ${a} ${C}%*\r | 319 | ${A} ${p} ${a} ${C}%*\r |
320 | )\r | 320 | )\r |
321 | `:w+=`@${A} ${p} ${a} ${C}%*\r | 321 | `:w+=`@${A} ${p} ${a} ${C}%*\r |
322 | `,w}function uwt(t,e,r){let o=ac.relative(ac.dirname(e),t),a=r.prog&&r.prog.split("\\").join("/"),n;o=o.split("\\").join("/");let u=ac.isAbsolute(o)?`"${o}"`:`"$basedir/${o}"`,A=r.args||"",p=nj(r.nodePath).posix;a?(n=`"$basedir/${r.prog}"`,o=u):(a=u,A="",o="");let h=r.progArgs?`${r.progArgs.join(" ")} `:"",C=`#!/bin/sh | 322 | `,w}function bwt(t,e,r){let o=Ac.relative(Ac.dirname(e),t),a=r.prog&&r.prog.split("\\").join("/"),n;o=o.split("\\").join("/");let u=Ac.isAbsolute(o)?`"${o}"`:`"$basedir/${o}"`,A=r.args||"",p=Aj(r.nodePath).posix;a?(n=`"$basedir/${r.prog}"`,o=u):(a=u,A="",o="");let h=r.progArgs?`${r.progArgs.join(" ")} `:"",C=`#!/bin/sh |
323 | basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')") | 323 | basedir=$(dirname "$(echo "$0" | sed -e 's,\\\\,/,g')") |
324 | 324 | ||
325 | case \`uname\` in | 325 | case \`uname\` in |
@@ -334,7 +334,7 @@ else | |||
334 | fi | 334 | fi |
335 | `:C+=`${w}${a} ${A} ${o} ${h}"$@" | 335 | `:C+=`${w}${a} ${A} ${o} ${h}"$@" |
336 | exit $? | 336 | exit $? |
337 | `,C}function Awt(t,e,r){let o=ac.relative(ac.dirname(e),t),a=r.prog&&r.prog.split("\\").join("/"),n=a&&`"${a}$exe"`,u;o=o.split("\\").join("/");let A=ac.isAbsolute(o)?`"${o}"`:`"$basedir/${o}"`,p=r.args||"",h=nj(r.nodePath),C=h.win32,w=h.posix;n?(u=`"$basedir/${r.prog}$exe"`,o=A):(n=A,p="",o="");let v=r.progArgs?`${r.progArgs.join(" ")} `:"",b=`#!/usr/bin/env pwsh | 337 | `,C}function Qwt(t,e,r){let o=Ac.relative(Ac.dirname(e),t),a=r.prog&&r.prog.split("\\").join("/"),n=a&&`"${a}$exe"`,u;o=o.split("\\").join("/");let A=Ac.isAbsolute(o)?`"${o}"`:`"$basedir/${o}"`,p=r.args||"",h=Aj(r.nodePath),C=h.win32,w=h.posix;n?(u=`"$basedir/${r.prog}$exe"`,o=A):(n=A,p="",o="");let v=r.progArgs?`${r.progArgs.join(" ")} `:"",b=`#!/usr/bin/env pwsh |
338 | $basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent | 338 | $basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent |
339 | 339 | ||
340 | $exe="" | 340 | $exe="" |
@@ -376,45 +376,45 @@ if ($MyInvocation.ExpectingInput) { | |||
376 | } | 376 | } |
377 | ${r.nodePath?`$env:NODE_PATH=$env_node_path | 377 | ${r.nodePath?`$env:NODE_PATH=$env_node_path |
378 | `:""}exit $LASTEXITCODE | 378 | `:""}exit $LASTEXITCODE |
379 | `,b}function fwt(t,e){return e.fs_.chmod(t,493)}function nj(t){if(!t)return{win32:"",posix:""};let e=typeof t=="string"?t.split(ac.delimiter):Array.from(t),r={};for(let o=0;o<e.length;o++){let a=e[o].split("/").join("\\"),n=m1e()?e[o].split("\\").join("/").replace(/^([^:\\/]*):/,(u,A)=>`/mnt/${A.toLowerCase()}`):e[o];r.win32=r.win32?`${r.win32};${a}`:a,r.posix=r.posix?`${r.posix}:${n}`:n,r[o]={win32:a,posix:n}}return r}E1e.exports=rj});var dj=U((sZt,_1e)=>{_1e.exports=Ie("stream")});var G1e=U((oZt,j1e)=>{"use strict";function H1e(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,o)}return r}function Fwt(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?H1e(Object(r),!0).forEach(function(o){Rwt(t,o,r[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):H1e(Object(r)).forEach(function(o){Object.defineProperty(t,o,Object.getOwnPropertyDescriptor(r,o))})}return t}function Rwt(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Twt(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function q1e(t,e){for(var r=0;r<e.length;r++){var o=e[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function Nwt(t,e,r){return e&&q1e(t.prototype,e),r&&q1e(t,r),t}var Lwt=Ie("buffer"),Ek=Lwt.Buffer,Owt=Ie("util"),mj=Owt.inspect,Mwt=mj&&mj.custom||"inspect";function Uwt(t,e,r){Ek.prototype.copy.call(t,e,r)}j1e.exports=function(){function t(){Twt(this,t),this.head=null,this.tail=null,this.length=0}return Nwt(t,[{key:"push",value:function(r){var o={data:r,next:null};this.length>0?this.tail.next=o:this.head=o,this.tail=o,++this.length}},{key:"unshift",value:function(r){var o={data:r,next:this.head};this.length===0&&(this.tail=o),this.head=o,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var o=this.head,a=""+o.data;o=o.next;)a+=r+o.data;return a}},{key:"concat",value:function(r){if(this.length===0)return Ek.alloc(0);for(var o=Ek.allocUnsafe(r>>>0),a=this.head,n=0;a;)Uwt(a.data,o,n),n+=a.data.length,a=a.next;return o}},{key:"consume",value:function(r,o){var a;return r<this.head.data.length?(a=this.head.data.slice(0,r),this.head.data=this.head.data.slice(r)):r===this.head.data.length?a=this.shift():a=o?this._getString(r):this._getBuffer(r),a}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(r){var o=this.head,a=1,n=o.data;for(r-=n.length;o=o.next;){var u=o.data,A=r>u.length?u.length:r;if(A===u.length?n+=u:n+=u.slice(0,r),r-=A,r===0){A===u.length?(++a,o.next?this.head=o.next:this.head=this.tail=null):(this.head=o,o.data=u.slice(A));break}++a}return this.length-=a,n}},{key:"_getBuffer",value:function(r){var o=Ek.allocUnsafe(r),a=this.head,n=1;for(a.data.copy(o),r-=a.data.length;a=a.next;){var u=a.data,A=r>u.length?u.length:r;if(u.copy(o,o.length-r,0,A),r-=A,r===0){A===u.length?(++n,a.next?this.head=a.next:this.head=this.tail=null):(this.head=a,a.data=u.slice(A));break}++n}return this.length-=n,o}},{key:Mwt,value:function(r,o){return mj(this,Fwt({},o,{depth:0,customInspect:!1}))}}]),t}()});var Ej=U((aZt,Y1e)=>{"use strict";function _wt(t,e){var r=this,o=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return o||a?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(yj,this,t)):process.nextTick(yj,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(n){!e&&n?r._writableState?r._writableState.errorEmitted?process.nextTick(Ck,r):(r._writableState.errorEmitted=!0,process.nextTick(W1e,r,n)):process.nextTick(W1e,r,n):e?(process.nextTick(Ck,r),e(n)):process.nextTick(Ck,r)}),this)}function W1e(t,e){yj(t,e),Ck(t)}function Ck(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function Hwt(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function yj(t,e){t.emit("error",e)}function qwt(t,e){var r=t._readableState,o=t._writableState;r&&r.autoDestroy||o&&o.autoDestroy?t.destroy(e):t.emit("error",e)}Y1e.exports={destroy:_wt,undestroy:Hwt,errorOrDestroy:qwt}});var Dh=U((lZt,V1e)=>{"use strict";var J1e={};function lc(t,e,r){r||(r=Error);function o(n,u,A){return typeof e=="string"?e:e(n,u,A)}class a extends r{constructor(u,A,p){super(o(u,A,p))}}a.prototype.name=r.name,a.prototype.code=t,J1e[t]=a}function K1e(t,e){if(Array.isArray(t)){let r=t.length;return t=t.map(o=>String(o)),r>2?`one of ${e} ${t.slice(0,r-1).join(", ")}, or `+t[r-1]:r===2?`one of ${e} ${t[0]} or ${t[1]}`:`of ${e} ${t[0]}`}else return`of ${e} ${String(t)}`}function jwt(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function Gwt(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function Wwt(t,e,r){return typeof r!="number"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}lc("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError);lc("ERR_INVALID_ARG_TYPE",function(t,e,r){let o;typeof e=="string"&&jwt(e,"not ")?(o="must not be",e=e.replace(/^not /,"")):o="must be";let a;if(Gwt(t," argument"))a=`The ${t} ${o} ${K1e(e,"type")}`;else{let n=Wwt(t,".")?"property":"argument";a=`The "${t}" ${n} ${o} ${K1e(e,"type")}`}return a+=`. Received type ${typeof r}`,a},TypeError);lc("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");lc("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"});lc("ERR_STREAM_PREMATURE_CLOSE","Premature close");lc("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"});lc("ERR_MULTIPLE_CALLBACK","Callback called multiple times");lc("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");lc("ERR_STREAM_WRITE_AFTER_END","write after end");lc("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);lc("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError);lc("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");V1e.exports.codes=J1e});var Cj=U((cZt,z1e)=>{"use strict";var Ywt=Dh().codes.ERR_INVALID_OPT_VALUE;function Kwt(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function Jwt(t,e,r,o){var a=Kwt(e,o,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=o?r:"highWaterMark";throw new Ywt(n,a)}return Math.floor(a)}return t.objectMode?16:16*1024}z1e.exports={getHighWaterMark:Jwt}});var X1e=U((uZt,Ij)=>{typeof Object.create=="function"?Ij.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Ij.exports=function(e,r){if(r){e.super_=r;var o=function(){};o.prototype=r.prototype,e.prototype=new o,e.prototype.constructor=e}}});var Sh=U((AZt,Bj)=>{try{if(wj=Ie("util"),typeof wj.inherits!="function")throw"";Bj.exports=wj.inherits}catch{Bj.exports=X1e()}var wj});var $1e=U((fZt,Z1e)=>{Z1e.exports=Ie("util").deprecate});var Sj=U((pZt,s2e)=>{"use strict";s2e.exports=Qi;function t2e(t){var e=this;this.next=null,this.entry=null,this.finish=function(){I1t(e,t)}}var MC;Qi.WritableState=zB;var Vwt={deprecate:$1e()},r2e=dj(),wk=Ie("buffer").Buffer,zwt=global.Uint8Array||function(){};function Xwt(t){return wk.from(t)}function Zwt(t){return wk.isBuffer(t)||t instanceof zwt}var Dj=Ej(),$wt=Cj(),e1t=$wt.getHighWaterMark,Ph=Dh().codes,t1t=Ph.ERR_INVALID_ARG_TYPE,r1t=Ph.ERR_METHOD_NOT_IMPLEMENTED,n1t=Ph.ERR_MULTIPLE_CALLBACK,i1t=Ph.ERR_STREAM_CANNOT_PIPE,s1t=Ph.ERR_STREAM_DESTROYED,o1t=Ph.ERR_STREAM_NULL_VALUES,a1t=Ph.ERR_STREAM_WRITE_AFTER_END,l1t=Ph.ERR_UNKNOWN_ENCODING,UC=Dj.errorOrDestroy;Sh()(Qi,r2e);function c1t(){}function zB(t,e,r){MC=MC||mm(),t=t||{},typeof r!="boolean"&&(r=e instanceof MC),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=e1t(this,t,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var o=t.decodeStrings===!1;this.decodeStrings=!o,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){d1t(e,a)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new t2e(this)}zB.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(zB.prototype,"buffer",{get:Vwt.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}})();var Ik;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(Ik=Function.prototype[Symbol.hasInstance],Object.defineProperty(Qi,Symbol.hasInstance,{value:function(e){return Ik.call(this,e)?!0:this!==Qi?!1:e&&e._writableState instanceof zB}})):Ik=function(e){return e instanceof this};function Qi(t){MC=MC||mm();var e=this instanceof MC;if(!e&&!Ik.call(Qi,this))return new Qi(t);this._writableState=new zB(t,this,e),this.writable=!0,t&&(typeof t.write=="function"&&(this._write=t.write),typeof t.writev=="function"&&(this._writev=t.writev),typeof t.destroy=="function"&&(this._destroy=t.destroy),typeof t.final=="function"&&(this._final=t.final)),r2e.call(this)}Qi.prototype.pipe=function(){UC(this,new i1t)};function u1t(t,e){var r=new a1t;UC(t,r),process.nextTick(e,r)}function A1t(t,e,r,o){var a;return r===null?a=new o1t:typeof r!="string"&&!e.objectMode&&(a=new t1t("chunk",["string","Buffer"],r)),a?(UC(t,a),process.nextTick(o,a),!1):!0}Qi.prototype.write=function(t,e,r){var o=this._writableState,a=!1,n=!o.objectMode&&Zwt(t);return n&&!wk.isBuffer(t)&&(t=Xwt(t)),typeof e=="function"&&(r=e,e=null),n?e="buffer":e||(e=o.defaultEncoding),typeof r!="function"&&(r=c1t),o.ending?u1t(this,r):(n||A1t(this,o,t,r))&&(o.pendingcb++,a=p1t(this,o,n,t,e,r)),a};Qi.prototype.cork=function(){this._writableState.corked++};Qi.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&n2e(this,t))};Qi.prototype.setDefaultEncoding=function(e){if(typeof e=="string"&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new l1t(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(Qi.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function f1t(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e=="string"&&(e=wk.from(e,r)),e}Object.defineProperty(Qi.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function p1t(t,e,r,o,a,n){if(!r){var u=f1t(e,o,a);o!==u&&(r=!0,a="buffer",o=u)}var A=e.objectMode?1:o.length;e.length+=A;var p=e.length<e.highWaterMark;if(p||(e.needDrain=!0),e.writing||e.corked){var h=e.lastBufferedRequest;e.lastBufferedRequest={chunk:o,encoding:a,isBuf:r,callback:n,next:null},h?h.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else vj(t,e,!1,A,o,a,n);return p}function vj(t,e,r,o,a,n,u){e.writelen=o,e.writecb=u,e.writing=!0,e.sync=!0,e.destroyed?e.onwrite(new s1t("write")):r?t._writev(a,e.onwrite):t._write(a,n,e.onwrite),e.sync=!1}function h1t(t,e,r,o,a){--e.pendingcb,r?(process.nextTick(a,o),process.nextTick(VB,t,e),t._writableState.errorEmitted=!0,UC(t,o)):(a(o),t._writableState.errorEmitted=!0,UC(t,o),VB(t,e))}function g1t(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}function d1t(t,e){var r=t._writableState,o=r.sync,a=r.writecb;if(typeof a!="function")throw new n1t;if(g1t(r),e)h1t(t,r,o,e,a);else{var n=i2e(r)||t.destroyed;!n&&!r.corked&&!r.bufferProcessing&&r.bufferedRequest&&n2e(t,r),o?process.nextTick(e2e,t,r,n,a):e2e(t,r,n,a)}}function e2e(t,e,r,o){r||m1t(t,e),e.pendingcb--,o(),VB(t,e)}function m1t(t,e){e.length===0&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}function n2e(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var o=e.bufferedRequestCount,a=new Array(o),n=e.corkedRequestsFree;n.entry=r;for(var u=0,A=!0;r;)a[u]=r,r.isBuf||(A=!1),r=r.next,u+=1;a.allBuffers=A,vj(t,e,!0,e.length,a,"",n.finish),e.pendingcb++,e.lastBufferedRequest=null,n.next?(e.corkedRequestsFree=n.next,n.next=null):e.corkedRequestsFree=new t2e(e),e.bufferedRequestCount=0}else{for(;r;){var p=r.chunk,h=r.encoding,C=r.callback,w=e.objectMode?1:p.length;if(vj(t,e,!1,w,p,h,C),r=r.next,e.bufferedRequestCount--,e.writing)break}r===null&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}Qi.prototype._write=function(t,e,r){r(new r1t("_write()"))};Qi.prototype._writev=null;Qi.prototype.end=function(t,e,r){var o=this._writableState;return typeof t=="function"?(r=t,t=null,e=null):typeof e=="function"&&(r=e,e=null),t!=null&&this.write(t,e),o.corked&&(o.corked=1,this.uncork()),o.ending||C1t(this,o,r),this};Object.defineProperty(Qi.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function i2e(t){return t.ending&&t.length===0&&t.bufferedRequest===null&&!t.finished&&!t.writing}function y1t(t,e){t._final(function(r){e.pendingcb--,r&&UC(t,r),e.prefinished=!0,t.emit("prefinish"),VB(t,e)})}function E1t(t,e){!e.prefinished&&!e.finalCalled&&(typeof t._final=="function"&&!e.destroyed?(e.pendingcb++,e.finalCalled=!0,process.nextTick(y1t,t,e)):(e.prefinished=!0,t.emit("prefinish")))}function VB(t,e){var r=i2e(e);if(r&&(E1t(t,e),e.pendingcb===0&&(e.finished=!0,t.emit("finish"),e.autoDestroy))){var o=t._readableState;(!o||o.autoDestroy&&o.endEmitted)&&t.destroy()}return r}function C1t(t,e,r){e.ending=!0,VB(t,e),r&&(e.finished?process.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}function I1t(t,e,r){var o=t.entry;for(t.entry=null;o;){var a=o.callback;e.pendingcb--,a(r),o=o.next}e.corkedRequestsFree.next=t}Object.defineProperty(Qi.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(e){!this._writableState||(this._writableState.destroyed=e)}});Qi.prototype.destroy=Dj.destroy;Qi.prototype._undestroy=Dj.undestroy;Qi.prototype._destroy=function(t,e){e(t)}});var mm=U((hZt,a2e)=>{"use strict";var w1t=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};a2e.exports=EA;var o2e=bj(),xj=Sj();Sh()(EA,o2e);for(Pj=w1t(xj.prototype),Bk=0;Bk<Pj.length;Bk++)vk=Pj[Bk],EA.prototype[vk]||(EA.prototype[vk]=xj.prototype[vk]);var Pj,vk,Bk;function EA(t){if(!(this instanceof EA))return new EA(t);o2e.call(this,t),xj.call(this,t),this.allowHalfOpen=!0,t&&(t.readable===!1&&(this.readable=!1),t.writable===!1&&(this.writable=!1),t.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once("end",B1t)))}Object.defineProperty(EA.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});Object.defineProperty(EA.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});Object.defineProperty(EA.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function B1t(){this._writableState.ended||process.nextTick(v1t,this)}function v1t(t){t.end()}Object.defineProperty(EA.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(e){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=e,this._writableState.destroyed=e)}})});var u2e=U((Qj,c2e)=>{var Dk=Ie("buffer"),np=Dk.Buffer;function l2e(t,e){for(var r in t)e[r]=t[r]}np.from&&np.alloc&&np.allocUnsafe&&np.allocUnsafeSlow?c2e.exports=Dk:(l2e(Dk,Qj),Qj.Buffer=_C);function _C(t,e,r){return np(t,e,r)}l2e(np,_C);_C.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return np(t,e,r)};_C.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var o=np(t);return e!==void 0?typeof r=="string"?o.fill(e,r):o.fill(e):o.fill(0),o};_C.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return np(t)};_C.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return Dk.SlowBuffer(t)}});var Rj=U(f2e=>{"use strict";var Fj=u2e().Buffer,A2e=Fj.isEncoding||function(t){switch(t=""+t,t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function D1t(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}function S1t(t){var e=D1t(t);if(typeof e!="string"&&(Fj.isEncoding===A2e||!A2e(t)))throw new Error("Unknown encoding: "+t);return e||t}f2e.StringDecoder=XB;function XB(t){this.encoding=S1t(t);var e;switch(this.encoding){case"utf16le":this.text=F1t,this.end=R1t,e=4;break;case"utf8":this.fillLast=b1t,e=4;break;case"base64":this.text=T1t,this.end=N1t,e=3;break;default:this.write=L1t,this.end=O1t;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=Fj.allocUnsafe(e)}XB.prototype.write=function(t){if(t.length===0)return"";var e,r;if(this.lastNeed){if(e=this.fillLast(t),e===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r<t.length?e?e+this.text(t,r):this.text(t,r):e||""};XB.prototype.end=k1t;XB.prototype.text=Q1t;XB.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length};function kj(t){return t<=127?0:t>>5===6?2:t>>4===14?3:t>>3===30?4:t>>6===2?-1:-2}function P1t(t,e,r){var o=e.length-1;if(o<r)return 0;var a=kj(e[o]);return a>=0?(a>0&&(t.lastNeed=a-1),a):--o<r||a===-2?0:(a=kj(e[o]),a>=0?(a>0&&(t.lastNeed=a-2),a):--o<r||a===-2?0:(a=kj(e[o]),a>=0?(a>0&&(a===2?a=0:t.lastNeed=a-3),a):0))}function x1t(t,e,r){if((e[0]&192)!==128)return t.lastNeed=0,"\uFFFD";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!==128)return t.lastNeed=1,"\uFFFD";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!==128)return t.lastNeed=2,"\uFFFD"}}function b1t(t){var e=this.lastTotal-this.lastNeed,r=x1t(this,t,e);if(r!==void 0)return r;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function Q1t(t,e){var r=P1t(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var o=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,o),t.toString("utf8",e,o)}function k1t(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"\uFFFD":e}function F1t(t,e){if((t.length-e)%2===0){var r=t.toString("utf16le",e);if(r){var o=r.charCodeAt(r.length-1);if(o>=55296&&o<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function R1t(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function T1t(t,e){var r=(t.length-e)%3;return r===0?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function N1t(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function L1t(t){return t.toString(this.encoding)}function O1t(t){return t&&t.length?this.write(t):""}});var Sk=U((dZt,g2e)=>{"use strict";var p2e=Dh().codes.ERR_STREAM_PREMATURE_CLOSE;function M1t(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];t.apply(this,o)}}}function U1t(){}function _1t(t){return t.setHeader&&typeof t.abort=="function"}function h2e(t,e,r){if(typeof e=="function")return h2e(t,null,e);e||(e={}),r=M1t(r||U1t);var o=e.readable||e.readable!==!1&&t.readable,a=e.writable||e.writable!==!1&&t.writable,n=function(){t.writable||A()},u=t._writableState&&t._writableState.finished,A=function(){a=!1,u=!0,o||r.call(t)},p=t._readableState&&t._readableState.endEmitted,h=function(){o=!1,p=!0,a||r.call(t)},C=function(E){r.call(t,E)},w=function(){var E;if(o&&!p)return(!t._readableState||!t._readableState.ended)&&(E=new p2e),r.call(t,E);if(a&&!u)return(!t._writableState||!t._writableState.ended)&&(E=new p2e),r.call(t,E)},v=function(){t.req.on("finish",A)};return _1t(t)?(t.on("complete",A),t.on("abort",w),t.req?v():t.on("request",v)):a&&!t._writableState&&(t.on("end",n),t.on("close",n)),t.on("end",h),t.on("finish",A),e.error!==!1&&t.on("error",C),t.on("close",w),function(){t.removeListener("complete",A),t.removeListener("abort",w),t.removeListener("request",v),t.req&&t.req.removeListener("finish",A),t.removeListener("end",n),t.removeListener("close",n),t.removeListener("finish",A),t.removeListener("end",h),t.removeListener("error",C),t.removeListener("close",w)}}g2e.exports=h2e});var m2e=U((mZt,d2e)=>{"use strict";var Pk;function xh(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var H1t=Sk(),bh=Symbol("lastResolve"),ym=Symbol("lastReject"),ZB=Symbol("error"),xk=Symbol("ended"),Em=Symbol("lastPromise"),Tj=Symbol("handlePromise"),Cm=Symbol("stream");function Qh(t,e){return{value:t,done:e}}function q1t(t){var e=t[bh];if(e!==null){var r=t[Cm].read();r!==null&&(t[Em]=null,t[bh]=null,t[ym]=null,e(Qh(r,!1)))}}function j1t(t){process.nextTick(q1t,t)}function G1t(t,e){return function(r,o){t.then(function(){if(e[xk]){r(Qh(void 0,!0));return}e[Tj](r,o)},o)}}var W1t=Object.getPrototypeOf(function(){}),Y1t=Object.setPrototypeOf((Pk={get stream(){return this[Cm]},next:function(){var e=this,r=this[ZB];if(r!==null)return Promise.reject(r);if(this[xk])return Promise.resolve(Qh(void 0,!0));if(this[Cm].destroyed)return new Promise(function(u,A){process.nextTick(function(){e[ZB]?A(e[ZB]):u(Qh(void 0,!0))})});var o=this[Em],a;if(o)a=new Promise(G1t(o,this));else{var n=this[Cm].read();if(n!==null)return Promise.resolve(Qh(n,!1));a=new Promise(this[Tj])}return this[Em]=a,a}},xh(Pk,Symbol.asyncIterator,function(){return this}),xh(Pk,"return",function(){var e=this;return new Promise(function(r,o){e[Cm].destroy(null,function(a){if(a){o(a);return}r(Qh(void 0,!0))})})}),Pk),W1t),K1t=function(e){var r,o=Object.create(Y1t,(r={},xh(r,Cm,{value:e,writable:!0}),xh(r,bh,{value:null,writable:!0}),xh(r,ym,{value:null,writable:!0}),xh(r,ZB,{value:null,writable:!0}),xh(r,xk,{value:e._readableState.endEmitted,writable:!0}),xh(r,Tj,{value:function(n,u){var A=o[Cm].read();A?(o[Em]=null,o[bh]=null,o[ym]=null,n(Qh(A,!1))):(o[bh]=n,o[ym]=u)},writable:!0}),r));return o[Em]=null,H1t(e,function(a){if(a&&a.code!=="ERR_STREAM_PREMATURE_CLOSE"){var n=o[ym];n!==null&&(o[Em]=null,o[bh]=null,o[ym]=null,n(a)),o[ZB]=a;return}var u=o[bh];u!==null&&(o[Em]=null,o[bh]=null,o[ym]=null,u(Qh(void 0,!0))),o[xk]=!0}),e.on("readable",j1t.bind(null,o)),o};d2e.exports=K1t});var I2e=U((yZt,C2e)=>{"use strict";function y2e(t,e,r,o,a,n,u){try{var A=t[n](u),p=A.value}catch(h){r(h);return}A.done?e(p):Promise.resolve(p).then(o,a)}function J1t(t){return function(){var e=this,r=arguments;return new Promise(function(o,a){var n=t.apply(e,r);function u(p){y2e(n,o,a,u,A,"next",p)}function A(p){y2e(n,o,a,u,A,"throw",p)}u(void 0)})}}function E2e(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,o)}return r}function V1t(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?E2e(Object(r),!0).forEach(function(o){z1t(t,o,r[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):E2e(Object(r)).forEach(function(o){Object.defineProperty(t,o,Object.getOwnPropertyDescriptor(r,o))})}return t}function z1t(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var X1t=Dh().codes.ERR_INVALID_ARG_TYPE;function Z1t(t,e,r){var o;if(e&&typeof e.next=="function")o=e;else if(e&&e[Symbol.asyncIterator])o=e[Symbol.asyncIterator]();else if(e&&e[Symbol.iterator])o=e[Symbol.iterator]();else throw new X1t("iterable",["Iterable"],e);var a=new t(V1t({objectMode:!0},r)),n=!1;a._read=function(){n||(n=!0,u())};function u(){return A.apply(this,arguments)}function A(){return A=J1t(function*(){try{var p=yield o.next(),h=p.value,C=p.done;C?a.push(null):a.push(yield h)?u():n=!1}catch(w){a.destroy(w)}}),A.apply(this,arguments)}return a}C2e.exports=Z1t});var bj=U((CZt,k2e)=>{"use strict";k2e.exports=pn;var HC;pn.ReadableState=D2e;var EZt=Ie("events").EventEmitter,v2e=function(e,r){return e.listeners(r).length},ev=dj(),bk=Ie("buffer").Buffer,$1t=global.Uint8Array||function(){};function e2t(t){return bk.from(t)}function t2t(t){return bk.isBuffer(t)||t instanceof $1t}var Nj=Ie("util"),zr;Nj&&Nj.debuglog?zr=Nj.debuglog("stream"):zr=function(){};var r2t=G1e(),qj=Ej(),n2t=Cj(),i2t=n2t.getHighWaterMark,Qk=Dh().codes,s2t=Qk.ERR_INVALID_ARG_TYPE,o2t=Qk.ERR_STREAM_PUSH_AFTER_EOF,a2t=Qk.ERR_METHOD_NOT_IMPLEMENTED,l2t=Qk.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,qC,Lj,Oj;Sh()(pn,ev);var $B=qj.errorOrDestroy,Mj=["error","close","destroy","pause","resume"];function c2t(t,e,r){if(typeof t.prependListener=="function")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}function D2e(t,e,r){HC=HC||mm(),t=t||{},typeof r!="boolean"&&(r=e instanceof HC),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=i2t(this,t,"readableHighWaterMark",r),this.buffer=new r2t,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(qC||(qC=Rj().StringDecoder),this.decoder=new qC(t.encoding),this.encoding=t.encoding)}function pn(t){if(HC=HC||mm(),!(this instanceof pn))return new pn(t);var e=this instanceof HC;this._readableState=new D2e(t,this,e),this.readable=!0,t&&(typeof t.read=="function"&&(this._read=t.read),typeof t.destroy=="function"&&(this._destroy=t.destroy)),ev.call(this)}Object.defineProperty(pn.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){!this._readableState||(this._readableState.destroyed=e)}});pn.prototype.destroy=qj.destroy;pn.prototype._undestroy=qj.undestroy;pn.prototype._destroy=function(t,e){e(t)};pn.prototype.push=function(t,e){var r=this._readableState,o;return r.objectMode?o=!0:typeof t=="string"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=bk.from(t,e),e=""),o=!0),S2e(this,t,e,!1,o)};pn.prototype.unshift=function(t){return S2e(this,t,null,!0,!1)};function S2e(t,e,r,o,a){zr("readableAddChunk",e);var n=t._readableState;if(e===null)n.reading=!1,f2t(t,n);else{var u;if(a||(u=u2t(n,e)),u)$B(t,u);else if(n.objectMode||e&&e.length>0)if(typeof e!="string"&&!n.objectMode&&Object.getPrototypeOf(e)!==bk.prototype&&(e=e2t(e)),o)n.endEmitted?$B(t,new l2t):Uj(t,n,e,!0);else if(n.ended)$B(t,new o2t);else{if(n.destroyed)return!1;n.reading=!1,n.decoder&&!r?(e=n.decoder.write(e),n.objectMode||e.length!==0?Uj(t,n,e,!1):Hj(t,n)):Uj(t,n,e,!1)}else o||(n.reading=!1,Hj(t,n))}return!n.ended&&(n.length<n.highWaterMark||n.length===0)}function Uj(t,e,r,o){e.flowing&&e.length===0&&!e.sync?(e.awaitDrain=0,t.emit("data",r)):(e.length+=e.objectMode?1:r.length,o?e.buffer.unshift(r):e.buffer.push(r),e.needReadable&&kk(t)),Hj(t,e)}function u2t(t,e){var r;return!t2t(e)&&typeof e!="string"&&e!==void 0&&!t.objectMode&&(r=new s2t("chunk",["string","Buffer","Uint8Array"],e)),r}pn.prototype.isPaused=function(){return this._readableState.flowing===!1};pn.prototype.setEncoding=function(t){qC||(qC=Rj().StringDecoder);var e=new qC(t);this._readableState.decoder=e,this._readableState.encoding=this._readableState.decoder.encoding;for(var r=this._readableState.buffer.head,o="";r!==null;)o+=e.write(r.data),r=r.next;return this._readableState.buffer.clear(),o!==""&&this._readableState.buffer.push(o),this._readableState.length=o.length,this};var w2e=1073741824;function A2t(t){return t>=w2e?t=w2e:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function B2e(t,e){return t<=0||e.length===0&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=A2t(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}pn.prototype.read=function(t){zr("read",t),t=parseInt(t,10);var e=this._readableState,r=t;if(t!==0&&(e.emittedReadable=!1),t===0&&e.needReadable&&((e.highWaterMark!==0?e.length>=e.highWaterMark:e.length>0)||e.ended))return zr("read: emitReadable",e.length,e.ended),e.length===0&&e.ended?_j(this):kk(this),null;if(t=B2e(t,e),t===0&&e.ended)return e.length===0&&_j(this),null;var o=e.needReadable;zr("need readable",o),(e.length===0||e.length-t<e.highWaterMark)&&(o=!0,zr("length less than watermark",o)),e.ended||e.reading?(o=!1,zr("reading or ended",o)):o&&(zr("do read"),e.reading=!0,e.sync=!0,e.length===0&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=B2e(r,e)));var a;return t>0?a=b2e(t,e):a=null,a===null?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),e.length===0&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&_j(this)),a!==null&&this.emit("data",a),a};function f2t(t,e){if(zr("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?kk(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,P2e(t)))}}function kk(t){var e=t._readableState;zr("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(zr("emitReadable",e.flowing),e.emittedReadable=!0,process.nextTick(P2e,t))}function P2e(t){var e=t._readableState;zr("emitReadable_",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,jj(t)}function Hj(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(p2t,t,e))}function p2t(t,e){for(;!e.reading&&!e.ended&&(e.length<e.highWaterMark||e.flowing&&e.length===0);){var r=e.length;if(zr("maybeReadMore read 0"),t.read(0),r===e.length)break}e.readingMore=!1}pn.prototype._read=function(t){$B(this,new a2t("_read()"))};pn.prototype.pipe=function(t,e){var r=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=t;break;case 1:o.pipes=[o.pipes,t];break;default:o.pipes.push(t);break}o.pipesCount+=1,zr("pipe count=%d opts=%j",o.pipesCount,e);var a=(!e||e.end!==!1)&&t!==process.stdout&&t!==process.stderr,n=a?A:R;o.endEmitted?process.nextTick(n):r.once("end",n),t.on("unpipe",u);function u(L,_){zr("onunpipe"),L===r&&_&&_.hasUnpiped===!1&&(_.hasUnpiped=!0,C())}function A(){zr("onend"),t.end()}var p=h2t(r);t.on("drain",p);var h=!1;function C(){zr("cleanup"),t.removeListener("close",b),t.removeListener("finish",E),t.removeListener("drain",p),t.removeListener("error",v),t.removeListener("unpipe",u),r.removeListener("end",A),r.removeListener("end",R),r.removeListener("data",w),h=!0,o.awaitDrain&&(!t._writableState||t._writableState.needDrain)&&p()}r.on("data",w);function w(L){zr("ondata");var _=t.write(L);zr("dest.write",_),_===!1&&((o.pipesCount===1&&o.pipes===t||o.pipesCount>1&&Q2e(o.pipes,t)!==-1)&&!h&&(zr("false write response, pause",o.awaitDrain),o.awaitDrain++),r.pause())}function v(L){zr("onerror",L),R(),t.removeListener("error",v),v2e(t,"error")===0&&$B(t,L)}c2t(t,"error",v);function b(){t.removeListener("finish",E),R()}t.once("close",b);function E(){zr("onfinish"),t.removeListener("close",b),R()}t.once("finish",E);function R(){zr("unpipe"),r.unpipe(t)}return t.emit("pipe",r),o.flowing||(zr("pipe resume"),r.resume()),t};function h2t(t){return function(){var r=t._readableState;zr("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&v2e(t,"data")&&(r.flowing=!0,jj(t))}}pn.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r),this);if(!t){var o=e.pipes,a=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var n=0;n<a;n++)o[n].emit("unpipe",this,{hasUnpiped:!1});return this}var u=Q2e(e.pipes,t);return u===-1?this:(e.pipes.splice(u,1),e.pipesCount-=1,e.pipesCount===1&&(e.pipes=e.pipes[0]),t.emit("unpipe",this,r),this)};pn.prototype.on=function(t,e){var r=ev.prototype.on.call(this,t,e),o=this._readableState;return t==="data"?(o.readableListening=this.listenerCount("readable")>0,o.flowing!==!1&&this.resume()):t==="readable"&&!o.endEmitted&&!o.readableListening&&(o.readableListening=o.needReadable=!0,o.flowing=!1,o.emittedReadable=!1,zr("on readable",o.length,o.reading),o.length?kk(this):o.reading||process.nextTick(g2t,this)),r};pn.prototype.addListener=pn.prototype.on;pn.prototype.removeListener=function(t,e){var r=ev.prototype.removeListener.call(this,t,e);return t==="readable"&&process.nextTick(x2e,this),r};pn.prototype.removeAllListeners=function(t){var e=ev.prototype.removeAllListeners.apply(this,arguments);return(t==="readable"||t===void 0)&&process.nextTick(x2e,this),e};function x2e(t){var e=t._readableState;e.readableListening=t.listenerCount("readable")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function g2t(t){zr("readable nexttick read 0"),t.read(0)}pn.prototype.resume=function(){var t=this._readableState;return t.flowing||(zr("resume"),t.flowing=!t.readableListening,d2t(this,t)),t.paused=!1,this};function d2t(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(m2t,t,e))}function m2t(t,e){zr("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),jj(t),e.flowing&&!e.reading&&t.read(0)}pn.prototype.pause=function(){return zr("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(zr("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function jj(t){var e=t._readableState;for(zr("flow",e.flowing);e.flowing&&t.read()!==null;);}pn.prototype.wrap=function(t){var e=this,r=this._readableState,o=!1;t.on("end",function(){if(zr("wrapped end"),r.decoder&&!r.ended){var u=r.decoder.end();u&&u.length&&e.push(u)}e.push(null)}),t.on("data",function(u){if(zr("wrapped data"),r.decoder&&(u=r.decoder.write(u)),!(r.objectMode&&u==null)&&!(!r.objectMode&&(!u||!u.length))){var A=e.push(u);A||(o=!0,t.pause())}});for(var a in t)this[a]===void 0&&typeof t[a]=="function"&&(this[a]=function(A){return function(){return t[A].apply(t,arguments)}}(a));for(var n=0;n<Mj.length;n++)t.on(Mj[n],this.emit.bind(this,Mj[n]));return this._read=function(u){zr("wrapped _read",u),o&&(o=!1,t.resume())},this};typeof Symbol=="function"&&(pn.prototype[Symbol.asyncIterator]=function(){return Lj===void 0&&(Lj=m2e()),Lj(this)});Object.defineProperty(pn.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}});Object.defineProperty(pn.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}});Object.defineProperty(pn.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(e){this._readableState&&(this._readableState.flowing=e)}});pn._fromList=b2e;Object.defineProperty(pn.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function b2e(t,e){if(e.length===0)return null;var r;return e.objectMode?r=e.buffer.shift():!t||t>=e.length?(e.decoder?r=e.buffer.join(""):e.buffer.length===1?r=e.buffer.first():r=e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r}function _j(t){var e=t._readableState;zr("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(y2t,e,t))}function y2t(t,e){if(zr("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&t.length===0&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}typeof Symbol=="function"&&(pn.from=function(t,e){return Oj===void 0&&(Oj=I2e()),Oj(pn,t,e)});function Q2e(t,e){for(var r=0,o=t.length;r<o;r++)if(t[r]===e)return r;return-1}});var Gj=U((IZt,R2e)=>{"use strict";R2e.exports=ip;var Fk=Dh().codes,E2t=Fk.ERR_METHOD_NOT_IMPLEMENTED,C2t=Fk.ERR_MULTIPLE_CALLBACK,I2t=Fk.ERR_TRANSFORM_ALREADY_TRANSFORMING,w2t=Fk.ERR_TRANSFORM_WITH_LENGTH_0,Rk=mm();Sh()(ip,Rk);function B2t(t,e){var r=this._transformState;r.transforming=!1;var o=r.writecb;if(o===null)return this.emit("error",new C2t);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),o(t);var a=this._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}function ip(t){if(!(this instanceof ip))return new ip(t);Rk.call(this,t),this._transformState={afterTransform:B2t.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,t&&(typeof t.transform=="function"&&(this._transform=t.transform),typeof t.flush=="function"&&(this._flush=t.flush)),this.on("prefinish",v2t)}function v2t(){var t=this;typeof this._flush=="function"&&!this._readableState.destroyed?this._flush(function(e,r){F2e(t,e,r)}):F2e(this,null,null)}ip.prototype.push=function(t,e){return this._transformState.needTransform=!1,Rk.prototype.push.call(this,t,e)};ip.prototype._transform=function(t,e,r){r(new E2t("_transform()"))};ip.prototype._write=function(t,e,r){var o=this._transformState;if(o.writecb=r,o.writechunk=t,o.writeencoding=e,!o.transforming){var a=this._readableState;(o.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}};ip.prototype._read=function(t){var e=this._transformState;e.writechunk!==null&&!e.transforming?(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform)):e.needTransform=!0};ip.prototype._destroy=function(t,e){Rk.prototype._destroy.call(this,t,function(r){e(r)})};function F2e(t,e,r){if(e)return t.emit("error",e);if(r!=null&&t.push(r),t._writableState.length)throw new w2t;if(t._transformState.transforming)throw new I2t;return t.push(null)}});var L2e=U((wZt,N2e)=>{"use strict";N2e.exports=tv;var T2e=Gj();Sh()(tv,T2e);function tv(t){if(!(this instanceof tv))return new tv(t);T2e.call(this,t)}tv.prototype._transform=function(t,e,r){r(null,t)}});var H2e=U((BZt,_2e)=>{"use strict";var Wj;function D2t(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var U2e=Dh().codes,S2t=U2e.ERR_MISSING_ARGS,P2t=U2e.ERR_STREAM_DESTROYED;function O2e(t){if(t)throw t}function x2t(t){return t.setHeader&&typeof t.abort=="function"}function b2t(t,e,r,o){o=D2t(o);var a=!1;t.on("close",function(){a=!0}),Wj===void 0&&(Wj=Sk()),Wj(t,{readable:e,writable:r},function(u){if(u)return o(u);a=!0,o()});var n=!1;return function(u){if(!a&&!n){if(n=!0,x2t(t))return t.abort();if(typeof t.destroy=="function")return t.destroy();o(u||new P2t("pipe"))}}}function M2e(t){t()}function Q2t(t,e){return t.pipe(e)}function k2t(t){return!t.length||typeof t[t.length-1]!="function"?O2e:t.pop()}function F2t(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];var o=k2t(e);if(Array.isArray(e[0])&&(e=e[0]),e.length<2)throw new S2t("streams");var a,n=e.map(function(u,A){var p=A<e.length-1,h=A>0;return b2t(u,p,h,function(C){a||(a=C),C&&n.forEach(M2e),!p&&(n.forEach(M2e),o(a))})});return e.reduce(Q2t)}_2e.exports=F2t});var jC=U((cc,nv)=>{var rv=Ie("stream");process.env.READABLE_STREAM==="disable"&&rv?(nv.exports=rv.Readable,Object.assign(nv.exports,rv),nv.exports.Stream=rv):(cc=nv.exports=bj(),cc.Stream=rv||cc,cc.Readable=cc,cc.Writable=Sj(),cc.Duplex=mm(),cc.Transform=Gj(),cc.PassThrough=L2e(),cc.finished=Sk(),cc.pipeline=H2e())});var G2e=U((vZt,j2e)=>{"use strict";var{Buffer:pu}=Ie("buffer"),q2e=Symbol.for("BufferList");function Xn(t){if(!(this instanceof Xn))return new Xn(t);Xn._init.call(this,t)}Xn._init=function(e){Object.defineProperty(this,q2e,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};Xn.prototype._new=function(e){return new Xn(e)};Xn.prototype._offset=function(e){if(e===0)return[0,0];let r=0;for(let o=0;o<this._bufs.length;o++){let a=r+this._bufs[o].length;if(e<a||o===this._bufs.length-1)return[o,e-r];r=a}};Xn.prototype._reverseOffset=function(t){let e=t[0],r=t[1];for(let o=0;o<e;o++)r+=this._bufs[o].length;return r};Xn.prototype.get=function(e){if(e>this.length||e<0)return;let r=this._offset(e);return this._bufs[r[0]][r[1]]};Xn.prototype.slice=function(e,r){return typeof e=="number"&&e<0&&(e+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,e,r)};Xn.prototype.copy=function(e,r,o,a){if((typeof o!="number"||o<0)&&(o=0),(typeof a!="number"||a>this.length)&&(a=this.length),o>=this.length||a<=0)return e||pu.alloc(0);let n=!!e,u=this._offset(o),A=a-o,p=A,h=n&&r||0,C=u[1];if(o===0&&a===this.length){if(!n)return this._bufs.length===1?this._bufs[0]:pu.concat(this._bufs,this.length);for(let w=0;w<this._bufs.length;w++)this._bufs[w].copy(e,h),h+=this._bufs[w].length;return e}if(p<=this._bufs[u[0]].length-C)return n?this._bufs[u[0]].copy(e,r,C,C+p):this._bufs[u[0]].slice(C,C+p);n||(e=pu.allocUnsafe(A));for(let w=u[0];w<this._bufs.length;w++){let v=this._bufs[w].length-C;if(p>v)this._bufs[w].copy(e,h,C),h+=v;else{this._bufs[w].copy(e,h,C,C+p),h+=v;break}p-=v,C&&(C=0)}return e.length>h?e.slice(0,h):e};Xn.prototype.shallowSlice=function(e,r){if(e=e||0,r=typeof r!="number"?this.length:r,e<0&&(e+=this.length),r<0&&(r+=this.length),e===r)return this._new();let o=this._offset(e),a=this._offset(r),n=this._bufs.slice(o[0],a[0]+1);return a[1]===0?n.pop():n[n.length-1]=n[n.length-1].slice(0,a[1]),o[1]!==0&&(n[0]=n[0].slice(o[1])),this._new(n)};Xn.prototype.toString=function(e,r,o){return this.slice(r,o).toString(e)};Xn.prototype.consume=function(e){if(e=Math.trunc(e),Number.isNaN(e)||e<=0)return this;for(;this._bufs.length;)if(e>=this._bufs[0].length)e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}return this};Xn.prototype.duplicate=function(){let e=this._new();for(let r=0;r<this._bufs.length;r++)e.append(this._bufs[r]);return e};Xn.prototype.append=function(e){if(e==null)return this;if(e.buffer)this._appendBuffer(pu.from(e.buffer,e.byteOffset,e.byteLength));else if(Array.isArray(e))for(let r=0;r<e.length;r++)this.append(e[r]);else if(this._isBufferList(e))for(let r=0;r<e._bufs.length;r++)this.append(e._bufs[r]);else typeof e=="number"&&(e=e.toString()),this._appendBuffer(pu.from(e));return this};Xn.prototype._appendBuffer=function(e){this._bufs.push(e),this.length+=e.length};Xn.prototype.indexOf=function(t,e,r){if(r===void 0&&typeof e=="string"&&(r=e,e=void 0),typeof t=="function"||Array.isArray(t))throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof t=="number"?t=pu.from([t]):typeof t=="string"?t=pu.from(t,r):this._isBufferList(t)?t=t.slice():Array.isArray(t.buffer)?t=pu.from(t.buffer,t.byteOffset,t.byteLength):pu.isBuffer(t)||(t=pu.from(t)),e=Number(e||0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;let o=this._offset(e),a=o[0],n=o[1];for(;a<this._bufs.length;a++){let u=this._bufs[a];for(;n<u.length;)if(u.length-n>=t.length){let p=u.indexOf(t,n);if(p!==-1)return this._reverseOffset([a,p]);n=u.length-t.length+1}else{let p=this._reverseOffset([a,n]);if(this._match(p,t))return p;n++}n=0}return-1};Xn.prototype._match=function(t,e){if(this.length-t<e.length)return!1;for(let r=0;r<e.length;r++)if(this.get(t+r)!==e[r])return!1;return!0};(function(){let t={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(let e in t)(function(r){t[r]===null?Xn.prototype[r]=function(o,a){return this.slice(o,o+a)[r](0,a)}:Xn.prototype[r]=function(o=0){return this.slice(o,o+t[r])[r](0)}})(e)})();Xn.prototype._isBufferList=function(e){return e instanceof Xn||Xn.isBufferList(e)};Xn.isBufferList=function(e){return e!=null&&e[q2e]};j2e.exports=Xn});var W2e=U((DZt,Tk)=>{"use strict";var Yj=jC().Duplex,R2t=Sh(),iv=G2e();function No(t){if(!(this instanceof No))return new No(t);if(typeof t=="function"){this._callback=t;let e=function(o){this._callback&&(this._callback(o),this._callback=null)}.bind(this);this.on("pipe",function(o){o.on("error",e)}),this.on("unpipe",function(o){o.removeListener("error",e)}),t=null}iv._init.call(this,t),Yj.call(this)}R2t(No,Yj);Object.assign(No.prototype,iv.prototype);No.prototype._new=function(e){return new No(e)};No.prototype._write=function(e,r,o){this._appendBuffer(e),typeof o=="function"&&o()};No.prototype._read=function(e){if(!this.length)return this.push(null);e=Math.min(e,this.length),this.push(this.slice(0,e)),this.consume(e)};No.prototype.end=function(e){Yj.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};No.prototype._destroy=function(e,r){this._bufs.length=0,this.length=0,r(e)};No.prototype._isBufferList=function(e){return e instanceof No||e instanceof iv||No.isBufferList(e)};No.isBufferList=iv.isBufferList;Tk.exports=No;Tk.exports.BufferListStream=No;Tk.exports.BufferList=iv});var Vj=U(WC=>{var T2t=Buffer.alloc,N2t="0000000000000000000",L2t="7777777777777777777",Y2e="0".charCodeAt(0),K2e=Buffer.from("ustar\0","binary"),O2t=Buffer.from("00","binary"),M2t=Buffer.from("ustar ","binary"),U2t=Buffer.from(" \0","binary"),_2t=parseInt("7777",8),sv=257,Jj=263,H2t=function(t,e,r){return typeof t!="number"?r:(t=~~t,t>=e?e:t>=0||(t+=e,t>=0)?t:0)},q2t=function(t){switch(t){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null},j2t=function(t){switch(t){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0},J2e=function(t,e,r,o){for(;r<o;r++)if(t[r]===e)return r;return o},V2e=function(t){for(var e=256,r=0;r<148;r++)e+=t[r];for(var o=156;o<512;o++)e+=t[o];return e},kh=function(t,e){return t=t.toString(8),t.length>e?L2t.slice(0,e)+" ":N2t.slice(0,e-t.length)+t+" "};function G2t(t){var e;if(t[0]===128)e=!0;else if(t[0]===255)e=!1;else return null;for(var r=[],o=t.length-1;o>0;o--){var a=t[o];e?r.push(a):r.push(255-a)}var n=0,u=r.length;for(o=0;o<u;o++)n+=r[o]*Math.pow(256,o);return e?n:-1*n}var Fh=function(t,e,r){if(t=t.slice(e,e+r),e=0,t[e]&128)return G2t(t);for(;e<t.length&&t[e]===32;)e++;for(var o=H2t(J2e(t,32,e,t.length),t.length,t.length);e<o&&t[e]===0;)e++;return o===e?0:parseInt(t.slice(e,o).toString(),8)},GC=function(t,e,r,o){return t.slice(e,J2e(t,0,e,e+r)).toString(o)},Kj=function(t){var e=Buffer.byteLength(t),r=Math.floor(Math.log(e)/Math.log(10))+1;return e+r>=Math.pow(10,r)&&r++,e+r+t};WC.decodeLongPath=function(t,e){return GC(t,0,t.length,e)};WC.encodePax=function(t){var e="";t.name&&(e+=Kj(" path="+t.name+` | 379 | `,b}function kwt(t,e){return e.fs_.chmod(t,493)}function Aj(t){if(!t)return{win32:"",posix:""};let e=typeof t=="string"?t.split(Ac.delimiter):Array.from(t),r={};for(let o=0;o<e.length;o++){let a=e[o].split("/").join("\\"),n=Q1e()?e[o].split("\\").join("/").replace(/^([^:\\/]*):/,(u,A)=>`/mnt/${A.toLowerCase()}`):e[o];r.win32=r.win32?`${r.win32};${a}`:a,r.posix=r.posix?`${r.posix}:${n}`:n,r[o]={win32:a,posix:n}}return r}F1e.exports=uj});var vj=U((CZt,$1e)=>{$1e.exports=Ie("stream")});var n2e=U((IZt,r2e)=>{"use strict";function e2e(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,o)}return r}function Xwt(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?e2e(Object(r),!0).forEach(function(o){Zwt(t,o,r[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):e2e(Object(r)).forEach(function(o){Object.defineProperty(t,o,Object.getOwnPropertyDescriptor(r,o))})}return t}function Zwt(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function $wt(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function t2e(t,e){for(var r=0;r<e.length;r++){var o=e[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function e1t(t,e,r){return e&&t2e(t.prototype,e),r&&t2e(t,r),t}var t1t=Ie("buffer"),vk=t1t.Buffer,r1t=Ie("util"),Dj=r1t.inspect,n1t=Dj&&Dj.custom||"inspect";function i1t(t,e,r){vk.prototype.copy.call(t,e,r)}r2e.exports=function(){function t(){$wt(this,t),this.head=null,this.tail=null,this.length=0}return e1t(t,[{key:"push",value:function(r){var o={data:r,next:null};this.length>0?this.tail.next=o:this.head=o,this.tail=o,++this.length}},{key:"unshift",value:function(r){var o={data:r,next:this.head};this.length===0&&(this.tail=o),this.head=o,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var o=this.head,a=""+o.data;o=o.next;)a+=r+o.data;return a}},{key:"concat",value:function(r){if(this.length===0)return vk.alloc(0);for(var o=vk.allocUnsafe(r>>>0),a=this.head,n=0;a;)i1t(a.data,o,n),n+=a.data.length,a=a.next;return o}},{key:"consume",value:function(r,o){var a;return r<this.head.data.length?(a=this.head.data.slice(0,r),this.head.data=this.head.data.slice(r)):r===this.head.data.length?a=this.shift():a=o?this._getString(r):this._getBuffer(r),a}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(r){var o=this.head,a=1,n=o.data;for(r-=n.length;o=o.next;){var u=o.data,A=r>u.length?u.length:r;if(A===u.length?n+=u:n+=u.slice(0,r),r-=A,r===0){A===u.length?(++a,o.next?this.head=o.next:this.head=this.tail=null):(this.head=o,o.data=u.slice(A));break}++a}return this.length-=a,n}},{key:"_getBuffer",value:function(r){var o=vk.allocUnsafe(r),a=this.head,n=1;for(a.data.copy(o),r-=a.data.length;a=a.next;){var u=a.data,A=r>u.length?u.length:r;if(u.copy(o,o.length-r,0,A),r-=A,r===0){A===u.length?(++n,a.next?this.head=a.next:this.head=this.tail=null):(this.head=a,a.data=u.slice(A));break}++n}return this.length-=n,o}},{key:n1t,value:function(r,o){return Dj(this,Xwt({},o,{depth:0,customInspect:!1}))}}]),t}()});var Pj=U((wZt,s2e)=>{"use strict";function s1t(t,e){var r=this,o=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return o||a?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(Sj,this,t)):process.nextTick(Sj,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(n){!e&&n?r._writableState?r._writableState.errorEmitted?process.nextTick(Dk,r):(r._writableState.errorEmitted=!0,process.nextTick(i2e,r,n)):process.nextTick(i2e,r,n):e?(process.nextTick(Dk,r),e(n)):process.nextTick(Dk,r)}),this)}function i2e(t,e){Sj(t,e),Dk(t)}function Dk(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function o1t(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function Sj(t,e){t.emit("error",e)}function a1t(t,e){var r=t._readableState,o=t._writableState;r&&r.autoDestroy||o&&o.autoDestroy?t.destroy(e):t.emit("error",e)}s2e.exports={destroy:s1t,undestroy:o1t,errorOrDestroy:a1t}});var bh=U((BZt,l2e)=>{"use strict";var a2e={};function fc(t,e,r){r||(r=Error);function o(n,u,A){return typeof e=="string"?e:e(n,u,A)}class a extends r{constructor(u,A,p){super(o(u,A,p))}}a.prototype.name=r.name,a.prototype.code=t,a2e[t]=a}function o2e(t,e){if(Array.isArray(t)){let r=t.length;return t=t.map(o=>String(o)),r>2?`one of ${e} ${t.slice(0,r-1).join(", ")}, or `+t[r-1]:r===2?`one of ${e} ${t[0]} or ${t[1]}`:`of ${e} ${t[0]}`}else return`of ${e} ${String(t)}`}function l1t(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function c1t(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function u1t(t,e,r){return typeof r!="number"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}fc("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError);fc("ERR_INVALID_ARG_TYPE",function(t,e,r){let o;typeof e=="string"&&l1t(e,"not ")?(o="must not be",e=e.replace(/^not /,"")):o="must be";let a;if(c1t(t," argument"))a=`The ${t} ${o} ${o2e(e,"type")}`;else{let n=u1t(t,".")?"property":"argument";a=`The "${t}" ${n} ${o} ${o2e(e,"type")}`}return a+=`. Received type ${typeof r}`,a},TypeError);fc("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");fc("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"});fc("ERR_STREAM_PREMATURE_CLOSE","Premature close");fc("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"});fc("ERR_MULTIPLE_CALLBACK","Callback called multiple times");fc("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");fc("ERR_STREAM_WRITE_AFTER_END","write after end");fc("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);fc("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError);fc("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");l2e.exports.codes=a2e});var xj=U((vZt,c2e)=>{"use strict";var A1t=bh().codes.ERR_INVALID_OPT_VALUE;function f1t(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function p1t(t,e,r,o){var a=f1t(e,o,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=o?r:"highWaterMark";throw new A1t(n,a)}return Math.floor(a)}return t.objectMode?16:16*1024}c2e.exports={getHighWaterMark:p1t}});var u2e=U((DZt,bj)=>{typeof Object.create=="function"?bj.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:bj.exports=function(e,r){if(r){e.super_=r;var o=function(){};o.prototype=r.prototype,e.prototype=new o,e.prototype.constructor=e}}});var Qh=U((SZt,kj)=>{try{if(Qj=Ie("util"),typeof Qj.inherits!="function")throw"";kj.exports=Qj.inherits}catch{kj.exports=u2e()}var Qj});var f2e=U((PZt,A2e)=>{A2e.exports=Ie("util").deprecate});var Tj=U((xZt,y2e)=>{"use strict";y2e.exports=Qi;function h2e(t){var e=this;this.next=null,this.entry=null,this.finish=function(){_1t(e,t)}}var qC;Qi.WritableState=sv;var h1t={deprecate:f2e()},g2e=vj(),Pk=Ie("buffer").Buffer,g1t=global.Uint8Array||function(){};function d1t(t){return Pk.from(t)}function m1t(t){return Pk.isBuffer(t)||t instanceof g1t}var Rj=Pj(),y1t=xj(),E1t=y1t.getHighWaterMark,kh=bh().codes,C1t=kh.ERR_INVALID_ARG_TYPE,I1t=kh.ERR_METHOD_NOT_IMPLEMENTED,w1t=kh.ERR_MULTIPLE_CALLBACK,B1t=kh.ERR_STREAM_CANNOT_PIPE,v1t=kh.ERR_STREAM_DESTROYED,D1t=kh.ERR_STREAM_NULL_VALUES,S1t=kh.ERR_STREAM_WRITE_AFTER_END,P1t=kh.ERR_UNKNOWN_ENCODING,jC=Rj.errorOrDestroy;Qh()(Qi,g2e);function x1t(){}function sv(t,e,r){qC=qC||Im(),t=t||{},typeof r!="boolean"&&(r=e instanceof qC),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=E1t(this,t,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var o=t.decodeStrings===!1;this.decodeStrings=!o,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){N1t(e,a)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new h2e(this)}sv.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(sv.prototype,"buffer",{get:h1t.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}})();var Sk;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(Sk=Function.prototype[Symbol.hasInstance],Object.defineProperty(Qi,Symbol.hasInstance,{value:function(e){return Sk.call(this,e)?!0:this!==Qi?!1:e&&e._writableState instanceof sv}})):Sk=function(e){return e instanceof this};function Qi(t){qC=qC||Im();var e=this instanceof qC;if(!e&&!Sk.call(Qi,this))return new Qi(t);this._writableState=new sv(t,this,e),this.writable=!0,t&&(typeof t.write=="function"&&(this._write=t.write),typeof t.writev=="function"&&(this._writev=t.writev),typeof t.destroy=="function"&&(this._destroy=t.destroy),typeof t.final=="function"&&(this._final=t.final)),g2e.call(this)}Qi.prototype.pipe=function(){jC(this,new B1t)};function b1t(t,e){var r=new S1t;jC(t,r),process.nextTick(e,r)}function Q1t(t,e,r,o){var a;return r===null?a=new D1t:typeof r!="string"&&!e.objectMode&&(a=new C1t("chunk",["string","Buffer"],r)),a?(jC(t,a),process.nextTick(o,a),!1):!0}Qi.prototype.write=function(t,e,r){var o=this._writableState,a=!1,n=!o.objectMode&&m1t(t);return n&&!Pk.isBuffer(t)&&(t=d1t(t)),typeof e=="function"&&(r=e,e=null),n?e="buffer":e||(e=o.defaultEncoding),typeof r!="function"&&(r=x1t),o.ending?b1t(this,r):(n||Q1t(this,o,t,r))&&(o.pendingcb++,a=F1t(this,o,n,t,e,r)),a};Qi.prototype.cork=function(){this._writableState.corked++};Qi.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&d2e(this,t))};Qi.prototype.setDefaultEncoding=function(e){if(typeof e=="string"&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new P1t(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(Qi.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function k1t(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e=="string"&&(e=Pk.from(e,r)),e}Object.defineProperty(Qi.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function F1t(t,e,r,o,a,n){if(!r){var u=k1t(e,o,a);o!==u&&(r=!0,a="buffer",o=u)}var A=e.objectMode?1:o.length;e.length+=A;var p=e.length<e.highWaterMark;if(p||(e.needDrain=!0),e.writing||e.corked){var h=e.lastBufferedRequest;e.lastBufferedRequest={chunk:o,encoding:a,isBuf:r,callback:n,next:null},h?h.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else Fj(t,e,!1,A,o,a,n);return p}function Fj(t,e,r,o,a,n,u){e.writelen=o,e.writecb=u,e.writing=!0,e.sync=!0,e.destroyed?e.onwrite(new v1t("write")):r?t._writev(a,e.onwrite):t._write(a,n,e.onwrite),e.sync=!1}function R1t(t,e,r,o,a){--e.pendingcb,r?(process.nextTick(a,o),process.nextTick(iv,t,e),t._writableState.errorEmitted=!0,jC(t,o)):(a(o),t._writableState.errorEmitted=!0,jC(t,o),iv(t,e))}function T1t(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}function N1t(t,e){var r=t._writableState,o=r.sync,a=r.writecb;if(typeof a!="function")throw new w1t;if(T1t(r),e)R1t(t,r,o,e,a);else{var n=m2e(r)||t.destroyed;!n&&!r.corked&&!r.bufferProcessing&&r.bufferedRequest&&d2e(t,r),o?process.nextTick(p2e,t,r,n,a):p2e(t,r,n,a)}}function p2e(t,e,r,o){r||L1t(t,e),e.pendingcb--,o(),iv(t,e)}function L1t(t,e){e.length===0&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}function d2e(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var o=e.bufferedRequestCount,a=new Array(o),n=e.corkedRequestsFree;n.entry=r;for(var u=0,A=!0;r;)a[u]=r,r.isBuf||(A=!1),r=r.next,u+=1;a.allBuffers=A,Fj(t,e,!0,e.length,a,"",n.finish),e.pendingcb++,e.lastBufferedRequest=null,n.next?(e.corkedRequestsFree=n.next,n.next=null):e.corkedRequestsFree=new h2e(e),e.bufferedRequestCount=0}else{for(;r;){var p=r.chunk,h=r.encoding,C=r.callback,w=e.objectMode?1:p.length;if(Fj(t,e,!1,w,p,h,C),r=r.next,e.bufferedRequestCount--,e.writing)break}r===null&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}Qi.prototype._write=function(t,e,r){r(new I1t("_write()"))};Qi.prototype._writev=null;Qi.prototype.end=function(t,e,r){var o=this._writableState;return typeof t=="function"?(r=t,t=null,e=null):typeof e=="function"&&(r=e,e=null),t!=null&&this.write(t,e),o.corked&&(o.corked=1,this.uncork()),o.ending||U1t(this,o,r),this};Object.defineProperty(Qi.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function m2e(t){return t.ending&&t.length===0&&t.bufferedRequest===null&&!t.finished&&!t.writing}function O1t(t,e){t._final(function(r){e.pendingcb--,r&&jC(t,r),e.prefinished=!0,t.emit("prefinish"),iv(t,e)})}function M1t(t,e){!e.prefinished&&!e.finalCalled&&(typeof t._final=="function"&&!e.destroyed?(e.pendingcb++,e.finalCalled=!0,process.nextTick(O1t,t,e)):(e.prefinished=!0,t.emit("prefinish")))}function iv(t,e){var r=m2e(e);if(r&&(M1t(t,e),e.pendingcb===0&&(e.finished=!0,t.emit("finish"),e.autoDestroy))){var o=t._readableState;(!o||o.autoDestroy&&o.endEmitted)&&t.destroy()}return r}function U1t(t,e,r){e.ending=!0,iv(t,e),r&&(e.finished?process.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}function _1t(t,e,r){var o=t.entry;for(t.entry=null;o;){var a=o.callback;e.pendingcb--,a(r),o=o.next}e.corkedRequestsFree.next=t}Object.defineProperty(Qi.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(e){!this._writableState||(this._writableState.destroyed=e)}});Qi.prototype.destroy=Rj.destroy;Qi.prototype._undestroy=Rj.undestroy;Qi.prototype._destroy=function(t,e){e(t)}});var Im=U((bZt,C2e)=>{"use strict";var H1t=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};C2e.exports=wA;var E2e=Oj(),Lj=Tj();Qh()(wA,E2e);for(Nj=H1t(Lj.prototype),xk=0;xk<Nj.length;xk++)bk=Nj[xk],wA.prototype[bk]||(wA.prototype[bk]=Lj.prototype[bk]);var Nj,bk,xk;function wA(t){if(!(this instanceof wA))return new wA(t);E2e.call(this,t),Lj.call(this,t),this.allowHalfOpen=!0,t&&(t.readable===!1&&(this.readable=!1),t.writable===!1&&(this.writable=!1),t.allowHalfOpen===!1&&(this.allowHalfOpen=!1,this.once("end",q1t)))}Object.defineProperty(wA.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});Object.defineProperty(wA.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});Object.defineProperty(wA.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function q1t(){this._writableState.ended||process.nextTick(j1t,this)}function j1t(t){t.end()}Object.defineProperty(wA.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0||this._writableState===void 0?!1:this._readableState.destroyed&&this._writableState.destroyed},set:function(e){this._readableState===void 0||this._writableState===void 0||(this._readableState.destroyed=e,this._writableState.destroyed=e)}})});var B2e=U((Mj,w2e)=>{var Qk=Ie("buffer"),op=Qk.Buffer;function I2e(t,e){for(var r in t)e[r]=t[r]}op.from&&op.alloc&&op.allocUnsafe&&op.allocUnsafeSlow?w2e.exports=Qk:(I2e(Qk,Mj),Mj.Buffer=GC);function GC(t,e,r){return op(t,e,r)}I2e(op,GC);GC.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return op(t,e,r)};GC.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var o=op(t);return e!==void 0?typeof r=="string"?o.fill(e,r):o.fill(e):o.fill(0),o};GC.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return op(t)};GC.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return Qk.SlowBuffer(t)}});var Hj=U(D2e=>{"use strict";var _j=B2e().Buffer,v2e=_j.isEncoding||function(t){switch(t=""+t,t&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function G1t(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}function W1t(t){var e=G1t(t);if(typeof e!="string"&&(_j.isEncoding===v2e||!v2e(t)))throw new Error("Unknown encoding: "+t);return e||t}D2e.StringDecoder=ov;function ov(t){this.encoding=W1t(t);var e;switch(this.encoding){case"utf16le":this.text=X1t,this.end=Z1t,e=4;break;case"utf8":this.fillLast=V1t,e=4;break;case"base64":this.text=$1t,this.end=e2t,e=3;break;default:this.write=t2t,this.end=r2t;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=_j.allocUnsafe(e)}ov.prototype.write=function(t){if(t.length===0)return"";var e,r;if(this.lastNeed){if(e=this.fillLast(t),e===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r<t.length?e?e+this.text(t,r):this.text(t,r):e||""};ov.prototype.end=z1t;ov.prototype.text=J1t;ov.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length};function Uj(t){return t<=127?0:t>>5===6?2:t>>4===14?3:t>>3===30?4:t>>6===2?-1:-2}function Y1t(t,e,r){var o=e.length-1;if(o<r)return 0;var a=Uj(e[o]);return a>=0?(a>0&&(t.lastNeed=a-1),a):--o<r||a===-2?0:(a=Uj(e[o]),a>=0?(a>0&&(t.lastNeed=a-2),a):--o<r||a===-2?0:(a=Uj(e[o]),a>=0?(a>0&&(a===2?a=0:t.lastNeed=a-3),a):0))}function K1t(t,e,r){if((e[0]&192)!==128)return t.lastNeed=0,"\uFFFD";if(t.lastNeed>1&&e.length>1){if((e[1]&192)!==128)return t.lastNeed=1,"\uFFFD";if(t.lastNeed>2&&e.length>2&&(e[2]&192)!==128)return t.lastNeed=2,"\uFFFD"}}function V1t(t){var e=this.lastTotal-this.lastNeed,r=K1t(this,t,e);if(r!==void 0)return r;if(this.lastNeed<=t.length)return t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,e,0,t.length),this.lastNeed-=t.length}function J1t(t,e){var r=Y1t(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var o=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,o),t.toString("utf8",e,o)}function z1t(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"\uFFFD":e}function X1t(t,e){if((t.length-e)%2===0){var r=t.toString("utf16le",e);if(r){var o=r.charCodeAt(r.length-1);if(o>=55296&&o<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function Z1t(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function $1t(t,e){var r=(t.length-e)%3;return r===0?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function e2t(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function t2t(t){return t.toString(this.encoding)}function r2t(t){return t&&t.length?this.write(t):""}});var kk=U((kZt,x2e)=>{"use strict";var S2e=bh().codes.ERR_STREAM_PREMATURE_CLOSE;function n2t(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];t.apply(this,o)}}}function i2t(){}function s2t(t){return t.setHeader&&typeof t.abort=="function"}function P2e(t,e,r){if(typeof e=="function")return P2e(t,null,e);e||(e={}),r=n2t(r||i2t);var o=e.readable||e.readable!==!1&&t.readable,a=e.writable||e.writable!==!1&&t.writable,n=function(){t.writable||A()},u=t._writableState&&t._writableState.finished,A=function(){a=!1,u=!0,o||r.call(t)},p=t._readableState&&t._readableState.endEmitted,h=function(){o=!1,p=!0,a||r.call(t)},C=function(E){r.call(t,E)},w=function(){var E;if(o&&!p)return(!t._readableState||!t._readableState.ended)&&(E=new S2e),r.call(t,E);if(a&&!u)return(!t._writableState||!t._writableState.ended)&&(E=new S2e),r.call(t,E)},v=function(){t.req.on("finish",A)};return s2t(t)?(t.on("complete",A),t.on("abort",w),t.req?v():t.on("request",v)):a&&!t._writableState&&(t.on("end",n),t.on("close",n)),t.on("end",h),t.on("finish",A),e.error!==!1&&t.on("error",C),t.on("close",w),function(){t.removeListener("complete",A),t.removeListener("abort",w),t.removeListener("request",v),t.req&&t.req.removeListener("finish",A),t.removeListener("end",n),t.removeListener("close",n),t.removeListener("finish",A),t.removeListener("end",h),t.removeListener("error",C),t.removeListener("close",w)}}x2e.exports=P2e});var Q2e=U((FZt,b2e)=>{"use strict";var Fk;function Fh(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var o2t=kk(),Rh=Symbol("lastResolve"),wm=Symbol("lastReject"),av=Symbol("error"),Rk=Symbol("ended"),Bm=Symbol("lastPromise"),qj=Symbol("handlePromise"),vm=Symbol("stream");function Th(t,e){return{value:t,done:e}}function a2t(t){var e=t[Rh];if(e!==null){var r=t[vm].read();r!==null&&(t[Bm]=null,t[Rh]=null,t[wm]=null,e(Th(r,!1)))}}function l2t(t){process.nextTick(a2t,t)}function c2t(t,e){return function(r,o){t.then(function(){if(e[Rk]){r(Th(void 0,!0));return}e[qj](r,o)},o)}}var u2t=Object.getPrototypeOf(function(){}),A2t=Object.setPrototypeOf((Fk={get stream(){return this[vm]},next:function(){var e=this,r=this[av];if(r!==null)return Promise.reject(r);if(this[Rk])return Promise.resolve(Th(void 0,!0));if(this[vm].destroyed)return new Promise(function(u,A){process.nextTick(function(){e[av]?A(e[av]):u(Th(void 0,!0))})});var o=this[Bm],a;if(o)a=new Promise(c2t(o,this));else{var n=this[vm].read();if(n!==null)return Promise.resolve(Th(n,!1));a=new Promise(this[qj])}return this[Bm]=a,a}},Fh(Fk,Symbol.asyncIterator,function(){return this}),Fh(Fk,"return",function(){var e=this;return new Promise(function(r,o){e[vm].destroy(null,function(a){if(a){o(a);return}r(Th(void 0,!0))})})}),Fk),u2t),f2t=function(e){var r,o=Object.create(A2t,(r={},Fh(r,vm,{value:e,writable:!0}),Fh(r,Rh,{value:null,writable:!0}),Fh(r,wm,{value:null,writable:!0}),Fh(r,av,{value:null,writable:!0}),Fh(r,Rk,{value:e._readableState.endEmitted,writable:!0}),Fh(r,qj,{value:function(n,u){var A=o[vm].read();A?(o[Bm]=null,o[Rh]=null,o[wm]=null,n(Th(A,!1))):(o[Rh]=n,o[wm]=u)},writable:!0}),r));return o[Bm]=null,o2t(e,function(a){if(a&&a.code!=="ERR_STREAM_PREMATURE_CLOSE"){var n=o[wm];n!==null&&(o[Bm]=null,o[Rh]=null,o[wm]=null,n(a)),o[av]=a;return}var u=o[Rh];u!==null&&(o[Bm]=null,o[Rh]=null,o[wm]=null,u(Th(void 0,!0))),o[Rk]=!0}),e.on("readable",l2t.bind(null,o)),o};b2e.exports=f2t});var T2e=U((RZt,R2e)=>{"use strict";function k2e(t,e,r,o,a,n,u){try{var A=t[n](u),p=A.value}catch(h){r(h);return}A.done?e(p):Promise.resolve(p).then(o,a)}function p2t(t){return function(){var e=this,r=arguments;return new Promise(function(o,a){var n=t.apply(e,r);function u(p){k2e(n,o,a,u,A,"next",p)}function A(p){k2e(n,o,a,u,A,"throw",p)}u(void 0)})}}function F2e(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,o)}return r}function h2t(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?F2e(Object(r),!0).forEach(function(o){g2t(t,o,r[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):F2e(Object(r)).forEach(function(o){Object.defineProperty(t,o,Object.getOwnPropertyDescriptor(r,o))})}return t}function g2t(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var d2t=bh().codes.ERR_INVALID_ARG_TYPE;function m2t(t,e,r){var o;if(e&&typeof e.next=="function")o=e;else if(e&&e[Symbol.asyncIterator])o=e[Symbol.asyncIterator]();else if(e&&e[Symbol.iterator])o=e[Symbol.iterator]();else throw new d2t("iterable",["Iterable"],e);var a=new t(h2t({objectMode:!0},r)),n=!1;a._read=function(){n||(n=!0,u())};function u(){return A.apply(this,arguments)}function A(){return A=p2t(function*(){try{var p=yield o.next(),h=p.value,C=p.done;C?a.push(null):a.push(yield h)?u():n=!1}catch(w){a.destroy(w)}}),A.apply(this,arguments)}return a}R2e.exports=m2t});var Oj=U((NZt,G2e)=>{"use strict";G2e.exports=pn;var WC;pn.ReadableState=M2e;var TZt=Ie("events").EventEmitter,O2e=function(e,r){return e.listeners(r).length},cv=vj(),Tk=Ie("buffer").Buffer,y2t=global.Uint8Array||function(){};function E2t(t){return Tk.from(t)}function C2t(t){return Tk.isBuffer(t)||t instanceof y2t}var jj=Ie("util"),zr;jj&&jj.debuglog?zr=jj.debuglog("stream"):zr=function(){};var I2t=n2e(),zj=Pj(),w2t=xj(),B2t=w2t.getHighWaterMark,Nk=bh().codes,v2t=Nk.ERR_INVALID_ARG_TYPE,D2t=Nk.ERR_STREAM_PUSH_AFTER_EOF,S2t=Nk.ERR_METHOD_NOT_IMPLEMENTED,P2t=Nk.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,YC,Gj,Wj;Qh()(pn,cv);var lv=zj.errorOrDestroy,Yj=["error","close","destroy","pause","resume"];function x2t(t,e,r){if(typeof t.prependListener=="function")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}function M2e(t,e,r){WC=WC||Im(),t=t||{},typeof r!="boolean"&&(r=e instanceof WC),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=B2t(this,t,"readableHighWaterMark",r),this.buffer=new I2t,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=t.emitClose!==!1,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(YC||(YC=Hj().StringDecoder),this.decoder=new YC(t.encoding),this.encoding=t.encoding)}function pn(t){if(WC=WC||Im(),!(this instanceof pn))return new pn(t);var e=this instanceof WC;this._readableState=new M2e(t,this,e),this.readable=!0,t&&(typeof t.read=="function"&&(this._read=t.read),typeof t.destroy=="function"&&(this._destroy=t.destroy)),cv.call(this)}Object.defineProperty(pn.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){!this._readableState||(this._readableState.destroyed=e)}});pn.prototype.destroy=zj.destroy;pn.prototype._undestroy=zj.undestroy;pn.prototype._destroy=function(t,e){e(t)};pn.prototype.push=function(t,e){var r=this._readableState,o;return r.objectMode?o=!0:typeof t=="string"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=Tk.from(t,e),e=""),o=!0),U2e(this,t,e,!1,o)};pn.prototype.unshift=function(t){return U2e(this,t,null,!0,!1)};function U2e(t,e,r,o,a){zr("readableAddChunk",e);var n=t._readableState;if(e===null)n.reading=!1,k2t(t,n);else{var u;if(a||(u=b2t(n,e)),u)lv(t,u);else if(n.objectMode||e&&e.length>0)if(typeof e!="string"&&!n.objectMode&&Object.getPrototypeOf(e)!==Tk.prototype&&(e=E2t(e)),o)n.endEmitted?lv(t,new P2t):Kj(t,n,e,!0);else if(n.ended)lv(t,new D2t);else{if(n.destroyed)return!1;n.reading=!1,n.decoder&&!r?(e=n.decoder.write(e),n.objectMode||e.length!==0?Kj(t,n,e,!1):Jj(t,n)):Kj(t,n,e,!1)}else o||(n.reading=!1,Jj(t,n))}return!n.ended&&(n.length<n.highWaterMark||n.length===0)}function Kj(t,e,r,o){e.flowing&&e.length===0&&!e.sync?(e.awaitDrain=0,t.emit("data",r)):(e.length+=e.objectMode?1:r.length,o?e.buffer.unshift(r):e.buffer.push(r),e.needReadable&&Lk(t)),Jj(t,e)}function b2t(t,e){var r;return!C2t(e)&&typeof e!="string"&&e!==void 0&&!t.objectMode&&(r=new v2t("chunk",["string","Buffer","Uint8Array"],e)),r}pn.prototype.isPaused=function(){return this._readableState.flowing===!1};pn.prototype.setEncoding=function(t){YC||(YC=Hj().StringDecoder);var e=new YC(t);this._readableState.decoder=e,this._readableState.encoding=this._readableState.decoder.encoding;for(var r=this._readableState.buffer.head,o="";r!==null;)o+=e.write(r.data),r=r.next;return this._readableState.buffer.clear(),o!==""&&this._readableState.buffer.push(o),this._readableState.length=o.length,this};var N2e=1073741824;function Q2t(t){return t>=N2e?t=N2e:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function L2e(t,e){return t<=0||e.length===0&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=Q2t(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}pn.prototype.read=function(t){zr("read",t),t=parseInt(t,10);var e=this._readableState,r=t;if(t!==0&&(e.emittedReadable=!1),t===0&&e.needReadable&&((e.highWaterMark!==0?e.length>=e.highWaterMark:e.length>0)||e.ended))return zr("read: emitReadable",e.length,e.ended),e.length===0&&e.ended?Vj(this):Lk(this),null;if(t=L2e(t,e),t===0&&e.ended)return e.length===0&&Vj(this),null;var o=e.needReadable;zr("need readable",o),(e.length===0||e.length-t<e.highWaterMark)&&(o=!0,zr("length less than watermark",o)),e.ended||e.reading?(o=!1,zr("reading or ended",o)):o&&(zr("do read"),e.reading=!0,e.sync=!0,e.length===0&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=L2e(r,e)));var a;return t>0?a=q2e(t,e):a=null,a===null?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),e.length===0&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&Vj(this)),a!==null&&this.emit("data",a),a};function k2t(t,e){if(zr("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?Lk(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,_2e(t)))}}function Lk(t){var e=t._readableState;zr("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(zr("emitReadable",e.flowing),e.emittedReadable=!0,process.nextTick(_2e,t))}function _2e(t){var e=t._readableState;zr("emitReadable_",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,Xj(t)}function Jj(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(F2t,t,e))}function F2t(t,e){for(;!e.reading&&!e.ended&&(e.length<e.highWaterMark||e.flowing&&e.length===0);){var r=e.length;if(zr("maybeReadMore read 0"),t.read(0),r===e.length)break}e.readingMore=!1}pn.prototype._read=function(t){lv(this,new S2t("_read()"))};pn.prototype.pipe=function(t,e){var r=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=t;break;case 1:o.pipes=[o.pipes,t];break;default:o.pipes.push(t);break}o.pipesCount+=1,zr("pipe count=%d opts=%j",o.pipesCount,e);var a=(!e||e.end!==!1)&&t!==process.stdout&&t!==process.stderr,n=a?A:R;o.endEmitted?process.nextTick(n):r.once("end",n),t.on("unpipe",u);function u(L,_){zr("onunpipe"),L===r&&_&&_.hasUnpiped===!1&&(_.hasUnpiped=!0,C())}function A(){zr("onend"),t.end()}var p=R2t(r);t.on("drain",p);var h=!1;function C(){zr("cleanup"),t.removeListener("close",b),t.removeListener("finish",E),t.removeListener("drain",p),t.removeListener("error",v),t.removeListener("unpipe",u),r.removeListener("end",A),r.removeListener("end",R),r.removeListener("data",w),h=!0,o.awaitDrain&&(!t._writableState||t._writableState.needDrain)&&p()}r.on("data",w);function w(L){zr("ondata");var _=t.write(L);zr("dest.write",_),_===!1&&((o.pipesCount===1&&o.pipes===t||o.pipesCount>1&&j2e(o.pipes,t)!==-1)&&!h&&(zr("false write response, pause",o.awaitDrain),o.awaitDrain++),r.pause())}function v(L){zr("onerror",L),R(),t.removeListener("error",v),O2e(t,"error")===0&&lv(t,L)}x2t(t,"error",v);function b(){t.removeListener("finish",E),R()}t.once("close",b);function E(){zr("onfinish"),t.removeListener("close",b),R()}t.once("finish",E);function R(){zr("unpipe"),r.unpipe(t)}return t.emit("pipe",r),o.flowing||(zr("pipe resume"),r.resume()),t};function R2t(t){return function(){var r=t._readableState;zr("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&O2e(t,"data")&&(r.flowing=!0,Xj(t))}}pn.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r),this);if(!t){var o=e.pipes,a=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var n=0;n<a;n++)o[n].emit("unpipe",this,{hasUnpiped:!1});return this}var u=j2e(e.pipes,t);return u===-1?this:(e.pipes.splice(u,1),e.pipesCount-=1,e.pipesCount===1&&(e.pipes=e.pipes[0]),t.emit("unpipe",this,r),this)};pn.prototype.on=function(t,e){var r=cv.prototype.on.call(this,t,e),o=this._readableState;return t==="data"?(o.readableListening=this.listenerCount("readable")>0,o.flowing!==!1&&this.resume()):t==="readable"&&!o.endEmitted&&!o.readableListening&&(o.readableListening=o.needReadable=!0,o.flowing=!1,o.emittedReadable=!1,zr("on readable",o.length,o.reading),o.length?Lk(this):o.reading||process.nextTick(T2t,this)),r};pn.prototype.addListener=pn.prototype.on;pn.prototype.removeListener=function(t,e){var r=cv.prototype.removeListener.call(this,t,e);return t==="readable"&&process.nextTick(H2e,this),r};pn.prototype.removeAllListeners=function(t){var e=cv.prototype.removeAllListeners.apply(this,arguments);return(t==="readable"||t===void 0)&&process.nextTick(H2e,this),e};function H2e(t){var e=t._readableState;e.readableListening=t.listenerCount("readable")>0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function T2t(t){zr("readable nexttick read 0"),t.read(0)}pn.prototype.resume=function(){var t=this._readableState;return t.flowing||(zr("resume"),t.flowing=!t.readableListening,N2t(this,t)),t.paused=!1,this};function N2t(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(L2t,t,e))}function L2t(t,e){zr("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),Xj(t),e.flowing&&!e.reading&&t.read(0)}pn.prototype.pause=function(){return zr("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(zr("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function Xj(t){var e=t._readableState;for(zr("flow",e.flowing);e.flowing&&t.read()!==null;);}pn.prototype.wrap=function(t){var e=this,r=this._readableState,o=!1;t.on("end",function(){if(zr("wrapped end"),r.decoder&&!r.ended){var u=r.decoder.end();u&&u.length&&e.push(u)}e.push(null)}),t.on("data",function(u){if(zr("wrapped data"),r.decoder&&(u=r.decoder.write(u)),!(r.objectMode&&u==null)&&!(!r.objectMode&&(!u||!u.length))){var A=e.push(u);A||(o=!0,t.pause())}});for(var a in t)this[a]===void 0&&typeof t[a]=="function"&&(this[a]=function(A){return function(){return t[A].apply(t,arguments)}}(a));for(var n=0;n<Yj.length;n++)t.on(Yj[n],this.emit.bind(this,Yj[n]));return this._read=function(u){zr("wrapped _read",u),o&&(o=!1,t.resume())},this};typeof Symbol=="function"&&(pn.prototype[Symbol.asyncIterator]=function(){return Gj===void 0&&(Gj=Q2e()),Gj(this)});Object.defineProperty(pn.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}});Object.defineProperty(pn.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}});Object.defineProperty(pn.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(e){this._readableState&&(this._readableState.flowing=e)}});pn._fromList=q2e;Object.defineProperty(pn.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}});function q2e(t,e){if(e.length===0)return null;var r;return e.objectMode?r=e.buffer.shift():!t||t>=e.length?(e.decoder?r=e.buffer.join(""):e.buffer.length===1?r=e.buffer.first():r=e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r}function Vj(t){var e=t._readableState;zr("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(O2t,e,t))}function O2t(t,e){if(zr("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&t.length===0&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}typeof Symbol=="function"&&(pn.from=function(t,e){return Wj===void 0&&(Wj=T2e()),Wj(pn,t,e)});function j2e(t,e){for(var r=0,o=t.length;r<o;r++)if(t[r]===e)return r;return-1}});var Zj=U((LZt,Y2e)=>{"use strict";Y2e.exports=ap;var Ok=bh().codes,M2t=Ok.ERR_METHOD_NOT_IMPLEMENTED,U2t=Ok.ERR_MULTIPLE_CALLBACK,_2t=Ok.ERR_TRANSFORM_ALREADY_TRANSFORMING,H2t=Ok.ERR_TRANSFORM_WITH_LENGTH_0,Mk=Im();Qh()(ap,Mk);function q2t(t,e){var r=this._transformState;r.transforming=!1;var o=r.writecb;if(o===null)return this.emit("error",new U2t);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),o(t);var a=this._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}function ap(t){if(!(this instanceof ap))return new ap(t);Mk.call(this,t),this._transformState={afterTransform:q2t.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,t&&(typeof t.transform=="function"&&(this._transform=t.transform),typeof t.flush=="function"&&(this._flush=t.flush)),this.on("prefinish",j2t)}function j2t(){var t=this;typeof this._flush=="function"&&!this._readableState.destroyed?this._flush(function(e,r){W2e(t,e,r)}):W2e(this,null,null)}ap.prototype.push=function(t,e){return this._transformState.needTransform=!1,Mk.prototype.push.call(this,t,e)};ap.prototype._transform=function(t,e,r){r(new M2t("_transform()"))};ap.prototype._write=function(t,e,r){var o=this._transformState;if(o.writecb=r,o.writechunk=t,o.writeencoding=e,!o.transforming){var a=this._readableState;(o.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}};ap.prototype._read=function(t){var e=this._transformState;e.writechunk!==null&&!e.transforming?(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform)):e.needTransform=!0};ap.prototype._destroy=function(t,e){Mk.prototype._destroy.call(this,t,function(r){e(r)})};function W2e(t,e,r){if(e)return t.emit("error",e);if(r!=null&&t.push(r),t._writableState.length)throw new H2t;if(t._transformState.transforming)throw new _2t;return t.push(null)}});var J2e=U((OZt,V2e)=>{"use strict";V2e.exports=uv;var K2e=Zj();Qh()(uv,K2e);function uv(t){if(!(this instanceof uv))return new uv(t);K2e.call(this,t)}uv.prototype._transform=function(t,e,r){r(null,t)}});var eBe=U((MZt,$2e)=>{"use strict";var $j;function G2t(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var Z2e=bh().codes,W2t=Z2e.ERR_MISSING_ARGS,Y2t=Z2e.ERR_STREAM_DESTROYED;function z2e(t){if(t)throw t}function K2t(t){return t.setHeader&&typeof t.abort=="function"}function V2t(t,e,r,o){o=G2t(o);var a=!1;t.on("close",function(){a=!0}),$j===void 0&&($j=kk()),$j(t,{readable:e,writable:r},function(u){if(u)return o(u);a=!0,o()});var n=!1;return function(u){if(!a&&!n){if(n=!0,K2t(t))return t.abort();if(typeof t.destroy=="function")return t.destroy();o(u||new Y2t("pipe"))}}}function X2e(t){t()}function J2t(t,e){return t.pipe(e)}function z2t(t){return!t.length||typeof t[t.length-1]!="function"?z2e:t.pop()}function X2t(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];var o=z2t(e);if(Array.isArray(e[0])&&(e=e[0]),e.length<2)throw new W2t("streams");var a,n=e.map(function(u,A){var p=A<e.length-1,h=A>0;return V2t(u,p,h,function(C){a||(a=C),C&&n.forEach(X2e),!p&&(n.forEach(X2e),o(a))})});return e.reduce(J2t)}$2e.exports=X2t});var KC=U((pc,fv)=>{var Av=Ie("stream");process.env.READABLE_STREAM==="disable"&&Av?(fv.exports=Av.Readable,Object.assign(fv.exports,Av),fv.exports.Stream=Av):(pc=fv.exports=Oj(),pc.Stream=Av||pc,pc.Readable=pc,pc.Writable=Tj(),pc.Duplex=Im(),pc.Transform=Zj(),pc.PassThrough=J2e(),pc.finished=kk(),pc.pipeline=eBe())});var nBe=U((UZt,rBe)=>{"use strict";var{Buffer:hu}=Ie("buffer"),tBe=Symbol.for("BufferList");function Zn(t){if(!(this instanceof Zn))return new Zn(t);Zn._init.call(this,t)}Zn._init=function(e){Object.defineProperty(this,tBe,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};Zn.prototype._new=function(e){return new Zn(e)};Zn.prototype._offset=function(e){if(e===0)return[0,0];let r=0;for(let o=0;o<this._bufs.length;o++){let a=r+this._bufs[o].length;if(e<a||o===this._bufs.length-1)return[o,e-r];r=a}};Zn.prototype._reverseOffset=function(t){let e=t[0],r=t[1];for(let o=0;o<e;o++)r+=this._bufs[o].length;return r};Zn.prototype.get=function(e){if(e>this.length||e<0)return;let r=this._offset(e);return this._bufs[r[0]][r[1]]};Zn.prototype.slice=function(e,r){return typeof e=="number"&&e<0&&(e+=this.length),typeof r=="number"&&r<0&&(r+=this.length),this.copy(null,0,e,r)};Zn.prototype.copy=function(e,r,o,a){if((typeof o!="number"||o<0)&&(o=0),(typeof a!="number"||a>this.length)&&(a=this.length),o>=this.length||a<=0)return e||hu.alloc(0);let n=!!e,u=this._offset(o),A=a-o,p=A,h=n&&r||0,C=u[1];if(o===0&&a===this.length){if(!n)return this._bufs.length===1?this._bufs[0]:hu.concat(this._bufs,this.length);for(let w=0;w<this._bufs.length;w++)this._bufs[w].copy(e,h),h+=this._bufs[w].length;return e}if(p<=this._bufs[u[0]].length-C)return n?this._bufs[u[0]].copy(e,r,C,C+p):this._bufs[u[0]].slice(C,C+p);n||(e=hu.allocUnsafe(A));for(let w=u[0];w<this._bufs.length;w++){let v=this._bufs[w].length-C;if(p>v)this._bufs[w].copy(e,h,C),h+=v;else{this._bufs[w].copy(e,h,C,C+p),h+=v;break}p-=v,C&&(C=0)}return e.length>h?e.slice(0,h):e};Zn.prototype.shallowSlice=function(e,r){if(e=e||0,r=typeof r!="number"?this.length:r,e<0&&(e+=this.length),r<0&&(r+=this.length),e===r)return this._new();let o=this._offset(e),a=this._offset(r),n=this._bufs.slice(o[0],a[0]+1);return a[1]===0?n.pop():n[n.length-1]=n[n.length-1].slice(0,a[1]),o[1]!==0&&(n[0]=n[0].slice(o[1])),this._new(n)};Zn.prototype.toString=function(e,r,o){return this.slice(r,o).toString(e)};Zn.prototype.consume=function(e){if(e=Math.trunc(e),Number.isNaN(e)||e<=0)return this;for(;this._bufs.length;)if(e>=this._bufs[0].length)e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}return this};Zn.prototype.duplicate=function(){let e=this._new();for(let r=0;r<this._bufs.length;r++)e.append(this._bufs[r]);return e};Zn.prototype.append=function(e){if(e==null)return this;if(e.buffer)this._appendBuffer(hu.from(e.buffer,e.byteOffset,e.byteLength));else if(Array.isArray(e))for(let r=0;r<e.length;r++)this.append(e[r]);else if(this._isBufferList(e))for(let r=0;r<e._bufs.length;r++)this.append(e._bufs[r]);else typeof e=="number"&&(e=e.toString()),this._appendBuffer(hu.from(e));return this};Zn.prototype._appendBuffer=function(e){this._bufs.push(e),this.length+=e.length};Zn.prototype.indexOf=function(t,e,r){if(r===void 0&&typeof e=="string"&&(r=e,e=void 0),typeof t=="function"||Array.isArray(t))throw new TypeError('The "value" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof t=="number"?t=hu.from([t]):typeof t=="string"?t=hu.from(t,r):this._isBufferList(t)?t=t.slice():Array.isArray(t.buffer)?t=hu.from(t.buffer,t.byteOffset,t.byteLength):hu.isBuffer(t)||(t=hu.from(t)),e=Number(e||0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;let o=this._offset(e),a=o[0],n=o[1];for(;a<this._bufs.length;a++){let u=this._bufs[a];for(;n<u.length;)if(u.length-n>=t.length){let p=u.indexOf(t,n);if(p!==-1)return this._reverseOffset([a,p]);n=u.length-t.length+1}else{let p=this._reverseOffset([a,n]);if(this._match(p,t))return p;n++}n=0}return-1};Zn.prototype._match=function(t,e){if(this.length-t<e.length)return!1;for(let r=0;r<e.length;r++)if(this.get(t+r)!==e[r])return!1;return!0};(function(){let t={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(let e in t)(function(r){t[r]===null?Zn.prototype[r]=function(o,a){return this.slice(o,o+a)[r](0,a)}:Zn.prototype[r]=function(o=0){return this.slice(o,o+t[r])[r](0)}})(e)})();Zn.prototype._isBufferList=function(e){return e instanceof Zn||Zn.isBufferList(e)};Zn.isBufferList=function(e){return e!=null&&e[tBe]};rBe.exports=Zn});var iBe=U((_Zt,Uk)=>{"use strict";var eG=KC().Duplex,Z2t=Qh(),pv=nBe();function Oo(t){if(!(this instanceof Oo))return new Oo(t);if(typeof t=="function"){this._callback=t;let e=function(o){this._callback&&(this._callback(o),this._callback=null)}.bind(this);this.on("pipe",function(o){o.on("error",e)}),this.on("unpipe",function(o){o.removeListener("error",e)}),t=null}pv._init.call(this,t),eG.call(this)}Z2t(Oo,eG);Object.assign(Oo.prototype,pv.prototype);Oo.prototype._new=function(e){return new Oo(e)};Oo.prototype._write=function(e,r,o){this._appendBuffer(e),typeof o=="function"&&o()};Oo.prototype._read=function(e){if(!this.length)return this.push(null);e=Math.min(e,this.length),this.push(this.slice(0,e)),this.consume(e)};Oo.prototype.end=function(e){eG.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};Oo.prototype._destroy=function(e,r){this._bufs.length=0,this.length=0,r(e)};Oo.prototype._isBufferList=function(e){return e instanceof Oo||e instanceof pv||Oo.isBufferList(e)};Oo.isBufferList=pv.isBufferList;Uk.exports=Oo;Uk.exports.BufferListStream=Oo;Uk.exports.BufferList=pv});var nG=U(JC=>{var $2t=Buffer.alloc,eBt="0000000000000000000",tBt="7777777777777777777",sBe="0".charCodeAt(0),oBe=Buffer.from("ustar\0","binary"),rBt=Buffer.from("00","binary"),nBt=Buffer.from("ustar ","binary"),iBt=Buffer.from(" \0","binary"),sBt=parseInt("7777",8),hv=257,rG=263,oBt=function(t,e,r){return typeof t!="number"?r:(t=~~t,t>=e?e:t>=0||(t+=e,t>=0)?t:0)},aBt=function(t){switch(t){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null},lBt=function(t){switch(t){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0},aBe=function(t,e,r,o){for(;r<o;r++)if(t[r]===e)return r;return o},lBe=function(t){for(var e=256,r=0;r<148;r++)e+=t[r];for(var o=156;o<512;o++)e+=t[o];return e},Nh=function(t,e){return t=t.toString(8),t.length>e?tBt.slice(0,e)+" ":eBt.slice(0,e-t.length)+t+" "};function cBt(t){var e;if(t[0]===128)e=!0;else if(t[0]===255)e=!1;else return null;for(var r=[],o=t.length-1;o>0;o--){var a=t[o];e?r.push(a):r.push(255-a)}var n=0,u=r.length;for(o=0;o<u;o++)n+=r[o]*Math.pow(256,o);return e?n:-1*n}var Lh=function(t,e,r){if(t=t.slice(e,e+r),e=0,t[e]&128)return cBt(t);for(;e<t.length&&t[e]===32;)e++;for(var o=oBt(aBe(t,32,e,t.length),t.length,t.length);e<o&&t[e]===0;)e++;return o===e?0:parseInt(t.slice(e,o).toString(),8)},VC=function(t,e,r,o){return t.slice(e,aBe(t,0,e,e+r)).toString(o)},tG=function(t){var e=Buffer.byteLength(t),r=Math.floor(Math.log(e)/Math.log(10))+1;return e+r>=Math.pow(10,r)&&r++,e+r+t};JC.decodeLongPath=function(t,e){return VC(t,0,t.length,e)};JC.encodePax=function(t){var e="";t.name&&(e+=tG(" path="+t.name+` |
380 | `)),t.linkname&&(e+=Kj(" linkpath="+t.linkname+` | 380 | `)),t.linkname&&(e+=tG(" linkpath="+t.linkname+` |
381 | `));var r=t.pax;if(r)for(var o in r)e+=Kj(" "+o+"="+r[o]+` | 381 | `));var r=t.pax;if(r)for(var o in r)e+=tG(" "+o+"="+r[o]+` |
382 | `);return Buffer.from(e)};WC.decodePax=function(t){for(var e={};t.length;){for(var r=0;r<t.length&&t[r]!==32;)r++;var o=parseInt(t.slice(0,r).toString(),10);if(!o)return e;var a=t.slice(r+1,o-1).toString(),n=a.indexOf("=");if(n===-1)return e;e[a.slice(0,n)]=a.slice(n+1),t=t.slice(o)}return e};WC.encode=function(t){var e=T2t(512),r=t.name,o="";if(t.typeflag===5&&r[r.length-1]!=="/"&&(r+="/"),Buffer.byteLength(r)!==r.length)return null;for(;Buffer.byteLength(r)>100;){var a=r.indexOf("/");if(a===-1)return null;o+=o?"/"+r.slice(0,a):r.slice(0,a),r=r.slice(a+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(o)>155||t.linkname&&Buffer.byteLength(t.linkname)>100?null:(e.write(r),e.write(kh(t.mode&_2t,6),100),e.write(kh(t.uid,6),108),e.write(kh(t.gid,6),116),e.write(kh(t.size,11),124),e.write(kh(t.mtime.getTime()/1e3|0,11),136),e[156]=Y2e+j2t(t.type),t.linkname&&e.write(t.linkname,157),K2e.copy(e,sv),O2t.copy(e,Jj),t.uname&&e.write(t.uname,265),t.gname&&e.write(t.gname,297),e.write(kh(t.devmajor||0,6),329),e.write(kh(t.devminor||0,6),337),o&&e.write(o,345),e.write(kh(V2e(e),6),148),e)};WC.decode=function(t,e,r){var o=t[156]===0?0:t[156]-Y2e,a=GC(t,0,100,e),n=Fh(t,100,8),u=Fh(t,108,8),A=Fh(t,116,8),p=Fh(t,124,12),h=Fh(t,136,12),C=q2t(o),w=t[157]===0?null:GC(t,157,100,e),v=GC(t,265,32),b=GC(t,297,32),E=Fh(t,329,8),R=Fh(t,337,8),L=V2e(t);if(L===8*32)return null;if(L!==Fh(t,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(K2e.compare(t,sv,sv+6)===0)t[345]&&(a=GC(t,345,155,e)+"/"+a);else if(!(M2t.compare(t,sv,sv+6)===0&&U2t.compare(t,Jj,Jj+2)===0)){if(!r)throw new Error("Invalid tar header: unknown format.")}return o===0&&a&&a[a.length-1]==="/"&&(o=5),{name:a,mode:n,uid:u,gid:A,size:p,mtime:new Date(1e3*h),type:C,linkname:w,uname:v,gname:b,devmajor:E,devminor:R}}});var rBe=U((PZt,tBe)=>{var X2e=Ie("util"),W2t=W2e(),ov=Vj(),Z2e=jC().Writable,$2e=jC().PassThrough,eBe=function(){},z2e=function(t){return t&=511,t&&512-t},Y2t=function(t,e){var r=new Nk(t,e);return r.end(),r},K2t=function(t,e){return e.path&&(t.name=e.path),e.linkpath&&(t.linkname=e.linkpath),e.size&&(t.size=parseInt(e.size,10)),t.pax=e,t},Nk=function(t,e){this._parent=t,this.offset=e,$2e.call(this,{autoDestroy:!1})};X2e.inherits(Nk,$2e);Nk.prototype.destroy=function(t){this._parent.destroy(t)};var sp=function(t){if(!(this instanceof sp))return new sp(t);Z2e.call(this,t),t=t||{},this._offset=0,this._buffer=W2t(),this._missing=0,this._partial=!1,this._onparse=eBe,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var e=this,r=e._buffer,o=function(){e._continue()},a=function(v){if(e._locked=!1,v)return e.destroy(v);e._stream||o()},n=function(){e._stream=null;var v=z2e(e._header.size);v?e._parse(v,u):e._parse(512,w),e._locked||o()},u=function(){e._buffer.consume(z2e(e._header.size)),e._parse(512,w),o()},A=function(){var v=e._header.size;e._paxGlobal=ov.decodePax(r.slice(0,v)),r.consume(v),n()},p=function(){var v=e._header.size;e._pax=ov.decodePax(r.slice(0,v)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),r.consume(v),n()},h=function(){var v=e._header.size;this._gnuLongPath=ov.decodeLongPath(r.slice(0,v),t.filenameEncoding),r.consume(v),n()},C=function(){var v=e._header.size;this._gnuLongLinkPath=ov.decodeLongPath(r.slice(0,v),t.filenameEncoding),r.consume(v),n()},w=function(){var v=e._offset,b;try{b=e._header=ov.decode(r.slice(0,512),t.filenameEncoding,t.allowUnknownFormat)}catch(E){e.emit("error",E)}if(r.consume(512),!b){e._parse(512,w),o();return}if(b.type==="gnu-long-path"){e._parse(b.size,h),o();return}if(b.type==="gnu-long-link-path"){e._parse(b.size,C),o();return}if(b.type==="pax-global-header"){e._parse(b.size,A),o();return}if(b.type==="pax-header"){e._parse(b.size,p),o();return}if(e._gnuLongPath&&(b.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(b.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=b=K2t(b,e._pax),e._pax=null),e._locked=!0,!b.size||b.type==="directory"){e._parse(512,w),e.emit("entry",b,Y2t(e,v),a);return}e._stream=new Nk(e,v),e.emit("entry",b,e._stream,a),e._parse(b.size,n),o()};this._onheader=w,this._parse(512,w)};X2e.inherits(sp,Z2e);sp.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.emit("close"))};sp.prototype._parse=function(t,e){this._destroyed||(this._offset+=t,this._missing=t,e===this._onheader&&(this._partial=!1),this._onparse=e)};sp.prototype._continue=function(){if(!this._destroyed){var t=this._cb;this._cb=eBe,this._overflow?this._write(this._overflow,void 0,t):t()}};sp.prototype._write=function(t,e,r){if(!this._destroyed){var o=this._stream,a=this._buffer,n=this._missing;if(t.length&&(this._partial=!0),t.length<n)return this._missing-=t.length,this._overflow=null,o?o.write(t,r):(a.append(t),r());this._cb=r,this._missing=0;var u=null;t.length>n&&(u=t.slice(n),t=t.slice(0,n)),o?o.end(t):a.append(t),this._overflow=u,this._onparse()}};sp.prototype._final=function(t){if(this._partial)return this.destroy(new Error("Unexpected end of data"));t()};tBe.exports=sp});var iBe=U((xZt,nBe)=>{nBe.exports=Ie("fs").constants||Ie("constants")});var cBe=U((bZt,lBe)=>{var YC=iBe(),sBe=GM(),Ok=Sh(),J2t=Buffer.alloc,oBe=jC().Readable,KC=jC().Writable,V2t=Ie("string_decoder").StringDecoder,Lk=Vj(),z2t=parseInt("755",8),X2t=parseInt("644",8),aBe=J2t(1024),Xj=function(){},zj=function(t,e){e&=511,e&&t.push(aBe.slice(0,512-e))};function Z2t(t){switch(t&YC.S_IFMT){case YC.S_IFBLK:return"block-device";case YC.S_IFCHR:return"character-device";case YC.S_IFDIR:return"directory";case YC.S_IFIFO:return"fifo";case YC.S_IFLNK:return"symlink"}return"file"}var Mk=function(t){KC.call(this),this.written=0,this._to=t,this._destroyed=!1};Ok(Mk,KC);Mk.prototype._write=function(t,e,r){if(this.written+=t.length,this._to.push(t))return r();this._to._drain=r};Mk.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var Uk=function(){KC.call(this),this.linkname="",this._decoder=new V2t("utf-8"),this._destroyed=!1};Ok(Uk,KC);Uk.prototype._write=function(t,e,r){this.linkname+=this._decoder.write(t),r()};Uk.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var av=function(){KC.call(this),this._destroyed=!1};Ok(av,KC);av.prototype._write=function(t,e,r){r(new Error("No body allowed for this entry"))};av.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var CA=function(t){if(!(this instanceof CA))return new CA(t);oBe.call(this,t),this._drain=Xj,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};Ok(CA,oBe);CA.prototype.entry=function(t,e,r){if(this._stream)throw new Error("already piping an entry");if(!(this._finalized||this._destroyed)){typeof e=="function"&&(r=e,e=null),r||(r=Xj);var o=this;if((!t.size||t.type==="symlink")&&(t.size=0),t.type||(t.type=Z2t(t.mode)),t.mode||(t.mode=t.type==="directory"?z2t:X2t),t.uid||(t.uid=0),t.gid||(t.gid=0),t.mtime||(t.mtime=new Date),typeof e=="string"&&(e=Buffer.from(e)),Buffer.isBuffer(e)){t.size=e.length,this._encode(t);var a=this.push(e);return zj(o,t.size),a?process.nextTick(r):this._drain=r,new av}if(t.type==="symlink"&&!t.linkname){var n=new Uk;return sBe(n,function(A){if(A)return o.destroy(),r(A);t.linkname=n.linkname,o._encode(t),r()}),n}if(this._encode(t),t.type!=="file"&&t.type!=="contiguous-file")return process.nextTick(r),new av;var u=new Mk(this);return this._stream=u,sBe(u,function(A){if(o._stream=null,A)return o.destroy(),r(A);if(u.written!==t.size)return o.destroy(),r(new Error("size mismatch"));zj(o,t.size),o._finalizing&&o.finalize(),r()}),u}};CA.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(aBe),this.push(null))};CA.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.destroy&&this._stream.destroy())};CA.prototype._encode=function(t){if(!t.pax){var e=Lk.encode(t);if(e){this.push(e);return}}this._encodePax(t)};CA.prototype._encodePax=function(t){var e=Lk.encodePax({name:t.name,linkname:t.linkname,pax:t.pax}),r={name:"PaxHeader",mode:t.mode,uid:t.uid,gid:t.gid,size:e.length,mtime:t.mtime,type:"pax-header",linkname:t.linkname&&"PaxHeader",uname:t.uname,gname:t.gname,devmajor:t.devmajor,devminor:t.devminor};this.push(Lk.encode(r)),this.push(e),zj(this,e.length),r.size=t.size,r.type=t.type,this.push(Lk.encode(r))};CA.prototype._read=function(t){var e=this._drain;this._drain=Xj,e()};lBe.exports=CA});var uBe=U(Zj=>{Zj.extract=rBe();Zj.pack=cBe()});var wBe=U((XZt,IBe)=>{"use strict";var Im=class{constructor(e,r,o){this.__specs=e||{},Object.keys(this.__specs).forEach(a=>{if(typeof this.__specs[a]=="string"){let n=this.__specs[a],u=this.__specs[n];if(u){let A=u.aliases||[];A.push(a,n),u.aliases=[...new Set(A)],this.__specs[a]=u}else throw new Error(`Alias refers to invalid key: ${n} -> ${a}`)}}),this.__opts=r||{},this.__providers=EBe(o.filter(a=>a!=null&&typeof a=="object")),this.__isFiggyPudding=!0}get(e){return i9(this,e,!0)}get[Symbol.toStringTag](){return"FiggyPudding"}forEach(e,r=this){for(let[o,a]of this.entries())e.call(r,a,o,this)}toJSON(){let e={};return this.forEach((r,o)=>{e[o]=r}),e}*entries(e){for(let o of Object.keys(this.__specs))yield[o,this.get(o)];let r=e||this.__opts.other;if(r){let o=new Set;for(let a of this.__providers){let n=a.entries?a.entries(r):pBt(a);for(let[u,A]of n)r(u)&&!o.has(u)&&(o.add(u),yield[u,A])}}}*[Symbol.iterator](){for(let[e,r]of this.entries())yield[e,r]}*keys(){for(let[e]of this.entries())yield e}*values(){for(let[,e]of this.entries())yield e}concat(...e){return new Proxy(new Im(this.__specs,this.__opts,EBe(this.__providers).concat(e)),CBe)}};try{let t=Ie("util");Im.prototype[t.inspect.custom]=function(e,r){return this[Symbol.toStringTag]+" "+t.inspect(this.toJSON(),r)}}catch{}function ABt(t){throw Object.assign(new Error(`invalid config key requested: ${t}`),{code:"EBADKEY"})}function i9(t,e,r){let o=t.__specs[e];if(r&&!o&&(!t.__opts.other||!t.__opts.other(e)))ABt(e);else{o||(o={});let a;for(let n of t.__providers){if(a=yBe(e,n),a===void 0&&o.aliases&&o.aliases.length){for(let u of o.aliases)if(u!==e&&(a=yBe(u,n),a!==void 0))break}if(a!==void 0)break}return a===void 0&&o.default!==void 0?typeof o.default=="function"?o.default(t):o.default:a}}function yBe(t,e){let r;return e.__isFiggyPudding?r=i9(e,t,!1):typeof e.get=="function"?r=e.get(t):r=e[t],r}var CBe={has(t,e){return e in t.__specs&&i9(t,e,!1)!==void 0},ownKeys(t){return Object.keys(t.__specs)},get(t,e){return typeof e=="symbol"||e.slice(0,2)==="__"||e in Im.prototype?t[e]:t.get(e)},set(t,e,r){if(typeof e=="symbol"||e.slice(0,2)==="__")return t[e]=r,!0;throw new Error("figgyPudding options cannot be modified. Use .concat() instead.")},deleteProperty(){throw new Error("figgyPudding options cannot be deleted. Use .concat() and shadow them instead.")}};IBe.exports=fBt;function fBt(t,e){function r(...o){return new Proxy(new Im(t,e,o),CBe)}return r}function EBe(t){let e=[];return t.forEach(r=>e.unshift(r)),e}function pBt(t){return Object.keys(t).map(e=>[e,t[e]])}});var DBe=U((ZZt,BA)=>{"use strict";var cv=Ie("crypto"),hBt=wBe(),gBt=Ie("stream").Transform,BBe=["sha256","sha384","sha512"],dBt=/^[a-z0-9+/]+(?:=?=?)$/i,mBt=/^([^-]+)-([^?]+)([?\S*]*)$/,yBt=/^([^-]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)*$/,EBt=/^[\x21-\x7E]+$/,ea=hBt({algorithms:{default:["sha512"]},error:{default:!1},integrity:{},options:{default:[]},pickAlgorithm:{default:()=>PBt},Promise:{default:()=>Promise},sep:{default:" "},single:{default:!1},size:{},strict:{default:!1}}),Th=class{get isHash(){return!0}constructor(e,r){r=ea(r);let o=!!r.strict;this.source=e.trim();let a=this.source.match(o?yBt:mBt);if(!a||o&&!BBe.some(u=>u===a[1]))return;this.algorithm=a[1],this.digest=a[2];let n=a[3];this.options=n?n.slice(1).split("?"):[]}hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toString("hex")}toJSON(){return this.toString()}toString(e){if(e=ea(e),e.strict&&!(BBe.some(o=>o===this.algorithm)&&this.digest.match(dBt)&&(this.options||[]).every(o=>o.match(EBt))))return"";let r=this.options&&this.options.length?`?${this.options.join("?")}`:"";return`${this.algorithm}-${this.digest}${r}`}},wm=class{get isIntegrity(){return!0}toJSON(){return this.toString()}toString(e){e=ea(e);let r=e.sep||" ";return e.strict&&(r=r.replace(/\S+/g," ")),Object.keys(this).map(o=>this[o].map(a=>Th.prototype.toString.call(a,e)).filter(a=>a.length).join(r)).filter(o=>o.length).join(r)}concat(e,r){r=ea(r);let o=typeof e=="string"?e:lv(e,r);return wA(`${this.toString(r)} ${o}`,r)}hexDigest(){return wA(this,{single:!0}).hexDigest()}match(e,r){r=ea(r);let o=wA(e,r),a=o.pickAlgorithm(r);return this[a]&&o[a]&&this[a].find(n=>o[a].find(u=>n.digest===u.digest))||!1}pickAlgorithm(e){e=ea(e);let r=e.pickAlgorithm,o=Object.keys(this);if(!o.length)throw new Error(`No algorithms available for ${JSON.stringify(this.toString())}`);return o.reduce((a,n)=>r(a,n)||a)}};BA.exports.parse=wA;function wA(t,e){if(e=ea(e),typeof t=="string")return s9(t,e);if(t.algorithm&&t.digest){let r=new wm;return r[t.algorithm]=[t],s9(lv(r,e),e)}else return s9(lv(t,e),e)}function s9(t,e){return e.single?new Th(t,e):t.trim().split(/\s+/).reduce((r,o)=>{let a=new Th(o,e);if(a.algorithm&&a.digest){let n=a.algorithm;r[n]||(r[n]=[]),r[n].push(a)}return r},new wm)}BA.exports.stringify=lv;function lv(t,e){return e=ea(e),t.algorithm&&t.digest?Th.prototype.toString.call(t,e):typeof t=="string"?lv(wA(t,e),e):wm.prototype.toString.call(t,e)}BA.exports.fromHex=CBt;function CBt(t,e,r){r=ea(r);let o=r.options&&r.options.length?`?${r.options.join("?")}`:"";return wA(`${e}-${Buffer.from(t,"hex").toString("base64")}${o}`,r)}BA.exports.fromData=IBt;function IBt(t,e){e=ea(e);let r=e.algorithms,o=e.options&&e.options.length?`?${e.options.join("?")}`:"";return r.reduce((a,n)=>{let u=cv.createHash(n).update(t).digest("base64"),A=new Th(`${n}-${u}${o}`,e);if(A.algorithm&&A.digest){let p=A.algorithm;a[p]||(a[p]=[]),a[p].push(A)}return a},new wm)}BA.exports.fromStream=wBt;function wBt(t,e){e=ea(e);let r=e.Promise||Promise,o=o9(e);return new r((a,n)=>{t.pipe(o),t.on("error",n),o.on("error",n);let u;o.on("integrity",A=>{u=A}),o.on("end",()=>a(u)),o.on("data",()=>{})})}BA.exports.checkData=BBt;function BBt(t,e,r){if(r=ea(r),e=wA(e,r),!Object.keys(e).length){if(r.error)throw Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"});return!1}let o=e.pickAlgorithm(r),a=cv.createHash(o).update(t).digest("base64"),n=wA({algorithm:o,digest:a}),u=n.match(e,r);if(u||!r.error)return u;if(typeof r.size=="number"&&t.length!==r.size){let A=new Error(`data size mismatch when checking ${e}. | 382 | `);return Buffer.from(e)};JC.decodePax=function(t){for(var e={};t.length;){for(var r=0;r<t.length&&t[r]!==32;)r++;var o=parseInt(t.slice(0,r).toString(),10);if(!o)return e;var a=t.slice(r+1,o-1).toString(),n=a.indexOf("=");if(n===-1)return e;e[a.slice(0,n)]=a.slice(n+1),t=t.slice(o)}return e};JC.encode=function(t){var e=$2t(512),r=t.name,o="";if(t.typeflag===5&&r[r.length-1]!=="/"&&(r+="/"),Buffer.byteLength(r)!==r.length)return null;for(;Buffer.byteLength(r)>100;){var a=r.indexOf("/");if(a===-1)return null;o+=o?"/"+r.slice(0,a):r.slice(0,a),r=r.slice(a+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(o)>155||t.linkname&&Buffer.byteLength(t.linkname)>100?null:(e.write(r),e.write(Nh(t.mode&sBt,6),100),e.write(Nh(t.uid,6),108),e.write(Nh(t.gid,6),116),e.write(Nh(t.size,11),124),e.write(Nh(t.mtime.getTime()/1e3|0,11),136),e[156]=sBe+lBt(t.type),t.linkname&&e.write(t.linkname,157),oBe.copy(e,hv),rBt.copy(e,rG),t.uname&&e.write(t.uname,265),t.gname&&e.write(t.gname,297),e.write(Nh(t.devmajor||0,6),329),e.write(Nh(t.devminor||0,6),337),o&&e.write(o,345),e.write(Nh(lBe(e),6),148),e)};JC.decode=function(t,e,r){var o=t[156]===0?0:t[156]-sBe,a=VC(t,0,100,e),n=Lh(t,100,8),u=Lh(t,108,8),A=Lh(t,116,8),p=Lh(t,124,12),h=Lh(t,136,12),C=aBt(o),w=t[157]===0?null:VC(t,157,100,e),v=VC(t,265,32),b=VC(t,297,32),E=Lh(t,329,8),R=Lh(t,337,8),L=lBe(t);if(L===8*32)return null;if(L!==Lh(t,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(oBe.compare(t,hv,hv+6)===0)t[345]&&(a=VC(t,345,155,e)+"/"+a);else if(!(nBt.compare(t,hv,hv+6)===0&&iBt.compare(t,rG,rG+2)===0)){if(!r)throw new Error("Invalid tar header: unknown format.")}return o===0&&a&&a[a.length-1]==="/"&&(o=5),{name:a,mode:n,uid:u,gid:A,size:p,mtime:new Date(1e3*h),type:C,linkname:w,uname:v,gname:b,devmajor:E,devminor:R}}});var gBe=U((qZt,hBe)=>{var uBe=Ie("util"),uBt=iBe(),gv=nG(),ABe=KC().Writable,fBe=KC().PassThrough,pBe=function(){},cBe=function(t){return t&=511,t&&512-t},ABt=function(t,e){var r=new _k(t,e);return r.end(),r},fBt=function(t,e){return e.path&&(t.name=e.path),e.linkpath&&(t.linkname=e.linkpath),e.size&&(t.size=parseInt(e.size,10)),t.pax=e,t},_k=function(t,e){this._parent=t,this.offset=e,fBe.call(this,{autoDestroy:!1})};uBe.inherits(_k,fBe);_k.prototype.destroy=function(t){this._parent.destroy(t)};var lp=function(t){if(!(this instanceof lp))return new lp(t);ABe.call(this,t),t=t||{},this._offset=0,this._buffer=uBt(),this._missing=0,this._partial=!1,this._onparse=pBe,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var e=this,r=e._buffer,o=function(){e._continue()},a=function(v){if(e._locked=!1,v)return e.destroy(v);e._stream||o()},n=function(){e._stream=null;var v=cBe(e._header.size);v?e._parse(v,u):e._parse(512,w),e._locked||o()},u=function(){e._buffer.consume(cBe(e._header.size)),e._parse(512,w),o()},A=function(){var v=e._header.size;e._paxGlobal=gv.decodePax(r.slice(0,v)),r.consume(v),n()},p=function(){var v=e._header.size;e._pax=gv.decodePax(r.slice(0,v)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),r.consume(v),n()},h=function(){var v=e._header.size;this._gnuLongPath=gv.decodeLongPath(r.slice(0,v),t.filenameEncoding),r.consume(v),n()},C=function(){var v=e._header.size;this._gnuLongLinkPath=gv.decodeLongPath(r.slice(0,v),t.filenameEncoding),r.consume(v),n()},w=function(){var v=e._offset,b;try{b=e._header=gv.decode(r.slice(0,512),t.filenameEncoding,t.allowUnknownFormat)}catch(E){e.emit("error",E)}if(r.consume(512),!b){e._parse(512,w),o();return}if(b.type==="gnu-long-path"){e._parse(b.size,h),o();return}if(b.type==="gnu-long-link-path"){e._parse(b.size,C),o();return}if(b.type==="pax-global-header"){e._parse(b.size,A),o();return}if(b.type==="pax-header"){e._parse(b.size,p),o();return}if(e._gnuLongPath&&(b.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(b.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=b=fBt(b,e._pax),e._pax=null),e._locked=!0,!b.size||b.type==="directory"){e._parse(512,w),e.emit("entry",b,ABt(e,v),a);return}e._stream=new _k(e,v),e.emit("entry",b,e._stream,a),e._parse(b.size,n),o()};this._onheader=w,this._parse(512,w)};uBe.inherits(lp,ABe);lp.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.emit("close"))};lp.prototype._parse=function(t,e){this._destroyed||(this._offset+=t,this._missing=t,e===this._onheader&&(this._partial=!1),this._onparse=e)};lp.prototype._continue=function(){if(!this._destroyed){var t=this._cb;this._cb=pBe,this._overflow?this._write(this._overflow,void 0,t):t()}};lp.prototype._write=function(t,e,r){if(!this._destroyed){var o=this._stream,a=this._buffer,n=this._missing;if(t.length&&(this._partial=!0),t.length<n)return this._missing-=t.length,this._overflow=null,o?o.write(t,r):(a.append(t),r());this._cb=r,this._missing=0;var u=null;t.length>n&&(u=t.slice(n),t=t.slice(0,n)),o?o.end(t):a.append(t),this._overflow=u,this._onparse()}};lp.prototype._final=function(t){if(this._partial)return this.destroy(new Error("Unexpected end of data"));t()};hBe.exports=lp});var mBe=U((jZt,dBe)=>{dBe.exports=Ie("fs").constants||Ie("constants")});var wBe=U((GZt,IBe)=>{var zC=mBe(),yBe=KM(),qk=Qh(),pBt=Buffer.alloc,EBe=KC().Readable,XC=KC().Writable,hBt=Ie("string_decoder").StringDecoder,Hk=nG(),gBt=parseInt("755",8),dBt=parseInt("644",8),CBe=pBt(1024),sG=function(){},iG=function(t,e){e&=511,e&&t.push(CBe.slice(0,512-e))};function mBt(t){switch(t&zC.S_IFMT){case zC.S_IFBLK:return"block-device";case zC.S_IFCHR:return"character-device";case zC.S_IFDIR:return"directory";case zC.S_IFIFO:return"fifo";case zC.S_IFLNK:return"symlink"}return"file"}var jk=function(t){XC.call(this),this.written=0,this._to=t,this._destroyed=!1};qk(jk,XC);jk.prototype._write=function(t,e,r){if(this.written+=t.length,this._to.push(t))return r();this._to._drain=r};jk.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var Gk=function(){XC.call(this),this.linkname="",this._decoder=new hBt("utf-8"),this._destroyed=!1};qk(Gk,XC);Gk.prototype._write=function(t,e,r){this.linkname+=this._decoder.write(t),r()};Gk.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var dv=function(){XC.call(this),this._destroyed=!1};qk(dv,XC);dv.prototype._write=function(t,e,r){r(new Error("No body allowed for this entry"))};dv.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var BA=function(t){if(!(this instanceof BA))return new BA(t);EBe.call(this,t),this._drain=sG,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};qk(BA,EBe);BA.prototype.entry=function(t,e,r){if(this._stream)throw new Error("already piping an entry");if(!(this._finalized||this._destroyed)){typeof e=="function"&&(r=e,e=null),r||(r=sG);var o=this;if((!t.size||t.type==="symlink")&&(t.size=0),t.type||(t.type=mBt(t.mode)),t.mode||(t.mode=t.type==="directory"?gBt:dBt),t.uid||(t.uid=0),t.gid||(t.gid=0),t.mtime||(t.mtime=new Date),typeof e=="string"&&(e=Buffer.from(e)),Buffer.isBuffer(e)){t.size=e.length,this._encode(t);var a=this.push(e);return iG(o,t.size),a?process.nextTick(r):this._drain=r,new dv}if(t.type==="symlink"&&!t.linkname){var n=new Gk;return yBe(n,function(A){if(A)return o.destroy(),r(A);t.linkname=n.linkname,o._encode(t),r()}),n}if(this._encode(t),t.type!=="file"&&t.type!=="contiguous-file")return process.nextTick(r),new dv;var u=new jk(this);return this._stream=u,yBe(u,function(A){if(o._stream=null,A)return o.destroy(),r(A);if(u.written!==t.size)return o.destroy(),r(new Error("size mismatch"));iG(o,t.size),o._finalizing&&o.finalize(),r()}),u}};BA.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(CBe),this.push(null))};BA.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit("error",t),this.emit("close"),this._stream&&this._stream.destroy&&this._stream.destroy())};BA.prototype._encode=function(t){if(!t.pax){var e=Hk.encode(t);if(e){this.push(e);return}}this._encodePax(t)};BA.prototype._encodePax=function(t){var e=Hk.encodePax({name:t.name,linkname:t.linkname,pax:t.pax}),r={name:"PaxHeader",mode:t.mode,uid:t.uid,gid:t.gid,size:e.length,mtime:t.mtime,type:"pax-header",linkname:t.linkname&&"PaxHeader",uname:t.uname,gname:t.gname,devmajor:t.devmajor,devminor:t.devminor};this.push(Hk.encode(r)),this.push(e),iG(this,e.length),r.size=t.size,r.type=t.type,this.push(Hk.encode(r))};BA.prototype._read=function(t){var e=this._drain;this._drain=sG,e()};IBe.exports=BA});var BBe=U(oG=>{oG.extract=gBe();oG.pack=wBe()});var NBe=U((A$t,TBe)=>{"use strict";var Dm=class{constructor(e,r,o){this.__specs=e||{},Object.keys(this.__specs).forEach(a=>{if(typeof this.__specs[a]=="string"){let n=this.__specs[a],u=this.__specs[n];if(u){let A=u.aliases||[];A.push(a,n),u.aliases=[...new Set(A)],this.__specs[a]=u}else throw new Error(`Alias refers to invalid key: ${n} -> ${a}`)}}),this.__opts=r||{},this.__providers=FBe(o.filter(a=>a!=null&&typeof a=="object")),this.__isFiggyPudding=!0}get(e){return fG(this,e,!0)}get[Symbol.toStringTag](){return"FiggyPudding"}forEach(e,r=this){for(let[o,a]of this.entries())e.call(r,a,o,this)}toJSON(){let e={};return this.forEach((r,o)=>{e[o]=r}),e}*entries(e){for(let o of Object.keys(this.__specs))yield[o,this.get(o)];let r=e||this.__opts.other;if(r){let o=new Set;for(let a of this.__providers){let n=a.entries?a.entries(r):FBt(a);for(let[u,A]of n)r(u)&&!o.has(u)&&(o.add(u),yield[u,A])}}}*[Symbol.iterator](){for(let[e,r]of this.entries())yield[e,r]}*keys(){for(let[e]of this.entries())yield e}*values(){for(let[,e]of this.entries())yield e}concat(...e){return new Proxy(new Dm(this.__specs,this.__opts,FBe(this.__providers).concat(e)),RBe)}};try{let t=Ie("util");Dm.prototype[t.inspect.custom]=function(e,r){return this[Symbol.toStringTag]+" "+t.inspect(this.toJSON(),r)}}catch{}function QBt(t){throw Object.assign(new Error(`invalid config key requested: ${t}`),{code:"EBADKEY"})}function fG(t,e,r){let o=t.__specs[e];if(r&&!o&&(!t.__opts.other||!t.__opts.other(e)))QBt(e);else{o||(o={});let a;for(let n of t.__providers){if(a=kBe(e,n),a===void 0&&o.aliases&&o.aliases.length){for(let u of o.aliases)if(u!==e&&(a=kBe(u,n),a!==void 0))break}if(a!==void 0)break}return a===void 0&&o.default!==void 0?typeof o.default=="function"?o.default(t):o.default:a}}function kBe(t,e){let r;return e.__isFiggyPudding?r=fG(e,t,!1):typeof e.get=="function"?r=e.get(t):r=e[t],r}var RBe={has(t,e){return e in t.__specs&&fG(t,e,!1)!==void 0},ownKeys(t){return Object.keys(t.__specs)},get(t,e){return typeof e=="symbol"||e.slice(0,2)==="__"||e in Dm.prototype?t[e]:t.get(e)},set(t,e,r){if(typeof e=="symbol"||e.slice(0,2)==="__")return t[e]=r,!0;throw new Error("figgyPudding options cannot be modified. Use .concat() instead.")},deleteProperty(){throw new Error("figgyPudding options cannot be deleted. Use .concat() and shadow them instead.")}};TBe.exports=kBt;function kBt(t,e){function r(...o){return new Proxy(new Dm(t,e,o),RBe)}return r}function FBe(t){let e=[];return t.forEach(r=>e.unshift(r)),e}function FBt(t){return Object.keys(t).map(e=>[e,t[e]])}});var MBe=U((f$t,SA)=>{"use strict";var yv=Ie("crypto"),RBt=NBe(),TBt=Ie("stream").Transform,LBe=["sha256","sha384","sha512"],NBt=/^[a-z0-9+/]+(?:=?=?)$/i,LBt=/^([^-]+)-([^?]+)([?\S*]*)$/,OBt=/^([^-]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)*$/,MBt=/^[\x21-\x7E]+$/,ra=RBt({algorithms:{default:["sha512"]},error:{default:!1},integrity:{},options:{default:[]},pickAlgorithm:{default:()=>YBt},Promise:{default:()=>Promise},sep:{default:" "},single:{default:!1},size:{},strict:{default:!1}}),Mh=class{get isHash(){return!0}constructor(e,r){r=ra(r);let o=!!r.strict;this.source=e.trim();let a=this.source.match(o?OBt:LBt);if(!a||o&&!LBe.some(u=>u===a[1]))return;this.algorithm=a[1],this.digest=a[2];let n=a[3];this.options=n?n.slice(1).split("?"):[]}hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toString("hex")}toJSON(){return this.toString()}toString(e){if(e=ra(e),e.strict&&!(LBe.some(o=>o===this.algorithm)&&this.digest.match(NBt)&&(this.options||[]).every(o=>o.match(MBt))))return"";let r=this.options&&this.options.length?`?${this.options.join("?")}`:"";return`${this.algorithm}-${this.digest}${r}`}},Sm=class{get isIntegrity(){return!0}toJSON(){return this.toString()}toString(e){e=ra(e);let r=e.sep||" ";return e.strict&&(r=r.replace(/\S+/g," ")),Object.keys(this).map(o=>this[o].map(a=>Mh.prototype.toString.call(a,e)).filter(a=>a.length).join(r)).filter(o=>o.length).join(r)}concat(e,r){r=ra(r);let o=typeof e=="string"?e:mv(e,r);return DA(`${this.toString(r)} ${o}`,r)}hexDigest(){return DA(this,{single:!0}).hexDigest()}match(e,r){r=ra(r);let o=DA(e,r),a=o.pickAlgorithm(r);return this[a]&&o[a]&&this[a].find(n=>o[a].find(u=>n.digest===u.digest))||!1}pickAlgorithm(e){e=ra(e);let r=e.pickAlgorithm,o=Object.keys(this);if(!o.length)throw new Error(`No algorithms available for ${JSON.stringify(this.toString())}`);return o.reduce((a,n)=>r(a,n)||a)}};SA.exports.parse=DA;function DA(t,e){if(e=ra(e),typeof t=="string")return pG(t,e);if(t.algorithm&&t.digest){let r=new Sm;return r[t.algorithm]=[t],pG(mv(r,e),e)}else return pG(mv(t,e),e)}function pG(t,e){return e.single?new Mh(t,e):t.trim().split(/\s+/).reduce((r,o)=>{let a=new Mh(o,e);if(a.algorithm&&a.digest){let n=a.algorithm;r[n]||(r[n]=[]),r[n].push(a)}return r},new Sm)}SA.exports.stringify=mv;function mv(t,e){return e=ra(e),t.algorithm&&t.digest?Mh.prototype.toString.call(t,e):typeof t=="string"?mv(DA(t,e),e):Sm.prototype.toString.call(t,e)}SA.exports.fromHex=UBt;function UBt(t,e,r){r=ra(r);let o=r.options&&r.options.length?`?${r.options.join("?")}`:"";return DA(`${e}-${Buffer.from(t,"hex").toString("base64")}${o}`,r)}SA.exports.fromData=_Bt;function _Bt(t,e){e=ra(e);let r=e.algorithms,o=e.options&&e.options.length?`?${e.options.join("?")}`:"";return r.reduce((a,n)=>{let u=yv.createHash(n).update(t).digest("base64"),A=new Mh(`${n}-${u}${o}`,e);if(A.algorithm&&A.digest){let p=A.algorithm;a[p]||(a[p]=[]),a[p].push(A)}return a},new Sm)}SA.exports.fromStream=HBt;function HBt(t,e){e=ra(e);let r=e.Promise||Promise,o=hG(e);return new r((a,n)=>{t.pipe(o),t.on("error",n),o.on("error",n);let u;o.on("integrity",A=>{u=A}),o.on("end",()=>a(u)),o.on("data",()=>{})})}SA.exports.checkData=qBt;function qBt(t,e,r){if(r=ra(r),e=DA(e,r),!Object.keys(e).length){if(r.error)throw Object.assign(new Error("No valid integrity hashes to check against"),{code:"EINTEGRITY"});return!1}let o=e.pickAlgorithm(r),a=yv.createHash(o).update(t).digest("base64"),n=DA({algorithm:o,digest:a}),u=n.match(e,r);if(u||!r.error)return u;if(typeof r.size=="number"&&t.length!==r.size){let A=new Error(`data size mismatch when checking ${e}. |
383 | Wanted: ${r.size} | 383 | Wanted: ${r.size} |
384 | Found: ${t.length}`);throw A.code="EBADSIZE",A.found=t.length,A.expected=r.size,A.sri=e,A}else{let A=new Error(`Integrity checksum failed when using ${o}: Wanted ${e}, but got ${n}. (${t.length} bytes)`);throw A.code="EINTEGRITY",A.found=n,A.expected=e,A.algorithm=o,A.sri=e,A}}BA.exports.checkStream=vBt;function vBt(t,e,r){r=ea(r);let o=r.Promise||Promise,a=o9(r.concat({integrity:e}));return new o((n,u)=>{t.pipe(a),t.on("error",u),a.on("error",u);let A;a.on("verified",p=>{A=p}),a.on("end",()=>n(A)),a.on("data",()=>{})})}BA.exports.integrityStream=o9;function o9(t){t=ea(t);let e=t.integrity&&wA(t.integrity,t),r=e&&Object.keys(e).length,o=r&&e.pickAlgorithm(t),a=r&&e[o],n=Array.from(new Set(t.algorithms.concat(o?[o]:[]))),u=n.map(cv.createHash),A=0,p=new gBt({transform(h,C,w){A+=h.length,u.forEach(v=>v.update(h,C)),w(null,h,C)}}).on("end",()=>{let h=t.options&&t.options.length?`?${t.options.join("?")}`:"",C=wA(u.map((v,b)=>`${n[b]}-${v.digest("base64")}${h}`).join(" "),t),w=r&&C.match(e,t);if(typeof t.size=="number"&&A!==t.size){let v=new Error(`stream size mismatch when checking ${e}. | 384 | Found: ${t.length}`);throw A.code="EBADSIZE",A.found=t.length,A.expected=r.size,A.sri=e,A}else{let A=new Error(`Integrity checksum failed when using ${o}: Wanted ${e}, but got ${n}. (${t.length} bytes)`);throw A.code="EINTEGRITY",A.found=n,A.expected=e,A.algorithm=o,A.sri=e,A}}SA.exports.checkStream=jBt;function jBt(t,e,r){r=ra(r);let o=r.Promise||Promise,a=hG(r.concat({integrity:e}));return new o((n,u)=>{t.pipe(a),t.on("error",u),a.on("error",u);let A;a.on("verified",p=>{A=p}),a.on("end",()=>n(A)),a.on("data",()=>{})})}SA.exports.integrityStream=hG;function hG(t){t=ra(t);let e=t.integrity&&DA(t.integrity,t),r=e&&Object.keys(e).length,o=r&&e.pickAlgorithm(t),a=r&&e[o],n=Array.from(new Set(t.algorithms.concat(o?[o]:[]))),u=n.map(yv.createHash),A=0,p=new TBt({transform(h,C,w){A+=h.length,u.forEach(v=>v.update(h,C)),w(null,h,C)}}).on("end",()=>{let h=t.options&&t.options.length?`?${t.options.join("?")}`:"",C=DA(u.map((v,b)=>`${n[b]}-${v.digest("base64")}${h}`).join(" "),t),w=r&&C.match(e,t);if(typeof t.size=="number"&&A!==t.size){let v=new Error(`stream size mismatch when checking ${e}. |
385 | Wanted: ${t.size} | 385 | Wanted: ${t.size} |
386 | Found: ${A}`);v.code="EBADSIZE",v.found=A,v.expected=t.size,v.sri=e,p.emit("error",v)}else if(t.integrity&&!w){let v=new Error(`${e} integrity checksum failed when using ${o}: wanted ${a} but got ${C}. (${A} bytes)`);v.code="EINTEGRITY",v.found=C,v.expected=a,v.algorithm=o,v.sri=e,p.emit("error",v)}else p.emit("size",A),p.emit("integrity",C),w&&p.emit("verified",w)});return p}BA.exports.create=DBt;function DBt(t){t=ea(t);let e=t.algorithms,r=t.options.length?`?${t.options.join("?")}`:"",o=e.map(cv.createHash);return{update:function(a,n){return o.forEach(u=>u.update(a,n)),this},digest:function(a){return e.reduce((u,A)=>{let p=o.shift().digest("base64"),h=new Th(`${A}-${p}${r}`,t);if(h.algorithm&&h.digest){let C=h.algorithm;u[C]||(u[C]=[]),u[C].push(h)}return u},new wm)}}}var SBt=new Set(cv.getHashes()),vBe=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(t=>SBt.has(t));function PBt(t,e){return vBe.indexOf(t.toLowerCase())>=vBe.indexOf(e.toLowerCase())?t:e}});var nve=U((enr,rve)=>{var bvt=tL();function Qvt(t){return bvt(t)?void 0:t}rve.exports=Qvt});var sve=U((tnr,ive)=>{var kvt=Dx(),Fvt=S8(),Rvt=Q8(),Tvt=qd(),Nvt=fd(),Lvt=nve(),Ovt=C_(),Mvt=D8(),Uvt=1,_vt=2,Hvt=4,qvt=Ovt(function(t,e){var r={};if(t==null)return r;var o=!1;e=kvt(e,function(n){return n=Tvt(n,t),o||(o=n.length>1),n}),Nvt(t,Mvt(t),r),o&&(r=Fvt(r,Uvt|_vt|Hvt,Lvt));for(var a=e.length;a--;)Rvt(r,e[a]);return r});ive.exports=qvt});Ke();Ke();bt();var P_=Ie("child_process"),h0e=tt(Jg());_t();var x_=Ie("fs");var nC=new Map([]);function _ut(t){let e=Ae.fromPortablePath(t);process.on("SIGINT",()=>{}),e?(0,P_.execFileSync)(process.execPath,[e,...process.argv.slice(2)],{stdio:"inherit",env:{...process.env,YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"}}):(0,P_.execFileSync)(e,process.argv.slice(2),{stdio:"inherit",env:{...process.env,YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"}})}async function Hb({binaryVersion:t,pluginConfiguration:e}){async function r(){let a=new vo({binaryLabel:"Yarn Package Manager",binaryName:"yarn",binaryVersion:t});try{await o(a)}catch(n){process.stdout.write(a.error(n)),process.exitCode=1}}async function o(a){var R,L,_,J;let n=process.versions.node,u=">=14.15.0";if(!Ye.parseOptionalBoolean(process.env.YARN_IGNORE_NODE)&&!Tr.satisfiesWithPrereleases(n,u))throw new ot(`This tool requires a Node version compatible with ${u} (got ${n}). Upgrade Node, or set \`YARN_IGNORE_NODE=1\` in your environment.`);let p=await Xe.find(Ae.toPortablePath(process.cwd()),e,{usePath:!0,strict:!1}),h=p.get("yarnPath"),C=p.get("ignorePath"),w=p.get("ignoreCwd"),v=Ae.toPortablePath(Ae.resolve(process.argv[1])),b=re=>ae.readFilePromise(re).catch(()=>Buffer.of());if(!C&&!w&&await(async()=>h&&(h===v||Buffer.compare(...await Promise.all([b(h),b(v)]))===0))()){process.env.YARN_IGNORE_PATH="1",process.env.YARN_IGNORE_CWD="1",await o(a);return}else if(h!==null&&!C)if(!ae.existsSync(h))process.stdout.write(a.error(new Error(`The "yarn-path" option has been set (in ${p.sources.get("yarnPath")}), but the specified location doesn't exist (${h}).`))),process.exitCode=1;else try{_ut(h)}catch(re){process.exitCode=re.code||1}else{C&&delete process.env.YARN_IGNORE_PATH,p.get("enableTelemetry")&&!h0e.isCI&&process.stdout.isTTY&&(Xe.telemetry=new rC(p,"puba9cdc10ec5790a2cf4969dd413a47270")),(R=Xe.telemetry)==null||R.reportVersion(t);for(let[ve,ge]of p.plugins.entries()){nC.has(((L=ve.match(/^@yarnpkg\/plugin-(.*)$/))==null?void 0:L[1])??"")&&((_=Xe.telemetry)==null||_.reportPluginName(ve));for(let le of ge.commands||[])a.register(le)}let oe={cwd:Ae.toPortablePath(process.cwd()),plugins:e,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr},pe=a.process(process.argv.slice(2),oe);pe.help||(J=Xe.telemetry)==null||J.reportCommandName(pe.path.join(" "));let he=pe.cwd;if(typeof he<"u"&&!w){let ve=(0,x_.realpathSync)(process.cwd()),ge=(0,x_.realpathSync)(he);if(ve!==ge){process.chdir(he),await r();return}}await a.runExit(pe,oe)}}return r().catch(a=>{process.stdout.write(a.stack||a.message),process.exitCode=1}).finally(()=>ae.rmtempPromise())}var H1={};Yt(H1,{BaseCommand:()=>ct,WorkspaceRequiredError:()=>er,getDynamicLibs:()=>g0e,getPluginConfiguration:()=>qb,main:()=>Hb,openWorkspace:()=>iC,pluginCommands:()=>nC});_t();var ct=class extends it{constructor(){super(...arguments);this.cwd=fe.String("--cwd",{hidden:!0})}};Ke();bt();_t();var er=class extends ot{constructor(e,r){let o=V.relative(e,r),a=V.join(e,Nt.fileName);super(`This command can only be run from within a workspace of your project (${o} isn't a workspace of ${a}).`)}};Ke();bt();Oc();Ol();g1();_t();var Hut=tt(ii());$a();var g0e=()=>new Map([["@yarnpkg/cli",H1],["@yarnpkg/core",_1],["@yarnpkg/fslib",TI],["@yarnpkg/libzip",LI],["@yarnpkg/parsers",GI],["@yarnpkg/shell",E1],["clipanion",$I],["semver",Hut],["typanion",Go]]);Ke();async function iC(t,e){let{project:r,workspace:o}=await St.find(t,e);if(!o)throw new er(r.cwd,e);return o}Ke();bt();Oc();Ol();g1();_t();var Xvt=tt(ii());$a();var X8={};Yt(X8,{AddCommand:()=>S0,BinCommand:()=>P0,CacheCleanCommand:()=>x0,ClipanionCommand:()=>Yd,ConfigCommand:()=>F0,ConfigGetCommand:()=>b0,ConfigSetCommand:()=>Q0,ConfigUnsetCommand:()=>k0,DedupeCommand:()=>R0,EntryCommand:()=>lC,ExecCommand:()=>T0,ExplainCommand:()=>O0,ExplainPeerRequirementsCommand:()=>N0,HelpCommand:()=>Kd,InfoCommand:()=>M0,LinkCommand:()=>_0,NodeCommand:()=>H0,PluginCheckCommand:()=>q0,PluginImportCommand:()=>W0,PluginImportSourcesCommand:()=>Y0,PluginListCommand:()=>j0,PluginRemoveCommand:()=>K0,PluginRuntimeCommand:()=>J0,RebuildCommand:()=>V0,RemoveCommand:()=>z0,RunCommand:()=>X0,RunIndexCommand:()=>zd,SetResolutionCommand:()=>Z0,SetVersionCommand:()=>L0,SetVersionSourcesCommand:()=>G0,UnlinkCommand:()=>$0,UpCommand:()=>Yf,VersionCommand:()=>Jd,WhyCommand:()=>eh,WorkspaceCommand:()=>nh,WorkspacesListCommand:()=>rh,YarnCommand:()=>U0,dedupeUtils:()=>Xb,default:()=>Qht,suggestUtils:()=>Zc});var Kde=tt(Jg());Ke();Ke();Ke();_t();var rge=tt(Y1());$a();var Zc={};Yt(Zc,{Modifier:()=>C8,Strategy:()=>Vb,Target:()=>K1,WorkspaceModifier:()=>Xhe,applyModifier:()=>aft,extractDescriptorFromPath:()=>I8,extractRangeModifier:()=>Zhe,fetchDescriptorFrom:()=>w8,findProjectDescriptors:()=>tge,getModifier:()=>J1,getSuggestedDescriptors:()=>V1,makeWorkspaceDescriptor:()=>ege,toWorkspaceModifier:()=>$he});Ke();Ke();bt();var E8=tt(ii()),sft="workspace:",K1=(o=>(o.REGULAR="dependencies",o.DEVELOPMENT="devDependencies",o.PEER="peerDependencies",o))(K1||{}),C8=(o=>(o.CARET="^",o.TILDE="~",o.EXACT="",o))(C8||{}),Xhe=(o=>(o.CARET="^",o.TILDE="~",o.EXACT="*",o))(Xhe||{}),Vb=(n=>(n.KEEP="keep",n.REUSE="reuse",n.PROJECT="project",n.LATEST="latest",n.CACHE="cache",n))(Vb||{});function J1(t,e){return t.exact?"":t.caret?"^":t.tilde?"~":e.configuration.get("defaultSemverRangePrefix")}var oft=/^([\^~]?)[0-9]+(?:\.[0-9]+){0,2}(?:-\S+)?$/;function Zhe(t,{project:e}){let r=t.match(oft);return r?r[1]:e.configuration.get("defaultSemverRangePrefix")}function aft(t,e){let{protocol:r,source:o,params:a,selector:n}=Y.parseRange(t.range);return E8.default.valid(n)&&(n=`${e}${t.range}`),Y.makeDescriptor(t,Y.makeRange({protocol:r,source:o,params:a,selector:n}))}function $he(t){switch(t){case"^":return"^";case"~":return"~";case"":return"*";default:throw new Error(`Assertion failed: Unknown modifier: "${t}"`)}}function ege(t,e){return Y.makeDescriptor(t.anchoredDescriptor,`${sft}${$he(e)}`)}async function tge(t,{project:e,target:r}){let o=new Map,a=n=>{let u=o.get(n.descriptorHash);return u||o.set(n.descriptorHash,u={descriptor:n,locators:[]}),u};for(let n of e.workspaces)if(r==="peerDependencies"){let u=n.manifest.peerDependencies.get(t.identHash);u!==void 0&&a(u).locators.push(n.anchoredLocator)}else{let u=n.manifest.dependencies.get(t.identHash),A=n.manifest.devDependencies.get(t.identHash);r==="devDependencies"?A!==void 0?a(A).locators.push(n.anchoredLocator):u!==void 0&&a(u).locators.push(n.anchoredLocator):u!==void 0?a(u).locators.push(n.anchoredLocator):A!==void 0&&a(A).locators.push(n.anchoredLocator)}return o}async function I8(t,{cwd:e,workspace:r}){return await lft(async o=>{V.isAbsolute(t)||(t=V.relative(r.cwd,V.resolve(e,t)),t.match(/^\.{0,2}\//)||(t=`./${t}`));let{project:a}=r,n=await w8(Y.makeIdent(null,"archive"),t,{project:r.project,cache:o,workspace:r});if(!n)throw new Error("Assertion failed: The descriptor should have been found");let u=new xi,A=a.configuration.makeResolver(),p=a.configuration.makeFetcher(),h={checksums:a.storedChecksums,project:a,cache:o,fetcher:p,report:u,resolver:A},C=A.bindDescriptor(n,r.anchoredLocator,h),w=Y.convertDescriptorToLocator(C),v=await p.fetch(w,h),b=await Nt.find(v.prefixPath,{baseFs:v.packageFs});if(!b.name)throw new Error("Target path doesn't have a name");return Y.makeDescriptor(b.name,t)})}async function V1(t,{project:e,workspace:r,cache:o,target:a,fixed:n,modifier:u,strategies:A,maxResults:p=1/0}){if(!(p>=0))throw new Error(`Invalid maxResults (${p})`);let[h,C]=t.range!=="unknown"?n||Tr.validRange(t.range)||!t.range.match(/^[a-z0-9._-]+$/i)?[t.range,"latest"]:["unknown",t.range]:["unknown","latest"];if(h!=="unknown")return{suggestions:[{descriptor:t,name:`Use ${Y.prettyDescriptor(e.configuration,t)}`,reason:"(unambiguous explicit request)"}],rejections:[]};let w=typeof r<"u"&&r!==null&&r.manifest[a].get(t.identHash)||null,v=[],b=[],E=async R=>{try{await R()}catch(L){b.push(L)}};for(let R of A){if(v.length>=p)break;switch(R){case"keep":await E(async()=>{w&&v.push({descriptor:w,name:`Keep ${Y.prettyDescriptor(e.configuration,w)}`,reason:"(no changes)"})});break;case"reuse":await E(async()=>{for(let{descriptor:L,locators:_}of(await tge(t,{project:e,target:a})).values()){if(_.length===1&&_[0].locatorHash===r.anchoredLocator.locatorHash&&A.includes("keep"))continue;let J=`(originally used by ${Y.prettyLocator(e.configuration,_[0])}`;J+=_.length>1?` and ${_.length-1} other${_.length>2?"s":""})`:")",v.push({descriptor:L,name:`Reuse ${Y.prettyDescriptor(e.configuration,L)}`,reason:J})}});break;case"cache":await E(async()=>{for(let L of e.storedDescriptors.values())L.identHash===t.identHash&&v.push({descriptor:L,name:`Reuse ${Y.prettyDescriptor(e.configuration,L)}`,reason:"(already used somewhere in the lockfile)"})});break;case"project":await E(async()=>{if(r.manifest.name!==null&&t.identHash===r.manifest.name.identHash)return;let L=e.tryWorkspaceByIdent(t);if(L===null)return;let _=ege(L,u);v.push({descriptor:_,name:`Attach ${Y.prettyDescriptor(e.configuration,_)}`,reason:`(local workspace at ${ye.pretty(e.configuration,L.relativeCwd,ye.Type.PATH)})`})});break;case"latest":await E(async()=>{if(a==="peerDependencies")v.push({descriptor:Y.makeDescriptor(t,"*"),name:"Use *",reason:"(catch-all peer dependency pattern)"});else if(!e.configuration.get("enableNetwork"))v.push({descriptor:null,name:"Resolve from latest",reason:ye.pretty(e.configuration,"(unavailable because enableNetwork is toggled off)","grey")});else{let L=await w8(t,C,{project:e,cache:o,workspace:r,modifier:u});L&&v.push({descriptor:L,name:`Use ${Y.prettyDescriptor(e.configuration,L)}`,reason:"(resolved from latest)"})}});break}}return{suggestions:v.slice(0,p),rejections:b.slice(0,p)}}async function w8(t,e,{project:r,cache:o,workspace:a,preserveModifier:n=!0,modifier:u}){let A=r.configuration.normalizeDependency(Y.makeDescriptor(t,e)),p=new xi,h=r.configuration.makeFetcher(),C=r.configuration.makeResolver(),w={project:r,fetcher:h,cache:o,checksums:r.storedChecksums,report:p,cacheOptions:{skipIntegrityCheck:!0}},v={...w,resolver:C,fetchOptions:w},b=C.bindDescriptor(A,a.anchoredLocator,v),E=await C.getCandidates(b,{},v);if(E.length===0)return null;let R=E[0],{protocol:L,source:_,params:J,selector:re}=Y.parseRange(Y.convertToManifestRange(R.reference));if(L===r.configuration.get("defaultProtocol")&&(L=null),E8.default.valid(re)){let oe=re;if(typeof u<"u")re=u+re;else if(n!==!1){let ve=typeof n=="string"?n:A.range;re=Zhe(ve,{project:r})+re}let pe=Y.makeDescriptor(R,Y.makeRange({protocol:L,source:_,params:J,selector:re}));(await C.getCandidates(r.configuration.normalizeDependency(pe),{},v)).length!==1&&(re=oe)}return Y.makeDescriptor(R,Y.makeRange({protocol:L,source:_,params:J,selector:re}))}async function lft(t){return await ae.mktempPromise(async e=>{let r=Xe.create(e);return r.useWithSource(e,{enableMirror:!1,compressionLevel:0},e,{overwrite:!0}),await t(new Ur(e,{configuration:r,check:!1,immutable:!1}))})}var S0=class extends ct{constructor(){super(...arguments);this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.fixed=fe.Boolean("-F,--fixed",!1,{description:"Store dependency tags as-is instead of resolving them"});this.exact=fe.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=fe.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=fe.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.dev=fe.Boolean("-D,--dev",!1,{description:"Add a package as a dev dependency"});this.peer=fe.Boolean("-P,--peer",!1,{description:"Add a package as a peer dependency"});this.optional=fe.Boolean("-O,--optional",!1,{description:"Add / upgrade a package to an optional regular / peer dependency"});this.preferDev=fe.Boolean("--prefer-dev",!1,{description:"Add / upgrade a package to a dev dependency"});this.interactive=fe.Boolean("-i,--interactive",{description:"Reuse the specified package from other workspaces in the project"});this.cached=fe.Boolean("--cached",!1,{description:"Reuse the highest version already used somewhere within the project"});this.mode=fe.String("--mode",{description:"Change what artifacts installs generate",validator:Gs(fl)});this.silent=fe.Boolean("--silent",{hidden:!0});this.packages=fe.Rest()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Ur.find(r);if(!a)throw new er(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=this.fixed,A=this.interactive??r.get("preferInteractive"),p=A||r.get("preferReuse"),h=J1(this,o),C=[p?"reuse":void 0,"project",this.cached?"cache":void 0,"latest"].filter(J=>typeof J<"u"),w=A?1/0:1,v=await Promise.all(this.packages.map(async J=>{let re=J.match(/^\.{0,2}\//)?await I8(J,{cwd:this.context.cwd,workspace:a}):Y.tryParseDescriptor(J),oe=J.match(/^(https?:|git@github)/);if(oe)throw new ot(`It seems you are trying to add a package using a ${ye.pretty(r,`${oe[0]}...`,ye.Type.RANGE)} url; we now require package names to be explicitly specified. | 386 | Found: ${A}`);v.code="EBADSIZE",v.found=A,v.expected=t.size,v.sri=e,p.emit("error",v)}else if(t.integrity&&!w){let v=new Error(`${e} integrity checksum failed when using ${o}: wanted ${a} but got ${C}. (${A} bytes)`);v.code="EINTEGRITY",v.found=C,v.expected=a,v.algorithm=o,v.sri=e,p.emit("error",v)}else p.emit("size",A),p.emit("integrity",C),w&&p.emit("verified",w)});return p}SA.exports.create=GBt;function GBt(t){t=ra(t);let e=t.algorithms,r=t.options.length?`?${t.options.join("?")}`:"",o=e.map(yv.createHash);return{update:function(a,n){return o.forEach(u=>u.update(a,n)),this},digest:function(a){return e.reduce((u,A)=>{let p=o.shift().digest("base64"),h=new Mh(`${A}-${p}${r}`,t);if(h.algorithm&&h.digest){let C=h.algorithm;u[C]||(u[C]=[]),u[C].push(h)}return u},new Sm)}}}var WBt=new Set(yv.getHashes()),OBe=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(t=>WBt.has(t));function YBt(t,e){return OBe.indexOf(t.toLowerCase())>=OBe.indexOf(e.toLowerCase())?t:e}});var yve=U((pnr,mve)=>{var Vvt=iL();function Jvt(t){return Vvt(t)?void 0:t}mve.exports=Jvt});var Cve=U((hnr,Eve)=>{var zvt=Tx(),Xvt=b8(),Zvt=R8(),$vt=Yd(),eDt=dd(),tDt=yve(),rDt=B_(),nDt=x8(),iDt=1,sDt=2,oDt=4,aDt=rDt(function(t,e){var r={};if(t==null)return r;var o=!1;e=zvt(e,function(n){return n=$vt(n,t),o||(o=n.length>1),n}),eDt(t,nDt(t),r),o&&(r=Xvt(r,iDt|sDt|oDt,tDt));for(var a=e.length;a--;)Zvt(r,e[a]);return r});Eve.exports=aDt});Ke();Ke();St();var Q_=Ie("child_process"),I0e=tt(Zg());_t();var k_=Ie("fs");var lC=new Map([]);function tAt(t){let e=ue.fromPortablePath(t);process.on("SIGINT",()=>{}),e?(0,Q_.execFileSync)(process.execPath,[e,...process.argv.slice(2)],{stdio:"inherit",env:{...process.env,YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"}}):(0,Q_.execFileSync)(e,process.argv.slice(2),{stdio:"inherit",env:{...process.env,YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"}})}async function Xb({binaryVersion:t,pluginConfiguration:e}){async function r(){let a=new vo({binaryLabel:"Yarn Package Manager",binaryName:"yarn",binaryVersion:t});try{await o(a)}catch(n){process.stdout.write(a.error(n)),process.exitCode=1}}async function o(a){var R,L,_,V;let n=process.versions.node,u=">=14.15.0";if(!We.parseOptionalBoolean(process.env.YARN_IGNORE_NODE)&&!Tr.satisfiesWithPrereleases(n,u))throw new ot(`This tool requires a Node version compatible with ${u} (got ${n}). Upgrade Node, or set \`YARN_IGNORE_NODE=1\` in your environment.`);let p=await Xe.find(ue.toPortablePath(process.cwd()),e,{usePath:!0,strict:!1}),h=p.get("yarnPath"),C=p.get("ignorePath"),w=p.get("ignoreCwd"),v=ue.toPortablePath(ue.resolve(process.argv[1])),b=re=>oe.readFilePromise(re).catch(()=>Buffer.of());if(!C&&!w&&await(async()=>h&&(h===v||Buffer.compare(...await Promise.all([b(h),b(v)]))===0))()){process.env.YARN_IGNORE_PATH="1",process.env.YARN_IGNORE_CWD="1",await o(a);return}else if(h!==null&&!C)if(!oe.existsSync(h))process.stdout.write(a.error(new Error(`The "yarn-path" option has been set (in ${p.sources.get("yarnPath")}), but the specified location doesn't exist (${h}).`))),process.exitCode=1;else try{tAt(h)}catch(re){process.exitCode=re.code||1}else{C&&delete process.env.YARN_IGNORE_PATH,p.get("enableTelemetry")&&!I0e.isCI&&process.stdout.isTTY&&(Xe.telemetry=new aC(p,"puba9cdc10ec5790a2cf4969dd413a47270")),(R=Xe.telemetry)==null||R.reportVersion(t);for(let[De,ge]of p.plugins.entries()){lC.has(((L=De.match(/^@yarnpkg\/plugin-(.*)$/))==null?void 0:L[1])??"")&&((_=Xe.telemetry)==null||_.reportPluginName(De));for(let le of ge.commands||[])a.register(le)}let ae={cwd:ue.toPortablePath(process.cwd()),plugins:e,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr},he=a.process(process.argv.slice(2),ae);he.help||(V=Xe.telemetry)==null||V.reportCommandName(he.path.join(" "));let pe=he.cwd;if(typeof pe<"u"&&!w){let De=(0,k_.realpathSync)(process.cwd()),ge=(0,k_.realpathSync)(pe);if(De!==ge){process.chdir(pe),await r();return}}await a.runExit(he,ae)}}return r().catch(a=>{process.stdout.write(a.stack||a.message),process.exitCode=1}).finally(()=>oe.rmtempPromise())}var K1={};Yt(K1,{BaseCommand:()=>ct,WorkspaceRequiredError:()=>er,getDynamicLibs:()=>w0e,getPluginConfiguration:()=>Zb,main:()=>Xb,openWorkspace:()=>cC,pluginCommands:()=>lC});_t();var ct=class extends it{constructor(){super(...arguments);this.cwd=fe.String("--cwd",{hidden:!0})}};Ke();St();_t();var er=class extends ot{constructor(e,r){let o=J.relative(e,r),a=J.join(e,Nt.fileName);super(`This command can only be run from within a workspace of your project (${o} isn't a workspace of ${a}).`)}};Ke();St();Hc();Hl();I1();_t();var rAt=tt(si());rl();var w0e=()=>new Map([["@yarnpkg/cli",K1],["@yarnpkg/core",Y1],["@yarnpkg/fslib",UI],["@yarnpkg/libzip",HI],["@yarnpkg/parsers",JI],["@yarnpkg/shell",D1],["clipanion",iw],["semver",rAt],["typanion",Yo]]);Ke();async function cC(t,e){let{project:r,workspace:o}=await Pt.find(t,e);if(!o)throw new er(r.cwd,e);return o}Ke();St();Hc();Hl();I1();_t();var dDt=tt(si());rl();var eH={};Yt(eH,{AddCommand:()=>x0,BinCommand:()=>b0,CacheCleanCommand:()=>Q0,ClipanionCommand:()=>zd,ConfigCommand:()=>T0,ConfigGetCommand:()=>k0,ConfigSetCommand:()=>F0,ConfigUnsetCommand:()=>R0,DedupeCommand:()=>N0,EntryCommand:()=>pC,ExecCommand:()=>L0,ExplainCommand:()=>U0,ExplainPeerRequirementsCommand:()=>O0,HelpCommand:()=>Xd,InfoCommand:()=>_0,LinkCommand:()=>q0,NodeCommand:()=>j0,PluginCheckCommand:()=>G0,PluginImportCommand:()=>K0,PluginImportSourcesCommand:()=>V0,PluginListCommand:()=>W0,PluginRemoveCommand:()=>J0,PluginRuntimeCommand:()=>z0,RebuildCommand:()=>X0,RemoveCommand:()=>Z0,RunCommand:()=>$0,RunIndexCommand:()=>em,SetResolutionCommand:()=>eh,SetVersionCommand:()=>M0,SetVersionSourcesCommand:()=>Y0,UnlinkCommand:()=>th,UpCommand:()=>zf,VersionCommand:()=>Zd,WhyCommand:()=>rh,WorkspaceCommand:()=>sh,WorkspacesListCommand:()=>ih,YarnCommand:()=>H0,dedupeUtils:()=>aQ,default:()=>Yht,suggestUtils:()=>tu});var eme=tt(Zg());Ke();Ke();Ke();_t();var cge=tt(Z1());rl();var tu={};Yt(tu,{Modifier:()=>B8,Strategy:()=>sQ,Target:()=>$1,WorkspaceModifier:()=>ige,applyModifier:()=>wft,extractDescriptorFromPath:()=>v8,extractRangeModifier:()=>sge,fetchDescriptorFrom:()=>D8,findProjectDescriptors:()=>lge,getModifier:()=>e2,getSuggestedDescriptors:()=>t2,makeWorkspaceDescriptor:()=>age,toWorkspaceModifier:()=>oge});Ke();Ke();St();var w8=tt(si()),Cft="workspace:",$1=(o=>(o.REGULAR="dependencies",o.DEVELOPMENT="devDependencies",o.PEER="peerDependencies",o))($1||{}),B8=(o=>(o.CARET="^",o.TILDE="~",o.EXACT="",o))(B8||{}),ige=(o=>(o.CARET="^",o.TILDE="~",o.EXACT="*",o))(ige||{}),sQ=(n=>(n.KEEP="keep",n.REUSE="reuse",n.PROJECT="project",n.LATEST="latest",n.CACHE="cache",n))(sQ||{});function e2(t,e){return t.exact?"":t.caret?"^":t.tilde?"~":e.configuration.get("defaultSemverRangePrefix")}var Ift=/^([\^~]?)[0-9]+(?:\.[0-9]+){0,2}(?:-\S+)?$/;function sge(t,{project:e}){let r=t.match(Ift);return r?r[1]:e.configuration.get("defaultSemverRangePrefix")}function wft(t,e){let{protocol:r,source:o,params:a,selector:n}=Y.parseRange(t.range);return w8.default.valid(n)&&(n=`${e}${t.range}`),Y.makeDescriptor(t,Y.makeRange({protocol:r,source:o,params:a,selector:n}))}function oge(t){switch(t){case"^":return"^";case"~":return"~";case"":return"*";default:throw new Error(`Assertion failed: Unknown modifier: "${t}"`)}}function age(t,e){return Y.makeDescriptor(t.anchoredDescriptor,`${Cft}${oge(e)}`)}async function lge(t,{project:e,target:r}){let o=new Map,a=n=>{let u=o.get(n.descriptorHash);return u||o.set(n.descriptorHash,u={descriptor:n,locators:[]}),u};for(let n of e.workspaces)if(r==="peerDependencies"){let u=n.manifest.peerDependencies.get(t.identHash);u!==void 0&&a(u).locators.push(n.anchoredLocator)}else{let u=n.manifest.dependencies.get(t.identHash),A=n.manifest.devDependencies.get(t.identHash);r==="devDependencies"?A!==void 0?a(A).locators.push(n.anchoredLocator):u!==void 0&&a(u).locators.push(n.anchoredLocator):u!==void 0?a(u).locators.push(n.anchoredLocator):A!==void 0&&a(A).locators.push(n.anchoredLocator)}return o}async function v8(t,{cwd:e,workspace:r}){return await Bft(async o=>{J.isAbsolute(t)||(t=J.relative(r.cwd,J.resolve(e,t)),t.match(/^\.{0,2}\//)||(t=`./${t}`));let{project:a}=r,n=await D8(Y.makeIdent(null,"archive"),t,{project:r.project,cache:o,workspace:r});if(!n)throw new Error("Assertion failed: The descriptor should have been found");let u=new xi,A=a.configuration.makeResolver(),p=a.configuration.makeFetcher(),h={checksums:a.storedChecksums,project:a,cache:o,fetcher:p,report:u,resolver:A},C=A.bindDescriptor(n,r.anchoredLocator,h),w=Y.convertDescriptorToLocator(C),v=await p.fetch(w,h),b=await Nt.find(v.prefixPath,{baseFs:v.packageFs});if(!b.name)throw new Error("Target path doesn't have a name");return Y.makeDescriptor(b.name,t)})}async function t2(t,{project:e,workspace:r,cache:o,target:a,fixed:n,modifier:u,strategies:A,maxResults:p=1/0}){if(!(p>=0))throw new Error(`Invalid maxResults (${p})`);let[h,C]=t.range!=="unknown"?n||Tr.validRange(t.range)||!t.range.match(/^[a-z0-9._-]+$/i)?[t.range,"latest"]:["unknown",t.range]:["unknown","latest"];if(h!=="unknown")return{suggestions:[{descriptor:t,name:`Use ${Y.prettyDescriptor(e.configuration,t)}`,reason:"(unambiguous explicit request)"}],rejections:[]};let w=typeof r<"u"&&r!==null&&r.manifest[a].get(t.identHash)||null,v=[],b=[],E=async R=>{try{await R()}catch(L){b.push(L)}};for(let R of A){if(v.length>=p)break;switch(R){case"keep":await E(async()=>{w&&v.push({descriptor:w,name:`Keep ${Y.prettyDescriptor(e.configuration,w)}`,reason:"(no changes)"})});break;case"reuse":await E(async()=>{for(let{descriptor:L,locators:_}of(await lge(t,{project:e,target:a})).values()){if(_.length===1&&_[0].locatorHash===r.anchoredLocator.locatorHash&&A.includes("keep"))continue;let V=`(originally used by ${Y.prettyLocator(e.configuration,_[0])}`;V+=_.length>1?` and ${_.length-1} other${_.length>2?"s":""})`:")",v.push({descriptor:L,name:`Reuse ${Y.prettyDescriptor(e.configuration,L)}`,reason:V})}});break;case"cache":await E(async()=>{for(let L of e.storedDescriptors.values())L.identHash===t.identHash&&v.push({descriptor:L,name:`Reuse ${Y.prettyDescriptor(e.configuration,L)}`,reason:"(already used somewhere in the lockfile)"})});break;case"project":await E(async()=>{if(r.manifest.name!==null&&t.identHash===r.manifest.name.identHash)return;let L=e.tryWorkspaceByIdent(t);if(L===null)return;let _=age(L,u);v.push({descriptor:_,name:`Attach ${Y.prettyDescriptor(e.configuration,_)}`,reason:`(local workspace at ${ye.pretty(e.configuration,L.relativeCwd,ye.Type.PATH)})`})});break;case"latest":await E(async()=>{if(a==="peerDependencies")v.push({descriptor:Y.makeDescriptor(t,"*"),name:"Use *",reason:"(catch-all peer dependency pattern)"});else if(!e.configuration.get("enableNetwork"))v.push({descriptor:null,name:"Resolve from latest",reason:ye.pretty(e.configuration,"(unavailable because enableNetwork is toggled off)","grey")});else{let L=await D8(t,C,{project:e,cache:o,workspace:r,modifier:u});L&&v.push({descriptor:L,name:`Use ${Y.prettyDescriptor(e.configuration,L)}`,reason:"(resolved from latest)"})}});break}}return{suggestions:v.slice(0,p),rejections:b.slice(0,p)}}async function D8(t,e,{project:r,cache:o,workspace:a,preserveModifier:n=!0,modifier:u}){let A=r.configuration.normalizeDependency(Y.makeDescriptor(t,e)),p=new xi,h=r.configuration.makeFetcher(),C=r.configuration.makeResolver(),w={project:r,fetcher:h,cache:o,checksums:r.storedChecksums,report:p,cacheOptions:{skipIntegrityCheck:!0}},v={...w,resolver:C,fetchOptions:w},b=C.bindDescriptor(A,a.anchoredLocator,v),E=await C.getCandidates(b,{},v);if(E.length===0)return null;let R=E[0],{protocol:L,source:_,params:V,selector:re}=Y.parseRange(Y.convertToManifestRange(R.reference));if(L===r.configuration.get("defaultProtocol")&&(L=null),w8.default.valid(re)){let ae=re;if(typeof u<"u")re=u+re;else if(n!==!1){let De=typeof n=="string"?n:A.range;re=sge(De,{project:r})+re}let he=Y.makeDescriptor(R,Y.makeRange({protocol:L,source:_,params:V,selector:re}));(await C.getCandidates(r.configuration.normalizeDependency(he),{},v)).length!==1&&(re=ae)}return Y.makeDescriptor(R,Y.makeRange({protocol:L,source:_,params:V,selector:re}))}async function Bft(t){return await oe.mktempPromise(async e=>{let r=Xe.create(e);return r.useWithSource(e,{enableMirror:!1,compressionLevel:0},e,{overwrite:!0}),await t(new Ur(e,{configuration:r,check:!1,immutable:!1}))})}var x0=class extends ct{constructor(){super(...arguments);this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.fixed=fe.Boolean("-F,--fixed",!1,{description:"Store dependency tags as-is instead of resolving them"});this.exact=fe.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=fe.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=fe.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.dev=fe.Boolean("-D,--dev",!1,{description:"Add a package as a dev dependency"});this.peer=fe.Boolean("-P,--peer",!1,{description:"Add a package as a peer dependency"});this.optional=fe.Boolean("-O,--optional",!1,{description:"Add / upgrade a package to an optional regular / peer dependency"});this.preferDev=fe.Boolean("--prefer-dev",!1,{description:"Add / upgrade a package to a dev dependency"});this.interactive=fe.Boolean("-i,--interactive",{description:"Reuse the specified package from other workspaces in the project"});this.cached=fe.Boolean("--cached",!1,{description:"Reuse the highest version already used somewhere within the project"});this.mode=fe.String("--mode",{description:"Change what artifacts installs generate",validator:Gs(dl)});this.silent=fe.Boolean("--silent",{hidden:!0});this.packages=fe.Rest()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Ur.find(r);if(!a)throw new er(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=this.fixed,A=this.interactive??r.get("preferInteractive"),p=A||r.get("preferReuse"),h=e2(this,o),C=[p?"reuse":void 0,"project",this.cached?"cache":void 0,"latest"].filter(V=>typeof V<"u"),w=A?1/0:1,v=await Promise.all(this.packages.map(async V=>{let re=V.match(/^\.{0,2}\//)?await v8(V,{cwd:this.context.cwd,workspace:a}):Y.tryParseDescriptor(V),ae=V.match(/^(https?:|git@github)/);if(ae)throw new ot(`It seems you are trying to add a package using a ${ye.pretty(r,`${ae[0]}...`,ye.Type.RANGE)} url; we now require package names to be explicitly specified. |
387 | Try running the command again with the package name prefixed: ${ye.pretty(r,"yarn add",ye.Type.CODE)} ${ye.pretty(r,Y.makeDescriptor(Y.makeIdent(null,"my-package"),`${oe[0]}...`),ye.Type.DESCRIPTOR)}`);if(!re)throw new ot(`The ${ye.pretty(r,J,ye.Type.CODE)} string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?`);let pe=cft(a,re,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional});return await Promise.all(pe.map(async ve=>{let ge=await V1(re,{project:o,workspace:a,cache:n,fixed:u,target:ve,modifier:h,strategies:C,maxResults:w});return{request:re,suggestedDescriptors:ge,target:ve}}))})).then(J=>J.flat()),b=await fA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async J=>{for(let{request:re,suggestedDescriptors:{suggestions:oe,rejections:pe}}of v)if(oe.filter(ve=>ve.descriptor!==null).length===0){let[ve]=pe;if(typeof ve>"u")throw new Error("Assertion failed: Expected an error to have been set");o.configuration.get("enableNetwork")?J.reportError(27,`${Y.prettyDescriptor(r,re)} can't be resolved to a satisfying range`):J.reportError(27,`${Y.prettyDescriptor(r,re)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),J.reportSeparator(),J.reportExceptionOnce(ve)}});if(b.hasErrors())return b.exitCode();let E=!1,R=[],L=[];for(let{suggestedDescriptors:{suggestions:J},target:re}of v){let oe,pe=J.filter(le=>le.descriptor!==null),he=pe[0].descriptor,ve=pe.every(le=>Y.areDescriptorsEqual(le.descriptor,he));pe.length===1||ve?oe=he:(E=!0,{answer:oe}=await(0,rge.prompt)({type:"select",name:"answer",message:"Which range do you want to use?",choices:J.map(({descriptor:le,name:Pe,reason:g})=>le?{name:Pe,hint:g,descriptor:le}:{name:Pe,hint:g,disabled:!0}),onCancel:()=>process.exit(130),result(le){return this.find(le,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let ge=a.manifest[re].get(oe.identHash);(typeof ge>"u"||ge.descriptorHash!==oe.descriptorHash)&&(a.manifest[re].set(oe.identHash,oe),this.optional&&(re==="dependencies"?a.manifest.ensureDependencyMeta({...oe,range:"unknown"}).optional=!0:re==="peerDependencies"&&(a.manifest.ensurePeerDependencyMeta({...oe,range:"unknown"}).optional=!0)),typeof ge>"u"?R.push([a,re,oe,C]):L.push([a,re,ge,oe]))}return await r.triggerMultipleHooks(J=>J.afterWorkspaceDependencyAddition,R),await r.triggerMultipleHooks(J=>J.afterWorkspaceDependencyReplacement,L),E&&this.context.stdout.write(` | 387 | Try running the command again with the package name prefixed: ${ye.pretty(r,"yarn add",ye.Type.CODE)} ${ye.pretty(r,Y.makeDescriptor(Y.makeIdent(null,"my-package"),`${ae[0]}...`),ye.Type.DESCRIPTOR)}`);if(!re)throw new ot(`The ${ye.pretty(r,V,ye.Type.CODE)} string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?`);let he=vft(a,re,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional});return await Promise.all(he.map(async De=>{let ge=await t2(re,{project:o,workspace:a,cache:n,fixed:u,target:De,modifier:h,strategies:C,maxResults:w});return{request:re,suggestedDescriptors:ge,target:De}}))})).then(V=>V.flat()),b=await pA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async V=>{for(let{request:re,suggestedDescriptors:{suggestions:ae,rejections:he}}of v)if(ae.filter(De=>De.descriptor!==null).length===0){let[De]=he;if(typeof De>"u")throw new Error("Assertion failed: Expected an error to have been set");o.configuration.get("enableNetwork")?V.reportError(27,`${Y.prettyDescriptor(r,re)} can't be resolved to a satisfying range`):V.reportError(27,`${Y.prettyDescriptor(r,re)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),V.reportSeparator(),V.reportExceptionOnce(De)}});if(b.hasErrors())return b.exitCode();let E=!1,R=[],L=[];for(let{suggestedDescriptors:{suggestions:V},target:re}of v){let ae,he=V.filter(le=>le.descriptor!==null),pe=he[0].descriptor,De=he.every(le=>Y.areDescriptorsEqual(le.descriptor,pe));he.length===1||De?ae=pe:(E=!0,{answer:ae}=await(0,cge.prompt)({type:"select",name:"answer",message:"Which range do you want to use?",choices:V.map(({descriptor:le,name:Pe,reason:g})=>le?{name:Pe,hint:g,descriptor:le}:{name:Pe,hint:g,disabled:!0}),onCancel:()=>process.exit(130),result(le){return this.find(le,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let ge=a.manifest[re].get(ae.identHash);(typeof ge>"u"||ge.descriptorHash!==ae.descriptorHash)&&(a.manifest[re].set(ae.identHash,ae),this.optional&&(re==="dependencies"?a.manifest.ensureDependencyMeta({...ae,range:"unknown"}).optional=!0:re==="peerDependencies"&&(a.manifest.ensurePeerDependencyMeta({...ae,range:"unknown"}).optional=!0)),typeof ge>"u"?R.push([a,re,ae,C]):L.push([a,re,ge,ae]))}return await r.triggerMultipleHooks(V=>V.afterWorkspaceDependencyAddition,R),await r.triggerMultipleHooks(V=>V.afterWorkspaceDependencyReplacement,L),E&&this.context.stdout.write(` |
388 | `),(await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout,includeLogs:!this.context.quiet},async J=>{await o.install({cache:n,report:J,mode:this.mode})})).exitCode()}};S0.paths=[["add"]],S0.usage=it.Usage({description:"add dependencies to the project",details:"\n This command adds a package to the package.json for the nearest workspace.\n\n - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\n\n - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\n\n - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\n\n - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\"peerDependenciesMeta\": { \"<package>\": { \"optional\": true } }`\n\n - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\n\n - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\n\n If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\n\n If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\n\n If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/features/protocols.\n ",examples:[["Add a regular package to the current workspace","$0 add lodash"],["Add a specific version for a package to the current workspace","$0 add lodash@1.2.3"],["Add a package from a GitHub repository (the master branch) to the current workspace using a URL","$0 add lodash@https://github.com/lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol","$0 add lodash@github:lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)","$0 add lodash@lodash/lodash"],["Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)","$0 add lodash-es@lodash/lodash#es"]]});function cft(t,e,{dev:r,peer:o,preferDev:a,optional:n}){let u=t.manifest["dependencies"].has(e.identHash),A=t.manifest["devDependencies"].has(e.identHash),p=t.manifest["peerDependencies"].has(e.identHash);if((r||o)&&u)throw new ot(`Package "${Y.prettyIdent(t.project.configuration,e)}" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!o&&p)throw new ot(`Package "${Y.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(n&&A)throw new ot(`Package "${Y.prettyIdent(t.project.configuration,e)}" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(n&&!o&&p)throw new ot(`Package "${Y.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||a)&&n)throw new ot(`Package "${Y.prettyIdent(t.project.configuration,e)}" cannot simultaneously be a dev dependency and an optional dependency`);let h=[];return o&&h.push("peerDependencies"),(r||a)&&h.push("devDependencies"),n&&h.push("dependencies"),h.length>0?h:A?["devDependencies"]:p?["peerDependencies"]:["dependencies"]}Ke();Ke();_t();var P0=class extends ct{constructor(){super(...arguments);this.verbose=fe.Boolean("-v,--verbose",!1,{description:"Print both the binary name and the locator of the package that provides the binary"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.name=fe.String({required:!1})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,locator:a}=await St.find(r,this.context.cwd);if(await o.restoreInstallState(),this.name){let A=(await sn.getPackageAccessibleBinaries(a,{project:o})).get(this.name);if(!A)throw new ot(`Couldn't find a binary named "${this.name}" for package "${Y.prettyLocator(r,a)}"`);let[,p]=A;return this.context.stdout.write(`${p} | 388 | `),(await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout,includeLogs:!this.context.quiet},async V=>{await o.install({cache:n,report:V,mode:this.mode})})).exitCode()}};x0.paths=[["add"]],x0.usage=it.Usage({description:"add dependencies to the project",details:"\n This command adds a package to the package.json for the nearest workspace.\n\n - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\n\n - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\n\n - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\n\n - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\"peerDependenciesMeta\": { \"<package>\": { \"optional\": true } }`\n\n - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\n\n - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\n\n If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\n\n If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\n\n If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/features/protocols.\n ",examples:[["Add a regular package to the current workspace","$0 add lodash"],["Add a specific version for a package to the current workspace","$0 add lodash@1.2.3"],["Add a package from a GitHub repository (the master branch) to the current workspace using a URL","$0 add lodash@https://github.com/lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol","$0 add lodash@github:lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)","$0 add lodash@lodash/lodash"],["Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)","$0 add lodash-es@lodash/lodash#es"]]});function vft(t,e,{dev:r,peer:o,preferDev:a,optional:n}){let u=t.manifest["dependencies"].has(e.identHash),A=t.manifest["devDependencies"].has(e.identHash),p=t.manifest["peerDependencies"].has(e.identHash);if((r||o)&&u)throw new ot(`Package "${Y.prettyIdent(t.project.configuration,e)}" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!o&&p)throw new ot(`Package "${Y.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(n&&A)throw new ot(`Package "${Y.prettyIdent(t.project.configuration,e)}" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(n&&!o&&p)throw new ot(`Package "${Y.prettyIdent(t.project.configuration,e)}" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||a)&&n)throw new ot(`Package "${Y.prettyIdent(t.project.configuration,e)}" cannot simultaneously be a dev dependency and an optional dependency`);let h=[];return o&&h.push("peerDependencies"),(r||a)&&h.push("devDependencies"),n&&h.push("dependencies"),h.length>0?h:A?["devDependencies"]:p?["peerDependencies"]:["dependencies"]}Ke();Ke();_t();var b0=class extends ct{constructor(){super(...arguments);this.verbose=fe.Boolean("-v,--verbose",!1,{description:"Print both the binary name and the locator of the package that provides the binary"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.name=fe.String({required:!1})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,locator:a}=await Pt.find(r,this.context.cwd);if(await o.restoreInstallState(),this.name){let A=(await sn.getPackageAccessibleBinaries(a,{project:o})).get(this.name);if(!A)throw new ot(`Couldn't find a binary named "${this.name}" for package "${Y.prettyLocator(r,a)}"`);let[,p]=A;return this.context.stdout.write(`${p} |
389 | `),0}return(await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout},async u=>{let A=await sn.getPackageAccessibleBinaries(a,{project:o}),h=Array.from(A.keys()).reduce((C,w)=>Math.max(C,w.length),0);for(let[C,[w,v]]of A)u.reportJson({name:C,source:Y.stringifyIdent(w),path:v});if(this.verbose)for(let[C,[w]]of A)u.reportInfo(null,`${C.padEnd(h," ")} ${Y.prettyLocator(r,w)}`);else for(let C of A.keys())u.reportInfo(null,C)})).exitCode()}};P0.paths=[["bin"]],P0.usage=it.Usage({description:"get the path to a binary script",details:` | 389 | `),0}return(await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout},async u=>{let A=await sn.getPackageAccessibleBinaries(a,{project:o}),h=Array.from(A.keys()).reduce((C,w)=>Math.max(C,w.length),0);for(let[C,[w,v]]of A)u.reportJson({name:C,source:Y.stringifyIdent(w),path:v});if(this.verbose)for(let[C,[w]]of A)u.reportInfo(null,`${C.padEnd(h," ")} ${Y.prettyLocator(r,w)}`);else for(let C of A.keys())u.reportInfo(null,C)})).exitCode()}};b0.paths=[["bin"]],b0.usage=it.Usage({description:"get the path to a binary script",details:` |
390 | When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \`-v,--verbose\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary. | 390 | When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \`-v,--verbose\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary. |
391 | 391 | ||
392 | When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive. | 392 | When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive. |
393 | `,examples:[["List all the available binaries","$0 bin"],["Print the path to a specific binary","$0 bin eslint"]]});Ke();bt();_t();var x0=class extends ct{constructor(){super(...arguments);this.mirror=fe.Boolean("--mirror",!1,{description:"Remove the global cache files instead of the local cache files"});this.all=fe.Boolean("--all",!1,{description:"Remove both the global cache files and the local cache files of the current project"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),o=await Ur.find(r);return(await Ct.start({configuration:r,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&o.mirrorCwd!==null,u=!this.mirror;n&&(await ae.removePromise(o.mirrorCwd),await r.triggerHook(A=>A.cleanGlobalArtifacts,r)),u&&await ae.removePromise(o.cwd)})).exitCode()}};x0.paths=[["cache","clean"],["cache","clear"]],x0.usage=it.Usage({description:"remove the shared cache files",details:` | 393 | `,examples:[["List all the available binaries","$0 bin"],["Print the path to a specific binary","$0 bin eslint"]]});Ke();St();_t();var Q0=class extends ct{constructor(){super(...arguments);this.mirror=fe.Boolean("--mirror",!1,{description:"Remove the global cache files instead of the local cache files"});this.all=fe.Boolean("--all",!1,{description:"Remove both the global cache files and the local cache files of the current project"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),o=await Ur.find(r);return(await Ct.start({configuration:r,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&o.mirrorCwd!==null,u=!this.mirror;n&&(await oe.removePromise(o.mirrorCwd),await r.triggerHook(A=>A.cleanGlobalArtifacts,r)),u&&await oe.removePromise(o.cwd)})).exitCode()}};Q0.paths=[["cache","clean"],["cache","clear"]],Q0.usage=it.Usage({description:"remove the shared cache files",details:` |
394 | This command will remove all the files from the cache. | 394 | This command will remove all the files from the cache. |
395 | `,examples:[["Remove all the local archives","$0 cache clean"],["Remove all the archives stored in the ~/.yarn directory","$0 cache clean --mirror"]]});Ke();_t();var ige=tt(z1()),B8=Ie("util"),b0=class extends ct{constructor(){super(...arguments);this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.unsafe=fe.Boolean("--no-redacted",!1,{description:"Don't redact secrets (such as tokens) from the output"});this.name=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),o=this.name.replace(/[.[].*$/,""),a=this.name.replace(/^[^.[]*/,"");if(typeof r.settings.get(o)>"u")throw new ot(`Couldn't find a configuration settings named "${o}"`);let u=r.getSpecial(o,{hideSecrets:!this.unsafe,getNativePaths:!0}),A=Ye.convertMapsToIndexableObjects(u),p=a?(0,ige.default)(A,a):A,h=await Ct.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async C=>{C.reportJson(p)});if(!this.json){if(typeof p=="string")return this.context.stdout.write(`${p} | 395 | `,examples:[["Remove all the local archives","$0 cache clean"],["Remove all the archives stored in the ~/.yarn directory","$0 cache clean --mirror"]]});Ke();_t();var Age=tt(r2()),S8=Ie("util"),k0=class extends ct{constructor(){super(...arguments);this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.unsafe=fe.Boolean("--no-redacted",!1,{description:"Don't redact secrets (such as tokens) from the output"});this.name=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),o=this.name.replace(/[.[].*$/,""),a=this.name.replace(/^[^.[]*/,"");if(typeof r.settings.get(o)>"u")throw new ot(`Couldn't find a configuration settings named "${o}"`);let u=r.getSpecial(o,{hideSecrets:!this.unsafe,getNativePaths:!0}),A=We.convertMapsToIndexableObjects(u),p=a?(0,Age.default)(A,a):A,h=await Ct.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async C=>{C.reportJson(p)});if(!this.json){if(typeof p=="string")return this.context.stdout.write(`${p} |
396 | `),h.exitCode();B8.inspect.styles.name="cyan",this.context.stdout.write(`${(0,B8.inspect)(p,{depth:1/0,colors:r.get("enableColors"),compact:!1})} | 396 | `),h.exitCode();S8.inspect.styles.name="cyan",this.context.stdout.write(`${(0,S8.inspect)(p,{depth:1/0,colors:r.get("enableColors"),compact:!1})} |
397 | `)}return h.exitCode()}};b0.paths=[["config","get"]],b0.usage=it.Usage({description:"read a configuration settings",details:` | 397 | `)}return h.exitCode()}};k0.paths=[["config","get"]],k0.usage=it.Usage({description:"read a configuration settings",details:` |
398 | This command will print a configuration setting. | 398 | This command will print a configuration setting. |
399 | 399 | ||
400 | Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \`--no-redacted\` to get the untransformed value. | 400 | Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \`--no-redacted\` to get the untransformed value. |
401 | `,examples:[["Print a simple configuration setting","yarn config get yarnPath"],["Print a complex configuration setting","yarn config get packageExtensions"],["Print a nested field from the configuration",`yarn config get 'npmScopes["my-company"].npmRegistryServer'`],["Print a token from the configuration","yarn config get npmAuthToken --no-redacted"],["Print a configuration setting as JSON","yarn config get packageExtensions --json"]]});Ke();_t();var Jge=tt(P8()),Vge=tt(z1()),zge=tt(x8()),b8=Ie("util"),Q0=class extends ct{constructor(){super(...arguments);this.json=fe.Boolean("--json",!1,{description:"Set complex configuration settings to JSON values"});this.home=fe.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=fe.String();this.value=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),o=()=>{if(!r.projectCwd)throw new ot("This command must be run from within a project folder");return r.projectCwd},a=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof r.settings.get(a)>"u")throw new ot(`Couldn't find a configuration settings named "${a}"`);if(a==="enableStrictSettings")throw new ot("This setting only affects the file it's in, and thus cannot be set from the CLI");let A=this.json?JSON.parse(this.value):this.value;await(this.home?E=>Xe.updateHomeConfiguration(E):E=>Xe.updateConfiguration(o(),E))(E=>{if(n){let R=(0,Jge.default)(E);return(0,zge.default)(R,this.name,A),R}else return{...E,[a]:A}});let C=(await Xe.find(this.context.cwd,this.context.plugins)).getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),w=Ye.convertMapsToIndexableObjects(C),v=n?(0,Vge.default)(w,n):w;return(await Ct.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async E=>{b8.inspect.styles.name="cyan",E.reportInfo(0,`Successfully set ${this.name} to ${(0,b8.inspect)(v,{depth:1/0,colors:r.get("enableColors"),compact:!1})}`)})).exitCode()}};Q0.paths=[["config","set"]],Q0.usage=it.Usage({description:"change a configuration settings",details:` | 401 | `,examples:[["Print a simple configuration setting","yarn config get yarnPath"],["Print a complex configuration setting","yarn config get packageExtensions"],["Print a nested field from the configuration",`yarn config get 'npmScopes["my-company"].npmRegistryServer'`],["Print a token from the configuration","yarn config get npmAuthToken --no-redacted"],["Print a configuration setting as JSON","yarn config get packageExtensions --json"]]});Ke();_t();var tde=tt(Q8()),rde=tt(r2()),nde=tt(k8()),F8=Ie("util"),F0=class extends ct{constructor(){super(...arguments);this.json=fe.Boolean("--json",!1,{description:"Set complex configuration settings to JSON values"});this.home=fe.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=fe.String();this.value=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),o=()=>{if(!r.projectCwd)throw new ot("This command must be run from within a project folder");return r.projectCwd},a=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof r.settings.get(a)>"u")throw new ot(`Couldn't find a configuration settings named "${a}"`);if(a==="enableStrictSettings")throw new ot("This setting only affects the file it's in, and thus cannot be set from the CLI");let A=this.json?JSON.parse(this.value):this.value;await(this.home?E=>Xe.updateHomeConfiguration(E):E=>Xe.updateConfiguration(o(),E))(E=>{if(n){let R=(0,tde.default)(E);return(0,nde.default)(R,this.name,A),R}else return{...E,[a]:A}});let C=(await Xe.find(this.context.cwd,this.context.plugins)).getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),w=We.convertMapsToIndexableObjects(C),v=n?(0,rde.default)(w,n):w;return(await Ct.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async E=>{F8.inspect.styles.name="cyan",E.reportInfo(0,`Successfully set ${this.name} to ${(0,F8.inspect)(v,{depth:1/0,colors:r.get("enableColors"),compact:!1})}`)})).exitCode()}};F0.paths=[["config","set"]],F0.usage=it.Usage({description:"change a configuration settings",details:` |
402 | This command will set a configuration setting. | 402 | This command will set a configuration setting. |
403 | 403 | ||
404 | When used without the \`--json\` flag, it can only set a simple configuration setting (a string, a number, or a boolean). | 404 | When used without the \`--json\` flag, it can only set a simple configuration setting (a string, a number, or a boolean). |
405 | 405 | ||
406 | When used with the \`--json\` flag, it can set both simple and complex configuration settings, including Arrays and Objects. | 406 | When used with the \`--json\` flag, it can set both simple and complex configuration settings, including Arrays and Objects. |
407 | `,examples:[["Set a simple configuration setting (a string, a number, or a boolean)","yarn config set initScope myScope"],["Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag",'yarn config set initScope --json \\"myScope\\"'],["Set a complex configuration setting (an Array) using the `--json` flag",`yarn config set unsafeHttpWhitelist --json '["*.example.com", "example.com"]'`],["Set a complex configuration setting (an Object) using the `--json` flag",`yarn config set packageExtensions --json '{ "@babel/parser@*": { "dependencies": { "@babel/types": "*" } } }'`],["Set a nested configuration setting",'yarn config set npmScopes.company.npmRegistryServer "https://npm.example.com"'],["Set a nested configuration setting using indexed access for non-simple keys",`yarn config set 'npmRegistries["//npm.example.com"].npmAuthToken' "ffffffff-ffff-ffff-ffff-ffffffffffff"`]]});Ke();_t();var ade=tt(P8()),lde=tt(ede()),cde=tt(k8()),k0=class extends ct{constructor(){super(...arguments);this.home=fe.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),o=()=>{if(!r.projectCwd)throw new ot("This command must be run from within a project folder");return r.projectCwd},a=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof r.settings.get(a)>"u")throw new ot(`Couldn't find a configuration settings named "${a}"`);let A=this.home?h=>Xe.updateHomeConfiguration(h):h=>Xe.updateConfiguration(o(),h);return(await Ct.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async h=>{let C=!1;await A(w=>{if(!(0,lde.default)(w,this.name))return h.reportWarning(0,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),C=!0,w;let v=n?(0,ade.default)(w):{...w};return(0,cde.default)(v,this.name),v}),C||h.reportInfo(0,`Successfully unset ${this.name}`)})).exitCode()}};k0.paths=[["config","unset"]],k0.usage=it.Usage({description:"unset a configuration setting",details:` | 407 | `,examples:[["Set a simple configuration setting (a string, a number, or a boolean)","yarn config set initScope myScope"],["Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag",'yarn config set initScope --json \\"myScope\\"'],["Set a complex configuration setting (an Array) using the `--json` flag",`yarn config set unsafeHttpWhitelist --json '["*.example.com", "example.com"]'`],["Set a complex configuration setting (an Object) using the `--json` flag",`yarn config set packageExtensions --json '{ "@babel/parser@*": { "dependencies": { "@babel/types": "*" } } }'`],["Set a nested configuration setting",'yarn config set npmScopes.company.npmRegistryServer "https://npm.example.com"'],["Set a nested configuration setting using indexed access for non-simple keys",`yarn config set 'npmRegistries["//npm.example.com"].npmAuthToken' "ffffffff-ffff-ffff-ffff-ffffffffffff"`]]});Ke();_t();var hde=tt(Q8()),gde=tt(ade()),dde=tt(T8()),R0=class extends ct{constructor(){super(...arguments);this.home=fe.Boolean("-H,--home",!1,{description:"Update the home configuration instead of the project configuration"});this.name=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),o=()=>{if(!r.projectCwd)throw new ot("This command must be run from within a project folder");return r.projectCwd},a=this.name.replace(/[.[].*$/,""),n=this.name.replace(/^[^.[]*\.?/,"");if(typeof r.settings.get(a)>"u")throw new ot(`Couldn't find a configuration settings named "${a}"`);let A=this.home?h=>Xe.updateHomeConfiguration(h):h=>Xe.updateConfiguration(o(),h);return(await Ct.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async h=>{let C=!1;await A(w=>{if(!(0,gde.default)(w,this.name))return h.reportWarning(0,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),C=!0,w;let v=n?(0,hde.default)(w):{...w};return(0,dde.default)(v,this.name),v}),C||h.reportInfo(0,`Successfully unset ${this.name}`)})).exitCode()}};R0.paths=[["config","unset"]],R0.usage=it.Usage({description:"unset a configuration setting",details:` |
408 | This command will unset a configuration setting. | 408 | This command will unset a configuration setting. |
409 | `,examples:[["Unset a simple configuration setting","yarn config unset initScope"],["Unset a complex configuration setting","yarn config unset packageExtensions"],["Unset a nested configuration setting","yarn config unset npmScopes.company.npmRegistryServer"]]});Ke();Ke();_t();var F8=Ie("util"),F0=class extends ct{constructor(){super(...arguments);this.verbose=fe.Boolean("-v,--verbose",!1,{description:"Print the setting description on top of the regular key/value information"});this.why=fe.Boolean("--why",!1,{description:"Print the reason why a setting is set a particular way"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins,{strict:!1});return(await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{if(r.invalid.size>0&&!this.json){for(let[n,u]of r.invalid)a.reportError(34,`Invalid configuration key "${n}" in ${u}`);a.reportSeparator()}if(this.json){let n=Ye.sortMap(r.settings.keys(),u=>u);for(let u of n){let A=r.settings.get(u),p=r.getSpecial(u,{hideSecrets:!0,getNativePaths:!0}),h=r.sources.get(u);this.verbose?a.reportJson({key:u,effective:p,source:h}):a.reportJson({key:u,effective:p,source:h,...A})}}else{let n=Ye.sortMap(r.settings.keys(),p=>p),u=n.reduce((p,h)=>Math.max(p,h.length),0),A={breakLength:1/0,colors:r.get("enableColors"),maxArrayLength:2};if(this.why||this.verbose){let p=n.map(C=>{let w=r.settings.get(C);if(!w)throw new Error(`Assertion failed: This settings ("${C}") should have been registered`);let v=this.why?r.sources.get(C)||"<default>":w.description;return[C,v]}),h=p.reduce((C,[,w])=>Math.max(C,w.length),0);for(let[C,w]of p)a.reportInfo(null,`${C.padEnd(u," ")} ${w.padEnd(h," ")} ${(0,F8.inspect)(r.getSpecial(C,{hideSecrets:!0,getNativePaths:!0}),A)}`)}else for(let p of n)a.reportInfo(null,`${p.padEnd(u," ")} ${(0,F8.inspect)(r.getSpecial(p,{hideSecrets:!0,getNativePaths:!0}),A)}`)}})).exitCode()}};F0.paths=[["config"]],F0.usage=it.Usage({description:"display the current configuration",details:` | 409 | `,examples:[["Unset a simple configuration setting","yarn config unset initScope"],["Unset a complex configuration setting","yarn config unset packageExtensions"],["Unset a nested configuration setting","yarn config unset npmScopes.company.npmRegistryServer"]]});Ke();Ke();_t();var N8=Ie("util"),T0=class extends ct{constructor(){super(...arguments);this.verbose=fe.Boolean("-v,--verbose",!1,{description:"Print the setting description on top of the regular key/value information"});this.why=fe.Boolean("--why",!1,{description:"Print the reason why a setting is set a particular way"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins,{strict:!1});return(await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{if(r.invalid.size>0&&!this.json){for(let[n,u]of r.invalid)a.reportError(34,`Invalid configuration key "${n}" in ${u}`);a.reportSeparator()}if(this.json){let n=We.sortMap(r.settings.keys(),u=>u);for(let u of n){let A=r.settings.get(u),p=r.getSpecial(u,{hideSecrets:!0,getNativePaths:!0}),h=r.sources.get(u);this.verbose?a.reportJson({key:u,effective:p,source:h}):a.reportJson({key:u,effective:p,source:h,...A})}}else{let n=We.sortMap(r.settings.keys(),p=>p),u=n.reduce((p,h)=>Math.max(p,h.length),0),A={breakLength:1/0,colors:r.get("enableColors"),maxArrayLength:2};if(this.why||this.verbose){let p=n.map(C=>{let w=r.settings.get(C);if(!w)throw new Error(`Assertion failed: This settings ("${C}") should have been registered`);let v=this.why?r.sources.get(C)||"<default>":w.description;return[C,v]}),h=p.reduce((C,[,w])=>Math.max(C,w.length),0);for(let[C,w]of p)a.reportInfo(null,`${C.padEnd(u," ")} ${w.padEnd(h," ")} ${(0,N8.inspect)(r.getSpecial(C,{hideSecrets:!0,getNativePaths:!0}),A)}`)}else for(let p of n)a.reportInfo(null,`${p.padEnd(u," ")} ${(0,N8.inspect)(r.getSpecial(p,{hideSecrets:!0,getNativePaths:!0}),A)}`)}})).exitCode()}};T0.paths=[["config"]],T0.usage=it.Usage({description:"display the current configuration",details:` |
410 | This command prints the current active configuration settings. | 410 | This command prints the current active configuration settings. |
411 | `,examples:[["Print the active configuration settings","$0 config"]]});Ke();_t();$a();var Xb={};Yt(Xb,{Strategy:()=>X1,acceptedStrategies:()=>W0t,dedupe:()=>R8});Ke();Ke();var ude=tt(Jo()),X1=(e=>(e.HIGHEST="highest",e))(X1||{}),W0t=new Set(Object.values(X1)),Y0t={highest:async(t,e,{resolver:r,fetcher:o,resolveOptions:a,fetchOptions:n})=>{let u=new Map;for(let[p,h]of t.storedResolutions){let C=t.storedDescriptors.get(p);if(typeof C>"u")throw new Error(`Assertion failed: The descriptor (${p}) should have been registered`);Ye.getSetWithDefault(u,C.identHash).add(h)}let A=new Map(Ye.mapAndFilter(t.storedDescriptors.values(),p=>Y.isVirtualDescriptor(p)?Ye.mapAndFilter.skip:[p.descriptorHash,Ye.makeDeferred()]));for(let p of t.storedDescriptors.values()){let h=A.get(p.descriptorHash);if(typeof h>"u")throw new Error(`Assertion failed: The descriptor (${p.descriptorHash}) should have been registered`);let C=t.storedResolutions.get(p.descriptorHash);if(typeof C>"u")throw new Error(`Assertion failed: The resolution (${p.descriptorHash}) should have been registered`);let w=t.originalPackages.get(C);if(typeof w>"u")throw new Error(`Assertion failed: The package (${C}) should have been registered`);Promise.resolve().then(async()=>{var re;let v=r.getResolutionDependencies(p,a),b=Object.fromEntries(await Ye.allSettledSafe(Object.entries(v).map(async([oe,pe])=>{let he=A.get(pe.descriptorHash);if(typeof he>"u")throw new Error(`Assertion failed: The descriptor (${pe.descriptorHash}) should have been registered`);let ve=await he.promise;if(!ve)throw new Error("Assertion failed: Expected the dependency to have been through the dedupe process itself");return[oe,ve.updatedPackage]})));if(e.length&&!ude.default.isMatch(Y.stringifyIdent(p),e)||!r.shouldPersistResolution(w,a))return w;let E=u.get(p.identHash);if(typeof E>"u")throw new Error(`Assertion failed: The resolutions (${p.identHash}) should have been registered`);if(E.size===1)return w;let R=[...E].map(oe=>{let pe=t.originalPackages.get(oe);if(typeof pe>"u")throw new Error(`Assertion failed: The package (${oe}) should have been registered`);return pe}),L=await r.getSatisfying(p,b,R,a),_=(re=L.locators)==null?void 0:re[0];if(typeof _>"u"||!L.sorted)return w;let J=t.originalPackages.get(_.locatorHash);if(typeof J>"u")throw new Error(`Assertion failed: The package (${_.locatorHash}) should have been registered`);return J}).then(async v=>{let b=await t.preparePackage(v,{resolver:r,resolveOptions:a});h.resolve({descriptor:p,currentPackage:w,updatedPackage:v,resolvedPackage:b})}).catch(v=>{h.reject(v)})}return[...A.values()].map(p=>p.promise)}};async function R8(t,{strategy:e,patterns:r,cache:o,report:a}){let{configuration:n}=t,u=new xi,A=n.makeResolver(),p=n.makeFetcher(),h={cache:o,checksums:t.storedChecksums,fetcher:p,project:t,report:u,cacheOptions:{skipIntegrityCheck:!0}},C={project:t,resolver:A,report:u,fetchOptions:h};return await a.startTimerPromise("Deduplication step",async()=>{let w=Y0t[e],v=await w(t,r,{resolver:A,resolveOptions:C,fetcher:p,fetchOptions:h}),b=Vs.progressViaCounter(v.length);await a.reportProgress(b);let E=0;await Promise.all(v.map(_=>_.then(J=>{if(J===null||J.currentPackage.locatorHash===J.updatedPackage.locatorHash)return;E++;let{descriptor:re,currentPackage:oe,updatedPackage:pe}=J;a.reportInfo(0,`${Y.prettyDescriptor(n,re)} can be deduped from ${Y.prettyLocator(n,oe)} to ${Y.prettyLocator(n,pe)}`),a.reportJson({descriptor:Y.stringifyDescriptor(re),currentResolution:Y.stringifyLocator(oe),updatedResolution:Y.stringifyLocator(pe)}),t.storedResolutions.set(re.descriptorHash,pe.locatorHash)}).finally(()=>b.tick())));let R;switch(E){case 0:R="No packages";break;case 1:R="One package";break;default:R=`${E} packages`}let L=ye.pretty(n,e,ye.Type.CODE);return a.reportInfo(0,`${R} can be deduped using the ${L} strategy`),E})}var R0=class extends ct{constructor(){super(...arguments);this.strategy=fe.String("-s,--strategy","highest",{description:"The strategy to use when deduping dependencies",validator:Gs(X1)});this.check=fe.Boolean("-c,--check",!1,{description:"Exit with exit code 1 when duplicates are found, without persisting the dependency tree"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.mode=fe.String("--mode",{description:"Change what artifacts installs generate",validator:Gs(fl)});this.patterns=fe.Rest()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd),a=await Ur.find(r);await o.restoreInstallState({restoreResolutions:!1});let n=0,u=await Ct.start({configuration:r,includeFooter:!1,stdout:this.context.stdout,json:this.json},async A=>{n=await R8(o,{strategy:this.strategy,patterns:this.patterns,cache:a,report:A})});return u.hasErrors()?u.exitCode():this.check?n?1:0:(await Ct.start({configuration:r,stdout:this.context.stdout,json:this.json},async p=>{await o.install({cache:a,report:p,mode:this.mode})})).exitCode()}};R0.paths=[["dedupe"]],R0.usage=it.Usage({description:"deduplicate dependencies with overlapping ranges",details:"\n Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\n\n This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\n\n - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\n\n **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\n\n If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\n\n If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n ### In-depth explanation:\n\n Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\n\n Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\n ",examples:[["Dedupe all packages","$0 dedupe"],["Dedupe all packages using a specific strategy","$0 dedupe --strategy highest"],["Dedupe a specific package","$0 dedupe lodash"],["Dedupe all packages with the `@babel/*` scope","$0 dedupe '@babel/*'"],["Check for duplicates (can be used as a CI step)","$0 dedupe --check"]]});Ke();_t();var Yd=class extends ct{async execute(){let{plugins:e}=await Xe.find(this.context.cwd,this.context.plugins),r=[];for(let u of e){let{commands:A}=u[1];if(A){let h=vo.from(A).definitions();r.push([u[0],h])}}let o=this.cli.definitions(),a=(u,A)=>u.split(" ").slice(1).join()===A.split(" ").slice(1).join(),n=Ade()["@yarnpkg/builder"].bundles.standard;for(let u of r){let A=u[1];for(let p of A)o.find(h=>a(h.path,p.path)).plugin={name:u[0],isDefault:n.includes(u[0])}}this.context.stdout.write(`${JSON.stringify(o,null,2)} | 411 | `,examples:[["Print the active configuration settings","$0 config"]]});Ke();_t();rl();var aQ={};Yt(aQ,{Strategy:()=>n2,acceptedStrategies:()=>oht,dedupe:()=>L8});Ke();Ke();var mde=tt(zo()),n2=(e=>(e.HIGHEST="highest",e))(n2||{}),oht=new Set(Object.values(n2)),aht={highest:async(t,e,{resolver:r,fetcher:o,resolveOptions:a,fetchOptions:n})=>{let u=new Map;for(let[p,h]of t.storedResolutions){let C=t.storedDescriptors.get(p);if(typeof C>"u")throw new Error(`Assertion failed: The descriptor (${p}) should have been registered`);We.getSetWithDefault(u,C.identHash).add(h)}let A=new Map(We.mapAndFilter(t.storedDescriptors.values(),p=>Y.isVirtualDescriptor(p)?We.mapAndFilter.skip:[p.descriptorHash,We.makeDeferred()]));for(let p of t.storedDescriptors.values()){let h=A.get(p.descriptorHash);if(typeof h>"u")throw new Error(`Assertion failed: The descriptor (${p.descriptorHash}) should have been registered`);let C=t.storedResolutions.get(p.descriptorHash);if(typeof C>"u")throw new Error(`Assertion failed: The resolution (${p.descriptorHash}) should have been registered`);let w=t.originalPackages.get(C);if(typeof w>"u")throw new Error(`Assertion failed: The package (${C}) should have been registered`);Promise.resolve().then(async()=>{var re;let v=r.getResolutionDependencies(p,a),b=Object.fromEntries(await We.allSettledSafe(Object.entries(v).map(async([ae,he])=>{let pe=A.get(he.descriptorHash);if(typeof pe>"u")throw new Error(`Assertion failed: The descriptor (${he.descriptorHash}) should have been registered`);let De=await pe.promise;if(!De)throw new Error("Assertion failed: Expected the dependency to have been through the dedupe process itself");return[ae,De.updatedPackage]})));if(e.length&&!mde.default.isMatch(Y.stringifyIdent(p),e)||!r.shouldPersistResolution(w,a))return w;let E=u.get(p.identHash);if(typeof E>"u")throw new Error(`Assertion failed: The resolutions (${p.identHash}) should have been registered`);if(E.size===1)return w;let R=[...E].map(ae=>{let he=t.originalPackages.get(ae);if(typeof he>"u")throw new Error(`Assertion failed: The package (${ae}) should have been registered`);return he}),L=await r.getSatisfying(p,b,R,a),_=(re=L.locators)==null?void 0:re[0];if(typeof _>"u"||!L.sorted)return w;let V=t.originalPackages.get(_.locatorHash);if(typeof V>"u")throw new Error(`Assertion failed: The package (${_.locatorHash}) should have been registered`);return V}).then(async v=>{let b=await t.preparePackage(v,{resolver:r,resolveOptions:a});h.resolve({descriptor:p,currentPackage:w,updatedPackage:v,resolvedPackage:b})}).catch(v=>{h.reject(v)})}return[...A.values()].map(p=>p.promise)}};async function L8(t,{strategy:e,patterns:r,cache:o,report:a}){let{configuration:n}=t,u=new xi,A=n.makeResolver(),p=n.makeFetcher(),h={cache:o,checksums:t.storedChecksums,fetcher:p,project:t,report:u,cacheOptions:{skipIntegrityCheck:!0}},C={project:t,resolver:A,report:u,fetchOptions:h};return await a.startTimerPromise("Deduplication step",async()=>{let w=aht[e],v=await w(t,r,{resolver:A,resolveOptions:C,fetcher:p,fetchOptions:h}),b=Js.progressViaCounter(v.length);await a.reportProgress(b);let E=0;await Promise.all(v.map(_=>_.then(V=>{if(V===null||V.currentPackage.locatorHash===V.updatedPackage.locatorHash)return;E++;let{descriptor:re,currentPackage:ae,updatedPackage:he}=V;a.reportInfo(0,`${Y.prettyDescriptor(n,re)} can be deduped from ${Y.prettyLocator(n,ae)} to ${Y.prettyLocator(n,he)}`),a.reportJson({descriptor:Y.stringifyDescriptor(re),currentResolution:Y.stringifyLocator(ae),updatedResolution:Y.stringifyLocator(he)}),t.storedResolutions.set(re.descriptorHash,he.locatorHash)}).finally(()=>b.tick())));let R;switch(E){case 0:R="No packages";break;case 1:R="One package";break;default:R=`${E} packages`}let L=ye.pretty(n,e,ye.Type.CODE);return a.reportInfo(0,`${R} can be deduped using the ${L} strategy`),E})}var N0=class extends ct{constructor(){super(...arguments);this.strategy=fe.String("-s,--strategy","highest",{description:"The strategy to use when deduping dependencies",validator:Gs(n2)});this.check=fe.Boolean("-c,--check",!1,{description:"Exit with exit code 1 when duplicates are found, without persisting the dependency tree"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.mode=fe.String("--mode",{description:"Change what artifacts installs generate",validator:Gs(dl)});this.patterns=fe.Rest()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd),a=await Ur.find(r);await o.restoreInstallState({restoreResolutions:!1});let n=0,u=await Ct.start({configuration:r,includeFooter:!1,stdout:this.context.stdout,json:this.json},async A=>{n=await L8(o,{strategy:this.strategy,patterns:this.patterns,cache:a,report:A})});return u.hasErrors()?u.exitCode():this.check?n?1:0:(await Ct.start({configuration:r,stdout:this.context.stdout,json:this.json},async p=>{await o.install({cache:a,report:p,mode:this.mode})})).exitCode()}};N0.paths=[["dedupe"]],N0.usage=it.Usage({description:"deduplicate dependencies with overlapping ranges",details:"\n Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\n\n This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\n\n - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\n\n **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\n\n If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\n\n If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n ### In-depth explanation:\n\n Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\n\n Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\n ",examples:[["Dedupe all packages","$0 dedupe"],["Dedupe all packages using a specific strategy","$0 dedupe --strategy highest"],["Dedupe a specific package","$0 dedupe lodash"],["Dedupe all packages with the `@babel/*` scope","$0 dedupe '@babel/*'"],["Check for duplicates (can be used as a CI step)","$0 dedupe --check"]]});Ke();_t();var zd=class extends ct{async execute(){let{plugins:e}=await Xe.find(this.context.cwd,this.context.plugins),r=[];for(let u of e){let{commands:A}=u[1];if(A){let h=vo.from(A).definitions();r.push([u[0],h])}}let o=this.cli.definitions(),a=(u,A)=>u.split(" ").slice(1).join()===A.split(" ").slice(1).join(),n=yde()["@yarnpkg/builder"].bundles.standard;for(let u of r){let A=u[1];for(let p of A)o.find(h=>a(h.path,p.path)).plugin={name:u[0],isDefault:n.includes(u[0])}}this.context.stdout.write(`${JSON.stringify(o,null,2)} |
412 | `)}};Yd.paths=[["--clipanion=definitions"]];var Kd=class extends ct{async execute(){this.context.stdout.write(this.cli.usage(null))}};Kd.paths=[["help"],["--help"],["-h"]];Ke();bt();_t();var lC=class extends ct{constructor(){super(...arguments);this.leadingArgument=fe.String();this.args=fe.Proxy()}async execute(){if(this.leadingArgument.match(/[\\/]/)&&!Y.tryParseIdent(this.leadingArgument)){let r=V.resolve(this.context.cwd,Ae.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:r})}else return await this.cli.run(["run",this.leadingArgument,...this.args])}};Ke();var Jd=class extends ct{async execute(){this.context.stdout.write(`${On||"<unknown>"} | 412 | `)}};zd.paths=[["--clipanion=definitions"]];var Xd=class extends ct{async execute(){this.context.stdout.write(this.cli.usage(null))}};Xd.paths=[["help"],["--help"],["-h"]];Ke();St();_t();var pC=class extends ct{constructor(){super(...arguments);this.leadingArgument=fe.String();this.args=fe.Proxy()}async execute(){if(this.leadingArgument.match(/[\\/]/)&&!Y.tryParseIdent(this.leadingArgument)){let r=J.resolve(this.context.cwd,ue.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:r})}else return await this.cli.run(["run",this.leadingArgument,...this.args])}};Ke();var Zd=class extends ct{async execute(){this.context.stdout.write(`${On||"<unknown>"} |
413 | `)}};Jd.paths=[["-v"],["--version"]];Ke();Ke();_t();var T0=class extends ct{constructor(){super(...arguments);this.commandName=fe.String();this.args=fe.Proxy()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,locator:a}=await St.find(r,this.context.cwd);return await o.restoreInstallState(),await sn.executePackageShellcode(a,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:o})}};T0.paths=[["exec"]],T0.usage=it.Usage({description:"execute a shell script",details:` | 413 | `)}};Zd.paths=[["-v"],["--version"]];Ke();Ke();_t();var L0=class extends ct{constructor(){super(...arguments);this.commandName=fe.String();this.args=fe.Proxy()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,locator:a}=await Pt.find(r,this.context.cwd);return await o.restoreInstallState(),await sn.executePackageShellcode(a,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:o})}};L0.paths=[["exec"]],L0.usage=it.Usage({description:"execute a shell script",details:` |
414 | This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell. | 414 | This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell. |
415 | 415 | ||
416 | It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). | 416 | It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). |
417 | `,examples:[["Execute a single shell command","$0 exec echo Hello World"],["Execute a shell script",'$0 exec "tsc & babel src --out-dir lib"']]});Ke();_t();$a();var N0=class extends ct{constructor(){super(...arguments);this.hash=fe.String({required:!1,validator:Xg(JI(),[VI(/^p[0-9a-f]{5}$/)])})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd);return await o.restoreInstallState({restoreResolutions:!1}),await o.applyLightResolution(),typeof this.hash<"u"?await J0t(this.hash,o,{stdout:this.context.stdout}):(await Ct.start({configuration:r,stdout:this.context.stdout,includeFooter:!1},async n=>{let u=[([,A])=>Y.stringifyLocator(o.storedPackages.get(A.subject)),([,A])=>Y.stringifyIdent(A.requested)];for(let[A,p]of Ye.sortMap(o.peerRequirements,u)){let h=o.storedPackages.get(p.subject);if(typeof h>"u")throw new Error("Assertion failed: Expected the subject package to have been registered");let C=o.storedPackages.get(p.rootRequester);if(typeof C>"u")throw new Error("Assertion failed: Expected the root package to have been registered");let w=h.dependencies.get(p.requested.identHash)??null,v=ye.pretty(r,A,ye.Type.CODE),b=Y.prettyLocator(r,h),E=Y.prettyIdent(r,p.requested),R=Y.prettyIdent(r,C),L=p.allRequesters.length-1,_=`descendant${L===1?"":"s"}`,J=L>0?` and ${L} ${_}`:"",re=w!==null?"provides":"doesn't provide";n.reportInfo(null,`${v} \u2192 ${b} ${re} ${E} to ${R}${J}`)}})).exitCode()}};N0.paths=[["explain","peer-requirements"]],N0.usage=it.Usage({description:"explain a set of peer requirements",details:` | 417 | `,examples:[["Execute a single shell command","$0 exec echo Hello World"],["Execute a shell script",'$0 exec "tsc & babel src --out-dir lib"']]});Ke();_t();rl();var O0=class extends ct{constructor(){super(...arguments);this.hash=fe.String({required:!1,validator:td($I(),[ew(/^p[0-9a-f]{5}$/)])})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd);return await o.restoreInstallState({restoreResolutions:!1}),await o.applyLightResolution(),typeof this.hash<"u"?await cht(this.hash,o,{stdout:this.context.stdout}):(await Ct.start({configuration:r,stdout:this.context.stdout,includeFooter:!1},async n=>{let u=[([,A])=>Y.stringifyLocator(o.storedPackages.get(A.subject)),([,A])=>Y.stringifyIdent(A.requested)];for(let[A,p]of We.sortMap(o.peerRequirements,u)){let h=o.storedPackages.get(p.subject);if(typeof h>"u")throw new Error("Assertion failed: Expected the subject package to have been registered");let C=o.storedPackages.get(p.rootRequester);if(typeof C>"u")throw new Error("Assertion failed: Expected the root package to have been registered");let w=h.dependencies.get(p.requested.identHash)??null,v=ye.pretty(r,A,ye.Type.CODE),b=Y.prettyLocator(r,h),E=Y.prettyIdent(r,p.requested),R=Y.prettyIdent(r,C),L=p.allRequesters.length-1,_=`descendant${L===1?"":"s"}`,V=L>0?` and ${L} ${_}`:"",re=w!==null?"provides":"doesn't provide";n.reportInfo(null,`${v} \u2192 ${b} ${re} ${E} to ${R}${V}`)}})).exitCode()}};O0.paths=[["explain","peer-requirements"]],O0.usage=it.Usage({description:"explain a set of peer requirements",details:` |
418 | A set of peer requirements represents all peer requirements that a dependent must satisfy when providing a given peer request to a requester and its descendants. | 418 | A set of peer requirements represents all peer requirements that a dependent must satisfy when providing a given peer request to a requester and its descendants. |
419 | 419 | ||
420 | When the hash argument is specified, this command prints a detailed explanation of all requirements of the set corresponding to the hash and whether they're satisfied or not. | 420 | When the hash argument is specified, this command prints a detailed explanation of all requirements of the set corresponding to the hash and whether they're satisfied or not. |
@@ -422,9 +422,9 @@ Try running the command again with the package name prefixed: ${ye.pretty(r,"yar | |||
422 | When used without arguments, this command lists all sets of peer requirements and the corresponding hash that can be used to get detailed information about a given set. | 422 | When used without arguments, this command lists all sets of peer requirements and the corresponding hash that can be used to get detailed information about a given set. |
423 | 423 | ||
424 | **Note:** A hash is a six-letter p-prefixed code that can be obtained from peer dependency warnings or from the list of all peer requirements (\`yarn explain peer-requirements\`). | 424 | **Note:** A hash is a six-letter p-prefixed code that can be obtained from peer dependency warnings or from the list of all peer requirements (\`yarn explain peer-requirements\`). |
425 | `,examples:[["Explain the corresponding set of peer requirements for a hash","$0 explain peer-requirements p1a4ed"],["List all sets of peer requirements","$0 explain peer-requirements"]]});async function J0t(t,e,r){let{configuration:o}=e,a=e.peerRequirements.get(t);if(typeof a>"u")throw new Error(`No peerDependency requirements found for hash: "${t}"`);return(await Ct.start({configuration:o,stdout:r.stdout,includeFooter:!1},async u=>{let A=e.storedPackages.get(a.subject);if(typeof A>"u")throw new Error("Assertion failed: Expected the subject package to have been registered");let p=e.storedPackages.get(a.rootRequester);if(typeof p>"u")throw new Error("Assertion failed: Expected the root package to have been registered");let h=A.dependencies.get(a.requested.identHash)??null,C=h!==null?e.storedResolutions.get(h.descriptorHash):null;if(typeof C>"u")throw new Error("Assertion failed: Expected the resolution to have been registered");let w=C!==null?e.storedPackages.get(C):null;if(typeof w>"u")throw new Error("Assertion failed: Expected the provided package to have been registered");let v=[...a.allRequesters.values()].map(_=>{let J=e.storedPackages.get(_);if(typeof J>"u")throw new Error("Assertion failed: Expected the package to be registered");let re=Y.devirtualizeLocator(J),oe=e.storedPackages.get(re.locatorHash);if(typeof oe>"u")throw new Error("Assertion failed: Expected the package to be registered");let pe=oe.peerDependencies.get(a.requested.identHash);if(typeof pe>"u")throw new Error("Assertion failed: Expected the peer dependency to be registered");return{pkg:J,peerDependency:pe}});if(w!==null){let _=v.every(({peerDependency:J})=>Tr.satisfiesWithPrereleases(w.version,J.range));u.reportInfo(0,`${Y.prettyLocator(o,A)} provides ${Y.prettyLocator(o,w)} with version ${Y.prettyReference(o,w.version??"<missing>")}, which ${_?"satisfies":"doesn't satisfy"} the following requirements:`)}else u.reportInfo(0,`${Y.prettyLocator(o,A)} doesn't provide ${Y.prettyIdent(o,a.requested)}, breaking the following requirements:`);u.reportSeparator();let b=ye.mark(o),E=[];for(let{pkg:_,peerDependency:J}of Ye.sortMap(v,re=>Y.stringifyLocator(re.pkg))){let oe=(w!==null?Tr.satisfiesWithPrereleases(w.version,J.range):!1)?b.Check:b.Cross;E.push({stringifiedLocator:Y.stringifyLocator(_),prettyLocator:Y.prettyLocator(o,_),prettyRange:Y.prettyRange(o,J.range),mark:oe})}let R=Math.max(...E.map(({stringifiedLocator:_})=>_.length)),L=Math.max(...E.map(({prettyRange:_})=>_.length));for(let{stringifiedLocator:_,prettyLocator:J,prettyRange:re,mark:oe}of Ye.sortMap(E,({stringifiedLocator:pe})=>pe))u.reportInfo(null,`${J.padEnd(R+(J.length-_.length)," ")} \u2192 ${re.padEnd(L," ")} ${oe}`);E.length>1&&(u.reportSeparator(),u.reportInfo(0,`Note: these requirements start with ${Y.prettyLocator(e.configuration,p)}`))})).exitCode()}Ke();_t();$a();Ke();Ke();bt();_t();var fde=tt(ii()),L0=class extends ct{constructor(){super(...arguments);this.useYarnPath=fe.Boolean("--yarn-path",{description:"Set the yarnPath setting even if the version can be accessed by Corepack"});this.onlyIfNeeded=fe.Boolean("--only-if-needed",!1,{description:"Only lock the Yarn version if it isn't already locked"});this.version=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins);if(this.onlyIfNeeded&&r.get("yarnPath")){let A=r.sources.get("yarnPath");if(!A)throw new Error("Assertion failed: Expected 'yarnPath' to have a source");let p=r.projectCwd??r.startingCwd;if(V.contains(p,A))return 0}let o=()=>{if(typeof On>"u")throw new ot("The --install flag can only be used without explicit version specifier from the Yarn CLI");return`file://${process.argv[1]}`},a,n=(A,p)=>({version:p,url:A.replace(/\{\}/g,p)});if(this.version==="self")a={url:o(),version:On??"self"};else if(this.version==="latest"||this.version==="berry"||this.version==="stable")a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await Z1(r,"stable"));else if(this.version==="canary")a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await Z1(r,"canary"));else if(this.version==="classic")a={url:"https://classic.yarnpkg.com/latest.js",version:"classic"};else if(this.version.match(/^https?:/))a={url:this.version,version:"remote"};else if(this.version.match(/^\.{0,2}[\\/]/)||Ae.isAbsolute(this.version))a={url:`file://${V.resolve(Ae.toPortablePath(this.version))}`,version:"file"};else if(Tr.satisfiesWithPrereleases(this.version,">=2.0.0"))a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",this.version);else if(Tr.satisfiesWithPrereleases(this.version,"^0.x || ^1.x"))a=n("https://github.com/yarnpkg/yarn/releases/download/v{}/yarn-{}.js",this.version);else if(Tr.validRange(this.version))a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await V0t(r,this.version));else throw new ot(`Invalid version descriptor "${this.version}"`);return(await Ct.start({configuration:r,stdout:this.context.stdout,includeLogs:!this.context.quiet},async A=>{let p=async()=>{let h="file://";return a.url.startsWith(h)?(A.reportInfo(0,`Retrieving ${ye.pretty(r,a.url,ye.Type.PATH)}`),await ae.readFilePromise(a.url.slice(h.length))):(A.reportInfo(0,`Downloading ${ye.pretty(r,a.url,ye.Type.URL)}`),await ln.get(a.url,{configuration:r}))};await T8(r,a.version,p,{report:A,useYarnPath:this.useYarnPath})})).exitCode()}};L0.paths=[["set","version"]],L0.usage=it.Usage({description:"lock the Yarn version used by the project",details:"\n This command will set a specific release of Yarn to be used by Corepack: https://nodejs.org/api/corepack.html.\n\n By default it only will set the `packageManager` field at the root of your project, but if the referenced release cannot be represented this way, if you already have `yarnPath` configured, or if you set the `--yarn-path` command line flag, then the release will also be downloaded from the Yarn GitHub repository, stored inside your project, and referenced via the `yarnPath` settings from your project `.yarnrc.yml` file.\n\n A very good use case for this command is to enforce the version of Yarn used by the any single member of your team inside a same project - by doing this you ensure that you have control on Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting a different behavior than you.\n\n The version specifier can be:\n\n - a tag:\n - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\n - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\n - `classic` -> the most recent classic (`^0.x || ^1.x`) release\n\n - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\n\n - a semver version (e.g. `2.4.1`, `1.22.1`)\n\n - a local file referenced through either a relative or absolute path\n\n - `self` -> the version used to invoke the command\n ",examples:[["Download the latest release from the Yarn repository","$0 set version latest"],["Download the latest canary release from the Yarn repository","$0 set version canary"],["Download the latest classic release from the Yarn repository","$0 set version classic"],["Download the most recent Yarn 3 build","$0 set version 3.x"],["Download a specific Yarn 2 build","$0 set version 2.0.0-rc.30"],["Switch back to a specific Yarn 1 release","$0 set version 1.22.1"],["Use a release from the local filesystem","$0 set version ./yarn.cjs"],["Use a release from a URL","$0 set version https://repo.yarnpkg.com/3.1.0/packages/yarnpkg-cli/bin/yarn.js"],["Download the version used to invoke the command","$0 set version self"]]});async function V0t(t,e){let o=(await ln.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0})).tags.filter(a=>Tr.satisfiesWithPrereleases(a,e));if(o.length===0)throw new ot(`No matching release found for range ${ye.pretty(t,e,ye.Type.RANGE)}.`);return o[0]}async function Z1(t,e){let r=await ln.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0});if(!r.latest[e])throw new ot(`Tag ${ye.pretty(t,e,ye.Type.RANGE)} not found`);return r.latest[e]}async function T8(t,e,r,{report:o,useYarnPath:a}){let n,u=async()=>(typeof n>"u"&&(n=await r()),n);if(e===null){let re=await u();await ae.mktempPromise(async oe=>{let pe=V.join(oe,"yarn.cjs");await ae.writeFilePromise(pe,re);let{stdout:he}=await Mr.execvp(process.execPath,[Ae.fromPortablePath(pe),"--version"],{cwd:oe,env:{...process.env,YARN_IGNORE_PATH:"1"}});if(e=he.trim(),!fde.default.valid(e))throw new Error(`Invalid semver version. ${ye.pretty(t,"yarn --version",ye.Type.CODE)} returned: | 425 | `,examples:[["Explain the corresponding set of peer requirements for a hash","$0 explain peer-requirements p1a4ed"],["List all sets of peer requirements","$0 explain peer-requirements"]]});async function cht(t,e,r){let{configuration:o}=e,a=e.peerRequirements.get(t);if(typeof a>"u")throw new Error(`No peerDependency requirements found for hash: "${t}"`);return(await Ct.start({configuration:o,stdout:r.stdout,includeFooter:!1},async u=>{let A=e.storedPackages.get(a.subject);if(typeof A>"u")throw new Error("Assertion failed: Expected the subject package to have been registered");let p=e.storedPackages.get(a.rootRequester);if(typeof p>"u")throw new Error("Assertion failed: Expected the root package to have been registered");let h=A.dependencies.get(a.requested.identHash)??null,C=h!==null?e.storedResolutions.get(h.descriptorHash):null;if(typeof C>"u")throw new Error("Assertion failed: Expected the resolution to have been registered");let w=C!==null?e.storedPackages.get(C):null;if(typeof w>"u")throw new Error("Assertion failed: Expected the provided package to have been registered");let v=[...a.allRequesters.values()].map(_=>{let V=e.storedPackages.get(_);if(typeof V>"u")throw new Error("Assertion failed: Expected the package to be registered");let re=Y.devirtualizeLocator(V),ae=e.storedPackages.get(re.locatorHash);if(typeof ae>"u")throw new Error("Assertion failed: Expected the package to be registered");let he=ae.peerDependencies.get(a.requested.identHash);if(typeof he>"u")throw new Error("Assertion failed: Expected the peer dependency to be registered");return{pkg:V,peerDependency:he}});if(w!==null){let _=v.every(({peerDependency:V})=>Tr.satisfiesWithPrereleases(w.version,V.range));u.reportInfo(0,`${Y.prettyLocator(o,A)} provides ${Y.prettyLocator(o,w)} with version ${Y.prettyReference(o,w.version??"<missing>")}, which ${_?"satisfies":"doesn't satisfy"} the following requirements:`)}else u.reportInfo(0,`${Y.prettyLocator(o,A)} doesn't provide ${Y.prettyIdent(o,a.requested)}, breaking the following requirements:`);u.reportSeparator();let b=ye.mark(o),E=[];for(let{pkg:_,peerDependency:V}of We.sortMap(v,re=>Y.stringifyLocator(re.pkg))){let ae=(w!==null?Tr.satisfiesWithPrereleases(w.version,V.range):!1)?b.Check:b.Cross;E.push({stringifiedLocator:Y.stringifyLocator(_),prettyLocator:Y.prettyLocator(o,_),prettyRange:Y.prettyRange(o,V.range),mark:ae})}let R=Math.max(...E.map(({stringifiedLocator:_})=>_.length)),L=Math.max(...E.map(({prettyRange:_})=>_.length));for(let{stringifiedLocator:_,prettyLocator:V,prettyRange:re,mark:ae}of We.sortMap(E,({stringifiedLocator:he})=>he))u.reportInfo(null,`${V.padEnd(R+(V.length-_.length)," ")} \u2192 ${re.padEnd(L," ")} ${ae}`);E.length>1&&(u.reportSeparator(),u.reportInfo(0,`Note: these requirements start with ${Y.prettyLocator(e.configuration,p)}`))})).exitCode()}Ke();_t();rl();Ke();Ke();St();_t();var Ede=tt(si()),M0=class extends ct{constructor(){super(...arguments);this.useYarnPath=fe.Boolean("--yarn-path",{description:"Set the yarnPath setting even if the version can be accessed by Corepack"});this.onlyIfNeeded=fe.Boolean("--only-if-needed",!1,{description:"Only lock the Yarn version if it isn't already locked"});this.version=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins);if(this.onlyIfNeeded&&r.get("yarnPath")){let A=r.sources.get("yarnPath");if(!A)throw new Error("Assertion failed: Expected 'yarnPath' to have a source");let p=r.projectCwd??r.startingCwd;if(J.contains(p,A))return 0}let o=()=>{if(typeof On>"u")throw new ot("The --install flag can only be used without explicit version specifier from the Yarn CLI");return`file://${process.argv[1]}`},a,n=(A,p)=>({version:p,url:A.replace(/\{\}/g,p)});if(this.version==="self")a={url:o(),version:On??"self"};else if(this.version==="latest"||this.version==="berry"||this.version==="stable")a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await i2(r,"stable"));else if(this.version==="canary")a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await i2(r,"canary"));else if(this.version==="classic")a={url:"https://classic.yarnpkg.com/latest.js",version:"classic"};else if(this.version.match(/^https?:/))a={url:this.version,version:"remote"};else if(this.version.match(/^\.{0,2}[\\/]/)||ue.isAbsolute(this.version))a={url:`file://${J.resolve(ue.toPortablePath(this.version))}`,version:"file"};else if(Tr.satisfiesWithPrereleases(this.version,">=2.0.0"))a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",this.version);else if(Tr.satisfiesWithPrereleases(this.version,"^0.x || ^1.x"))a=n("https://github.com/yarnpkg/yarn/releases/download/v{}/yarn-{}.js",this.version);else if(Tr.validRange(this.version))a=n("https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js",await uht(r,this.version));else throw new ot(`Invalid version descriptor "${this.version}"`);return(await Ct.start({configuration:r,stdout:this.context.stdout,includeLogs:!this.context.quiet},async A=>{let p=async()=>{let h="file://";return a.url.startsWith(h)?(A.reportInfo(0,`Retrieving ${ye.pretty(r,a.url,ye.Type.PATH)}`),await oe.readFilePromise(a.url.slice(h.length))):(A.reportInfo(0,`Downloading ${ye.pretty(r,a.url,ye.Type.URL)}`),await ln.get(a.url,{configuration:r}))};await O8(r,a.version,p,{report:A,useYarnPath:this.useYarnPath})})).exitCode()}};M0.paths=[["set","version"]],M0.usage=it.Usage({description:"lock the Yarn version used by the project",details:"\n This command will set a specific release of Yarn to be used by Corepack: https://nodejs.org/api/corepack.html.\n\n By default it only will set the `packageManager` field at the root of your project, but if the referenced release cannot be represented this way, if you already have `yarnPath` configured, or if you set the `--yarn-path` command line flag, then the release will also be downloaded from the Yarn GitHub repository, stored inside your project, and referenced via the `yarnPath` settings from your project `.yarnrc.yml` file.\n\n A very good use case for this command is to enforce the version of Yarn used by any single member of your team inside the same project - by doing this you ensure that you have control over Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting different behavior.\n\n The version specifier can be:\n\n - a tag:\n - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\n - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\n - `classic` -> the most recent classic (`^0.x || ^1.x`) release\n\n - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\n\n - a semver version (e.g. `2.4.1`, `1.22.1`)\n\n - a local file referenced through either a relative or absolute path\n\n - `self` -> the version used to invoke the command\n ",examples:[["Download the latest release from the Yarn repository","$0 set version latest"],["Download the latest canary release from the Yarn repository","$0 set version canary"],["Download the latest classic release from the Yarn repository","$0 set version classic"],["Download the most recent Yarn 3 build","$0 set version 3.x"],["Download a specific Yarn 2 build","$0 set version 2.0.0-rc.30"],["Switch back to a specific Yarn 1 release","$0 set version 1.22.1"],["Use a release from the local filesystem","$0 set version ./yarn.cjs"],["Use a release from a URL","$0 set version https://repo.yarnpkg.com/3.1.0/packages/yarnpkg-cli/bin/yarn.js"],["Download the version used to invoke the command","$0 set version self"]]});async function uht(t,e){let o=(await ln.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0})).tags.filter(a=>Tr.satisfiesWithPrereleases(a,e));if(o.length===0)throw new ot(`No matching release found for range ${ye.pretty(t,e,ye.Type.RANGE)}.`);return o[0]}async function i2(t,e){let r=await ln.get("https://repo.yarnpkg.com/tags",{configuration:t,jsonResponse:!0});if(!r.latest[e])throw new ot(`Tag ${ye.pretty(t,e,ye.Type.RANGE)} not found`);return r.latest[e]}async function O8(t,e,r,{report:o,useYarnPath:a}){let n,u=async()=>(typeof n>"u"&&(n=await r()),n);if(e===null){let re=await u();await oe.mktempPromise(async ae=>{let he=J.join(ae,"yarn.cjs");await oe.writeFilePromise(he,re);let{stdout:pe}=await Mr.execvp(process.execPath,[ue.fromPortablePath(he),"--version"],{cwd:ae,env:{...process.env,YARN_IGNORE_PATH:"1"}});if(e=pe.trim(),!Ede.default.valid(e))throw new Error(`Invalid semver version. ${ye.pretty(t,"yarn --version",ye.Type.CODE)} returned: |
426 | ${e}`)})}let A=t.projectCwd??t.startingCwd,p=V.resolve(A,".yarn/releases"),h=V.resolve(p,`yarn-${e}.cjs`),C=V.relative(t.startingCwd,h),w=Ye.isTaggedYarnVersion(e),v=t.get("yarnPath"),b=!w,E=b||!!v||!!a;if(a===!1){if(b)throw new Jt(0,"You explicitly opted out of yarnPath usage in your command line, but the version you specified cannot be represented by Corepack");E=!1}else!E&&!process.env.COREPACK_ROOT&&(o.reportWarning(0,`You don't seem to have ${ye.applyHyperlink(t,"Corepack","https://nodejs.org/api/corepack.html")} enabled; we'll have to rely on ${ye.applyHyperlink(t,"yarnPath","https://yarnpkg.com/configuration/yarnrc#yarnPath")} instead`),E=!0);if(E){let re=await u();o.reportInfo(0,`Saving the new release in ${ye.pretty(t,C,"magenta")}`),await ae.removePromise(V.dirname(h)),await ae.mkdirPromise(V.dirname(h),{recursive:!0}),await ae.writeFilePromise(h,re,{mode:493}),await Xe.updateConfiguration(A,{yarnPath:V.relative(A,h)})}else await ae.removePromise(V.dirname(h)),await Xe.updateConfiguration(A,{yarnPath:Xe.deleteProperty});let R=await Nt.tryFind(A)||new Nt;R.packageManager=`yarn@${w?e:await Z1(t,"stable")}`;let L={};R.exportTo(L);let _=V.join(A,Nt.fileName),J=`${JSON.stringify(L,null,R.indent)} | 426 | ${e}`)})}let A=t.projectCwd??t.startingCwd,p=J.resolve(A,".yarn/releases"),h=J.resolve(p,`yarn-${e}.cjs`),C=J.relative(t.startingCwd,h),w=We.isTaggedYarnVersion(e),v=t.get("yarnPath"),b=!w,E=b||!!v||!!a;if(a===!1){if(b)throw new Vt(0,"You explicitly opted out of yarnPath usage in your command line, but the version you specified cannot be represented by Corepack");E=!1}else!E&&!process.env.COREPACK_ROOT&&(o.reportWarning(0,`You don't seem to have ${ye.applyHyperlink(t,"Corepack","https://nodejs.org/api/corepack.html")} enabled; we'll have to rely on ${ye.applyHyperlink(t,"yarnPath","https://yarnpkg.com/configuration/yarnrc#yarnPath")} instead`),E=!0);if(E){let re=await u();o.reportInfo(0,`Saving the new release in ${ye.pretty(t,C,"magenta")}`),await oe.removePromise(J.dirname(h)),await oe.mkdirPromise(J.dirname(h),{recursive:!0}),await oe.writeFilePromise(h,re,{mode:493}),await Xe.updateConfiguration(A,{yarnPath:J.relative(A,h)})}else await oe.removePromise(J.dirname(h)),await Xe.updateConfiguration(A,{yarnPath:Xe.deleteProperty});let R=await Nt.tryFind(A)||new Nt;R.packageManager=`yarn@${w?e:await i2(t,"stable")}`;let L={};R.exportTo(L);let _=J.join(A,Nt.fileName),V=`${JSON.stringify(L,null,R.indent)} |
427 | `;return await ae.changeFilePromise(_,J,{automaticNewlines:!0}),{bundleVersion:e}}function pde(t){return dr[YD(t)]}var z0t=/## (?<code>YN[0-9]{4}) - `(?<name>[A-Z_]+)`\n\n(?<details>(?:.(?!##))+)/gs;async function X0t(t){let r=`https://repo.yarnpkg.com/${Ye.isTaggedYarnVersion(On)?On:await Z1(t,"canary")}/packages/gatsby/content/advanced/error-codes.md`,o=await ln.get(r,{configuration:t});return new Map(Array.from(o.toString().matchAll(z0t),({groups:a})=>{if(!a)throw new Error("Assertion failed: Expected the match to have been successful");let n=pde(a.code);if(a.name!==n)throw new Error(`Assertion failed: Invalid error code data: Expected "${a.name}" to be named "${n}"`);return[a.code,a.details]}))}var O0=class extends ct{constructor(){super(...arguments);this.code=fe.String({required:!1,validator:Xg(JI(),[VI(/^YN[0-9]{4}$/)])});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins);if(typeof this.code<"u"){let o=pde(this.code),a=ye.pretty(r,o,ye.Type.CODE),n=this.cli.format().header(`${this.code} - ${a}`),A=(await X0t(r)).get(this.code),p=typeof A<"u"?ye.jsonOrPretty(this.json,r,ye.tuple(ye.Type.MARKDOWN,{text:A,format:this.cli.format(),paragraphs:!0})):`This error code does not have a description. | 427 | `;return await oe.changeFilePromise(_,V,{automaticNewlines:!0}),{bundleVersion:e}}function Cde(t){return dr[tS(t)]}var Aht=/## (?<code>YN[0-9]{4}) - `(?<name>[A-Z_]+)`\n\n(?<details>(?:.(?!##))+)/gs;async function fht(t){let r=`https://repo.yarnpkg.com/${We.isTaggedYarnVersion(On)?On:await i2(t,"canary")}/packages/gatsby/content/advanced/error-codes.md`,o=await ln.get(r,{configuration:t});return new Map(Array.from(o.toString().matchAll(Aht),({groups:a})=>{if(!a)throw new Error("Assertion failed: Expected the match to have been successful");let n=Cde(a.code);if(a.name!==n)throw new Error(`Assertion failed: Invalid error code data: Expected "${a.name}" to be named "${n}"`);return[a.code,a.details]}))}var U0=class extends ct{constructor(){super(...arguments);this.code=fe.String({required:!1,validator:td($I(),[ew(/^YN[0-9]{4}$/)])});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins);if(typeof this.code<"u"){let o=Cde(this.code),a=ye.pretty(r,o,ye.Type.CODE),n=this.cli.format().header(`${this.code} - ${a}`),A=(await fht(r)).get(this.code),p=typeof A<"u"?ye.jsonOrPretty(this.json,r,ye.tuple(ye.Type.MARKDOWN,{text:A,format:this.cli.format(),paragraphs:!0})):`This error code does not have a description. |
428 | 428 | ||
429 | You can help us by editing this page on GitHub \u{1F642}: | 429 | You can help us by editing this page on GitHub \u{1F642}: |
430 | ${ye.jsonOrPretty(this.json,r,ye.tuple(ye.Type.URL,"https://github.com/yarnpkg/berry/blob/master/packages/gatsby/content/advanced/error-codes.md"))} | 430 | ${ye.jsonOrPretty(this.json,r,ye.tuple(ye.Type.URL,"https://github.com/yarnpkg/berry/blob/master/packages/gatsby/content/advanced/error-codes.md"))} |
@@ -432,25 +432,25 @@ ${ye.jsonOrPretty(this.json,r,ye.tuple(ye.Type.URL,"https://github.com/yarnpkg/b | |||
432 | `):this.context.stdout.write(`${n} | 432 | `):this.context.stdout.write(`${n} |
433 | 433 | ||
434 | ${p} | 434 | ${p} |
435 | `)}else{let o={children:Ye.mapAndFilter(Object.entries(dr),([a,n])=>Number.isNaN(Number(a))?Ye.mapAndFilter.skip:{label:Ku(Number(a)),value:ye.tuple(ye.Type.CODE,n)})};Xo.emitTree(o,{configuration:r,stdout:this.context.stdout,json:this.json})}}};O0.paths=[["explain"]],O0.usage=it.Usage({description:"explain an error code",details:` | 435 | `)}else{let o={children:We.mapAndFilter(Object.entries(dr),([a,n])=>Number.isNaN(Number(a))?We.mapAndFilter.skip:{label:Vu(Number(a)),value:ye.tuple(ye.Type.CODE,n)})};$o.emitTree(o,{configuration:r,stdout:this.context.stdout,json:this.json})}}};U0.paths=[["explain"]],U0.usage=it.Usage({description:"explain an error code",details:` |
436 | When the code argument is specified, this command prints its name and its details. | 436 | When the code argument is specified, this command prints its name and its details. |
437 | 437 | ||
438 | When used without arguments, this command lists all error codes and their names. | 438 | When used without arguments, this command lists all error codes and their names. |
439 | `,examples:[["Explain an error code","$0 explain YN0006"],["List all error codes","$0 explain"]]});Ke();bt();_t();var hde=tt(Jo()),M0=class extends ct{constructor(){super(...arguments);this.all=fe.Boolean("-A,--all",!1,{description:"Print versions of a package from the whole project"});this.recursive=fe.Boolean("-R,--recursive",!1,{description:"Print information for all packages, including transitive dependencies"});this.extra=fe.Array("-X,--extra",[],{description:"An array of requests of extra data provided by plugins"});this.cache=fe.Boolean("--cache",!1,{description:"Print information about the cache entry of a package (path, size, checksum)"});this.dependents=fe.Boolean("--dependents",!1,{description:"Print all dependents for each matching package"});this.manifest=fe.Boolean("--manifest",!1,{description:"Print data obtained by looking at the package archive (license, homepage, ...)"});this.nameOnly=fe.Boolean("--name-only",!1,{description:"Only print the name for the matching packages"});this.virtuals=fe.Boolean("--virtuals",!1,{description:"Print each instance of the virtual packages"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=fe.Rest()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Ur.find(r);if(!a&&!this.all)throw new er(o.cwd,this.context.cwd);await o.restoreInstallState();let u=new Set(this.extra);this.cache&&u.add("cache"),this.dependents&&u.add("dependents"),this.manifest&&u.add("manifest");let A=(oe,{recursive:pe})=>{let he=oe.anchoredLocator.locatorHash,ve=new Map,ge=[he];for(;ge.length>0;){let le=ge.shift();if(ve.has(le))continue;let Pe=o.storedPackages.get(le);if(typeof Pe>"u")throw new Error("Assertion failed: Expected the package to be registered");if(ve.set(le,Pe),Y.isVirtualLocator(Pe)&&ge.push(Y.devirtualizeLocator(Pe).locatorHash),!(!pe&&le!==he))for(let g of Pe.dependencies.values()){let De=o.storedResolutions.get(g.descriptorHash);if(typeof De>"u")throw new Error("Assertion failed: Expected the resolution to be registered");ge.push(De)}}return ve.values()},p=({recursive:oe})=>{let pe=new Map;for(let he of o.workspaces)for(let ve of A(he,{recursive:oe}))pe.set(ve.locatorHash,ve);return pe.values()},h=({all:oe,recursive:pe})=>oe&&pe?o.storedPackages.values():oe?p({recursive:pe}):A(a,{recursive:pe}),C=({all:oe,recursive:pe})=>{let he=h({all:oe,recursive:pe}),ve=this.patterns.map(Pe=>{let g=Y.parseLocator(Pe),De=hde.default.makeRe(Y.stringifyIdent(g)),Ee=Y.isVirtualLocator(g),de=Ee?Y.devirtualizeLocator(g):g;return ne=>{let Z=Y.stringifyIdent(ne);if(!De.test(Z))return!1;if(g.reference==="unknown")return!0;let me=Y.isVirtualLocator(ne),be=me?Y.devirtualizeLocator(ne):ne;return!(Ee&&me&&g.reference!==ne.reference||de.reference!==be.reference)}}),ge=Ye.sortMap([...he],Pe=>Y.stringifyLocator(Pe));return{selection:ge.filter(Pe=>ve.length===0||ve.some(g=>g(Pe))),sortedLookup:ge}},{selection:w,sortedLookup:v}=C({all:this.all,recursive:this.recursive});if(w.length===0)throw new ot("No package matched your request");let b=new Map;if(this.dependents)for(let oe of v)for(let pe of oe.dependencies.values()){let he=o.storedResolutions.get(pe.descriptorHash);if(typeof he>"u")throw new Error("Assertion failed: Expected the resolution to be registered");Ye.getArrayWithDefault(b,he).push(oe)}let E=new Map;for(let oe of v){if(!Y.isVirtualLocator(oe))continue;let pe=Y.devirtualizeLocator(oe);Ye.getArrayWithDefault(E,pe.locatorHash).push(oe)}let R={},L={children:R},_=r.makeFetcher(),J={project:o,fetcher:_,cache:n,checksums:o.storedChecksums,report:new xi,cacheOptions:{skipIntegrityCheck:!0}},re=[async(oe,pe,he)=>{var le;if(!pe.has("manifest"))return;let ve=await _.fetch(oe,J),ge;try{ge=await Nt.find(ve.prefixPath,{baseFs:ve.packageFs})}finally{(le=ve.releaseFs)==null||le.call(ve)}he("Manifest",{License:ye.tuple(ye.Type.NO_HINT,ge.license),Homepage:ye.tuple(ye.Type.URL,ge.raw.homepage??null)})},async(oe,pe,he)=>{if(!pe.has("cache"))return;let ve={mockedPackages:o.disabledLocators,unstablePackages:o.conditionalLocators},ge=o.storedChecksums.get(oe.locatorHash)??null,le=n.getLocatorPath(oe,ge,ve),Pe;if(le!==null)try{Pe=ae.statSync(le)}catch{}let g=typeof Pe<"u"?[Pe.size,ye.Type.SIZE]:void 0;he("Cache",{Checksum:ye.tuple(ye.Type.NO_HINT,ge),Path:ye.tuple(ye.Type.PATH,le),Size:g})}];for(let oe of w){let pe=Y.isVirtualLocator(oe);if(!this.virtuals&&pe)continue;let he={},ve={value:[oe,ye.Type.LOCATOR],children:he};if(R[Y.stringifyLocator(oe)]=ve,this.nameOnly){delete ve.children;continue}let ge=E.get(oe.locatorHash);typeof ge<"u"&&(he.Instances={label:"Instances",value:ye.tuple(ye.Type.NUMBER,ge.length)}),he.Version={label:"Version",value:ye.tuple(ye.Type.NO_HINT,oe.version)};let le=(g,De)=>{let Ee={};if(he[g]=Ee,Array.isArray(De))Ee.children=De.map(de=>({value:de}));else{let de={};Ee.children=de;for(let[ne,Z]of Object.entries(De))typeof Z>"u"||(de[ne]={label:ne,value:Z})}};if(!pe){for(let g of re)await g(oe,u,le);await r.triggerHook(g=>g.fetchPackageInfo,oe,u,le)}oe.bin.size>0&&!pe&&le("Exported Binaries",[...oe.bin.keys()].map(g=>ye.tuple(ye.Type.PATH,g)));let Pe=b.get(oe.locatorHash);typeof Pe<"u"&&Pe.length>0&&le("Dependents",Pe.map(g=>ye.tuple(ye.Type.LOCATOR,g))),oe.dependencies.size>0&&!pe&&le("Dependencies",[...oe.dependencies.values()].map(g=>{let De=o.storedResolutions.get(g.descriptorHash),Ee=typeof De<"u"?o.storedPackages.get(De)??null:null;return ye.tuple(ye.Type.RESOLUTION,{descriptor:g,locator:Ee})})),oe.peerDependencies.size>0&&pe&&le("Peer dependencies",[...oe.peerDependencies.values()].map(g=>{let De=oe.dependencies.get(g.identHash),Ee=typeof De<"u"?o.storedResolutions.get(De.descriptorHash)??null:null,de=Ee!==null?o.storedPackages.get(Ee)??null:null;return ye.tuple(ye.Type.RESOLUTION,{descriptor:g,locator:de})}))}Xo.emitTree(L,{configuration:r,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};M0.paths=[["info"]],M0.usage=it.Usage({description:"see information related to packages",details:"\n This command prints various information related to the specified packages, accepting glob patterns.\n\n By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\n\n Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\n\n Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\n ",examples:[["Show information about Lodash","$0 info lodash"]]});Ke();bt();Ol();var Zb=tt(Jg());_t();$a();var U0=class extends ct{constructor(){super(...arguments);this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.immutable=fe.Boolean("--immutable",{description:"Abort with an error exit code if the lockfile was to be modified"});this.immutableCache=fe.Boolean("--immutable-cache",{description:"Abort with an error exit code if the cache folder was to be modified"});this.refreshLockfile=fe.Boolean("--refresh-lockfile",{description:"Refresh the package metadata stored in the lockfile"});this.checkCache=fe.Boolean("--check-cache",{description:"Always refetch the packages and ensure that their checksums are consistent"});this.checkResolutions=fe.Boolean("--check-resolutions",{description:"Validates that the package resolutions are coherent"});this.inlineBuilds=fe.Boolean("--inline-builds",{description:"Verbosely print the output of the build steps of dependencies"});this.mode=fe.String("--mode",{description:"Change what artifacts installs generate",validator:Gs(fl)});this.cacheFolder=fe.String("--cache-folder",{hidden:!0});this.frozenLockfile=fe.Boolean("--frozen-lockfile",{hidden:!0});this.ignoreEngines=fe.Boolean("--ignore-engines",{hidden:!0});this.nonInteractive=fe.Boolean("--non-interactive",{hidden:!0});this.preferOffline=fe.Boolean("--prefer-offline",{hidden:!0});this.production=fe.Boolean("--production",{hidden:!0});this.registry=fe.String("--registry",{hidden:!0});this.silent=fe.Boolean("--silent",{hidden:!0});this.networkTimeout=fe.String("--network-timeout",{hidden:!0})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds<"u"&&r.useWithSource("<cli>",{enableInlineBuilds:this.inlineBuilds},r.startingCwd,{overwrite:!0});let o=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,a=async(E,{error:R})=>{let L=await Ct.start({configuration:r,stdout:this.context.stdout,includeFooter:!1},async _=>{R?_.reportError(50,E):_.reportWarning(50,E)});return L.hasErrors()?L.exitCode():null};if(typeof this.ignoreEngines<"u"){let E=await a("The --ignore-engines option is deprecated; engine checking isn't a core feature anymore",{error:!Zb.default.VERCEL});if(E!==null)return E}if(typeof this.registry<"u"){let E=await a("The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file",{error:!1});if(E!==null)return E}if(typeof this.preferOffline<"u"){let E=await a("The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead",{error:!Zb.default.VERCEL});if(E!==null)return E}if(typeof this.production<"u"){let E=await a("The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead",{error:!0});if(E!==null)return E}if(typeof this.nonInteractive<"u"){let E=await a("The --non-interactive option is deprecated",{error:!o});if(E!==null)return E}if(typeof this.frozenLockfile<"u"&&(await a("The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead",{error:!1}),this.immutable=this.frozenLockfile),typeof this.cacheFolder<"u"){let E=await a("The cache-folder option has been deprecated; use rc settings instead",{error:!Zb.default.NETLIFY});if(E!==null)return E}let n=this.mode==="update-lockfile";if(n&&(this.immutable||this.immutableCache))throw new ot(`${ye.pretty(r,"--immutable",ye.Type.CODE)} and ${ye.pretty(r,"--immutable-cache",ye.Type.CODE)} cannot be used with ${ye.pretty(r,"--mode=update-lockfile",ye.Type.CODE)}`);let u=(this.immutable??r.get("enableImmutableInstalls"))&&!n,A=this.immutableCache&&!n;if(r.projectCwd!==null){let E=await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async R=>{await $0t(r,u)&&(R.reportInfo(48,"Automatically fixed merge conflicts \u{1F44D}"),R.reportSeparator())});if(E.hasErrors())return E.exitCode()}if(r.projectCwd!==null&&typeof r.sources.get("nodeLinker")>"u"){let E=r.projectCwd,R;try{R=await ae.readFilePromise(V.join(E,Lr.lockfile),"utf8")}catch{}if(R!=null&&R.includes("yarn lockfile v1")){let L=await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async _=>{_.reportInfo(70,"Migrating from Yarn 1; automatically enabling the compatibility node-modules linker \u{1F44D}"),_.reportSeparator(),r.use("<compat>",{nodeLinker:"node-modules"},E,{overwrite:!0}),await Xe.updateConfiguration(E,{nodeLinker:"node-modules"})});if(L.hasErrors())return L.exitCode()}}if(r.projectCwd!==null){let E=await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async R=>{var L;(L=Xe.telemetry)!=null&&L.isNew&&(R.reportInfo(65,"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry"),R.reportInfo(65,`Run ${ye.pretty(r,"yarn config set --home enableTelemetry 0",ye.Type.CODE)} to disable`),R.reportSeparator())});if(E.hasErrors())return E.exitCode()}let{project:p,workspace:h}=await St.find(r,this.context.cwd),C=await Ur.find(r,{immutable:A,check:this.checkCache});if(!h)throw new er(p.cwd,this.context.cwd);await p.restoreInstallState({restoreResolutions:!1});let w=r.get("enableHardenedMode");(this.refreshLockfile??w)&&(p.lockfileNeedsRefresh=!0);let v=this.checkResolutions??w;return(await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout,includeLogs:!0},async E=>{await p.install({cache:C,report:E,immutable:u,checkResolutions:v,mode:this.mode})})).exitCode()}};U0.paths=[["install"],it.Default],U0.usage=it.Usage({description:"install the project dependencies",details:"\n This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics:\n\n - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ).\n\n - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of `cacheFolder` in `yarn config` to see where the cache files are stored).\n\n - **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the .pnp.cjs file you might know).\n\n - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail.\n\n Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your .pnp.cjs file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches.\n\n If the `--immutable` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the `immutablePatterns` configuration setting). For backward compatibility we offer an alias under the name of `--frozen-lockfile`, but it will be removed in a later release.\n\n If the `--immutable-cache` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed).\n\n If the `--refresh-lockfile` option is set, Yarn will keep the same resolution for the packages currently in the lockfile but will refresh their metadata. If used together with `--immutable`, it can validate that the lockfile information are consistent. This flag is enabled by default when Yarn detects it runs within a pull request context.\n\n If the `--check-cache` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them.\n\n If the `--inline-builds` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments.\n\n If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n ",examples:[["Install the project","$0 install"],["Validate a project when using Zero-Installs","$0 install --immutable --immutable-cache"],["Validate a project when using Zero-Installs (slightly safer if you accept external PRs)","$0 install --immutable --immutable-cache --check-cache"]]});var Z0t="<<<<<<<";async function $0t(t,e){if(!t.projectCwd)return!1;let r=V.join(t.projectCwd,t.get("lockfileFilename"));if(!await ae.existsPromise(r)||!(await ae.readFilePromise(r,"utf8")).includes(Z0t))return!1;if(e)throw new Jt(47,"Cannot autofix a lockfile when running an immutable install");let a=await Mr.execvp("git",["rev-parse","MERGE_HEAD","HEAD"],{cwd:t.projectCwd});if(a.code!==0&&(a=await Mr.execvp("git",["rev-parse","REBASE_HEAD","HEAD"],{cwd:t.projectCwd})),a.code!==0&&(a=await Mr.execvp("git",["rev-parse","CHERRY_PICK_HEAD","HEAD"],{cwd:t.projectCwd})),a.code!==0)throw new Jt(83,"Git returned an error when trying to find the commits pertaining to the conflict");let n=await Promise.all(a.stdout.trim().split(/\n/).map(async A=>{let p=await Mr.execvp("git",["show",`${A}:./${Lr.lockfile}`],{cwd:t.projectCwd});if(p.code!==0)throw new Jt(83,`Git returned an error when trying to access the lockfile content in ${A}`);try{return Yi(p.stdout)}catch{throw new Jt(46,"A variant of the conflicting lockfile failed to parse")}}));n=n.filter(A=>!!A.__metadata);for(let A of n)if(A.__metadata.version<7)for(let p of Object.keys(A)){if(p==="__metadata")continue;let h=Y.parseDescriptor(p,!0),C=t.normalizeDependency(h),w=Y.stringifyDescriptor(C);w!==p&&(A[w]=A[p],delete A[p])}let u=Object.assign({},...n);u.__metadata.version=Math.min(0,...n.map(A=>A.__metadata.version??1/0)),u.__metadata.cacheKey=Math.min(0,...n.map(A=>A.__metadata.cacheKey??0));for(let[A,p]of Object.entries(u))typeof p=="string"&&delete u[A];return await ae.changeFilePromise(r,Ia(u),{automaticNewlines:!0}),!0}Ke();bt();_t();var _0=class extends ct{constructor(){super(...arguments);this.all=fe.Boolean("-A,--all",!1,{description:"Link all workspaces belonging to the target projects to the current one"});this.private=fe.Boolean("-p,--private",!1,{description:"Also link private workspaces belonging to the target projects to the current one"});this.relative=fe.Boolean("-r,--relative",!1,{description:"Link workspaces using relative paths instead of absolute paths"});this.destinations=fe.Rest()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Ur.find(r);if(!a)throw new er(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=o.topLevelWorkspace,A=[];for(let h of this.destinations){let C=V.resolve(this.context.cwd,Ae.toPortablePath(h)),w=await Xe.find(C,this.context.plugins,{useRc:!1,strict:!1}),{project:v,workspace:b}=await St.find(w,C);if(o.cwd===v.cwd)throw new ot(`Invalid destination '${h}'; Can't link the project to itself`);if(!b)throw new er(v.cwd,C);if(this.all){let E=!1;for(let R of v.workspaces)R.manifest.name&&(!R.manifest.private||this.private)&&(A.push(R),E=!0);if(!E)throw new ot(`No workspace found to be linked in the target project: ${h}`)}else{if(!b.manifest.name)throw new ot(`The target workspace at '${h}' doesn't have a name and thus cannot be linked`);if(b.manifest.private&&!this.private)throw new ot(`The target workspace at '${h}' is marked private - use the --private flag to link it anyway`);A.push(b)}}for(let h of A){let C=Y.stringifyIdent(h.locator),w=this.relative?V.relative(o.cwd,h.cwd):h.cwd;u.manifest.resolutions.push({pattern:{descriptor:{fullName:C}},reference:`portal:${w}`})}return(await Ct.start({configuration:r,stdout:this.context.stdout},async h=>{await o.install({cache:n,report:h})})).exitCode()}};_0.paths=[["link"]],_0.usage=it.Usage({description:"connect the local project to another one",details:"\n This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\n ",examples:[["Register one or more remote workspaces for use in the current project","$0 link ~/ts-loader ~/jest"],["Register all workspaces from a remote project for use in the current project","$0 link ~/jest --all"]]});_t();var H0=class extends ct{constructor(){super(...arguments);this.args=fe.Proxy()}async execute(){return this.cli.run(["exec","node",...this.args])}};H0.paths=[["node"]],H0.usage=it.Usage({description:"run node with the hook already setup",details:` | 439 | `,examples:[["Explain an error code","$0 explain YN0006"],["List all error codes","$0 explain"]]});Ke();St();_t();var Ide=tt(zo()),_0=class extends ct{constructor(){super(...arguments);this.all=fe.Boolean("-A,--all",!1,{description:"Print versions of a package from the whole project"});this.recursive=fe.Boolean("-R,--recursive",!1,{description:"Print information for all packages, including transitive dependencies"});this.extra=fe.Array("-X,--extra",[],{description:"An array of requests of extra data provided by plugins"});this.cache=fe.Boolean("--cache",!1,{description:"Print information about the cache entry of a package (path, size, checksum)"});this.dependents=fe.Boolean("--dependents",!1,{description:"Print all dependents for each matching package"});this.manifest=fe.Boolean("--manifest",!1,{description:"Print data obtained by looking at the package archive (license, homepage, ...)"});this.nameOnly=fe.Boolean("--name-only",!1,{description:"Only print the name for the matching packages"});this.virtuals=fe.Boolean("--virtuals",!1,{description:"Print each instance of the virtual packages"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=fe.Rest()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Ur.find(r);if(!a&&!this.all)throw new er(o.cwd,this.context.cwd);await o.restoreInstallState();let u=new Set(this.extra);this.cache&&u.add("cache"),this.dependents&&u.add("dependents"),this.manifest&&u.add("manifest");let A=(ae,{recursive:he})=>{let pe=ae.anchoredLocator.locatorHash,De=new Map,ge=[pe];for(;ge.length>0;){let le=ge.shift();if(De.has(le))continue;let Pe=o.storedPackages.get(le);if(typeof Pe>"u")throw new Error("Assertion failed: Expected the package to be registered");if(De.set(le,Pe),Y.isVirtualLocator(Pe)&&ge.push(Y.devirtualizeLocator(Pe).locatorHash),!(!he&&le!==pe))for(let g of Pe.dependencies.values()){let ve=o.storedResolutions.get(g.descriptorHash);if(typeof ve>"u")throw new Error("Assertion failed: Expected the resolution to be registered");ge.push(ve)}}return De.values()},p=({recursive:ae})=>{let he=new Map;for(let pe of o.workspaces)for(let De of A(pe,{recursive:ae}))he.set(De.locatorHash,De);return he.values()},h=({all:ae,recursive:he})=>ae&&he?o.storedPackages.values():ae?p({recursive:he}):A(a,{recursive:he}),C=({all:ae,recursive:he})=>{let pe=h({all:ae,recursive:he}),De=this.patterns.map(Pe=>{let g=Y.parseLocator(Pe),ve=Ide.default.makeRe(Y.stringifyIdent(g)),Ee=Y.isVirtualLocator(g),de=Ee?Y.devirtualizeLocator(g):g;return ne=>{let Z=Y.stringifyIdent(ne);if(!ve.test(Z))return!1;if(g.reference==="unknown")return!0;let me=Y.isVirtualLocator(ne),be=me?Y.devirtualizeLocator(ne):ne;return!(Ee&&me&&g.reference!==ne.reference||de.reference!==be.reference)}}),ge=We.sortMap([...pe],Pe=>Y.stringifyLocator(Pe));return{selection:ge.filter(Pe=>De.length===0||De.some(g=>g(Pe))),sortedLookup:ge}},{selection:w,sortedLookup:v}=C({all:this.all,recursive:this.recursive});if(w.length===0)throw new ot("No package matched your request");let b=new Map;if(this.dependents)for(let ae of v)for(let he of ae.dependencies.values()){let pe=o.storedResolutions.get(he.descriptorHash);if(typeof pe>"u")throw new Error("Assertion failed: Expected the resolution to be registered");We.getArrayWithDefault(b,pe).push(ae)}let E=new Map;for(let ae of v){if(!Y.isVirtualLocator(ae))continue;let he=Y.devirtualizeLocator(ae);We.getArrayWithDefault(E,he.locatorHash).push(ae)}let R={},L={children:R},_=r.makeFetcher(),V={project:o,fetcher:_,cache:n,checksums:o.storedChecksums,report:new xi,cacheOptions:{skipIntegrityCheck:!0}},re=[async(ae,he,pe)=>{var le;if(!he.has("manifest"))return;let De=await _.fetch(ae,V),ge;try{ge=await Nt.find(De.prefixPath,{baseFs:De.packageFs})}finally{(le=De.releaseFs)==null||le.call(De)}pe("Manifest",{License:ye.tuple(ye.Type.NO_HINT,ge.license),Homepage:ye.tuple(ye.Type.URL,ge.raw.homepage??null)})},async(ae,he,pe)=>{if(!he.has("cache"))return;let De={mockedPackages:o.disabledLocators,unstablePackages:o.conditionalLocators},ge=o.storedChecksums.get(ae.locatorHash)??null,le=n.getLocatorPath(ae,ge,De),Pe;if(le!==null)try{Pe=oe.statSync(le)}catch{}let g=typeof Pe<"u"?[Pe.size,ye.Type.SIZE]:void 0;pe("Cache",{Checksum:ye.tuple(ye.Type.NO_HINT,ge),Path:ye.tuple(ye.Type.PATH,le),Size:g})}];for(let ae of w){let he=Y.isVirtualLocator(ae);if(!this.virtuals&&he)continue;let pe={},De={value:[ae,ye.Type.LOCATOR],children:pe};if(R[Y.stringifyLocator(ae)]=De,this.nameOnly){delete De.children;continue}let ge=E.get(ae.locatorHash);typeof ge<"u"&&(pe.Instances={label:"Instances",value:ye.tuple(ye.Type.NUMBER,ge.length)}),pe.Version={label:"Version",value:ye.tuple(ye.Type.NO_HINT,ae.version)};let le=(g,ve)=>{let Ee={};if(pe[g]=Ee,Array.isArray(ve))Ee.children=ve.map(de=>({value:de}));else{let de={};Ee.children=de;for(let[ne,Z]of Object.entries(ve))typeof Z>"u"||(de[ne]={label:ne,value:Z})}};if(!he){for(let g of re)await g(ae,u,le);await r.triggerHook(g=>g.fetchPackageInfo,ae,u,le)}ae.bin.size>0&&!he&&le("Exported Binaries",[...ae.bin.keys()].map(g=>ye.tuple(ye.Type.PATH,g)));let Pe=b.get(ae.locatorHash);typeof Pe<"u"&&Pe.length>0&&le("Dependents",Pe.map(g=>ye.tuple(ye.Type.LOCATOR,g))),ae.dependencies.size>0&&!he&&le("Dependencies",[...ae.dependencies.values()].map(g=>{let ve=o.storedResolutions.get(g.descriptorHash),Ee=typeof ve<"u"?o.storedPackages.get(ve)??null:null;return ye.tuple(ye.Type.RESOLUTION,{descriptor:g,locator:Ee})})),ae.peerDependencies.size>0&&he&&le("Peer dependencies",[...ae.peerDependencies.values()].map(g=>{let ve=ae.dependencies.get(g.identHash),Ee=typeof ve<"u"?o.storedResolutions.get(ve.descriptorHash)??null:null,de=Ee!==null?o.storedPackages.get(Ee)??null:null;return ye.tuple(ye.Type.RESOLUTION,{descriptor:g,locator:de})}))}$o.emitTree(L,{configuration:r,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};_0.paths=[["info"]],_0.usage=it.Usage({description:"see information related to packages",details:"\n This command prints various information related to the specified packages, accepting glob patterns.\n\n By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\n\n Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\n\n Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\n ",examples:[["Show information about Lodash","$0 info lodash"]]});Ke();St();Hl();var lQ=tt(Zg());_t();rl();var H0=class extends ct{constructor(){super(...arguments);this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.immutable=fe.Boolean("--immutable",{description:"Abort with an error exit code if the lockfile was to be modified"});this.immutableCache=fe.Boolean("--immutable-cache",{description:"Abort with an error exit code if the cache folder was to be modified"});this.refreshLockfile=fe.Boolean("--refresh-lockfile",{description:"Refresh the package metadata stored in the lockfile"});this.checkCache=fe.Boolean("--check-cache",{description:"Always refetch the packages and ensure that their checksums are consistent"});this.checkResolutions=fe.Boolean("--check-resolutions",{description:"Validates that the package resolutions are coherent"});this.inlineBuilds=fe.Boolean("--inline-builds",{description:"Verbosely print the output of the build steps of dependencies"});this.mode=fe.String("--mode",{description:"Change what artifacts installs generate",validator:Gs(dl)});this.cacheFolder=fe.String("--cache-folder",{hidden:!0});this.frozenLockfile=fe.Boolean("--frozen-lockfile",{hidden:!0});this.ignoreEngines=fe.Boolean("--ignore-engines",{hidden:!0});this.nonInteractive=fe.Boolean("--non-interactive",{hidden:!0});this.preferOffline=fe.Boolean("--prefer-offline",{hidden:!0});this.production=fe.Boolean("--production",{hidden:!0});this.registry=fe.String("--registry",{hidden:!0});this.silent=fe.Boolean("--silent",{hidden:!0});this.networkTimeout=fe.String("--network-timeout",{hidden:!0})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds<"u"&&r.useWithSource("<cli>",{enableInlineBuilds:this.inlineBuilds},r.startingCwd,{overwrite:!0});let o=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,a=async(E,{error:R})=>{let L=await Ct.start({configuration:r,stdout:this.context.stdout,includeFooter:!1},async _=>{R?_.reportError(50,E):_.reportWarning(50,E)});return L.hasErrors()?L.exitCode():null};if(typeof this.ignoreEngines<"u"){let E=await a("The --ignore-engines option is deprecated; engine checking isn't a core feature anymore",{error:!lQ.default.VERCEL});if(E!==null)return E}if(typeof this.registry<"u"){let E=await a("The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file",{error:!1});if(E!==null)return E}if(typeof this.preferOffline<"u"){let E=await a("The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead",{error:!lQ.default.VERCEL});if(E!==null)return E}if(typeof this.production<"u"){let E=await a("The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead",{error:!0});if(E!==null)return E}if(typeof this.nonInteractive<"u"){let E=await a("The --non-interactive option is deprecated",{error:!o});if(E!==null)return E}if(typeof this.frozenLockfile<"u"&&(await a("The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead",{error:!1}),this.immutable=this.frozenLockfile),typeof this.cacheFolder<"u"){let E=await a("The cache-folder option has been deprecated; use rc settings instead",{error:!lQ.default.NETLIFY});if(E!==null)return E}let n=this.mode==="update-lockfile";if(n&&(this.immutable||this.immutableCache))throw new ot(`${ye.pretty(r,"--immutable",ye.Type.CODE)} and ${ye.pretty(r,"--immutable-cache",ye.Type.CODE)} cannot be used with ${ye.pretty(r,"--mode=update-lockfile",ye.Type.CODE)}`);let u=(this.immutable??r.get("enableImmutableInstalls"))&&!n,A=this.immutableCache&&!n;if(r.projectCwd!==null){let E=await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async R=>{let L=!1;await ght(r,u)&&(R.reportInfo(48,"Automatically removed core plugins that are now builtins \u{1F44D}"),L=!0),await hht(r,u)&&(R.reportInfo(48,"Automatically fixed merge conflicts \u{1F44D}"),L=!0),L&&R.reportSeparator()});if(E.hasErrors())return E.exitCode()}if(r.projectCwd!==null&&typeof r.sources.get("nodeLinker")>"u"){let E=r.projectCwd,R;try{R=await oe.readFilePromise(J.join(E,Lr.lockfile),"utf8")}catch{}if(R!=null&&R.includes("yarn lockfile v1")){let L=await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async _=>{_.reportInfo(70,"Migrating from Yarn 1; automatically enabling the compatibility node-modules linker \u{1F44D}"),_.reportSeparator(),r.use("<compat>",{nodeLinker:"node-modules"},E,{overwrite:!0}),await Xe.updateConfiguration(E,{nodeLinker:"node-modules"})});if(L.hasErrors())return L.exitCode()}}if(r.projectCwd!==null){let E=await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async R=>{var L;(L=Xe.telemetry)!=null&&L.isNew&&(R.reportInfo(65,"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry"),R.reportInfo(65,`Run ${ye.pretty(r,"yarn config set --home enableTelemetry 0",ye.Type.CODE)} to disable`),R.reportSeparator())});if(E.hasErrors())return E.exitCode()}let{project:p,workspace:h}=await Pt.find(r,this.context.cwd),C=await Ur.find(r,{immutable:A,check:this.checkCache});if(!h)throw new er(p.cwd,this.context.cwd);await p.restoreInstallState({restoreResolutions:!1});let w=r.get("enableHardenedMode");(this.refreshLockfile??w)&&(p.lockfileNeedsRefresh=!0);let v=this.checkResolutions??w;return(await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout,includeLogs:!0},async E=>{await p.install({cache:C,report:E,immutable:u,checkResolutions:v,mode:this.mode})})).exitCode()}};H0.paths=[["install"],it.Default],H0.usage=it.Usage({description:"install the project dependencies",details:"\n This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics:\n\n - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ).\n\n - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of `cacheFolder` in `yarn config` to see where the cache files are stored).\n\n - **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the .pnp.cjs file you might know).\n\n - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail.\n\n Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your .pnp.cjs file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches.\n\n If the `--immutable` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the `immutablePatterns` configuration setting). For backward compatibility we offer an alias under the name of `--frozen-lockfile`, but it will be removed in a later release.\n\n If the `--immutable-cache` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed).\n\n If the `--refresh-lockfile` option is set, Yarn will keep the same resolution for the packages currently in the lockfile but will refresh their metadata. If used together with `--immutable`, it can validate that the lockfile information are consistent. This flag is enabled by default when Yarn detects it runs within a pull request context.\n\n If the `--check-cache` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them.\n\n If the `--inline-builds` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments.\n\n If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n ",examples:[["Install the project","$0 install"],["Validate a project when using Zero-Installs","$0 install --immutable --immutable-cache"],["Validate a project when using Zero-Installs (slightly safer if you accept external PRs)","$0 install --immutable --immutable-cache --check-cache"]]});var pht="<<<<<<<";async function hht(t,e){if(!t.projectCwd)return!1;let r=J.join(t.projectCwd,t.get("lockfileFilename"));if(!await oe.existsPromise(r)||!(await oe.readFilePromise(r,"utf8")).includes(pht))return!1;if(e)throw new Vt(47,"Cannot autofix a lockfile when running an immutable install");let a=await Mr.execvp("git",["rev-parse","MERGE_HEAD","HEAD"],{cwd:t.projectCwd});if(a.code!==0&&(a=await Mr.execvp("git",["rev-parse","REBASE_HEAD","HEAD"],{cwd:t.projectCwd})),a.code!==0&&(a=await Mr.execvp("git",["rev-parse","CHERRY_PICK_HEAD","HEAD"],{cwd:t.projectCwd})),a.code!==0)throw new Vt(83,"Git returned an error when trying to find the commits pertaining to the conflict");let n=await Promise.all(a.stdout.trim().split(/\n/).map(async A=>{let p=await Mr.execvp("git",["show",`${A}:./${Lr.lockfile}`],{cwd:t.projectCwd});if(p.code!==0)throw new Vt(83,`Git returned an error when trying to access the lockfile content in ${A}`);try{return Yi(p.stdout)}catch{throw new Vt(46,"A variant of the conflicting lockfile failed to parse")}}));n=n.filter(A=>!!A.__metadata);for(let A of n)if(A.__metadata.version<7)for(let p of Object.keys(A)){if(p==="__metadata")continue;let h=Y.parseDescriptor(p,!0),C=t.normalizeDependency(h),w=Y.stringifyDescriptor(C);w!==p&&(A[w]=A[p],delete A[p])}let u=Object.assign({},...n);u.__metadata.version=Math.min(0,...n.map(A=>A.__metadata.version??1/0)),u.__metadata.cacheKey=Math.min(0,...n.map(A=>A.__metadata.cacheKey??0));for(let[A,p]of Object.entries(u))typeof p=="string"&&delete u[A];return await oe.changeFilePromise(r,Ba(u),{automaticNewlines:!0}),!0}async function ght(t,e){if(!t.projectCwd)return!1;let r=[],o=J.join(t.projectCwd,".yarn/plugins/@yarnpkg");return await Xe.updateConfiguration(t.projectCwd,n=>{if(!Array.isArray(n.plugins))return n;let u=n.plugins.filter(A=>{if(!A.path)return!0;let p=J.resolve(t.projectCwd,A.path),h=m1.has(A.spec)&&J.contains(o,p);return h&&r.push(p),!h});return n.plugins.length===u.length?n:{...n,plugins:u}},{immutable:e})?(await Promise.all(r.map(async n=>{await oe.removePromise(n)})),!0):!1}Ke();St();_t();var q0=class extends ct{constructor(){super(...arguments);this.all=fe.Boolean("-A,--all",!1,{description:"Link all workspaces belonging to the target projects to the current one"});this.private=fe.Boolean("-p,--private",!1,{description:"Also link private workspaces belonging to the target projects to the current one"});this.relative=fe.Boolean("-r,--relative",!1,{description:"Link workspaces using relative paths instead of absolute paths"});this.destinations=fe.Rest()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Ur.find(r);if(!a)throw new er(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=o.topLevelWorkspace,A=[];for(let h of this.destinations){let C=J.resolve(this.context.cwd,ue.toPortablePath(h)),w=await Xe.find(C,this.context.plugins,{useRc:!1,strict:!1}),{project:v,workspace:b}=await Pt.find(w,C);if(o.cwd===v.cwd)throw new ot(`Invalid destination '${h}'; Can't link the project to itself`);if(!b)throw new er(v.cwd,C);if(this.all){let E=!1;for(let R of v.workspaces)R.manifest.name&&(!R.manifest.private||this.private)&&(A.push(R),E=!0);if(!E)throw new ot(`No workspace found to be linked in the target project: ${h}`)}else{if(!b.manifest.name)throw new ot(`The target workspace at '${h}' doesn't have a name and thus cannot be linked`);if(b.manifest.private&&!this.private)throw new ot(`The target workspace at '${h}' is marked private - use the --private flag to link it anyway`);A.push(b)}}for(let h of A){let C=Y.stringifyIdent(h.locator),w=this.relative?J.relative(o.cwd,h.cwd):h.cwd;u.manifest.resolutions.push({pattern:{descriptor:{fullName:C}},reference:`portal:${w}`})}return(await Ct.start({configuration:r,stdout:this.context.stdout},async h=>{await o.install({cache:n,report:h})})).exitCode()}};q0.paths=[["link"]],q0.usage=it.Usage({description:"connect the local project to another one",details:"\n This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\n ",examples:[["Register one or more remote workspaces for use in the current project","$0 link ~/ts-loader ~/jest"],["Register all workspaces from a remote project for use in the current project","$0 link ~/jest --all"]]});_t();var j0=class extends ct{constructor(){super(...arguments);this.args=fe.Proxy()}async execute(){return this.cli.run(["exec","node",...this.args])}};j0.paths=[["node"]],j0.usage=it.Usage({description:"run node with the hook already setup",details:` |
440 | This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). | 440 | This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment). |
441 | 441 | ||
442 | The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version. | 442 | The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version. |
443 | `,examples:[["Run a Node script","$0 node ./my-script.js"]]});Ke();_t();var q0=class extends ct{constructor(){super(...arguments);this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),o=await Xe.findRcFiles(this.context.cwd);return(await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{var u;for(let A of o)if(!!((u=A.data)!=null&&u.plugins))for(let p of A.data.plugins){if(!p.checksum||!p.spec.match(/^https?:/))continue;let h=await ln.get(p.spec,{configuration:r}),C=bn.makeHash(h);if(p.checksum===C)continue;let w=ye.pretty(r,p.path,ye.Type.PATH),v=ye.pretty(r,p.spec,ye.Type.URL),b=`${w} is different from the file provided by ${v}`;n.reportJson({...p,newChecksum:C}),n.reportError(0,b)}})).exitCode()}};q0.paths=[["plugin","check"]],q0.usage=it.Usage({category:"Plugin-related commands",description:"find all third-party plugins that differ from their own spec",details:` | 443 | `,examples:[["Run a Node script","$0 node ./my-script.js"]]});Ke();_t();var G0=class extends ct{constructor(){super(...arguments);this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),o=await Xe.findRcFiles(this.context.cwd);return(await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{var u;for(let A of o)if(!!((u=A.data)!=null&&u.plugins))for(let p of A.data.plugins){if(!p.checksum||!p.spec.match(/^https?:/))continue;let h=await ln.get(p.spec,{configuration:r}),C=bn.makeHash(h);if(p.checksum===C)continue;let w=ye.pretty(r,p.path,ye.Type.PATH),v=ye.pretty(r,p.spec,ye.Type.URL),b=`${w} is different from the file provided by ${v}`;n.reportJson({...p,newChecksum:C}),n.reportError(0,b)}})).exitCode()}};G0.paths=[["plugin","check"]],G0.usage=it.Usage({category:"Plugin-related commands",description:"find all third-party plugins that differ from their own spec",details:` |
444 | Check only the plugins from https. | 444 | Check only the plugins from https. |
445 | 445 | ||
446 | If this command detects any plugin differences in the CI environment, it will throw an error. | 446 | If this command detects any plugin differences in the CI environment, it will throw an error. |
447 | `,examples:[["find all third-party plugins that differ from their own spec","$0 plugin check"]]});Ke();Ke();bt();_t();var Cde=Ie("os");Ke();bt();_t();var gde=Ie("os");Ke();Ol();_t();var eht="https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml";async function Vd(t,e){let r=await ln.get(eht,{configuration:t}),o=Yi(r.toString());return Object.fromEntries(Object.entries(o).filter(([a,n])=>!e||Tr.satisfiesWithPrereleases(e,n.range??"<4.0.0-rc.1")))}var j0=class extends ct{constructor(){super(...arguments);this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins);return(await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{let n=await Vd(r,On);for(let[u,{experimental:A,...p}]of Object.entries(n)){let h=u;A&&(h+=" [experimental]"),a.reportJson({name:u,experimental:A,...p}),a.reportInfo(null,h)}})).exitCode()}};j0.paths=[["plugin","list"]],j0.usage=it.Usage({category:"Plugin-related commands",description:"list the available official plugins",details:"\n This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\n ",examples:[["List the official plugins","$0 plugin list"]]});var tht=/^[0-9]+$/;function dde(t){return tht.test(t)?`pull/${t}/head`:t}var rht=({repository:t,branch:e},r)=>[["git","init",Ae.fromPortablePath(r)],["git","remote","add","origin",t],["git","fetch","origin","--depth=1",dde(e)],["git","reset","--hard","FETCH_HEAD"]],nht=({branch:t})=>[["git","fetch","origin","--depth=1",dde(t),"--force"],["git","reset","--hard","FETCH_HEAD"],["git","clean","-dfx"]],iht=({plugins:t,noMinify:e},r)=>[["yarn","build:cli",...new Array().concat(...t.map(o=>["--plugin",V.resolve(r,o)])),...e?["--no-minify"]:[],"|"]],G0=class extends ct{constructor(){super(...arguments);this.installPath=fe.String("--path",{description:"The path where the repository should be cloned to"});this.repository=fe.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=fe.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.plugins=fe.Array("--plugin",[],{description:"An array of additional plugins that should be included in the bundle"});this.noMinify=fe.Boolean("--no-minify",!1,{description:"Build a bundle for development (debugging) - non-minified and non-mangled"});this.force=fe.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.skipPlugins=fe.Boolean("--skip-plugins",!1,{description:"Skip updating the contrib plugins"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd),a=typeof this.installPath<"u"?V.resolve(this.context.cwd,Ae.toPortablePath(this.installPath)):V.resolve(Ae.toPortablePath((0,gde.tmpdir)()),"yarnpkg-sources",bn.makeHash(this.repository).slice(0,6));return(await Ct.start({configuration:r,stdout:this.context.stdout},async u=>{await N8(this,{configuration:r,report:u,target:a}),u.reportSeparator(),u.reportInfo(0,"Building a fresh bundle"),u.reportSeparator(),await $1(iht(this,a),{configuration:r,context:this.context,target:a}),u.reportSeparator();let A=V.resolve(a,"packages/yarnpkg-cli/bundles/yarn.js"),p=await ae.readFilePromise(A),{bundleVersion:h}=await T8(r,null,async()=>p,{report:u});this.skipPlugins||await sht(this,h,{project:o,report:u,target:a})})).exitCode()}};G0.paths=[["set","version","from","sources"]],G0.usage=it.Usage({description:"build Yarn from master",details:` | 447 | `,examples:[["find all third-party plugins that differ from their own spec","$0 plugin check"]]});Ke();Ke();St();_t();var Pde=Ie("os");Ke();St();_t();var wde=Ie("os");Ke();Hl();_t();var dht="https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml";async function $d(t,e){let r=await ln.get(dht,{configuration:t}),o=Yi(r.toString());return Object.fromEntries(Object.entries(o).filter(([a,n])=>!e||Tr.satisfiesWithPrereleases(e,n.range??"<4.0.0-rc.1")))}var W0=class extends ct{constructor(){super(...arguments);this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins);return(await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{let n=await $d(r,On);for(let[u,{experimental:A,...p}]of Object.entries(n)){let h=u;A&&(h+=" [experimental]"),a.reportJson({name:u,experimental:A,...p}),a.reportInfo(null,h)}})).exitCode()}};W0.paths=[["plugin","list"]],W0.usage=it.Usage({category:"Plugin-related commands",description:"list the available official plugins",details:"\n This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\n ",examples:[["List the official plugins","$0 plugin list"]]});var mht=/^[0-9]+$/;function Bde(t){return mht.test(t)?`pull/${t}/head`:t}var yht=({repository:t,branch:e},r)=>[["git","init",ue.fromPortablePath(r)],["git","remote","add","origin",t],["git","fetch","origin","--depth=1",Bde(e)],["git","reset","--hard","FETCH_HEAD"]],Eht=({branch:t})=>[["git","fetch","origin","--depth=1",Bde(t),"--force"],["git","reset","--hard","FETCH_HEAD"],["git","clean","-dfx"]],Cht=({plugins:t,noMinify:e},r)=>[["yarn","build:cli",...new Array().concat(...t.map(o=>["--plugin",J.resolve(r,o)])),...e?["--no-minify"]:[],"|"]],Y0=class extends ct{constructor(){super(...arguments);this.installPath=fe.String("--path",{description:"The path where the repository should be cloned to"});this.repository=fe.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=fe.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.plugins=fe.Array("--plugin",[],{description:"An array of additional plugins that should be included in the bundle"});this.noMinify=fe.Boolean("--no-minify",!1,{description:"Build a bundle for development (debugging) - non-minified and non-mangled"});this.force=fe.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.skipPlugins=fe.Boolean("--skip-plugins",!1,{description:"Skip updating the contrib plugins"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd),a=typeof this.installPath<"u"?J.resolve(this.context.cwd,ue.toPortablePath(this.installPath)):J.resolve(ue.toPortablePath((0,wde.tmpdir)()),"yarnpkg-sources",bn.makeHash(this.repository).slice(0,6));return(await Ct.start({configuration:r,stdout:this.context.stdout},async u=>{await M8(this,{configuration:r,report:u,target:a}),u.reportSeparator(),u.reportInfo(0,"Building a fresh bundle"),u.reportSeparator(),await s2(Cht(this,a),{configuration:r,context:this.context,target:a}),u.reportSeparator();let A=J.resolve(a,"packages/yarnpkg-cli/bundles/yarn.js"),p=await oe.readFilePromise(A),{bundleVersion:h}=await O8(r,null,async()=>p,{report:u});this.skipPlugins||await Iht(this,h,{project:o,report:u,target:a})})).exitCode()}};Y0.paths=[["set","version","from","sources"]],Y0.usage=it.Usage({description:"build Yarn from master",details:` |
448 | This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project. | 448 | This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project. |
449 | 449 | ||
450 | By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \`--skip-plugins\` flag. | 450 | By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \`--skip-plugins\` flag. |
451 | `,examples:[["Build Yarn from master","$0 set version from sources"]]});async function $1(t,{configuration:e,context:r,target:o}){for(let[a,...n]of t){let u=n[n.length-1]==="|";if(u&&n.pop(),u)await Mr.pipevp(a,n,{cwd:o,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${ye.pretty(e,` $ ${[a,...n].join(" ")}`,"grey")} | 451 | `,examples:[["Build Yarn from master","$0 set version from sources"]]});async function s2(t,{configuration:e,context:r,target:o}){for(let[a,...n]of t){let u=n[n.length-1]==="|";if(u&&n.pop(),u)await Mr.pipevp(a,n,{cwd:o,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${ye.pretty(e,` $ ${[a,...n].join(" ")}`,"grey")} |
452 | `);try{await Mr.execvp(a,n,{cwd:o,strict:!0})}catch(A){throw r.stdout.write(A.stdout||A.stack),A}}}}async function N8(t,{configuration:e,report:r,target:o}){let a=!1;if(!t.force&&ae.existsSync(V.join(o,".git"))){r.reportInfo(0,"Fetching the latest commits"),r.reportSeparator();try{await $1(nht(t),{configuration:e,context:t.context,target:o}),a=!0}catch{r.reportSeparator(),r.reportWarning(0,"Repository update failed; we'll try to regenerate it")}}a||(r.reportInfo(0,"Cloning the remote repository"),r.reportSeparator(),await ae.removePromise(o),await ae.mkdirPromise(o,{recursive:!0}),await $1(rht(t,o),{configuration:e,context:t.context,target:o}))}async function sht(t,e,{project:r,report:o,target:a}){let n=await Vd(r.configuration,e),u=new Set(Object.keys(n));for(let A of r.configuration.plugins.keys())!u.has(A)||await L8(A,t,{project:r,report:o,target:a})}Ke();Ke();bt();_t();var mde=tt(ii()),yde=Ie("url"),Ede=Ie("vm");var W0=class extends ct{constructor(){super(...arguments);this.name=fe.String();this.checksum=fe.Boolean("--checksum",!0,{description:"Whether to care if this plugin is modified"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins);return(await Ct.start({configuration:r,stdout:this.context.stdout},async a=>{let{project:n}=await St.find(r,this.context.cwd),u,A;if(this.name.match(/^\.{0,2}[\\/]/)||Ae.isAbsolute(this.name)){let p=V.resolve(this.context.cwd,Ae.toPortablePath(this.name));a.reportInfo(0,`Reading ${ye.pretty(r,p,ye.Type.PATH)}`),u=V.relative(n.cwd,p),A=await ae.readFilePromise(p)}else{let p;if(this.name.match(/^https?:/)){try{new yde.URL(this.name)}catch{throw new Jt(52,`Plugin specifier "${this.name}" is neither a plugin name nor a valid url`)}u=this.name,p=this.name}else{let h=Y.parseLocator(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-"));if(h.reference!=="unknown"&&!mde.default.valid(h.reference))throw new Jt(0,"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.");let C=Y.stringifyIdent(h),w=await Vd(r,On);if(!Object.prototype.hasOwnProperty.call(w,C)){let v=`Couldn't find a plugin named ${Y.prettyIdent(r,h)} on the remote registry. | 452 | `);try{await Mr.execvp(a,n,{cwd:o,strict:!0})}catch(A){throw r.stdout.write(A.stdout||A.stack),A}}}}async function M8(t,{configuration:e,report:r,target:o}){let a=!1;if(!t.force&&oe.existsSync(J.join(o,".git"))){r.reportInfo(0,"Fetching the latest commits"),r.reportSeparator();try{await s2(Eht(t),{configuration:e,context:t.context,target:o}),a=!0}catch{r.reportSeparator(),r.reportWarning(0,"Repository update failed; we'll try to regenerate it")}}a||(r.reportInfo(0,"Cloning the remote repository"),r.reportSeparator(),await oe.removePromise(o),await oe.mkdirPromise(o,{recursive:!0}),await s2(yht(t,o),{configuration:e,context:t.context,target:o}))}async function Iht(t,e,{project:r,report:o,target:a}){let n=await $d(r.configuration,e),u=new Set(Object.keys(n));for(let A of r.configuration.plugins.keys())!u.has(A)||await U8(A,t,{project:r,report:o,target:a})}Ke();Ke();St();_t();var vde=tt(si()),Dde=Ie("url"),Sde=Ie("vm");var K0=class extends ct{constructor(){super(...arguments);this.name=fe.String();this.checksum=fe.Boolean("--checksum",!0,{description:"Whether to care if this plugin is modified"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins);return(await Ct.start({configuration:r,stdout:this.context.stdout},async a=>{let{project:n}=await Pt.find(r,this.context.cwd),u,A;if(this.name.match(/^\.{0,2}[\\/]/)||ue.isAbsolute(this.name)){let p=J.resolve(this.context.cwd,ue.toPortablePath(this.name));a.reportInfo(0,`Reading ${ye.pretty(r,p,ye.Type.PATH)}`),u=J.relative(n.cwd,p),A=await oe.readFilePromise(p)}else{let p;if(this.name.match(/^https?:/)){try{new Dde.URL(this.name)}catch{throw new Vt(52,`Plugin specifier "${this.name}" is neither a plugin name nor a valid url`)}u=this.name,p=this.name}else{let h=Y.parseLocator(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-"));if(h.reference!=="unknown"&&!vde.default.valid(h.reference))throw new Vt(0,"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.");let C=Y.stringifyIdent(h),w=await $d(r,On);if(!Object.prototype.hasOwnProperty.call(w,C)){let v=`Couldn't find a plugin named ${Y.prettyIdent(r,h)} on the remote registry. |
453 | `;throw r.plugins.has(C)?v+=`A plugin named ${Y.prettyIdent(r,h)} is already installed; possibly attempting to import a built-in plugin.`:v+=`Note that only the plugins referenced on our website (${ye.pretty(r,"https://github.com/yarnpkg/berry/blob/master/plugins.yml",ye.Type.URL)}) can be referenced by their name; any other plugin will have to be referenced through its public url (for example ${ye.pretty(r,"https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js",ye.Type.URL)}).`,new Jt(51,v)}u=C,p=w[C].url,h.reference!=="unknown"?p=p.replace(/\/master\//,`/${C}/${h.reference}/`):On!==null&&(p=p.replace(/\/master\//,`/@yarnpkg/cli/${On}/`))}a.reportInfo(0,`Downloading ${ye.pretty(r,p,"green")}`),A=await ln.get(p,{configuration:r})}await O8(u,A,{checksum:this.checksum,project:n,report:a})})).exitCode()}};W0.paths=[["plugin","import"]],W0.usage=it.Usage({category:"Plugin-related commands",description:"download a plugin",details:` | 453 | `;throw r.plugins.has(C)?v+=`A plugin named ${Y.prettyIdent(r,h)} is already installed; possibly attempting to import a built-in plugin.`:v+=`Note that only the plugins referenced on our website (${ye.pretty(r,"https://github.com/yarnpkg/berry/blob/master/plugins.yml",ye.Type.URL)}) can be referenced by their name; any other plugin will have to be referenced through its public url (for example ${ye.pretty(r,"https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js",ye.Type.URL)}).`,new Vt(51,v)}u=C,p=w[C].url,h.reference!=="unknown"?p=p.replace(/\/master\//,`/${C}/${h.reference}/`):On!==null&&(p=p.replace(/\/master\//,`/@yarnpkg/cli/${On}/`))}a.reportInfo(0,`Downloading ${ye.pretty(r,p,"green")}`),A=await ln.get(p,{configuration:r})}await _8(u,A,{checksum:this.checksum,project:n,report:a})})).exitCode()}};K0.paths=[["plugin","import"]],K0.usage=it.Usage({category:"Plugin-related commands",description:"download a plugin",details:` |
454 | This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations. | 454 | This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations. |
455 | 455 | ||
456 | Three types of plugin references are accepted: | 456 | Three types of plugin references are accepted: |
@@ -462,23 +462,23 @@ ${p} | |||
462 | If the \`--no-checksum\` option is set, Yarn will no longer care if the plugin is modified. | 462 | If the \`--no-checksum\` option is set, Yarn will no longer care if the plugin is modified. |
463 | 463 | ||
464 | Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \`@yarnpkg/builder\` package). | 464 | Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \`@yarnpkg/builder\` package). |
465 | `,examples:[['Download and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import @yarnpkg/plugin-exec"],['Download and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import exec"],["Download and activate a community plugin","$0 plugin import https://example.org/path/to/plugin.js"],["Activate a local plugin","$0 plugin import ./path/to/plugin.js"]]});async function O8(t,e,{checksum:r=!0,project:o,report:a}){let{configuration:n}=o,u={},A={exports:u};(0,Ede.runInNewContext)(e.toString(),{module:A,exports:u});let h=`.yarn/plugins/${A.exports.name}.cjs`,C=V.resolve(o.cwd,h);a.reportInfo(0,`Saving the new plugin in ${ye.pretty(n,h,"magenta")}`),await ae.mkdirPromise(V.dirname(C),{recursive:!0}),await ae.writeFilePromise(C,e);let w={path:h,spec:t};r&&(w.checksum=bn.makeHash(e)),await Xe.addPlugin(o.cwd,[w])}var oht=({pluginName:t,noMinify:e},r)=>[["yarn",`build:${t}`,...e?["--no-minify"]:[],"|"]],Y0=class extends ct{constructor(){super(...arguments);this.installPath=fe.String("--path",{description:"The path where the repository should be cloned to"});this.repository=fe.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=fe.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.noMinify=fe.Boolean("--no-minify",!1,{description:"Build a plugin for development (debugging) - non-minified and non-mangled"});this.force=fe.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.name=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),o=typeof this.installPath<"u"?V.resolve(this.context.cwd,Ae.toPortablePath(this.installPath)):V.resolve(Ae.toPortablePath((0,Cde.tmpdir)()),"yarnpkg-sources",bn.makeHash(this.repository).slice(0,6));return(await Ct.start({configuration:r,stdout:this.context.stdout},async n=>{let{project:u}=await St.find(r,this.context.cwd),A=Y.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),p=Y.stringifyIdent(A),h=await Vd(r,On);if(!Object.prototype.hasOwnProperty.call(h,p))throw new Jt(51,`Couldn't find a plugin named "${p}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let C=p;await N8(this,{configuration:r,report:n,target:o}),await L8(C,this,{project:u,report:n,target:o})})).exitCode()}};Y0.paths=[["plugin","import","from","sources"]],Y0.usage=it.Usage({category:"Plugin-related commands",description:"build a plugin from sources",details:` | 465 | `,examples:[['Download and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import @yarnpkg/plugin-exec"],['Download and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import exec"],["Download and activate a community plugin","$0 plugin import https://example.org/path/to/plugin.js"],["Activate a local plugin","$0 plugin import ./path/to/plugin.js"]]});async function _8(t,e,{checksum:r=!0,project:o,report:a}){let{configuration:n}=o,u={},A={exports:u};(0,Sde.runInNewContext)(e.toString(),{module:A,exports:u});let h=`.yarn/plugins/${A.exports.name}.cjs`,C=J.resolve(o.cwd,h);a.reportInfo(0,`Saving the new plugin in ${ye.pretty(n,h,"magenta")}`),await oe.mkdirPromise(J.dirname(C),{recursive:!0}),await oe.writeFilePromise(C,e);let w={path:h,spec:t};r&&(w.checksum=bn.makeHash(e)),await Xe.addPlugin(o.cwd,[w])}var wht=({pluginName:t,noMinify:e},r)=>[["yarn",`build:${t}`,...e?["--no-minify"]:[],"|"]],V0=class extends ct{constructor(){super(...arguments);this.installPath=fe.String("--path",{description:"The path where the repository should be cloned to"});this.repository=fe.String("--repository","https://github.com/yarnpkg/berry.git",{description:"The repository that should be cloned"});this.branch=fe.String("--branch","master",{description:"The branch of the repository that should be cloned"});this.noMinify=fe.Boolean("--no-minify",!1,{description:"Build a plugin for development (debugging) - non-minified and non-mangled"});this.force=fe.Boolean("-f,--force",!1,{description:"Always clone the repository instead of trying to fetch the latest commits"});this.name=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),o=typeof this.installPath<"u"?J.resolve(this.context.cwd,ue.toPortablePath(this.installPath)):J.resolve(ue.toPortablePath((0,Pde.tmpdir)()),"yarnpkg-sources",bn.makeHash(this.repository).slice(0,6));return(await Ct.start({configuration:r,stdout:this.context.stdout},async n=>{let{project:u}=await Pt.find(r,this.context.cwd),A=Y.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),p=Y.stringifyIdent(A),h=await $d(r,On);if(!Object.prototype.hasOwnProperty.call(h,p))throw new Vt(51,`Couldn't find a plugin named "${p}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);let C=p;await M8(this,{configuration:r,report:n,target:o}),await U8(C,this,{project:u,report:n,target:o})})).exitCode()}};V0.paths=[["plugin","import","from","sources"]],V0.usage=it.Usage({category:"Plugin-related commands",description:"build a plugin from sources",details:` |
466 | This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations. | 466 | This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations. |
467 | 467 | ||
468 | The plugins can be referenced by their short name if sourced from the official Yarn repository. | 468 | The plugins can be referenced by their short name if sourced from the official Yarn repository. |
469 | `,examples:[['Build and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import from sources @yarnpkg/plugin-exec"],['Build and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import from sources exec"]]});async function L8(t,{context:e,noMinify:r},{project:o,report:a,target:n}){let u=t.replace(/@yarnpkg\//,""),{configuration:A}=o;a.reportSeparator(),a.reportInfo(0,`Building a fresh ${u}`),a.reportSeparator(),await $1(oht({pluginName:u,noMinify:r},n),{configuration:A,context:e,target:n}),a.reportSeparator();let p=V.resolve(n,`packages/${u}/bundles/${t}.js`),h=await ae.readFilePromise(p);await O8(t,h,{project:o,report:a})}Ke();bt();_t();var K0=class extends ct{constructor(){super(...arguments);this.name=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd);return(await Ct.start({configuration:r,stdout:this.context.stdout},async n=>{let u=this.name,A=Y.parseIdent(u);if(!r.plugins.has(u))throw new ot(`${Y.prettyIdent(r,A)} isn't referenced by the current configuration`);let p=`.yarn/plugins/${u}.cjs`,h=V.resolve(o.cwd,p);ae.existsSync(h)&&(n.reportInfo(0,`Removing ${ye.pretty(r,p,ye.Type.PATH)}...`),await ae.removePromise(h)),n.reportInfo(0,"Updating the configuration..."),await Xe.updateConfiguration(o.cwd,C=>{if(!Array.isArray(C.plugins))return C;let w=C.plugins.filter(v=>v.path!==p);return C.plugins.length===w.length?C:{...C,plugins:w}})})).exitCode()}};K0.paths=[["plugin","remove"]],K0.usage=it.Usage({category:"Plugin-related commands",description:"remove a plugin",details:` | 469 | `,examples:[['Build and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import from sources @yarnpkg/plugin-exec"],['Build and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import from sources exec"]]});async function U8(t,{context:e,noMinify:r},{project:o,report:a,target:n}){let u=t.replace(/@yarnpkg\//,""),{configuration:A}=o;a.reportSeparator(),a.reportInfo(0,`Building a fresh ${u}`),a.reportSeparator(),await s2(wht({pluginName:u,noMinify:r},n),{configuration:A,context:e,target:n}),a.reportSeparator();let p=J.resolve(n,`packages/${u}/bundles/${t}.js`),h=await oe.readFilePromise(p);await _8(t,h,{project:o,report:a})}Ke();St();_t();var J0=class extends ct{constructor(){super(...arguments);this.name=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd);return(await Ct.start({configuration:r,stdout:this.context.stdout},async n=>{let u=this.name,A=Y.parseIdent(u);if(!r.plugins.has(u))throw new ot(`${Y.prettyIdent(r,A)} isn't referenced by the current configuration`);let p=`.yarn/plugins/${u}.cjs`,h=J.resolve(o.cwd,p);oe.existsSync(h)&&(n.reportInfo(0,`Removing ${ye.pretty(r,p,ye.Type.PATH)}...`),await oe.removePromise(h)),n.reportInfo(0,"Updating the configuration..."),await Xe.updateConfiguration(o.cwd,C=>{if(!Array.isArray(C.plugins))return C;let w=C.plugins.filter(v=>v.path!==p);return C.plugins.length===w.length?C:{...C,plugins:w}})})).exitCode()}};J0.paths=[["plugin","remove"]],J0.usage=it.Usage({category:"Plugin-related commands",description:"remove a plugin",details:` |
470 | This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration. | 470 | This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration. |
471 | 471 | ||
472 | **Note:** The plugins have to be referenced by their name property, which can be obtained using the \`yarn plugin runtime\` command. Shorthands are not allowed. | 472 | **Note:** The plugins have to be referenced by their name property, which can be obtained using the \`yarn plugin runtime\` command. Shorthands are not allowed. |
473 | `,examples:[["Remove a plugin imported from the Yarn repository","$0 plugin remove @yarnpkg/plugin-typescript"],["Remove a plugin imported from a local file","$0 plugin remove my-local-plugin"]]});Ke();_t();var J0=class extends ct{constructor(){super(...arguments);this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins);return(await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{for(let n of r.plugins.keys()){let u=this.context.plugins.plugins.has(n),A=n;u&&(A+=" [builtin]"),a.reportJson({name:n,builtin:u}),a.reportInfo(null,`${A}`)}})).exitCode()}};J0.paths=[["plugin","runtime"]],J0.usage=it.Usage({category:"Plugin-related commands",description:"list the active plugins",details:` | 473 | `,examples:[["Remove a plugin imported from the Yarn repository","$0 plugin remove @yarnpkg/plugin-typescript"],["Remove a plugin imported from a local file","$0 plugin remove my-local-plugin"]]});Ke();_t();var z0=class extends ct{constructor(){super(...arguments);this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins);return(await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{for(let n of r.plugins.keys()){let u=this.context.plugins.plugins.has(n),A=n;u&&(A+=" [builtin]"),a.reportJson({name:n,builtin:u}),a.reportInfo(null,`${A}`)}})).exitCode()}};z0.paths=[["plugin","runtime"]],z0.usage=it.Usage({category:"Plugin-related commands",description:"list the active plugins",details:` |
474 | This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins. | 474 | This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins. |
475 | `,examples:[["List the currently active plugins","$0 plugin runtime"]]});Ke();Ke();_t();var V0=class extends ct{constructor(){super(...arguments);this.idents=fe.Rest()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Ur.find(r);if(!a)throw new er(o.cwd,this.context.cwd);let u=new Set;for(let p of this.idents)u.add(Y.parseIdent(p).identHash);if(await o.restoreInstallState({restoreResolutions:!1}),await o.resolveEverything({cache:n,report:new xi}),u.size>0)for(let p of o.storedPackages.values())u.has(p.identHash)&&o.storedBuildState.delete(p.locatorHash);else o.storedBuildState.clear();return(await Ct.start({configuration:r,stdout:this.context.stdout,includeLogs:!this.context.quiet},async p=>{await o.install({cache:n,report:p})})).exitCode()}};V0.paths=[["rebuild"]],V0.usage=it.Usage({description:"rebuild the project's native packages",details:` | 475 | `,examples:[["List the currently active plugins","$0 plugin runtime"]]});Ke();Ke();_t();var X0=class extends ct{constructor(){super(...arguments);this.idents=fe.Rest()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Ur.find(r);if(!a)throw new er(o.cwd,this.context.cwd);let u=new Set;for(let p of this.idents)u.add(Y.parseIdent(p).identHash);if(await o.restoreInstallState({restoreResolutions:!1}),await o.resolveEverything({cache:n,report:new xi}),u.size>0)for(let p of o.storedPackages.values())u.has(p.identHash)&&o.storedBuildState.delete(p.locatorHash);else o.storedBuildState.clear();return(await Ct.start({configuration:r,stdout:this.context.stdout,includeLogs:!this.context.quiet},async p=>{await o.install({cache:n,report:p})})).exitCode()}};X0.paths=[["rebuild"]],X0.usage=it.Usage({description:"rebuild the project's native packages",details:` |
476 | This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again. | 476 | This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again. |
477 | 477 | ||
478 | Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future). | 478 | Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future). |
479 | 479 | ||
480 | By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory. | 480 | By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory. |
481 | `,examples:[["Rebuild all packages","$0 rebuild"],["Rebuild fsevents only","$0 rebuild fsevents"]]});Ke();Ke();Ke();_t();var M8=tt(Jo());$a();var z0=class extends ct{constructor(){super(...arguments);this.all=fe.Boolean("-A,--all",!1,{description:"Apply the operation to all workspaces from the current project"});this.mode=fe.String("--mode",{description:"Change what artifacts installs generate",validator:Gs(fl)});this.patterns=fe.Rest()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Ur.find(r);if(!a)throw new er(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=this.all?o.workspaces:[a],A=["dependencies","devDependencies","peerDependencies"],p=[],h=!1,C=[];for(let E of this.patterns){let R=!1,L=Y.parseIdent(E);for(let _ of u){let J=[..._.manifest.peerDependenciesMeta.keys()];for(let re of(0,M8.default)(J,E))_.manifest.peerDependenciesMeta.delete(re),h=!0,R=!0;for(let re of A){let oe=_.manifest.getForScope(re),pe=[...oe.values()].map(he=>Y.stringifyIdent(he));for(let he of(0,M8.default)(pe,Y.stringifyIdent(L))){let{identHash:ve}=Y.parseIdent(he),ge=oe.get(ve);if(typeof ge>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");_.manifest[re].delete(ve),C.push([_,re,ge]),h=!0,R=!0}}}R||p.push(E)}let w=p.length>1?"Patterns":"Pattern",v=p.length>1?"don't":"doesn't",b=this.all?"any":"this";if(p.length>0)throw new ot(`${w} ${ye.prettyList(r,p,ye.Type.CODE)} ${v} match any packages referenced by ${b} workspace`);return h?(await r.triggerMultipleHooks(R=>R.afterWorkspaceDependencyRemoval,C),(await Ct.start({configuration:r,stdout:this.context.stdout},async R=>{await o.install({cache:n,report:R,mode:this.mode})})).exitCode()):0}};z0.paths=[["remove"]],z0.usage=it.Usage({description:"remove dependencies from the project",details:` | 481 | `,examples:[["Rebuild all packages","$0 rebuild"],["Rebuild fsevents only","$0 rebuild fsevents"]]});Ke();Ke();Ke();_t();var H8=tt(zo());rl();var Z0=class extends ct{constructor(){super(...arguments);this.all=fe.Boolean("-A,--all",!1,{description:"Apply the operation to all workspaces from the current project"});this.mode=fe.String("--mode",{description:"Change what artifacts installs generate",validator:Gs(dl)});this.patterns=fe.Rest()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Ur.find(r);if(!a)throw new er(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=this.all?o.workspaces:[a],A=["dependencies","devDependencies","peerDependencies"],p=[],h=!1,C=[];for(let E of this.patterns){let R=!1,L=Y.parseIdent(E);for(let _ of u){let V=[..._.manifest.peerDependenciesMeta.keys()];for(let re of(0,H8.default)(V,E))_.manifest.peerDependenciesMeta.delete(re),h=!0,R=!0;for(let re of A){let ae=_.manifest.getForScope(re),he=[...ae.values()].map(pe=>Y.stringifyIdent(pe));for(let pe of(0,H8.default)(he,Y.stringifyIdent(L))){let{identHash:De}=Y.parseIdent(pe),ge=ae.get(De);if(typeof ge>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");_.manifest[re].delete(De),C.push([_,re,ge]),h=!0,R=!0}}}R||p.push(E)}let w=p.length>1?"Patterns":"Pattern",v=p.length>1?"don't":"doesn't",b=this.all?"any":"this";if(p.length>0)throw new ot(`${w} ${ye.prettyList(r,p,ye.Type.CODE)} ${v} match any packages referenced by ${b} workspace`);return h?(await r.triggerMultipleHooks(R=>R.afterWorkspaceDependencyRemoval,C),(await Ct.start({configuration:r,stdout:this.context.stdout},async R=>{await o.install({cache:n,report:R,mode:this.mode})})).exitCode()):0}};Z0.paths=[["remove"]],Z0.usage=it.Usage({description:"remove dependencies from the project",details:` |
482 | This command will remove the packages matching the specified patterns from the current workspace. | 482 | This command will remove the packages matching the specified patterns from the current workspace. |
483 | 483 | ||
484 | If the \`--mode=<mode>\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: | 484 | If the \`--mode=<mode>\` option is set, Yarn will change which artifacts are generated. The modes currently supported are: |
@@ -488,7 +488,7 @@ ${p} | |||
488 | - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. | 488 | - \`update-lockfile\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost. |
489 | 489 | ||
490 | This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. | 490 | This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. |
491 | `,examples:[["Remove a dependency from the current project","$0 remove lodash"],["Remove a dependency from all workspaces at once","$0 remove lodash --all"],["Remove all dependencies starting with `eslint-`","$0 remove 'eslint-*'"],["Remove all dependencies with the `@babel` scope","$0 remove '@babel/*'"],["Remove all dependencies matching `react-dom` or `react-helmet`","$0 remove 'react-{dom,helmet}'"]]});Ke();Ke();var Ide=Ie("util"),zd=class extends ct{async execute(){let e=await Xe.find(this.context.cwd,this.context.plugins),{project:r,workspace:o}=await St.find(e,this.context.cwd);if(!o)throw new er(r.cwd,this.context.cwd);return(await Ct.start({configuration:e,stdout:this.context.stdout},async n=>{let u=o.manifest.scripts,A=Ye.sortMap(u.keys(),C=>C),p={breakLength:1/0,colors:e.get("enableColors"),maxArrayLength:2},h=A.reduce((C,w)=>Math.max(C,w.length),0);for(let[C,w]of u.entries())n.reportInfo(null,`${C.padEnd(h," ")} ${(0,Ide.inspect)(w,p)}`)})).exitCode()}};zd.paths=[["run"]];Ke();Ke();_t();var X0=class extends ct{constructor(){super(...arguments);this.inspect=fe.String("--inspect",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.inspectBrk=fe.String("--inspect-brk",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.topLevel=fe.Boolean("-T,--top-level",!1,{description:"Check the root workspace for scripts and/or binaries instead of the current one"});this.binariesOnly=fe.Boolean("-B,--binaries-only",!1,{description:"Ignore any user defined scripts and only check for binaries"});this.require=fe.String("--require",{description:"Forwarded to the underlying Node process when executing a binary"});this.silent=fe.Boolean("--silent",{hidden:!0});this.scriptName=fe.String();this.args=fe.Proxy()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a,locator:n}=await St.find(r,this.context.cwd);await o.restoreInstallState();let u=this.topLevel?o.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await sn.hasPackageScript(u,this.scriptName,{project:o}))return await sn.executePackageScript(u,this.scriptName,this.args,{project:o,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let A=await sn.getPackageAccessibleBinaries(u,{project:o});if(A.get(this.scriptName)){let h=[];return this.inspect&&(typeof this.inspect=="string"?h.push(`--inspect=${this.inspect}`):h.push("--inspect")),this.inspectBrk&&(typeof this.inspectBrk=="string"?h.push(`--inspect-brk=${this.inspectBrk}`):h.push("--inspect-brk")),this.require&&h.push(`--require=${this.require}`),await sn.executePackageAccessibleBinary(u,this.scriptName,this.args,{cwd:this.context.cwd,project:o,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:h,packageAccessibleBinaries:A})}if(!this.topLevel&&!this.binariesOnly&&a&&this.scriptName.includes(":")){let C=(await Promise.all(o.workspaces.map(async w=>w.manifest.scripts.has(this.scriptName)?w:null))).filter(w=>w!==null);if(C.length===1)return await sn.executeWorkspaceScript(C[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName==="node-gyp"?new ot(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${Y.prettyLocator(r,n)}). This typically happens because some package depends on "node-gyp" to build itself, but didn't list it in their dependencies. To fix that, please run "yarn add node-gyp" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new ot(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${Y.prettyLocator(r,n)}).`);{if(this.scriptName==="global")throw new ot("The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead");let h=[this.scriptName].concat(this.args);for(let[C,w]of nC)for(let v of w)if(h.length>=v.length&&JSON.stringify(h.slice(0,v.length))===JSON.stringify(v))throw new ot(`Couldn't find a script named "${this.scriptName}", but a matching command can be found in the ${C} plugin. You can install it with "yarn plugin import ${C}".`);throw new ot(`Couldn't find a script named "${this.scriptName}".`)}}};X0.paths=[["run"]],X0.usage=it.Usage({description:"run a script defined in the package.json",details:` | 491 | `,examples:[["Remove a dependency from the current project","$0 remove lodash"],["Remove a dependency from all workspaces at once","$0 remove lodash --all"],["Remove all dependencies starting with `eslint-`","$0 remove 'eslint-*'"],["Remove all dependencies with the `@babel` scope","$0 remove '@babel/*'"],["Remove all dependencies matching `react-dom` or `react-helmet`","$0 remove 'react-{dom,helmet}'"]]});Ke();Ke();var xde=Ie("util"),em=class extends ct{async execute(){let e=await Xe.find(this.context.cwd,this.context.plugins),{project:r,workspace:o}=await Pt.find(e,this.context.cwd);if(!o)throw new er(r.cwd,this.context.cwd);return(await Ct.start({configuration:e,stdout:this.context.stdout},async n=>{let u=o.manifest.scripts,A=We.sortMap(u.keys(),C=>C),p={breakLength:1/0,colors:e.get("enableColors"),maxArrayLength:2},h=A.reduce((C,w)=>Math.max(C,w.length),0);for(let[C,w]of u.entries())n.reportInfo(null,`${C.padEnd(h," ")} ${(0,xde.inspect)(w,p)}`)})).exitCode()}};em.paths=[["run"]];Ke();Ke();_t();var $0=class extends ct{constructor(){super(...arguments);this.inspect=fe.String("--inspect",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.inspectBrk=fe.String("--inspect-brk",!1,{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"});this.topLevel=fe.Boolean("-T,--top-level",!1,{description:"Check the root workspace for scripts and/or binaries instead of the current one"});this.binariesOnly=fe.Boolean("-B,--binaries-only",!1,{description:"Ignore any user defined scripts and only check for binaries"});this.require=fe.String("--require",{description:"Forwarded to the underlying Node process when executing a binary"});this.silent=fe.Boolean("--silent",{hidden:!0});this.scriptName=fe.String();this.args=fe.Proxy()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a,locator:n}=await Pt.find(r,this.context.cwd);await o.restoreInstallState();let u=this.topLevel?o.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await sn.hasPackageScript(u,this.scriptName,{project:o}))return await sn.executePackageScript(u,this.scriptName,this.args,{project:o,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let A=await sn.getPackageAccessibleBinaries(u,{project:o});if(A.get(this.scriptName)){let h=[];return this.inspect&&(typeof this.inspect=="string"?h.push(`--inspect=${this.inspect}`):h.push("--inspect")),this.inspectBrk&&(typeof this.inspectBrk=="string"?h.push(`--inspect-brk=${this.inspectBrk}`):h.push("--inspect-brk")),this.require&&h.push(`--require=${this.require}`),await sn.executePackageAccessibleBinary(u,this.scriptName,this.args,{cwd:this.context.cwd,project:o,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:h,packageAccessibleBinaries:A})}if(!this.topLevel&&!this.binariesOnly&&a&&this.scriptName.includes(":")){let C=(await Promise.all(o.workspaces.map(async w=>w.manifest.scripts.has(this.scriptName)?w:null))).filter(w=>w!==null);if(C.length===1)return await sn.executeWorkspaceScript(C[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName==="node-gyp"?new ot(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${Y.prettyLocator(r,n)}). This typically happens because some package depends on "node-gyp" to build itself, but didn't list it in their dependencies. To fix that, please run "yarn add node-gyp" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new ot(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${Y.prettyLocator(r,n)}).`);{if(this.scriptName==="global")throw new ot("The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead");let h=[this.scriptName].concat(this.args);for(let[C,w]of lC)for(let v of w)if(h.length>=v.length&&JSON.stringify(h.slice(0,v.length))===JSON.stringify(v))throw new ot(`Couldn't find a script named "${this.scriptName}", but a matching command can be found in the ${C} plugin. You can install it with "yarn plugin import ${C}".`);throw new ot(`Couldn't find a script named "${this.scriptName}".`)}}};$0.paths=[["run"]],$0.usage=it.Usage({description:"run a script defined in the package.json",details:` |
492 | This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace: | 492 | This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace: |
493 | 493 | ||
494 | - If the \`scripts\` field from your local package.json contains a matching script name, its definition will get executed. | 494 | - If the \`scripts\` field from your local package.json contains a matching script name, its definition will get executed. |
@@ -498,32 +498,32 @@ ${p} | |||
498 | - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed. | 498 | - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed. |
499 | 499 | ||
500 | Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax). | 500 | Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax). |
501 | `,examples:[["Run the tests from the local workspace","$0 run test"],['Same thing, but without the "run" keyword',"$0 test"],["Inspect Webpack while running","$0 run --inspect-brk webpack"]]});Ke();Ke();_t();var Z0=class extends ct{constructor(){super(...arguments);this.save=fe.Boolean("-s,--save",!1,{description:"Persist the resolution inside the top-level manifest"});this.descriptor=fe.String();this.resolution=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Ur.find(r);if(await o.restoreInstallState({restoreResolutions:!1}),!a)throw new er(o.cwd,this.context.cwd);let u=Y.parseDescriptor(this.descriptor,!0),A=Y.makeDescriptor(u,this.resolution);return o.storedDescriptors.set(u.descriptorHash,u),o.storedDescriptors.set(A.descriptorHash,A),o.resolutionAliases.set(u.descriptorHash,A.descriptorHash),(await Ct.start({configuration:r,stdout:this.context.stdout},async h=>{await o.install({cache:n,report:h})})).exitCode()}};Z0.paths=[["set","resolution"]],Z0.usage=it.Usage({description:"enforce a package resolution",details:'\n This command updates the resolution table so that `descriptor` is resolved by `resolution`.\n\n Note that by default this command only affect the current resolution table - meaning that this "manual override" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, add the `-s,--save` flag which will also edit the `resolutions` field from your top-level manifest.\n\n Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\n ',examples:[["Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0","$0 set resolution lodash@npm:^1.2.3 1.5.0"]]});Ke();bt();_t();var wde=tt(Jo()),$0=class extends ct{constructor(){super(...arguments);this.all=fe.Boolean("-A,--all",!1,{description:"Unlink all workspaces belonging to the target project from the current one"});this.leadingArguments=fe.Rest()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Ur.find(r);if(!a)throw new er(o.cwd,this.context.cwd);let u=o.topLevelWorkspace,A=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:h,reference:C}of u.manifest.resolutions)C.startsWith("portal:")&&A.add(h.descriptor.fullName);if(this.leadingArguments.length>0)for(let h of this.leadingArguments){let C=V.resolve(this.context.cwd,Ae.toPortablePath(h));if(Ye.isPathLike(h)){let w=await Xe.find(C,this.context.plugins,{useRc:!1,strict:!1}),{project:v,workspace:b}=await St.find(w,C);if(!b)throw new er(v.cwd,C);if(this.all){for(let E of v.workspaces)E.manifest.name&&A.add(Y.stringifyIdent(E.locator));if(A.size===0)throw new ot("No workspace found to be unlinked in the target project")}else{if(!b.manifest.name)throw new ot("The target workspace doesn't have a name and thus cannot be unlinked");A.add(Y.stringifyIdent(b.locator))}}else{let w=[...u.manifest.resolutions.map(({pattern:v})=>v.descriptor.fullName)];for(let v of(0,wde.default)(w,h))A.add(v)}}return u.manifest.resolutions=u.manifest.resolutions.filter(({pattern:h})=>!A.has(h.descriptor.fullName)),(await Ct.start({configuration:r,stdout:this.context.stdout},async h=>{await o.install({cache:n,report:h})})).exitCode()}};$0.paths=[["unlink"]],$0.usage=it.Usage({description:"disconnect the local project from another one",details:` | 501 | `,examples:[["Run the tests from the local workspace","$0 run test"],['Same thing, but without the "run" keyword',"$0 test"],["Inspect Webpack while running","$0 run --inspect-brk webpack"]]});Ke();Ke();_t();var eh=class extends ct{constructor(){super(...arguments);this.save=fe.Boolean("-s,--save",!1,{description:"Persist the resolution inside the top-level manifest"});this.descriptor=fe.String();this.resolution=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Ur.find(r);if(await o.restoreInstallState({restoreResolutions:!1}),!a)throw new er(o.cwd,this.context.cwd);let u=Y.parseDescriptor(this.descriptor,!0),A=Y.makeDescriptor(u,this.resolution);return o.storedDescriptors.set(u.descriptorHash,u),o.storedDescriptors.set(A.descriptorHash,A),o.resolutionAliases.set(u.descriptorHash,A.descriptorHash),(await Ct.start({configuration:r,stdout:this.context.stdout},async h=>{await o.install({cache:n,report:h})})).exitCode()}};eh.paths=[["set","resolution"]],eh.usage=it.Usage({description:"enforce a package resolution",details:'\n This command updates the resolution table so that `descriptor` is resolved by `resolution`.\n\n Note that by default this command only affect the current resolution table - meaning that this "manual override" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, add the `-s,--save` flag which will also edit the `resolutions` field from your top-level manifest.\n\n Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\n ',examples:[["Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0","$0 set resolution lodash@npm:^1.2.3 1.5.0"]]});Ke();St();_t();var bde=tt(zo()),th=class extends ct{constructor(){super(...arguments);this.all=fe.Boolean("-A,--all",!1,{description:"Unlink all workspaces belonging to the target project from the current one"});this.leadingArguments=fe.Rest()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Ur.find(r);if(!a)throw new er(o.cwd,this.context.cwd);let u=o.topLevelWorkspace,A=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:h,reference:C}of u.manifest.resolutions)C.startsWith("portal:")&&A.add(h.descriptor.fullName);if(this.leadingArguments.length>0)for(let h of this.leadingArguments){let C=J.resolve(this.context.cwd,ue.toPortablePath(h));if(We.isPathLike(h)){let w=await Xe.find(C,this.context.plugins,{useRc:!1,strict:!1}),{project:v,workspace:b}=await Pt.find(w,C);if(!b)throw new er(v.cwd,C);if(this.all){for(let E of v.workspaces)E.manifest.name&&A.add(Y.stringifyIdent(E.locator));if(A.size===0)throw new ot("No workspace found to be unlinked in the target project")}else{if(!b.manifest.name)throw new ot("The target workspace doesn't have a name and thus cannot be unlinked");A.add(Y.stringifyIdent(b.locator))}}else{let w=[...u.manifest.resolutions.map(({pattern:v})=>v.descriptor.fullName)];for(let v of(0,bde.default)(w,h))A.add(v)}}return u.manifest.resolutions=u.manifest.resolutions.filter(({pattern:h})=>!A.has(h.descriptor.fullName)),(await Ct.start({configuration:r,stdout:this.context.stdout},async h=>{await o.install({cache:n,report:h})})).exitCode()}};th.paths=[["unlink"]],th.usage=it.Usage({description:"disconnect the local project from another one",details:` |
502 | This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments. | 502 | This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments. |
503 | `,examples:[["Unregister a remote workspace in the current project","$0 unlink ~/ts-loader"],["Unregister all workspaces from a remote project in the current project","$0 unlink ~/jest --all"],["Unregister all previously linked workspaces","$0 unlink --all"],["Unregister all workspaces matching a glob","$0 unlink '@babel/*' 'pkg-{a,b}'"]]});Ke();Ke();Ke();_t();var Bde=tt(Y1()),U8=tt(Jo());$a();var Yf=class extends ct{constructor(){super(...arguments);this.interactive=fe.Boolean("-i,--interactive",{description:"Offer various choices, depending on the detected upgrade paths"});this.fixed=fe.Boolean("-F,--fixed",!1,{description:"Store dependency tags as-is instead of resolving them"});this.exact=fe.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=fe.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=fe.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.recursive=fe.Boolean("-R,--recursive",!1,{description:"Resolve again ALL resolutions for those packages"});this.mode=fe.String("--mode",{description:"Change what artifacts installs generate",validator:Gs(fl)});this.patterns=fe.Rest()}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Ur.find(r);if(!a)throw new er(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=[...o.storedDescriptors.values()],A=u.map(w=>Y.stringifyIdent(w)),p=new Set;for(let w of this.patterns){if(Y.parseDescriptor(w).range!=="unknown")throw new ot("Ranges aren't allowed when using --recursive");for(let v of(0,U8.default)(A,w)){let b=Y.parseIdent(v);p.add(b.identHash)}}let h=u.filter(w=>p.has(w.identHash));for(let w of h)o.storedDescriptors.delete(w.descriptorHash),o.storedResolutions.delete(w.descriptorHash);return(await Ct.start({configuration:r,stdout:this.context.stdout},async w=>{await o.install({cache:n,report:w})})).exitCode()}async executeUpClassic(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Ur.find(r);if(!a)throw new er(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=this.fixed,A=this.interactive??r.get("preferInteractive"),p=J1(this,o),h=A?["keep","reuse","project","latest"]:["project","latest"],C=[],w=[];for(let _ of this.patterns){let J=!1,re=Y.parseDescriptor(_);for(let oe of o.workspaces)for(let pe of["dependencies","devDependencies"]){let ve=[...oe.manifest.getForScope(pe).values()].map(ge=>Y.stringifyIdent(ge));for(let ge of(0,U8.default)(ve,Y.stringifyIdent(re))){let le=Y.parseIdent(ge),Pe=oe.manifest[pe].get(le.identHash);if(typeof Pe>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let g=Y.makeDescriptor(le,re.range);C.push(Promise.resolve().then(async()=>[oe,pe,Pe,await V1(g,{project:o,workspace:oe,cache:n,target:pe,fixed:u,modifier:p,strategies:h})])),J=!0}}J||w.push(_)}if(w.length>1)throw new ot(`Patterns ${ye.prettyList(r,w,ye.Type.CODE)} don't match any packages referenced by any workspace`);if(w.length>0)throw new ot(`Pattern ${ye.prettyList(r,w,ye.Type.CODE)} doesn't match any packages referenced by any workspace`);let v=await Promise.all(C),b=await fA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async _=>{for(let[,,J,{suggestions:re,rejections:oe}]of v){let pe=re.filter(he=>he.descriptor!==null);if(pe.length===0){let[he]=oe;if(typeof he>"u")throw new Error("Assertion failed: Expected an error to have been set");let ve=this.cli.error(he);o.configuration.get("enableNetwork")?_.reportError(27,`${Y.prettyDescriptor(r,J)} can't be resolved to a satisfying range | 503 | `,examples:[["Unregister a remote workspace in the current project","$0 unlink ~/ts-loader"],["Unregister all workspaces from a remote project in the current project","$0 unlink ~/jest --all"],["Unregister all previously linked workspaces","$0 unlink --all"],["Unregister all workspaces matching a glob","$0 unlink '@babel/*' 'pkg-{a,b}'"]]});Ke();Ke();Ke();_t();var Qde=tt(Z1()),q8=tt(zo());rl();var zf=class extends ct{constructor(){super(...arguments);this.interactive=fe.Boolean("-i,--interactive",{description:"Offer various choices, depending on the detected upgrade paths"});this.fixed=fe.Boolean("-F,--fixed",!1,{description:"Store dependency tags as-is instead of resolving them"});this.exact=fe.Boolean("-E,--exact",!1,{description:"Don't use any semver modifier on the resolved range"});this.tilde=fe.Boolean("-T,--tilde",!1,{description:"Use the `~` semver modifier on the resolved range"});this.caret=fe.Boolean("-C,--caret",!1,{description:"Use the `^` semver modifier on the resolved range"});this.recursive=fe.Boolean("-R,--recursive",!1,{description:"Resolve again ALL resolutions for those packages"});this.mode=fe.String("--mode",{description:"Change what artifacts installs generate",validator:Gs(dl)});this.patterns=fe.Rest()}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Ur.find(r);if(!a)throw new er(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=[...o.storedDescriptors.values()],A=u.map(w=>Y.stringifyIdent(w)),p=new Set;for(let w of this.patterns){if(Y.parseDescriptor(w).range!=="unknown")throw new ot("Ranges aren't allowed when using --recursive");for(let v of(0,q8.default)(A,w)){let b=Y.parseIdent(v);p.add(b.identHash)}}let h=u.filter(w=>p.has(w.identHash));for(let w of h)o.storedDescriptors.delete(w.descriptorHash),o.storedResolutions.delete(w.descriptorHash);return(await Ct.start({configuration:r,stdout:this.context.stdout},async w=>{await o.install({cache:n,report:w})})).exitCode()}async executeUpClassic(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Ur.find(r);if(!a)throw new er(o.cwd,this.context.cwd);await o.restoreInstallState({restoreResolutions:!1});let u=this.fixed,A=this.interactive??r.get("preferInteractive"),p=e2(this,o),h=A?["keep","reuse","project","latest"]:["project","latest"],C=[],w=[];for(let _ of this.patterns){let V=!1,re=Y.parseDescriptor(_),ae=Y.stringifyIdent(re);for(let he of o.workspaces)for(let pe of["dependencies","devDependencies"]){let ge=[...he.manifest.getForScope(pe).values()].map(Pe=>Y.stringifyIdent(Pe)),le=ae==="*"?ge:(0,q8.default)(ge,ae);for(let Pe of le){let g=Y.parseIdent(Pe),ve=he.manifest[pe].get(g.identHash);if(typeof ve>"u")throw new Error("Assertion failed: Expected the descriptor to be registered");let Ee=Y.makeDescriptor(g,re.range);C.push(Promise.resolve().then(async()=>[he,pe,ve,await t2(Ee,{project:o,workspace:he,cache:n,target:pe,fixed:u,modifier:p,strategies:h})])),V=!0}}V||w.push(_)}if(w.length>1)throw new ot(`Patterns ${ye.prettyList(r,w,ye.Type.CODE)} don't match any packages referenced by any workspace`);if(w.length>0)throw new ot(`Pattern ${ye.prettyList(r,w,ye.Type.CODE)} doesn't match any packages referenced by any workspace`);let v=await Promise.all(C),b=await pA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async _=>{for(let[,,V,{suggestions:re,rejections:ae}]of v){let he=re.filter(pe=>pe.descriptor!==null);if(he.length===0){let[pe]=ae;if(typeof pe>"u")throw new Error("Assertion failed: Expected an error to have been set");let De=this.cli.error(pe);o.configuration.get("enableNetwork")?_.reportError(27,`${Y.prettyDescriptor(r,V)} can't be resolved to a satisfying range |
504 | 504 | ||
505 | ${ve}`):_.reportError(27,`${Y.prettyDescriptor(r,J)} can't be resolved to a satisfying range (note: network resolution has been disabled) | 505 | ${De}`):_.reportError(27,`${Y.prettyDescriptor(r,V)} can't be resolved to a satisfying range (note: network resolution has been disabled) |
506 | 506 | ||
507 | ${ve}`)}else pe.length>1&&!A&&_.reportError(27,`${Y.prettyDescriptor(r,J)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(b.hasErrors())return b.exitCode();let E=!1,R=[];for(let[_,J,,{suggestions:re}]of v){let oe,pe=re.filter(le=>le.descriptor!==null),he=pe[0].descriptor,ve=pe.every(le=>Y.areDescriptorsEqual(le.descriptor,he));pe.length===1||ve?oe=he:(E=!0,{answer:oe}=await(0,Bde.prompt)({type:"select",name:"answer",message:`Which range do you want to use in ${Y.prettyWorkspace(r,_)} \u276F ${J}?`,choices:re.map(({descriptor:le,name:Pe,reason:g})=>le?{name:Pe,hint:g,descriptor:le}:{name:Pe,hint:g,disabled:!0}),onCancel:()=>process.exit(130),result(le){return this.find(le,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let ge=_.manifest[J].get(oe.identHash);if(typeof ge>"u")throw new Error("Assertion failed: This descriptor should have a matching entry");if(ge.descriptorHash!==oe.descriptorHash)_.manifest[J].set(oe.identHash,oe),R.push([_,J,ge,oe]);else{let le=r.makeResolver(),Pe={project:o,resolver:le},g=r.normalizeDependency(ge),De=le.bindDescriptor(g,_.anchoredLocator,Pe);o.forgetResolution(De)}}return await r.triggerMultipleHooks(_=>_.afterWorkspaceDependencyReplacement,R),E&&this.context.stdout.write(` | 507 | ${De}`)}else he.length>1&&!A&&_.reportError(27,`${Y.prettyDescriptor(r,V)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(b.hasErrors())return b.exitCode();let E=!1,R=[];for(let[_,V,,{suggestions:re}]of v){let ae,he=re.filter(le=>le.descriptor!==null),pe=he[0].descriptor,De=he.every(le=>Y.areDescriptorsEqual(le.descriptor,pe));he.length===1||De?ae=pe:(E=!0,{answer:ae}=await(0,Qde.prompt)({type:"select",name:"answer",message:`Which range do you want to use in ${Y.prettyWorkspace(r,_)} \u276F ${V}?`,choices:re.map(({descriptor:le,name:Pe,reason:g})=>le?{name:Pe,hint:g,descriptor:le}:{name:Pe,hint:g,disabled:!0}),onCancel:()=>process.exit(130),result(le){return this.find(le,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout}));let ge=_.manifest[V].get(ae.identHash);if(typeof ge>"u")throw new Error("Assertion failed: This descriptor should have a matching entry");if(ge.descriptorHash!==ae.descriptorHash)_.manifest[V].set(ae.identHash,ae),R.push([_,V,ge,ae]);else{let le=r.makeResolver(),Pe={project:o,resolver:le},g=r.normalizeDependency(ge),ve=le.bindDescriptor(g,_.anchoredLocator,Pe);o.forgetResolution(ve)}}return await r.triggerMultipleHooks(_=>_.afterWorkspaceDependencyReplacement,R),E&&this.context.stdout.write(` |
508 | `),(await Ct.start({configuration:r,stdout:this.context.stdout},async _=>{await o.install({cache:n,report:_,mode:this.mode})})).exitCode()}};Yf.paths=[["up"]],Yf.usage=it.Usage({description:"upgrade dependencies across the project",details:"\n This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\n\n If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\n\n If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\n\n The, `-C,--caret`, `-E,--exact` and `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\n\n If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\n\n This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\n ",examples:[["Upgrade all instances of lodash to the latest release","$0 up lodash"],["Upgrade all instances of lodash to the latest release, but ask confirmation for each","$0 up lodash -i"],["Upgrade all instances of lodash to 1.2.3","$0 up lodash@1.2.3"],["Upgrade all instances of packages with the `@babel` scope to the latest release","$0 up '@babel/*'"],["Upgrade all instances of packages containing the word `jest` to the latest release","$0 up '*jest*'"],["Upgrade all instances of packages with the `@babel` scope to 7.0.0","$0 up '@babel/*@7.0.0'"]]}),Yf.schema=[MT("recursive",Vg.Forbids,["interactive","exact","tilde","caret"],{ignore:[void 0,!1]})];Ke();Ke();Ke();_t();var eh=class extends ct{constructor(){super(...arguments);this.recursive=fe.Boolean("-R,--recursive",!1,{description:"List, for each workspace, what are all the paths that lead to the dependency"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.peers=fe.Boolean("--peers",!1,{description:"Also print the peer dependencies that match the specified name"});this.package=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new er(o.cwd,this.context.cwd);await o.restoreInstallState();let n=Y.parseIdent(this.package).identHash,u=this.recursive?lht(o,n,{configuration:r,peers:this.peers}):aht(o,n,{configuration:r,peers:this.peers});Xo.emitTree(u,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1})}};eh.paths=[["why"]],eh.usage=it.Usage({description:"display the reason why a package is needed",details:` | 508 | `),(await Ct.start({configuration:r,stdout:this.context.stdout},async _=>{await o.install({cache:n,report:_,mode:this.mode})})).exitCode()}};zf.paths=[["up"]],zf.usage=it.Usage({description:"upgrade dependencies across the project",details:"\n This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\n\n If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\n\n If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\n\n The, `-C,--caret`, `-E,--exact` and `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\n\n If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\n\n This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\n ",examples:[["Upgrade all instances of lodash to the latest release","$0 up lodash"],["Upgrade all instances of lodash to the latest release, but ask confirmation for each","$0 up lodash -i"],["Upgrade all instances of lodash to 1.2.3","$0 up lodash@1.2.3"],["Upgrade all instances of packages with the `@babel` scope to the latest release","$0 up '@babel/*'"],["Upgrade all instances of packages containing the word `jest` to the latest release","$0 up '*jest*'"],["Upgrade all instances of packages with the `@babel` scope to 7.0.0","$0 up '@babel/*@7.0.0'"]]}),zf.schema=[HT("recursive",$g.Forbids,["interactive","exact","tilde","caret"],{ignore:[void 0,!1]})];Ke();Ke();Ke();_t();var rh=class extends ct{constructor(){super(...arguments);this.recursive=fe.Boolean("-R,--recursive",!1,{description:"List, for each workspace, what are all the paths that lead to the dependency"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.peers=fe.Boolean("--peers",!1,{description:"Also print the peer dependencies that match the specified name"});this.package=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new er(o.cwd,this.context.cwd);await o.restoreInstallState();let n=Y.parseIdent(this.package).identHash,u=this.recursive?vht(o,n,{configuration:r,peers:this.peers}):Bht(o,n,{configuration:r,peers:this.peers});$o.emitTree(u,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1})}};rh.paths=[["why"]],rh.usage=it.Usage({description:"display the reason why a package is needed",details:` |
509 | This command prints the exact reasons why a package appears in the dependency tree. | 509 | This command prints the exact reasons why a package appears in the dependency tree. |
510 | 510 | ||
511 | If \`-R,--recursive\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named "Foo" when looking for "Bar", it means that "Foo" already got printed higher in the tree. | 511 | If \`-R,--recursive\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named "Foo" when looking for "Bar", it means that "Foo" already got printed higher in the tree. |
512 | `,examples:[["Explain why lodash is used in your project","$0 why lodash"]]});function aht(t,e,{configuration:r,peers:o}){let a=Ye.sortMap(t.storedPackages.values(),A=>Y.stringifyLocator(A)),n={},u={children:n};for(let A of a){let p={};for(let C of A.dependencies.values()){if(!o&&A.peerDependencies.has(C.identHash))continue;let w=t.storedResolutions.get(C.descriptorHash);if(!w)throw new Error("Assertion failed: The resolution should have been registered");let v=t.storedPackages.get(w);if(!v)throw new Error("Assertion failed: The package should have been registered");if(v.identHash!==e)continue;{let E=Y.stringifyLocator(A);n[E]={value:[A,ye.Type.LOCATOR],children:p}}let b=Y.stringifyLocator(v);p[b]={value:[{descriptor:C,locator:v},ye.Type.DEPENDENT]}}}return u}function lht(t,e,{configuration:r,peers:o}){let a=Ye.sortMap(t.workspaces,v=>Y.stringifyLocator(v.anchoredLocator)),n=new Set,u=new Set,A=v=>{if(n.has(v.locatorHash))return u.has(v.locatorHash);if(n.add(v.locatorHash),v.identHash===e)return u.add(v.locatorHash),!0;let b=!1;v.identHash===e&&(b=!0);for(let E of v.dependencies.values()){if(!o&&v.peerDependencies.has(E.identHash))continue;let R=t.storedResolutions.get(E.descriptorHash);if(!R)throw new Error("Assertion failed: The resolution should have been registered");let L=t.storedPackages.get(R);if(!L)throw new Error("Assertion failed: The package should have been registered");A(L)&&(b=!0)}return b&&u.add(v.locatorHash),b};for(let v of a)A(v.anchoredPackage);let p=new Set,h={},C={children:h},w=(v,b,E)=>{if(!u.has(v.locatorHash))return;let R=E!==null?ye.tuple(ye.Type.DEPENDENT,{locator:v,descriptor:E}):ye.tuple(ye.Type.LOCATOR,v),L={},_={value:R,children:L},J=Y.stringifyLocator(v);if(b[J]=_,!p.has(v.locatorHash)&&(p.add(v.locatorHash),!(E!==null&&t.tryWorkspaceByLocator(v))))for(let re of v.dependencies.values()){if(!o&&v.peerDependencies.has(re.identHash))continue;let oe=t.storedResolutions.get(re.descriptorHash);if(!oe)throw new Error("Assertion failed: The resolution should have been registered");let pe=t.storedPackages.get(oe);if(!pe)throw new Error("Assertion failed: The package should have been registered");w(pe,L,re)}};for(let v of a)w(v.anchoredPackage,h,null);return C}Ke();var z8={};Yt(z8,{GitFetcher:()=>t2,GitResolver:()=>r2,default:()=>xht,gitUtils:()=>Zo});Ke();bt();var Zo={};Yt(Zo,{TreeishProtocols:()=>e2,clone:()=>V8,fetchBase:()=>Wde,fetchChangedFiles:()=>Yde,fetchChangedWorkspaces:()=>Sht,fetchRoot:()=>Gde,isGitUrl:()=>uC,lsRemote:()=>jde,normalizeLocator:()=>Y8,normalizeRepoUrl:()=>$b,resolveUrl:()=>J8,splitRepoUrl:()=>th,validateRepoUrl:()=>K8});Ke();bt();_t();var _de=tt(Ode()),Hde=tt(EU()),cC=tt(Ie("querystring")),G8=tt(ii());function j8(t,e,r){let o=t.indexOf(r);return t.lastIndexOf(e,o>-1?o:1/0)}function Mde(t){try{return new URL(t)}catch{return}}function vht(t){let e=j8(t,"@","#"),r=j8(t,":","#");return r>e&&(t=`${t.slice(0,r)}/${t.slice(r+1)}`),j8(t,":","#")===-1&&t.indexOf("//")===-1&&(t=`ssh://${t}`),t}function Ude(t){return Mde(t)||Mde(vht(t))}function qde(){return{...process.env,GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND||`${process.env.GIT_SSH||"ssh"} -o BatchMode=yes`}}var Dht=[/^ssh:/,/^git(?:\+[^:]+)?:/,/^(?:git\+)?https?:[^#]+\/[^#]+(?:\.git)(?:#.*)?$/,/^git@[^#]+\/[^#]+\.git(?:#.*)?$/,/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z._0-9-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\.git)?(?:#.*)?$/,/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/],e2=(a=>(a.Commit="commit",a.Head="head",a.Tag="tag",a.Semver="semver",a))(e2||{});function uC(t){return t?Dht.some(e=>!!t.match(e)):!1}function th(t){t=$b(t);let e=t.indexOf("#");if(e===-1)return{repo:t,treeish:{protocol:"head",request:"HEAD"},extra:{}};let r=t.slice(0,e),o=t.slice(e+1);if(o.match(/^[a-z]+=/)){let a=cC.default.parse(o);for(let[p,h]of Object.entries(a))if(typeof h!="string")throw new Error(`Assertion failed: The ${p} parameter must be a literal string`);let n=Object.values(e2).find(p=>Object.prototype.hasOwnProperty.call(a,p)),[u,A]=typeof n<"u"?[n,a[n]]:["head","HEAD"];for(let p of Object.values(e2))delete a[p];return{repo:r,treeish:{protocol:u,request:A},extra:a}}else{let a=o.indexOf(":"),[n,u]=a===-1?[null,o]:[o.slice(0,a),o.slice(a+1)];return{repo:r,treeish:{protocol:n,request:u},extra:{}}}}function $b(t,{git:e=!1}={}){if(t=t.replace(/^git\+https:/,"https:"),t=t.replace(/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\.git)?(#.*)?$/,"https://github.com/$1/$2.git$3"),t=t.replace(/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/,"https://github.com/$1/$2.git#$3"),e){let r=Ude(t);r&&(t=r.href),t=t.replace(/^git\+([^:]+):/,"$1:")}return t}function Y8(t){return Y.makeLocator(t,$b(t.reference))}function K8(t,{configuration:e}){let r=$b(t,{git:!0});if(!ln.getNetworkSettings(`https://${(0,_de.default)(r).resource}`,{configuration:e}).enableNetwork)throw new Jt(80,`Request to '${r}' has been blocked because of your configuration settings`);return r}async function jde(t,e){let r=K8(t,{configuration:e}),o=await W8("listing refs",["ls-remote",r],{cwd:e.startingCwd,env:qde()},{configuration:e,normalizedRepoUrl:r}),a=new Map,n=/^([a-f0-9]{40})\t([^\n]+)/gm,u;for(;(u=n.exec(o.stdout))!==null;)a.set(u[2],u[1]);return a}async function J8(t,e){let{repo:r,treeish:{protocol:o,request:a},extra:n}=th(t),u=await jde(r,e),A=(h,C)=>{switch(h){case"commit":{if(!C.match(/^[a-f0-9]{40}$/))throw new Error("Invalid commit hash");return cC.default.stringify({...n,commit:C})}case"head":{let w=u.get(C==="HEAD"?C:`refs/heads/${C}`);if(typeof w>"u")throw new Error(`Unknown head ("${C}")`);return cC.default.stringify({...n,commit:w})}case"tag":{let w=u.get(`refs/tags/${C}`);if(typeof w>"u")throw new Error(`Unknown tag ("${C}")`);return cC.default.stringify({...n,commit:w})}case"semver":{let w=Tr.validRange(C);if(!w)throw new Error(`Invalid range ("${C}")`);let v=new Map([...u.entries()].filter(([E])=>E.startsWith("refs/tags/")).map(([E,R])=>[G8.default.parse(E.slice(10)),R]).filter(E=>E[0]!==null)),b=G8.default.maxSatisfying([...v.keys()],w);if(b===null)throw new Error(`No matching range ("${C}")`);return cC.default.stringify({...n,commit:v.get(b)})}case null:{let w;if((w=p("commit",C))!==null||(w=p("tag",C))!==null||(w=p("head",C))!==null)return w;throw C.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve "${C}" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve "${C}" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol ("${h}")`)}},p=(h,C)=>{try{return A(h,C)}catch{return null}};return`${r}#${A(o,a)}`}async function V8(t,e){return await e.getLimit("cloneConcurrency")(async()=>{let{repo:r,treeish:{protocol:o,request:a}}=th(t);if(o!=="commit")throw new Error("Invalid treeish protocol when cloning");let n=K8(r,{configuration:e}),u=await ae.mktempPromise(),A={cwd:u,env:qde()};return await W8("cloning the repository",["clone","-c core.autocrlf=false",n,Ae.fromPortablePath(u)],A,{configuration:e,normalizedRepoUrl:n}),await W8("switching branch",["checkout",`${a}`],A,{configuration:e,normalizedRepoUrl:n}),u})}async function Gde(t){let e,r=t;do{if(e=r,await ae.existsPromise(V.join(e,".git")))return e;r=V.dirname(e)}while(r!==e);return null}async function Wde(t,{baseRefs:e}){if(e.length===0)throw new ot("Can't run this command with zero base refs specified.");let r=[];for(let A of e){let{code:p}=await Mr.execvp("git",["merge-base",A,"HEAD"],{cwd:t});p===0&&r.push(A)}if(r.length===0)throw new ot(`No ancestor could be found between any of HEAD and ${e.join(", ")}`);let{stdout:o}=await Mr.execvp("git",["merge-base","HEAD",...r],{cwd:t,strict:!0}),a=o.trim(),{stdout:n}=await Mr.execvp("git",["show","--quiet","--pretty=format:%s",a],{cwd:t,strict:!0}),u=n.trim();return{hash:a,title:u}}async function Yde(t,{base:e,project:r}){let o=Ye.buildIgnorePattern(r.configuration.get("changesetIgnorePatterns")),{stdout:a}=await Mr.execvp("git",["diff","--name-only",`${e}`],{cwd:t,strict:!0}),n=a.split(/\r\n|\r|\n/).filter(h=>h.length>0).map(h=>V.resolve(t,Ae.toPortablePath(h))),{stdout:u}=await Mr.execvp("git",["ls-files","--others","--exclude-standard"],{cwd:t,strict:!0}),A=u.split(/\r\n|\r|\n/).filter(h=>h.length>0).map(h=>V.resolve(t,Ae.toPortablePath(h))),p=[...new Set([...n,...A].sort())];return o?p.filter(h=>!V.relative(r.cwd,h).match(o)):p}async function Sht({ref:t,project:e}){if(e.configuration.projectCwd===null)throw new ot("This command can only be run from within a Yarn project");let r=[V.resolve(e.cwd,e.configuration.get("cacheFolder")),V.resolve(e.cwd,e.configuration.get("installStatePath")),V.resolve(e.cwd,e.configuration.get("lockfileFilename")),V.resolve(e.cwd,e.configuration.get("virtualFolder"))];await e.configuration.triggerHook(u=>u.populateYarnPaths,e,u=>{u!=null&&r.push(u)});let o=await Gde(e.configuration.projectCwd);if(o==null)throw new ot("This command can only be run on Git repositories");let a=await Wde(o,{baseRefs:typeof t=="string"?[t]:e.configuration.get("changesetBaseRefs")}),n=await Yde(o,{base:a.hash,project:e});return new Set(Ye.mapAndFilter(n,u=>{let A=e.tryWorkspaceByFilePath(u);return A===null?Ye.mapAndFilter.skip:r.some(p=>u.startsWith(p))?Ye.mapAndFilter.skip:A}))}async function W8(t,e,r,{configuration:o,normalizedRepoUrl:a}){try{return await Mr.execvp("git",e,{...r,strict:!0})}catch(n){if(!(n instanceof Mr.ExecError))throw n;let u=n.reportExtra,A=n.stderr.toString();throw new Jt(1,`Failed ${t}`,p=>{p.reportError(1,` ${ye.prettyField(o,{label:"Repository URL",value:ye.tuple(ye.Type.URL,a)})}`);for(let h of A.matchAll(/^(.+?): (.*)$/gm)){let[,C,w]=h;C=C.toLowerCase();let v=C==="error"?"Error":`${(0,Hde.default)(C)} Error`;p.reportError(1,` ${ye.prettyField(o,{label:v,value:ye.tuple(ye.Type.NO_HINT,w)})}`)}u==null||u(p)})}}var t2=class{supports(e,r){return uC(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,a=Y8(e),n=new Map(r.checksums);n.set(a.locatorHash,o);let u={...r,checksums:n},A=await this.downloadHosted(a,u);if(A!==null)return A;let[p,h,C]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(a,u),...r.cacheOptions});return{packageFs:p,releaseFs:h,prefixPath:Y.getIdentVendorPath(e),checksum:C}}async downloadHosted(e,r){return r.project.configuration.reduceHook(o=>o.fetchHostedRepository,null,e,r)}async cloneFromRemote(e,r){let o=await V8(e.reference,r.project.configuration),a=th(e.reference),n=V.join(o,"package.tgz");await sn.prepareExternalProject(o,n,{configuration:r.project.configuration,report:r.report,workspace:a.extra.workspace,locator:e});let u=await ae.readFilePromise(n);return await Ye.releaseAfterUseAsync(async()=>await Vi.convertToZip(u,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:Y.getIdentVendorPath(e),stripComponents:1}))}};Ke();Ke();var r2=class{supportsDescriptor(e,r){return uC(e.range)}supportsLocator(e,r){return uC(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=await J8(e.range,o.project.configuration);return[Y.makeLocator(e,a)]}async getSatisfying(e,r,o,a){let n=th(e.range);return{locators:o.filter(A=>{if(A.identHash!==e.identHash)return!1;let p=th(A.reference);return!(n.repo!==p.repo||n.treeish.protocol==="commit"&&n.treeish.request!==p.treeish.request)}),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await Ye.releaseAfterUseAsync(async()=>await Nt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var Pht={configuration:{changesetBaseRefs:{description:"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.",type:"STRING",isArray:!0,isNullable:!1,default:["master","origin/master","upstream/master","main","origin/main","upstream/main"]},changesetIgnorePatterns:{description:"Array of glob patterns; files matching them will be ignored when fetching the changed files",type:"STRING",default:[],isArray:!0},cloneConcurrency:{description:"Maximal number of concurrent clones",type:"NUMBER",default:2}},fetchers:[t2],resolvers:[r2]};var xht=Pht;_t();var rh=class extends ct{constructor(){super(...arguments);this.since=fe.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.recursive=fe.Boolean("-R,--recursive",!1,{description:"Find packages via dependencies/devDependencies instead of using the workspaces field"});this.noPrivate=fe.Boolean("--no-private",{description:"Exclude workspaces that have the private field set to true"});this.verbose=fe.Boolean("-v,--verbose",!1,{description:"Also return the cross-dependencies between workspaces"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd);return(await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{let u=this.since?await Zo.fetchChangedWorkspaces({ref:this.since,project:o}):o.workspaces,A=new Set(u);if(this.recursive)for(let p of[...u].map(h=>h.getRecursiveWorkspaceDependents()))for(let h of p)A.add(h);for(let p of A){let{manifest:h}=p;if(h.private&&this.noPrivate)continue;let C;if(this.verbose){let w=new Set,v=new Set;for(let b of Nt.hardDependencies)for(let[E,R]of h.getForScope(b)){let L=o.tryWorkspaceByDescriptor(R);L===null?o.workspacesByIdent.has(E)&&v.add(R):w.add(L)}C={workspaceDependencies:Array.from(w).map(b=>b.relativeCwd),mismatchedWorkspaceDependencies:Array.from(v).map(b=>Y.stringifyDescriptor(b))}}n.reportInfo(null,`${p.relativeCwd}`),n.reportJson({location:p.relativeCwd,name:h.name?Y.stringifyIdent(h.name):null,...C})}})).exitCode()}};rh.paths=[["workspaces","list"]],rh.usage=it.Usage({category:"Workspace-related commands",description:"list all available workspaces",details:"\n This command will print the list of all workspaces in the project.\n\n - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If `--no-private` is set, Yarn will not list any workspaces that have the `private` field set to `true`.\n\n - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\n "});Ke();Ke();_t();var nh=class extends ct{constructor(){super(...arguments);this.workspaceName=fe.String();this.commandName=fe.String();this.args=fe.Proxy()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new er(o.cwd,this.context.cwd);let n=o.workspaces,u=new Map(n.map(p=>[Y.stringifyIdent(p.locator),p])),A=u.get(this.workspaceName);if(A===void 0){let p=Array.from(u.keys()).sort();throw new ot(`Workspace '${this.workspaceName}' not found. Did you mean any of the following: | 512 | `,examples:[["Explain why lodash is used in your project","$0 why lodash"]]});function Bht(t,e,{configuration:r,peers:o}){let a=We.sortMap(t.storedPackages.values(),A=>Y.stringifyLocator(A)),n={},u={children:n};for(let A of a){let p={};for(let C of A.dependencies.values()){if(!o&&A.peerDependencies.has(C.identHash))continue;let w=t.storedResolutions.get(C.descriptorHash);if(!w)throw new Error("Assertion failed: The resolution should have been registered");let v=t.storedPackages.get(w);if(!v)throw new Error("Assertion failed: The package should have been registered");if(v.identHash!==e)continue;{let E=Y.stringifyLocator(A);n[E]={value:[A,ye.Type.LOCATOR],children:p}}let b=Y.stringifyLocator(v);p[b]={value:[{descriptor:C,locator:v},ye.Type.DEPENDENT]}}}return u}function vht(t,e,{configuration:r,peers:o}){let a=We.sortMap(t.workspaces,v=>Y.stringifyLocator(v.anchoredLocator)),n=new Set,u=new Set,A=v=>{if(n.has(v.locatorHash))return u.has(v.locatorHash);if(n.add(v.locatorHash),v.identHash===e)return u.add(v.locatorHash),!0;let b=!1;v.identHash===e&&(b=!0);for(let E of v.dependencies.values()){if(!o&&v.peerDependencies.has(E.identHash))continue;let R=t.storedResolutions.get(E.descriptorHash);if(!R)throw new Error("Assertion failed: The resolution should have been registered");let L=t.storedPackages.get(R);if(!L)throw new Error("Assertion failed: The package should have been registered");A(L)&&(b=!0)}return b&&u.add(v.locatorHash),b};for(let v of a)A(v.anchoredPackage);let p=new Set,h={},C={children:h},w=(v,b,E)=>{if(!u.has(v.locatorHash))return;let R=E!==null?ye.tuple(ye.Type.DEPENDENT,{locator:v,descriptor:E}):ye.tuple(ye.Type.LOCATOR,v),L={},_={value:R,children:L},V=Y.stringifyLocator(v);if(b[V]=_,!p.has(v.locatorHash)&&(p.add(v.locatorHash),!(E!==null&&t.tryWorkspaceByLocator(v))))for(let re of v.dependencies.values()){if(!o&&v.peerDependencies.has(re.identHash))continue;let ae=t.storedResolutions.get(re.descriptorHash);if(!ae)throw new Error("Assertion failed: The resolution should have been registered");let he=t.storedPackages.get(ae);if(!he)throw new Error("Assertion failed: The package should have been registered");w(he,L,re)}};for(let v of a)w(v.anchoredPackage,h,null);return C}Ke();var $8={};Yt($8,{GitFetcher:()=>a2,GitResolver:()=>l2,default:()=>Ght,gitUtils:()=>ea});Ke();St();var ea={};Yt(ea,{TreeishProtocols:()=>o2,clone:()=>Z8,fetchBase:()=>Zde,fetchChangedFiles:()=>$de,fetchChangedWorkspaces:()=>qht,fetchRoot:()=>Xde,isGitUrl:()=>gC,lsRemote:()=>zde,normalizeLocator:()=>J8,normalizeRepoUrl:()=>cQ,resolveUrl:()=>X8,splitRepoUrl:()=>nh,validateRepoUrl:()=>z8});Ke();St();_t();var Kde=tt(Gde()),Vde=tt(wU()),hC=tt(Ie("querystring")),K8=tt(si());function Y8(t,e,r){let o=t.indexOf(r);return t.lastIndexOf(e,o>-1?o:1/0)}function Wde(t){try{return new URL(t)}catch{return}}function _ht(t){let e=Y8(t,"@","#"),r=Y8(t,":","#");return r>e&&(t=`${t.slice(0,r)}/${t.slice(r+1)}`),Y8(t,":","#")===-1&&t.indexOf("//")===-1&&(t=`ssh://${t}`),t}function Yde(t){return Wde(t)||Wde(_ht(t))}function Jde(){return{...process.env,GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND||`${process.env.GIT_SSH||"ssh"} -o BatchMode=yes`}}var Hht=[/^ssh:/,/^git(?:\+[^:]+)?:/,/^(?:git\+)?https?:[^#]+\/[^#]+(?:\.git)(?:#.*)?$/,/^git@[^#]+\/[^#]+\.git(?:#.*)?$/,/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z._0-9-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\.git)?(?:#.*)?$/,/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/],o2=(a=>(a.Commit="commit",a.Head="head",a.Tag="tag",a.Semver="semver",a))(o2||{});function gC(t){return t?Hht.some(e=>!!t.match(e)):!1}function nh(t){t=cQ(t);let e=t.indexOf("#");if(e===-1)return{repo:t,treeish:{protocol:"head",request:"HEAD"},extra:{}};let r=t.slice(0,e),o=t.slice(e+1);if(o.match(/^[a-z]+=/)){let a=hC.default.parse(o);for(let[p,h]of Object.entries(a))if(typeof h!="string")throw new Error(`Assertion failed: The ${p} parameter must be a literal string`);let n=Object.values(o2).find(p=>Object.prototype.hasOwnProperty.call(a,p)),[u,A]=typeof n<"u"?[n,a[n]]:["head","HEAD"];for(let p of Object.values(o2))delete a[p];return{repo:r,treeish:{protocol:u,request:A},extra:a}}else{let a=o.indexOf(":"),[n,u]=a===-1?[null,o]:[o.slice(0,a),o.slice(a+1)];return{repo:r,treeish:{protocol:n,request:u},extra:{}}}}function cQ(t,{git:e=!1}={}){if(t=t.replace(/^git\+https:/,"https:"),t=t.replace(/^(?:github:|https:\/\/github\.com\/|git:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\.git)?(#.*)?$/,"https://github.com/$1/$2.git$3"),t=t.replace(/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/,"https://github.com/$1/$2.git#$3"),e){let r=Yde(t);r&&(t=r.href),t=t.replace(/^git\+([^:]+):/,"$1:")}return t}function J8(t){return Y.makeLocator(t,cQ(t.reference))}function z8(t,{configuration:e}){let r=cQ(t,{git:!0});if(!ln.getNetworkSettings(`https://${(0,Kde.default)(r).resource}`,{configuration:e}).enableNetwork)throw new Vt(80,`Request to '${r}' has been blocked because of your configuration settings`);return r}async function zde(t,e){let r=z8(t,{configuration:e}),o=await V8("listing refs",["ls-remote",r],{cwd:e.startingCwd,env:Jde()},{configuration:e,normalizedRepoUrl:r}),a=new Map,n=/^([a-f0-9]{40})\t([^\n]+)/gm,u;for(;(u=n.exec(o.stdout))!==null;)a.set(u[2],u[1]);return a}async function X8(t,e){let{repo:r,treeish:{protocol:o,request:a},extra:n}=nh(t),u=await zde(r,e),A=(h,C)=>{switch(h){case"commit":{if(!C.match(/^[a-f0-9]{40}$/))throw new Error("Invalid commit hash");return hC.default.stringify({...n,commit:C})}case"head":{let w=u.get(C==="HEAD"?C:`refs/heads/${C}`);if(typeof w>"u")throw new Error(`Unknown head ("${C}")`);return hC.default.stringify({...n,commit:w})}case"tag":{let w=u.get(`refs/tags/${C}`);if(typeof w>"u")throw new Error(`Unknown tag ("${C}")`);return hC.default.stringify({...n,commit:w})}case"semver":{let w=Tr.validRange(C);if(!w)throw new Error(`Invalid range ("${C}")`);let v=new Map([...u.entries()].filter(([E])=>E.startsWith("refs/tags/")).map(([E,R])=>[K8.default.parse(E.slice(10)),R]).filter(E=>E[0]!==null)),b=K8.default.maxSatisfying([...v.keys()],w);if(b===null)throw new Error(`No matching range ("${C}")`);return hC.default.stringify({...n,commit:v.get(b)})}case null:{let w;if((w=p("commit",C))!==null||(w=p("tag",C))!==null||(w=p("head",C))!==null)return w;throw C.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve "${C}" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve "${C}" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol ("${h}")`)}},p=(h,C)=>{try{return A(h,C)}catch{return null}};return`${r}#${A(o,a)}`}async function Z8(t,e){return await e.getLimit("cloneConcurrency")(async()=>{let{repo:r,treeish:{protocol:o,request:a}}=nh(t);if(o!=="commit")throw new Error("Invalid treeish protocol when cloning");let n=z8(r,{configuration:e}),u=await oe.mktempPromise(),A={cwd:u,env:Jde()};return await V8("cloning the repository",["clone","-c core.autocrlf=false",n,ue.fromPortablePath(u)],A,{configuration:e,normalizedRepoUrl:n}),await V8("switching branch",["checkout",`${a}`],A,{configuration:e,normalizedRepoUrl:n}),u})}async function Xde(t){let e,r=t;do{if(e=r,await oe.existsPromise(J.join(e,".git")))return e;r=J.dirname(e)}while(r!==e);return null}async function Zde(t,{baseRefs:e}){if(e.length===0)throw new ot("Can't run this command with zero base refs specified.");let r=[];for(let A of e){let{code:p}=await Mr.execvp("git",["merge-base",A,"HEAD"],{cwd:t});p===0&&r.push(A)}if(r.length===0)throw new ot(`No ancestor could be found between any of HEAD and ${e.join(", ")}`);let{stdout:o}=await Mr.execvp("git",["merge-base","HEAD",...r],{cwd:t,strict:!0}),a=o.trim(),{stdout:n}=await Mr.execvp("git",["show","--quiet","--pretty=format:%s",a],{cwd:t,strict:!0}),u=n.trim();return{hash:a,title:u}}async function $de(t,{base:e,project:r}){let o=We.buildIgnorePattern(r.configuration.get("changesetIgnorePatterns")),{stdout:a}=await Mr.execvp("git",["diff","--name-only",`${e}`],{cwd:t,strict:!0}),n=a.split(/\r\n|\r|\n/).filter(h=>h.length>0).map(h=>J.resolve(t,ue.toPortablePath(h))),{stdout:u}=await Mr.execvp("git",["ls-files","--others","--exclude-standard"],{cwd:t,strict:!0}),A=u.split(/\r\n|\r|\n/).filter(h=>h.length>0).map(h=>J.resolve(t,ue.toPortablePath(h))),p=[...new Set([...n,...A].sort())];return o?p.filter(h=>!J.relative(r.cwd,h).match(o)):p}async function qht({ref:t,project:e}){if(e.configuration.projectCwd===null)throw new ot("This command can only be run from within a Yarn project");let r=[J.resolve(e.cwd,e.configuration.get("cacheFolder")),J.resolve(e.cwd,e.configuration.get("installStatePath")),J.resolve(e.cwd,e.configuration.get("lockfileFilename")),J.resolve(e.cwd,e.configuration.get("virtualFolder"))];await e.configuration.triggerHook(u=>u.populateYarnPaths,e,u=>{u!=null&&r.push(u)});let o=await Xde(e.configuration.projectCwd);if(o==null)throw new ot("This command can only be run on Git repositories");let a=await Zde(o,{baseRefs:typeof t=="string"?[t]:e.configuration.get("changesetBaseRefs")}),n=await $de(o,{base:a.hash,project:e});return new Set(We.mapAndFilter(n,u=>{let A=e.tryWorkspaceByFilePath(u);return A===null?We.mapAndFilter.skip:r.some(p=>u.startsWith(p))?We.mapAndFilter.skip:A}))}async function V8(t,e,r,{configuration:o,normalizedRepoUrl:a}){try{return await Mr.execvp("git",e,{...r,strict:!0})}catch(n){if(!(n instanceof Mr.ExecError))throw n;let u=n.reportExtra,A=n.stderr.toString();throw new Vt(1,`Failed ${t}`,p=>{p.reportError(1,` ${ye.prettyField(o,{label:"Repository URL",value:ye.tuple(ye.Type.URL,a)})}`);for(let h of A.matchAll(/^(.+?): (.*)$/gm)){let[,C,w]=h;C=C.toLowerCase();let v=C==="error"?"Error":`${(0,Vde.default)(C)} Error`;p.reportError(1,` ${ye.prettyField(o,{label:v,value:ye.tuple(ye.Type.NO_HINT,w)})}`)}u==null||u(p)})}}var a2=class{supports(e,r){return gC(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,a=J8(e),n=new Map(r.checksums);n.set(a.locatorHash,o);let u={...r,checksums:n},A=await this.downloadHosted(a,u);if(A!==null)return A;let[p,h,C]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(a,u),...r.cacheOptions});return{packageFs:p,releaseFs:h,prefixPath:Y.getIdentVendorPath(e),checksum:C}}async downloadHosted(e,r){return r.project.configuration.reduceHook(o=>o.fetchHostedRepository,null,e,r)}async cloneFromRemote(e,r){let o=await Z8(e.reference,r.project.configuration),a=nh(e.reference),n=J.join(o,"package.tgz");await sn.prepareExternalProject(o,n,{configuration:r.project.configuration,report:r.report,workspace:a.extra.workspace,locator:e});let u=await oe.readFilePromise(n);return await We.releaseAfterUseAsync(async()=>await Ji.convertToZip(u,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:Y.getIdentVendorPath(e),stripComponents:1}))}};Ke();Ke();var l2=class{supportsDescriptor(e,r){return gC(e.range)}supportsLocator(e,r){return gC(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=await X8(e.range,o.project.configuration);return[Y.makeLocator(e,a)]}async getSatisfying(e,r,o,a){let n=nh(e.range);return{locators:o.filter(A=>{if(A.identHash!==e.identHash)return!1;let p=nh(A.reference);return!(n.repo!==p.repo||n.treeish.protocol==="commit"&&n.treeish.request!==p.treeish.request)}),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await We.releaseAfterUseAsync(async()=>await Nt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var jht={configuration:{changesetBaseRefs:{description:"The base git refs that the current HEAD is compared against when detecting changes. Supports git branches, tags, and commits.",type:"STRING",isArray:!0,isNullable:!1,default:["master","origin/master","upstream/master","main","origin/main","upstream/main"]},changesetIgnorePatterns:{description:"Array of glob patterns; files matching them will be ignored when fetching the changed files",type:"STRING",default:[],isArray:!0},cloneConcurrency:{description:"Maximal number of concurrent clones",type:"NUMBER",default:2}},fetchers:[a2],resolvers:[l2]};var Ght=jht;_t();var ih=class extends ct{constructor(){super(...arguments);this.since=fe.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.recursive=fe.Boolean("-R,--recursive",!1,{description:"Find packages via dependencies/devDependencies instead of using the workspaces field"});this.noPrivate=fe.Boolean("--no-private",{description:"Exclude workspaces that have the private field set to true"});this.verbose=fe.Boolean("-v,--verbose",!1,{description:"Also return the cross-dependencies between workspaces"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd);return(await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{let u=this.since?await ea.fetchChangedWorkspaces({ref:this.since,project:o}):o.workspaces,A=new Set(u);if(this.recursive)for(let p of[...u].map(h=>h.getRecursiveWorkspaceDependents()))for(let h of p)A.add(h);for(let p of A){let{manifest:h}=p;if(h.private&&this.noPrivate)continue;let C;if(this.verbose){let w=new Set,v=new Set;for(let b of Nt.hardDependencies)for(let[E,R]of h.getForScope(b)){let L=o.tryWorkspaceByDescriptor(R);L===null?o.workspacesByIdent.has(E)&&v.add(R):w.add(L)}C={workspaceDependencies:Array.from(w).map(b=>b.relativeCwd),mismatchedWorkspaceDependencies:Array.from(v).map(b=>Y.stringifyDescriptor(b))}}n.reportInfo(null,`${p.relativeCwd}`),n.reportJson({location:p.relativeCwd,name:h.name?Y.stringifyIdent(h.name):null,...C})}})).exitCode()}};ih.paths=[["workspaces","list"]],ih.usage=it.Usage({category:"Workspace-related commands",description:"list all available workspaces",details:"\n This command will print the list of all workspaces in the project.\n\n - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If `--no-private` is set, Yarn will not list any workspaces that have the `private` field set to `true`.\n\n - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\n "});Ke();Ke();_t();var sh=class extends ct{constructor(){super(...arguments);this.workspaceName=fe.String();this.commandName=fe.String();this.args=fe.Proxy()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new er(o.cwd,this.context.cwd);let n=o.workspaces,u=new Map(n.map(p=>[Y.stringifyIdent(p.locator),p])),A=u.get(this.workspaceName);if(A===void 0){let p=Array.from(u.keys()).sort();throw new ot(`Workspace '${this.workspaceName}' not found. Did you mean any of the following: |
513 | - ${p.join(` | 513 | - ${p.join(` |
514 | - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:A.cwd})}};nh.paths=[["workspace"]],nh.usage=it.Usage({category:"Workspace-related commands",description:"run a command within the specified workspace",details:` | 514 | - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:A.cwd})}};sh.paths=[["workspace"]],sh.usage=it.Usage({category:"Workspace-related commands",description:"run a command within the specified workspace",details:` |
515 | This command will run a given sub-command on a single workspace. | 515 | This command will run a given sub-command on a single workspace. |
516 | `,examples:[["Add a package to a single workspace","yarn workspace components add -D react"],["Run build script on a single workspace","yarn workspace components run build"]]});var bht={configuration:{enableImmutableInstalls:{description:"If true (the default on CI), prevents the install command from modifying the lockfile",type:"BOOLEAN",default:Kde.isCI},defaultSemverRangePrefix:{description:"The default save prefix: '^', '~' or ''",type:"STRING",values:["^","~",""],default:"^"},preferReuse:{description:"If true, `yarn add` will attempt to reuse the most common dependency range in other workspaces.",type:"BOOLEAN",default:!1}},commands:[x0,b0,Q0,k0,Z0,G0,L0,rh,Yd,Kd,lC,Jd,S0,P0,F0,R0,T0,N0,O0,M0,U0,_0,$0,H0,q0,Y0,W0,K0,j0,J0,V0,z0,zd,X0,Yf,eh,nh]},Qht=bht;var rH={};Yt(rH,{default:()=>Fht});Ke();var Qt={optional:!0},Z8=[["@tailwindcss/aspect-ratio@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@tailwindcss/line-clamp@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0",{peerDependencies:{postcss:"^8.0.0"}}],["@samverschueren/stream-to-observable@<0.3.1",{peerDependenciesMeta:{rxjs:Qt,zenObservable:Qt}}],["any-observable@<0.5.1",{peerDependenciesMeta:{rxjs:Qt,zenObservable:Qt}}],["@pm2/agent@<1.0.4",{dependencies:{debug:"*"}}],["debug@<4.2.0",{peerDependenciesMeta:{["supports-color"]:Qt}}],["got@<11",{dependencies:{["@types/responselike"]:"^1.0.0",["@types/keyv"]:"^3.1.1"}}],["cacheable-lookup@<4.1.2",{dependencies:{["@types/keyv"]:"^3.1.1"}}],["http-link-dataloader@*",{peerDependencies:{graphql:"^0.13.1 || ^14.0.0"}}],["typescript-language-server@*",{dependencies:{["vscode-jsonrpc"]:"^5.0.1",["vscode-languageserver-protocol"]:"^3.15.0"}}],["postcss-syntax@*",{peerDependenciesMeta:{["postcss-html"]:Qt,["postcss-jsx"]:Qt,["postcss-less"]:Qt,["postcss-markdown"]:Qt,["postcss-scss"]:Qt}}],["jss-plugin-rule-value-function@<=10.1.1",{dependencies:{["tiny-warning"]:"^1.0.2"}}],["ink-select-input@<4.1.0",{peerDependencies:{react:"^16.8.2"}}],["license-webpack-plugin@<2.3.18",{peerDependenciesMeta:{webpack:Qt}}],["snowpack@>=3.3.0",{dependencies:{["node-gyp"]:"^7.1.0"}}],["promise-inflight@*",{peerDependenciesMeta:{bluebird:Qt}}],["reactcss@*",{peerDependencies:{react:"*"}}],["react-color@<=2.19.0",{peerDependencies:{react:"*"}}],["gatsby-plugin-i18n@*",{dependencies:{ramda:"^0.24.1"}}],["useragent@^2.0.0",{dependencies:{request:"^2.88.0",yamlparser:"0.0.x",semver:"5.5.x"}}],["@apollographql/apollo-tools@<=0.5.2",{peerDependencies:{graphql:"^14.2.1 || ^15.0.0"}}],["material-table@^2.0.0",{dependencies:{"@babel/runtime":"^7.11.2"}}],["@babel/parser@*",{dependencies:{"@babel/types":"^7.8.3"}}],["fork-ts-checker-webpack-plugin@<=6.3.4",{peerDependencies:{eslint:">= 6",typescript:">= 2.7",webpack:">= 4","vue-template-compiler":"*"},peerDependenciesMeta:{eslint:Qt,"vue-template-compiler":Qt}}],["rc-animate@<=3.1.1",{peerDependencies:{react:">=16.9.0","react-dom":">=16.9.0"}}],["react-bootstrap-table2-paginator@*",{dependencies:{classnames:"^2.2.6"}}],["react-draggable@<=4.4.3",{peerDependencies:{react:">= 16.3.0","react-dom":">= 16.3.0"}}],["apollo-upload-client@<14",{peerDependencies:{graphql:"14 - 15"}}],["react-instantsearch-core@<=6.7.0",{peerDependencies:{algoliasearch:">= 3.1 < 5"}}],["react-instantsearch-dom@<=6.7.0",{dependencies:{"react-fast-compare":"^3.0.0"}}],["ws@<7.2.1",{peerDependencies:{bufferutil:"^4.0.1","utf-8-validate":"^5.0.2"},peerDependenciesMeta:{bufferutil:Qt,"utf-8-validate":Qt}}],["react-portal@<4.2.2",{peerDependencies:{"react-dom":"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0"}}],["react-scripts@<=4.0.1",{peerDependencies:{react:"*"}}],["testcafe@<=1.10.1",{dependencies:{"@babel/plugin-transform-for-of":"^7.12.1","@babel/runtime":"^7.12.5"}}],["testcafe-legacy-api@<=4.2.0",{dependencies:{"testcafe-hammerhead":"^17.0.1","read-file-relative":"^1.2.0"}}],["@google-cloud/firestore@<=4.9.3",{dependencies:{protobufjs:"^6.8.6"}}],["gatsby-source-apiserver@*",{dependencies:{["babel-polyfill"]:"^6.26.0"}}],["@webpack-cli/package-utils@<=1.0.1-alpha.4",{dependencies:{["cross-spawn"]:"^7.0.3"}}],["gatsby-remark-prismjs@<3.3.28",{dependencies:{lodash:"^4"}}],["gatsby-plugin-favicon@*",{peerDependencies:{webpack:"*"}}],["gatsby-plugin-sharp@<=4.6.0-next.3",{dependencies:{debug:"^4.3.1"}}],["gatsby-react-router-scroll@<=5.6.0-next.0",{dependencies:{["prop-types"]:"^15.7.2"}}],["@rebass/forms@*",{dependencies:{["@styled-system/should-forward-prop"]:"^5.0.0"},peerDependencies:{react:"^16.8.6"}}],["rebass@*",{peerDependencies:{react:"^16.8.6"}}],["@ant-design/react-slick@<=0.28.3",{peerDependencies:{react:">=16.0.0"}}],["mqtt@<4.2.7",{dependencies:{duplexify:"^4.1.1"}}],["vue-cli-plugin-vuetify@<=2.0.3",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Qt,"vuetify-loader":Qt}}],["vue-cli-plugin-vuetify@<=2.0.4",{dependencies:{"null-loader":"^3.0.0"}}],["vue-cli-plugin-vuetify@>=2.4.3",{peerDependencies:{vue:"*"}}],["@vuetify/cli-plugin-utils@<=0.0.4",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Qt}}],["@vue/cli-plugin-typescript@<=5.0.0-alpha.0",{dependencies:{"babel-loader":"^8.1.0"}}],["@vue/cli-plugin-typescript@<=5.0.0-beta.0",{dependencies:{"@babel/core":"^7.12.16"},peerDependencies:{"vue-template-compiler":"^2.0.0"},peerDependenciesMeta:{"vue-template-compiler":Qt}}],["cordova-ios@<=6.3.0",{dependencies:{underscore:"^1.9.2"}}],["cordova-lib@<=10.0.1",{dependencies:{underscore:"^1.9.2"}}],["git-node-fs@*",{peerDependencies:{"js-git":"^0.7.8"},peerDependenciesMeta:{"js-git":Qt}}],["consolidate@<0.16.0",{peerDependencies:{mustache:"^3.0.0"},peerDependenciesMeta:{mustache:Qt}}],["consolidate@<=0.16.0",{peerDependencies:{velocityjs:"^2.0.1",tinyliquid:"^0.2.34","liquid-node":"^3.0.1",jade:"^1.11.0","then-jade":"*",dust:"^0.3.0","dustjs-helpers":"^1.7.4","dustjs-linkedin":"^2.7.5",swig:"^1.4.2","swig-templates":"^2.0.3","razor-tmpl":"^1.3.1",atpl:">=0.7.6",liquor:"^0.0.5",twig:"^1.15.2",ejs:"^3.1.5",eco:"^1.1.0-rc-3",jazz:"^0.0.18",jqtpl:"~1.1.0",hamljs:"^0.6.2",hamlet:"^0.3.3",whiskers:"^0.4.0","haml-coffee":"^1.14.1","hogan.js":"^3.0.2",templayed:">=0.2.3",handlebars:"^4.7.6",underscore:"^1.11.0",lodash:"^4.17.20",pug:"^3.0.0","then-pug":"*",qejs:"^3.0.5",walrus:"^0.10.1",mustache:"^4.0.1",just:"^0.1.8",ect:"^0.5.9",mote:"^0.2.0",toffee:"^0.3.6",dot:"^1.1.3","bracket-template":"^1.1.5",ractive:"^1.3.12",nunjucks:"^3.2.2",htmling:"^0.0.8","babel-core":"^6.26.3",plates:"~0.4.11","react-dom":"^16.13.1",react:"^16.13.1","arc-templates":"^0.5.3",vash:"^0.13.0",slm:"^2.0.0",marko:"^3.14.4",teacup:"^2.0.0","coffee-script":"^1.12.7",squirrelly:"^5.1.0",twing:"^5.0.2"},peerDependenciesMeta:{velocityjs:Qt,tinyliquid:Qt,"liquid-node":Qt,jade:Qt,"then-jade":Qt,dust:Qt,"dustjs-helpers":Qt,"dustjs-linkedin":Qt,swig:Qt,"swig-templates":Qt,"razor-tmpl":Qt,atpl:Qt,liquor:Qt,twig:Qt,ejs:Qt,eco:Qt,jazz:Qt,jqtpl:Qt,hamljs:Qt,hamlet:Qt,whiskers:Qt,"haml-coffee":Qt,"hogan.js":Qt,templayed:Qt,handlebars:Qt,underscore:Qt,lodash:Qt,pug:Qt,"then-pug":Qt,qejs:Qt,walrus:Qt,mustache:Qt,just:Qt,ect:Qt,mote:Qt,toffee:Qt,dot:Qt,"bracket-template":Qt,ractive:Qt,nunjucks:Qt,htmling:Qt,"babel-core":Qt,plates:Qt,"react-dom":Qt,react:Qt,"arc-templates":Qt,vash:Qt,slm:Qt,marko:Qt,teacup:Qt,"coffee-script":Qt,squirrelly:Qt,twing:Qt}}],["vue-loader@<=16.3.3",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",webpack:"^4.1.0 || ^5.0.0-0"},peerDependenciesMeta:{"@vue/compiler-sfc":Qt}}],["vue-loader@^16.7.0",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",vue:"^3.2.13"},peerDependenciesMeta:{"@vue/compiler-sfc":Qt,vue:Qt}}],["scss-parser@<=1.0.5",{dependencies:{lodash:"^4.17.21"}}],["query-ast@<1.0.5",{dependencies:{lodash:"^4.17.21"}}],["redux-thunk@<=2.3.0",{peerDependencies:{redux:"^4.0.0"}}],["skypack@<=0.3.2",{dependencies:{tar:"^6.1.0"}}],["@npmcli/metavuln-calculator@<2.0.0",{dependencies:{"json-parse-even-better-errors":"^2.3.1"}}],["bin-links@<2.3.0",{dependencies:{"mkdirp-infer-owner":"^1.0.2"}}],["rollup-plugin-polyfill-node@<=0.8.0",{peerDependencies:{rollup:"^1.20.0 || ^2.0.0"}}],["snowpack@<3.8.6",{dependencies:{"magic-string":"^0.25.7"}}],["elm-webpack-loader@*",{dependencies:{temp:"^0.9.4"}}],["winston-transport@<=4.4.0",{dependencies:{logform:"^2.2.0"}}],["jest-vue-preprocessor@*",{dependencies:{"@babel/core":"7.8.7","@babel/template":"7.8.6"},peerDependencies:{pug:"^2.0.4"},peerDependenciesMeta:{pug:Qt}}],["redux-persist@*",{peerDependencies:{react:">=16"},peerDependenciesMeta:{react:Qt}}],["sodium@>=3",{dependencies:{"node-gyp":"^3.8.0"}}],["babel-plugin-graphql-tag@<=3.1.0",{peerDependencies:{graphql:"^14.0.0 || ^15.0.0"}}],["@playwright/test@<=1.14.1",{dependencies:{"jest-matcher-utils":"^26.4.2"}}],...["babel-plugin-remove-graphql-queries@<3.14.0-next.1","babel-preset-gatsby-package@<1.14.0-next.1","create-gatsby@<1.14.0-next.1","gatsby-admin@<0.24.0-next.1","gatsby-cli@<3.14.0-next.1","gatsby-core-utils@<2.14.0-next.1","gatsby-design-tokens@<3.14.0-next.1","gatsby-legacy-polyfills@<1.14.0-next.1","gatsby-plugin-benchmark-reporting@<1.14.0-next.1","gatsby-plugin-graphql-config@<0.23.0-next.1","gatsby-plugin-image@<1.14.0-next.1","gatsby-plugin-mdx@<2.14.0-next.1","gatsby-plugin-netlify-cms@<5.14.0-next.1","gatsby-plugin-no-sourcemaps@<3.14.0-next.1","gatsby-plugin-page-creator@<3.14.0-next.1","gatsby-plugin-preact@<5.14.0-next.1","gatsby-plugin-preload-fonts@<2.14.0-next.1","gatsby-plugin-schema-snapshot@<2.14.0-next.1","gatsby-plugin-styletron@<6.14.0-next.1","gatsby-plugin-subfont@<3.14.0-next.1","gatsby-plugin-utils@<1.14.0-next.1","gatsby-recipes@<0.25.0-next.1","gatsby-source-shopify@<5.6.0-next.1","gatsby-source-wikipedia@<3.14.0-next.1","gatsby-transformer-screenshot@<3.14.0-next.1","gatsby-worker@<0.5.0-next.1"].map(t=>[t,{dependencies:{"@babel/runtime":"^7.14.8"}}]),["gatsby-core-utils@<2.14.0-next.1",{dependencies:{got:"8.3.2"}}],["gatsby-plugin-gatsby-cloud@<=3.1.0-next.0",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["gatsby-plugin-gatsby-cloud@<=3.2.0-next.1",{peerDependencies:{webpack:"*"}}],["babel-plugin-remove-graphql-queries@<=3.14.0-next.1",{dependencies:{"gatsby-core-utils":"^2.8.0-next.1"}}],["gatsby-plugin-netlify@3.13.0-next.1",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["clipanion-v3-codemod@<=0.2.0",{peerDependencies:{jscodeshift:"^0.11.0"}}],["react-live@*",{peerDependencies:{"react-dom":"*",react:"*"}}],["webpack@<4.44.1",{peerDependenciesMeta:{"webpack-cli":Qt,"webpack-command":Qt}}],["webpack@<5.0.0-beta.23",{peerDependenciesMeta:{"webpack-cli":Qt}}],["webpack-dev-server@<3.10.2",{peerDependenciesMeta:{"webpack-cli":Qt}}],["@docusaurus/responsive-loader@<1.5.0",{peerDependenciesMeta:{sharp:Qt,jimp:Qt}}],["eslint-module-utils@*",{peerDependenciesMeta:{"eslint-import-resolver-node":Qt,"eslint-import-resolver-typescript":Qt,"eslint-import-resolver-webpack":Qt,"@typescript-eslint/parser":Qt}}],["eslint-plugin-import@*",{peerDependenciesMeta:{"@typescript-eslint/parser":Qt}}],["critters-webpack-plugin@<3.0.2",{peerDependenciesMeta:{"html-webpack-plugin":Qt}}],["terser@<=5.10.0",{dependencies:{acorn:"^8.5.0"}}],["babel-preset-react-app@10.0.x",{dependencies:{"@babel/plugin-proposal-private-property-in-object":"^7.16.0"}}],["eslint-config-react-app@*",{peerDependenciesMeta:{typescript:Qt}}],["@vue/eslint-config-typescript@<11.0.0",{peerDependenciesMeta:{typescript:Qt}}],["unplugin-vue2-script-setup@<0.9.1",{peerDependencies:{"@vue/composition-api":"^1.4.3","@vue/runtime-dom":"^3.2.26"}}],["@cypress/snapshot@*",{dependencies:{debug:"^3.2.7"}}],["auto-relay@<=0.14.0",{peerDependencies:{"reflect-metadata":"^0.1.13"}}],["vue-template-babel-compiler@<1.2.0",{peerDependencies:{["vue-template-compiler"]:"^2.6.0"}}],["@parcel/transformer-image@<2.5.0",{peerDependencies:{["@parcel/core"]:"*"}}],["@parcel/transformer-js@<2.5.0",{peerDependencies:{["@parcel/core"]:"*"}}],["parcel@*",{peerDependenciesMeta:{["@parcel/core"]:Qt}}],["react-scripts@*",{peerDependencies:{eslint:"*"}}],["focus-trap-react@^8.0.0",{dependencies:{tabbable:"^5.3.2"}}],["react-rnd@<10.3.7",{peerDependencies:{react:">=16.3.0","react-dom":">=16.3.0"}}],["connect-mongo@*",{peerDependencies:{"express-session":"^1.17.1"}}],["vue-i18n@<9",{peerDependencies:{vue:"^2"}}],["vue-router@<4",{peerDependencies:{vue:"^2"}}],["unified@<10",{dependencies:{"@types/unist":"^2.0.0"}}],["react-github-btn@<=1.3.0",{peerDependencies:{react:">=16.3.0"}}],["react-dev-utils@*",{peerDependencies:{typescript:">=2.7",webpack:">=4"},peerDependenciesMeta:{typescript:Qt}}],["@asyncapi/react-component@<=1.0.0-next.39",{peerDependencies:{react:">=16.8.0","react-dom":">=16.8.0"}}],["xo@*",{peerDependencies:{webpack:">=1.11.0"},peerDependenciesMeta:{webpack:Qt}}],["babel-plugin-remove-graphql-queries@<=4.20.0-next.0",{dependencies:{"@babel/types":"^7.15.4"}}],["gatsby-plugin-page-creator@<=4.20.0-next.1",{dependencies:{"fs-extra":"^10.1.0"}}],["gatsby-plugin-utils@<=3.14.0-next.1",{dependencies:{fastq:"^1.13.0"},peerDependencies:{graphql:"^15.0.0"}}],["gatsby-plugin-mdx@<3.1.0-next.1",{dependencies:{mkdirp:"^1.0.4"}}],["gatsby-plugin-mdx@^2",{peerDependencies:{gatsby:"^3.0.0-next"}}],["fdir@<=5.2.0",{peerDependencies:{picomatch:"2.x"},peerDependenciesMeta:{picomatch:Qt}}],["babel-plugin-transform-typescript-metadata@<=0.3.2",{peerDependencies:{"@babel/core":"^7","@babel/traverse":"^7"},peerDependenciesMeta:{"@babel/traverse":Qt}}],["graphql-compose@>=9.0.10",{peerDependencies:{graphql:"^14.2.0 || ^15.0.0 || ^16.0.0"}}]];var $8;function Jde(){return typeof $8>"u"&&($8=Ie("zlib").brotliDecompressSync(Buffer.from("G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==","base64")).toString()),$8}var eH;function Vde(){return typeof eH>"u"&&(eH=Ie("zlib").brotliDecompressSync(Buffer.from("G8MSIIzURnVBnObTcvb3XE6v2S9Qgc2K801Oa5otNKEtK8BINZNcaQHy+9/vf/WXBimwutXC33P2DPc64pps5rz7NGGWaOKNSPL4Y2KRE8twut2lFOIN+OXPtRmPMRhMTILib2bEQx43az2I5d3YS8Roa5UZpF/ujHb3Djd3GDvYUfvFYSUQ39vb2cmifp/rgB4J/65JK3wRBTvMBoNBmn3mbXC63/gbBkW/2IRPri0O8bcsRBsmarF328pAln04nyJFkwUAvNu934supAqLtyerZZpJ8I8suJHhf/ocMV+scKwa8NOiDKIPXw6Ex/EEZD6TEGaW8N5zvNHYF10l6Lfooj7D5W2k3dgvQSbp2Wv8TGOayS978gxlOLVjTGXs66ozewbrjwElLtyrYNnWTfzzdEutgROUFPVMhnMoy8EjJLLlWwIEoySxliim9kYW30JUHiPVyjt0iAw/ZpPmCbUCltYPnq6ZNblIKhTNhqS/oqC9iya5sGKZTOVsTEg34n92uZTf2iPpcZih8rPW8CzA+adIGmyCPcKdLMsBLShd+zuEbTrqpwuh+DLmracZcjPC5Sdf5odDAhKpFuOsQS67RT+1VgWWygSv3YwxDnylc04/PYuaMeIzhBkLrvs7e/OUzRTF56MmfY6rI63QtEjEQzq637zQqJ39nNhu3NmoRRhW/086bHGBUtx0PE0j3aEGvkdh9WJC8y8j8mqqke9/dQ5la+Q3ba4RlhvTbnfQhPDDab3tUifkjKuOsp13mXEmO00Mu88F/M67R7LXfoFDFLNtgCSWjWX+3Jn1371pJTK9xPBiMJafvDjtFyAzu8rxeQ0TKMQXNPs5xxiBOd+BRJP8KP88XPtJIbZKh/cdW8KvBUkpqKpGoiIaA32c3/JnQr4efXt85mXvidOvn/eU3Pase1typLYBalJ14mCso9h79nuMOuCa/kZAOkJHmTjP5RM2WNoPasZUAnT1TAE/NH25hUxcQv6hQWR/m1PKk4ooXMcM4SR1iYU3fUohvqk4RY2hbmTVVIXv6TvqO+0doOjgeVFAcom+RlwJQmOVH7pr1Q9LoJT6n1DeQEB+NHygsATbIwTcOKZlJsY8G4+suX1uQLjUWwLjjs0mvSvZcLTpIGAekeR7GCgl8eo3ndAqEe2XCav4huliHjdbIPBsGJuPX7lrO9HX1UbXRH5opOe1x6JsOSgHZR+EaxuXVhpLLxm6jk1LJtZfHSc6BKPun3CpYYVMJGwEUyk8MTGG0XL5MfEwaXpnc9TKnBmlGn6nHiGREc3ysn47XIBDzA+YvFdjZzVIEDcKGpS6PbUJehFRjEne8D0lVU1XuRtlgszq6pTNlQ/3MzNOEgCWPyTct22V2mEi2krizn5VDo9B19/X2DB3hCGRMM7ONbtnAcIx/OWB1u5uPbW1gsH8irXxT/IzG0PoXWYjhbMsH3KTuoOl5o17PulcgvsfTSnKFM354GWI8luqZnrswWjiXy3G+Vbyo1KMopFmmvBwNELgaS8z8dNZchx/Cl/xjddxhMcyqtzFyONb2Zdu90NkI8pAeufe7YlXrp53v8Dj/l8vWeVspRKBGXScBBPI/HinSTGmLDOGGOCIyH0JFdOZx0gWsacNlQLJMIrBhqRxXxHF/5pseWwejlAAvZ3klZSDSYY8mkToaWejXhgNomeGtx1DTLEUFMRkgF5yFB22WYdJnaWN14r1YJj81hGi45+jrADS5nYRhCiSlCJJ1nL8pYX+HDSMhdTEWyRcgHVp/IsUIZYMfT+YYncUQPgcxNGCHfZ88vDdrcUuaGIl6zhAsiaq7R5dfqrqXH/JcBhfjT8D0azayIyEz75Nxp6YkcyDxlJq3EXnJUpqDohJJOysL1t1uNiHESlvsxPb5cpbW0+ICZqJmUZus1BMW0F5IVBODLIo2zHHjA0=","base64")).toString()),eH}var tH;function zde(){return typeof tH>"u"&&(tH=Ie("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),tH}var Xde=new Map([[Y.makeIdent(null,"fsevents").identHash,Jde],[Y.makeIdent(null,"resolve").identHash,Vde],[Y.makeIdent(null,"typescript").identHash,zde]]),kht={hooks:{registerPackageExtensions:async(t,e)=>{for(let[r,o]of Z8)e(Y.parseDescriptor(r,!0),o)},getBuiltinPatch:async(t,e)=>{var n;let r="compat/";if(!e.startsWith(r))return;let o=Y.parseIdent(e.slice(r.length)),a=(n=Xde.get(o.identHash))==null?void 0:n();return typeof a<"u"?a:null},reduceDependency:async(t,e,r,o)=>typeof Xde.get(t.identHash)>"u"?t:Y.makeDescriptor(t,Y.makeRange({protocol:"patch:",source:Y.stringifyDescriptor(t),selector:`optional!builtin<compat/${Y.stringifyIdent(t)}>`,params:null}))}},Fht=kht;var EH={};Yt(EH,{ConstraintsCheckCommand:()=>uh,ConstraintsQueryCommand:()=>lh,ConstraintsSourceCommand:()=>ch,default:()=>sgt});Ke();Ke();s2();var AC=class{constructor(e){this.project=e}createEnvironment(){let e=new n2(["cwd","ident"]),r=new n2(["type","ident"]),o={manifestUpdates:new Map,reportedErrors:new Map};for(let a of this.project.workspaces){let n=Y.stringifyIdent(a.anchoredLocator),u=a.manifest.exportTo({}),A=(C,w,{caller:v=As.getCaller()}={})=>{let b=i2(C),E=Ye.getMapWithDefault(o.manifestUpdates,a.cwd),R=Ye.getMapWithDefault(E,b),L=Ye.getSetWithDefault(R,w);v!==null&&L.add(v)},p=C=>A(C,void 0,{caller:As.getCaller()}),h=e.insert({cwd:a.cwd,ident:n,manifest:u,set:A,unset:p});for(let C of Nt.allDependencies)for(let w of a.manifest[C].values()){let v=Y.stringifyIdent(w),b=()=>{A([C,v],void 0,{caller:As.getCaller()})},E=L=>{A([C,v],L,{caller:As.getCaller()})},R=L=>{Ye.getArrayWithDefault(o.reportedErrors,a.cwd).push(L)};r.insert({workspace:h,ident:v,range:w.range,type:C,update:E,delete:b,error:R})}}return{workspaces:e,dependencies:r,result:o}}async process(){let e=this.createEnvironment(),r={Yarn:{workspace:a=>e.workspaces.find(a)[0]??null,workspaces:a=>e.workspaces.find(a),dependencies:a=>e.dependencies.find(a)}},o=await this.project.loadUserConfig();return o!=null&&o.constraints?(o.constraints(r),e.result):null}};Ke();Ke();_t();var lh=class extends ct{constructor(){super(...arguments);this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.query=fe.String()}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(u2(),c2)),o=await Xe.find(this.context.cwd,this.context.plugins),{project:a}=await St.find(o,this.context.cwd),n=await r.find(a),u=this.query;return u.endsWith(".")||(u=`${u}.`),(await Ct.start({configuration:o,json:this.json,stdout:this.context.stdout},async p=>{for await(let h of n.query(u)){let C=Array.from(Object.entries(h)),w=C.length,v=C.reduce((b,[E])=>Math.max(b,E.length),0);for(let b=0;b<w;b++){let[E,R]=C[b];p.reportInfo(null,`${ngt(b,w)}${E.padEnd(v," ")} = ${rgt(R)}`)}p.reportJson(h)}})).exitCode()}};lh.paths=[["constraints","query"]],lh.usage=it.Usage({category:"Constraints-related commands",description:"query the constraints fact database",details:` | 516 | `,examples:[["Add a package to a single workspace","yarn workspace components add -D react"],["Run build script on a single workspace","yarn workspace components run build"]]});var Wht={configuration:{enableImmutableInstalls:{description:"If true (the default on CI), prevents the install command from modifying the lockfile",type:"BOOLEAN",default:eme.isCI},defaultSemverRangePrefix:{description:"The default save prefix: '^', '~' or ''",type:"STRING",values:["^","~",""],default:"^"},preferReuse:{description:"If true, `yarn add` will attempt to reuse the most common dependency range in other workspaces.",type:"BOOLEAN",default:!1}},commands:[Q0,k0,F0,R0,eh,Y0,M0,ih,zd,Xd,pC,Zd,x0,b0,T0,N0,L0,O0,U0,_0,H0,q0,th,j0,G0,V0,K0,J0,W0,z0,X0,Z0,em,$0,zf,rh,sh]},Yht=Wht;var sH={};Yt(sH,{default:()=>Vht});Ke();var Qt={optional:!0},tH=[["@tailwindcss/aspect-ratio@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@tailwindcss/line-clamp@<0.2.1",{peerDependencies:{tailwindcss:"^2.0.2"}}],["@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0",{peerDependencies:{postcss:"^8.0.0"}}],["@samverschueren/stream-to-observable@<0.3.1",{peerDependenciesMeta:{rxjs:Qt,zenObservable:Qt}}],["any-observable@<0.5.1",{peerDependenciesMeta:{rxjs:Qt,zenObservable:Qt}}],["@pm2/agent@<1.0.4",{dependencies:{debug:"*"}}],["debug@<4.2.0",{peerDependenciesMeta:{["supports-color"]:Qt}}],["got@<11",{dependencies:{["@types/responselike"]:"^1.0.0",["@types/keyv"]:"^3.1.1"}}],["cacheable-lookup@<4.1.2",{dependencies:{["@types/keyv"]:"^3.1.1"}}],["http-link-dataloader@*",{peerDependencies:{graphql:"^0.13.1 || ^14.0.0"}}],["typescript-language-server@*",{dependencies:{["vscode-jsonrpc"]:"^5.0.1",["vscode-languageserver-protocol"]:"^3.15.0"}}],["postcss-syntax@*",{peerDependenciesMeta:{["postcss-html"]:Qt,["postcss-jsx"]:Qt,["postcss-less"]:Qt,["postcss-markdown"]:Qt,["postcss-scss"]:Qt}}],["jss-plugin-rule-value-function@<=10.1.1",{dependencies:{["tiny-warning"]:"^1.0.2"}}],["ink-select-input@<4.1.0",{peerDependencies:{react:"^16.8.2"}}],["license-webpack-plugin@<2.3.18",{peerDependenciesMeta:{webpack:Qt}}],["snowpack@>=3.3.0",{dependencies:{["node-gyp"]:"^7.1.0"}}],["promise-inflight@*",{peerDependenciesMeta:{bluebird:Qt}}],["reactcss@*",{peerDependencies:{react:"*"}}],["react-color@<=2.19.0",{peerDependencies:{react:"*"}}],["gatsby-plugin-i18n@*",{dependencies:{ramda:"^0.24.1"}}],["useragent@^2.0.0",{dependencies:{request:"^2.88.0",yamlparser:"0.0.x",semver:"5.5.x"}}],["@apollographql/apollo-tools@<=0.5.2",{peerDependencies:{graphql:"^14.2.1 || ^15.0.0"}}],["material-table@^2.0.0",{dependencies:{"@babel/runtime":"^7.11.2"}}],["@babel/parser@*",{dependencies:{"@babel/types":"^7.8.3"}}],["fork-ts-checker-webpack-plugin@<=6.3.4",{peerDependencies:{eslint:">= 6",typescript:">= 2.7",webpack:">= 4","vue-template-compiler":"*"},peerDependenciesMeta:{eslint:Qt,"vue-template-compiler":Qt}}],["rc-animate@<=3.1.1",{peerDependencies:{react:">=16.9.0","react-dom":">=16.9.0"}}],["react-bootstrap-table2-paginator@*",{dependencies:{classnames:"^2.2.6"}}],["react-draggable@<=4.4.3",{peerDependencies:{react:">= 16.3.0","react-dom":">= 16.3.0"}}],["apollo-upload-client@<14",{peerDependencies:{graphql:"14 - 15"}}],["react-instantsearch-core@<=6.7.0",{peerDependencies:{algoliasearch:">= 3.1 < 5"}}],["react-instantsearch-dom@<=6.7.0",{dependencies:{"react-fast-compare":"^3.0.0"}}],["ws@<7.2.1",{peerDependencies:{bufferutil:"^4.0.1","utf-8-validate":"^5.0.2"},peerDependenciesMeta:{bufferutil:Qt,"utf-8-validate":Qt}}],["react-portal@<4.2.2",{peerDependencies:{"react-dom":"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0"}}],["react-scripts@<=4.0.1",{peerDependencies:{react:"*"}}],["testcafe@<=1.10.1",{dependencies:{"@babel/plugin-transform-for-of":"^7.12.1","@babel/runtime":"^7.12.5"}}],["testcafe-legacy-api@<=4.2.0",{dependencies:{"testcafe-hammerhead":"^17.0.1","read-file-relative":"^1.2.0"}}],["@google-cloud/firestore@<=4.9.3",{dependencies:{protobufjs:"^6.8.6"}}],["gatsby-source-apiserver@*",{dependencies:{["babel-polyfill"]:"^6.26.0"}}],["@webpack-cli/package-utils@<=1.0.1-alpha.4",{dependencies:{["cross-spawn"]:"^7.0.3"}}],["gatsby-remark-prismjs@<3.3.28",{dependencies:{lodash:"^4"}}],["gatsby-plugin-favicon@*",{peerDependencies:{webpack:"*"}}],["gatsby-plugin-sharp@<=4.6.0-next.3",{dependencies:{debug:"^4.3.1"}}],["gatsby-react-router-scroll@<=5.6.0-next.0",{dependencies:{["prop-types"]:"^15.7.2"}}],["@rebass/forms@*",{dependencies:{["@styled-system/should-forward-prop"]:"^5.0.0"},peerDependencies:{react:"^16.8.6"}}],["rebass@*",{peerDependencies:{react:"^16.8.6"}}],["@ant-design/react-slick@<=0.28.3",{peerDependencies:{react:">=16.0.0"}}],["mqtt@<4.2.7",{dependencies:{duplexify:"^4.1.1"}}],["vue-cli-plugin-vuetify@<=2.0.3",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Qt,"vuetify-loader":Qt}}],["vue-cli-plugin-vuetify@<=2.0.4",{dependencies:{"null-loader":"^3.0.0"}}],["vue-cli-plugin-vuetify@>=2.4.3",{peerDependencies:{vue:"*"}}],["@vuetify/cli-plugin-utils@<=0.0.4",{dependencies:{semver:"^6.3.0"},peerDependenciesMeta:{"sass-loader":Qt}}],["@vue/cli-plugin-typescript@<=5.0.0-alpha.0",{dependencies:{"babel-loader":"^8.1.0"}}],["@vue/cli-plugin-typescript@<=5.0.0-beta.0",{dependencies:{"@babel/core":"^7.12.16"},peerDependencies:{"vue-template-compiler":"^2.0.0"},peerDependenciesMeta:{"vue-template-compiler":Qt}}],["cordova-ios@<=6.3.0",{dependencies:{underscore:"^1.9.2"}}],["cordova-lib@<=10.0.1",{dependencies:{underscore:"^1.9.2"}}],["git-node-fs@*",{peerDependencies:{"js-git":"^0.7.8"},peerDependenciesMeta:{"js-git":Qt}}],["consolidate@<0.16.0",{peerDependencies:{mustache:"^3.0.0"},peerDependenciesMeta:{mustache:Qt}}],["consolidate@<=0.16.0",{peerDependencies:{velocityjs:"^2.0.1",tinyliquid:"^0.2.34","liquid-node":"^3.0.1",jade:"^1.11.0","then-jade":"*",dust:"^0.3.0","dustjs-helpers":"^1.7.4","dustjs-linkedin":"^2.7.5",swig:"^1.4.2","swig-templates":"^2.0.3","razor-tmpl":"^1.3.1",atpl:">=0.7.6",liquor:"^0.0.5",twig:"^1.15.2",ejs:"^3.1.5",eco:"^1.1.0-rc-3",jazz:"^0.0.18",jqtpl:"~1.1.0",hamljs:"^0.6.2",hamlet:"^0.3.3",whiskers:"^0.4.0","haml-coffee":"^1.14.1","hogan.js":"^3.0.2",templayed:">=0.2.3",handlebars:"^4.7.6",underscore:"^1.11.0",lodash:"^4.17.20",pug:"^3.0.0","then-pug":"*",qejs:"^3.0.5",walrus:"^0.10.1",mustache:"^4.0.1",just:"^0.1.8",ect:"^0.5.9",mote:"^0.2.0",toffee:"^0.3.6",dot:"^1.1.3","bracket-template":"^1.1.5",ractive:"^1.3.12",nunjucks:"^3.2.2",htmling:"^0.0.8","babel-core":"^6.26.3",plates:"~0.4.11","react-dom":"^16.13.1",react:"^16.13.1","arc-templates":"^0.5.3",vash:"^0.13.0",slm:"^2.0.0",marko:"^3.14.4",teacup:"^2.0.0","coffee-script":"^1.12.7",squirrelly:"^5.1.0",twing:"^5.0.2"},peerDependenciesMeta:{velocityjs:Qt,tinyliquid:Qt,"liquid-node":Qt,jade:Qt,"then-jade":Qt,dust:Qt,"dustjs-helpers":Qt,"dustjs-linkedin":Qt,swig:Qt,"swig-templates":Qt,"razor-tmpl":Qt,atpl:Qt,liquor:Qt,twig:Qt,ejs:Qt,eco:Qt,jazz:Qt,jqtpl:Qt,hamljs:Qt,hamlet:Qt,whiskers:Qt,"haml-coffee":Qt,"hogan.js":Qt,templayed:Qt,handlebars:Qt,underscore:Qt,lodash:Qt,pug:Qt,"then-pug":Qt,qejs:Qt,walrus:Qt,mustache:Qt,just:Qt,ect:Qt,mote:Qt,toffee:Qt,dot:Qt,"bracket-template":Qt,ractive:Qt,nunjucks:Qt,htmling:Qt,"babel-core":Qt,plates:Qt,"react-dom":Qt,react:Qt,"arc-templates":Qt,vash:Qt,slm:Qt,marko:Qt,teacup:Qt,"coffee-script":Qt,squirrelly:Qt,twing:Qt}}],["vue-loader@<=16.3.3",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",webpack:"^4.1.0 || ^5.0.0-0"},peerDependenciesMeta:{"@vue/compiler-sfc":Qt}}],["vue-loader@^16.7.0",{peerDependencies:{"@vue/compiler-sfc":"^3.0.8",vue:"^3.2.13"},peerDependenciesMeta:{"@vue/compiler-sfc":Qt,vue:Qt}}],["scss-parser@<=1.0.5",{dependencies:{lodash:"^4.17.21"}}],["query-ast@<1.0.5",{dependencies:{lodash:"^4.17.21"}}],["redux-thunk@<=2.3.0",{peerDependencies:{redux:"^4.0.0"}}],["skypack@<=0.3.2",{dependencies:{tar:"^6.1.0"}}],["@npmcli/metavuln-calculator@<2.0.0",{dependencies:{"json-parse-even-better-errors":"^2.3.1"}}],["bin-links@<2.3.0",{dependencies:{"mkdirp-infer-owner":"^1.0.2"}}],["rollup-plugin-polyfill-node@<=0.8.0",{peerDependencies:{rollup:"^1.20.0 || ^2.0.0"}}],["snowpack@<3.8.6",{dependencies:{"magic-string":"^0.25.7"}}],["elm-webpack-loader@*",{dependencies:{temp:"^0.9.4"}}],["winston-transport@<=4.4.0",{dependencies:{logform:"^2.2.0"}}],["jest-vue-preprocessor@*",{dependencies:{"@babel/core":"7.8.7","@babel/template":"7.8.6"},peerDependencies:{pug:"^2.0.4"},peerDependenciesMeta:{pug:Qt}}],["redux-persist@*",{peerDependencies:{react:">=16"},peerDependenciesMeta:{react:Qt}}],["sodium@>=3",{dependencies:{"node-gyp":"^3.8.0"}}],["babel-plugin-graphql-tag@<=3.1.0",{peerDependencies:{graphql:"^14.0.0 || ^15.0.0"}}],["@playwright/test@<=1.14.1",{dependencies:{"jest-matcher-utils":"^26.4.2"}}],...["babel-plugin-remove-graphql-queries@<3.14.0-next.1","babel-preset-gatsby-package@<1.14.0-next.1","create-gatsby@<1.14.0-next.1","gatsby-admin@<0.24.0-next.1","gatsby-cli@<3.14.0-next.1","gatsby-core-utils@<2.14.0-next.1","gatsby-design-tokens@<3.14.0-next.1","gatsby-legacy-polyfills@<1.14.0-next.1","gatsby-plugin-benchmark-reporting@<1.14.0-next.1","gatsby-plugin-graphql-config@<0.23.0-next.1","gatsby-plugin-image@<1.14.0-next.1","gatsby-plugin-mdx@<2.14.0-next.1","gatsby-plugin-netlify-cms@<5.14.0-next.1","gatsby-plugin-no-sourcemaps@<3.14.0-next.1","gatsby-plugin-page-creator@<3.14.0-next.1","gatsby-plugin-preact@<5.14.0-next.1","gatsby-plugin-preload-fonts@<2.14.0-next.1","gatsby-plugin-schema-snapshot@<2.14.0-next.1","gatsby-plugin-styletron@<6.14.0-next.1","gatsby-plugin-subfont@<3.14.0-next.1","gatsby-plugin-utils@<1.14.0-next.1","gatsby-recipes@<0.25.0-next.1","gatsby-source-shopify@<5.6.0-next.1","gatsby-source-wikipedia@<3.14.0-next.1","gatsby-transformer-screenshot@<3.14.0-next.1","gatsby-worker@<0.5.0-next.1"].map(t=>[t,{dependencies:{"@babel/runtime":"^7.14.8"}}]),["gatsby-core-utils@<2.14.0-next.1",{dependencies:{got:"8.3.2"}}],["gatsby-plugin-gatsby-cloud@<=3.1.0-next.0",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["gatsby-plugin-gatsby-cloud@<=3.2.0-next.1",{peerDependencies:{webpack:"*"}}],["babel-plugin-remove-graphql-queries@<=3.14.0-next.1",{dependencies:{"gatsby-core-utils":"^2.8.0-next.1"}}],["gatsby-plugin-netlify@3.13.0-next.1",{dependencies:{"gatsby-core-utils":"^2.13.0-next.0"}}],["clipanion-v3-codemod@<=0.2.0",{peerDependencies:{jscodeshift:"^0.11.0"}}],["react-live@*",{peerDependencies:{"react-dom":"*",react:"*"}}],["webpack@<4.44.1",{peerDependenciesMeta:{"webpack-cli":Qt,"webpack-command":Qt}}],["webpack@<5.0.0-beta.23",{peerDependenciesMeta:{"webpack-cli":Qt}}],["webpack-dev-server@<3.10.2",{peerDependenciesMeta:{"webpack-cli":Qt}}],["@docusaurus/responsive-loader@<1.5.0",{peerDependenciesMeta:{sharp:Qt,jimp:Qt}}],["eslint-module-utils@*",{peerDependenciesMeta:{"eslint-import-resolver-node":Qt,"eslint-import-resolver-typescript":Qt,"eslint-import-resolver-webpack":Qt,"@typescript-eslint/parser":Qt}}],["eslint-plugin-import@*",{peerDependenciesMeta:{"@typescript-eslint/parser":Qt}}],["critters-webpack-plugin@<3.0.2",{peerDependenciesMeta:{"html-webpack-plugin":Qt}}],["terser@<=5.10.0",{dependencies:{acorn:"^8.5.0"}}],["babel-preset-react-app@10.0.x",{dependencies:{"@babel/plugin-proposal-private-property-in-object":"^7.16.0"}}],["eslint-config-react-app@*",{peerDependenciesMeta:{typescript:Qt}}],["@vue/eslint-config-typescript@<11.0.0",{peerDependenciesMeta:{typescript:Qt}}],["unplugin-vue2-script-setup@<0.9.1",{peerDependencies:{"@vue/composition-api":"^1.4.3","@vue/runtime-dom":"^3.2.26"}}],["@cypress/snapshot@*",{dependencies:{debug:"^3.2.7"}}],["auto-relay@<=0.14.0",{peerDependencies:{"reflect-metadata":"^0.1.13"}}],["vue-template-babel-compiler@<1.2.0",{peerDependencies:{["vue-template-compiler"]:"^2.6.0"}}],["@parcel/transformer-image@<2.5.0",{peerDependencies:{["@parcel/core"]:"*"}}],["@parcel/transformer-js@<2.5.0",{peerDependencies:{["@parcel/core"]:"*"}}],["parcel@*",{peerDependenciesMeta:{["@parcel/core"]:Qt}}],["react-scripts@*",{peerDependencies:{eslint:"*"}}],["focus-trap-react@^8.0.0",{dependencies:{tabbable:"^5.3.2"}}],["react-rnd@<10.3.7",{peerDependencies:{react:">=16.3.0","react-dom":">=16.3.0"}}],["connect-mongo@*",{peerDependencies:{"express-session":"^1.17.1"}}],["vue-i18n@<9",{peerDependencies:{vue:"^2"}}],["vue-router@<4",{peerDependencies:{vue:"^2"}}],["unified@<10",{dependencies:{"@types/unist":"^2.0.0"}}],["react-github-btn@<=1.3.0",{peerDependencies:{react:">=16.3.0"}}],["react-dev-utils@*",{peerDependencies:{typescript:">=2.7",webpack:">=4"},peerDependenciesMeta:{typescript:Qt}}],["@asyncapi/react-component@<=1.0.0-next.39",{peerDependencies:{react:">=16.8.0","react-dom":">=16.8.0"}}],["xo@*",{peerDependencies:{webpack:">=1.11.0"},peerDependenciesMeta:{webpack:Qt}}],["babel-plugin-remove-graphql-queries@<=4.20.0-next.0",{dependencies:{"@babel/types":"^7.15.4"}}],["gatsby-plugin-page-creator@<=4.20.0-next.1",{dependencies:{"fs-extra":"^10.1.0"}}],["gatsby-plugin-utils@<=3.14.0-next.1",{dependencies:{fastq:"^1.13.0"},peerDependencies:{graphql:"^15.0.0"}}],["gatsby-plugin-mdx@<3.1.0-next.1",{dependencies:{mkdirp:"^1.0.4"}}],["gatsby-plugin-mdx@^2",{peerDependencies:{gatsby:"^3.0.0-next"}}],["fdir@<=5.2.0",{peerDependencies:{picomatch:"2.x"},peerDependenciesMeta:{picomatch:Qt}}],["babel-plugin-transform-typescript-metadata@<=0.3.2",{peerDependencies:{"@babel/core":"^7","@babel/traverse":"^7"},peerDependenciesMeta:{"@babel/traverse":Qt}}],["graphql-compose@>=9.0.10",{peerDependencies:{graphql:"^14.2.0 || ^15.0.0 || ^16.0.0"}}]];var rH;function tme(){return typeof rH>"u"&&(rH=Ie("zlib").brotliDecompressSync(Buffer.from("G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==","base64")).toString()),rH}var nH;function rme(){return typeof nH>"u"&&(nH=Ie("zlib").brotliDecompressSync(Buffer.from("G8MSIIzURnVBnObTcvb3XE6v2S9Qgc2K801Oa5otNKEtK8BINZNcaQHy+9/vf/WXBimwutXC33P2DPc64pps5rz7NGGWaOKNSPL4Y2KRE8twut2lFOIN+OXPtRmPMRhMTILib2bEQx43az2I5d3YS8Roa5UZpF/ujHb3Djd3GDvYUfvFYSUQ39vb2cmifp/rgB4J/65JK3wRBTvMBoNBmn3mbXC63/gbBkW/2IRPri0O8bcsRBsmarF328pAln04nyJFkwUAvNu934supAqLtyerZZpJ8I8suJHhf/ocMV+scKwa8NOiDKIPXw6Ex/EEZD6TEGaW8N5zvNHYF10l6Lfooj7D5W2k3dgvQSbp2Wv8TGOayS978gxlOLVjTGXs66ozewbrjwElLtyrYNnWTfzzdEutgROUFPVMhnMoy8EjJLLlWwIEoySxliim9kYW30JUHiPVyjt0iAw/ZpPmCbUCltYPnq6ZNblIKhTNhqS/oqC9iya5sGKZTOVsTEg34n92uZTf2iPpcZih8rPW8CzA+adIGmyCPcKdLMsBLShd+zuEbTrqpwuh+DLmracZcjPC5Sdf5odDAhKpFuOsQS67RT+1VgWWygSv3YwxDnylc04/PYuaMeIzhBkLrvs7e/OUzRTF56MmfY6rI63QtEjEQzq637zQqJ39nNhu3NmoRRhW/086bHGBUtx0PE0j3aEGvkdh9WJC8y8j8mqqke9/dQ5la+Q3ba4RlhvTbnfQhPDDab3tUifkjKuOsp13mXEmO00Mu88F/M67R7LXfoFDFLNtgCSWjWX+3Jn1371pJTK9xPBiMJafvDjtFyAzu8rxeQ0TKMQXNPs5xxiBOd+BRJP8KP88XPtJIbZKh/cdW8KvBUkpqKpGoiIaA32c3/JnQr4efXt85mXvidOvn/eU3Pase1typLYBalJ14mCso9h79nuMOuCa/kZAOkJHmTjP5RM2WNoPasZUAnT1TAE/NH25hUxcQv6hQWR/m1PKk4ooXMcM4SR1iYU3fUohvqk4RY2hbmTVVIXv6TvqO+0doOjgeVFAcom+RlwJQmOVH7pr1Q9LoJT6n1DeQEB+NHygsATbIwTcOKZlJsY8G4+suX1uQLjUWwLjjs0mvSvZcLTpIGAekeR7GCgl8eo3ndAqEe2XCav4huliHjdbIPBsGJuPX7lrO9HX1UbXRH5opOe1x6JsOSgHZR+EaxuXVhpLLxm6jk1LJtZfHSc6BKPun3CpYYVMJGwEUyk8MTGG0XL5MfEwaXpnc9TKnBmlGn6nHiGREc3ysn47XIBDzA+YvFdjZzVIEDcKGpS6PbUJehFRjEne8D0lVU1XuRtlgszq6pTNlQ/3MzNOEgCWPyTct22V2mEi2krizn5VDo9B19/X2DB3hCGRMM7ONbtnAcIx/OWB1u5uPbW1gsH8irXxT/IzG0PoXWYjhbMsH3KTuoOl5o17PulcgvsfTSnKFM354GWI8luqZnrswWjiXy3G+Vbyo1KMopFmmvBwNELgaS8z8dNZchx/Cl/xjddxhMcyqtzFyONb2Zdu90NkI8pAeufe7YlXrp53v8Dj/l8vWeVspRKBGXScBBPI/HinSTGmLDOGGOCIyH0JFdOZx0gWsacNlQLJMIrBhqRxXxHF/5pseWwejlAAvZ3klZSDSYY8mkToaWejXhgNomeGtx1DTLEUFMRkgF5yFB22WYdJnaWN14r1YJj81hGi45+jrADS5nYRhCiSlCJJ1nL8pYX+HDSMhdTEWyRcgHVp/IsUIZYMfT+YYncUQPgcxNGCHfZ88vDdrcUuaGIl6zhAsiaq7R5dfqrqXH/JcBhfjT8D0azayIyEz75Nxp6YkcyDxlJq3EXnJUpqDohJJOysL1t1uNiHESlvsxPb5cpbW0+ICZqJmUZus1BMW0F5IVBODLIo2zHHjA0=","base64")).toString()),nH}var iH;function nme(){return typeof iH>"u"&&(iH=Ie("zlib").brotliDecompressSync(Buffer.from("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","base64")).toString()),iH}var ime=new Map([[Y.makeIdent(null,"fsevents").identHash,tme],[Y.makeIdent(null,"resolve").identHash,rme],[Y.makeIdent(null,"typescript").identHash,nme]]),Kht={hooks:{registerPackageExtensions:async(t,e)=>{for(let[r,o]of tH)e(Y.parseDescriptor(r,!0),o)},getBuiltinPatch:async(t,e)=>{var n;let r="compat/";if(!e.startsWith(r))return;let o=Y.parseIdent(e.slice(r.length)),a=(n=ime.get(o.identHash))==null?void 0:n();return typeof a<"u"?a:null},reduceDependency:async(t,e,r,o)=>typeof ime.get(t.identHash)>"u"?t:Y.makeDescriptor(t,Y.makeRange({protocol:"patch:",source:Y.stringifyDescriptor(t),selector:`optional!builtin<compat/${Y.stringifyIdent(t)}>`,params:null}))}},Vht=Kht;var wH={};Yt(wH,{ConstraintsCheckCommand:()=>fh,ConstraintsQueryCommand:()=>uh,ConstraintsSourceCommand:()=>Ah,default:()=>Igt});Ke();Ke();A2();var dC=class{constructor(e){this.project=e}createEnvironment(){let e=new c2(["cwd","ident"]),r=new c2(["type","ident"]),o={manifestUpdates:new Map,reportedErrors:new Map};for(let a of this.project.workspaces){let n=Y.stringifyIdent(a.anchoredLocator),u=a.manifest.exportTo({}),A=(w,v,{caller:b=As.getCaller()}={})=>{let E=u2(w),R=We.getMapWithDefault(o.manifestUpdates,a.cwd),L=We.getMapWithDefault(R,E),_=We.getSetWithDefault(L,v);b!==null&&_.add(b)},p=w=>A(w,void 0,{caller:As.getCaller()}),h=w=>{We.getArrayWithDefault(o.reportedErrors,a.cwd).push(w)},C=e.insert({cwd:a.cwd,ident:n,manifest:u,set:A,unset:p,error:h});for(let w of Nt.allDependencies)for(let v of a.manifest[w].values()){let b=Y.stringifyIdent(v),E=()=>{A([w,b],void 0,{caller:As.getCaller()})},R=L=>{A([w,b],L,{caller:As.getCaller()})};r.insert({workspace:C,ident:b,range:v.range,type:w,update:R,delete:E,error:h})}}return{workspaces:e,dependencies:r,result:o}}async process(){let e=this.createEnvironment(),r={Yarn:{workspace:a=>e.workspaces.find(a)[0]??null,workspaces:a=>e.workspaces.find(a),dependencies:a=>e.dependencies.find(a)}},o=await this.project.loadUserConfig();return o!=null&&o.constraints?(await o.constraints(r),e.result):null}};Ke();Ke();_t();var uh=class extends ct{constructor(){super(...arguments);this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.query=fe.String()}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(d2(),g2)),o=await Xe.find(this.context.cwd,this.context.plugins),{project:a}=await Pt.find(o,this.context.cwd),n=await r.find(a),u=this.query;return u.endsWith(".")||(u=`${u}.`),(await Ct.start({configuration:o,json:this.json,stdout:this.context.stdout},async p=>{for await(let h of n.query(u)){let C=Array.from(Object.entries(h)),w=C.length,v=C.reduce((b,[E])=>Math.max(b,E.length),0);for(let b=0;b<w;b++){let[E,R]=C[b];p.reportInfo(null,`${Egt(b,w)}${E.padEnd(v," ")} = ${ygt(R)}`)}p.reportJson(h)}})).exitCode()}};uh.paths=[["constraints","query"]],uh.usage=it.Usage({category:"Constraints-related commands",description:"query the constraints fact database",details:` |
517 | This command will output all matches to the given prolog query. | 517 | This command will output all matches to the given prolog query. |
518 | `,examples:[["List all dependencies throughout the workspace","yarn constraints query 'workspace_has_dependency(_, DependencyName, _, _).'"]]});function rgt(t){return typeof t!="string"?`${t}`:t.match(/^[a-zA-Z][a-zA-Z0-9_]+$/)?t:`'${t}'`}function ngt(t,e){let r=t===0,o=t===e-1;return r&&o?"":r?"\u250C ":o?"\u2514 ":"\u2502 "}Ke();_t();var ch=class extends ct{constructor(){super(...arguments);this.verbose=fe.Boolean("-v,--verbose",!1,{description:"Also print the fact database automatically compiled from the workspace manifests"})}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(u2(),c2)),o=await Xe.find(this.context.cwd,this.context.plugins),{project:a}=await St.find(o,this.context.cwd),n=await r.find(a);this.context.stdout.write(this.verbose?n.fullSource:n.source)}};ch.paths=[["constraints","source"]],ch.usage=it.Usage({category:"Constraints-related commands",description:"print the source code for the constraints",details:"\n This command will print the Prolog source code used by the constraints engine. Adding the `-v,--verbose` flag will print the *full* source code, including the fact database automatically compiled from the workspace manifests.\n ",examples:[["Prints the source code","yarn constraints source"],["Print the source code and the fact database","yarn constraints source -v"]]});Ke();Ke();_t();s2();var uh=class extends ct{constructor(){super(...arguments);this.fix=fe.Boolean("--fix",!1,{description:"Attempt to automatically fix unambiguous issues, following a multi-pass process"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd),a=await o.loadUserConfig(),n;if(a!=null&&a.constraints)n=new AC(o);else{let{Constraints:h}=await Promise.resolve().then(()=>(u2(),c2));n=await h.find(o)}let u={children:[]},A=!1,p=!1;for(let h=this.fix?10:1;h>0;--h){let C=await n.process();if(!C)break;let{changedWorkspaces:w,remainingErrors:v}=eQ(o,C,{fix:this.fix}),b=[];for(let[E,R]of w){let L=E.manifest.indent;E.manifest=new Nt,E.manifest.indent=L,E.manifest.load(R),b.push(E.persistManifest())}if(!(w.size>0&&h>1)){A=!1,p=!0;for(let[E,R]of v){let L=[];for(let J of R){let re=J.text.split(/\n/);J.fixable?(re[0]=`${ye.pretty(r,"\u2699","gray")} ${re[0]}`,A=!0):p=!1,L.push({value:ye.tuple(ye.Type.NO_HINT,re[0]),children:re.slice(1).map(oe=>({value:ye.tuple(ye.Type.NO_HINT,oe)}))})}let _={value:ye.tuple(ye.Type.LOCATOR,E.anchoredLocator),children:Ye.sortMap(L,J=>J.value[1])};u.children.push(_)}}}if(u.children.length===0)return 0;if(A){let h=p?`Those errors can all be fixed by running ${ye.pretty(r,"yarn constraints --fix",ye.Type.CODE)}`:`Errors prefixed by '\u2699' can be fixed by running ${ye.pretty(r,"yarn constraints --fix",ye.Type.CODE)}`;await Ct.start({configuration:r,stdout:this.context.stdout,includeNames:!1,includeFooter:!1},async C=>{C.reportInfo(0,h),C.reportSeparator()})}return u.children=Ye.sortMap(u.children,h=>h.value[1]),Xo.emitTree(u,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1}),1}};uh.paths=[["constraints"]],uh.usage=it.Usage({category:"Constraints-related commands",description:"check that the project constraints are met",details:` | 518 | `,examples:[["List all dependencies throughout the workspace","yarn constraints query 'workspace_has_dependency(_, DependencyName, _, _).'"]]});function ygt(t){return typeof t!="string"?`${t}`:t.match(/^[a-zA-Z][a-zA-Z0-9_]+$/)?t:`'${t}'`}function Egt(t,e){let r=t===0,o=t===e-1;return r&&o?"":r?"\u250C ":o?"\u2514 ":"\u2502 "}Ke();_t();var Ah=class extends ct{constructor(){super(...arguments);this.verbose=fe.Boolean("-v,--verbose",!1,{description:"Also print the fact database automatically compiled from the workspace manifests"})}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(d2(),g2)),o=await Xe.find(this.context.cwd,this.context.plugins),{project:a}=await Pt.find(o,this.context.cwd),n=await r.find(a);this.context.stdout.write(this.verbose?n.fullSource:n.source)}};Ah.paths=[["constraints","source"]],Ah.usage=it.Usage({category:"Constraints-related commands",description:"print the source code for the constraints",details:"\n This command will print the Prolog source code used by the constraints engine. Adding the `-v,--verbose` flag will print the *full* source code, including the fact database automatically compiled from the workspace manifests.\n ",examples:[["Prints the source code","yarn constraints source"],["Print the source code and the fact database","yarn constraints source -v"]]});Ke();Ke();_t();A2();var fh=class extends ct{constructor(){super(...arguments);this.fix=fe.Boolean("--fix",!1,{description:"Attempt to automatically fix unambiguous issues, following a multi-pass process"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd),a=await o.loadUserConfig(),n;if(a!=null&&a.constraints)n=new dC(o);else{let{Constraints:h}=await Promise.resolve().then(()=>(d2(),g2));n=await h.find(o)}let u,A=!1,p=!1;for(let h=this.fix?10:1;h>0;--h){let C=await n.process();if(!C)break;let{changedWorkspaces:w,remainingErrors:v}=uQ(o,C,{fix:this.fix}),b=[];for(let[E,R]of w){let L=E.manifest.indent;E.manifest=new Nt,E.manifest.indent=L,E.manifest.load(R),b.push(E.persistManifest())}if(!(w.size>0&&h>1)){u=Ame(v,{configuration:r}),A=!1,p=!0;for(let[,E]of v)for(let R of E)R.fixable?A=!0:p=!1}}if(u.children.length===0)return 0;if(A){let h=p?`Those errors can all be fixed by running ${ye.pretty(r,"yarn constraints --fix",ye.Type.CODE)}`:`Errors prefixed by '\u2699' can be fixed by running ${ye.pretty(r,"yarn constraints --fix",ye.Type.CODE)}`;await Ct.start({configuration:r,stdout:this.context.stdout,includeNames:!1,includeFooter:!1},async C=>{C.reportInfo(0,h),C.reportSeparator()})}return u.children=We.sortMap(u.children,h=>h.value[1]),$o.emitTree(u,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1}),1}};fh.paths=[["constraints"]],fh.usage=it.Usage({category:"Constraints-related commands",description:"check that the project constraints are met",details:` |
519 | This command will run constraints on your project and emit errors for each one that is found but isn't met. If any error is emitted the process will exit with a non-zero exit code. | 519 | This command will run constraints on your project and emit errors for each one that is found but isn't met. If any error is emitted the process will exit with a non-zero exit code. |
520 | 520 | ||
521 | If the \`--fix\` flag is used, Yarn will attempt to automatically fix the issues the best it can, following a multi-pass process (with a maximum of 10 iterations). Some ambiguous patterns cannot be autofixed, in which case you'll have to manually specify the right resolution. | 521 | If the \`--fix\` flag is used, Yarn will attempt to automatically fix the issues the best it can, following a multi-pass process (with a maximum of 10 iterations). Some ambiguous patterns cannot be autofixed, in which case you'll have to manually specify the right resolution. |
522 | 522 | ||
523 | For more information as to how to write constraints, please consult our dedicated page on our website: https://yarnpkg.com/features/constraints. | 523 | For more information as to how to write constraints, please consult our dedicated page on our website: https://yarnpkg.com/features/constraints. |
524 | `,examples:[["Check that all constraints are satisfied","yarn constraints"],["Autofix all unmet constraints","yarn constraints --fix"]]});s2();var igt={configuration:{enableConstraintsChecks:{description:"If true, constraints will run during installs",type:"BOOLEAN",default:!1},constraintsPath:{description:"The path of the constraints file.",type:"ABSOLUTE_PATH",default:"./constraints.pro"}},commands:[lh,ch,uh],hooks:{async validateProject(t,{reportError:e}){if(!t.configuration.get("enableConstraintsChecks"))return;let r=await t.loadUserConfig(),o;if(r!=null&&r.constraints)o=new AC(t);else{let{Constraints:u}=await Promise.resolve().then(()=>(u2(),c2));o=await u.find(t)}let a=await o.process();if(!a)return;let{remainingErrors:n}=eQ(t,a);n.size!==0&&e(84,`Constraint check failed; run ${ye.pretty(t.configuration,"yarn constraints",ye.Type.CODE)} for more details`)}}},sgt=igt;var CH={};Yt(CH,{CreateCommand:()=>em,DlxCommand:()=>Ah,default:()=>agt});Ke();_t();var em=class extends ct{constructor(){super(...arguments);this.pkg=fe.String("-p,--package",{description:"The package to run the provided command from"});this.quiet=fe.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=fe.String();this.args=fe.Proxy()}async execute(){let r=[];this.pkg&&r.push("--package",this.pkg),this.quiet&&r.push("--quiet");let o=this.command.replace(/^(@[^@/]+)(@|$)/,"$1/create$2"),a=Y.parseDescriptor(o),n=a.name.match(/^create(-|$)/)?a:a.scope?Y.makeIdent(a.scope,`create-${a.name}`):Y.makeIdent(null,`create-${a.name}`),u=Y.stringifyIdent(n);return a.range!=="unknown"&&(u+=`@${a.range}`),this.cli.run(["dlx",...r,u,...this.args])}};em.paths=[["create"]];Ke();Ke();bt();_t();var Ah=class extends ct{constructor(){super(...arguments);this.packages=fe.Array("-p,--package",{description:"The package(s) to install before running the command"});this.quiet=fe.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=fe.String();this.args=fe.Proxy()}async execute(){return Xe.telemetry=null,await ae.mktempPromise(async r=>{let o=V.join(r,`dlx-${process.pid}`);await ae.mkdirPromise(o),await ae.writeFilePromise(V.join(o,"package.json"),`{} | 524 | `,examples:[["Check that all constraints are satisfied","yarn constraints"],["Autofix all unmet constraints","yarn constraints --fix"]]});A2();var Cgt={configuration:{enableConstraintsChecks:{description:"If true, constraints will run during installs",type:"BOOLEAN",default:!1},constraintsPath:{description:"The path of the constraints file.",type:"ABSOLUTE_PATH",default:"./constraints.pro"}},commands:[uh,Ah,fh],hooks:{async validateProjectAfterInstall(t,{reportError:e}){if(!t.configuration.get("enableConstraintsChecks"))return;let r=await t.loadUserConfig(),o;if(r!=null&&r.constraints)o=new dC(t);else{let{Constraints:u}=await Promise.resolve().then(()=>(d2(),g2));o=await u.find(t)}let a=await o.process();if(!a)return;let{remainingErrors:n}=uQ(t,a);if(n.size!==0)if(t.configuration.isCI)for(let[u,A]of n)for(let p of A)e(84,`${ye.pretty(t.configuration,u.locator,ye.Type.IDENT)}: ${p.text}`);else e(84,`Constraint check failed; run ${ye.pretty(t.configuration,"yarn constraints",ye.Type.CODE)} for more details`)}}},Igt=Cgt;var BH={};Yt(BH,{CreateCommand:()=>im,DlxCommand:()=>ph,default:()=>Bgt});Ke();_t();var im=class extends ct{constructor(){super(...arguments);this.pkg=fe.String("-p,--package",{description:"The package to run the provided command from"});this.quiet=fe.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=fe.String();this.args=fe.Proxy()}async execute(){let r=[];this.pkg&&r.push("--package",this.pkg),this.quiet&&r.push("--quiet");let o=this.command.replace(/^(@[^@/]+)(@|$)/,"$1/create$2"),a=Y.parseDescriptor(o),n=a.name.match(/^create(-|$)/)?a:a.scope?Y.makeIdent(a.scope,`create-${a.name}`):Y.makeIdent(null,`create-${a.name}`),u=Y.stringifyIdent(n);return a.range!=="unknown"&&(u+=`@${a.range}`),this.cli.run(["dlx",...r,u,...this.args])}};im.paths=[["create"]];Ke();Ke();St();_t();var ph=class extends ct{constructor(){super(...arguments);this.packages=fe.Array("-p,--package",{description:"The package(s) to install before running the command"});this.quiet=fe.Boolean("-q,--quiet",!1,{description:"Only report critical errors instead of printing the full install logs"});this.command=fe.String();this.args=fe.Proxy()}async execute(){return Xe.telemetry=null,await oe.mktempPromise(async r=>{let o=J.join(r,`dlx-${process.pid}`);await oe.mkdirPromise(o),await oe.writeFilePromise(J.join(o,"package.json"),`{} |
525 | `),await ae.writeFilePromise(V.join(o,"yarn.lock"),"");let a=V.join(o,".yarnrc.yml"),n=await Xe.findProjectCwd(this.context.cwd,Lr.lockfile),A={enableGlobalCache:!(await Xe.find(this.context.cwd,null,{strict:!1})).get("enableGlobalCache"),enableTelemetry:!1,logFilters:[{code:Ku(68),level:ye.LogLevel.Discard}]},p=n!==null?V.join(n,".yarnrc.yml"):null;p!==null&&ae.existsSync(p)?(await ae.copyFilePromise(p,a),await Xe.updateConfiguration(o,L=>{let _=Ye.toMerged(L,A);return Array.isArray(L.plugins)&&(_.plugins=L.plugins.map(J=>{let re=typeof J=="string"?J:J.path,oe=Ae.isAbsolute(re)?re:Ae.resolve(Ae.fromPortablePath(n),re);return typeof J=="string"?oe:{path:oe,spec:J.spec}})),_})):await ae.writeJsonPromise(a,A);let h=this.packages??[this.command],C=Y.parseDescriptor(this.command).name,w=await this.cli.run(["add","--fixed","--",...h],{cwd:o,quiet:this.quiet});if(w!==0)return w;this.quiet||this.context.stdout.write(` | 525 | `),await oe.writeFilePromise(J.join(o,"yarn.lock"),"");let a=J.join(o,".yarnrc.yml"),n=await Xe.findProjectCwd(this.context.cwd,Lr.lockfile),A={enableGlobalCache:!(await Xe.find(this.context.cwd,null,{strict:!1})).get("enableGlobalCache"),enableTelemetry:!1,logFilters:[{code:Vu(68),level:ye.LogLevel.Discard}]},p=n!==null?J.join(n,".yarnrc.yml"):null;p!==null&&oe.existsSync(p)?(await oe.copyFilePromise(p,a),await Xe.updateConfiguration(o,L=>{let _=We.toMerged(L,A);return Array.isArray(L.plugins)&&(_.plugins=L.plugins.map(V=>{let re=typeof V=="string"?V:V.path,ae=ue.isAbsolute(re)?re:ue.resolve(ue.fromPortablePath(n),re);return typeof V=="string"?ae:{path:ae,spec:V.spec}})),_})):await oe.writeJsonPromise(a,A);let h=this.packages??[this.command],C=Y.parseDescriptor(this.command).name,w=await this.cli.run(["add","--fixed","--",...h],{cwd:o,quiet:this.quiet});if(w!==0)return w;this.quiet||this.context.stdout.write(` |
526 | `);let v=await Xe.find(o,this.context.plugins),{project:b,workspace:E}=await St.find(v,o);if(E===null)throw new er(b.cwd,o);await b.restoreInstallState();let R=await sn.getWorkspaceAccessibleBinaries(E);return R.has(C)===!1&&R.size===1&&typeof this.packages>"u"&&(C=Array.from(R)[0][0]),await sn.executeWorkspaceAccessibleBinary(E,C,this.args,{packageAccessibleBinaries:R,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};Ah.paths=[["dlx"]],Ah.usage=it.Usage({description:"run a package in a temporary environment",details:"\n This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\n\n By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\n\n Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\n ",examples:[["Use create-react-app to create a new React app","yarn dlx create-react-app ./my-app"],["Install multiple packages for a single command",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e "console.log('hello!')"`]]});var ogt={commands:[em,Ah]},agt=ogt;var BH={};Yt(BH,{ExecFetcher:()=>f2,ExecResolver:()=>p2,default:()=>ugt,execUtils:()=>iQ});Ke();Ke();bt();var pA="exec:";var iQ={};Yt(iQ,{loadGeneratorFile:()=>A2,makeLocator:()=>wH,makeSpec:()=>bme,parseSpec:()=>IH});Ke();bt();function IH(t){let{params:e,selector:r}=Y.parseRange(t),o=Ae.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?Y.parseLocator(e.locator):null,path:o}}function bme({parentLocator:t,path:e,generatorHash:r,protocol:o}){let a=t!==null?{locator:Y.stringifyLocator(t)}:{},n=typeof r<"u"?{hash:r}:{};return Y.makeRange({protocol:o,source:e,selector:e,params:{...n,...a}})}function wH(t,{parentLocator:e,path:r,generatorHash:o,protocol:a}){return Y.makeLocator(t,bme({parentLocator:e,path:r,generatorHash:o,protocol:a}))}async function A2(t,e,r){let{parentLocator:o,path:a}=Y.parseFileStyleRange(t,{protocol:e}),n=V.isAbsolute(a)?{packageFs:new An(wt.root),prefixPath:wt.dot,localPath:wt.root}:await r.fetcher.fetch(o,r),u=n.localPath?{packageFs:new An(wt.root),prefixPath:V.relative(wt.root,n.localPath)}:n;n!==u&&n.releaseFs&&n.releaseFs();let A=u.packageFs,p=V.join(u.prefixPath,a);return await A.readFilePromise(p,"utf8")}var f2=class{supports(e,r){return!!e.reference.startsWith(pA)}getLocalPath(e,r){let{parentLocator:o,path:a}=Y.parseFileStyleRange(e.reference,{protocol:pA});if(V.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:V.resolve(n,a)}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:u}}async fetchFromDisk(e,r){let o=await A2(e.reference,pA,r);return ae.mktempPromise(async a=>{let n=V.join(a,"generator.js");return await ae.writeFilePromise(n,o),ae.mktempPromise(async u=>{if(await this.generatePackage(u,e,n,r),!ae.existsSync(V.join(u,"build")))throw new Error("The script should have generated a build directory");return await Vi.makeArchiveFromDirectory(V.join(u,"build"),{prefixPath:Y.getIdentVendorPath(e),compressionLevel:r.project.configuration.get("compressionLevel")})})})}async generatePackage(e,r,o,a){return await ae.mktempPromise(async n=>{let u=await sn.makeScriptEnv({project:a.project,binFolder:n}),A=V.join(e,"runtime.js");return await ae.mktempPromise(async p=>{let h=V.join(p,"buildfile.log"),C=V.join(e,"generator"),w=V.join(e,"build");await ae.mkdirPromise(C),await ae.mkdirPromise(w);let v={tempDir:Ae.fromPortablePath(C),buildDir:Ae.fromPortablePath(w),locator:Y.stringifyLocator(r)};await ae.writeFilePromise(A,` | 526 | `);let v=await Xe.find(o,this.context.plugins),{project:b,workspace:E}=await Pt.find(v,o);if(E===null)throw new er(b.cwd,o);await b.restoreInstallState();let R=await sn.getWorkspaceAccessibleBinaries(E);return R.has(C)===!1&&R.size===1&&typeof this.packages>"u"&&(C=Array.from(R)[0][0]),await sn.executeWorkspaceAccessibleBinary(E,C,this.args,{packageAccessibleBinaries:R,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};ph.paths=[["dlx"]],ph.usage=it.Usage({description:"run a package in a temporary environment",details:"\n This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\n\n By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\n\n Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\n ",examples:[["Use create-react-app to create a new React app","yarn dlx create-react-app ./my-app"],["Install multiple packages for a single command",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e "console.log('hello!')"`]]});var wgt={commands:[im,ph]},Bgt=wgt;var SH={};Yt(SH,{ExecFetcher:()=>y2,ExecResolver:()=>E2,default:()=>Sgt,execUtils:()=>hQ});Ke();Ke();St();var hA="exec:";var hQ={};Yt(hQ,{loadGeneratorFile:()=>m2,makeLocator:()=>DH,makeSpec:()=>Ome,parseSpec:()=>vH});Ke();St();function vH(t){let{params:e,selector:r}=Y.parseRange(t),o=ue.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?Y.parseLocator(e.locator):null,path:o}}function Ome({parentLocator:t,path:e,generatorHash:r,protocol:o}){let a=t!==null?{locator:Y.stringifyLocator(t)}:{},n=typeof r<"u"?{hash:r}:{};return Y.makeRange({protocol:o,source:e,selector:e,params:{...n,...a}})}function DH(t,{parentLocator:e,path:r,generatorHash:o,protocol:a}){return Y.makeLocator(t,Ome({parentLocator:e,path:r,generatorHash:o,protocol:a}))}async function m2(t,e,r){let{parentLocator:o,path:a}=Y.parseFileStyleRange(t,{protocol:e}),n=J.isAbsolute(a)?{packageFs:new An(wt.root),prefixPath:wt.dot,localPath:wt.root}:await r.fetcher.fetch(o,r),u=n.localPath?{packageFs:new An(wt.root),prefixPath:J.relative(wt.root,n.localPath)}:n;n!==u&&n.releaseFs&&n.releaseFs();let A=u.packageFs,p=J.join(u.prefixPath,a);return await A.readFilePromise(p,"utf8")}var y2=class{supports(e,r){return!!e.reference.startsWith(hA)}getLocalPath(e,r){let{parentLocator:o,path:a}=Y.parseFileStyleRange(e.reference,{protocol:hA});if(J.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:J.resolve(n,a)}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:u}}async fetchFromDisk(e,r){let o=await m2(e.reference,hA,r);return oe.mktempPromise(async a=>{let n=J.join(a,"generator.js");return await oe.writeFilePromise(n,o),oe.mktempPromise(async u=>{if(await this.generatePackage(u,e,n,r),!oe.existsSync(J.join(u,"build")))throw new Error("The script should have generated a build directory");return await Ji.makeArchiveFromDirectory(J.join(u,"build"),{prefixPath:Y.getIdentVendorPath(e),compressionLevel:r.project.configuration.get("compressionLevel")})})})}async generatePackage(e,r,o,a){return await oe.mktempPromise(async n=>{let u=await sn.makeScriptEnv({project:a.project,binFolder:n}),A=J.join(e,"runtime.js");return await oe.mktempPromise(async p=>{let h=J.join(p,"buildfile.log"),C=J.join(e,"generator"),w=J.join(e,"build");await oe.mkdirPromise(C),await oe.mkdirPromise(w);let v={tempDir:ue.fromPortablePath(C),buildDir:ue.fromPortablePath(w),locator:Y.stringifyLocator(r)};await oe.writeFilePromise(A,` |
527 | // Expose 'Module' as a global variable | 527 | // Expose 'Module' as a global variable |
528 | Object.defineProperty(global, 'Module', { | 528 | Object.defineProperty(global, 'Module', { |
529 | get: () => require('module'), | 529 | get: () => require('module'), |
@@ -548,126 +548,129 @@ ${ve}`)}else pe.length>1&&!A&&_.reportError(27,`${Y.prettyDescriptor(r,J)} has m | |||
548 | enumerable: true, | 548 | enumerable: true, |
549 | }); | 549 | }); |
550 | `);let b=u.NODE_OPTIONS||"",E=/\s*--require\s+\S*\.pnp\.c?js\s*/g;b=b.replace(E," ").trim(),u.NODE_OPTIONS=b;let{stdout:R,stderr:L}=a.project.configuration.getSubprocessStreams(h,{header:`# This file contains the result of Yarn generating a package (${Y.stringifyLocator(r)}) | 550 | `);let b=u.NODE_OPTIONS||"",E=/\s*--require\s+\S*\.pnp\.c?js\s*/g;b=b.replace(E," ").trim(),u.NODE_OPTIONS=b;let{stdout:R,stderr:L}=a.project.configuration.getSubprocessStreams(h,{header:`# This file contains the result of Yarn generating a package (${Y.stringifyLocator(r)}) |
551 | `,prefix:Y.prettyLocator(a.project.configuration,r),report:a.report}),{code:_}=await Mr.pipevp(process.execPath,["--require",Ae.fromPortablePath(A),Ae.fromPortablePath(o),Y.stringifyIdent(r)],{cwd:e,env:u,stdin:null,stdout:R,stderr:L});if(_!==0)throw ae.detachTemp(p),new Error(`Package generation failed (exit code ${_}, logs can be found here: ${ye.pretty(a.project.configuration,h,ye.Type.PATH)})`)})})}};Ke();Ke();var lgt=2,p2=class{supportsDescriptor(e,r){return!!e.range.startsWith(pA)}supportsLocator(e,r){return!!e.reference.startsWith(pA)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return Y.bindDescriptor(e,{locator:Y.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=IH(e.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let u=await A2(Y.makeRange({protocol:pA,source:a,selector:a,params:{locator:Y.stringifyLocator(n)}}),pA,o.fetchOptions),A=bn.makeHash(`${lgt}`,u).slice(0,6);return[wH(e,{parentLocator:n,path:a,generatorHash:A,protocol:pA})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await Ye.releaseAfterUseAsync(async()=>await Nt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var cgt={fetchers:[f2],resolvers:[p2]},ugt=cgt;var DH={};Yt(DH,{FileFetcher:()=>m2,FileResolver:()=>y2,TarballFileFetcher:()=>E2,TarballFileResolver:()=>C2,default:()=>pgt,fileUtils:()=>tm});Ke();bt();var gC=/^(?:[a-zA-Z]:[\\/]|\.{0,2}\/)/,h2=/^[^?]*\.(?:tar\.gz|tgz)(?:::.*)?$/,Mi="file:";var tm={};Yt(tm,{fetchArchiveFromLocator:()=>d2,makeArchiveFromLocator:()=>sQ,makeBufferFromLocator:()=>vH,makeLocator:()=>dC,makeSpec:()=>Qme,parseSpec:()=>g2});Ke();bt();function g2(t){let{params:e,selector:r}=Y.parseRange(t),o=Ae.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?Y.parseLocator(e.locator):null,path:o}}function Qme({parentLocator:t,path:e,hash:r,protocol:o}){let a=t!==null?{locator:Y.stringifyLocator(t)}:{},n=typeof r<"u"?{hash:r}:{};return Y.makeRange({protocol:o,source:e,selector:e,params:{...n,...a}})}function dC(t,{parentLocator:e,path:r,hash:o,protocol:a}){return Y.makeLocator(t,Qme({parentLocator:e,path:r,hash:o,protocol:a}))}async function d2(t,e){let{parentLocator:r,path:o}=Y.parseFileStyleRange(t.reference,{protocol:Mi}),a=V.isAbsolute(o)?{packageFs:new An(wt.root),prefixPath:wt.dot,localPath:wt.root}:await e.fetcher.fetch(r,e),n=a.localPath?{packageFs:new An(wt.root),prefixPath:V.relative(wt.root,a.localPath)}:a;a!==n&&a.releaseFs&&a.releaseFs();let u=n.packageFs,A=V.join(n.prefixPath,o);return await Ye.releaseAfterUseAsync(async()=>await u.readFilePromise(A),n.releaseFs)}async function sQ(t,{protocol:e,fetchOptions:r,inMemory:o=!1}){let{parentLocator:a,path:n}=Y.parseFileStyleRange(t.reference,{protocol:e}),u=V.isAbsolute(n)?{packageFs:new An(wt.root),prefixPath:wt.dot,localPath:wt.root}:await r.fetcher.fetch(a,r),A=u.localPath?{packageFs:new An(wt.root),prefixPath:V.relative(wt.root,u.localPath)}:u;u!==A&&u.releaseFs&&u.releaseFs();let p=A.packageFs,h=V.join(A.prefixPath,n);return await Ye.releaseAfterUseAsync(async()=>await Vi.makeArchiveFromDirectory(h,{baseFs:p,prefixPath:Y.getIdentVendorPath(t),compressionLevel:r.project.configuration.get("compressionLevel"),inMemory:o}),A.releaseFs)}async function vH(t,{protocol:e,fetchOptions:r}){return(await sQ(t,{protocol:e,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var m2=class{supports(e,r){return!!e.reference.startsWith(Mi)}getLocalPath(e,r){let{parentLocator:o,path:a}=Y.parseFileStyleRange(e.reference,{protocol:Mi});if(V.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:V.resolve(n,a)}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:u}}async fetchFromDisk(e,r){return sQ(e,{protocol:Mi,fetchOptions:r})}};Ke();Ke();var Agt=2,y2=class{supportsDescriptor(e,r){return e.range.match(gC)?!0:!!e.range.startsWith(Mi)}supportsLocator(e,r){return!!e.reference.startsWith(Mi)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return gC.test(e.range)&&(e=Y.makeDescriptor(e,`${Mi}${e.range}`)),Y.bindDescriptor(e,{locator:Y.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=g2(e.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let u=await vH(Y.makeLocator(e,Y.makeRange({protocol:Mi,source:a,selector:a,params:{locator:Y.stringifyLocator(n)}})),{protocol:Mi,fetchOptions:o.fetchOptions}),A=bn.makeHash(`${Agt}`,u).slice(0,6);return[dC(e,{parentLocator:n,path:a,hash:A,protocol:Mi})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await Ye.releaseAfterUseAsync(async()=>await Nt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};Ke();var E2=class{supports(e,r){return h2.test(e.reference)?!!e.reference.startsWith(Mi):!1}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),checksum:u}}async fetchFromDisk(e,r){let o=await d2(e,r);return await Vi.convertToZip(o,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:Y.getIdentVendorPath(e),stripComponents:1})}};Ke();Ke();Ke();var C2=class{supportsDescriptor(e,r){return h2.test(e.range)?!!(e.range.startsWith(Mi)||gC.test(e.range)):!1}supportsLocator(e,r){return h2.test(e.reference)?!!e.reference.startsWith(Mi):!1}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return gC.test(e.range)&&(e=Y.makeDescriptor(e,`${Mi}${e.range}`)),Y.bindDescriptor(e,{locator:Y.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=g2(e.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let u=dC(e,{parentLocator:n,path:a,hash:"",protocol:Mi}),A=await d2(u,o.fetchOptions),p=bn.makeHash(A).slice(0,6);return[dC(e,{parentLocator:n,path:a,hash:p,protocol:Mi})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await Ye.releaseAfterUseAsync(async()=>await Nt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var fgt={fetchers:[E2,m2],resolvers:[C2,y2]},pgt=fgt;var xH={};Yt(xH,{GithubFetcher:()=>I2,default:()=>ggt,githubUtils:()=>oQ});Ke();bt();var oQ={};Yt(oQ,{invalidGithubUrlMessage:()=>Rme,isGithubUrl:()=>SH,parseGithubUrl:()=>PH});var kme=tt(Ie("querystring")),Fme=[/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+)\/tarball\/([^/#]+)(?:#(.*))?$/,/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+?)(?:\.git)?(?:#(.*))?$/];function SH(t){return t?Fme.some(e=>!!t.match(e)):!1}function PH(t){let e;for(let A of Fme)if(e=t.match(A),e)break;if(!e)throw new Error(Rme(t));let[,r,o,a,n="master"]=e,{commit:u}=kme.default.parse(n);return n=u||n.replace(/[^:]*:/,""),{auth:r,username:o,reponame:a,treeish:n}}function Rme(t){return`Input cannot be parsed as a valid GitHub URL ('${t}').`}var I2=class{supports(e,r){return!!SH(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let o=await ln.get(this.getLocatorUrl(e,r),{configuration:r.project.configuration});return await ae.mktempPromise(async a=>{let n=new An(a);await Vi.extractArchiveTo(o,n,{stripComponents:1});let u=Zo.splitRepoUrl(e.reference),A=V.join(a,"package.tgz");await sn.prepareExternalProject(a,A,{configuration:r.project.configuration,report:r.report,workspace:u.extra.workspace,locator:e});let p=await ae.readFilePromise(A);return await Vi.convertToZip(p,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:Y.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,r){let{auth:o,username:a,reponame:n,treeish:u}=PH(e.reference);return`https://${o?`${o}@`:""}github.com/${a}/${n}/archive/${u}.tar.gz`}};var hgt={hooks:{async fetchHostedRepository(t,e,r){if(t!==null)return t;let o=new I2;if(!o.supports(e,r))return null;try{return await o.fetch(e,r)}catch{return null}}}},ggt=hgt;var bH={};Yt(bH,{TarballHttpFetcher:()=>v2,TarballHttpResolver:()=>D2,default:()=>mgt});Ke();var w2=/^[^?]*\.(?:tar\.gz|tgz)(?:\?.*)?$/,B2=/^https?:/;var v2=class{supports(e,r){return w2.test(e.reference)?!!B2.test(e.reference):!1}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let o=await ln.get(e.reference,{configuration:r.project.configuration});return await Vi.convertToZip(o,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:Y.getIdentVendorPath(e),stripComponents:1})}};Ke();Ke();var D2=class{supportsDescriptor(e,r){return w2.test(e.range)?!!B2.test(e.range):!1}supportsLocator(e,r){return w2.test(e.reference)?!!B2.test(e.reference):!1}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){return[Y.convertDescriptorToLocator(e)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await Ye.releaseAfterUseAsync(async()=>await Nt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var dgt={fetchers:[v2],resolvers:[D2]},mgt=dgt;var QH={};Yt(QH,{InitCommand:()=>fh,default:()=>Egt});Ke();Ke();bt();_t();var fh=class extends ct{constructor(){super(...arguments);this.private=fe.Boolean("-p,--private",!1,{description:"Initialize a private package"});this.workspace=fe.Boolean("-w,--workspace",!1,{description:"Initialize a workspace root with a `packages/` directory"});this.install=fe.String("-i,--install",!1,{tolerateBoolean:!0,description:"Initialize a package with a specific bundle that will be locked in the project"});this.name=fe.String("-n,--name",{description:"Initialize a package with the given name"});this.usev2=fe.Boolean("-2",!1,{hidden:!0});this.yes=fe.Boolean("-y,--yes",{hidden:!0})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),o=typeof this.install=="string"?this.install:this.usev2||this.install===!0?"latest":null;return o!==null?await this.executeProxy(r,o):await this.executeRegular(r)}async executeProxy(r,o){if(r.projectCwd!==null&&r.projectCwd!==this.context.cwd)throw new ot("Cannot use the --install flag from within a project subdirectory");ae.existsSync(this.context.cwd)||await ae.mkdirPromise(this.context.cwd,{recursive:!0});let a=V.join(this.context.cwd,r.get("lockfileFilename"));ae.existsSync(a)||await ae.writeFilePromise(a,"");let n=await this.cli.run(["set","version",o],{quiet:!0});if(n!==0)return n;let u=[];return this.private&&u.push("-p"),this.workspace&&u.push("-w"),this.name&&u.push(`-n=${this.name}`),this.yes&&u.push("-y"),await ae.mktempPromise(async A=>{let{code:p}=await Mr.pipevp("yarn",["init",...u],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await sn.makeScriptEnv({binFolder:A})});return p})}async executeRegular(r){let o=null;try{o=(await St.find(r,this.context.cwd)).project}catch{o=null}ae.existsSync(this.context.cwd)||await ae.mkdirPromise(this.context.cwd,{recursive:!0});let a=await Nt.tryFind(this.context.cwd),n=a??new Nt,u=Object.fromEntries(r.get("initFields").entries());n.load(u),n.name=n.name??Y.makeIdent(r.get("initScope"),this.name??V.basename(this.context.cwd)),n.packageManager=On&&Ye.isTaggedYarnVersion(On)?`yarn@${On}`:null,(!a&&this.workspace||this.private)&&(n.private=!0),this.workspace&&n.workspaceDefinitions.length===0&&(await ae.mkdirPromise(V.join(this.context.cwd,"packages"),{recursive:!0}),n.workspaceDefinitions=[{pattern:"packages/*"}]);let A={};n.exportTo(A);let p=V.join(this.context.cwd,Nt.fileName);await ae.changeFilePromise(p,`${JSON.stringify(A,null,2)} | 551 | `,prefix:Y.prettyLocator(a.project.configuration,r),report:a.report}),{code:_}=await Mr.pipevp(process.execPath,["--require",ue.fromPortablePath(A),ue.fromPortablePath(o),Y.stringifyIdent(r)],{cwd:e,env:u,stdin:null,stdout:R,stderr:L});if(_!==0)throw oe.detachTemp(p),new Error(`Package generation failed (exit code ${_}, logs can be found here: ${ye.pretty(a.project.configuration,h,ye.Type.PATH)})`)})})}};Ke();Ke();var vgt=2,E2=class{supportsDescriptor(e,r){return!!e.range.startsWith(hA)}supportsLocator(e,r){return!!e.reference.startsWith(hA)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return Y.bindDescriptor(e,{locator:Y.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=vH(e.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let u=await m2(Y.makeRange({protocol:hA,source:a,selector:a,params:{locator:Y.stringifyLocator(n)}}),hA,o.fetchOptions),A=bn.makeHash(`${vgt}`,u).slice(0,6);return[DH(e,{parentLocator:n,path:a,generatorHash:A,protocol:hA})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await We.releaseAfterUseAsync(async()=>await Nt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var Dgt={fetchers:[y2],resolvers:[E2]},Sgt=Dgt;var xH={};Yt(xH,{FileFetcher:()=>B2,FileResolver:()=>v2,TarballFileFetcher:()=>D2,TarballFileResolver:()=>S2,default:()=>bgt,fileUtils:()=>sm});Ke();St();var CC=/^(?:[a-zA-Z]:[\\/]|\.{0,2}\/)/,C2=/^[^?]*\.(?:tar\.gz|tgz)(?:::.*)?$/,Mi="file:";var sm={};Yt(sm,{fetchArchiveFromLocator:()=>w2,makeArchiveFromLocator:()=>gQ,makeBufferFromLocator:()=>PH,makeLocator:()=>IC,makeSpec:()=>Mme,parseSpec:()=>I2});Ke();St();function I2(t){let{params:e,selector:r}=Y.parseRange(t),o=ue.toPortablePath(r);return{parentLocator:e&&typeof e.locator=="string"?Y.parseLocator(e.locator):null,path:o}}function Mme({parentLocator:t,path:e,hash:r,protocol:o}){let a=t!==null?{locator:Y.stringifyLocator(t)}:{},n=typeof r<"u"?{hash:r}:{};return Y.makeRange({protocol:o,source:e,selector:e,params:{...n,...a}})}function IC(t,{parentLocator:e,path:r,hash:o,protocol:a}){return Y.makeLocator(t,Mme({parentLocator:e,path:r,hash:o,protocol:a}))}async function w2(t,e){let{parentLocator:r,path:o}=Y.parseFileStyleRange(t.reference,{protocol:Mi}),a=J.isAbsolute(o)?{packageFs:new An(wt.root),prefixPath:wt.dot,localPath:wt.root}:await e.fetcher.fetch(r,e),n=a.localPath?{packageFs:new An(wt.root),prefixPath:J.relative(wt.root,a.localPath)}:a;a!==n&&a.releaseFs&&a.releaseFs();let u=n.packageFs,A=J.join(n.prefixPath,o);return await We.releaseAfterUseAsync(async()=>await u.readFilePromise(A),n.releaseFs)}async function gQ(t,{protocol:e,fetchOptions:r,inMemory:o=!1}){let{parentLocator:a,path:n}=Y.parseFileStyleRange(t.reference,{protocol:e}),u=J.isAbsolute(n)?{packageFs:new An(wt.root),prefixPath:wt.dot,localPath:wt.root}:await r.fetcher.fetch(a,r),A=u.localPath?{packageFs:new An(wt.root),prefixPath:J.relative(wt.root,u.localPath)}:u;u!==A&&u.releaseFs&&u.releaseFs();let p=A.packageFs,h=J.join(A.prefixPath,n);return await We.releaseAfterUseAsync(async()=>await Ji.makeArchiveFromDirectory(h,{baseFs:p,prefixPath:Y.getIdentVendorPath(t),compressionLevel:r.project.configuration.get("compressionLevel"),inMemory:o}),A.releaseFs)}async function PH(t,{protocol:e,fetchOptions:r}){return(await gQ(t,{protocol:e,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var B2=class{supports(e,r){return!!e.reference.startsWith(Mi)}getLocalPath(e,r){let{parentLocator:o,path:a}=Y.parseFileStyleRange(e.reference,{protocol:Mi});if(J.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:J.resolve(n,a)}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:u}}async fetchFromDisk(e,r){return gQ(e,{protocol:Mi,fetchOptions:r})}};Ke();Ke();var Pgt=2,v2=class{supportsDescriptor(e,r){return e.range.match(CC)?!0:!!e.range.startsWith(Mi)}supportsLocator(e,r){return!!e.reference.startsWith(Mi)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return CC.test(e.range)&&(e=Y.makeDescriptor(e,`${Mi}${e.range}`)),Y.bindDescriptor(e,{locator:Y.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=I2(e.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let u=await PH(Y.makeLocator(e,Y.makeRange({protocol:Mi,source:a,selector:a,params:{locator:Y.stringifyLocator(n)}})),{protocol:Mi,fetchOptions:o.fetchOptions}),A=bn.makeHash(`${Pgt}`,u).slice(0,6);return[IC(e,{parentLocator:n,path:a,hash:A,protocol:Mi})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await We.releaseAfterUseAsync(async()=>await Nt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};Ke();var D2=class{supports(e,r){return C2.test(e.reference)?!!e.reference.startsWith(Mi):!1}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),checksum:u}}async fetchFromDisk(e,r){let o=await w2(e,r);return await Ji.convertToZip(o,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:Y.getIdentVendorPath(e),stripComponents:1})}};Ke();Ke();Ke();var S2=class{supportsDescriptor(e,r){return C2.test(e.range)?!!(e.range.startsWith(Mi)||CC.test(e.range)):!1}supportsLocator(e,r){return C2.test(e.reference)?!!e.reference.startsWith(Mi):!1}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return CC.test(e.range)&&(e=Y.makeDescriptor(e,`${Mi}${e.range}`)),Y.bindDescriptor(e,{locator:Y.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{path:a,parentLocator:n}=I2(e.range);if(n===null)throw new Error("Assertion failed: The descriptor should have been bound");let u=IC(e,{parentLocator:n,path:a,hash:"",protocol:Mi}),A=await w2(u,o.fetchOptions),p=bn.makeHash(A).slice(0,6);return[IC(e,{parentLocator:n,path:a,hash:p,protocol:Mi})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await We.releaseAfterUseAsync(async()=>await Nt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var xgt={fetchers:[D2,B2],resolvers:[S2,v2]},bgt=xgt;var kH={};Yt(kH,{GithubFetcher:()=>P2,default:()=>kgt,githubUtils:()=>dQ});Ke();St();var dQ={};Yt(dQ,{invalidGithubUrlMessage:()=>Hme,isGithubUrl:()=>bH,parseGithubUrl:()=>QH});var Ume=tt(Ie("querystring")),_me=[/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+)\/tarball\/([^/#]+)(?:#(.*))?$/,/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+?)(?:\.git)?(?:#(.*))?$/];function bH(t){return t?_me.some(e=>!!t.match(e)):!1}function QH(t){let e;for(let A of _me)if(e=t.match(A),e)break;if(!e)throw new Error(Hme(t));let[,r,o,a,n="master"]=e,{commit:u}=Ume.default.parse(n);return n=u||n.replace(/[^:]*:/,""),{auth:r,username:o,reponame:a,treeish:n}}function Hme(t){return`Input cannot be parsed as a valid GitHub URL ('${t}').`}var P2=class{supports(e,r){return!!bH(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from GitHub`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let o=await ln.get(this.getLocatorUrl(e,r),{configuration:r.project.configuration});return await oe.mktempPromise(async a=>{let n=new An(a);await Ji.extractArchiveTo(o,n,{stripComponents:1});let u=ea.splitRepoUrl(e.reference),A=J.join(a,"package.tgz");await sn.prepareExternalProject(a,A,{configuration:r.project.configuration,report:r.report,workspace:u.extra.workspace,locator:e});let p=await oe.readFilePromise(A);return await Ji.convertToZip(p,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:Y.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,r){let{auth:o,username:a,reponame:n,treeish:u}=QH(e.reference);return`https://${o?`${o}@`:""}github.com/${a}/${n}/archive/${u}.tar.gz`}};var Qgt={hooks:{async fetchHostedRepository(t,e,r){if(t!==null)return t;let o=new P2;if(!o.supports(e,r))return null;try{return await o.fetch(e,r)}catch{return null}}}},kgt=Qgt;var FH={};Yt(FH,{TarballHttpFetcher:()=>Q2,TarballHttpResolver:()=>k2,default:()=>Rgt});Ke();var x2=/^[^?]*\.(?:tar\.gz|tgz)(?:\?.*)?$/,b2=/^https?:/;var Q2=class{supports(e,r){return x2.test(e.reference)?!!b2.test(e.reference):!1}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let o=await ln.get(e.reference,{configuration:r.project.configuration});return await Ji.convertToZip(o,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:Y.getIdentVendorPath(e),stripComponents:1})}};Ke();Ke();var k2=class{supportsDescriptor(e,r){return x2.test(e.range)?!!b2.test(e.range):!1}supportsLocator(e,r){return x2.test(e.reference)?!!b2.test(e.reference):!1}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){return[Y.convertDescriptorToLocator(e)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await We.releaseAfterUseAsync(async()=>await Nt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"HARD",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var Fgt={fetchers:[Q2],resolvers:[k2]},Rgt=Fgt;var RH={};Yt(RH,{InitCommand:()=>hh,default:()=>Ngt});Ke();Ke();St();_t();var hh=class extends ct{constructor(){super(...arguments);this.private=fe.Boolean("-p,--private",!1,{description:"Initialize a private package"});this.workspace=fe.Boolean("-w,--workspace",!1,{description:"Initialize a workspace root with a `packages/` directory"});this.install=fe.String("-i,--install",!1,{tolerateBoolean:!0,description:"Initialize a package with a specific bundle that will be locked in the project"});this.name=fe.String("-n,--name",{description:"Initialize a package with the given name"});this.usev2=fe.Boolean("-2",!1,{hidden:!0});this.yes=fe.Boolean("-y,--yes",{hidden:!0})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),o=typeof this.install=="string"?this.install:this.usev2||this.install===!0?"latest":null;return o!==null?await this.executeProxy(r,o):await this.executeRegular(r)}async executeProxy(r,o){if(r.projectCwd!==null&&r.projectCwd!==this.context.cwd)throw new ot("Cannot use the --install flag from within a project subdirectory");oe.existsSync(this.context.cwd)||await oe.mkdirPromise(this.context.cwd,{recursive:!0});let a=J.join(this.context.cwd,r.get("lockfileFilename"));oe.existsSync(a)||await oe.writeFilePromise(a,"");let n=await this.cli.run(["set","version",o],{quiet:!0});if(n!==0)return n;let u=[];return this.private&&u.push("-p"),this.workspace&&u.push("-w"),this.name&&u.push(`-n=${this.name}`),this.yes&&u.push("-y"),await oe.mktempPromise(async A=>{let{code:p}=await Mr.pipevp("yarn",["init",...u],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await sn.makeScriptEnv({binFolder:A})});return p})}async executeRegular(r){let o=null;try{o=(await Pt.find(r,this.context.cwd)).project}catch{o=null}oe.existsSync(this.context.cwd)||await oe.mkdirPromise(this.context.cwd,{recursive:!0});let a=await Nt.tryFind(this.context.cwd),n=a??new Nt,u=Object.fromEntries(r.get("initFields").entries());n.load(u),n.name=n.name??Y.makeIdent(r.get("initScope"),this.name??J.basename(this.context.cwd)),n.packageManager=On&&We.isTaggedYarnVersion(On)?`yarn@${On}`:null,(!a&&this.workspace||this.private)&&(n.private=!0),this.workspace&&n.workspaceDefinitions.length===0&&(await oe.mkdirPromise(J.join(this.context.cwd,"packages"),{recursive:!0}),n.workspaceDefinitions=[{pattern:"packages/*"}]);let A={};n.exportTo(A);let p=J.join(this.context.cwd,Nt.fileName);await oe.changeFilePromise(p,`${JSON.stringify(A,null,2)} |
552 | `,{automaticNewlines:!0});let h=[p],C=V.join(this.context.cwd,"README.md");if(ae.existsSync(C)||(await ae.writeFilePromise(C,`# ${Y.stringifyIdent(n.name)} | 552 | `,{automaticNewlines:!0});let h=[p],C=J.join(this.context.cwd,"README.md");if(oe.existsSync(C)||(await oe.writeFilePromise(C,`# ${Y.stringifyIdent(n.name)} |
553 | `),h.push(C)),!o||o.cwd===this.context.cwd){let w=V.join(this.context.cwd,Lr.lockfile);ae.existsSync(w)||(await ae.writeFilePromise(w,""),h.push(w));let b=[".yarn/*","!.yarn/patches","!.yarn/plugins","!.yarn/releases","!.yarn/sdks","!.yarn/versions","","# Swap the comments on the following lines if you wish to use zero-installs","# In that case, don't forget to run `yarn config set enableGlobalCache false`!","# Documentation here: https://yarnpkg.com/features/zero-installs","","#!.yarn/cache",".pnp.*"].map(pe=>`${pe} | 553 | `),h.push(C)),!o||o.cwd===this.context.cwd){let w=J.join(this.context.cwd,Lr.lockfile);oe.existsSync(w)||(await oe.writeFilePromise(w,""),h.push(w));let b=[".yarn/*","!.yarn/patches","!.yarn/plugins","!.yarn/releases","!.yarn/sdks","!.yarn/versions","","# Swap the comments on the following lines if you wish to use zero-installs","# In that case, don't forget to run `yarn config set enableGlobalCache false`!","# Documentation here: https://yarnpkg.com/features/zero-installs","","#!.yarn/cache",".pnp.*"].map(he=>`${he} |
554 | `).join(""),E=V.join(this.context.cwd,".gitignore");ae.existsSync(E)||(await ae.writeFilePromise(E,b),h.push(E));let L=["/.yarn/** linguist-vendored","/.yarn/releases/* binary","/.yarn/plugins/**/* binary","/.pnp.* binary linguist-generated"].map(pe=>`${pe} | 554 | `).join(""),E=J.join(this.context.cwd,".gitignore");oe.existsSync(E)||(await oe.writeFilePromise(E,b),h.push(E));let L=["/.yarn/** linguist-vendored","/.yarn/releases/* binary","/.yarn/plugins/**/* binary","/.pnp.* binary linguist-generated"].map(he=>`${he} |
555 | `).join(""),_=V.join(this.context.cwd,".gitattributes");ae.existsSync(_)||(await ae.writeFilePromise(_,L),h.push(_));let J={["*"]:{endOfLine:"lf",insertFinalNewline:!0},["*.{js,json,yml}"]:{charset:"utf-8",indentStyle:"space",indentSize:2}};Ye.mergeIntoTarget(J,r.get("initEditorConfig"));let re=`root = true | 555 | `).join(""),_=J.join(this.context.cwd,".gitattributes");oe.existsSync(_)||(await oe.writeFilePromise(_,L),h.push(_));let V={["*"]:{endOfLine:"lf",insertFinalNewline:!0},["*.{js,json,yml}"]:{charset:"utf-8",indentStyle:"space",indentSize:2}};We.mergeIntoTarget(V,r.get("initEditorConfig"));let re=`root = true |
556 | `;for(let[pe,he]of Object.entries(J)){re+=` | 556 | `;for(let[he,pe]of Object.entries(V)){re+=` |
557 | [${pe}] | 557 | [${he}] |
558 | `;for(let[ve,ge]of Object.entries(he)){let le=ve.replace(/[A-Z]/g,Pe=>`_${Pe.toLowerCase()}`);re+=`${le} = ${ge} | 558 | `;for(let[De,ge]of Object.entries(pe)){let le=De.replace(/[A-Z]/g,Pe=>`_${Pe.toLowerCase()}`);re+=`${le} = ${ge} |
559 | `}}let oe=V.join(this.context.cwd,".editorconfig");ae.existsSync(oe)||(await ae.writeFilePromise(oe,re),h.push(oe)),await this.cli.run(["install"],{quiet:!0}),ae.existsSync(V.join(this.context.cwd,".git"))||(await Mr.execvp("git",["init"],{cwd:this.context.cwd}),await Mr.execvp("git",["add","--",...h],{cwd:this.context.cwd}),await Mr.execvp("git",["commit","--allow-empty","-m","First commit"],{cwd:this.context.cwd}))}}};fh.paths=[["init"]],fh.usage=it.Usage({description:"create a new package",details:"\n This command will setup a new package in your local directory.\n\n If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\n\n If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\n\n If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\n\n The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\n ",examples:[["Create a new package in the local directory","yarn init"],["Create a new private package in the local directory","yarn init -p"],["Create a new package and store the Yarn release inside","yarn init -i=latest"],["Create a new private package and defines it as a workspace root","yarn init -w"]]});var ygt={configuration:{initScope:{description:"Scope used when creating packages via the init command",type:"STRING",default:null},initFields:{description:"Additional fields to set when creating packages via the init command",type:"MAP",valueDefinition:{description:"",type:"ANY"}},initEditorConfig:{description:"Extra rules to define in the generator editorconfig",type:"MAP",valueDefinition:{description:"",type:"ANY"}}},commands:[fh]},Egt=ygt;var Fq={};Yt(Fq,{SearchCommand:()=>mh,UpgradeInteractiveCommand:()=>Eh,default:()=>aIt});Ke();var Tme=tt(Ie("os"));function mC({stdout:t}){if(Tme.default.endianness()==="BE")throw new Error("Interactive commands cannot be used on big-endian systems because ink depends on yoga-layout-prebuilt which only supports little-endian architectures");if(!t.isTTY)throw new Error("Interactive commands can only be used inside a TTY environment")}_t();var Yye=tt(JH()),VH={appId:"OFCNCOG2CU",apiKey:"6fe4476ee5a1832882e326b506d14126",indexName:"npm-search"},dmt=(0,Yye.default)(VH.appId,VH.apiKey).initIndex(VH.indexName),zH=async(t,e=0)=>await dmt.search(t,{analyticsTags:["yarn-plugin-interactive-tools"],attributesToRetrieve:["name","version","owner","repository","humanDownloadsLast30Days"],page:e,hitsPerPage:10});var vB=["regular","dev","peer"],mh=class extends ct{async execute(){mC(this.context);let{Gem:e}=await Promise.resolve().then(()=>(JQ(),Iq)),{ScrollableItems:r}=await Promise.resolve().then(()=>(ZQ(),XQ)),{useKeypress:o}=await Promise.resolve().then(()=>(IB(),awe)),{useMinistore:a}=await Promise.resolve().then(()=>(Pq(),Sq)),{renderForm:n}=await Promise.resolve().then(()=>(rk(),tk)),{default:u}=await Promise.resolve().then(()=>tt(mwe())),{Box:A,Text:p}=await Promise.resolve().then(()=>tt(oc())),{default:h,useEffect:C,useState:w}=await Promise.resolve().then(()=>tt(en())),v=await Xe.find(this.context.cwd,this.context.plugins),b=()=>h.createElement(A,{flexDirection:"row"},h.createElement(A,{flexDirection:"column",width:48},h.createElement(A,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"<up>"),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"<down>")," to move between packages.")),h.createElement(A,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"<space>")," to select a package.")),h.createElement(A,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"<space>")," again to change the target."))),h.createElement(A,{flexDirection:"column"},h.createElement(A,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"<enter>")," to install the selected packages.")),h.createElement(A,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"<ctrl+c>")," to abort.")))),E=()=>h.createElement(h.Fragment,null,h.createElement(A,{width:15},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Owner")),h.createElement(A,{width:11},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Version")),h.createElement(A,{width:10},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Downloads"))),R=()=>h.createElement(A,{width:17},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Target")),L=({hit:ge,active:le})=>{let[Pe,g]=a(ge.name,null);o({active:le},(de,ne)=>{if(ne.name!=="space")return;if(!Pe){g(vB[0]);return}let Z=vB.indexOf(Pe)+1;Z===vB.length?g(null):g(vB[Z])},[Pe,g]);let De=Y.parseIdent(ge.name),Ee=Y.prettyIdent(v,De);return h.createElement(A,null,h.createElement(A,{width:45},h.createElement(p,{bold:!0,wrap:"wrap"},Ee)),h.createElement(A,{width:14,marginLeft:1},h.createElement(p,{bold:!0,wrap:"truncate"},ge.owner.name)),h.createElement(A,{width:10,marginLeft:1},h.createElement(p,{italic:!0,wrap:"truncate"},ge.version)),h.createElement(A,{width:16,marginLeft:1},h.createElement(p,null,ge.humanDownloadsLast30Days)))},_=({name:ge,active:le})=>{let[Pe]=a(ge,null),g=Y.parseIdent(ge);return h.createElement(A,null,h.createElement(A,{width:47},h.createElement(p,{bold:!0}," - ",Y.prettyIdent(v,g))),vB.map(De=>h.createElement(A,{key:De,width:14,marginLeft:1},h.createElement(p,null," ",h.createElement(e,{active:Pe===De})," ",h.createElement(p,{bold:!0},De)))))},J=()=>h.createElement(A,{marginTop:1},h.createElement(p,null,"Powered by Algolia.")),oe=await n(({useSubmit:ge})=>{let le=a();ge(le);let Pe=Array.from(le.keys()).filter(H=>le.get(H)!==null),[g,De]=w(""),[Ee,de]=w(0),[ne,Z]=w([]),me=H=>{H.match(/\t| /)||De(H)},be=async()=>{de(0);let H=await zH(g);H.query===g&&Z(H.hits)},ut=async()=>{let H=await zH(g,Ee+1);H.query===g&&H.page-1===Ee&&(de(H.page),Z([...ne,...H.hits]))};return C(()=>{g?be():Z([])},[g]),h.createElement(A,{flexDirection:"column"},h.createElement(b,null),h.createElement(A,{flexDirection:"row",marginTop:1},h.createElement(p,{bold:!0},"Search: "),h.createElement(A,{width:41},h.createElement(u,{value:g,onChange:me,placeholder:"i.e. babel, webpack, react...",showCursor:!1})),h.createElement(E,null)),ne.length?h.createElement(r,{radius:2,loop:!1,children:ne.map(H=>h.createElement(L,{key:H.name,hit:H,active:!1})),willReachEnd:ut}):h.createElement(p,{color:"gray"},"Start typing..."),h.createElement(A,{flexDirection:"row",marginTop:1},h.createElement(A,{width:49},h.createElement(p,{bold:!0},"Selected:")),h.createElement(R,null)),Pe.length?Pe.map(H=>h.createElement(_,{key:H,name:H,active:!1})):h.createElement(p,{color:"gray"},"No selected packages..."),h.createElement(J,null))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof oe>"u")return 1;let pe=Array.from(oe.keys()).filter(ge=>oe.get(ge)==="regular"),he=Array.from(oe.keys()).filter(ge=>oe.get(ge)==="dev"),ve=Array.from(oe.keys()).filter(ge=>oe.get(ge)==="peer");return pe.length&&await this.cli.run(["add",...pe]),he.length&&await this.cli.run(["add","--dev",...he]),ve&&await this.cli.run(["add","--peer",...ve]),0}};mh.paths=[["search"]],mh.usage=it.Usage({category:"Interactive commands",description:"open the search interface",details:` | 559 | `}}let ae=J.join(this.context.cwd,".editorconfig");oe.existsSync(ae)||(await oe.writeFilePromise(ae,re),h.push(ae)),await this.cli.run(["install"],{quiet:!0}),oe.existsSync(J.join(this.context.cwd,".git"))||(await Mr.execvp("git",["init"],{cwd:this.context.cwd}),await Mr.execvp("git",["add","--",...h],{cwd:this.context.cwd}),await Mr.execvp("git",["commit","--allow-empty","-m","First commit"],{cwd:this.context.cwd}))}}};hh.paths=[["init"]],hh.usage=it.Usage({description:"create a new package",details:"\n This command will setup a new package in your local directory.\n\n If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\n\n If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\n\n If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\n\n The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\n ",examples:[["Create a new package in the local directory","yarn init"],["Create a new private package in the local directory","yarn init -p"],["Create a new package and store the Yarn release inside","yarn init -i=latest"],["Create a new private package and defines it as a workspace root","yarn init -w"]]});var Tgt={configuration:{initScope:{description:"Scope used when creating packages via the init command",type:"STRING",default:null},initFields:{description:"Additional fields to set when creating packages via the init command",type:"MAP",valueDefinition:{description:"",type:"ANY"}},initEditorConfig:{description:"Extra rules to define in the generator editorconfig",type:"MAP",valueDefinition:{description:"",type:"ANY"}}},commands:[hh]},Ngt=Tgt;var Nq={};Yt(Nq,{SearchCommand:()=>Eh,UpgradeInteractiveCommand:()=>Ih,default:()=>BIt});Ke();var qme=tt(Ie("os"));function wC({stdout:t}){if(qme.default.endianness()==="BE")throw new Error("Interactive commands cannot be used on big-endian systems because ink depends on yoga-layout-prebuilt which only supports little-endian architectures");if(!t.isTTY)throw new Error("Interactive commands can only be used inside a TTY environment")}_t();var eEe=tt(XH()),ZH={appId:"OFCNCOG2CU",apiKey:"6fe4476ee5a1832882e326b506d14126",indexName:"npm-search"},Fmt=(0,eEe.default)(ZH.appId,ZH.apiKey).initIndex(ZH.indexName),$H=async(t,e=0)=>await Fmt.search(t,{analyticsTags:["yarn-plugin-interactive-tools"],attributesToRetrieve:["name","version","owner","repository","humanDownloadsLast30Days"],page:e,hitsPerPage:10});var QB=["regular","dev","peer"],Eh=class extends ct{async execute(){wC(this.context);let{Gem:e}=await Promise.resolve().then(()=>(ik(),vq)),{ScrollableItems:r}=await Promise.resolve().then(()=>(lk(),ak)),{useKeypress:o}=await Promise.resolve().then(()=>(PB(),gwe)),{useMinistore:a}=await Promise.resolve().then(()=>(Qq(),bq)),{renderForm:n}=await Promise.resolve().then(()=>(fk(),Ak)),{default:u}=await Promise.resolve().then(()=>tt(Dwe())),{Box:A,Text:p}=await Promise.resolve().then(()=>tt(uc())),{default:h,useEffect:C,useState:w}=await Promise.resolve().then(()=>tt(en())),v=await Xe.find(this.context.cwd,this.context.plugins),b=()=>h.createElement(A,{flexDirection:"row"},h.createElement(A,{flexDirection:"column",width:48},h.createElement(A,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"<up>"),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"<down>")," to move between packages.")),h.createElement(A,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"<space>")," to select a package.")),h.createElement(A,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"<space>")," again to change the target."))),h.createElement(A,{flexDirection:"column"},h.createElement(A,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"<enter>")," to install the selected packages.")),h.createElement(A,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"<ctrl+c>")," to abort.")))),E=()=>h.createElement(h.Fragment,null,h.createElement(A,{width:15},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Owner")),h.createElement(A,{width:11},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Version")),h.createElement(A,{width:10},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Downloads"))),R=()=>h.createElement(A,{width:17},h.createElement(p,{bold:!0,underline:!0,color:"gray"},"Target")),L=({hit:ge,active:le})=>{let[Pe,g]=a(ge.name,null);o({active:le},(de,ne)=>{if(ne.name!=="space")return;if(!Pe){g(QB[0]);return}let Z=QB.indexOf(Pe)+1;Z===QB.length?g(null):g(QB[Z])},[Pe,g]);let ve=Y.parseIdent(ge.name),Ee=Y.prettyIdent(v,ve);return h.createElement(A,null,h.createElement(A,{width:45},h.createElement(p,{bold:!0,wrap:"wrap"},Ee)),h.createElement(A,{width:14,marginLeft:1},h.createElement(p,{bold:!0,wrap:"truncate"},ge.owner.name)),h.createElement(A,{width:10,marginLeft:1},h.createElement(p,{italic:!0,wrap:"truncate"},ge.version)),h.createElement(A,{width:16,marginLeft:1},h.createElement(p,null,ge.humanDownloadsLast30Days)))},_=({name:ge,active:le})=>{let[Pe]=a(ge,null),g=Y.parseIdent(ge);return h.createElement(A,null,h.createElement(A,{width:47},h.createElement(p,{bold:!0}," - ",Y.prettyIdent(v,g))),QB.map(ve=>h.createElement(A,{key:ve,width:14,marginLeft:1},h.createElement(p,null," ",h.createElement(e,{active:Pe===ve})," ",h.createElement(p,{bold:!0},ve)))))},V=()=>h.createElement(A,{marginTop:1},h.createElement(p,null,"Powered by Algolia.")),ae=await n(({useSubmit:ge})=>{let le=a();ge(le);let Pe=Array.from(le.keys()).filter(H=>le.get(H)!==null),[g,ve]=w(""),[Ee,de]=w(0),[ne,Z]=w([]),me=H=>{H.match(/\t| /)||ve(H)},be=async()=>{de(0);let H=await $H(g);H.query===g&&Z(H.hits)},ut=async()=>{let H=await $H(g,Ee+1);H.query===g&&H.page-1===Ee&&(de(H.page),Z([...ne,...H.hits]))};return C(()=>{g?be():Z([])},[g]),h.createElement(A,{flexDirection:"column"},h.createElement(b,null),h.createElement(A,{flexDirection:"row",marginTop:1},h.createElement(p,{bold:!0},"Search: "),h.createElement(A,{width:41},h.createElement(u,{value:g,onChange:me,placeholder:"i.e. babel, webpack, react...",showCursor:!1})),h.createElement(E,null)),ne.length?h.createElement(r,{radius:2,loop:!1,children:ne.map(H=>h.createElement(L,{key:H.name,hit:H,active:!1})),willReachEnd:ut}):h.createElement(p,{color:"gray"},"Start typing..."),h.createElement(A,{flexDirection:"row",marginTop:1},h.createElement(A,{width:49},h.createElement(p,{bold:!0},"Selected:")),h.createElement(R,null)),Pe.length?Pe.map(H=>h.createElement(_,{key:H,name:H,active:!1})):h.createElement(p,{color:"gray"},"No selected packages..."),h.createElement(V,null))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof ae>"u")return 1;let he=Array.from(ae.keys()).filter(ge=>ae.get(ge)==="regular"),pe=Array.from(ae.keys()).filter(ge=>ae.get(ge)==="dev"),De=Array.from(ae.keys()).filter(ge=>ae.get(ge)==="peer");return he.length&&await this.cli.run(["add",...he]),pe.length&&await this.cli.run(["add","--dev",...pe]),De&&await this.cli.run(["add","--peer",...De]),0}};Eh.paths=[["search"]],Eh.usage=it.Usage({category:"Interactive commands",description:"open the search interface",details:` |
560 | This command opens a fullscreen terminal interface where you can search for and install packages from the npm registry. | 560 | This command opens a fullscreen terminal interface where you can search for and install packages from the npm registry. |
561 | `,examples:[["Open the search window","yarn search"]]});Ke();_t();g_();var vwe=tt(ii()),Bwe=/^((?:[\^~]|>=?)?)([0-9]+)(\.[0-9]+)(\.[0-9]+)((?:-\S+)?)$/,Dwe=(t,e)=>t.length>0?[t.slice(0,e)].concat(Dwe(t.slice(e),e)):[],Eh=class extends ct{async execute(){mC(this.context);let{ItemOptions:e}=await Promise.resolve().then(()=>(wwe(),Iwe)),{Pad:r}=await Promise.resolve().then(()=>(kq(),Cwe)),{ScrollableItems:o}=await Promise.resolve().then(()=>(ZQ(),XQ)),{useMinistore:a}=await Promise.resolve().then(()=>(Pq(),Sq)),{renderForm:n}=await Promise.resolve().then(()=>(rk(),tk)),{Box:u,Text:A}=await Promise.resolve().then(()=>tt(oc())),{default:p,useEffect:h,useRef:C,useState:w}=await Promise.resolve().then(()=>tt(en())),v=await Xe.find(this.context.cwd,this.context.plugins),{project:b,workspace:E}=await St.find(v,this.context.cwd),R=await Ur.find(v);if(!E)throw new er(b.cwd,this.context.cwd);await b.restoreInstallState({restoreResolutions:!1});let L=this.context.stdout.rows-7,_=(Ee,de)=>{let ne=Bpe(Ee,de),Z="";for(let me of ne)me.added?Z+=ye.pretty(v,me.value,"green"):me.removed||(Z+=me.value);return Z},J=(Ee,de)=>{if(Ee===de)return de;let ne=Y.parseRange(Ee),Z=Y.parseRange(de),me=ne.selector.match(Bwe),be=Z.selector.match(Bwe);if(!me||!be)return _(Ee,de);let ut=["gray","red","yellow","green","magenta"],H=null,yt="";for(let Me=1;Me<ut.length;++Me)H!==null||me[Me]!==be[Me]?(H===null&&(H=ut[Me-1]),yt+=ye.pretty(v,be[Me],H)):yt+=be[Me];return yt},re=async(Ee,de,ne)=>{let Z=await Zc.fetchDescriptorFrom(Ee,ne,{project:b,cache:R,preserveModifier:de,workspace:E});return Z!==null?Z.range:Ee.range},oe=async Ee=>{let de=vwe.default.valid(Ee.range)?`^${Ee.range}`:Ee.range,[ne,Z]=await Promise.all([re(Ee,Ee.range,de).catch(()=>null),re(Ee,Ee.range,"latest").catch(()=>null)]),me=[{value:null,label:Ee.range}];return ne&&ne!==Ee.range?me.push({value:ne,label:J(Ee.range,ne)}):me.push({value:null,label:""}),Z&&Z!==ne&&Z!==Ee.range?me.push({value:Z,label:J(Ee.range,Z)}):me.push({value:null,label:""}),me},pe=()=>p.createElement(u,{flexDirection:"row"},p.createElement(u,{flexDirection:"column",width:49},p.createElement(u,{marginLeft:1},p.createElement(A,null,"Press ",p.createElement(A,{bold:!0,color:"cyanBright"},"<up>"),"/",p.createElement(A,{bold:!0,color:"cyanBright"},"<down>")," to select packages.")),p.createElement(u,{marginLeft:1},p.createElement(A,null,"Press ",p.createElement(A,{bold:!0,color:"cyanBright"},"<left>"),"/",p.createElement(A,{bold:!0,color:"cyanBright"},"<right>")," to select versions."))),p.createElement(u,{flexDirection:"column"},p.createElement(u,{marginLeft:1},p.createElement(A,null,"Press ",p.createElement(A,{bold:!0,color:"cyanBright"},"<enter>")," to install.")),p.createElement(u,{marginLeft:1},p.createElement(A,null,"Press ",p.createElement(A,{bold:!0,color:"cyanBright"},"<ctrl+c>")," to abort.")))),he=()=>p.createElement(u,{flexDirection:"row",paddingTop:1,paddingBottom:1},p.createElement(u,{width:50},p.createElement(A,{bold:!0},p.createElement(A,{color:"greenBright"},"?")," Pick the packages you want to upgrade.")),p.createElement(u,{width:17},p.createElement(A,{bold:!0,underline:!0,color:"gray"},"Current")),p.createElement(u,{width:17},p.createElement(A,{bold:!0,underline:!0,color:"gray"},"Range")),p.createElement(u,{width:17},p.createElement(A,{bold:!0,underline:!0,color:"gray"},"Latest"))),ve=({active:Ee,descriptor:de,suggestions:ne})=>{let[Z,me]=a(de.descriptorHash,null),be=Y.stringifyIdent(de),ut=Math.max(0,45-be.length);return p.createElement(p.Fragment,null,p.createElement(u,null,p.createElement(u,{width:45},p.createElement(A,{bold:!0},Y.prettyIdent(v,de)),p.createElement(r,{active:Ee,length:ut})),p.createElement(e,{active:Ee,options:ne,value:Z,skewer:!0,onChange:me,sizes:[17,17,17]})))},ge=({dependencies:Ee})=>{let[de,ne]=w(Ee.map(()=>null)),Z=C(!0),me=async be=>{let ut=await oe(be);return ut.filter(H=>H.label!=="").length<=1?null:{descriptor:be,suggestions:ut}};return h(()=>()=>{Z.current=!1},[]),h(()=>{let be=Math.trunc(L*1.75),ut=Ee.slice(0,be),H=Ee.slice(be),yt=Dwe(H,L),Me=ut.map(me).reduce(async(Te,Qe)=>{await Te;let Ue=await Qe;Ue!==null&&(!Z.current||ne(je=>{let At=je.findIndex(x=>x===null),Le=[...je];return Le[At]=Ue,Le}))},Promise.resolve());yt.reduce((Te,Qe)=>Promise.all(Qe.map(Ue=>Promise.resolve().then(()=>me(Ue)))).then(async Ue=>{Ue=Ue.filter(je=>je!==null),await Te,Z.current&&ne(je=>{let At=je.findIndex(Le=>Le===null);return je.slice(0,At).concat(Ue).concat(je.slice(At+Ue.length))})}),Me).then(()=>{Z.current&&ne(Te=>Te.filter(Qe=>Qe!==null))})},[]),de.length?p.createElement(o,{radius:L>>1,children:de.map((be,ut)=>be!==null?p.createElement(ve,{key:ut,active:!1,descriptor:be.descriptor,suggestions:be.suggestions}):p.createElement(A,{key:ut},"Loading..."))}):p.createElement(A,null,"No upgrades found")},Pe=await n(({useSubmit:Ee})=>{Ee(a());let de=new Map;for(let Z of b.workspaces)for(let me of["dependencies","devDependencies"])for(let be of Z.manifest[me].values())b.tryWorkspaceByDescriptor(be)===null&&de.set(be.descriptorHash,be);let ne=Ye.sortMap(de.values(),Z=>Y.stringifyDescriptor(Z));return p.createElement(u,{flexDirection:"column"},p.createElement(pe,null),p.createElement(he,null),p.createElement(ge,{dependencies:ne}))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof Pe>"u")return 1;let g=!1;for(let Ee of b.workspaces)for(let de of["dependencies","devDependencies"]){let ne=Ee.manifest[de];for(let Z of ne.values()){let me=Pe.get(Z.descriptorHash);typeof me<"u"&&me!==null&&(ne.set(Z.identHash,Y.makeDescriptor(Z,me)),g=!0)}}return g?(await Ct.start({configuration:v,stdout:this.context.stdout,includeLogs:!this.context.quiet},async Ee=>{await b.install({cache:R,report:Ee})})).exitCode():0}};Eh.paths=[["upgrade-interactive"]],Eh.usage=it.Usage({category:"Interactive commands",description:"open the upgrade interface",details:` | 561 | `,examples:[["Open the search window","yarn search"]]});Ke();_t();y_();var Fwe=tt(si()),kwe=/^((?:[\^~]|>=?)?)([0-9]+)(\.[0-9]+)(\.[0-9]+)((?:-\S+)?)$/,Rwe=(t,e)=>t.length>0?[t.slice(0,e)].concat(Rwe(t.slice(e),e)):[],Ih=class extends ct{async execute(){wC(this.context);let{ItemOptions:e}=await Promise.resolve().then(()=>(Qwe(),bwe)),{Pad:r}=await Promise.resolve().then(()=>(Tq(),xwe)),{ScrollableItems:o}=await Promise.resolve().then(()=>(lk(),ak)),{useMinistore:a}=await Promise.resolve().then(()=>(Qq(),bq)),{renderForm:n}=await Promise.resolve().then(()=>(fk(),Ak)),{Box:u,Text:A}=await Promise.resolve().then(()=>tt(uc())),{default:p,useEffect:h,useRef:C,useState:w}=await Promise.resolve().then(()=>tt(en())),v=await Xe.find(this.context.cwd,this.context.plugins),{project:b,workspace:E}=await Pt.find(v,this.context.cwd),R=await Ur.find(v);if(!E)throw new er(b.cwd,this.context.cwd);await b.restoreInstallState({restoreResolutions:!1});let L=this.context.stdout.rows-7,_=(Ee,de)=>{let ne=kpe(Ee,de),Z="";for(let me of ne)me.added?Z+=ye.pretty(v,me.value,"green"):me.removed||(Z+=me.value);return Z},V=(Ee,de)=>{if(Ee===de)return de;let ne=Y.parseRange(Ee),Z=Y.parseRange(de),me=ne.selector.match(kwe),be=Z.selector.match(kwe);if(!me||!be)return _(Ee,de);let ut=["gray","red","yellow","green","magenta"],H=null,yt="";for(let Me=1;Me<ut.length;++Me)H!==null||me[Me]!==be[Me]?(H===null&&(H=ut[Me-1]),yt+=ye.pretty(v,be[Me],H)):yt+=be[Me];return yt},re=async(Ee,de,ne)=>{let Z=await tu.fetchDescriptorFrom(Ee,ne,{project:b,cache:R,preserveModifier:de,workspace:E});return Z!==null?Z.range:Ee.range},ae=async Ee=>{let de=Fwe.default.valid(Ee.range)?`^${Ee.range}`:Ee.range,[ne,Z]=await Promise.all([re(Ee,Ee.range,de).catch(()=>null),re(Ee,Ee.range,"latest").catch(()=>null)]),me=[{value:null,label:Ee.range}];return ne&&ne!==Ee.range?me.push({value:ne,label:V(Ee.range,ne)}):me.push({value:null,label:""}),Z&&Z!==ne&&Z!==Ee.range?me.push({value:Z,label:V(Ee.range,Z)}):me.push({value:null,label:""}),me},he=()=>p.createElement(u,{flexDirection:"row"},p.createElement(u,{flexDirection:"column",width:49},p.createElement(u,{marginLeft:1},p.createElement(A,null,"Press ",p.createElement(A,{bold:!0,color:"cyanBright"},"<up>"),"/",p.createElement(A,{bold:!0,color:"cyanBright"},"<down>")," to select packages.")),p.createElement(u,{marginLeft:1},p.createElement(A,null,"Press ",p.createElement(A,{bold:!0,color:"cyanBright"},"<left>"),"/",p.createElement(A,{bold:!0,color:"cyanBright"},"<right>")," to select versions."))),p.createElement(u,{flexDirection:"column"},p.createElement(u,{marginLeft:1},p.createElement(A,null,"Press ",p.createElement(A,{bold:!0,color:"cyanBright"},"<enter>")," to install.")),p.createElement(u,{marginLeft:1},p.createElement(A,null,"Press ",p.createElement(A,{bold:!0,color:"cyanBright"},"<ctrl+c>")," to abort.")))),pe=()=>p.createElement(u,{flexDirection:"row",paddingTop:1,paddingBottom:1},p.createElement(u,{width:50},p.createElement(A,{bold:!0},p.createElement(A,{color:"greenBright"},"?")," Pick the packages you want to upgrade.")),p.createElement(u,{width:17},p.createElement(A,{bold:!0,underline:!0,color:"gray"},"Current")),p.createElement(u,{width:17},p.createElement(A,{bold:!0,underline:!0,color:"gray"},"Range")),p.createElement(u,{width:17},p.createElement(A,{bold:!0,underline:!0,color:"gray"},"Latest"))),De=({active:Ee,descriptor:de,suggestions:ne})=>{let[Z,me]=a(de.descriptorHash,null),be=Y.stringifyIdent(de),ut=Math.max(0,45-be.length);return p.createElement(p.Fragment,null,p.createElement(u,null,p.createElement(u,{width:45},p.createElement(A,{bold:!0},Y.prettyIdent(v,de)),p.createElement(r,{active:Ee,length:ut})),p.createElement(e,{active:Ee,options:ne,value:Z,skewer:!0,onChange:me,sizes:[17,17,17]})))},ge=({dependencies:Ee})=>{let[de,ne]=w(Ee.map(()=>null)),Z=C(!0),me=async be=>{let ut=await ae(be);return ut.filter(H=>H.label!=="").length<=1?null:{descriptor:be,suggestions:ut}};return h(()=>()=>{Z.current=!1},[]),h(()=>{let be=Math.trunc(L*1.75),ut=Ee.slice(0,be),H=Ee.slice(be),yt=Rwe(H,L),Me=ut.map(me).reduce(async(Te,Qe)=>{await Te;let _e=await Qe;_e!==null&&(!Z.current||ne(qe=>{let At=qe.findIndex(x=>x===null),Oe=[...qe];return Oe[At]=_e,Oe}))},Promise.resolve());yt.reduce((Te,Qe)=>Promise.all(Qe.map(_e=>Promise.resolve().then(()=>me(_e)))).then(async _e=>{_e=_e.filter(qe=>qe!==null),await Te,Z.current&&ne(qe=>{let At=qe.findIndex(Oe=>Oe===null);return qe.slice(0,At).concat(_e).concat(qe.slice(At+_e.length))})}),Me).then(()=>{Z.current&&ne(Te=>Te.filter(Qe=>Qe!==null))})},[]),de.length?p.createElement(o,{radius:L>>1,children:de.map((be,ut)=>be!==null?p.createElement(De,{key:ut,active:!1,descriptor:be.descriptor,suggestions:be.suggestions}):p.createElement(A,{key:ut},"Loading..."))}):p.createElement(A,null,"No upgrades found")},Pe=await n(({useSubmit:Ee})=>{Ee(a());let de=new Map;for(let Z of b.workspaces)for(let me of["dependencies","devDependencies"])for(let be of Z.manifest[me].values())b.tryWorkspaceByDescriptor(be)===null&&(be.range.startsWith("link:")||de.set(be.descriptorHash,be));let ne=We.sortMap(de.values(),Z=>Y.stringifyDescriptor(Z));return p.createElement(u,{flexDirection:"column"},p.createElement(he,null),p.createElement(pe,null),p.createElement(ge,{dependencies:ne}))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof Pe>"u")return 1;let g=!1;for(let Ee of b.workspaces)for(let de of["dependencies","devDependencies"]){let ne=Ee.manifest[de];for(let Z of ne.values()){let me=Pe.get(Z.descriptorHash);typeof me<"u"&&me!==null&&(ne.set(Z.identHash,Y.makeDescriptor(Z,me)),g=!0)}}return g?(await Ct.start({configuration:v,stdout:this.context.stdout,includeLogs:!this.context.quiet},async Ee=>{await b.install({cache:R,report:Ee})})).exitCode():0}};Ih.paths=[["upgrade-interactive"]],Ih.usage=it.Usage({category:"Interactive commands",description:"open the upgrade interface",details:` |
562 | This command opens a fullscreen terminal interface where you can see any out of date packages used by your application, their status compared to the latest versions available on the remote registry, and select packages to upgrade. | 562 | This command opens a fullscreen terminal interface where you can see any out of date packages used by your application, their status compared to the latest versions available on the remote registry, and select packages to upgrade. |
563 | `,examples:[["Open the upgrade window","yarn upgrade-interactive"]]});var oIt={commands:[mh,Eh]},aIt=oIt;var Rq={};Yt(Rq,{LinkFetcher:()=>SB,LinkResolver:()=>PB,PortalFetcher:()=>xB,PortalResolver:()=>bB,default:()=>cIt});Ke();bt();var Zf="portal:",$f="link:";var SB=class{supports(e,r){return!!e.reference.startsWith($f)}getLocalPath(e,r){let{parentLocator:o,path:a}=Y.parseFileStyleRange(e.reference,{protocol:$f});if(V.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:V.resolve(n,a)}async fetch(e,r){let{parentLocator:o,path:a}=Y.parseFileStyleRange(e.reference,{protocol:$f}),n=V.isAbsolute(a)?{packageFs:new An(wt.root),prefixPath:wt.dot,localPath:wt.root}:await r.fetcher.fetch(o,r),u=n.localPath?{packageFs:new An(wt.root),prefixPath:V.relative(wt.root,n.localPath),localPath:wt.root}:n;n!==u&&n.releaseFs&&n.releaseFs();let A=u.packageFs,p=V.resolve(u.localPath??u.packageFs.getRealPath(),u.prefixPath,a);return n.localPath?{packageFs:new An(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:wt.dot,discardFromLookup:!0,localPath:p}:{packageFs:new ju(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:wt.dot,discardFromLookup:!0}}};Ke();bt();var PB=class{supportsDescriptor(e,r){return!!e.range.startsWith($f)}supportsLocator(e,r){return!!e.reference.startsWith($f)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return Y.bindDescriptor(e,{locator:Y.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice($f.length);return[Y.makeLocator(e,`${$f}${Ae.toPortablePath(a)}`)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){return{...e,version:"0.0.0",languageName:r.project.configuration.get("defaultLanguageName"),linkType:"SOFT",conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map}}};Ke();bt();var xB=class{supports(e,r){return!!e.reference.startsWith(Zf)}getLocalPath(e,r){let{parentLocator:o,path:a}=Y.parseFileStyleRange(e.reference,{protocol:Zf});if(V.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:V.resolve(n,a)}async fetch(e,r){let{parentLocator:o,path:a}=Y.parseFileStyleRange(e.reference,{protocol:Zf}),n=V.isAbsolute(a)?{packageFs:new An(wt.root),prefixPath:wt.dot,localPath:wt.root}:await r.fetcher.fetch(o,r),u=n.localPath?{packageFs:new An(wt.root),prefixPath:V.relative(wt.root,n.localPath),localPath:wt.root}:n;n!==u&&n.releaseFs&&n.releaseFs();let A=u.packageFs,p=V.resolve(u.localPath??u.packageFs.getRealPath(),u.prefixPath,a);return n.localPath?{packageFs:new An(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:wt.dot,localPath:p}:{packageFs:new ju(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:wt.dot}}};Ke();Ke();bt();var bB=class{supportsDescriptor(e,r){return!!e.range.startsWith(Zf)}supportsLocator(e,r){return!!e.reference.startsWith(Zf)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return Y.bindDescriptor(e,{locator:Y.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice(Zf.length);return[Y.makeLocator(e,`${Zf}${Ae.toPortablePath(a)}`)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await Ye.releaseAfterUseAsync(async()=>await Nt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"SOFT",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var lIt={fetchers:[SB,xB],resolvers:[PB,bB]},cIt=lIt;var Aj={};Yt(Aj,{NodeModulesLinker:()=>qB,NodeModulesMode:()=>aj,PnpLooseLinker:()=>jB,default:()=>Bwt});bt();Ke();bt();bt();var Nq=(t,e)=>`${t}@${e}`,Swe=(t,e)=>{let r=e.indexOf("#"),o=r>=0?e.substring(r+1):e;return Nq(t,o)};var bwe=(t,e={})=>{let r=e.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),o=e.check||r>=9,a=e.hoistingLimits||new Map,n={check:o,debugLevel:r,hoistingLimits:a,fastLookupPossible:!0},u;n.debugLevel>=0&&(u=Date.now());let A=dIt(t,n),p=!1,h=0;do p=Lq(A,[A],new Set([A.locator]),new Map,n).anotherRoundNeeded,n.fastLookupPossible=!1,h++;while(p);if(n.debugLevel>=0&&console.log(`hoist time: ${Date.now()-u}ms, rounds: ${h}`),n.debugLevel>=1){let C=QB(A);if(Lq(A,[A],new Set([A.locator]),new Map,n).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree: | 563 | `,examples:[["Open the upgrade window","yarn upgrade-interactive"]]});var wIt={commands:[Eh,Ih]},BIt=wIt;var Lq={};Yt(Lq,{LinkFetcher:()=>FB,LinkResolver:()=>RB,PortalFetcher:()=>TB,PortalResolver:()=>NB,default:()=>DIt});Ke();St();var rp="portal:",np="link:";var FB=class{supports(e,r){return!!e.reference.startsWith(np)}getLocalPath(e,r){let{parentLocator:o,path:a}=Y.parseFileStyleRange(e.reference,{protocol:np});if(J.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:J.resolve(n,a)}async fetch(e,r){let{parentLocator:o,path:a}=Y.parseFileStyleRange(e.reference,{protocol:np}),n=J.isAbsolute(a)?{packageFs:new An(wt.root),prefixPath:wt.dot,localPath:wt.root}:await r.fetcher.fetch(o,r),u=n.localPath?{packageFs:new An(wt.root),prefixPath:J.relative(wt.root,n.localPath),localPath:wt.root}:n;n!==u&&n.releaseFs&&n.releaseFs();let A=u.packageFs,p=J.resolve(u.localPath??u.packageFs.getRealPath(),u.prefixPath,a);return n.localPath?{packageFs:new An(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:wt.dot,discardFromLookup:!0,localPath:p}:{packageFs:new Gu(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:wt.dot,discardFromLookup:!0}}};Ke();St();var RB=class{supportsDescriptor(e,r){return!!e.range.startsWith(np)}supportsLocator(e,r){return!!e.reference.startsWith(np)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return Y.bindDescriptor(e,{locator:Y.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice(np.length);return[Y.makeLocator(e,`${np}${ue.toPortablePath(a)}`)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){return{...e,version:"0.0.0",languageName:r.project.configuration.get("defaultLanguageName"),linkType:"SOFT",conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map}}};Ke();St();var TB=class{supports(e,r){return!!e.reference.startsWith(rp)}getLocalPath(e,r){let{parentLocator:o,path:a}=Y.parseFileStyleRange(e.reference,{protocol:rp});if(J.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(o,r);return n===null?null:J.resolve(n,a)}async fetch(e,r){let{parentLocator:o,path:a}=Y.parseFileStyleRange(e.reference,{protocol:rp}),n=J.isAbsolute(a)?{packageFs:new An(wt.root),prefixPath:wt.dot,localPath:wt.root}:await r.fetcher.fetch(o,r),u=n.localPath?{packageFs:new An(wt.root),prefixPath:J.relative(wt.root,n.localPath),localPath:wt.root}:n;n!==u&&n.releaseFs&&n.releaseFs();let A=u.packageFs,p=J.resolve(u.localPath??u.packageFs.getRealPath(),u.prefixPath,a);return n.localPath?{packageFs:new An(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:wt.dot,localPath:p}:{packageFs:new Gu(p,{baseFs:A}),releaseFs:u.releaseFs,prefixPath:wt.dot}}};Ke();Ke();St();var NB=class{supportsDescriptor(e,r){return!!e.range.startsWith(rp)}supportsLocator(e,r){return!!e.reference.startsWith(rp)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){return Y.bindDescriptor(e,{locator:Y.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice(rp.length);return[Y.makeLocator(e,`${rp}${ue.toPortablePath(a)}`)]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let o=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await We.releaseAfterUseAsync(async()=>await Nt.find(o.prefixPath,{baseFs:o.packageFs}),o.releaseFs);return{...e,version:a.version||"0.0.0",languageName:a.languageName||r.project.configuration.get("defaultLanguageName"),linkType:"SOFT",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var vIt={fetchers:[FB,TB],resolvers:[RB,NB]},DIt=vIt;var Ej={};Yt(Ej,{NodeModulesLinker:()=>XB,NodeModulesMode:()=>gj,PnpLooseLinker:()=>ZB,default:()=>qwt});St();Ke();St();St();var Mq=(t,e)=>`${t}@${e}`,Twe=(t,e)=>{let r=e.indexOf("#"),o=r>=0?e.substring(r+1):e;return Mq(t,o)};var Owe=(t,e={})=>{let r=e.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),o=e.check||r>=9,a=e.hoistingLimits||new Map,n={check:o,debugLevel:r,hoistingLimits:a,fastLookupPossible:!0},u;n.debugLevel>=0&&(u=Date.now());let A=FIt(t,n),p=!1,h=0;do p=Uq(A,[A],new Set([A.locator]),new Map,n).anotherRoundNeeded,n.fastLookupPossible=!1,h++;while(p);if(n.debugLevel>=0&&console.log(`hoist time: ${Date.now()-u}ms, rounds: ${h}`),n.debugLevel>=1){let C=LB(A);if(Uq(A,[A],new Set([A.locator]),new Map,n).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree: |
564 | ${C}, next tree: | 564 | ${C}, next tree: |
565 | ${QB(A)}`);let v=Qwe(A);if(v)throw new Error(`${v}, after hoisting finished: | 565 | ${LB(A)}`);let v=Mwe(A);if(v)throw new Error(`${v}, after hoisting finished: |
566 | ${QB(A)}`)}return n.debugLevel>=2&&console.log(QB(A)),mIt(A)},uIt=t=>{let e=t[t.length-1],r=new Map,o=new Set,a=n=>{if(!o.has(n)){o.add(n);for(let u of n.hoistedDependencies.values())r.set(u.name,u);for(let u of n.dependencies.values())n.peerNames.has(u.name)||a(u)}};return a(e),r},AIt=t=>{let e=t[t.length-1],r=new Map,o=new Set,a=new Set,n=(u,A)=>{if(o.has(u))return;o.add(u);for(let h of u.hoistedDependencies.values())if(!A.has(h.name)){let C;for(let w of t)C=w.dependencies.get(h.name),C&&r.set(C.name,C)}let p=new Set;for(let h of u.dependencies.values())p.add(h.name);for(let h of u.dependencies.values())u.peerNames.has(h.name)||n(h,p)};return n(e,a),r},Pwe=(t,e)=>{if(e.decoupled)return e;let{name:r,references:o,ident:a,locator:n,dependencies:u,originalDependencies:A,hoistedDependencies:p,peerNames:h,reasons:C,isHoistBorder:w,hoistPriority:v,dependencyKind:b,hoistedFrom:E,hoistedTo:R}=e,L={name:r,references:new Set(o),ident:a,locator:n,dependencies:new Map(u),originalDependencies:new Map(A),hoistedDependencies:new Map(p),peerNames:new Set(h),reasons:new Map(C),decoupled:!0,isHoistBorder:w,hoistPriority:v,dependencyKind:b,hoistedFrom:new Map(E),hoistedTo:new Map(R)},_=L.dependencies.get(r);return _&&_.ident==L.ident&&L.dependencies.set(r,L),t.dependencies.set(L.name,L),L},fIt=(t,e)=>{let r=new Map([[t.name,[t.ident]]]);for(let a of t.dependencies.values())t.peerNames.has(a.name)||r.set(a.name,[a.ident]);let o=Array.from(e.keys());o.sort((a,n)=>{let u=e.get(a),A=e.get(n);return A.hoistPriority!==u.hoistPriority?A.hoistPriority-u.hoistPriority:A.peerDependents.size!==u.peerDependents.size?A.peerDependents.size-u.peerDependents.size:A.dependents.size-u.dependents.size});for(let a of o){let n=a.substring(0,a.indexOf("@",1)),u=a.substring(n.length+1);if(!t.peerNames.has(n)){let A=r.get(n);A||(A=[],r.set(n,A)),A.indexOf(u)<0&&A.push(u)}}return r},Tq=t=>{let e=new Set,r=(o,a=new Set)=>{if(!a.has(o)){a.add(o);for(let n of o.peerNames)if(!t.peerNames.has(n)){let u=t.dependencies.get(n);u&&!e.has(u)&&r(u,a)}e.add(o)}};for(let o of t.dependencies.values())t.peerNames.has(o.name)||r(o);return e},Lq=(t,e,r,o,a,n=new Set)=>{let u=e[e.length-1];if(n.has(u))return{anotherRoundNeeded:!1,isGraphChanged:!1};n.add(u);let A=yIt(u),p=fIt(u,A),h=t==u?new Map:a.fastLookupPossible?uIt(e):AIt(e),C,w=!1,v=!1,b=new Map(Array.from(p.entries()).map(([R,L])=>[R,L[0]])),E=new Map;do{let R=gIt(t,e,r,h,b,p,o,E,a);R.isGraphChanged&&(v=!0),R.anotherRoundNeeded&&(w=!0),C=!1;for(let[L,_]of p)_.length>1&&!u.dependencies.has(L)&&(b.delete(L),_.shift(),b.set(L,_[0]),C=!0)}while(C);for(let R of u.dependencies.values())if(!u.peerNames.has(R.name)&&!r.has(R.locator)){r.add(R.locator);let L=Lq(t,[...e,R],r,E,a);L.isGraphChanged&&(v=!0),L.anotherRoundNeeded&&(w=!0),r.delete(R.locator)}return{anotherRoundNeeded:w,isGraphChanged:v}},pIt=t=>{for(let[e,r]of t.dependencies)if(!t.peerNames.has(e)&&r.ident!==t.ident)return!0;return!1},hIt=(t,e,r,o,a,n,u,A,{outputReason:p,fastLookupPossible:h})=>{let C,w=null,v=new Set;p&&(C=`${Array.from(e).map(L=>eo(L)).join("\u2192")}`);let b=r[r.length-1],R=!(o.ident===b.ident);if(p&&!R&&(w="- self-reference"),R&&(R=o.dependencyKind!==1,p&&!R&&(w="- workspace")),R&&o.dependencyKind===2&&(R=!pIt(o),p&&!R&&(w="- external soft link with unhoisted dependencies")),R&&(R=b.dependencyKind!==1||b.hoistedFrom.has(o.name)||e.size===1,p&&!R&&(w=b.reasons.get(o.name))),R&&(R=!t.peerNames.has(o.name),p&&!R&&(w=`- cannot shadow peer: ${eo(t.originalDependencies.get(o.name).locator)} at ${C}`)),R){let L=!1,_=a.get(o.name);if(L=!_||_.ident===o.ident,p&&!L&&(w=`- filled by: ${eo(_.locator)} at ${C}`),L)for(let J=r.length-1;J>=1;J--){let oe=r[J].dependencies.get(o.name);if(oe&&oe.ident!==o.ident){L=!1;let pe=A.get(b);pe||(pe=new Set,A.set(b,pe)),pe.add(o.name),p&&(w=`- filled by ${eo(oe.locator)} at ${r.slice(0,J).map(he=>eo(he.locator)).join("\u2192")}`);break}}R=L}if(R&&(R=n.get(o.name)===o.ident,p&&!R&&(w=`- filled by: ${eo(u.get(o.name)[0])} at ${C}`)),R){let L=!0,_=new Set(o.peerNames);for(let J=r.length-1;J>=1;J--){let re=r[J];for(let oe of _){if(re.peerNames.has(oe)&&re.originalDependencies.has(oe))continue;let pe=re.dependencies.get(oe);pe&&t.dependencies.get(oe)!==pe&&(J===r.length-1?v.add(pe):(v=null,L=!1,p&&(w=`- peer dependency ${eo(pe.locator)} from parent ${eo(re.locator)} was not hoisted to ${C}`))),_.delete(oe)}if(!L)break}R=L}if(R&&!h)for(let L of o.hoistedDependencies.values()){let _=a.get(L.name)||t.dependencies.get(L.name);if(!_||L.ident!==_.ident){R=!1,p&&(w=`- previously hoisted dependency mismatch, needed: ${eo(L.locator)}, available: ${eo(_==null?void 0:_.locator)}`);break}}return v!==null&&v.size>0?{isHoistable:2,dependsOn:v,reason:w}:{isHoistable:R?0:1,reason:w}},nk=t=>`${t.name}@${t.locator}`,gIt=(t,e,r,o,a,n,u,A,p)=>{let h=e[e.length-1],C=new Set,w=!1,v=!1,b=(_,J,re,oe,pe)=>{if(C.has(oe))return;let he=[...J,nk(oe)],ve=[...re,nk(oe)],ge=new Map,le=new Map;for(let de of Tq(oe)){let ne=hIt(h,r,[h,..._,oe],de,o,a,n,A,{outputReason:p.debugLevel>=2,fastLookupPossible:p.fastLookupPossible});if(le.set(de,ne),ne.isHoistable===2)for(let Z of ne.dependsOn){let me=ge.get(Z.name)||new Set;me.add(de.name),ge.set(Z.name,me)}}let Pe=new Set,g=(de,ne,Z)=>{if(!Pe.has(de)){Pe.add(de),le.set(de,{isHoistable:1,reason:Z});for(let me of ge.get(de.name)||[])g(oe.dependencies.get(me),ne,p.debugLevel>=2?`- peer dependency ${eo(de.locator)} from parent ${eo(oe.locator)} was not hoisted`:"")}};for(let[de,ne]of le)ne.isHoistable===1&&g(de,ne,ne.reason);let De=!1;for(let de of le.keys())if(!Pe.has(de)){v=!0;let ne=u.get(oe);ne&&ne.has(de.name)&&(w=!0),De=!0,oe.dependencies.delete(de.name),oe.hoistedDependencies.set(de.name,de),oe.reasons.delete(de.name);let Z=h.dependencies.get(de.name);if(p.debugLevel>=2){let me=Array.from(J).concat([oe.locator]).map(ut=>eo(ut)).join("\u2192"),be=h.hoistedFrom.get(de.name);be||(be=[],h.hoistedFrom.set(de.name,be)),be.push(me),oe.hoistedTo.set(de.name,Array.from(e).map(ut=>eo(ut.locator)).join("\u2192"))}if(!Z)h.ident!==de.ident&&(h.dependencies.set(de.name,de),pe.add(de));else for(let me of de.references)Z.references.add(me)}if(oe.dependencyKind===2&&De&&(w=!0),p.check){let de=Qwe(t);if(de)throw new Error(`${de}, after hoisting dependencies of ${[h,..._,oe].map(ne=>eo(ne.locator)).join("\u2192")}: | 566 | ${LB(A)}`)}return n.debugLevel>=2&&console.log(LB(A)),RIt(A)},SIt=t=>{let e=t[t.length-1],r=new Map,o=new Set,a=n=>{if(!o.has(n)){o.add(n);for(let u of n.hoistedDependencies.values())r.set(u.name,u);for(let u of n.dependencies.values())n.peerNames.has(u.name)||a(u)}};return a(e),r},PIt=t=>{let e=t[t.length-1],r=new Map,o=new Set,a=new Set,n=(u,A)=>{if(o.has(u))return;o.add(u);for(let h of u.hoistedDependencies.values())if(!A.has(h.name)){let C;for(let w of t)C=w.dependencies.get(h.name),C&&r.set(C.name,C)}let p=new Set;for(let h of u.dependencies.values())p.add(h.name);for(let h of u.dependencies.values())u.peerNames.has(h.name)||n(h,p)};return n(e,a),r},Nwe=(t,e)=>{if(e.decoupled)return e;let{name:r,references:o,ident:a,locator:n,dependencies:u,originalDependencies:A,hoistedDependencies:p,peerNames:h,reasons:C,isHoistBorder:w,hoistPriority:v,dependencyKind:b,hoistedFrom:E,hoistedTo:R}=e,L={name:r,references:new Set(o),ident:a,locator:n,dependencies:new Map(u),originalDependencies:new Map(A),hoistedDependencies:new Map(p),peerNames:new Set(h),reasons:new Map(C),decoupled:!0,isHoistBorder:w,hoistPriority:v,dependencyKind:b,hoistedFrom:new Map(E),hoistedTo:new Map(R)},_=L.dependencies.get(r);return _&&_.ident==L.ident&&L.dependencies.set(r,L),t.dependencies.set(L.name,L),L},xIt=(t,e)=>{let r=new Map([[t.name,[t.ident]]]);for(let a of t.dependencies.values())t.peerNames.has(a.name)||r.set(a.name,[a.ident]);let o=Array.from(e.keys());o.sort((a,n)=>{let u=e.get(a),A=e.get(n);return A.hoistPriority!==u.hoistPriority?A.hoistPriority-u.hoistPriority:A.peerDependents.size!==u.peerDependents.size?A.peerDependents.size-u.peerDependents.size:A.dependents.size-u.dependents.size});for(let a of o){let n=a.substring(0,a.indexOf("@",1)),u=a.substring(n.length+1);if(!t.peerNames.has(n)){let A=r.get(n);A||(A=[],r.set(n,A)),A.indexOf(u)<0&&A.push(u)}}return r},Oq=t=>{let e=new Set,r=(o,a=new Set)=>{if(!a.has(o)){a.add(o);for(let n of o.peerNames)if(!t.peerNames.has(n)){let u=t.dependencies.get(n);u&&!e.has(u)&&r(u,a)}e.add(o)}};for(let o of t.dependencies.values())t.peerNames.has(o.name)||r(o);return e},Uq=(t,e,r,o,a,n=new Set)=>{let u=e[e.length-1];if(n.has(u))return{anotherRoundNeeded:!1,isGraphChanged:!1};n.add(u);let A=TIt(u),p=xIt(u,A),h=t==u?new Map:a.fastLookupPossible?SIt(e):PIt(e),C,w=!1,v=!1,b=new Map(Array.from(p.entries()).map(([R,L])=>[R,L[0]])),E=new Map;do{let R=kIt(t,e,r,h,b,p,o,E,a);R.isGraphChanged&&(v=!0),R.anotherRoundNeeded&&(w=!0),C=!1;for(let[L,_]of p)_.length>1&&!u.dependencies.has(L)&&(b.delete(L),_.shift(),b.set(L,_[0]),C=!0)}while(C);for(let R of u.dependencies.values())if(!u.peerNames.has(R.name)&&!r.has(R.locator)){r.add(R.locator);let L=Uq(t,[...e,R],r,E,a);L.isGraphChanged&&(v=!0),L.anotherRoundNeeded&&(w=!0),r.delete(R.locator)}return{anotherRoundNeeded:w,isGraphChanged:v}},bIt=t=>{for(let[e,r]of t.dependencies)if(!t.peerNames.has(e)&&r.ident!==t.ident)return!0;return!1},QIt=(t,e,r,o,a,n,u,A,{outputReason:p,fastLookupPossible:h})=>{let C,w=null,v=new Set;p&&(C=`${Array.from(e).map(L=>eo(L)).join("\u2192")}`);let b=r[r.length-1],R=!(o.ident===b.ident);if(p&&!R&&(w="- self-reference"),R&&(R=o.dependencyKind!==1,p&&!R&&(w="- workspace")),R&&o.dependencyKind===2&&(R=!bIt(o),p&&!R&&(w="- external soft link with unhoisted dependencies")),R&&(R=b.dependencyKind!==1||b.hoistedFrom.has(o.name)||e.size===1,p&&!R&&(w=b.reasons.get(o.name))),R&&(R=!t.peerNames.has(o.name),p&&!R&&(w=`- cannot shadow peer: ${eo(t.originalDependencies.get(o.name).locator)} at ${C}`)),R){let L=!1,_=a.get(o.name);if(L=!_||_.ident===o.ident,p&&!L&&(w=`- filled by: ${eo(_.locator)} at ${C}`),L)for(let V=r.length-1;V>=1;V--){let ae=r[V].dependencies.get(o.name);if(ae&&ae.ident!==o.ident){L=!1;let he=A.get(b);he||(he=new Set,A.set(b,he)),he.add(o.name),p&&(w=`- filled by ${eo(ae.locator)} at ${r.slice(0,V).map(pe=>eo(pe.locator)).join("\u2192")}`);break}}R=L}if(R&&(R=n.get(o.name)===o.ident,p&&!R&&(w=`- filled by: ${eo(u.get(o.name)[0])} at ${C}`)),R){let L=!0,_=new Set(o.peerNames);for(let V=r.length-1;V>=1;V--){let re=r[V];for(let ae of _){if(re.peerNames.has(ae)&&re.originalDependencies.has(ae))continue;let he=re.dependencies.get(ae);he&&t.dependencies.get(ae)!==he&&(V===r.length-1?v.add(he):(v=null,L=!1,p&&(w=`- peer dependency ${eo(he.locator)} from parent ${eo(re.locator)} was not hoisted to ${C}`))),_.delete(ae)}if(!L)break}R=L}if(R&&!h)for(let L of o.hoistedDependencies.values()){let _=a.get(L.name)||t.dependencies.get(L.name);if(!_||L.ident!==_.ident){R=!1,p&&(w=`- previously hoisted dependency mismatch, needed: ${eo(L.locator)}, available: ${eo(_==null?void 0:_.locator)}`);break}}return v!==null&&v.size>0?{isHoistable:2,dependsOn:v,reason:w}:{isHoistable:R?0:1,reason:w}},pk=t=>`${t.name}@${t.locator}`,kIt=(t,e,r,o,a,n,u,A,p)=>{let h=e[e.length-1],C=new Set,w=!1,v=!1,b=(_,V,re,ae,he)=>{if(C.has(ae))return;let pe=[...V,pk(ae)],De=[...re,pk(ae)],ge=new Map,le=new Map;for(let de of Oq(ae)){let ne=QIt(h,r,[h,..._,ae],de,o,a,n,A,{outputReason:p.debugLevel>=2,fastLookupPossible:p.fastLookupPossible});if(le.set(de,ne),ne.isHoistable===2)for(let Z of ne.dependsOn){let me=ge.get(Z.name)||new Set;me.add(de.name),ge.set(Z.name,me)}}let Pe=new Set,g=(de,ne,Z)=>{if(!Pe.has(de)){Pe.add(de),le.set(de,{isHoistable:1,reason:Z});for(let me of ge.get(de.name)||[])g(ae.dependencies.get(me),ne,p.debugLevel>=2?`- peer dependency ${eo(de.locator)} from parent ${eo(ae.locator)} was not hoisted`:"")}};for(let[de,ne]of le)ne.isHoistable===1&&g(de,ne,ne.reason);let ve=!1;for(let de of le.keys())if(!Pe.has(de)){v=!0;let ne=u.get(ae);ne&&ne.has(de.name)&&(w=!0),ve=!0,ae.dependencies.delete(de.name),ae.hoistedDependencies.set(de.name,de),ae.reasons.delete(de.name);let Z=h.dependencies.get(de.name);if(p.debugLevel>=2){let me=Array.from(V).concat([ae.locator]).map(ut=>eo(ut)).join("\u2192"),be=h.hoistedFrom.get(de.name);be||(be=[],h.hoistedFrom.set(de.name,be)),be.push(me),ae.hoistedTo.set(de.name,Array.from(e).map(ut=>eo(ut.locator)).join("\u2192"))}if(!Z)h.ident!==de.ident&&(h.dependencies.set(de.name,de),he.add(de));else for(let me of de.references)Z.references.add(me)}if(ae.dependencyKind===2&&ve&&(w=!0),p.check){let de=Mwe(t);if(de)throw new Error(`${de}, after hoisting dependencies of ${[h,..._,ae].map(ne=>eo(ne.locator)).join("\u2192")}: |
567 | ${QB(t)}`)}let Ee=Tq(oe);for(let de of Ee)if(Pe.has(de)){let ne=le.get(de);if((a.get(de.name)===de.ident||!oe.reasons.has(de.name))&&ne.isHoistable!==0&&oe.reasons.set(de.name,ne.reason),!de.isHoistBorder&&ve.indexOf(nk(de))<0){C.add(oe);let me=Pwe(oe,de);b([..._,oe],he,ve,me,R),C.delete(oe)}}},E,R=new Set(Tq(h)),L=Array.from(e).map(_=>nk(_));do{E=R,R=new Set;for(let _ of E){if(_.locator===h.locator||_.isHoistBorder)continue;let J=Pwe(h,_);b([],Array.from(r),L,J,R)}}while(R.size>0);return{anotherRoundNeeded:w,isGraphChanged:v}},Qwe=t=>{let e=[],r=new Set,o=new Set,a=(n,u,A)=>{if(r.has(n)||(r.add(n),o.has(n)))return;let p=new Map(u);for(let h of n.dependencies.values())n.peerNames.has(h.name)||p.set(h.name,h);for(let h of n.originalDependencies.values()){let C=p.get(h.name),w=()=>`${Array.from(o).concat([n]).map(v=>eo(v.locator)).join("\u2192")}`;if(n.peerNames.has(h.name)){let v=u.get(h.name);(v!==C||!v||v.ident!==h.ident)&&e.push(`${w()} - broken peer promise: expected ${h.ident} but found ${v&&v.ident}`)}else{let v=A.hoistedFrom.get(n.name),b=n.hoistedTo.get(h.name),E=`${v?` hoisted from ${v.join(", ")}`:""}`,R=`${b?` hoisted to ${b}`:""}`,L=`${w()}${E}`;C?C.ident!==h.ident&&e.push(`${L} - broken require promise for ${h.name}${R}: expected ${h.ident}, but found: ${C.ident}`):e.push(`${L} - broken require promise: no required dependency ${h.name}${R} found`)}}o.add(n);for(let h of n.dependencies.values())n.peerNames.has(h.name)||a(h,p,n);o.delete(n)};return a(t,t.dependencies,t),e.join(` | 567 | ${LB(t)}`)}let Ee=Oq(ae);for(let de of Ee)if(Pe.has(de)){let ne=le.get(de);if((a.get(de.name)===de.ident||!ae.reasons.has(de.name))&&ne.isHoistable!==0&&ae.reasons.set(de.name,ne.reason),!de.isHoistBorder&&De.indexOf(pk(de))<0){C.add(ae);let me=Nwe(ae,de);b([..._,ae],pe,De,me,R),C.delete(ae)}}},E,R=new Set(Oq(h)),L=Array.from(e).map(_=>pk(_));do{E=R,R=new Set;for(let _ of E){if(_.locator===h.locator||_.isHoistBorder)continue;let V=Nwe(h,_);b([],Array.from(r),L,V,R)}}while(R.size>0);return{anotherRoundNeeded:w,isGraphChanged:v}},Mwe=t=>{let e=[],r=new Set,o=new Set,a=(n,u,A)=>{if(r.has(n)||(r.add(n),o.has(n)))return;let p=new Map(u);for(let h of n.dependencies.values())n.peerNames.has(h.name)||p.set(h.name,h);for(let h of n.originalDependencies.values()){let C=p.get(h.name),w=()=>`${Array.from(o).concat([n]).map(v=>eo(v.locator)).join("\u2192")}`;if(n.peerNames.has(h.name)){let v=u.get(h.name);(v!==C||!v||v.ident!==h.ident)&&e.push(`${w()} - broken peer promise: expected ${h.ident} but found ${v&&v.ident}`)}else{let v=A.hoistedFrom.get(n.name),b=n.hoistedTo.get(h.name),E=`${v?` hoisted from ${v.join(", ")}`:""}`,R=`${b?` hoisted to ${b}`:""}`,L=`${w()}${E}`;C?C.ident!==h.ident&&e.push(`${L} - broken require promise for ${h.name}${R}: expected ${h.ident}, but found: ${C.ident}`):e.push(`${L} - broken require promise: no required dependency ${h.name}${R} found`)}}o.add(n);for(let h of n.dependencies.values())n.peerNames.has(h.name)||a(h,p,n);o.delete(n)};return a(t,t.dependencies,t),e.join(` |
568 | `)},dIt=(t,e)=>{let{identName:r,name:o,reference:a,peerNames:n}=t,u={name:o,references:new Set([a]),locator:Nq(r,a),ident:Swe(r,a),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(n),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,dependencyKind:1,hoistedFrom:new Map,hoistedTo:new Map},A=new Map([[t,u]]),p=(h,C)=>{let w=A.get(h),v=!!w;if(!w){let{name:b,identName:E,reference:R,peerNames:L,hoistPriority:_,dependencyKind:J}=h,re=e.hoistingLimits.get(C.locator);w={name:b,references:new Set([R]),locator:Nq(E,R),ident:Swe(E,R),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(L),reasons:new Map,decoupled:!0,isHoistBorder:re?re.has(b):!1,hoistPriority:_||0,dependencyKind:J||0,hoistedFrom:new Map,hoistedTo:new Map},A.set(h,w)}if(C.dependencies.set(h.name,w),C.originalDependencies.set(h.name,w),v){let b=new Set,E=R=>{if(!b.has(R)){b.add(R),R.decoupled=!1;for(let L of R.dependencies.values())R.peerNames.has(L.name)||E(L)}};E(w)}else for(let b of h.dependencies)p(b,w)};for(let h of t.dependencies)p(h,u);return u},Oq=t=>t.substring(0,t.indexOf("@",1)),mIt=t=>{let e={name:t.name,identName:Oq(t.locator),references:new Set(t.references),dependencies:new Set},r=new Set([t]),o=(a,n,u)=>{let A=r.has(a),p;if(n===a)p=u;else{let{name:h,references:C,locator:w}=a;p={name:h,identName:Oq(w),references:C,dependencies:new Set}}if(u.dependencies.add(p),!A){r.add(a);for(let h of a.dependencies.values())a.peerNames.has(h.name)||o(h,a,p);r.delete(a)}};for(let a of t.dependencies.values())o(a,t,e);return e},yIt=t=>{let e=new Map,r=new Set([t]),o=u=>`${u.name}@${u.ident}`,a=u=>{let A=o(u),p=e.get(A);return p||(p={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(A,p)),p},n=(u,A)=>{let p=!!r.has(A);if(a(A).dependents.add(u.ident),!p){r.add(A);for(let C of A.dependencies.values()){let w=a(C);w.hoistPriority=Math.max(w.hoistPriority,C.hoistPriority),A.peerNames.has(C.name)?w.peerDependents.add(A.ident):n(A,C)}}};for(let u of t.dependencies.values())t.peerNames.has(u.name)||n(t,u);return e},eo=t=>{if(!t)return"none";let e=t.indexOf("@",1),r=t.substring(0,e);r.endsWith("$wsroot$")&&(r=`wh:${r.replace("$wsroot$","")}`);let o=t.substring(e+1);if(o==="workspace:.")return".";if(o){let a=(o.indexOf("#")>0?o.split("#")[1]:o).replace("npm:","");return o.startsWith("virtual")&&(r=`v:${r}`),a.startsWith("workspace")&&(r=`w:${r}`,a=""),`${r}${a?`@${a}`:""}`}else return`${r}`},xwe=5e4,QB=t=>{let e=0,r=(a,n,u="")=>{if(e>xwe||n.has(a))return"";e++;let A=Array.from(a.dependencies.values()).sort((h,C)=>h.name===C.name?0:h.name>C.name?1:-1),p="";n.add(a);for(let h=0;h<A.length;h++){let C=A[h];if(!a.peerNames.has(C.name)&&C!==a){let w=a.reasons.get(C.name),v=Oq(C.locator);p+=`${u}${h<A.length-1?"\u251C\u2500":"\u2514\u2500"}${(n.has(C)?">":"")+(v!==C.name?`a:${C.name}:`:"")+eo(C.locator)+(w?` ${w}`:"")} | 568 | `)},FIt=(t,e)=>{let{identName:r,name:o,reference:a,peerNames:n}=t,u={name:o,references:new Set([a]),locator:Mq(r,a),ident:Twe(r,a),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(n),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,dependencyKind:1,hoistedFrom:new Map,hoistedTo:new Map},A=new Map([[t,u]]),p=(h,C)=>{let w=A.get(h),v=!!w;if(!w){let{name:b,identName:E,reference:R,peerNames:L,hoistPriority:_,dependencyKind:V}=h,re=e.hoistingLimits.get(C.locator);w={name:b,references:new Set([R]),locator:Mq(E,R),ident:Twe(E,R),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(L),reasons:new Map,decoupled:!0,isHoistBorder:re?re.has(b):!1,hoistPriority:_||0,dependencyKind:V||0,hoistedFrom:new Map,hoistedTo:new Map},A.set(h,w)}if(C.dependencies.set(h.name,w),C.originalDependencies.set(h.name,w),v){let b=new Set,E=R=>{if(!b.has(R)){b.add(R),R.decoupled=!1;for(let L of R.dependencies.values())R.peerNames.has(L.name)||E(L)}};E(w)}else for(let b of h.dependencies)p(b,w)};for(let h of t.dependencies)p(h,u);return u},_q=t=>t.substring(0,t.indexOf("@",1)),RIt=t=>{let e={name:t.name,identName:_q(t.locator),references:new Set(t.references),dependencies:new Set},r=new Set([t]),o=(a,n,u)=>{let A=r.has(a),p;if(n===a)p=u;else{let{name:h,references:C,locator:w}=a;p={name:h,identName:_q(w),references:C,dependencies:new Set}}if(u.dependencies.add(p),!A){r.add(a);for(let h of a.dependencies.values())a.peerNames.has(h.name)||o(h,a,p);r.delete(a)}};for(let a of t.dependencies.values())o(a,t,e);return e},TIt=t=>{let e=new Map,r=new Set([t]),o=u=>`${u.name}@${u.ident}`,a=u=>{let A=o(u),p=e.get(A);return p||(p={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(A,p)),p},n=(u,A)=>{let p=!!r.has(A);if(a(A).dependents.add(u.ident),!p){r.add(A);for(let C of A.dependencies.values()){let w=a(C);w.hoistPriority=Math.max(w.hoistPriority,C.hoistPriority),A.peerNames.has(C.name)?w.peerDependents.add(A.ident):n(A,C)}}};for(let u of t.dependencies.values())t.peerNames.has(u.name)||n(t,u);return e},eo=t=>{if(!t)return"none";let e=t.indexOf("@",1),r=t.substring(0,e);r.endsWith("$wsroot$")&&(r=`wh:${r.replace("$wsroot$","")}`);let o=t.substring(e+1);if(o==="workspace:.")return".";if(o){let a=(o.indexOf("#")>0?o.split("#")[1]:o).replace("npm:","");return o.startsWith("virtual")&&(r=`v:${r}`),a.startsWith("workspace")&&(r=`w:${r}`,a=""),`${r}${a?`@${a}`:""}`}else return`${r}`},Lwe=5e4,LB=t=>{let e=0,r=(a,n,u="")=>{if(e>Lwe||n.has(a))return"";e++;let A=Array.from(a.dependencies.values()).sort((h,C)=>h.name===C.name?0:h.name>C.name?1:-1),p="";n.add(a);for(let h=0;h<A.length;h++){let C=A[h];if(!a.peerNames.has(C.name)&&C!==a){let w=a.reasons.get(C.name),v=_q(C.locator);p+=`${u}${h<A.length-1?"\u251C\u2500":"\u2514\u2500"}${(n.has(C)?">":"")+(v!==C.name?`a:${C.name}:`:"")+eo(C.locator)+(w?` ${w}`:"")} |
569 | `,p+=r(C,n,`${u}${h<A.length-1?"\u2502 ":" "}`)}}return n.delete(a),p};return r(t,new Set)+(e>xwe?` | 569 | `,p+=r(C,n,`${u}${h<A.length-1?"\u2502 ":" "}`)}}return n.delete(a),p};return r(t,new Set)+(e>Lwe?` |
570 | Tree is too large, part of the tree has been dunped | 570 | Tree is too large, part of the tree has been dunped |
571 | `:"")};var kB=(o=>(o.WORKSPACES="workspaces",o.DEPENDENCIES="dependencies",o.NONE="none",o))(kB||{}),kwe="node_modules",pm="$wsroot$";var FB=(t,e)=>{let{packageTree:r,hoistingLimits:o,errors:a,preserveSymlinksRequired:n}=CIt(t,e),u=null;if(a.length===0){let A=bwe(r,{hoistingLimits:o});u=wIt(t,A,e)}return{tree:u,errors:a,preserveSymlinksRequired:n}},dA=t=>`${t.name}@${t.reference}`,Uq=t=>{let e=new Map;for(let[r,o]of t.entries())if(!o.dirList){let a=e.get(o.locator);a||(a={target:o.target,linkType:o.linkType,locations:[],aliases:o.aliases},e.set(o.locator,a)),a.locations.push(r)}for(let r of e.values())r.locations=r.locations.sort((o,a)=>{let n=o.split(V.delimiter).length,u=a.split(V.delimiter).length;return a===o?0:n!==u?u-n:a>o?1:-1});return e},Fwe=(t,e)=>{let r=Y.isVirtualLocator(t)?Y.devirtualizeLocator(t):t,o=Y.isVirtualLocator(e)?Y.devirtualizeLocator(e):e;return Y.areLocatorsEqual(r,o)},Mq=(t,e,r,o)=>{if(t.linkType!=="SOFT")return!1;let a=Ae.toPortablePath(r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation);return V.contains(o,a)===null},EIt=t=>{let e=t.getPackageInformation(t.topLevel);if(e===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");if(t.findPackageLocator(e.packageLocation)===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let o=Ae.toPortablePath(e.packageLocation.slice(0,-1)),a=new Map,n={children:new Map},u=t.getDependencyTreeRoots(),A=new Map,p=new Set,h=(v,b)=>{let E=dA(v);if(p.has(E))return;p.add(E);let R=t.getPackageInformation(v);if(R){let L=b?dA(b):"";if(dA(v)!==L&&R.linkType==="SOFT"&&!Mq(R,v,t,o)){let _=Rwe(R,v,t);(!A.get(_)||v.reference.startsWith("workspace:"))&&A.set(_,v)}for(let[_,J]of R.packageDependencies)J!==null&&(R.packagePeers.has(_)||h(t.getLocator(_,J),v))}};for(let v of u)h(v,null);let C=o.split(V.sep);for(let v of A.values()){let b=t.getPackageInformation(v),R=Ae.toPortablePath(b.packageLocation.slice(0,-1)).split(V.sep).slice(C.length),L=n;for(let _ of R){let J=L.children.get(_);J||(J={children:new Map},L.children.set(_,J)),L=J}L.workspaceLocator=v}let w=(v,b)=>{if(v.workspaceLocator){let E=dA(b),R=a.get(E);R||(R=new Set,a.set(E,R)),R.add(v.workspaceLocator)}for(let E of v.children.values())w(E,v.workspaceLocator||b)};for(let v of n.children.values())w(v,n.workspaceLocator);return a},CIt=(t,e)=>{let r=[],o=!1,a=new Map,n=EIt(t),u=t.getPackageInformation(t.topLevel);if(u===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");let A=t.findPackageLocator(u.packageLocation);if(A===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let p=Ae.toPortablePath(u.packageLocation.slice(0,-1)),h={name:A.name,identName:A.name,reference:A.reference,peerNames:u.packagePeers,dependencies:new Set,dependencyKind:1},C=new Map,w=(b,E)=>`${dA(E)}:${b}`,v=(b,E,R,L,_,J,re,oe)=>{var de,ne;let pe=w(b,R),he=C.get(pe),ve=!!he;!ve&&R.name===A.name&&R.reference===A.reference&&(he=h,C.set(pe,h));let ge=Mq(E,R,t,p);if(!he){let Z=0;ge?Z=2:E.linkType==="SOFT"&&R.name.endsWith(pm)&&(Z=1),he={name:b,identName:R.name,reference:R.reference,dependencies:new Set,peerNames:Z===1?new Set:E.packagePeers,dependencyKind:Z},C.set(pe,he)}let le;if(ge?le=2:_.linkType==="SOFT"?le=1:le=0,he.hoistPriority=Math.max(he.hoistPriority||0,le),oe&&!ge){let Z=dA({name:L.identName,reference:L.reference}),me=a.get(Z)||new Set;a.set(Z,me),me.add(he.name)}let Pe=new Map(E.packageDependencies);if(e.project){let Z=e.project.workspacesByCwd.get(Ae.toPortablePath(E.packageLocation.slice(0,-1)));if(Z){let me=new Set([...Array.from(Z.manifest.peerDependencies.values(),be=>Y.stringifyIdent(be)),...Array.from(Z.manifest.peerDependenciesMeta.keys())]);for(let be of me)Pe.has(be)||(Pe.set(be,J.get(be)||null),he.peerNames.add(be))}}let g=dA({name:R.name.replace(pm,""),reference:R.reference}),De=n.get(g);if(De)for(let Z of De)Pe.set(`${Z.name}${pm}`,Z.reference);(E!==_||E.linkType!=="SOFT"||!ge&&(!e.selfReferencesByCwd||e.selfReferencesByCwd.get(re)))&&L.dependencies.add(he);let Ee=R!==A&&E.linkType==="SOFT"&&!R.name.endsWith(pm)&&!ge;if(!ve&&!Ee){let Z=new Map;for(let[me,be]of Pe)if(be!==null){let ut=t.getLocator(me,be),H=t.getLocator(me.replace(pm,""),be),yt=t.getPackageInformation(H);if(yt===null)throw new Error("Assertion failed: Expected the package to have been registered");let Me=Mq(yt,ut,t,p);if(e.validateExternalSoftLinks&&e.project&&Me){yt.packageDependencies.size>0&&(o=!0);for(let[At,Le]of yt.packageDependencies)if(Le!==null){let x=Y.parseLocator(Array.isArray(Le)?`${Le[0]}@${Le[1]}`:`${At}@${Le}`);if(dA(x)!==dA(ut)){let I=Pe.get(At);if(I){let P=Y.parseLocator(Array.isArray(I)?`${I[0]}@${I[1]}`:`${At}@${I}`);Fwe(P,x)||r.push({messageName:71,text:`Cannot link ${Y.prettyIdent(e.project.configuration,Y.parseIdent(ut.name))} into ${Y.prettyLocator(e.project.configuration,Y.parseLocator(`${R.name}@${R.reference}`))} dependency ${Y.prettyLocator(e.project.configuration,x)} conflicts with parent dependency ${Y.prettyLocator(e.project.configuration,P)}`})}else{let P=Z.get(At);if(P){let y=P.target,F=Y.parseLocator(Array.isArray(y)?`${y[0]}@${y[1]}`:`${At}@${y}`);Fwe(F,x)||r.push({messageName:71,text:`Cannot link ${Y.prettyIdent(e.project.configuration,Y.parseIdent(ut.name))} into ${Y.prettyLocator(e.project.configuration,Y.parseLocator(`${R.name}@${R.reference}`))} dependency ${Y.prettyLocator(e.project.configuration,x)} conflicts with dependency ${Y.prettyLocator(e.project.configuration,F)} from sibling portal ${Y.prettyIdent(e.project.configuration,Y.parseIdent(P.portal.name))}`})}else Z.set(At,{target:x.reference,portal:ut})}}}}let Te=(de=e.hoistingLimitsByCwd)==null?void 0:de.get(re),Qe=Me?re:V.relative(p,Ae.toPortablePath(yt.packageLocation))||wt.dot,Ue=(ne=e.hoistingLimitsByCwd)==null?void 0:ne.get(Qe);v(me,yt,ut,he,E,Pe,Qe,Te==="dependencies"||Ue==="dependencies"||Ue==="workspaces")}}};return v(A.name,u,A,h,u,u.packageDependencies,wt.dot,!1),{packageTree:h,hoistingLimits:a,errors:r,preserveSymlinksRequired:o}};function Rwe(t,e,r){let o=r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation;return Ae.toPortablePath(o||t.packageLocation)}function IIt(t,e,r){let o=e.getLocator(t.name.replace(pm,""),t.reference),a=e.getPackageInformation(o);if(a===null)throw new Error("Assertion failed: Expected the package to be registered");return r.pnpifyFs?{linkType:"SOFT",target:Ae.toPortablePath(a.packageLocation)}:{linkType:a.linkType,target:Rwe(a,t,e)}}var wIt=(t,e,r)=>{let o=new Map,a=(C,w,v)=>{let{linkType:b,target:E}=IIt(C,t,r);return{locator:dA(C),nodePath:w,target:E,linkType:b,aliases:v}},n=C=>{let[w,v]=C.split("/");return v?{scope:Li(w),name:Li(v)}:{scope:null,name:Li(w)}},u=new Set,A=(C,w,v)=>{if(u.has(C))return;u.add(C);let b=Array.from(C.references).sort().join("#");for(let E of C.dependencies){let R=Array.from(E.references).sort().join("#");if(E.identName===C.identName&&R===b)continue;let L=Array.from(E.references).sort(),_={name:E.identName,reference:L[0]},{name:J,scope:re}=n(E.name),oe=re?[re,J]:[J],pe=V.join(w,kwe),he=V.join(pe,...oe),ve=`${v}/${_.name}`,ge=a(_,v,L.slice(1)),le=!1;if(ge.linkType==="SOFT"&&r.project){let g=r.project.workspacesByCwd.get(ge.target.slice(0,-1));le=!!(g&&!g.manifest.name)}let Pe=ge.linkType==="SOFT"&&he.startsWith(ge.target);if(!E.name.endsWith(pm)&&!le&&!Pe){let g=o.get(he);if(g){if(g.dirList)throw new Error(`Assertion failed: ${he} cannot merge dir node with leaf node`);{let de=Y.parseLocator(g.locator),ne=Y.parseLocator(ge.locator);if(g.linkType!==ge.linkType)throw new Error(`Assertion failed: ${he} cannot merge nodes with different link types ${g.nodePath}/${Y.stringifyLocator(de)} and ${v}/${Y.stringifyLocator(ne)}`);if(de.identHash!==ne.identHash)throw new Error(`Assertion failed: ${he} cannot merge nodes with different idents ${g.nodePath}/${Y.stringifyLocator(de)} and ${v}/s${Y.stringifyLocator(ne)}`);ge.aliases=[...ge.aliases,...g.aliases,Y.parseLocator(g.locator).reference]}}o.set(he,ge);let De=he.split("/"),Ee=De.indexOf(kwe);for(let de=De.length-1;Ee>=0&&de>Ee;de--){let ne=Ae.toPortablePath(De.slice(0,de).join(V.sep)),Z=Li(De[de]),me=o.get(ne);if(!me)o.set(ne,{dirList:new Set([Z])});else if(me.dirList){if(me.dirList.has(Z))break;me.dirList.add(Z)}}}A(E,ge.linkType==="SOFT"?ge.target:he,ve)}},p=a({name:e.name,reference:Array.from(e.references)[0]},"",[]),h=p.target;return o.set(h,p),A(e,h,""),o};Ke();Ke();bt();bt();Oc();Ol();var $q={};Yt($q,{PnpInstaller:()=>dm,PnpLinker:()=>Ch,UnplugCommand:()=>wh,default:()=>zIt,getPnpPath:()=>Ih,jsInstallUtils:()=>mA,pnpUtils:()=>HB,quotePathIfNeeded:()=>g1e});bt();var p1e=tt(ii()),h1e=Ie("url");Ke();Ke();bt();bt();var Twe={["DEFAULT"]:{collapsed:!1,next:{["*"]:"DEFAULT"}},["TOP_LEVEL"]:{collapsed:!1,next:{fallbackExclusionList:"FALLBACK_EXCLUSION_LIST",packageRegistryData:"PACKAGE_REGISTRY_DATA",["*"]:"DEFAULT"}},["FALLBACK_EXCLUSION_LIST"]:{collapsed:!1,next:{["*"]:"FALLBACK_EXCLUSION_ENTRIES"}},["FALLBACK_EXCLUSION_ENTRIES"]:{collapsed:!0,next:{["*"]:"FALLBACK_EXCLUSION_DATA"}},["FALLBACK_EXCLUSION_DATA"]:{collapsed:!0,next:{["*"]:"DEFAULT"}},["PACKAGE_REGISTRY_DATA"]:{collapsed:!1,next:{["*"]:"PACKAGE_REGISTRY_ENTRIES"}},["PACKAGE_REGISTRY_ENTRIES"]:{collapsed:!0,next:{["*"]:"PACKAGE_STORE_DATA"}},["PACKAGE_STORE_DATA"]:{collapsed:!1,next:{["*"]:"PACKAGE_STORE_ENTRIES"}},["PACKAGE_STORE_ENTRIES"]:{collapsed:!0,next:{["*"]:"PACKAGE_INFORMATION_DATA"}},["PACKAGE_INFORMATION_DATA"]:{collapsed:!1,next:{packageDependencies:"PACKAGE_DEPENDENCIES",["*"]:"DEFAULT"}},["PACKAGE_DEPENDENCIES"]:{collapsed:!1,next:{["*"]:"PACKAGE_DEPENDENCY"}},["PACKAGE_DEPENDENCY"]:{collapsed:!0,next:{["*"]:"DEFAULT"}}};function BIt(t,e,r){let o="";o+="[";for(let a=0,n=t.length;a<n;++a)o+=ik(String(a),t[a],e,r).replace(/^ +/g,""),a+1<n&&(o+=", ");return o+="]",o}function vIt(t,e,r){let o=`${r} `,a="";a+=r,a+=`[ | 571 | `:"")};var OB=(o=>(o.WORKSPACES="workspaces",o.DEPENDENCIES="dependencies",o.NONE="none",o))(OB||{}),Uwe="node_modules",mm="$wsroot$";var MB=(t,e)=>{let{packageTree:r,hoistingLimits:o,errors:a,preserveSymlinksRequired:n}=LIt(t,e),u=null;if(a.length===0){let A=Owe(r,{hoistingLimits:o});u=MIt(t,A,e)}return{tree:u,errors:a,preserveSymlinksRequired:n}},mA=t=>`${t.name}@${t.reference}`,qq=t=>{let e=new Map;for(let[r,o]of t.entries())if(!o.dirList){let a=e.get(o.locator);a||(a={target:o.target,linkType:o.linkType,locations:[],aliases:o.aliases},e.set(o.locator,a)),a.locations.push(r)}for(let r of e.values())r.locations=r.locations.sort((o,a)=>{let n=o.split(J.delimiter).length,u=a.split(J.delimiter).length;return a===o?0:n!==u?u-n:a>o?1:-1});return e},_we=(t,e)=>{let r=Y.isVirtualLocator(t)?Y.devirtualizeLocator(t):t,o=Y.isVirtualLocator(e)?Y.devirtualizeLocator(e):e;return Y.areLocatorsEqual(r,o)},Hq=(t,e,r,o)=>{if(t.linkType!=="SOFT")return!1;let a=ue.toPortablePath(r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation);return J.contains(o,a)===null},NIt=t=>{let e=t.getPackageInformation(t.topLevel);if(e===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");if(t.findPackageLocator(e.packageLocation)===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let o=ue.toPortablePath(e.packageLocation.slice(0,-1)),a=new Map,n={children:new Map},u=t.getDependencyTreeRoots(),A=new Map,p=new Set,h=(v,b)=>{let E=mA(v);if(p.has(E))return;p.add(E);let R=t.getPackageInformation(v);if(R){let L=b?mA(b):"";if(mA(v)!==L&&R.linkType==="SOFT"&&!Hq(R,v,t,o)){let _=Hwe(R,v,t);(!A.get(_)||v.reference.startsWith("workspace:"))&&A.set(_,v)}for(let[_,V]of R.packageDependencies)V!==null&&(R.packagePeers.has(_)||h(t.getLocator(_,V),v))}};for(let v of u)h(v,null);let C=o.split(J.sep);for(let v of A.values()){let b=t.getPackageInformation(v),R=ue.toPortablePath(b.packageLocation.slice(0,-1)).split(J.sep).slice(C.length),L=n;for(let _ of R){let V=L.children.get(_);V||(V={children:new Map},L.children.set(_,V)),L=V}L.workspaceLocator=v}let w=(v,b)=>{if(v.workspaceLocator){let E=mA(b),R=a.get(E);R||(R=new Set,a.set(E,R)),R.add(v.workspaceLocator)}for(let E of v.children.values())w(E,v.workspaceLocator||b)};for(let v of n.children.values())w(v,n.workspaceLocator);return a},LIt=(t,e)=>{let r=[],o=!1,a=new Map,n=NIt(t),u=t.getPackageInformation(t.topLevel);if(u===null)throw new Error("Assertion failed: Expected the top-level package to have been registered");let A=t.findPackageLocator(u.packageLocation);if(A===null)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");let p=ue.toPortablePath(u.packageLocation.slice(0,-1)),h={name:A.name,identName:A.name,reference:A.reference,peerNames:u.packagePeers,dependencies:new Set,dependencyKind:1},C=new Map,w=(b,E)=>`${mA(E)}:${b}`,v=(b,E,R,L,_,V,re,ae)=>{var de,ne;let he=w(b,R),pe=C.get(he),De=!!pe;!De&&R.name===A.name&&R.reference===A.reference&&(pe=h,C.set(he,h));let ge=Hq(E,R,t,p);if(!pe){let Z=0;ge?Z=2:E.linkType==="SOFT"&&R.name.endsWith(mm)&&(Z=1),pe={name:b,identName:R.name,reference:R.reference,dependencies:new Set,peerNames:Z===1?new Set:E.packagePeers,dependencyKind:Z},C.set(he,pe)}let le;if(ge?le=2:_.linkType==="SOFT"?le=1:le=0,pe.hoistPriority=Math.max(pe.hoistPriority||0,le),ae&&!ge){let Z=mA({name:L.identName,reference:L.reference}),me=a.get(Z)||new Set;a.set(Z,me),me.add(pe.name)}let Pe=new Map(E.packageDependencies);if(e.project){let Z=e.project.workspacesByCwd.get(ue.toPortablePath(E.packageLocation.slice(0,-1)));if(Z){let me=new Set([...Array.from(Z.manifest.peerDependencies.values(),be=>Y.stringifyIdent(be)),...Array.from(Z.manifest.peerDependenciesMeta.keys())]);for(let be of me)Pe.has(be)||(Pe.set(be,V.get(be)||null),pe.peerNames.add(be))}}let g=mA({name:R.name.replace(mm,""),reference:R.reference}),ve=n.get(g);if(ve)for(let Z of ve)Pe.set(`${Z.name}${mm}`,Z.reference);(E!==_||E.linkType!=="SOFT"||!ge&&(!e.selfReferencesByCwd||e.selfReferencesByCwd.get(re)))&&L.dependencies.add(pe);let Ee=R!==A&&E.linkType==="SOFT"&&!R.name.endsWith(mm)&&!ge;if(!De&&!Ee){let Z=new Map;for(let[me,be]of Pe)if(be!==null){let ut=t.getLocator(me,be),H=t.getLocator(me.replace(mm,""),be),yt=t.getPackageInformation(H);if(yt===null)throw new Error("Assertion failed: Expected the package to have been registered");let Me=Hq(yt,ut,t,p);if(e.validateExternalSoftLinks&&e.project&&Me){yt.packageDependencies.size>0&&(o=!0);for(let[At,Oe]of yt.packageDependencies)if(Oe!==null){let x=Y.parseLocator(Array.isArray(Oe)?`${Oe[0]}@${Oe[1]}`:`${At}@${Oe}`);if(mA(x)!==mA(ut)){let I=Pe.get(At);if(I){let P=Y.parseLocator(Array.isArray(I)?`${I[0]}@${I[1]}`:`${At}@${I}`);_we(P,x)||r.push({messageName:71,text:`Cannot link ${Y.prettyIdent(e.project.configuration,Y.parseIdent(ut.name))} into ${Y.prettyLocator(e.project.configuration,Y.parseLocator(`${R.name}@${R.reference}`))} dependency ${Y.prettyLocator(e.project.configuration,x)} conflicts with parent dependency ${Y.prettyLocator(e.project.configuration,P)}`})}else{let P=Z.get(At);if(P){let y=P.target,F=Y.parseLocator(Array.isArray(y)?`${y[0]}@${y[1]}`:`${At}@${y}`);_we(F,x)||r.push({messageName:71,text:`Cannot link ${Y.prettyIdent(e.project.configuration,Y.parseIdent(ut.name))} into ${Y.prettyLocator(e.project.configuration,Y.parseLocator(`${R.name}@${R.reference}`))} dependency ${Y.prettyLocator(e.project.configuration,x)} conflicts with dependency ${Y.prettyLocator(e.project.configuration,F)} from sibling portal ${Y.prettyIdent(e.project.configuration,Y.parseIdent(P.portal.name))}`})}else Z.set(At,{target:x.reference,portal:ut})}}}}let Te=(de=e.hoistingLimitsByCwd)==null?void 0:de.get(re),Qe=Me?re:J.relative(p,ue.toPortablePath(yt.packageLocation))||wt.dot,_e=(ne=e.hoistingLimitsByCwd)==null?void 0:ne.get(Qe);v(me,yt,ut,pe,E,Pe,Qe,Te==="dependencies"||_e==="dependencies"||_e==="workspaces")}}};return v(A.name,u,A,h,u,u.packageDependencies,wt.dot,!1),{packageTree:h,hoistingLimits:a,errors:r,preserveSymlinksRequired:o}};function Hwe(t,e,r){let o=r.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?r.resolveVirtual(t.packageLocation):t.packageLocation;return ue.toPortablePath(o||t.packageLocation)}function OIt(t,e,r){let o=e.getLocator(t.name.replace(mm,""),t.reference),a=e.getPackageInformation(o);if(a===null)throw new Error("Assertion failed: Expected the package to be registered");return r.pnpifyFs?{linkType:"SOFT",target:ue.toPortablePath(a.packageLocation)}:{linkType:a.linkType,target:Hwe(a,t,e)}}var MIt=(t,e,r)=>{let o=new Map,a=(C,w,v)=>{let{linkType:b,target:E}=OIt(C,t,r);return{locator:mA(C),nodePath:w,target:E,linkType:b,aliases:v}},n=C=>{let[w,v]=C.split("/");return v?{scope:Li(w),name:Li(v)}:{scope:null,name:Li(w)}},u=new Set,A=(C,w,v)=>{if(u.has(C))return;u.add(C);let b=Array.from(C.references).sort().join("#");for(let E of C.dependencies){let R=Array.from(E.references).sort().join("#");if(E.identName===C.identName&&R===b)continue;let L=Array.from(E.references).sort(),_={name:E.identName,reference:L[0]},{name:V,scope:re}=n(E.name),ae=re?[re,V]:[V],he=J.join(w,Uwe),pe=J.join(he,...ae),De=`${v}/${_.name}`,ge=a(_,v,L.slice(1)),le=!1;if(ge.linkType==="SOFT"&&r.project){let g=r.project.workspacesByCwd.get(ge.target.slice(0,-1));le=!!(g&&!g.manifest.name)}let Pe=ge.linkType==="SOFT"&&pe.startsWith(ge.target);if(!E.name.endsWith(mm)&&!le&&!Pe){let g=o.get(pe);if(g){if(g.dirList)throw new Error(`Assertion failed: ${pe} cannot merge dir node with leaf node`);{let de=Y.parseLocator(g.locator),ne=Y.parseLocator(ge.locator);if(g.linkType!==ge.linkType)throw new Error(`Assertion failed: ${pe} cannot merge nodes with different link types ${g.nodePath}/${Y.stringifyLocator(de)} and ${v}/${Y.stringifyLocator(ne)}`);if(de.identHash!==ne.identHash)throw new Error(`Assertion failed: ${pe} cannot merge nodes with different idents ${g.nodePath}/${Y.stringifyLocator(de)} and ${v}/s${Y.stringifyLocator(ne)}`);ge.aliases=[...ge.aliases,...g.aliases,Y.parseLocator(g.locator).reference]}}o.set(pe,ge);let ve=pe.split("/"),Ee=ve.indexOf(Uwe);for(let de=ve.length-1;Ee>=0&&de>Ee;de--){let ne=ue.toPortablePath(ve.slice(0,de).join(J.sep)),Z=Li(ve[de]),me=o.get(ne);if(!me)o.set(ne,{dirList:new Set([Z])});else if(me.dirList){if(me.dirList.has(Z))break;me.dirList.add(Z)}}}A(E,ge.linkType==="SOFT"?ge.target:pe,De)}},p=a({name:e.name,reference:Array.from(e.references)[0]},"",[]),h=p.target;return o.set(h,p),A(e,h,""),o};Ke();Ke();St();St();Hc();Hl();var aj={};Yt(aj,{PnpInstaller:()=>Cm,PnpLinker:()=>vh,UnplugCommand:()=>Sh,default:()=>gwt,getPnpPath:()=>Dh,jsInstallUtils:()=>CA,pnpUtils:()=>zB,quotePathIfNeeded:()=>x1e});St();var S1e=tt(si()),P1e=Ie("url");Ke();Ke();St();St();var qwe={["DEFAULT"]:{collapsed:!1,next:{["*"]:"DEFAULT"}},["TOP_LEVEL"]:{collapsed:!1,next:{fallbackExclusionList:"FALLBACK_EXCLUSION_LIST",packageRegistryData:"PACKAGE_REGISTRY_DATA",["*"]:"DEFAULT"}},["FALLBACK_EXCLUSION_LIST"]:{collapsed:!1,next:{["*"]:"FALLBACK_EXCLUSION_ENTRIES"}},["FALLBACK_EXCLUSION_ENTRIES"]:{collapsed:!0,next:{["*"]:"FALLBACK_EXCLUSION_DATA"}},["FALLBACK_EXCLUSION_DATA"]:{collapsed:!0,next:{["*"]:"DEFAULT"}},["PACKAGE_REGISTRY_DATA"]:{collapsed:!1,next:{["*"]:"PACKAGE_REGISTRY_ENTRIES"}},["PACKAGE_REGISTRY_ENTRIES"]:{collapsed:!0,next:{["*"]:"PACKAGE_STORE_DATA"}},["PACKAGE_STORE_DATA"]:{collapsed:!1,next:{["*"]:"PACKAGE_STORE_ENTRIES"}},["PACKAGE_STORE_ENTRIES"]:{collapsed:!0,next:{["*"]:"PACKAGE_INFORMATION_DATA"}},["PACKAGE_INFORMATION_DATA"]:{collapsed:!1,next:{packageDependencies:"PACKAGE_DEPENDENCIES",["*"]:"DEFAULT"}},["PACKAGE_DEPENDENCIES"]:{collapsed:!1,next:{["*"]:"PACKAGE_DEPENDENCY"}},["PACKAGE_DEPENDENCY"]:{collapsed:!0,next:{["*"]:"DEFAULT"}}};function UIt(t,e,r){let o="";o+="[";for(let a=0,n=t.length;a<n;++a)o+=hk(String(a),t[a],e,r).replace(/^ +/g,""),a+1<n&&(o+=", ");return o+="]",o}function _It(t,e,r){let o=`${r} `,a="";a+=r,a+=`[ |
572 | `;for(let n=0,u=t.length;n<u;++n)a+=o+ik(String(n),t[n],e,o).replace(/^ +/,""),n+1<u&&(a+=","),a+=` | 572 | `;for(let n=0,u=t.length;n<u;++n)a+=o+hk(String(n),t[n],e,o).replace(/^ +/,""),n+1<u&&(a+=","),a+=` |
573 | `;return a+=r,a+="]",a}function DIt(t,e,r){let o=Object.keys(t),a="";a+="{";for(let n=0,u=o.length,A=0;n<u;++n){let p=o[n],h=t[p];typeof h>"u"||(A!==0&&(a+=", "),a+=JSON.stringify(p),a+=": ",a+=ik(p,h,e,r).replace(/^ +/g,""),A+=1)}return a+="}",a}function SIt(t,e,r){let o=Object.keys(t),a=`${r} `,n="";n+=r,n+=`{ | 573 | `;return a+=r,a+="]",a}function HIt(t,e,r){let o=Object.keys(t),a="";a+="{";for(let n=0,u=o.length,A=0;n<u;++n){let p=o[n],h=t[p];typeof h>"u"||(A!==0&&(a+=", "),a+=JSON.stringify(p),a+=": ",a+=hk(p,h,e,r).replace(/^ +/g,""),A+=1)}return a+="}",a}function qIt(t,e,r){let o=Object.keys(t),a=`${r} `,n="";n+=r,n+=`{ |
574 | `;let u=0;for(let A=0,p=o.length;A<p;++A){let h=o[A],C=t[h];typeof C>"u"||(u!==0&&(n+=",",n+=` | 574 | `;let u=0;for(let A=0,p=o.length;A<p;++A){let h=o[A],C=t[h];typeof C>"u"||(u!==0&&(n+=",",n+=` |
575 | `),n+=a,n+=JSON.stringify(h),n+=": ",n+=ik(h,C,e,a).replace(/^ +/g,""),u+=1)}return u!==0&&(n+=` | 575 | `),n+=a,n+=JSON.stringify(h),n+=": ",n+=hk(h,C,e,a).replace(/^ +/g,""),u+=1)}return u!==0&&(n+=` |
576 | `),n+=r,n+="}",n}function ik(t,e,r,o){let{next:a}=Twe[r],n=a[t]||a["*"];return Nwe(e,n,o)}function Nwe(t,e,r){let{collapsed:o}=Twe[e];return Array.isArray(t)?o?BIt(t,e,r):vIt(t,e,r):typeof t=="object"&&t!==null?o?DIt(t,e,r):SIt(t,e,r):JSON.stringify(t)}function Lwe(t){return Nwe(t,"TOP_LEVEL","")}function RB(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let o=[];for(let n of e)o.push(r.map(u=>n(u)));let a=r.map((n,u)=>u);return a.sort((n,u)=>{for(let A of o){let p=A[n]<A[u]?-1:A[n]>A[u]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function PIt(t){let e=new Map,r=RB(t.fallbackExclusionList||[],[({name:o,reference:a})=>o,({name:o,reference:a})=>a]);for(let{name:o,reference:a}of r){let n=e.get(o);typeof n>"u"&&e.set(o,n=new Set),n.add(a)}return Array.from(e).map(([o,a])=>[o,Array.from(a)])}function xIt(t){return RB(t.fallbackPool||[],([e])=>e)}function bIt(t){let e=[];for(let[r,o]of RB(t.packageRegistry,([a])=>a===null?"0":`1${a}`)){let a=[];e.push([r,a]);for(let[n,{packageLocation:u,packageDependencies:A,packagePeers:p,linkType:h,discardFromLookup:C}]of RB(o,([w])=>w===null?"0":`1${w}`)){let w=[];r!==null&&n!==null&&!A.has(r)&&w.push([r,n]);for(let[E,R]of RB(A.entries(),([L])=>L))w.push([E,R]);let v=p&&p.size>0?Array.from(p):void 0,b=C||void 0;a.push([n,{packageLocation:u,packageDependencies:w,packagePeers:v,linkType:h,discardFromLookup:b}])}}return e}function TB(t){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost."],dependencyTreeRoots:t.dependencyTreeRoots,enableTopLevelFallback:t.enableTopLevelFallback||!1,ignorePatternData:t.ignorePattern||null,fallbackExclusionList:PIt(t),fallbackPool:xIt(t),packageRegistryData:bIt(t)}}var Uwe=tt(Mwe());function _we(t,e){return[t?`${t} | 576 | `),n+=r,n+="}",n}function hk(t,e,r,o){let{next:a}=qwe[r],n=a[t]||a["*"];return jwe(e,n,o)}function jwe(t,e,r){let{collapsed:o}=qwe[e];return Array.isArray(t)?o?UIt(t,e,r):_It(t,e,r):typeof t=="object"&&t!==null?o?HIt(t,e,r):qIt(t,e,r):JSON.stringify(t)}function Gwe(t){return jwe(t,"TOP_LEVEL","")}function UB(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let o=[];for(let n of e)o.push(r.map(u=>n(u)));let a=r.map((n,u)=>u);return a.sort((n,u)=>{for(let A of o){let p=A[n]<A[u]?-1:A[n]>A[u]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function jIt(t){let e=new Map,r=UB(t.fallbackExclusionList||[],[({name:o,reference:a})=>o,({name:o,reference:a})=>a]);for(let{name:o,reference:a}of r){let n=e.get(o);typeof n>"u"&&e.set(o,n=new Set),n.add(a)}return Array.from(e).map(([o,a])=>[o,Array.from(a)])}function GIt(t){return UB(t.fallbackPool||[],([e])=>e)}function WIt(t){let e=[];for(let[r,o]of UB(t.packageRegistry,([a])=>a===null?"0":`1${a}`)){let a=[];e.push([r,a]);for(let[n,{packageLocation:u,packageDependencies:A,packagePeers:p,linkType:h,discardFromLookup:C}]of UB(o,([w])=>w===null?"0":`1${w}`)){let w=[];r!==null&&n!==null&&!A.has(r)&&w.push([r,n]);for(let[E,R]of UB(A.entries(),([L])=>L))w.push([E,R]);let v=p&&p.size>0?Array.from(p):void 0,b=C||void 0;a.push([n,{packageLocation:u,packageDependencies:w,packagePeers:v,linkType:h,discardFromLookup:b}])}}return e}function _B(t){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost."],dependencyTreeRoots:t.dependencyTreeRoots,enableTopLevelFallback:t.enableTopLevelFallback||!1,ignorePatternData:t.ignorePattern||null,fallbackExclusionList:jIt(t),fallbackPool:GIt(t),packageRegistryData:WIt(t)}}var Kwe=tt(Ywe());function Vwe(t,e){return[t?`${t} |
577 | `:"",`/* eslint-disable */ | 577 | `:"",`/* eslint-disable */ |
578 | `,`"use strict"; | 578 | `,`"use strict"; |
579 | `,` | 579 | `,` |
580 | `,e,` | 580 | `,e,` |
581 | `,(0,Uwe.default)()].join("")}function QIt(t){return JSON.stringify(t,null,2)}function kIt(t){return`'${t.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,`\\ | 581 | `,(0,Kwe.default)()].join("")}function YIt(t){return JSON.stringify(t,null,2)}function KIt(t){return`'${t.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\n/g,`\\ |
582 | `)}'`}function FIt(t){return[`const RAW_RUNTIME_STATE = | 582 | `)}'`}function VIt(t){return[`const RAW_RUNTIME_STATE = |
583 | `,`${kIt(Lwe(t))}; | 583 | `,`${KIt(Gwe(t))}; |
584 | 584 | ||
585 | `,`function $$SETUP_STATE(hydrateRuntimeState, basePath) { | 585 | `,`function $$SETUP_STATE(hydrateRuntimeState, basePath) { |
586 | `,` return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname}); | 586 | `,` return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname}); |
587 | `,`} | 587 | `,`} |
588 | `].join("")}function RIt(){return[`function $$SETUP_STATE(hydrateRuntimeState, basePath) { | 588 | `].join("")}function JIt(){return[`function $$SETUP_STATE(hydrateRuntimeState, basePath) { |
589 | `,` return hydrateRuntimeState(require(${JSON.stringify(`./${Lr.pnpData}`)}), {basePath: basePath || __dirname}); | 589 | `,` return hydrateRuntimeState(require(${JSON.stringify(`./${Lr.pnpData}`)}), {basePath: basePath || __dirname}); |
590 | `,`} | 590 | `,`} |
591 | `].join("")}function Hwe(t){let e=TB(t),r=FIt(e);return _we(t.shebang,r)}function qwe(t){let e=TB(t),r=RIt(),o=_we(t.shebang,r);return{dataFile:QIt(e),loaderFile:o}}bt();function Hq(t,{basePath:e}){let r=Ae.toPortablePath(e),o=V.resolve(r),a=t.ignorePatternData!==null?new RegExp(t.ignorePatternData):null,n=new Map,u=new Map(t.packageRegistryData.map(([w,v])=>[w,new Map(v.map(([b,E])=>{if(w===null!=(b===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let R=E.discardFromLookup??!1,L={name:w,reference:b},_=n.get(E.packageLocation);_?(_.discardFromLookup=_.discardFromLookup&&R,R||(_.locator=L)):n.set(E.packageLocation,{locator:L,discardFromLookup:R});let J=null;return[b,{packageDependencies:new Map(E.packageDependencies),packagePeers:new Set(E.packagePeers),linkType:E.linkType,discardFromLookup:R,get packageLocation(){return J||(J=V.join(o,E.packageLocation))}}]}))])),A=new Map(t.fallbackExclusionList.map(([w,v])=>[w,new Set(v)])),p=new Map(t.fallbackPool),h=t.dependencyTreeRoots,C=t.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:h,enableTopLevelFallback:C,fallbackExclusionList:A,fallbackPool:p,ignorePattern:a,packageLocatorsByLocations:n,packageRegistry:u}}bt();bt();var UB=Ie("module");function RC(t,e){if(typeof t=="string")return t;if(t){let r,o;if(Array.isArray(t)){for(r=0;r<t.length;r++)if(o=RC(t[r],e))return o}else for(r in t)if(e.has(r))return RC(t[r],e)}}function hm(t,e,r){throw new Error(r?`No known conditions for "${e}" entry in "${t}" package`:`Missing "${e}" export in "${t}" package`)}function TIt(t,e){return e===t?".":e[0]==="."?e:e.replace(new RegExp("^"+t+"/"),"./")}function jwe(t,e=".",r={}){let{name:o,exports:a}=t;if(a){let{browser:n,require:u,unsafe:A,conditions:p=[]}=r,h=TIt(o,e);if(h[0]!=="."&&(h="./"+h),typeof a=="string")return h==="."?a:hm(o,h);let C=new Set(["default",...p]);A||C.add(u?"require":"import"),A||C.add(n?"browser":"node");let w,v,b=!1;for(w in a){b=w[0]!==".";break}if(b)return h==="."?RC(a,C)||hm(o,h,1):hm(o,h);if(v=a[h])return RC(v,C)||hm(o,h,1);for(w in a){if(v=w[w.length-1],v==="/"&&h.startsWith(w))return(v=RC(a[w],C))?v+h.substring(w.length):hm(o,h,1);if(v==="*"&&h.startsWith(w.slice(0,-1))&&h.substring(w.length-1).length>0)return(v=RC(a[w],C))?v.replace("*",h.substring(w.length-1)):hm(o,h,1)}return hm(o,h)}}var fk=Ie("url"),Yq=Ie("util");var cu=Ie("url");var zwe=tt(Ie("assert"));var Gwe=Array.isArray,NB=JSON.stringify,qq=Object.getOwnPropertyNames,TC=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),jq=(t,e)=>RegExp.prototype.exec.call(t,e),Gq=(t,...e)=>RegExp.prototype[Symbol.replace].apply(t,e),LB=(t,...e)=>String.prototype.endsWith.apply(t,e),Wwe=(t,...e)=>String.prototype.includes.apply(t,e),Ywe=(t,...e)=>String.prototype.lastIndexOf.apply(t,e),sk=(t,...e)=>String.prototype.indexOf.apply(t,e),Kwe=(t,...e)=>String.prototype.replace.apply(t,e),OB=(t,...e)=>String.prototype.slice.apply(t,e),ep=(t,...e)=>String.prototype.startsWith.apply(t,e),Jwe=Map,Vwe=JSON.parse;function ok(t,e,r){return class extends r{constructor(...o){super(e(...o)),this.code=t,this.name=`${r.name} [${t}]`}}}var Xwe=ok("ERR_PACKAGE_IMPORT_NOT_DEFINED",(t,e,r)=>`Package import specifier "${t}" is not defined${e?` in package ${e}package.json`:""} imported from ${r}`,TypeError),Wq=ok("ERR_INVALID_MODULE_SPECIFIER",(t,e,r=void 0)=>`Invalid module "${t}" ${e}${r?` imported from ${r}`:""}`,TypeError),Zwe=ok("ERR_INVALID_PACKAGE_TARGET",(t,e,r,o=!1,a=void 0)=>{let n=typeof r=="string"&&!o&&r.length&&!ep(r,"./");return e==="."?((0,zwe.default)(o===!1),`Invalid "exports" main target ${NB(r)} defined in the package config ${t}package.json${a?` imported from ${a}`:""}${n?'; targets must start with "./"':""}`):`Invalid "${o?"imports":"exports"}" target ${NB(r)} defined for '${e}' in the package config ${t}package.json${a?` imported from ${a}`:""}${n?'; targets must start with "./"':""}`},Error),ak=ok("ERR_INVALID_PACKAGE_CONFIG",(t,e,r)=>`Invalid package config ${t}${e?` while importing ${e}`:""}${r?`. ${r}`:""}`,Error);var ck=Ie("url");function $we(t,e){let r=Object.create(null);for(let o=0;o<e.length;o++){let a=e[o];TC(t,a)&&(r[a]=t[a])}return r}var lk=new Jwe;function NIt(t,e,r,o){let a=lk.get(t);if(a!==void 0)return a;let n=o(t);if(n===void 0){let b={pjsonPath:t,exists:!1,main:void 0,name:void 0,type:"none",exports:void 0,imports:void 0};return lk.set(t,b),b}let u;try{u=Vwe(n)}catch(b){throw new ak(t,(r?`"${e}" from `:"")+(0,ck.fileURLToPath)(r||e),b.message)}let{imports:A,main:p,name:h,type:C}=$we(u,["imports","main","name","type"]),w=TC(u,"exports")?u.exports:void 0;(typeof A!="object"||A===null)&&(A=void 0),typeof p!="string"&&(p=void 0),typeof h!="string"&&(h=void 0),C!=="module"&&C!=="commonjs"&&(C="none");let v={pjsonPath:t,exists:!0,main:p,name:h,type:C,exports:w,imports:A};return lk.set(t,v),v}function e1e(t,e){let r=new URL("./package.json",t);for(;;){let n=r.pathname;if(LB(n,"node_modules/package.json"))break;let u=NIt((0,ck.fileURLToPath)(r),t,void 0,e);if(u.exists)return u;let A=r;if(r=new URL("../package.json",r),r.pathname===A.pathname)break}let o=(0,ck.fileURLToPath)(r),a={pjsonPath:o,exists:!1,main:void 0,name:void 0,type:"none",exports:void 0,imports:void 0};return lk.set(o,a),a}function LIt(t,e,r){throw new Xwe(t,e&&(0,cu.fileURLToPath)(new URL(".",e)),(0,cu.fileURLToPath)(r))}function OIt(t,e,r,o){let a=`request is not a valid subpath for the "${r?"imports":"exports"}" resolution of ${(0,cu.fileURLToPath)(e)}`;throw new Wq(t,a,o&&(0,cu.fileURLToPath)(o))}function MB(t,e,r,o,a){throw typeof e=="object"&&e!==null?e=NB(e,null,""):e=`${e}`,new Zwe((0,cu.fileURLToPath)(new URL(".",r)),t,e,o,a&&(0,cu.fileURLToPath)(a))}var t1e=/(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\|\/|$)/i,r1e=/\*/g;function MIt(t,e,r,o,a,n,u,A){if(e!==""&&!n&&t[t.length-1]!=="/"&&MB(r,t,o,u,a),!ep(t,"./")){if(u&&!ep(t,"../")&&!ep(t,"/")){let w=!1;try{new URL(t),w=!0}catch{}if(!w)return n?Gq(r1e,t,()=>e):t+e}MB(r,t,o,u,a)}jq(t1e,OB(t,2))!==null&&MB(r,t,o,u,a);let p=new URL(t,o),h=p.pathname,C=new URL(".",o).pathname;if(ep(h,C)||MB(r,t,o,u,a),e==="")return p;if(jq(t1e,e)!==null){let w=n?Kwe(r,"*",()=>e):r+e;OIt(w,o,u,a)}return n?new URL(Gq(r1e,p.href,()=>e)):new URL(e,p)}function UIt(t){let e=+t;return`${e}`!==t?!1:e>=0&&e<4294967295}function uk(t,e,r,o,a,n,u,A){if(typeof e=="string")return MIt(e,r,o,t,a,n,u,A);if(Gwe(e)){if(e.length===0)return null;let p;for(let h=0;h<e.length;h++){let C=e[h],w;try{w=uk(t,C,r,o,a,n,u,A)}catch(v){if(p=v,v.code==="ERR_INVALID_PACKAGE_TARGET")continue;throw v}if(w!==void 0){if(w===null){p=null;continue}return w}}if(p==null)return p;throw p}else if(typeof e=="object"&&e!==null){let p=qq(e);for(let h=0;h<p.length;h++){let C=p[h];if(UIt(C))throw new ak((0,cu.fileURLToPath)(t),a,'"exports" cannot contain numeric property keys.')}for(let h=0;h<p.length;h++){let C=p[h];if(C==="default"||A.has(C)){let w=e[C],v=uk(t,w,r,o,a,n,u,A);if(v===void 0)continue;return v}}return}else if(e===null)return null;MB(o,e,t,u,a)}function _It(t,e){let r=sk(t,"*"),o=sk(e,"*"),a=r===-1?t.length:r+1,n=o===-1?e.length:o+1;return a>n?-1:n>a||r===-1?1:o===-1||t.length>e.length?-1:e.length>t.length?1:0}function n1e({name:t,base:e,conditions:r,readFileSyncFn:o}){if(t==="#"||ep(t,"#/")||LB(t,"/")){let u="is not a valid internal imports specifier name";throw new Wq(t,u,(0,cu.fileURLToPath)(e))}let a,n=e1e(e,o);if(n.exists){a=(0,cu.pathToFileURL)(n.pjsonPath);let u=n.imports;if(u)if(TC(u,t)&&!Wwe(t,"*")){let A=uk(a,u[t],"",t,e,!1,!0,r);if(A!=null)return A}else{let A="",p,h=qq(u);for(let C=0;C<h.length;C++){let w=h[C],v=sk(w,"*");if(v!==-1&&ep(t,OB(w,0,v))){let b=OB(w,v+1);t.length>=w.length&&LB(t,b)&&_It(A,w)===1&&Ywe(w,"*")===v&&(A=w,p=OB(t,v,t.length-b.length))}}if(A){let C=u[A],w=uk(a,C,p,A,e,!0,!0,r);if(w!=null)return w}}}LIt(t,a,e)}bt();var HIt=new Set(["BUILTIN_NODE_RESOLUTION_FAILED","MISSING_DEPENDENCY","MISSING_PEER_DEPENDENCY","QUALIFIED_PATH_RESOLUTION_FAILED","UNDECLARED_DEPENDENCY"]);function Xi(t,e,r={},o){o??(o=HIt.has(t)?"MODULE_NOT_FOUND":t);let a={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:{...a,value:o},pnpCode:{...a,value:t},data:{...a,value:r}})}function uu(t){return Ae.normalize(Ae.fromPortablePath(t))}bt();var s1e=Ie("module");var[Au,gm]=process.versions.node.split(".").map(t=>parseInt(t,10)),mVt=Au>16||Au===16&&gm>=12,yVt=Au>17||Au===17&&gm>=5||Au===16&&gm>=15,EVt=Au>17||Au===17&&gm>=1||Au===16&&gm>14,i1e=Au>19||Au===19&&gm>=2||Au===18&&gm>=13;var qIt=new Set(s1e.Module.builtinModules||Object.keys(process.binding("natives"))),Ak=t=>t.startsWith("node:")||qIt.has(t);function o1e(t){if(process.env.WATCH_REPORT_DEPENDENCIES&&process.send)if(t=t.map(e=>Ae.fromPortablePath(pi.resolveVirtual(Ae.toPortablePath(e)))),i1e)process.send({"watch:require":t});else for(let e of t)process.send({"watch:require":e})}function Kq(t,e){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,o=Number(process.env.PNP_DEBUG_LEVEL),a=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,n=/^(\/|\.{1,2}(\/|$))/,u=/\/$/,A=/^\.{0,2}\//,p={name:null,reference:null},h=[],C=new Set;if(t.enableTopLevelFallback===!0&&h.push(p),e.compatibilityMode!==!1)for(let Me of["react-scripts","gatsby"]){let Te=t.packageRegistry.get(Me);if(Te)for(let Qe of Te.keys()){if(Qe===null)throw new Error("Assertion failed: This reference shouldn't be null");h.push({name:Me,reference:Qe})}}let{ignorePattern:w,packageRegistry:v,packageLocatorsByLocations:b}=t;function E(Me,Te){return{fn:Me,args:Te,error:null,result:null}}function R(Me){var At,Le,x,I;let Te=((Le=(At=process.stderr)==null?void 0:At.hasColors)==null?void 0:Le.call(At))??process.stdout.isTTY,Qe=(P,y)=>`\x1B[${P}m${y}\x1B[0m`,Ue=Me.error;console.error(Ue?Qe("31;1",`\u2716 ${(x=Me.error)==null?void 0:x.message.replace(/\n.*/s,"")}`):Qe("33;1","\u203C Resolution")),Me.args.length>0&&console.error();for(let P of Me.args)console.error(` ${Qe("37;1","In \u2190")} ${(0,Yq.inspect)(P,{colors:Te,compact:!0})}`);Me.result&&(console.error(),console.error(` ${Qe("37;1","Out \u2192")} ${(0,Yq.inspect)(Me.result,{colors:Te,compact:!0})}`));let je=((I=new Error().stack.match(/(?<=^ +)at.*/gm))==null?void 0:I.slice(2))??[];if(je.length>0){console.error();for(let P of je)console.error(` ${Qe("38;5;244",P)}`)}console.error()}function L(Me,Te){if(e.allowDebug===!1)return Te;if(Number.isFinite(o)){if(o>=2)return(...Qe)=>{let Ue=E(Me,Qe);try{return Ue.result=Te(...Qe)}catch(je){throw Ue.error=je}finally{R(Ue)}};if(o>=1)return(...Qe)=>{try{return Te(...Qe)}catch(Ue){let je=E(Me,Qe);throw je.error=Ue,R(je),Ue}}}return Te}function _(Me){let Te=g(Me);if(!Te)throw Xi("INTERNAL","Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return Te}function J(Me){if(Me.name===null)return!0;for(let Te of t.dependencyTreeRoots)if(Te.name===Me.name&&Te.reference===Me.reference)return!0;return!1}let re=new Set(["default","node","require"]);function oe(Me,Te=re){let Qe=de(V.join(Me,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(Qe===null)throw Xi("INTERNAL",`The locator that owns the "${Me}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:Ue}=_(Qe),je=V.join(Ue,Lr.manifest);if(!e.fakeFs.existsSync(je))return null;let At=JSON.parse(e.fakeFs.readFileSync(je,"utf8")),Le=V.contains(Ue,Me);if(Le===null)throw Xi("INTERNAL","unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");A.test(Le)||(Le=`./${Le}`);let x;try{x=jwe(At,V.normalize(Le),{conditions:Te,unsafe:!0})}catch(I){throw Xi("EXPORTS_RESOLUTION_FAILED",I.message,{unqualifiedPath:uu(Me),locator:Qe,pkgJson:At,subpath:uu(Le),conditions:Te},"ERR_PACKAGE_PATH_NOT_EXPORTED")}return typeof x=="string"?V.join(Ue,x):null}function pe(Me,Te,{extensions:Qe}){let Ue;try{Te.push(Me),Ue=e.fakeFs.statSync(Me)}catch{}if(Ue&&!Ue.isDirectory())return e.fakeFs.realpathSync(Me);if(Ue&&Ue.isDirectory()){let je;try{je=JSON.parse(e.fakeFs.readFileSync(V.join(Me,Lr.manifest),"utf8"))}catch{}let At;if(je&&je.main&&(At=V.resolve(Me,je.main)),At&&At!==Me){let Le=pe(At,Te,{extensions:Qe});if(Le!==null)return Le}}for(let je=0,At=Qe.length;je<At;je++){let Le=`${Me}${Qe[je]}`;if(Te.push(Le),e.fakeFs.existsSync(Le))return Le}if(Ue&&Ue.isDirectory())for(let je=0,At=Qe.length;je<At;je++){let Le=V.format({dir:Me,name:"index",ext:Qe[je]});if(Te.push(Le),e.fakeFs.existsSync(Le))return Le}return null}function he(Me){let Te=new UB.Module(Me,null);return Te.filename=Me,Te.paths=UB.Module._nodeModulePaths(Me),Te}function ve(Me,Te){return Te.endsWith("/")&&(Te=V.join(Te,"internal.js")),UB.Module._resolveFilename(Ae.fromPortablePath(Me),he(Ae.fromPortablePath(Te)),!1,{plugnplay:!1})}function ge(Me){if(w===null)return!1;let Te=V.contains(t.basePath,Me);return Te===null?!1:!!w.test(Te.replace(/\/$/,""))}let le={std:3,resolveVirtual:1,getAllLocators:1},Pe=p;function g({name:Me,reference:Te}){let Qe=v.get(Me);if(!Qe)return null;let Ue=Qe.get(Te);return Ue||null}function De({name:Me,reference:Te}){let Qe=[];for(let[Ue,je]of v)if(Ue!==null)for(let[At,Le]of je)At===null||Le.packageDependencies.get(Me)!==Te||Ue===Me&&At===Te||Qe.push({name:Ue,reference:At});return Qe}function Ee(Me,Te){let Qe=new Map,Ue=new Set,je=Le=>{let x=JSON.stringify(Le.name);if(Ue.has(x))return;Ue.add(x);let I=De(Le);for(let P of I)if(_(P).packagePeers.has(Me))je(P);else{let F=Qe.get(P.name);typeof F>"u"&&Qe.set(P.name,F=new Set),F.add(P.reference)}};je(Te);let At=[];for(let Le of[...Qe.keys()].sort())for(let x of[...Qe.get(Le)].sort())At.push({name:Le,reference:x});return At}function de(Me,{resolveIgnored:Te=!1,includeDiscardFromLookup:Qe=!1}={}){if(ge(Me)&&!Te)return null;let Ue=V.relative(t.basePath,Me);Ue.match(n)||(Ue=`./${Ue}`),Ue.endsWith("/")||(Ue=`${Ue}/`);do{let je=b.get(Ue);if(typeof je>"u"||je.discardFromLookup&&!Qe){Ue=Ue.substring(0,Ue.lastIndexOf("/",Ue.length-2)+1);continue}return je.locator}while(Ue!=="");return null}function ne(Me){try{return e.fakeFs.readFileSync(Ae.toPortablePath(Me),"utf8")}catch(Te){if(Te.code==="ENOENT")return;throw Te}}function Z(Me,Te,{considerBuiltins:Qe=!0}={}){if(Me.startsWith("#"))throw new Error("resolveToUnqualified can not handle private import mappings");if(Me==="pnpapi")return Ae.toPortablePath(e.pnpapiResolution);if(Qe&&Ak(Me))return null;let Ue=uu(Me),je=Te&&uu(Te);if(Te&&ge(Te)&&(!V.isAbsolute(Me)||de(Me)===null)){let x=ve(Me,Te);if(x===!1)throw Xi("BUILTIN_NODE_RESOLUTION_FAILED",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) | 591 | `].join("")}function Jwe(t){let e=_B(t),r=VIt(e);return Vwe(t.shebang,r)}function zwe(t){let e=_B(t),r=JIt(),o=Vwe(t.shebang,r);return{dataFile:YIt(e),loaderFile:o}}St();function Gq(t,{basePath:e}){let r=ue.toPortablePath(e),o=J.resolve(r),a=t.ignorePatternData!==null?new RegExp(t.ignorePatternData):null,n=new Map,u=new Map(t.packageRegistryData.map(([w,v])=>[w,new Map(v.map(([b,E])=>{if(w===null!=(b===null))throw new Error("Assertion failed: The name and reference should be null, or neither should");let R=E.discardFromLookup??!1,L={name:w,reference:b},_=n.get(E.packageLocation);_?(_.discardFromLookup=_.discardFromLookup&&R,R||(_.locator=L)):n.set(E.packageLocation,{locator:L,discardFromLookup:R});let V=null;return[b,{packageDependencies:new Map(E.packageDependencies),packagePeers:new Set(E.packagePeers),linkType:E.linkType,discardFromLookup:R,get packageLocation(){return V||(V=J.join(o,E.packageLocation))}}]}))])),A=new Map(t.fallbackExclusionList.map(([w,v])=>[w,new Set(v)])),p=new Map(t.fallbackPool),h=t.dependencyTreeRoots,C=t.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:h,enableTopLevelFallback:C,fallbackExclusionList:A,fallbackPool:p,ignorePattern:a,packageLocatorsByLocations:n,packageRegistry:u}}St();St();var VB=Ie("module"),Em=Ie("url"),ej=Ie("util");var No=Ie("url");var e1e=tt(Ie("assert"));var Wq=Array.isArray,HB=JSON.stringify,qB=Object.getOwnPropertyNames,ym=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),Yq=(t,e)=>RegExp.prototype.exec.call(t,e),Kq=(t,...e)=>RegExp.prototype[Symbol.replace].apply(t,e),wh=(t,...e)=>String.prototype.endsWith.apply(t,e),Vq=(t,...e)=>String.prototype.includes.apply(t,e),Jq=(t,...e)=>String.prototype.lastIndexOf.apply(t,e),jB=(t,...e)=>String.prototype.indexOf.apply(t,e),Xwe=(t,...e)=>String.prototype.replace.apply(t,e),Bh=(t,...e)=>String.prototype.slice.apply(t,e),yA=(t,...e)=>String.prototype.startsWith.apply(t,e),Zwe=Map,$we=JSON.parse;function GB(t,e,r){return class extends r{constructor(...o){super(e(...o)),this.code=t,this.name=`${r.name} [${t}]`}}}var t1e=GB("ERR_PACKAGE_IMPORT_NOT_DEFINED",(t,e,r)=>`Package import specifier "${t}" is not defined${e?` in package ${e}package.json`:""} imported from ${r}`,TypeError),zq=GB("ERR_INVALID_MODULE_SPECIFIER",(t,e,r=void 0)=>`Invalid module "${t}" ${e}${r?` imported from ${r}`:""}`,TypeError),r1e=GB("ERR_INVALID_PACKAGE_TARGET",(t,e,r,o=!1,a=void 0)=>{let n=typeof r=="string"&&!o&&r.length&&!yA(r,"./");return e==="."?((0,e1e.default)(o===!1),`Invalid "exports" main target ${HB(r)} defined in the package config ${t}package.json${a?` imported from ${a}`:""}${n?'; targets must start with "./"':""}`):`Invalid "${o?"imports":"exports"}" target ${HB(r)} defined for '${e}' in the package config ${t}package.json${a?` imported from ${a}`:""}${n?'; targets must start with "./"':""}`},Error),WB=GB("ERR_INVALID_PACKAGE_CONFIG",(t,e,r)=>`Invalid package config ${t}${e?` while importing ${e}`:""}${r?`. ${r}`:""}`,Error),n1e=GB("ERR_PACKAGE_PATH_NOT_EXPORTED",(t,e,r=void 0)=>e==="."?`No "exports" main defined in ${t}package.json${r?` imported from ${r}`:""}`:`Package subpath '${e}' is not defined by "exports" in ${t}package.json${r?` imported from ${r}`:""}`,Error);var dk=Ie("url");function i1e(t,e){let r=Object.create(null);for(let o=0;o<e.length;o++){let a=e[o];ym(t,a)&&(r[a]=t[a])}return r}var gk=new Zwe;function zIt(t,e,r,o){let a=gk.get(t);if(a!==void 0)return a;let n=o(t);if(n===void 0){let b={pjsonPath:t,exists:!1,main:void 0,name:void 0,type:"none",exports:void 0,imports:void 0};return gk.set(t,b),b}let u;try{u=$we(n)}catch(b){throw new WB(t,(r?`"${e}" from `:"")+(0,dk.fileURLToPath)(r||e),b.message)}let{imports:A,main:p,name:h,type:C}=i1e(u,["imports","main","name","type"]),w=ym(u,"exports")?u.exports:void 0;(typeof A!="object"||A===null)&&(A=void 0),typeof p!="string"&&(p=void 0),typeof h!="string"&&(h=void 0),C!=="module"&&C!=="commonjs"&&(C="none");let v={pjsonPath:t,exists:!0,main:p,name:h,type:C,exports:w,imports:A};return gk.set(t,v),v}function s1e(t,e){let r=new URL("./package.json",t);for(;;){let n=r.pathname;if(wh(n,"node_modules/package.json"))break;let u=zIt((0,dk.fileURLToPath)(r),t,void 0,e);if(u.exists)return u;let A=r;if(r=new URL("../package.json",r),r.pathname===A.pathname)break}let o=(0,dk.fileURLToPath)(r),a={pjsonPath:o,exists:!1,main:void 0,name:void 0,type:"none",exports:void 0,imports:void 0};return gk.set(o,a),a}function XIt(t,e,r){throw new t1e(t,e&&(0,No.fileURLToPath)(new URL(".",e)),(0,No.fileURLToPath)(r))}function ZIt(t,e,r,o){let a=`request is not a valid subpath for the "${r?"imports":"exports"}" resolution of ${(0,No.fileURLToPath)(e)}`;throw new zq(t,a,o&&(0,No.fileURLToPath)(o))}function YB(t,e,r,o,a){throw typeof e=="object"&&e!==null?e=HB(e,null,""):e=`${e}`,new r1e((0,No.fileURLToPath)(new URL(".",r)),t,e,o,a&&(0,No.fileURLToPath)(a))}var o1e=/(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\|\/|$)/i,a1e=/\*/g;function $It(t,e,r,o,a,n,u,A){if(e!==""&&!n&&t[t.length-1]!=="/"&&YB(r,t,o,u,a),!yA(t,"./")){if(u&&!yA(t,"../")&&!yA(t,"/")){let w=!1;try{new URL(t),w=!0}catch{}if(!w)return n?Kq(a1e,t,()=>e):t+e}YB(r,t,o,u,a)}Yq(o1e,Bh(t,2))!==null&&YB(r,t,o,u,a);let p=new URL(t,o),h=p.pathname,C=new URL(".",o).pathname;if(yA(h,C)||YB(r,t,o,u,a),e==="")return p;if(Yq(o1e,e)!==null){let w=n?Xwe(r,"*",()=>e):r+e;ZIt(w,o,u,a)}return n?new URL(Kq(a1e,p.href,()=>e)):new URL(e,p)}function ewt(t){let e=+t;return`${e}`!==t?!1:e>=0&&e<4294967295}function MC(t,e,r,o,a,n,u,A){if(typeof e=="string")return $It(e,r,o,t,a,n,u,A);if(Wq(e)){if(e.length===0)return null;let p;for(let h=0;h<e.length;h++){let C=e[h],w;try{w=MC(t,C,r,o,a,n,u,A)}catch(v){if(p=v,v.code==="ERR_INVALID_PACKAGE_TARGET")continue;throw v}if(w!==void 0){if(w===null){p=null;continue}return w}}if(p==null)return p;throw p}else if(typeof e=="object"&&e!==null){let p=qB(e);for(let h=0;h<p.length;h++){let C=p[h];if(ewt(C))throw new WB((0,No.fileURLToPath)(t),a,'"exports" cannot contain numeric property keys.')}for(let h=0;h<p.length;h++){let C=p[h];if(C==="default"||A.has(C)){let w=e[C],v=MC(t,w,r,o,a,n,u,A);if(v===void 0)continue;return v}}return}else if(e===null)return null;YB(o,e,t,u,a)}function c1e(t,e){let r=jB(t,"*"),o=jB(e,"*"),a=r===-1?t.length:r+1,n=o===-1?e.length:o+1;return a>n?-1:n>a||r===-1?1:o===-1||t.length>e.length?-1:e.length>t.length?1:0}function twt(t,e,r){if(typeof t=="string"||Wq(t))return!0;if(typeof t!="object"||t===null)return!1;let o=qB(t),a=!1,n=0;for(let u=0;u<o.length;u++){let A=o[u],p=A===""||A[0]!==".";if(n++===0)a=p;else if(a!==p)throw new WB((0,No.fileURLToPath)(e),r,`"exports" cannot contain some keys starting with '.' and some not. The exports object must either be an object of package subpath keys or an object of main entry condition name keys only.`)}return a}function Xq(t,e,r){throw new n1e((0,No.fileURLToPath)(new URL(".",e)),t,r&&(0,No.fileURLToPath)(r))}var l1e=new Set;function rwt(t,e,r){let o=(0,No.fileURLToPath)(e);l1e.has(o+"|"+t)||(l1e.add(o+"|"+t),process.emitWarning(`Use of deprecated trailing slash pattern mapping "${t}" in the "exports" field module resolution of the package at ${o}${r?` imported from ${(0,No.fileURLToPath)(r)}`:""}. Mapping specifiers ending in "/" is no longer supported.`,"DeprecationWarning","DEP0155"))}function u1e({packageJSONUrl:t,packageSubpath:e,exports:r,base:o,conditions:a}){if(twt(r,t,o)&&(r={".":r}),ym(r,e)&&!Vq(e,"*")&&!wh(e,"/")){let p=r[e],h=MC(t,p,"",e,o,!1,!1,a);return h==null&&Xq(e,t,o),h}let n="",u,A=qB(r);for(let p=0;p<A.length;p++){let h=A[p],C=jB(h,"*");if(C!==-1&&yA(e,Bh(h,0,C))){wh(e,"/")&&rwt(e,t,o);let w=Bh(h,C+1);e.length>=h.length&&wh(e,w)&&c1e(n,h)===1&&Jq(h,"*")===C&&(n=h,u=Bh(e,C,e.length-w.length))}}if(n){let p=r[n],h=MC(t,p,u,n,o,!0,!1,a);return h==null&&Xq(e,t,o),h}Xq(e,t,o)}function A1e({name:t,base:e,conditions:r,readFileSyncFn:o}){if(t==="#"||yA(t,"#/")||wh(t,"/")){let u="is not a valid internal imports specifier name";throw new zq(t,u,(0,No.fileURLToPath)(e))}let a,n=s1e(e,o);if(n.exists){a=(0,No.pathToFileURL)(n.pjsonPath);let u=n.imports;if(u)if(ym(u,t)&&!Vq(t,"*")){let A=MC(a,u[t],"",t,e,!1,!0,r);if(A!=null)return A}else{let A="",p,h=qB(u);for(let C=0;C<h.length;C++){let w=h[C],v=jB(w,"*");if(v!==-1&&yA(t,Bh(w,0,v))){let b=Bh(w,v+1);t.length>=w.length&&wh(t,b)&&c1e(A,w)===1&&Jq(w,"*")===v&&(A=w,p=Bh(t,v,t.length-b.length))}}if(A){let C=u[A],w=MC(a,C,p,A,e,!0,!0,r);if(w!=null)return w}}}XIt(t,a,e)}St();var nwt=new Set(["BUILTIN_NODE_RESOLUTION_FAILED","MISSING_DEPENDENCY","MISSING_PEER_DEPENDENCY","QUALIFIED_PATH_RESOLUTION_FAILED","UNDECLARED_DEPENDENCY"]);function Xi(t,e,r={},o){o??(o=nwt.has(t)?"MODULE_NOT_FOUND":t);let a={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:{...a,value:o},pnpCode:{...a,value:t},data:{...a,value:r}})}function fu(t){return ue.normalize(ue.fromPortablePath(t))}var g1e=tt(p1e());function d1e(t){return iwt(),$q[t]}var $q;function iwt(){$q||($q={"--conditions":[],...h1e(swt()),...h1e(process.execArgv)})}function h1e(t){return(0,g1e.default)({"--conditions":[String],"-C":"--conditions"},{argv:t,permissive:!0})}function swt(){let t=[],e=owt(process.env.NODE_OPTIONS||"",t);return t.length,e}function owt(t,e){let r=[],o=!1,a=!0;for(let n=0;n<t.length;++n){let u=t[n];if(u==="\\"&&o){if(n+1===t.length)return e.push(`invalid value for NODE_OPTIONS (invalid escape) |
592 | `),r;u=t[++n]}else if(u===" "&&!o){a=!0;continue}else if(u==='"'){o=!o;continue}a?(r.push(u),a=!1):r[r.length-1]+=u}return o&&e.push(`invalid value for NODE_OPTIONS (unterminated string) | ||
593 | `),r}St();var y1e=Ie("module");var[Lo,EA]=process.versions.node.split(".").map(t=>parseInt(t,10)),FJt=Lo>16||Lo===16&&EA>=12,RJt=Lo>17||Lo===17&&EA>=5||Lo===16&&EA>=15,TJt=Lo>17||Lo===17&&EA>=1||Lo===16&&EA>14,m1e=Lo>19||Lo===19&&EA>=2||Lo===18&&EA>=13,NJt=Lo>19||Lo===19&&EA>=3,LJt=Lo>18||Lo===18&&EA>=1||Lo===16&&EA>=17;var awt=new Set(y1e.Module.builtinModules||Object.keys(process.binding("natives"))),mk=t=>t.startsWith("node:")||awt.has(t);function E1e(t){if(process.env.WATCH_REPORT_DEPENDENCIES&&process.send)if(t=t.map(e=>ue.fromPortablePath(pi.resolveVirtual(ue.toPortablePath(e)))),m1e)process.send({"watch:require":t});else for(let e of t)process.send({"watch:require":e})}function tj(t,e){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,o=Number(process.env.PNP_DEBUG_LEVEL),a=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/,n=/^(\/|\.{1,2}(\/|$))/,u=/\/$/,A=/^\.{0,2}\//,p={name:null,reference:null},h=[],C=new Set;if(t.enableTopLevelFallback===!0&&h.push(p),e.compatibilityMode!==!1)for(let Me of["react-scripts","gatsby"]){let Te=t.packageRegistry.get(Me);if(Te)for(let Qe of Te.keys()){if(Qe===null)throw new Error("Assertion failed: This reference shouldn't be null");h.push({name:Me,reference:Qe})}}let{ignorePattern:w,packageRegistry:v,packageLocatorsByLocations:b}=t;function E(Me,Te){return{fn:Me,args:Te,error:null,result:null}}function R(Me){var At,Oe,x,I;let Te=((Oe=(At=process.stderr)==null?void 0:At.hasColors)==null?void 0:Oe.call(At))??process.stdout.isTTY,Qe=(P,y)=>`\x1B[${P}m${y}\x1B[0m`,_e=Me.error;console.error(_e?Qe("31;1",`\u2716 ${(x=Me.error)==null?void 0:x.message.replace(/\n.*/s,"")}`):Qe("33;1","\u203C Resolution")),Me.args.length>0&&console.error();for(let P of Me.args)console.error(` ${Qe("37;1","In \u2190")} ${(0,ej.inspect)(P,{colors:Te,compact:!0})}`);Me.result&&(console.error(),console.error(` ${Qe("37;1","Out \u2192")} ${(0,ej.inspect)(Me.result,{colors:Te,compact:!0})}`));let qe=((I=new Error().stack.match(/(?<=^ +)at.*/gm))==null?void 0:I.slice(2))??[];if(qe.length>0){console.error();for(let P of qe)console.error(` ${Qe("38;5;244",P)}`)}console.error()}function L(Me,Te){if(e.allowDebug===!1)return Te;if(Number.isFinite(o)){if(o>=2)return(...Qe)=>{let _e=E(Me,Qe);try{return _e.result=Te(...Qe)}catch(qe){throw _e.error=qe}finally{R(_e)}};if(o>=1)return(...Qe)=>{try{return Te(...Qe)}catch(_e){let qe=E(Me,Qe);throw qe.error=_e,R(qe),_e}}}return Te}function _(Me){let Te=g(Me);if(!Te)throw Xi("INTERNAL","Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return Te}function V(Me){if(Me.name===null)return!0;for(let Te of t.dependencyTreeRoots)if(Te.name===Me.name&&Te.reference===Me.reference)return!0;return!1}let re=new Set(["node","require",...d1e("--conditions")]);function ae(Me,Te=re,Qe){let _e=de(J.join(Me,"internal.js"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(_e===null)throw Xi("INTERNAL",`The locator that owns the "${Me}" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:qe}=_(_e),At=J.join(qe,Lr.manifest);if(!e.fakeFs.existsSync(At))return null;let Oe=JSON.parse(e.fakeFs.readFileSync(At,"utf8"));if(Oe.exports==null)return null;let x=J.contains(qe,Me);if(x===null)throw Xi("INTERNAL","unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)");x!=="."&&!A.test(x)&&(x=`./${x}`);try{let I=u1e({packageJSONUrl:(0,Em.pathToFileURL)(ue.fromPortablePath(At)),packageSubpath:x,exports:Oe.exports,base:Qe?(0,Em.pathToFileURL)(ue.fromPortablePath(Qe)):null,conditions:Te});return ue.toPortablePath((0,Em.fileURLToPath)(I))}catch(I){throw Xi("EXPORTS_RESOLUTION_FAILED",I.message,{unqualifiedPath:fu(Me),locator:_e,pkgJson:Oe,subpath:fu(x),conditions:Te},I.code)}}function he(Me,Te,{extensions:Qe}){let _e;try{Te.push(Me),_e=e.fakeFs.statSync(Me)}catch{}if(_e&&!_e.isDirectory())return e.fakeFs.realpathSync(Me);if(_e&&_e.isDirectory()){let qe;try{qe=JSON.parse(e.fakeFs.readFileSync(J.join(Me,Lr.manifest),"utf8"))}catch{}let At;if(qe&&qe.main&&(At=J.resolve(Me,qe.main)),At&&At!==Me){let Oe=he(At,Te,{extensions:Qe});if(Oe!==null)return Oe}}for(let qe=0,At=Qe.length;qe<At;qe++){let Oe=`${Me}${Qe[qe]}`;if(Te.push(Oe),e.fakeFs.existsSync(Oe))return Oe}if(_e&&_e.isDirectory())for(let qe=0,At=Qe.length;qe<At;qe++){let Oe=J.format({dir:Me,name:"index",ext:Qe[qe]});if(Te.push(Oe),e.fakeFs.existsSync(Oe))return Oe}return null}function pe(Me){let Te=new VB.Module(Me,null);return Te.filename=Me,Te.paths=VB.Module._nodeModulePaths(Me),Te}function De(Me,Te){return Te.endsWith("/")&&(Te=J.join(Te,"internal.js")),VB.Module._resolveFilename(ue.fromPortablePath(Me),pe(ue.fromPortablePath(Te)),!1,{plugnplay:!1})}function ge(Me){if(w===null)return!1;let Te=J.contains(t.basePath,Me);return Te===null?!1:!!w.test(Te.replace(/\/$/,""))}let le={std:3,resolveVirtual:1,getAllLocators:1},Pe=p;function g({name:Me,reference:Te}){let Qe=v.get(Me);if(!Qe)return null;let _e=Qe.get(Te);return _e||null}function ve({name:Me,reference:Te}){let Qe=[];for(let[_e,qe]of v)if(_e!==null)for(let[At,Oe]of qe)At===null||Oe.packageDependencies.get(Me)!==Te||_e===Me&&At===Te||Qe.push({name:_e,reference:At});return Qe}function Ee(Me,Te){let Qe=new Map,_e=new Set,qe=Oe=>{let x=JSON.stringify(Oe.name);if(_e.has(x))return;_e.add(x);let I=ve(Oe);for(let P of I)if(_(P).packagePeers.has(Me))qe(P);else{let F=Qe.get(P.name);typeof F>"u"&&Qe.set(P.name,F=new Set),F.add(P.reference)}};qe(Te);let At=[];for(let Oe of[...Qe.keys()].sort())for(let x of[...Qe.get(Oe)].sort())At.push({name:Oe,reference:x});return At}function de(Me,{resolveIgnored:Te=!1,includeDiscardFromLookup:Qe=!1}={}){if(ge(Me)&&!Te)return null;let _e=J.relative(t.basePath,Me);_e.match(n)||(_e=`./${_e}`),_e.endsWith("/")||(_e=`${_e}/`);do{let qe=b.get(_e);if(typeof qe>"u"||qe.discardFromLookup&&!Qe){_e=_e.substring(0,_e.lastIndexOf("/",_e.length-2)+1);continue}return qe.locator}while(_e!=="");return null}function ne(Me){try{return e.fakeFs.readFileSync(ue.toPortablePath(Me),"utf8")}catch(Te){if(Te.code==="ENOENT")return;throw Te}}function Z(Me,Te,{considerBuiltins:Qe=!0}={}){if(Me.startsWith("#"))throw new Error("resolveToUnqualified can not handle private import mappings");if(Me==="pnpapi")return ue.toPortablePath(e.pnpapiResolution);if(Qe&&mk(Me))return null;let _e=fu(Me),qe=Te&&fu(Te);if(Te&&ge(Te)&&(!J.isAbsolute(Me)||de(Me)===null)){let x=De(Me,Te);if(x===!1)throw Xi("BUILTIN_NODE_RESOLUTION_FAILED",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) | ||
592 | 594 | ||
593 | Require request: "${Ue}" | 595 | Require request: "${_e}" |
594 | Required by: ${je} | 596 | Required by: ${qe} |
595 | `,{request:Ue,issuer:je});return Ae.toPortablePath(x)}let At,Le=Me.match(a);if(Le){if(!Te)throw Xi("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:Ue,issuer:je});let[,x,I]=Le,P=de(Te);if(!P){let Ne=ve(Me,Te);if(Ne===!1)throw Xi("BUILTIN_NODE_RESOLUTION_FAILED",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). | 597 | `,{request:_e,issuer:qe});return ue.toPortablePath(x)}let At,Oe=Me.match(a);if(Oe){if(!Te)throw Xi("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:_e,issuer:qe});let[,x,I]=Oe,P=de(Te);if(!P){let Ne=De(Me,Te);if(Ne===!1)throw Xi("BUILTIN_NODE_RESOLUTION_FAILED",`The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). |
596 | 598 | ||
597 | Require path: "${Ue}" | 599 | Require path: "${_e}" |
598 | Required by: ${je} | 600 | Required by: ${qe} |
599 | `,{request:Ue,issuer:je});return Ae.toPortablePath(Ne)}let F=_(P).packageDependencies.get(x),z=null;if(F==null&&P.name!==null){let Ne=t.fallbackExclusionList.get(P.name);if(!Ne||!Ne.has(P.reference)){for(let ht=0,Ut=h.length;ht<Ut;++ht){let Pt=_(h[ht]).packageDependencies.get(x);if(Pt!=null){r?z=Pt:F=Pt;break}}if(t.enableTopLevelFallback&&F==null&&z===null){let ht=t.fallbackPool.get(x);ht!=null&&(z=ht)}}}let X=null;if(F===null)if(J(P))X=Xi("MISSING_PEER_DEPENDENCY",`Your application tried to access ${x} (a peer dependency); this isn't allowed as there is no ancestor to satisfy the requirement. Use a devDependency if needed. | 601 | `,{request:_e,issuer:qe});return ue.toPortablePath(Ne)}let F=_(P).packageDependencies.get(x),z=null;if(F==null&&P.name!==null){let Ne=t.fallbackExclusionList.get(P.name);if(!Ne||!Ne.has(P.reference)){for(let ht=0,Ut=h.length;ht<Ut;++ht){let xt=_(h[ht]).packageDependencies.get(x);if(xt!=null){r?z=xt:F=xt;break}}if(t.enableTopLevelFallback&&F==null&&z===null){let ht=t.fallbackPool.get(x);ht!=null&&(z=ht)}}}let X=null;if(F===null)if(V(P))X=Xi("MISSING_PEER_DEPENDENCY",`Your application tried to access ${x} (a peer dependency); this isn't allowed as there is no ancestor to satisfy the requirement. Use a devDependency if needed. |
600 | 602 | ||
601 | Required package: ${x}${x!==Ue?` (via "${Ue}")`:""} | 603 | Required package: ${x}${x!==_e?` (via "${_e}")`:""} |
602 | Required by: ${je} | 604 | Required by: ${qe} |
603 | `,{request:Ue,issuer:je,dependencyName:x});else{let Ne=Ee(x,P);Ne.every(st=>J(st))?X=Xi("MISSING_PEER_DEPENDENCY",`${P.name} tried to access ${x} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. | 605 | `,{request:_e,issuer:qe,dependencyName:x});else{let Ne=Ee(x,P);Ne.every(st=>V(st))?X=Xi("MISSING_PEER_DEPENDENCY",`${P.name} tried to access ${x} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. |
604 | 606 | ||
605 | Required package: ${x}${x!==Ue?` (via "${Ue}")`:""} | 607 | Required package: ${x}${x!==_e?` (via "${_e}")`:""} |
606 | Required by: ${P.name}@${P.reference} (via ${je}) | 608 | Required by: ${P.name}@${P.reference} (via ${qe}) |
607 | ${Ne.map(st=>`Ancestor breaking the chain: ${st.name}@${st.reference} | 609 | ${Ne.map(st=>`Ancestor breaking the chain: ${st.name}@${st.reference} |
608 | `).join("")} | 610 | `).join("")} |
609 | `,{request:Ue,issuer:je,issuerLocator:Object.assign({},P),dependencyName:x,brokenAncestors:Ne}):X=Xi("MISSING_PEER_DEPENDENCY",`${P.name} tried to access ${x} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. | 611 | `,{request:_e,issuer:qe,issuerLocator:Object.assign({},P),dependencyName:x,brokenAncestors:Ne}):X=Xi("MISSING_PEER_DEPENDENCY",`${P.name} tried to access ${x} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. |
610 | 612 | ||
611 | Required package: ${x}${x!==Ue?` (via "${Ue}")`:""} | 613 | Required package: ${x}${x!==_e?` (via "${_e}")`:""} |
612 | Required by: ${P.name}@${P.reference} (via ${je}) | 614 | Required by: ${P.name}@${P.reference} (via ${qe}) |
613 | 615 | ||
614 | ${Ne.map(st=>`Ancestor breaking the chain: ${st.name}@${st.reference} | 616 | ${Ne.map(st=>`Ancestor breaking the chain: ${st.name}@${st.reference} |
615 | `).join("")} | 617 | `).join("")} |
616 | `,{request:Ue,issuer:je,issuerLocator:Object.assign({},P),dependencyName:x,brokenAncestors:Ne})}else F===void 0&&(!Qe&&Ak(Me)?J(P)?X=Xi("UNDECLARED_DEPENDENCY",`Your application tried to access ${x}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${x} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. | 618 | `,{request:_e,issuer:qe,issuerLocator:Object.assign({},P),dependencyName:x,brokenAncestors:Ne})}else F===void 0&&(!Qe&&mk(Me)?V(P)?X=Xi("UNDECLARED_DEPENDENCY",`Your application tried to access ${x}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${x} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. |
617 | 619 | ||
618 | Required package: ${x}${x!==Ue?` (via "${Ue}")`:""} | 620 | Required package: ${x}${x!==_e?` (via "${_e}")`:""} |
619 | Required by: ${je} | 621 | Required by: ${qe} |
620 | `,{request:Ue,issuer:je,dependencyName:x}):X=Xi("UNDECLARED_DEPENDENCY",`${P.name} tried to access ${x}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${x} isn't otherwise declared in ${P.name}'s dependencies, this makes the require call ambiguous and unsound. | 622 | `,{request:_e,issuer:qe,dependencyName:x}):X=Xi("UNDECLARED_DEPENDENCY",`${P.name} tried to access ${x}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${x} isn't otherwise declared in ${P.name}'s dependencies, this makes the require call ambiguous and unsound. |
621 | 623 | ||
622 | Required package: ${x}${x!==Ue?` (via "${Ue}")`:""} | 624 | Required package: ${x}${x!==_e?` (via "${_e}")`:""} |
623 | Required by: ${je} | 625 | Required by: ${qe} |
624 | `,{request:Ue,issuer:je,issuerLocator:Object.assign({},P),dependencyName:x}):J(P)?X=Xi("UNDECLARED_DEPENDENCY",`Your application tried to access ${x}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. | 626 | `,{request:_e,issuer:qe,issuerLocator:Object.assign({},P),dependencyName:x}):V(P)?X=Xi("UNDECLARED_DEPENDENCY",`Your application tried to access ${x}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. |
625 | 627 | ||
626 | Required package: ${x}${x!==Ue?` (via "${Ue}")`:""} | 628 | Required package: ${x}${x!==_e?` (via "${_e}")`:""} |
627 | Required by: ${je} | 629 | Required by: ${qe} |
628 | `,{request:Ue,issuer:je,dependencyName:x}):X=Xi("UNDECLARED_DEPENDENCY",`${P.name} tried to access ${x}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. | 630 | `,{request:_e,issuer:qe,dependencyName:x}):X=Xi("UNDECLARED_DEPENDENCY",`${P.name} tried to access ${x}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. |
629 | 631 | ||
630 | Required package: ${x}${x!==Ue?` (via "${Ue}")`:""} | 632 | Required package: ${x}${x!==_e?` (via "${_e}")`:""} |
631 | Required by: ${P.name}@${P.reference} (via ${je}) | 633 | Required by: ${P.name}@${P.reference} (via ${qe}) |
632 | `,{request:Ue,issuer:je,issuerLocator:Object.assign({},P),dependencyName:x}));if(F==null){if(z===null||X===null)throw X||new Error("Assertion failed: Expected an error to have been set");F=z;let Ne=X.message.replace(/\n.*/g,"");X.message=Ne,!C.has(Ne)&&o!==0&&(C.add(Ne),process.emitWarning(X))}let $=Array.isArray(F)?{name:F[0],reference:F[1]}:{name:x,reference:F},ie=_($);if(!ie.packageLocation)throw Xi("MISSING_DEPENDENCY",`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. | 634 | `,{request:_e,issuer:qe,issuerLocator:Object.assign({},P),dependencyName:x}));if(F==null){if(z===null||X===null)throw X||new Error("Assertion failed: Expected an error to have been set");F=z;let Ne=X.message.replace(/\n.*/g,"");X.message=Ne,!C.has(Ne)&&o!==0&&(C.add(Ne),process.emitWarning(X))}let $=Array.isArray(F)?{name:F[0],reference:F[1]}:{name:x,reference:F},ie=_($);if(!ie.packageLocation)throw Xi("MISSING_DEPENDENCY",`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. |
633 | 635 | ||
634 | Required package: ${$.name}@${$.reference}${$.name!==Ue?` (via "${Ue}")`:""} | 636 | Required package: ${$.name}@${$.reference}${$.name!==_e?` (via "${_e}")`:""} |
635 | Required by: ${P.name}@${P.reference} (via ${je}) | 637 | Required by: ${P.name}@${P.reference} (via ${qe}) |
636 | `,{request:Ue,issuer:je,dependencyLocator:Object.assign({},$)});let ke=ie.packageLocation;I?At=V.join(ke,I):At=ke}else if(V.isAbsolute(Me))At=V.normalize(Me);else{if(!Te)throw Xi("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:Ue,issuer:je});let x=V.resolve(Te);Te.match(u)?At=V.normalize(V.join(x,Me)):At=V.normalize(V.join(V.dirname(x),Me))}return V.normalize(At)}function me(Me,Te,Qe=re){if(n.test(Me))return Te;let Ue=oe(Te,Qe);return Ue?V.normalize(Ue):Te}function be(Me,{extensions:Te=Object.keys(UB.Module._extensions)}={}){let Qe=[],Ue=pe(Me,Qe,{extensions:Te});if(Ue)return V.normalize(Ue);{o1e(Qe.map(Le=>Ae.fromPortablePath(Le)));let je=uu(Me),At=de(Me);if(At){let{packageLocation:Le}=_(At),x=!0;try{e.fakeFs.accessSync(Le)}catch(I){if((I==null?void 0:I.code)==="ENOENT")x=!1;else{let P=((I==null?void 0:I.message)??I??"empty exception thrown").replace(/^[A-Z]/,y=>y.toLowerCase());throw Xi("QUALIFIED_PATH_RESOLUTION_FAILED",`Required package exists but could not be accessed (${P}). | 638 | `,{request:_e,issuer:qe,dependencyLocator:Object.assign({},$)});let ke=ie.packageLocation;I?At=J.join(ke,I):At=ke}else if(J.isAbsolute(Me))At=J.normalize(Me);else{if(!Te)throw Xi("API_ERROR","The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:_e,issuer:qe});let x=J.resolve(Te);Te.match(u)?At=J.normalize(J.join(x,Me)):At=J.normalize(J.join(J.dirname(x),Me))}return J.normalize(At)}function me(Me,Te,Qe=re,_e){if(n.test(Me))return Te;let qe=ae(Te,Qe,_e);return qe?J.normalize(qe):Te}function be(Me,{extensions:Te=Object.keys(VB.Module._extensions)}={}){let Qe=[],_e=he(Me,Qe,{extensions:Te});if(_e)return J.normalize(_e);{E1e(Qe.map(Oe=>ue.fromPortablePath(Oe)));let qe=fu(Me),At=de(Me);if(At){let{packageLocation:Oe}=_(At),x=!0;try{e.fakeFs.accessSync(Oe)}catch(I){if((I==null?void 0:I.code)==="ENOENT")x=!1;else{let P=((I==null?void 0:I.message)??I??"empty exception thrown").replace(/^[A-Z]/,y=>y.toLowerCase());throw Xi("QUALIFIED_PATH_RESOLUTION_FAILED",`Required package exists but could not be accessed (${P}). |
637 | 639 | ||
638 | Missing package: ${At.name}@${At.reference} | 640 | Missing package: ${At.name}@${At.reference} |
639 | Expected package location: ${uu(Le)} | 641 | Expected package location: ${fu(Oe)} |
640 | `,{unqualifiedPath:je,extensions:Te})}}if(!x){let I=Le.includes("/unplugged/")?"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).":"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.";throw Xi("QUALIFIED_PATH_RESOLUTION_FAILED",`${I} | 642 | `,{unqualifiedPath:qe,extensions:Te})}}if(!x){let I=Oe.includes("/unplugged/")?"Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).":"Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.";throw Xi("QUALIFIED_PATH_RESOLUTION_FAILED",`${I} |
641 | 643 | ||
642 | Missing package: ${At.name}@${At.reference} | 644 | Missing package: ${At.name}@${At.reference} |
643 | Expected package location: ${uu(Le)} | 645 | Expected package location: ${fu(Oe)} |
644 | `,{unqualifiedPath:je,extensions:Te})}}throw Xi("QUALIFIED_PATH_RESOLUTION_FAILED",`Qualified path resolution failed: we looked for the following paths, but none could be accessed. | 646 | `,{unqualifiedPath:qe,extensions:Te})}}throw Xi("QUALIFIED_PATH_RESOLUTION_FAILED",`Qualified path resolution failed: we looked for the following paths, but none could be accessed. |
645 | 647 | ||
646 | Source path: ${je} | 648 | Source path: ${qe} |
647 | ${Qe.map(Le=>`Not found: ${uu(Le)} | 649 | ${Qe.map(Oe=>`Not found: ${fu(Oe)} |
648 | `).join("")}`,{unqualifiedPath:je,extensions:Te})}}function ut(Me,Te,Qe){if(!Te)throw new Error("Assertion failed: An issuer is required to resolve private import mappings");let Ue=n1e({name:Me,base:(0,fk.pathToFileURL)(Ae.fromPortablePath(Te)),conditions:Qe.conditions??re,readFileSyncFn:ne});if(Ue instanceof URL)return be(Ae.toPortablePath((0,fk.fileURLToPath)(Ue)),{extensions:Qe.extensions});if(Ue.startsWith("#"))throw new Error("Mapping from one private import to another isn't allowed");return H(Ue,Te,Qe)}function H(Me,Te,Qe={}){try{if(Me.startsWith("#"))return ut(Me,Te,Qe);let{considerBuiltins:Ue,extensions:je,conditions:At}=Qe,Le=Z(Me,Te,{considerBuiltins:Ue});if(Me==="pnpapi")return Le;if(Le===null)return null;let x=()=>Te!==null?ge(Te):!1,I=(!Ue||!Ak(Me))&&!x()?me(Me,Le,At):Le;return be(I,{extensions:je})}catch(Ue){throw Object.prototype.hasOwnProperty.call(Ue,"pnpCode")&&Object.assign(Ue.data,{request:uu(Me),issuer:Te&&uu(Te)}),Ue}}function yt(Me){let Te=V.normalize(Me),Qe=pi.resolveVirtual(Te);return Qe!==Te?Qe:null}return{VERSIONS:le,topLevel:Pe,getLocator:(Me,Te)=>Array.isArray(Te)?{name:Te[0],reference:Te[1]}:{name:Me,reference:Te},getDependencyTreeRoots:()=>[...t.dependencyTreeRoots],getAllLocators(){let Me=[];for(let[Te,Qe]of v)for(let Ue of Qe.keys())Te!==null&&Ue!==null&&Me.push({name:Te,reference:Ue});return Me},getPackageInformation:Me=>{let Te=g(Me);if(Te===null)return null;let Qe=Ae.fromPortablePath(Te.packageLocation);return{...Te,packageLocation:Qe}},findPackageLocator:Me=>de(Ae.toPortablePath(Me)),resolveToUnqualified:L("resolveToUnqualified",(Me,Te,Qe)=>{let Ue=Te!==null?Ae.toPortablePath(Te):null,je=Z(Ae.toPortablePath(Me),Ue,Qe);return je===null?null:Ae.fromPortablePath(je)}),resolveUnqualified:L("resolveUnqualified",(Me,Te)=>Ae.fromPortablePath(be(Ae.toPortablePath(Me),Te))),resolveRequest:L("resolveRequest",(Me,Te,Qe)=>{let Ue=Te!==null?Ae.toPortablePath(Te):null,je=H(Ae.toPortablePath(Me),Ue,Qe);return je===null?null:Ae.fromPortablePath(je)}),resolveVirtual:L("resolveVirtual",Me=>{let Te=yt(Ae.toPortablePath(Me));return Te!==null?Ae.fromPortablePath(Te):null})}}bt();var a1e=(t,e,r)=>{let o=TB(t),a=Hq(o,{basePath:e}),n=Ae.join(e,Lr.pnpCjs);return Kq(a,{fakeFs:r,pnpapiResolution:n})};var Vq=tt(c1e());_t();var mA={};Yt(mA,{checkAndReportManifestCompatibility:()=>A1e,checkManifestCompatibility:()=>u1e,extractBuildScripts:()=>pk,getExtractHint:()=>zq,hasBindingGyp:()=>Xq});Ke();bt();function u1e(t){return Y.isPackageCompatible(t,As.getArchitectureSet())}function A1e(t,e,{configuration:r,report:o}){return u1e(t)?!0:(o==null||o.reportWarningOnce(76,`${Y.prettyLocator(r,t)} The ${As.getArchitectureName()} architecture is incompatible with this package, ${e} skipped.`),!1)}function pk(t,e,r,{configuration:o,report:a}){let n=[];for(let A of["preinstall","install","postinstall"])e.manifest.scripts.has(A)&&n.push([0,A]);return!e.manifest.scripts.has("install")&&e.misc.hasBindingGyp&&n.push([1,"node-gyp rebuild"]),n.length===0?[]:t.linkType!=="HARD"?(a==null||a.reportWarningOnce(6,`${Y.prettyLocator(o,t)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`),[]):r&&r.built===!1?(a==null||a.reportInfoOnce(5,`${Y.prettyLocator(o,t)} lists build scripts, but its build has been explicitly disabled through configuration.`),[]):!o.get("enableScripts")&&!r.built?(a==null||a.reportWarningOnce(4,`${Y.prettyLocator(o,t)} lists build scripts, but all build scripts have been disabled.`),[]):A1e(t,"build",{configuration:o,report:a})?n:[]}var GIt=new Set([".exe",".h",".hh",".hpp",".c",".cc",".cpp",".java",".jar",".node"]);function zq(t){return t.packageFs.getExtractHint({relevantExtensions:GIt})}function Xq(t){let e=V.join(t.prefixPath,"binding.gyp");return t.packageFs.existsSync(e)}var HB={};Yt(HB,{getUnpluggedPath:()=>_B});Ke();bt();function _B(t,{configuration:e}){return V.resolve(e.get("pnpUnpluggedFolder"),Y.slugifyLocator(t))}var WIt=new Set([Y.makeIdent(null,"open").identHash,Y.makeIdent(null,"opn").identHash]),Ch=class{constructor(){this.mode="strict";this.pnpCache=new Map}getCustomDataKey(){return JSON.stringify({name:"PnpLinker",version:2})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the PnP linker to be enabled");let o=Ih(r.project).cjs;if(!ae.existsSync(o))throw new ot(`The project in ${ye.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ye.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let a=Ye.getFactoryWithDefault(this.pnpCache,o,()=>Ye.dynamicRequire(o,{cachingStrategy:Ye.CachingStrategy.FsTime})),n={name:Y.stringifyIdent(e),reference:e.reference},u=a.getPackageInformation(n);if(!u)throw new ot(`Couldn't find ${Y.prettyLocator(r.project.configuration,e)} in the currently installed PnP map - running an install might help`);return Ae.toPortablePath(u.packageLocation)}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let o=Ih(r.project).cjs;if(!ae.existsSync(o))return null;let n=Ye.getFactoryWithDefault(this.pnpCache,o,()=>Ye.dynamicRequire(o,{cachingStrategy:Ye.CachingStrategy.FsTime})).findPackageLocator(Ae.fromPortablePath(e));return n?Y.makeLocator(Y.parseIdent(n.name),n.reference):null}makeInstaller(e){return new dm(e)}isEnabled(e){return!(e.project.configuration.get("nodeLinker")!=="pnp"||e.project.configuration.get("pnpMode")!==this.mode)}},dm=class{constructor(e){this.opts=e;this.mode="strict";this.asyncActions=new Ye.AsyncActions(10);this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=e}attachCustomData(e){this.customData=e}async installPackage(e,r,o){let a=Y.stringifyIdent(e),n=e.reference,u=!!this.opts.project.tryWorkspaceByLocator(e),A=Y.isVirtualLocator(e),p=e.peerDependencies.size>0&&!A,h=!p&&!u,C=!p&&e.linkType!=="SOFT",w,v;if(h||C){let re=A?Y.devirtualizeLocator(e):e;w=this.customData.store.get(re.locatorHash),typeof w>"u"&&(w=await YIt(r),e.linkType==="HARD"&&this.customData.store.set(re.locatorHash,w)),w.manifest.type==="module"&&(this.isESMLoaderRequired=!0),v=this.opts.project.getDependencyMeta(re,e.version)}let b=h?pk(e,w,v,{configuration:this.opts.project.configuration,report:this.opts.report}):[],E=C?await this.unplugPackageIfNeeded(e,w,r,v,o):r.packageFs;if(V.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let R=V.resolve(E.getRealPath(),r.prefixPath),L=Zq(this.opts.project.cwd,R),_=new Map,J=new Set;if(A){for(let re of e.peerDependencies.values())_.set(Y.stringifyIdent(re),null),J.add(Y.stringifyIdent(re));if(!u){let re=Y.devirtualizeLocator(e);this.virtualTemplates.set(re.locatorHash,{location:Zq(this.opts.project.cwd,pi.resolveVirtual(R)),locator:re})}}return Ye.getMapWithDefault(this.packageRegistry,a).set(n,{packageLocation:L,packageDependencies:_,packagePeers:J,linkType:e.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:R,buildDirective:b.length>0?b:null}}async attachInternalDependencies(e,r){let o=this.getPackageInformation(e);for(let[a,n]of r){let u=Y.areIdentsEqual(a,n)?n.reference:[Y.stringifyIdent(n),n.reference];o.packageDependencies.set(Y.stringifyIdent(a),u)}}async attachExternalDependents(e,r){for(let o of r)this.getDiskInformation(o).packageDependencies.set(Y.stringifyIdent(e),e.reference)}async finalizeInstall(){if(this.opts.project.configuration.get("pnpMode")!==this.mode)return;let e=Ih(this.opts.project);if(this.isEsmEnabled()||await ae.removePromise(e.esmLoader),this.opts.project.configuration.get("nodeLinker")!=="pnp"){await ae.removePromise(e.cjs),await ae.removePromise(e.data),await ae.removePromise(e.esmLoader),await ae.removePromise(this.opts.project.configuration.get("pnpUnpluggedFolder"));return}for(let{locator:C,location:w}of this.virtualTemplates.values())Ye.getMapWithDefault(this.packageRegistry,Y.stringifyIdent(C)).set(C.reference,{packageLocation:w,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1});this.packageRegistry.set(null,new Map([[null,this.getPackageInformation(this.opts.project.topLevelWorkspace.anchoredLocator)]]));let r=this.opts.project.configuration.get("pnpFallbackMode"),o=this.opts.project.workspaces.map(({anchoredLocator:C})=>({name:Y.stringifyIdent(C),reference:C.reference})),a=r!=="none",n=[],u=new Map,A=Ye.buildIgnorePattern([".yarn/sdks/**",...this.opts.project.configuration.get("pnpIgnorePatterns")]),p=this.packageRegistry,h=this.opts.project.configuration.get("pnpShebang");if(r==="dependencies-only")for(let C of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(C)&&n.push({name:Y.stringifyIdent(C),reference:C.reference});return await this.asyncActions.wait(),await this.finalizeInstallWithPnp({dependencyTreeRoots:o,enableTopLevelFallback:a,fallbackExclusionList:n,fallbackPool:u,ignorePattern:A,packageRegistry:p,shebang:h}),{customData:this.customData}}async transformPnpSettings(e){}isEsmEnabled(){if(this.opts.project.configuration.sources.has("pnpEnableEsmLoader"))return this.opts.project.configuration.get("pnpEnableEsmLoader");if(this.isESMLoaderRequired)return!0;for(let e of this.opts.project.workspaces)if(e.manifest.type==="module")return!0;return!1}async finalizeInstallWithPnp(e){let r=Ih(this.opts.project),o=await this.locateNodeModules(e.ignorePattern);if(o.length>0){this.opts.report.reportWarning(31,"One or more node_modules have been detected and will be removed. This operation may take some time.");for(let n of o)await ae.removePromise(n)}if(await this.transformPnpSettings(e),this.opts.project.configuration.get("pnpEnableInlining")){let n=Hwe(e);await ae.changeFilePromise(r.cjs,n,{automaticNewlines:!0,mode:493}),await ae.removePromise(r.data)}else{let{dataFile:n,loaderFile:u}=qwe(e);await ae.changeFilePromise(r.cjs,u,{automaticNewlines:!0,mode:493}),await ae.changeFilePromise(r.data,n,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning(0,"ESM support for PnP uses the experimental loader API and is therefore experimental"),await ae.changeFilePromise(r.esmLoader,(0,Vq.default)(),{automaticNewlines:!0,mode:420}));let a=this.opts.project.configuration.get("pnpUnpluggedFolder");if(this.unpluggedPaths.size===0)await ae.removePromise(a);else for(let n of await ae.readdirPromise(a)){let u=V.resolve(a,n);this.unpluggedPaths.has(u)||await ae.removePromise(u)}}async locateNodeModules(e){let r=[],o=e?new RegExp(e):null;for(let a of this.opts.project.workspaces){let n=V.join(a.cwd,"node_modules");if(o&&o.test(V.relative(this.opts.project.cwd,a.cwd))||!ae.existsSync(n))continue;let u=await ae.readdirPromise(n,{withFileTypes:!0}),A=u.filter(p=>!p.isDirectory()||p.name===".bin"||!p.name.startsWith("."));if(A.length===u.length)r.push(n);else for(let p of A)r.push(V.join(n,p.name))}return r}async unplugPackageIfNeeded(e,r,o,a,n){return this.shouldBeUnplugged(e,r,a)?this.unplugPackage(e,o,n):o.packageFs}shouldBeUnplugged(e,r,o){return typeof o.unplugged<"u"?o.unplugged:WIt.has(e.identHash)||e.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(pk(e,r,o,{configuration:this.opts.project.configuration}).length>0||r.misc.extractHint)}async unplugPackage(e,r,o){let a=_B(e,{configuration:this.opts.project.configuration});return this.opts.project.disabledLocators.has(e.locatorHash)?new qu(a,{baseFs:r.packageFs,pathUtils:V}):(this.unpluggedPaths.add(a),o.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{let n=V.join(a,r.prefixPath,".ready");await ae.existsPromise(n)||(this.opts.project.storedBuildState.delete(e.locatorHash),await ae.mkdirPromise(a,{recursive:!0}),await ae.copyPromise(a,wt.dot,{baseFs:r.packageFs,overwrite:!1}),await ae.writeFilePromise(n,""))})),new An(a))}getPackageInformation(e){let r=Y.stringifyIdent(e),o=e.reference,a=this.packageRegistry.get(r);if(!a)throw new Error(`Assertion failed: The package information store should have been available (for ${Y.prettyIdent(this.opts.project.configuration,e)})`);let n=a.get(o);if(!n)throw new Error(`Assertion failed: The package information should have been available (for ${Y.prettyLocator(this.opts.project.configuration,e)})`);return n}getDiskInformation(e){let r=Ye.getMapWithDefault(this.packageRegistry,"@@disk"),o=Zq(this.opts.project.cwd,e);return Ye.getFactoryWithDefault(r,o,()=>({packageLocation:o,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1}))}};function Zq(t,e){let r=V.relative(t,e);return r.match(/^\.{0,2}\//)||(r=`./${r}`),r.replace(/\/?$/,"/")}async function YIt(t){let e=await Nt.tryFind(t.prefixPath,{baseFs:t.packageFs})??new Nt,r=new Set(["preinstall","install","postinstall"]);for(let o of e.scripts.keys())r.has(o)||e.scripts.delete(o);return{manifest:{scripts:e.scripts,preferUnplugged:e.preferUnplugged,type:e.type},misc:{extractHint:zq(t),hasBindingGyp:Xq(t)}}}Ke();Ke();_t();var f1e=tt(Jo());var wh=class extends ct{constructor(){super(...arguments);this.all=fe.Boolean("-A,--all",!1,{description:"Unplug direct dependencies from the entire project"});this.recursive=fe.Boolean("-R,--recursive",!1,{description:"Unplug both direct and transitive dependencies"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=fe.Rest()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Ur.find(r);if(!a)throw new er(o.cwd,this.context.cwd);if(r.get("nodeLinker")!=="pnp")throw new ot("This command can only be used if the `nodeLinker` option is set to `pnp`");await o.restoreInstallState();let u=new Set(this.patterns),A=this.patterns.map(b=>{let E=Y.parseDescriptor(b),R=E.range!=="unknown"?E:Y.makeDescriptor(E,"*");if(!Tr.validRange(R.range))throw new ot(`The range of the descriptor patterns must be a valid semver range (${Y.prettyDescriptor(r,R)})`);return L=>{let _=Y.stringifyIdent(L);return!f1e.default.isMatch(_,Y.stringifyIdent(R))||L.version&&!Tr.satisfiesWithPrereleases(L.version,R.range)?!1:(u.delete(b),!0)}}),p=()=>{let b=[];for(let E of o.storedPackages.values())!o.tryWorkspaceByLocator(E)&&!Y.isVirtualLocator(E)&&A.some(R=>R(E))&&b.push(E);return b},h=b=>{let E=new Set,R=[],L=(_,J)=>{if(!E.has(_.locatorHash)&&(E.add(_.locatorHash),!o.tryWorkspaceByLocator(_)&&A.some(re=>re(_))&&R.push(_),!(J>0&&!this.recursive)))for(let re of _.dependencies.values()){let oe=o.storedResolutions.get(re.descriptorHash);if(!oe)throw new Error("Assertion failed: The resolution should have been registered");let pe=o.storedPackages.get(oe);if(!pe)throw new Error("Assertion failed: The package should have been registered");L(pe,J+1)}};for(let _ of b)L(_.anchoredPackage,0);return R},C,w;if(this.all&&this.recursive?(C=p(),w="the project"):this.all?(C=h(o.workspaces),w="any workspace"):(C=h([a]),w="this workspace"),u.size>1)throw new ot(`Patterns ${ye.prettyList(r,u,ye.Type.CODE)} don't match any packages referenced by ${w}`);if(u.size>0)throw new ot(`Pattern ${ye.prettyList(r,u,ye.Type.CODE)} doesn't match any packages referenced by ${w}`);return C=Ye.sortMap(C,b=>Y.stringifyLocator(b)),(await Ct.start({configuration:r,stdout:this.context.stdout,json:this.json},async b=>{for(let E of C){let R=E.version??"unknown",L=o.topLevelWorkspace.manifest.ensureDependencyMeta(Y.makeDescriptor(E,R));L.unplugged=!0,b.reportInfo(0,`Will unpack ${Y.prettyLocator(r,E)} to ${ye.pretty(r,_B(E,{configuration:r}),ye.Type.PATH)}`),b.reportJson({locator:Y.stringifyLocator(E),version:R})}await o.topLevelWorkspace.persistManifest(),b.reportSeparator(),await o.install({cache:n,report:b})})).exitCode()}};wh.paths=[["unplug"]],wh.usage=it.Usage({description:"force the unpacking of a list of packages",details:"\n This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\n\n A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\n\n Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\n\n By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\n\n This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\n ",examples:[["Unplug the lodash dependency from the active workspace","yarn unplug lodash"],["Unplug all instances of lodash referenced by any workspace","yarn unplug lodash -A"],["Unplug all instances of lodash referenced by the active workspace and its dependencies","yarn unplug lodash -R"],["Unplug all instances of lodash, anywhere","yarn unplug lodash -AR"],["Unplug one specific version of lodash","yarn unplug lodash@1.2.3"],["Unplug all packages with the `@babel` scope","yarn unplug '@babel/*'"],["Unplug all packages (only for testing, not recommended)","yarn unplug -R '*'"]]});var Ih=t=>({cjs:V.join(t.cwd,Lr.pnpCjs),data:V.join(t.cwd,Lr.pnpData),esmLoader:V.join(t.cwd,Lr.pnpEsmLoader)}),g1e=t=>/\s/.test(t)?JSON.stringify(t):t;async function KIt(t,e,r){let o=Ih(t),a=`--require ${g1e(Ae.fromPortablePath(o.cjs))}`;if(ae.existsSync(o.esmLoader)&&(a=`${a} --experimental-loader ${(0,h1e.pathToFileURL)(Ae.fromPortablePath(o.esmLoader)).href}`),o.cjs.includes(" ")&&p1e.default.lt(process.versions.node,"12.0.0"))throw new Error(`Expected the build location to not include spaces when using Node < 12.0.0 (${process.versions.node})`);if(ae.existsSync(o.cjs)){let n=e.NODE_OPTIONS||"",u=/\s*--require\s+\S*\.pnp\.c?js\s*/g,A=/\s*--experimental-loader\s+\S*\.pnp\.loader\.mjs\s*/;n=n.replace(u," ").replace(A," ").trim(),n=n?`${a} ${n}`:a,e.NODE_OPTIONS=n}}async function JIt(t,e){let r=Ih(t);e(r.cjs),e(r.data),e(r.esmLoader),e(t.configuration.get("pnpUnpluggedFolder"))}var VIt={hooks:{populateYarnPaths:JIt,setupScriptEnvironment:KIt},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: "pnp", "node-modules"',type:"STRING",default:"pnp"},winLinkType:{description:"Whether Yarn should use Windows Junctions or symlinks when creating links on Windows.",type:"STRING",values:["junctions","symlinks"],default:"junctions"},pnpMode:{description:"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.",type:"STRING",default:"strict"},pnpShebang:{description:"String to prepend to the generated PnP script",type:"STRING",default:"#!/usr/bin/env node"},pnpIgnorePatterns:{description:"Array of glob patterns; files matching them will use the classic resolution",type:"STRING",default:[],isArray:!0},pnpEnableEsmLoader:{description:"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.",type:"BOOLEAN",default:!1},pnpEnableInlining:{description:"If true, the PnP data will be inlined along with the generated loader",type:"BOOLEAN",default:!0},pnpFallbackMode:{description:"If true, the generated PnP loader will follow the top-level fallback rule",type:"STRING",default:"dependencies-only"},pnpUnpluggedFolder:{description:"Folder where the unplugged packages must be stored",type:"ABSOLUTE_PATH",default:"./.yarn/unplugged"}},linkers:[Ch],commands:[wh]},zIt=VIt;var B1e=tt(C1e());_t();var oj=tt(Ie("crypto")),v1e=tt(Ie("fs")),D1e=1,vi="node_modules",hk=".bin",S1e=".yarn-state.yml",pwt=1e3,aj=(o=>(o.CLASSIC="classic",o.HARDLINKS_LOCAL="hardlinks-local",o.HARDLINKS_GLOBAL="hardlinks-global",o))(aj||{}),qB=class{constructor(){this.installStateCache=new Map}getCustomDataKey(){return JSON.stringify({name:"NodeModulesLinker",version:3})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the node-modules linker to be enabled");let o=r.project.tryWorkspaceByLocator(e);if(o)return o.cwd;let a=await Ye.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await sj(r.project,{unrollAliases:!0}));if(a===null)throw new ot("Couldn't find the node_modules state file - running an install might help (findPackageLocation)");let n=a.locatorMap.get(Y.stringifyLocator(e));if(!n){let p=new ot(`Couldn't find ${Y.prettyLocator(r.project.configuration,e)} in the currently installed node_modules map - running an install might help`);throw p.code="LOCATOR_NOT_INSTALLED",p}let u=n.locations.sort((p,h)=>p.split(V.sep).length-h.split(V.sep).length),A=V.join(r.project.configuration.startingCwd,vi);return u.find(p=>V.contains(A,p))||n.locations[0]}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let o=await Ye.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await sj(r.project,{unrollAliases:!0}));if(o===null)return null;let{locationRoot:a,segments:n}=gk(V.resolve(e),{skipPrefix:r.project.cwd}),u=o.locationTree.get(a);if(!u)return null;let A=u.locator;for(let p of n){if(u=u.children.get(p),!u)break;A=u.locator||A}return Y.parseLocator(A)}makeInstaller(e){return new ij(e)}isEnabled(e){return e.project.configuration.get("nodeLinker")==="node-modules"}},ij=class{constructor(e){this.opts=e;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}attachCustomData(e){this.customData=e}async installPackage(e,r){let o=V.resolve(r.packageFs.getRealPath(),r.prefixPath),a=this.customData.store.get(e.locatorHash);if(typeof a>"u"&&(a=await hwt(e,r),e.linkType==="HARD"&&this.customData.store.set(e.locatorHash,a)),!Y.isPackageCompatible(e,this.opts.project.configuration.getSupportedArchitectures()))return{packageLocation:null,buildDirective:null};let n=new Map,u=new Set;n.has(Y.stringifyIdent(e))||n.set(Y.stringifyIdent(e),e.reference);let A=e;if(Y.isVirtualLocator(e)){A=Y.devirtualizeLocator(e);for(let C of e.peerDependencies.values())n.set(Y.stringifyIdent(C),null),u.add(Y.stringifyIdent(C))}let p={packageLocation:`${Ae.fromPortablePath(o)}/`,packageDependencies:n,packagePeers:u,linkType:e.linkType,discardFromLookup:r.discardFromLookup??!1};this.localStore.set(e.locatorHash,{pkg:e,customPackageData:a,dependencyMeta:this.opts.project.getDependencyMeta(e,e.version),pnpNode:p});let h=r.checksum?r.checksum.substring(r.checksum.indexOf("/")+1):null;return this.realLocatorChecksums.set(A.locatorHash,h),{packageLocation:o,buildDirective:null}}async attachInternalDependencies(e,r){let o=this.localStore.get(e.locatorHash);if(typeof o>"u")throw new Error("Assertion failed: Expected information object to have been registered");for(let[a,n]of r){let u=Y.areIdentsEqual(a,n)?n.reference:[Y.stringifyIdent(n),n.reference];o.pnpNode.packageDependencies.set(Y.stringifyIdent(a),u)}}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the node-modules linker")}async finalizeInstall(){if(this.opts.project.configuration.get("nodeLinker")!=="node-modules")return;let e=new pi({baseFs:new Ll({maxOpenFiles:80,readOnlyArchives:!0})}),r=await sj(this.opts.project),o=this.opts.project.configuration.get("nmMode");(r===null||o!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:o,mtimeMs:0});let a=new Map(this.opts.project.workspaces.map(v=>{var E;let b=this.opts.project.configuration.get("nmHoistingLimits");try{b=Ye.validateEnum(kB,((E=v.manifest.installConfig)==null?void 0:E.hoistingLimits)??b)}catch{let L=Y.prettyWorkspace(this.opts.project.configuration,v);this.opts.report.reportWarning(57,`${L}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(kB).join(", ")}, using default: "${b}"`)}return[v.relativeCwd,b]})),n=new Map(this.opts.project.workspaces.map(v=>{var E;let b=this.opts.project.configuration.get("nmSelfReferences");return b=((E=v.manifest.installConfig)==null?void 0:E.selfReferences)??b,[v.relativeCwd,b]})),u={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(v,b)=>Array.isArray(b)?{name:b[0],reference:b[1]}:{name:v,reference:b},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(v=>{let b=v.anchoredLocator;return{name:Y.stringifyIdent(v.locator),reference:b.reference}}),getPackageInformation:v=>{let b=v.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:Y.makeLocator(Y.parseIdent(v.name),v.reference),E=this.localStore.get(b.locatorHash);if(typeof E>"u")throw new Error("Assertion failed: Expected the package reference to have been registered");return E.pnpNode},findPackageLocator:v=>{let b=this.opts.project.tryWorkspaceByCwd(Ae.toPortablePath(v));if(b!==null){let E=b.anchoredLocator;return{name:Y.stringifyIdent(E),reference:E.reference}}throw new Error("Assertion failed: Unimplemented")},resolveToUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveRequest:()=>{throw new Error("Assertion failed: Unimplemented")},resolveVirtual:v=>Ae.fromPortablePath(pi.resolveVirtual(Ae.toPortablePath(v)))},{tree:A,errors:p,preserveSymlinksRequired:h}=FB(u,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:a,project:this.opts.project,selfReferencesByCwd:n});if(!A){for(let{messageName:v,text:b}of p)this.opts.report.reportError(v,b);return}let C=Uq(A);await Cwt(r,C,{baseFs:e,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async v=>{let b=Y.parseLocator(v),E=this.localStore.get(b.locatorHash);if(typeof E>"u")throw new Error("Assertion failed: Expected the slot to exist");return E.customPackageData.manifest}});let w=[];for(let[v,b]of C.entries()){if(Q1e(v))continue;let E=Y.parseLocator(v),R=this.localStore.get(E.locatorHash);if(typeof R>"u")throw new Error("Assertion failed: Expected the slot to exist");if(this.opts.project.tryWorkspaceByLocator(R.pkg))continue;let L=mA.extractBuildScripts(R.pkg,R.customPackageData,R.dependencyMeta,{configuration:this.opts.project.configuration,report:this.opts.report});L.length!==0&&w.push({buildLocations:b.locations,locatorHash:E.locatorHash,buildDirective:L})}return h&&this.opts.report.reportWarning(72,`The application uses portals and that's why ${ye.pretty(this.opts.project.configuration,"--preserve-symlinks",ye.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:w}}};async function hwt(t,e){let r=await Nt.tryFind(e.prefixPath,{baseFs:e.packageFs})??new Nt,o=new Set(["preinstall","install","postinstall"]);for(let a of r.scripts.keys())o.has(a)||r.scripts.delete(a);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{hasBindingGyp:mA.hasBindingGyp(e)}}}async function gwt(t,e,r,o,{installChangedByUser:a}){let n="";n+=`# Warning: This file is automatically generated. Removing it is fine, but will | 650 | `).join("")}`,{unqualifiedPath:qe,extensions:Te})}}function ut(Me,Te,Qe){if(!Te)throw new Error("Assertion failed: An issuer is required to resolve private import mappings");let _e=A1e({name:Me,base:(0,Em.pathToFileURL)(ue.fromPortablePath(Te)),conditions:Qe.conditions??re,readFileSyncFn:ne});if(_e instanceof URL)return be(ue.toPortablePath((0,Em.fileURLToPath)(_e)),{extensions:Qe.extensions});if(_e.startsWith("#"))throw new Error("Mapping from one private import to another isn't allowed");return H(_e,Te,Qe)}function H(Me,Te,Qe={}){try{if(Me.startsWith("#"))return ut(Me,Te,Qe);let{considerBuiltins:_e,extensions:qe,conditions:At}=Qe,Oe=Z(Me,Te,{considerBuiltins:_e});if(Me==="pnpapi")return Oe;if(Oe===null)return null;let x=()=>Te!==null?ge(Te):!1,I=(!_e||!mk(Me))&&!x()?me(Me,Oe,At,Te):Oe;return be(I,{extensions:qe})}catch(_e){throw Object.prototype.hasOwnProperty.call(_e,"pnpCode")&&Object.assign(_e.data,{request:fu(Me),issuer:Te&&fu(Te)}),_e}}function yt(Me){let Te=J.normalize(Me),Qe=pi.resolveVirtual(Te);return Qe!==Te?Qe:null}return{VERSIONS:le,topLevel:Pe,getLocator:(Me,Te)=>Array.isArray(Te)?{name:Te[0],reference:Te[1]}:{name:Me,reference:Te},getDependencyTreeRoots:()=>[...t.dependencyTreeRoots],getAllLocators(){let Me=[];for(let[Te,Qe]of v)for(let _e of Qe.keys())Te!==null&&_e!==null&&Me.push({name:Te,reference:_e});return Me},getPackageInformation:Me=>{let Te=g(Me);if(Te===null)return null;let Qe=ue.fromPortablePath(Te.packageLocation);return{...Te,packageLocation:Qe}},findPackageLocator:Me=>de(ue.toPortablePath(Me)),resolveToUnqualified:L("resolveToUnqualified",(Me,Te,Qe)=>{let _e=Te!==null?ue.toPortablePath(Te):null,qe=Z(ue.toPortablePath(Me),_e,Qe);return qe===null?null:ue.fromPortablePath(qe)}),resolveUnqualified:L("resolveUnqualified",(Me,Te)=>ue.fromPortablePath(be(ue.toPortablePath(Me),Te))),resolveRequest:L("resolveRequest",(Me,Te,Qe)=>{let _e=Te!==null?ue.toPortablePath(Te):null,qe=H(ue.toPortablePath(Me),_e,Qe);return qe===null?null:ue.fromPortablePath(qe)}),resolveVirtual:L("resolveVirtual",Me=>{let Te=yt(ue.toPortablePath(Me));return Te!==null?ue.fromPortablePath(Te):null})}}St();var C1e=(t,e,r)=>{let o=_B(t),a=Gq(o,{basePath:e}),n=ue.join(e,Lr.pnpCjs);return tj(a,{fakeFs:r,pnpapiResolution:n})};var nj=tt(w1e());_t();var CA={};Yt(CA,{checkAndReportManifestCompatibility:()=>v1e,checkManifestCompatibility:()=>B1e,extractBuildScripts:()=>yk,getExtractHint:()=>ij,hasBindingGyp:()=>sj});Ke();St();function B1e(t){return Y.isPackageCompatible(t,As.getArchitectureSet())}function v1e(t,e,{configuration:r,report:o}){return B1e(t)?!0:(o==null||o.reportWarningOnce(76,`${Y.prettyLocator(r,t)} The ${As.getArchitectureName()} architecture is incompatible with this package, ${e} skipped.`),!1)}function yk(t,e,r,{configuration:o,report:a}){let n=[];for(let A of["preinstall","install","postinstall"])e.manifest.scripts.has(A)&&n.push([0,A]);return!e.manifest.scripts.has("install")&&e.misc.hasBindingGyp&&n.push([1,"node-gyp rebuild"]),n.length===0?[]:t.linkType!=="HARD"?(a==null||a.reportWarningOnce(6,`${Y.prettyLocator(o,t)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`),[]):r&&r.built===!1?(a==null||a.reportInfoOnce(5,`${Y.prettyLocator(o,t)} lists build scripts, but its build has been explicitly disabled through configuration.`),[]):!o.get("enableScripts")&&!r.built?(a==null||a.reportWarningOnce(4,`${Y.prettyLocator(o,t)} lists build scripts, but all build scripts have been disabled.`),[]):v1e(t,"build",{configuration:o,report:a})?n:[]}var cwt=new Set([".exe",".h",".hh",".hpp",".c",".cc",".cpp",".java",".jar",".node"]);function ij(t){return t.packageFs.getExtractHint({relevantExtensions:cwt})}function sj(t){let e=J.join(t.prefixPath,"binding.gyp");return t.packageFs.existsSync(e)}var zB={};Yt(zB,{getUnpluggedPath:()=>JB});Ke();St();function JB(t,{configuration:e}){return J.resolve(e.get("pnpUnpluggedFolder"),Y.slugifyLocator(t))}var uwt=new Set([Y.makeIdent(null,"open").identHash,Y.makeIdent(null,"opn").identHash]),vh=class{constructor(){this.mode="strict";this.pnpCache=new Map}getCustomDataKey(){return JSON.stringify({name:"PnpLinker",version:2})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the PnP linker to be enabled");let o=Dh(r.project).cjs;if(!oe.existsSync(o))throw new ot(`The project in ${ye.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ye.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let a=We.getFactoryWithDefault(this.pnpCache,o,()=>We.dynamicRequire(o,{cachingStrategy:We.CachingStrategy.FsTime})),n={name:Y.stringifyIdent(e),reference:e.reference},u=a.getPackageInformation(n);if(!u)throw new ot(`Couldn't find ${Y.prettyLocator(r.project.configuration,e)} in the currently installed PnP map - running an install might help`);return ue.toPortablePath(u.packageLocation)}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let o=Dh(r.project).cjs;if(!oe.existsSync(o))return null;let n=We.getFactoryWithDefault(this.pnpCache,o,()=>We.dynamicRequire(o,{cachingStrategy:We.CachingStrategy.FsTime})).findPackageLocator(ue.fromPortablePath(e));return n?Y.makeLocator(Y.parseIdent(n.name),n.reference):null}makeInstaller(e){return new Cm(e)}isEnabled(e){return!(e.project.configuration.get("nodeLinker")!=="pnp"||e.project.configuration.get("pnpMode")!==this.mode)}},Cm=class{constructor(e){this.opts=e;this.mode="strict";this.asyncActions=new We.AsyncActions(10);this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=e}attachCustomData(e){this.customData=e}async installPackage(e,r,o){let a=Y.stringifyIdent(e),n=e.reference,u=!!this.opts.project.tryWorkspaceByLocator(e),A=Y.isVirtualLocator(e),p=e.peerDependencies.size>0&&!A,h=!p&&!u,C=!p&&e.linkType!=="SOFT",w,v;if(h||C){let re=A?Y.devirtualizeLocator(e):e;w=this.customData.store.get(re.locatorHash),typeof w>"u"&&(w=await Awt(r),e.linkType==="HARD"&&this.customData.store.set(re.locatorHash,w)),w.manifest.type==="module"&&(this.isESMLoaderRequired=!0),v=this.opts.project.getDependencyMeta(re,e.version)}let b=h?yk(e,w,v,{configuration:this.opts.project.configuration,report:this.opts.report}):[],E=C?await this.unplugPackageIfNeeded(e,w,r,v,o):r.packageFs;if(J.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let R=J.resolve(E.getRealPath(),r.prefixPath),L=oj(this.opts.project.cwd,R),_=new Map,V=new Set;if(A){for(let re of e.peerDependencies.values())_.set(Y.stringifyIdent(re),null),V.add(Y.stringifyIdent(re));if(!u){let re=Y.devirtualizeLocator(e);this.virtualTemplates.set(re.locatorHash,{location:oj(this.opts.project.cwd,pi.resolveVirtual(R)),locator:re})}}return We.getMapWithDefault(this.packageRegistry,a).set(n,{packageLocation:L,packageDependencies:_,packagePeers:V,linkType:e.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:R,buildDirective:b.length>0?b:null}}async attachInternalDependencies(e,r){let o=this.getPackageInformation(e);for(let[a,n]of r){let u=Y.areIdentsEqual(a,n)?n.reference:[Y.stringifyIdent(n),n.reference];o.packageDependencies.set(Y.stringifyIdent(a),u)}}async attachExternalDependents(e,r){for(let o of r)this.getDiskInformation(o).packageDependencies.set(Y.stringifyIdent(e),e.reference)}async finalizeInstall(){if(this.opts.project.configuration.get("pnpMode")!==this.mode)return;let e=Dh(this.opts.project);if(this.isEsmEnabled()||await oe.removePromise(e.esmLoader),this.opts.project.configuration.get("nodeLinker")!=="pnp"){await oe.removePromise(e.cjs),await oe.removePromise(e.data),await oe.removePromise(e.esmLoader),await oe.removePromise(this.opts.project.configuration.get("pnpUnpluggedFolder"));return}for(let{locator:C,location:w}of this.virtualTemplates.values())We.getMapWithDefault(this.packageRegistry,Y.stringifyIdent(C)).set(C.reference,{packageLocation:w,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1});this.packageRegistry.set(null,new Map([[null,this.getPackageInformation(this.opts.project.topLevelWorkspace.anchoredLocator)]]));let r=this.opts.project.configuration.get("pnpFallbackMode"),o=this.opts.project.workspaces.map(({anchoredLocator:C})=>({name:Y.stringifyIdent(C),reference:C.reference})),a=r!=="none",n=[],u=new Map,A=We.buildIgnorePattern([".yarn/sdks/**",...this.opts.project.configuration.get("pnpIgnorePatterns")]),p=this.packageRegistry,h=this.opts.project.configuration.get("pnpShebang");if(r==="dependencies-only")for(let C of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(C)&&n.push({name:Y.stringifyIdent(C),reference:C.reference});return await this.asyncActions.wait(),await this.finalizeInstallWithPnp({dependencyTreeRoots:o,enableTopLevelFallback:a,fallbackExclusionList:n,fallbackPool:u,ignorePattern:A,packageRegistry:p,shebang:h}),{customData:this.customData}}async transformPnpSettings(e){}isEsmEnabled(){if(this.opts.project.configuration.sources.has("pnpEnableEsmLoader"))return this.opts.project.configuration.get("pnpEnableEsmLoader");if(this.isESMLoaderRequired)return!0;for(let e of this.opts.project.workspaces)if(e.manifest.type==="module")return!0;return!1}async finalizeInstallWithPnp(e){let r=Dh(this.opts.project),o=await this.locateNodeModules(e.ignorePattern);if(o.length>0){this.opts.report.reportWarning(31,"One or more node_modules have been detected and will be removed. This operation may take some time.");for(let n of o)await oe.removePromise(n)}if(await this.transformPnpSettings(e),this.opts.project.configuration.get("pnpEnableInlining")){let n=Jwe(e);await oe.changeFilePromise(r.cjs,n,{automaticNewlines:!0,mode:493}),await oe.removePromise(r.data)}else{let{dataFile:n,loaderFile:u}=zwe(e);await oe.changeFilePromise(r.cjs,u,{automaticNewlines:!0,mode:493}),await oe.changeFilePromise(r.data,n,{automaticNewlines:!0,mode:420})}this.isEsmEnabled()&&(this.opts.report.reportWarning(0,"ESM support for PnP uses the experimental loader API and is therefore experimental"),await oe.changeFilePromise(r.esmLoader,(0,nj.default)(),{automaticNewlines:!0,mode:420}));let a=this.opts.project.configuration.get("pnpUnpluggedFolder");if(this.unpluggedPaths.size===0)await oe.removePromise(a);else for(let n of await oe.readdirPromise(a)){let u=J.resolve(a,n);this.unpluggedPaths.has(u)||await oe.removePromise(u)}}async locateNodeModules(e){let r=[],o=e?new RegExp(e):null;for(let a of this.opts.project.workspaces){let n=J.join(a.cwd,"node_modules");if(o&&o.test(J.relative(this.opts.project.cwd,a.cwd))||!oe.existsSync(n))continue;let u=await oe.readdirPromise(n,{withFileTypes:!0}),A=u.filter(p=>!p.isDirectory()||p.name===".bin"||!p.name.startsWith("."));if(A.length===u.length)r.push(n);else for(let p of A)r.push(J.join(n,p.name))}return r}async unplugPackageIfNeeded(e,r,o,a,n){return this.shouldBeUnplugged(e,r,a)?this.unplugPackage(e,o,n):o.packageFs}shouldBeUnplugged(e,r,o){return typeof o.unplugged<"u"?o.unplugged:uwt.has(e.identHash)||e.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(yk(e,r,o,{configuration:this.opts.project.configuration}).length>0||r.misc.extractHint)}async unplugPackage(e,r,o){let a=JB(e,{configuration:this.opts.project.configuration});return this.opts.project.disabledLocators.has(e.locatorHash)?new ju(a,{baseFs:r.packageFs,pathUtils:J}):(this.unpluggedPaths.add(a),o.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{let n=J.join(a,r.prefixPath,".ready");await oe.existsPromise(n)||(this.opts.project.storedBuildState.delete(e.locatorHash),await oe.mkdirPromise(a,{recursive:!0}),await oe.copyPromise(a,wt.dot,{baseFs:r.packageFs,overwrite:!1}),await oe.writeFilePromise(n,""))})),new An(a))}getPackageInformation(e){let r=Y.stringifyIdent(e),o=e.reference,a=this.packageRegistry.get(r);if(!a)throw new Error(`Assertion failed: The package information store should have been available (for ${Y.prettyIdent(this.opts.project.configuration,e)})`);let n=a.get(o);if(!n)throw new Error(`Assertion failed: The package information should have been available (for ${Y.prettyLocator(this.opts.project.configuration,e)})`);return n}getDiskInformation(e){let r=We.getMapWithDefault(this.packageRegistry,"@@disk"),o=oj(this.opts.project.cwd,e);return We.getFactoryWithDefault(r,o,()=>({packageLocation:o,packageDependencies:new Map,packagePeers:new Set,linkType:"SOFT",discardFromLookup:!1}))}};function oj(t,e){let r=J.relative(t,e);return r.match(/^\.{0,2}\//)||(r=`./${r}`),r.replace(/\/?$/,"/")}async function Awt(t){let e=await Nt.tryFind(t.prefixPath,{baseFs:t.packageFs})??new Nt,r=new Set(["preinstall","install","postinstall"]);for(let o of e.scripts.keys())r.has(o)||e.scripts.delete(o);return{manifest:{scripts:e.scripts,preferUnplugged:e.preferUnplugged,type:e.type},misc:{extractHint:ij(t),hasBindingGyp:sj(t)}}}Ke();Ke();_t();var D1e=tt(zo());var Sh=class extends ct{constructor(){super(...arguments);this.all=fe.Boolean("-A,--all",!1,{description:"Unplug direct dependencies from the entire project"});this.recursive=fe.Boolean("-R,--recursive",!1,{description:"Unplug both direct and transitive dependencies"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.patterns=fe.Rest()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Ur.find(r);if(!a)throw new er(o.cwd,this.context.cwd);if(r.get("nodeLinker")!=="pnp")throw new ot("This command can only be used if the `nodeLinker` option is set to `pnp`");await o.restoreInstallState();let u=new Set(this.patterns),A=this.patterns.map(b=>{let E=Y.parseDescriptor(b),R=E.range!=="unknown"?E:Y.makeDescriptor(E,"*");if(!Tr.validRange(R.range))throw new ot(`The range of the descriptor patterns must be a valid semver range (${Y.prettyDescriptor(r,R)})`);return L=>{let _=Y.stringifyIdent(L);return!D1e.default.isMatch(_,Y.stringifyIdent(R))||L.version&&!Tr.satisfiesWithPrereleases(L.version,R.range)?!1:(u.delete(b),!0)}}),p=()=>{let b=[];for(let E of o.storedPackages.values())!o.tryWorkspaceByLocator(E)&&!Y.isVirtualLocator(E)&&A.some(R=>R(E))&&b.push(E);return b},h=b=>{let E=new Set,R=[],L=(_,V)=>{if(!E.has(_.locatorHash)&&(E.add(_.locatorHash),!o.tryWorkspaceByLocator(_)&&A.some(re=>re(_))&&R.push(_),!(V>0&&!this.recursive)))for(let re of _.dependencies.values()){let ae=o.storedResolutions.get(re.descriptorHash);if(!ae)throw new Error("Assertion failed: The resolution should have been registered");let he=o.storedPackages.get(ae);if(!he)throw new Error("Assertion failed: The package should have been registered");L(he,V+1)}};for(let _ of b)L(_.anchoredPackage,0);return R},C,w;if(this.all&&this.recursive?(C=p(),w="the project"):this.all?(C=h(o.workspaces),w="any workspace"):(C=h([a]),w="this workspace"),u.size>1)throw new ot(`Patterns ${ye.prettyList(r,u,ye.Type.CODE)} don't match any packages referenced by ${w}`);if(u.size>0)throw new ot(`Pattern ${ye.prettyList(r,u,ye.Type.CODE)} doesn't match any packages referenced by ${w}`);return C=We.sortMap(C,b=>Y.stringifyLocator(b)),(await Ct.start({configuration:r,stdout:this.context.stdout,json:this.json},async b=>{for(let E of C){let R=E.version??"unknown",L=o.topLevelWorkspace.manifest.ensureDependencyMeta(Y.makeDescriptor(E,R));L.unplugged=!0,b.reportInfo(0,`Will unpack ${Y.prettyLocator(r,E)} to ${ye.pretty(r,JB(E,{configuration:r}),ye.Type.PATH)}`),b.reportJson({locator:Y.stringifyLocator(E),version:R})}await o.topLevelWorkspace.persistManifest(),b.reportSeparator(),await o.install({cache:n,report:b})})).exitCode()}};Sh.paths=[["unplug"]],Sh.usage=it.Usage({description:"force the unpacking of a list of packages",details:"\n This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\n\n A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\n\n Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\n\n By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\n\n This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\n ",examples:[["Unplug the lodash dependency from the active workspace","yarn unplug lodash"],["Unplug all instances of lodash referenced by any workspace","yarn unplug lodash -A"],["Unplug all instances of lodash referenced by the active workspace and its dependencies","yarn unplug lodash -R"],["Unplug all instances of lodash, anywhere","yarn unplug lodash -AR"],["Unplug one specific version of lodash","yarn unplug lodash@1.2.3"],["Unplug all packages with the `@babel` scope","yarn unplug '@babel/*'"],["Unplug all packages (only for testing, not recommended)","yarn unplug -R '*'"]]});var Dh=t=>({cjs:J.join(t.cwd,Lr.pnpCjs),data:J.join(t.cwd,Lr.pnpData),esmLoader:J.join(t.cwd,Lr.pnpEsmLoader)}),x1e=t=>/\s/.test(t)?JSON.stringify(t):t;async function fwt(t,e,r){let o=Dh(t),a=`--require ${x1e(ue.fromPortablePath(o.cjs))}`;if(oe.existsSync(o.esmLoader)&&(a=`${a} --experimental-loader ${(0,P1e.pathToFileURL)(ue.fromPortablePath(o.esmLoader)).href}`),o.cjs.includes(" ")&&S1e.default.lt(process.versions.node,"12.0.0"))throw new Error(`Expected the build location to not include spaces when using Node < 12.0.0 (${process.versions.node})`);if(oe.existsSync(o.cjs)){let n=e.NODE_OPTIONS||"",u=/\s*--require\s+\S*\.pnp\.c?js\s*/g,A=/\s*--experimental-loader\s+\S*\.pnp\.loader\.mjs\s*/;n=n.replace(u," ").replace(A," ").trim(),n=n?`${a} ${n}`:a,e.NODE_OPTIONS=n}}async function pwt(t,e){let r=Dh(t);e(r.cjs),e(r.data),e(r.esmLoader),e(t.configuration.get("pnpUnpluggedFolder"))}var hwt={hooks:{populateYarnPaths:pwt,setupScriptEnvironment:fwt},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: "pnp", "node-modules"',type:"STRING",default:"pnp"},winLinkType:{description:"Whether Yarn should use Windows Junctions or symlinks when creating links on Windows.",type:"STRING",values:["junctions","symlinks"],default:"junctions"},pnpMode:{description:"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.",type:"STRING",default:"strict"},pnpShebang:{description:"String to prepend to the generated PnP script",type:"STRING",default:"#!/usr/bin/env node"},pnpIgnorePatterns:{description:"Array of glob patterns; files matching them will use the classic resolution",type:"STRING",default:[],isArray:!0},pnpEnableEsmLoader:{description:"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.",type:"BOOLEAN",default:!1},pnpEnableInlining:{description:"If true, the PnP data will be inlined along with the generated loader",type:"BOOLEAN",default:!0},pnpFallbackMode:{description:"If true, the generated PnP loader will follow the top-level fallback rule",type:"STRING",default:"dependencies-only"},pnpUnpluggedFolder:{description:"Folder where the unplugged packages must be stored",type:"ABSOLUTE_PATH",default:"./.yarn/unplugged"}},linkers:[vh],commands:[Sh]},gwt=hwt;var L1e=tt(R1e());_t();var hj=tt(Ie("crypto")),O1e=tt(Ie("fs")),M1e=1,vi="node_modules",Ek=".bin",U1e=".yarn-state.yml",Fwt=1e3,gj=(o=>(o.CLASSIC="classic",o.HARDLINKS_LOCAL="hardlinks-local",o.HARDLINKS_GLOBAL="hardlinks-global",o))(gj||{}),XB=class{constructor(){this.installStateCache=new Map}getCustomDataKey(){return JSON.stringify({name:"NodeModulesLinker",version:3})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the node-modules linker to be enabled");let o=r.project.tryWorkspaceByLocator(e);if(o)return o.cwd;let a=await We.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await pj(r.project,{unrollAliases:!0}));if(a===null)throw new ot("Couldn't find the node_modules state file - running an install might help (findPackageLocation)");let n=a.locatorMap.get(Y.stringifyLocator(e));if(!n){let p=new ot(`Couldn't find ${Y.prettyLocator(r.project.configuration,e)} in the currently installed node_modules map - running an install might help`);throw p.code="LOCATOR_NOT_INSTALLED",p}let u=n.locations.sort((p,h)=>p.split(J.sep).length-h.split(J.sep).length),A=J.join(r.project.configuration.startingCwd,vi);return u.find(p=>J.contains(A,p))||n.locations[0]}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let o=await We.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await pj(r.project,{unrollAliases:!0}));if(o===null)return null;let{locationRoot:a,segments:n}=Ck(J.resolve(e),{skipPrefix:r.project.cwd}),u=o.locationTree.get(a);if(!u)return null;let A=u.locator;for(let p of n){if(u=u.children.get(p),!u)break;A=u.locator||A}return Y.parseLocator(A)}makeInstaller(e){return new fj(e)}isEnabled(e){return e.project.configuration.get("nodeLinker")==="node-modules"}},fj=class{constructor(e){this.opts=e;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}attachCustomData(e){this.customData=e}async installPackage(e,r){let o=J.resolve(r.packageFs.getRealPath(),r.prefixPath),a=this.customData.store.get(e.locatorHash);if(typeof a>"u"&&(a=await Rwt(e,r),e.linkType==="HARD"&&this.customData.store.set(e.locatorHash,a)),!Y.isPackageCompatible(e,this.opts.project.configuration.getSupportedArchitectures()))return{packageLocation:null,buildDirective:null};let n=new Map,u=new Set;n.has(Y.stringifyIdent(e))||n.set(Y.stringifyIdent(e),e.reference);let A=e;if(Y.isVirtualLocator(e)){A=Y.devirtualizeLocator(e);for(let C of e.peerDependencies.values())n.set(Y.stringifyIdent(C),null),u.add(Y.stringifyIdent(C))}let p={packageLocation:`${ue.fromPortablePath(o)}/`,packageDependencies:n,packagePeers:u,linkType:e.linkType,discardFromLookup:r.discardFromLookup??!1};this.localStore.set(e.locatorHash,{pkg:e,customPackageData:a,dependencyMeta:this.opts.project.getDependencyMeta(e,e.version),pnpNode:p});let h=r.checksum?r.checksum.substring(r.checksum.indexOf("/")+1):null;return this.realLocatorChecksums.set(A.locatorHash,h),{packageLocation:o,buildDirective:null}}async attachInternalDependencies(e,r){let o=this.localStore.get(e.locatorHash);if(typeof o>"u")throw new Error("Assertion failed: Expected information object to have been registered");for(let[a,n]of r){let u=Y.areIdentsEqual(a,n)?n.reference:[Y.stringifyIdent(n),n.reference];o.pnpNode.packageDependencies.set(Y.stringifyIdent(a),u)}}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the node-modules linker")}async finalizeInstall(){if(this.opts.project.configuration.get("nodeLinker")!=="node-modules")return;let e=new pi({baseFs:new _l({maxOpenFiles:80,readOnlyArchives:!0})}),r=await pj(this.opts.project),o=this.opts.project.configuration.get("nmMode");(r===null||o!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:o,mtimeMs:0});let a=new Map(this.opts.project.workspaces.map(v=>{var E;let b=this.opts.project.configuration.get("nmHoistingLimits");try{b=We.validateEnum(OB,((E=v.manifest.installConfig)==null?void 0:E.hoistingLimits)??b)}catch{let L=Y.prettyWorkspace(this.opts.project.configuration,v);this.opts.report.reportWarning(57,`${L}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(OB).join(", ")}, using default: "${b}"`)}return[v.relativeCwd,b]})),n=new Map(this.opts.project.workspaces.map(v=>{var E;let b=this.opts.project.configuration.get("nmSelfReferences");return b=((E=v.manifest.installConfig)==null?void 0:E.selfReferences)??b,[v.relativeCwd,b]})),u={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(v,b)=>Array.isArray(b)?{name:b[0],reference:b[1]}:{name:v,reference:b},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(v=>{let b=v.anchoredLocator;return{name:Y.stringifyIdent(v.locator),reference:b.reference}}),getPackageInformation:v=>{let b=v.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:Y.makeLocator(Y.parseIdent(v.name),v.reference),E=this.localStore.get(b.locatorHash);if(typeof E>"u")throw new Error("Assertion failed: Expected the package reference to have been registered");return E.pnpNode},findPackageLocator:v=>{let b=this.opts.project.tryWorkspaceByCwd(ue.toPortablePath(v));if(b!==null){let E=b.anchoredLocator;return{name:Y.stringifyIdent(E),reference:E.reference}}throw new Error("Assertion failed: Unimplemented")},resolveToUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveRequest:()=>{throw new Error("Assertion failed: Unimplemented")},resolveVirtual:v=>ue.fromPortablePath(pi.resolveVirtual(ue.toPortablePath(v)))},{tree:A,errors:p,preserveSymlinksRequired:h}=MB(u,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:a,project:this.opts.project,selfReferencesByCwd:n});if(!A){for(let{messageName:v,text:b}of p)this.opts.report.reportError(v,b);return}let C=qq(A);await Uwt(r,C,{baseFs:e,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async v=>{let b=Y.parseLocator(v),E=this.localStore.get(b.locatorHash);if(typeof E>"u")throw new Error("Assertion failed: Expected the slot to exist");return E.customPackageData.manifest}});let w=[];for(let[v,b]of C.entries()){if(j1e(v))continue;let E=Y.parseLocator(v),R=this.localStore.get(E.locatorHash);if(typeof R>"u")throw new Error("Assertion failed: Expected the slot to exist");if(this.opts.project.tryWorkspaceByLocator(R.pkg))continue;let L=CA.extractBuildScripts(R.pkg,R.customPackageData,R.dependencyMeta,{configuration:this.opts.project.configuration,report:this.opts.report});L.length!==0&&w.push({buildLocations:b.locations,locatorHash:E.locatorHash,buildDirective:L})}return h&&this.opts.report.reportWarning(72,`The application uses portals and that's why ${ye.pretty(this.opts.project.configuration,"--preserve-symlinks",ye.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:w}}};async function Rwt(t,e){let r=await Nt.tryFind(e.prefixPath,{baseFs:e.packageFs})??new Nt,o=new Set(["preinstall","install","postinstall"]);for(let a of r.scripts.keys())o.has(a)||r.scripts.delete(a);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{hasBindingGyp:CA.hasBindingGyp(e)}}}async function Twt(t,e,r,o,{installChangedByUser:a}){let n="";n+=`# Warning: This file is automatically generated. Removing it is fine, but will |
649 | `,n+=`# cause your node_modules installation to become invalidated. | 651 | `,n+=`# cause your node_modules installation to become invalidated. |
650 | `,n+=` | 652 | `,n+=` |
651 | `,n+=`__metadata: | 653 | `,n+=`__metadata: |
652 | `,n+=` version: ${D1e} | 654 | `,n+=` version: ${M1e} |
653 | `,n+=` nmMode: ${o.value} | 655 | `,n+=` nmMode: ${o.value} |
654 | `;let u=Array.from(e.keys()).sort(),A=Y.stringifyLocator(t.topLevelWorkspace.anchoredLocator);for(let C of u){let w=e.get(C);n+=` | 656 | `;let u=Array.from(e.keys()).sort(),A=Y.stringifyLocator(t.topLevelWorkspace.anchoredLocator);for(let C of u){let w=e.get(C);n+=` |
655 | `,n+=`${JSON.stringify(C)}: | 657 | `,n+=`${JSON.stringify(C)}: |
656 | `,n+=` locations: | 658 | `,n+=` locations: |
657 | `;for(let v of w.locations){let b=V.contains(t.cwd,v);if(b===null)throw new Error(`Assertion failed: Expected the path to be within the project (${v})`);n+=` - ${JSON.stringify(b)} | 659 | `;for(let v of w.locations){let b=J.contains(t.cwd,v);if(b===null)throw new Error(`Assertion failed: Expected the path to be within the project (${v})`);n+=` - ${JSON.stringify(b)} |
658 | `}if(w.aliases.length>0){n+=` aliases: | 660 | `}if(w.aliases.length>0){n+=` aliases: |
659 | `;for(let v of w.aliases)n+=` - ${JSON.stringify(v)} | 661 | `;for(let v of w.aliases)n+=` - ${JSON.stringify(v)} |
660 | `}if(C===A&&r.size>0){n+=` bin: | 662 | `}if(C===A&&r.size>0){n+=` bin: |
661 | `;for(let[v,b]of r){let E=V.contains(t.cwd,v);if(E===null)throw new Error(`Assertion failed: Expected the path to be within the project (${v})`);n+=` ${JSON.stringify(E)}: | 663 | `;for(let[v,b]of r){let E=J.contains(t.cwd,v);if(E===null)throw new Error(`Assertion failed: Expected the path to be within the project (${v})`);n+=` ${JSON.stringify(E)}: |
662 | `;for(let[R,L]of b){let _=V.relative(V.join(v,vi),L);n+=` ${JSON.stringify(R)}: ${JSON.stringify(_)} | 664 | `;for(let[R,L]of b){let _=J.relative(J.join(v,vi),L);n+=` ${JSON.stringify(R)}: ${JSON.stringify(_)} |
663 | `}}}}let p=t.cwd,h=V.join(p,vi,S1e);a&&await ae.removePromise(h),await ae.changeFilePromise(h,n,{automaticNewlines:!0})}async function sj(t,{unrollAliases:e=!1}={}){let r=t.cwd,o=V.join(r,vi,S1e),a;try{a=await ae.statPromise(o)}catch{}if(!a)return null;let n=Yi(await ae.readFilePromise(o,"utf8"));if(n.__metadata.version>D1e)return null;let u=n.__metadata.nmMode||"classic",A=new Map,p=new Map;delete n.__metadata;for(let[h,C]of Object.entries(n)){let w=C.locations.map(b=>V.join(r,b)),v=C.bin;if(v)for(let[b,E]of Object.entries(v)){let R=V.join(r,Ae.toPortablePath(b)),L=Ye.getMapWithDefault(p,R);for(let[_,J]of Object.entries(E))L.set(Li(_),Ae.toPortablePath([R,vi,J].join(V.sep)))}if(A.set(h,{target:wt.dot,linkType:"HARD",locations:w,aliases:C.aliases||[]}),e&&C.aliases)for(let b of C.aliases){let{scope:E,name:R}=Y.parseLocator(h),L=Y.makeLocator(Y.makeIdent(E,R),b),_=Y.stringifyLocator(L);A.set(_,{target:wt.dot,linkType:"HARD",locations:w,aliases:[]})}}return{locatorMap:A,binSymlinks:p,locationTree:P1e(A,{skipPrefix:t.cwd}),nmMode:u,mtimeMs:a.mtimeMs}}var LC=async(t,e)=>{if(t.split(V.sep).indexOf(vi)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${t}`);try{if(!e.innerLoop){let o=e.allowSymlink?await ae.statPromise(t):await ae.lstatPromise(t);if(e.allowSymlink&&!o.isDirectory()||!e.allowSymlink&&o.isSymbolicLink()){await ae.unlinkPromise(t);return}}let r=await ae.readdirPromise(t,{withFileTypes:!0});for(let o of r){let a=V.join(t,Li(o.name));o.isDirectory()?(o.name!==vi||e&&e.innerLoop)&&await LC(a,{innerLoop:!0,contentsOnly:!1}):await ae.unlinkPromise(a)}e.contentsOnly||await ae.rmdirPromise(t)}catch(r){if(r.code!=="ENOENT"&&r.code!=="ENOTEMPTY")throw r}},I1e=4,gk=(t,{skipPrefix:e})=>{let r=V.contains(e,t);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${t} which is outside project root: ${e}`);let o=r.split(V.sep).filter(p=>p!==""),a=o.indexOf(vi),n=o.slice(0,a).join(V.sep),u=V.join(e,n),A=o.slice(a);return{locationRoot:u,segments:A}},P1e=(t,{skipPrefix:e})=>{let r=new Map;if(t===null)return r;let o=()=>({children:new Map,linkType:"HARD"});for(let[a,n]of t.entries()){if(n.linkType==="SOFT"&&V.contains(e,n.target)!==null){let A=Ye.getFactoryWithDefault(r,n.target,o);A.locator=a,A.linkType=n.linkType}for(let u of n.locations){let{locationRoot:A,segments:p}=gk(u,{skipPrefix:e}),h=Ye.getFactoryWithDefault(r,A,o);for(let C=0;C<p.length;++C){let w=p[C];if(w!=="."){let v=Ye.getFactoryWithDefault(h.children,w,o);h.children.set(w,v),h=v}C===p.length-1&&(h.locator=a,h.linkType=n.linkType)}}}return r},lj=async(t,e,r)=>{if(process.platform==="win32"&&r==="junctions"){let o;try{o=await ae.lstatPromise(t)}catch{}if(!o||o.isDirectory()){await ae.symlinkPromise(t,e,"junction");return}}await ae.symlinkPromise(V.relative(V.dirname(e),t),e)};async function x1e(t,e,r){let o=V.join(t,Li(`${oj.default.randomBytes(16).toString("hex")}.tmp`));try{await ae.writeFilePromise(o,r);try{await ae.linkPromise(o,e)}catch{}}finally{await ae.unlinkPromise(o)}}async function dwt({srcPath:t,dstPath:e,entry:r,globalHardlinksStore:o,baseFs:a,nmMode:n}){if(r.kind===b1e.FILE){if(n.value==="hardlinks-global"&&o&&r.digest){let A=V.join(o,r.digest.substring(0,2),`${r.digest.substring(2)}.dat`),p;try{let h=await ae.statPromise(A);if(h&&(!r.mtimeMs||h.mtimeMs>r.mtimeMs||h.mtimeMs<r.mtimeMs-pwt))if(await bn.checksumFile(A,{baseFs:ae,algorithm:"sha1"})!==r.digest){let w=V.join(o,Li(`${oj.default.randomBytes(16).toString("hex")}.tmp`));await ae.renamePromise(A,w);let v=await a.readFilePromise(t);await ae.writeFilePromise(w,v);try{await ae.linkPromise(w,A),r.mtimeMs=new Date().getTime(),await ae.unlinkPromise(w)}catch{}}else r.mtimeMs||(r.mtimeMs=Math.ceil(h.mtimeMs));await ae.linkPromise(A,e),p=!0}catch{p=!1}if(!p){let h=await a.readFilePromise(t);await x1e(o,A,h),r.mtimeMs=new Date().getTime();try{await ae.linkPromise(A,e)}catch(C){C&&C.code&&C.code=="EXDEV"&&(n.value="hardlinks-local",await a.copyFilePromise(t,e))}}}else await a.copyFilePromise(t,e);let u=r.mode&511;u!==420&&await ae.chmodPromise(e,u)}}var b1e=(o=>(o.FILE="file",o.DIRECTORY="directory",o.SYMLINK="symlink",o))(b1e||{}),mwt=async(t,e,{baseFs:r,globalHardlinksStore:o,nmMode:a,windowsLinkType:n,packageChecksum:u})=>{await ae.mkdirPromise(t,{recursive:!0});let A=async(C=wt.dot)=>{let w=V.join(e,C),v=await r.readdirPromise(w,{withFileTypes:!0}),b=new Map;for(let E of v){let R=V.join(C,E.name),L,_=V.join(w,E.name);if(E.isFile()){if(L={kind:"file",mode:(await r.lstatPromise(_)).mode},a.value==="hardlinks-global"){let J=await bn.checksumFile(_,{baseFs:r,algorithm:"sha1"});L.digest=J}}else if(E.isDirectory())L={kind:"directory"};else if(E.isSymbolicLink())L={kind:"symlink",symlinkTo:await r.readlinkPromise(_)};else throw new Error(`Unsupported file type (file: ${_}, mode: 0o${await r.statSync(_).mode.toString(8).padStart(6,"0")})`);if(b.set(R,L),E.isDirectory()&&R!==vi){let J=await A(R);for(let[re,oe]of J)b.set(re,oe)}}return b},p;if(a.value==="hardlinks-global"&&o&&u){let C=V.join(o,u.substring(0,2),`${u.substring(2)}.json`);try{p=new Map(Object.entries(JSON.parse(await ae.readFilePromise(C,"utf8"))))}catch{p=await A()}}else p=await A();let h=!1;for(let[C,w]of p){let v=V.join(e,C),b=V.join(t,C);if(w.kind==="directory")await ae.mkdirPromise(b,{recursive:!0});else if(w.kind==="file"){let E=w.mtimeMs;await dwt({srcPath:v,dstPath:b,entry:w,nmMode:a,baseFs:r,globalHardlinksStore:o}),w.mtimeMs!==E&&(h=!0)}else w.kind==="symlink"&&await lj(V.resolve(V.dirname(b),w.symlinkTo),b,n)}if(a.value==="hardlinks-global"&&o&&h&&u){let C=V.join(o,u.substring(0,2),`${u.substring(2)}.json`);await ae.removePromise(C),await x1e(o,C,Buffer.from(JSON.stringify(Object.fromEntries(p))))}};function ywt(t,e,r,o){let a=new Map,n=new Map,u=new Map,A=!1,p=(h,C,w,v,b)=>{let E=!0,R=V.join(h,C),L=new Set;if(C===vi||C.startsWith("@")){let J;try{J=ae.statSync(R)}catch{}E=!!J,J?J.mtimeMs>r?(A=!0,L=new Set(ae.readdirSync(R))):L=new Set(w.children.get(C).children.keys()):A=!0;let re=e.get(h);if(re){let oe=V.join(h,vi,hk),pe;try{pe=ae.statSync(oe)}catch{}if(!pe)A=!0;else if(pe.mtimeMs>r){A=!0;let he=new Set(ae.readdirSync(oe)),ve=new Map;n.set(h,ve);for(let[ge,le]of re)he.has(ge)&&ve.set(ge,le)}else n.set(h,re)}}else E=b.has(C);let _=w.children.get(C);if(E){let{linkType:J,locator:re}=_,oe={children:new Map,linkType:J,locator:re};if(v.children.set(C,oe),re){let pe=Ye.getSetWithDefault(u,re);pe.add(R),u.set(re,pe)}for(let pe of _.children.keys())p(R,pe,_,oe,L)}else _.locator&&o.storedBuildState.delete(Y.parseLocator(_.locator).locatorHash)};for(let[h,C]of t){let{linkType:w,locator:v}=C,b={children:new Map,linkType:w,locator:v};if(a.set(h,b),v){let E=Ye.getSetWithDefault(u,C.locator);E.add(h),u.set(C.locator,E)}C.children.has(vi)&&p(h,vi,C,b,new Set)}return{locationTree:a,binSymlinks:n,locatorLocations:u,installChangedByUser:A}}function Q1e(t){let e=Y.parseDescriptor(t);return Y.isVirtualDescriptor(e)&&(e=Y.devirtualizeDescriptor(e)),e.range.startsWith("link:")}async function Ewt(t,e,r,{loadManifest:o}){let a=new Map;for(let[A,{locations:p}]of t){let h=Q1e(A)?null:await o(A,p[0]),C=new Map;if(h)for(let[w,v]of h.bin){let b=V.join(p[0],v);v!==""&&ae.existsSync(b)&&C.set(w,v)}a.set(A,C)}let n=new Map,u=(A,p,h)=>{let C=new Map,w=V.contains(r,A);if(h.locator&&w!==null){let v=a.get(h.locator);for(let[b,E]of v){let R=V.join(A,Ae.toPortablePath(E));C.set(Li(b),R)}for(let[b,E]of h.children){let R=V.join(A,b),L=u(R,R,E);L.size>0&&n.set(A,new Map([...n.get(A)||new Map,...L]))}}else for(let[v,b]of h.children){let E=u(V.join(A,v),p,b);for(let[R,L]of E)C.set(R,L)}return C};for(let[A,p]of e){let h=u(A,A,p);h.size>0&&n.set(A,new Map([...n.get(A)||new Map,...h]))}return n}var w1e=(t,e)=>{if(!t||!e)return t===e;let r=Y.parseLocator(t);Y.isVirtualLocator(r)&&(r=Y.devirtualizeLocator(r));let o=Y.parseLocator(e);return Y.isVirtualLocator(o)&&(o=Y.devirtualizeLocator(o)),Y.areLocatorsEqual(r,o)};function cj(t){return V.join(t.get("globalFolder"),"store")}async function Cwt(t,e,{baseFs:r,project:o,report:a,loadManifest:n,realLocatorChecksums:u}){let A=V.join(o.cwd,vi),{locationTree:p,binSymlinks:h,locatorLocations:C,installChangedByUser:w}=ywt(t.locationTree,t.binSymlinks,t.mtimeMs,o),v=P1e(e,{skipPrefix:o.cwd}),b=[],E=async({srcDir:le,dstDir:Pe,linkType:g,globalHardlinksStore:De,nmMode:Ee,windowsLinkType:de,packageChecksum:ne})=>{let Z=(async()=>{try{g==="SOFT"?(await ae.mkdirPromise(V.dirname(Pe),{recursive:!0}),await lj(V.resolve(le),Pe,de)):await mwt(Pe,le,{baseFs:r,globalHardlinksStore:De,nmMode:Ee,windowsLinkType:de,packageChecksum:ne})}catch(me){throw me.message=`While persisting ${le} -> ${Pe} ${me.message}`,me}finally{oe.tick()}})().then(()=>b.splice(b.indexOf(Z),1));b.push(Z),b.length>I1e&&await Promise.race(b)},R=async(le,Pe,g)=>{let De=(async()=>{let Ee=async(de,ne,Z)=>{try{Z.innerLoop||await ae.mkdirPromise(ne,{recursive:!0});let me=await ae.readdirPromise(de,{withFileTypes:!0});for(let be of me){if(!Z.innerLoop&&be.name===hk)continue;let ut=V.join(de,be.name),H=V.join(ne,be.name);be.isDirectory()?(be.name!==vi||Z&&Z.innerLoop)&&(await ae.mkdirPromise(H,{recursive:!0}),await Ee(ut,H,{...Z,innerLoop:!0})):ve.value==="hardlinks-local"||ve.value==="hardlinks-global"?await ae.linkPromise(ut,H):await ae.copyFilePromise(ut,H,v1e.default.constants.COPYFILE_FICLONE)}}catch(me){throw Z.innerLoop||(me.message=`While cloning ${de} -> ${ne} ${me.message}`),me}finally{Z.innerLoop||oe.tick()}};await Ee(le,Pe,g)})().then(()=>b.splice(b.indexOf(De),1));b.push(De),b.length>I1e&&await Promise.race(b)},L=async(le,Pe,g)=>{if(g)for(let[De,Ee]of Pe.children){let de=g.children.get(De);await L(V.join(le,De),Ee,de)}else{Pe.children.has(vi)&&await LC(V.join(le,vi),{contentsOnly:!1});let De=V.basename(le)===vi&&v.has(V.join(V.dirname(le),V.sep));await LC(le,{contentsOnly:le===A,allowSymlink:De})}};for(let[le,Pe]of p){let g=v.get(le);for(let[De,Ee]of Pe.children){if(De===".")continue;let de=g&&g.children.get(De),ne=V.join(le,De);await L(ne,Ee,de)}}let _=async(le,Pe,g)=>{if(g){w1e(Pe.locator,g.locator)||await LC(le,{contentsOnly:Pe.linkType==="HARD"});for(let[De,Ee]of Pe.children){let de=g.children.get(De);await _(V.join(le,De),Ee,de)}}else{Pe.children.has(vi)&&await LC(V.join(le,vi),{contentsOnly:!0});let De=V.basename(le)===vi&&v.has(V.join(V.dirname(le),V.sep));await LC(le,{contentsOnly:Pe.linkType==="HARD",allowSymlink:De})}};for(let[le,Pe]of v){let g=p.get(le);for(let[De,Ee]of Pe.children){if(De===".")continue;let de=g&&g.children.get(De);await _(V.join(le,De),Ee,de)}}let J=new Map,re=[];for(let[le,Pe]of C)for(let g of Pe){let{locationRoot:De,segments:Ee}=gk(g,{skipPrefix:o.cwd}),de=v.get(De),ne=De;if(de){for(let Z of Ee)if(ne=V.join(ne,Z),de=de.children.get(Z),!de)break;if(de){let Z=w1e(de.locator,le),me=e.get(de.locator),be=me.target,ut=ne,H=me.linkType;if(Z)J.has(be)||J.set(be,ut);else if(be!==ut){let yt=Y.parseLocator(de.locator);Y.isVirtualLocator(yt)&&(yt=Y.devirtualizeLocator(yt)),re.push({srcDir:be,dstDir:ut,linkType:H,realLocatorHash:yt.locatorHash})}}}}for(let[le,{locations:Pe}]of e.entries())for(let g of Pe){let{locationRoot:De,segments:Ee}=gk(g,{skipPrefix:o.cwd}),de=p.get(De),ne=v.get(De),Z=De,me=e.get(le),be=Y.parseLocator(le);Y.isVirtualLocator(be)&&(be=Y.devirtualizeLocator(be));let ut=be.locatorHash,H=me.target,yt=g;if(H===yt)continue;let Me=me.linkType;for(let Te of Ee)ne=ne.children.get(Te);if(!de)re.push({srcDir:H,dstDir:yt,linkType:Me,realLocatorHash:ut});else for(let Te of Ee)if(Z=V.join(Z,Te),de=de.children.get(Te),!de){re.push({srcDir:H,dstDir:yt,linkType:Me,realLocatorHash:ut});break}}let oe=Vs.progressViaCounter(re.length),pe=a.reportProgress(oe),he=o.configuration.get("nmMode"),ve={value:he},ge=o.configuration.get("winLinkType");try{let le=ve.value==="hardlinks-global"?`${cj(o.configuration)}/v1`:null;if(le&&!await ae.existsPromise(le)){await ae.mkdirpPromise(le);for(let g=0;g<256;g++)await ae.mkdirPromise(V.join(le,g.toString(16).padStart(2,"0")))}for(let g of re)(g.linkType==="SOFT"||!J.has(g.srcDir))&&(J.set(g.srcDir,g.dstDir),await E({...g,globalHardlinksStore:le,nmMode:ve,windowsLinkType:ge,packageChecksum:u.get(g.realLocatorHash)||null}));await Promise.all(b),b.length=0;for(let g of re){let De=J.get(g.srcDir);g.linkType!=="SOFT"&&g.dstDir!==De&&await R(De,g.dstDir,{nmMode:ve})}await Promise.all(b),await ae.mkdirPromise(A,{recursive:!0});let Pe=await Ewt(e,v,o.cwd,{loadManifest:n});await Iwt(h,Pe,o.cwd,ge),await gwt(o,e,Pe,ve,{installChangedByUser:w}),he=="hardlinks-global"&&ve.value=="hardlinks-local"&&a.reportWarningOnce(74,"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices")}finally{pe.stop()}}async function Iwt(t,e,r,o){for(let a of t.keys()){if(V.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);if(!e.has(a)){let n=V.join(a,vi,hk);await ae.removePromise(n)}}for(let[a,n]of e){if(V.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);let u=V.join(a,vi,hk),A=t.get(a)||new Map;await ae.mkdirPromise(u,{recursive:!0});for(let p of A.keys())n.has(p)||(await ae.removePromise(V.join(u,p)),process.platform==="win32"&&await ae.removePromise(V.join(u,Li(`${p}.cmd`))));for(let[p,h]of n){let C=A.get(p),w=V.join(u,p);C!==h&&(process.platform==="win32"?await(0,B1e.default)(Ae.fromPortablePath(h),Ae.fromPortablePath(w),{createPwshFile:!1}):(await ae.removePromise(w),await lj(h,w,o),V.contains(r,await ae.realpathPromise(h))!==null&&await ae.chmodPromise(h,493)))}}}Ke();bt();Oc();var jB=class extends Ch{constructor(){super(...arguments);this.mode="loose"}makeInstaller(r){return new uj(r)}},uj=class extends dm{constructor(){super(...arguments);this.mode="loose"}async transformPnpSettings(r){let o=new pi({baseFs:new Ll({maxOpenFiles:80,readOnlyArchives:!0})}),a=a1e(r,this.opts.project.cwd,o),{tree:n,errors:u}=FB(a,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:w,text:v}of u)this.opts.report.reportError(w,v);return}let A=new Map;r.fallbackPool=A;let p=(w,v)=>{let b=Y.parseLocator(v.locator),E=Y.stringifyIdent(b);E===w?A.set(w,b.reference):A.set(w,[E,b.reference])},h=V.join(this.opts.project.cwd,Lr.nodeModules),C=n.get(h);if(!(typeof C>"u")){if("target"in C)throw new Error("Assertion failed: Expected the root junction point to be a directory");for(let w of C.dirList){let v=V.join(h,w),b=n.get(v);if(typeof b>"u")throw new Error("Assertion failed: Expected the child to have been registered");if("target"in b)p(w,b);else for(let E of b.dirList){let R=V.join(v,E),L=n.get(R);if(typeof L>"u")throw new Error("Assertion failed: Expected the subchild to have been registered");if("target"in L)p(`${w}/${E}`,L);else throw new Error("Assertion failed: Expected the leaf junction to be a package")}}}}};var wwt={hooks:{cleanGlobalArtifacts:async t=>{let e=cj(t);await ae.removePromise(e)}},configuration:{nmHoistingLimits:{description:"Prevent packages to be hoisted past specific levels",type:"STRING",values:["workspaces","dependencies","none"],default:"none"},nmMode:{description:'If set to "hardlinks-local" Yarn will utilize hardlinks to reduce disk space consumption inside "node_modules" directories. With "hardlinks-global" Yarn will use global content addressable storage to reduce "node_modules" size across all the projects using this option.',type:"STRING",values:["classic","hardlinks-local","hardlinks-global"],default:"classic"},nmSelfReferences:{description:"If set to 'false' the workspace will not be allowed to require itself and corresponding self-referencing symlink will not be created",type:"BOOLEAN",default:!0}},linkers:[qB,jB]},Bwt=wwt;var l9={};Yt(l9,{NpmHttpFetcher:()=>WB,NpmRemapResolver:()=>YB,NpmSemverFetcher:()=>gl,NpmSemverResolver:()=>KB,NpmTagResolver:()=>JB,default:()=>kBt,npmConfigUtils:()=>Gn,npmHttpUtils:()=>an,npmPublishUtils:()=>JC});Ke();var N1e=tt(ii());var _n="npm:";var an={};Yt(an,{AuthType:()=>T1e,customPackageError:()=>rp,del:()=>xwt,get:()=>fu,getIdentUrl:()=>vh,handleInvalidAuthenticationError:()=>Bh,post:()=>Swt,put:()=>Pwt});Ke();Ke();var hj=tt(Y1()),R1e=Ie("url");var Gn={};Yt(Gn,{RegistryType:()=>k1e,getAuditRegistry:()=>vwt,getAuthConfiguration:()=>pj,getDefaultRegistry:()=>GB,getPublishRegistry:()=>Dwt,getRegistryConfiguration:()=>F1e,getScopeConfiguration:()=>fj,getScopeRegistry:()=>tp,normalizeRegistry:()=>yA});var k1e=(o=>(o.AUDIT_REGISTRY="npmAuditRegistry",o.FETCH_REGISTRY="npmRegistryServer",o.PUBLISH_REGISTRY="npmPublishRegistry",o))(k1e||{});function yA(t){return t.replace(/\/$/,"")}function vwt({configuration:t}){return GB({configuration:t,type:"npmAuditRegistry"})}function Dwt(t,{configuration:e}){var r;return(r=t.publishConfig)!=null&&r.registry?yA(t.publishConfig.registry):t.name?tp(t.name.scope,{configuration:e,type:"npmPublishRegistry"}):GB({configuration:e,type:"npmPublishRegistry"})}function tp(t,{configuration:e,type:r="npmRegistryServer"}){let o=fj(t,{configuration:e});if(o===null)return GB({configuration:e,type:r});let a=o.get(r);return a===null?GB({configuration:e,type:r}):yA(a)}function GB({configuration:t,type:e="npmRegistryServer"}){let r=t.get(e);return yA(r!==null?r:t.get("npmRegistryServer"))}function F1e(t,{configuration:e}){let r=e.get("npmRegistries"),o=yA(t),a=r.get(o);if(typeof a<"u")return a;let n=r.get(o.replace(/^[a-z]+:/,""));return typeof n<"u"?n:null}function fj(t,{configuration:e}){if(t===null)return null;let o=e.get("npmScopes").get(t);return o||null}function pj(t,{configuration:e,ident:r}){let o=r&&fj(r.scope,{configuration:e});return(o==null?void 0:o.get("npmAuthIdent"))||(o==null?void 0:o.get("npmAuthToken"))?o:F1e(t,{configuration:e})||e}var T1e=(a=>(a[a.NO_AUTH=0]="NO_AUTH",a[a.BEST_EFFORT=1]="BEST_EFFORT",a[a.CONFIGURATION=2]="CONFIGURATION",a[a.ALWAYS_AUTH=3]="ALWAYS_AUTH",a))(T1e||{});async function Bh(t,{attemptedAs:e,registry:r,headers:o,configuration:a}){var n,u;if(mk(t))throw new Jt(41,"Invalid OTP token");if(((n=t.originalError)==null?void 0:n.name)==="HTTPError"&&((u=t.originalError)==null?void 0:u.response.statusCode)===401)throw new Jt(41,`Invalid authentication (${typeof e!="string"?`as ${await Qwt(r,o,{configuration:a})}`:`attempted as ${e}`})`)}function rp(t,e){var o;let r=(o=t.response)==null?void 0:o.statusCode;return r?r===404?"Package not found":r>=500&&r<600?`The registry appears to be down (using a ${ye.applyHyperlink(e,"local cache","https://yarnpkg.com/advanced/lexicon#local-cache")} might have protected you against such outages)`:null:null}function vh(t){return t.scope?`/@${t.scope}%2f${t.name}`:`/${t.name}`}async function fu(t,{configuration:e,headers:r,ident:o,authType:a,registry:n,...u}){if(o&&typeof n>"u"&&(n=tp(o.scope,{configuration:e})),o&&o.scope&&typeof a>"u"&&(a=1),typeof n!="string")throw new Error("Assertion failed: The registry should be a string");let A=await dk(n,{authType:a,configuration:e,ident:o});A&&(r={...r,authorization:A});try{return await ln.get(t.charAt(0)==="/"?`${n}${t}`:t,{configuration:e,headers:r,...u})}catch(p){throw await Bh(p,{registry:n,configuration:e,headers:r}),p}}async function Swt(t,e,{attemptedAs:r,configuration:o,headers:a,ident:n,authType:u=3,registry:A,otp:p,...h}){if(n&&typeof A>"u"&&(A=tp(n.scope,{configuration:o})),typeof A!="string")throw new Error("Assertion failed: The registry should be a string");let C=await dk(A,{authType:u,configuration:o,ident:n});C&&(a={...a,authorization:C}),p&&(a={...a,...OC(p)});try{return await ln.post(A+t,e,{configuration:o,headers:a,...h})}catch(w){if(!mk(w)||p)throw await Bh(w,{attemptedAs:r,registry:A,configuration:o,headers:a}),w;p=await gj(w,{configuration:o});let v={...a,...OC(p)};try{return await ln.post(`${A}${t}`,e,{configuration:o,headers:v,...h})}catch(b){throw await Bh(b,{attemptedAs:r,registry:A,configuration:o,headers:a}),b}}}async function Pwt(t,e,{attemptedAs:r,configuration:o,headers:a,ident:n,authType:u=3,registry:A,otp:p,...h}){if(n&&typeof A>"u"&&(A=tp(n.scope,{configuration:o})),typeof A!="string")throw new Error("Assertion failed: The registry should be a string");let C=await dk(A,{authType:u,configuration:o,ident:n});C&&(a={...a,authorization:C}),p&&(a={...a,...OC(p)});try{return await ln.put(A+t,e,{configuration:o,headers:a,...h})}catch(w){if(!mk(w))throw await Bh(w,{attemptedAs:r,registry:A,configuration:o,headers:a}),w;p=await gj(w,{configuration:o});let v={...a,...OC(p)};try{return await ln.put(`${A}${t}`,e,{configuration:o,headers:v,...h})}catch(b){throw await Bh(b,{attemptedAs:r,registry:A,configuration:o,headers:a}),b}}}async function xwt(t,{attemptedAs:e,configuration:r,headers:o,ident:a,authType:n=3,registry:u,otp:A,...p}){if(a&&typeof u>"u"&&(u=tp(a.scope,{configuration:r})),typeof u!="string")throw new Error("Assertion failed: The registry should be a string");let h=await dk(u,{authType:n,configuration:r,ident:a});h&&(o={...o,authorization:h}),A&&(o={...o,...OC(A)});try{return await ln.del(u+t,{configuration:r,headers:o,...p})}catch(C){if(!mk(C)||A)throw await Bh(C,{attemptedAs:e,registry:u,configuration:r,headers:o}),C;A=await gj(C,{configuration:r});let w={...o,...OC(A)};try{return await ln.del(`${u}${t}`,{configuration:r,headers:w,...p})}catch(v){throw await Bh(v,{attemptedAs:e,registry:u,configuration:r,headers:o}),v}}}async function dk(t,{authType:e=2,configuration:r,ident:o}){let a=pj(t,{configuration:r,ident:o}),n=bwt(a,e);if(!n)return null;let u=await r.reduceHook(A=>A.getNpmAuthenticationHeader,void 0,t,{configuration:r,ident:o});if(u)return u;if(a.get("npmAuthToken"))return`Bearer ${a.get("npmAuthToken")}`;if(a.get("npmAuthIdent")){let A=a.get("npmAuthIdent");return A.includes(":")?`Basic ${Buffer.from(A).toString("base64")}`:`Basic ${A}`}if(n&&e!==1)throw new Jt(33,"No authentication configured for request");return null}function bwt(t,e){switch(e){case 2:return t.get("npmAlwaysAuth");case 1:case 3:return!0;case 0:return!1;default:throw new Error("Unreachable")}}async function Qwt(t,e,{configuration:r}){if(typeof e>"u"||typeof e.authorization>"u")return"an anonymous user";try{return(await ln.get(new R1e.URL(`${t}/-/whoami`).href,{configuration:r,headers:e,jsonResponse:!0})).username??"an unknown user"}catch{return"an unknown user"}}async function gj(t,{configuration:e}){var a;let r=(a=t.originalError)==null?void 0:a.response.headers["npm-notice"];if(r&&(await Ct.start({configuration:e,stdout:process.stdout,includeFooter:!1},async n=>{if(n.reportInfo(0,r.replace(/(https?:\/\/\S+)/g,ye.pretty(e,"$1",ye.Type.URL))),!process.env.YARN_IS_TEST_ENV){let u=r.match(/open (https?:\/\/\S+)/i);if(u&&As.openUrl){let{openNow:A}=await(0,hj.prompt)({type:"confirm",name:"openNow",message:"Do you want to try to open this url now?",required:!0,initial:!0,onCancel:()=>process.exit(130)});A&&(await As.openUrl(u[1])||(n.reportSeparator(),n.reportWarning(0,"We failed to automatically open the url; you'll have to open it yourself in your browser of choice.")))}}}),process.stdout.write(` | 665 | `}}}}let p=t.cwd,h=J.join(p,vi,U1e);a&&await oe.removePromise(h),await oe.changeFilePromise(h,n,{automaticNewlines:!0})}async function pj(t,{unrollAliases:e=!1}={}){let r=t.cwd,o=J.join(r,vi,U1e),a;try{a=await oe.statPromise(o)}catch{}if(!a)return null;let n=Yi(await oe.readFilePromise(o,"utf8"));if(n.__metadata.version>M1e)return null;let u=n.__metadata.nmMode||"classic",A=new Map,p=new Map;delete n.__metadata;for(let[h,C]of Object.entries(n)){let w=C.locations.map(b=>J.join(r,b)),v=C.bin;if(v)for(let[b,E]of Object.entries(v)){let R=J.join(r,ue.toPortablePath(b)),L=We.getMapWithDefault(p,R);for(let[_,V]of Object.entries(E))L.set(Li(_),ue.toPortablePath([R,vi,V].join(J.sep)))}if(A.set(h,{target:wt.dot,linkType:"HARD",locations:w,aliases:C.aliases||[]}),e&&C.aliases)for(let b of C.aliases){let{scope:E,name:R}=Y.parseLocator(h),L=Y.makeLocator(Y.makeIdent(E,R),b),_=Y.stringifyLocator(L);A.set(_,{target:wt.dot,linkType:"HARD",locations:w,aliases:[]})}}return{locatorMap:A,binSymlinks:p,locationTree:_1e(A,{skipPrefix:t.cwd}),nmMode:u,mtimeMs:a.mtimeMs}}var _C=async(t,e)=>{if(t.split(J.sep).indexOf(vi)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${t}`);try{if(!e.innerLoop){let o=e.allowSymlink?await oe.statPromise(t):await oe.lstatPromise(t);if(e.allowSymlink&&!o.isDirectory()||!e.allowSymlink&&o.isSymbolicLink()){await oe.unlinkPromise(t);return}}let r=await oe.readdirPromise(t,{withFileTypes:!0});for(let o of r){let a=J.join(t,Li(o.name));o.isDirectory()?(o.name!==vi||e&&e.innerLoop)&&await _C(a,{innerLoop:!0,contentsOnly:!1}):await oe.unlinkPromise(a)}e.contentsOnly||await oe.rmdirPromise(t)}catch(r){if(r.code!=="ENOENT"&&r.code!=="ENOTEMPTY")throw r}},T1e=4,Ck=(t,{skipPrefix:e})=>{let r=J.contains(e,t);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${t} which is outside project root: ${e}`);let o=r.split(J.sep).filter(p=>p!==""),a=o.indexOf(vi),n=o.slice(0,a).join(J.sep),u=J.join(e,n),A=o.slice(a);return{locationRoot:u,segments:A}},_1e=(t,{skipPrefix:e})=>{let r=new Map;if(t===null)return r;let o=()=>({children:new Map,linkType:"HARD"});for(let[a,n]of t.entries()){if(n.linkType==="SOFT"&&J.contains(e,n.target)!==null){let A=We.getFactoryWithDefault(r,n.target,o);A.locator=a,A.linkType=n.linkType}for(let u of n.locations){let{locationRoot:A,segments:p}=Ck(u,{skipPrefix:e}),h=We.getFactoryWithDefault(r,A,o);for(let C=0;C<p.length;++C){let w=p[C];if(w!=="."){let v=We.getFactoryWithDefault(h.children,w,o);h.children.set(w,v),h=v}C===p.length-1&&(h.locator=a,h.linkType=n.linkType)}}}return r},dj=async(t,e,r)=>{if(process.platform==="win32"&&r==="junctions"){let o;try{o=await oe.lstatPromise(t)}catch{}if(!o||o.isDirectory()){await oe.symlinkPromise(t,e,"junction");return}}await oe.symlinkPromise(J.relative(J.dirname(e),t),e)};async function H1e(t,e,r){let o=J.join(t,Li(`${hj.default.randomBytes(16).toString("hex")}.tmp`));try{await oe.writeFilePromise(o,r);try{await oe.linkPromise(o,e)}catch{}}finally{await oe.unlinkPromise(o)}}async function Nwt({srcPath:t,dstPath:e,entry:r,globalHardlinksStore:o,baseFs:a,nmMode:n}){if(r.kind===q1e.FILE){if(n.value==="hardlinks-global"&&o&&r.digest){let A=J.join(o,r.digest.substring(0,2),`${r.digest.substring(2)}.dat`),p;try{let h=await oe.statPromise(A);if(h&&(!r.mtimeMs||h.mtimeMs>r.mtimeMs||h.mtimeMs<r.mtimeMs-Fwt))if(await bn.checksumFile(A,{baseFs:oe,algorithm:"sha1"})!==r.digest){let w=J.join(o,Li(`${hj.default.randomBytes(16).toString("hex")}.tmp`));await oe.renamePromise(A,w);let v=await a.readFilePromise(t);await oe.writeFilePromise(w,v);try{await oe.linkPromise(w,A),r.mtimeMs=new Date().getTime(),await oe.unlinkPromise(w)}catch{}}else r.mtimeMs||(r.mtimeMs=Math.ceil(h.mtimeMs));await oe.linkPromise(A,e),p=!0}catch{p=!1}if(!p){let h=await a.readFilePromise(t);await H1e(o,A,h),r.mtimeMs=new Date().getTime();try{await oe.linkPromise(A,e)}catch(C){C&&C.code&&C.code=="EXDEV"&&(n.value="hardlinks-local",await a.copyFilePromise(t,e))}}}else await a.copyFilePromise(t,e);let u=r.mode&511;u!==420&&await oe.chmodPromise(e,u)}}var q1e=(o=>(o.FILE="file",o.DIRECTORY="directory",o.SYMLINK="symlink",o))(q1e||{}),Lwt=async(t,e,{baseFs:r,globalHardlinksStore:o,nmMode:a,windowsLinkType:n,packageChecksum:u})=>{await oe.mkdirPromise(t,{recursive:!0});let A=async(C=wt.dot)=>{let w=J.join(e,C),v=await r.readdirPromise(w,{withFileTypes:!0}),b=new Map;for(let E of v){let R=J.join(C,E.name),L,_=J.join(w,E.name);if(E.isFile()){if(L={kind:"file",mode:(await r.lstatPromise(_)).mode},a.value==="hardlinks-global"){let V=await bn.checksumFile(_,{baseFs:r,algorithm:"sha1"});L.digest=V}}else if(E.isDirectory())L={kind:"directory"};else if(E.isSymbolicLink())L={kind:"symlink",symlinkTo:await r.readlinkPromise(_)};else throw new Error(`Unsupported file type (file: ${_}, mode: 0o${await r.statSync(_).mode.toString(8).padStart(6,"0")})`);if(b.set(R,L),E.isDirectory()&&R!==vi){let V=await A(R);for(let[re,ae]of V)b.set(re,ae)}}return b},p;if(a.value==="hardlinks-global"&&o&&u){let C=J.join(o,u.substring(0,2),`${u.substring(2)}.json`);try{p=new Map(Object.entries(JSON.parse(await oe.readFilePromise(C,"utf8"))))}catch{p=await A()}}else p=await A();let h=!1;for(let[C,w]of p){let v=J.join(e,C),b=J.join(t,C);if(w.kind==="directory")await oe.mkdirPromise(b,{recursive:!0});else if(w.kind==="file"){let E=w.mtimeMs;await Nwt({srcPath:v,dstPath:b,entry:w,nmMode:a,baseFs:r,globalHardlinksStore:o}),w.mtimeMs!==E&&(h=!0)}else w.kind==="symlink"&&await dj(J.resolve(J.dirname(b),w.symlinkTo),b,n)}if(a.value==="hardlinks-global"&&o&&h&&u){let C=J.join(o,u.substring(0,2),`${u.substring(2)}.json`);await oe.removePromise(C),await H1e(o,C,Buffer.from(JSON.stringify(Object.fromEntries(p))))}};function Owt(t,e,r,o){let a=new Map,n=new Map,u=new Map,A=!1,p=(h,C,w,v,b)=>{let E=!0,R=J.join(h,C),L=new Set;if(C===vi||C.startsWith("@")){let V;try{V=oe.statSync(R)}catch{}E=!!V,V?V.mtimeMs>r?(A=!0,L=new Set(oe.readdirSync(R))):L=new Set(w.children.get(C).children.keys()):A=!0;let re=e.get(h);if(re){let ae=J.join(h,vi,Ek),he;try{he=oe.statSync(ae)}catch{}if(!he)A=!0;else if(he.mtimeMs>r){A=!0;let pe=new Set(oe.readdirSync(ae)),De=new Map;n.set(h,De);for(let[ge,le]of re)pe.has(ge)&&De.set(ge,le)}else n.set(h,re)}}else E=b.has(C);let _=w.children.get(C);if(E){let{linkType:V,locator:re}=_,ae={children:new Map,linkType:V,locator:re};if(v.children.set(C,ae),re){let he=We.getSetWithDefault(u,re);he.add(R),u.set(re,he)}for(let he of _.children.keys())p(R,he,_,ae,L)}else _.locator&&o.storedBuildState.delete(Y.parseLocator(_.locator).locatorHash)};for(let[h,C]of t){let{linkType:w,locator:v}=C,b={children:new Map,linkType:w,locator:v};if(a.set(h,b),v){let E=We.getSetWithDefault(u,C.locator);E.add(h),u.set(C.locator,E)}C.children.has(vi)&&p(h,vi,C,b,new Set)}return{locationTree:a,binSymlinks:n,locatorLocations:u,installChangedByUser:A}}function j1e(t){let e=Y.parseDescriptor(t);return Y.isVirtualDescriptor(e)&&(e=Y.devirtualizeDescriptor(e)),e.range.startsWith("link:")}async function Mwt(t,e,r,{loadManifest:o}){let a=new Map;for(let[A,{locations:p}]of t){let h=j1e(A)?null:await o(A,p[0]),C=new Map;if(h)for(let[w,v]of h.bin){let b=J.join(p[0],v);v!==""&&oe.existsSync(b)&&C.set(w,v)}a.set(A,C)}let n=new Map,u=(A,p,h)=>{let C=new Map,w=J.contains(r,A);if(h.locator&&w!==null){let v=a.get(h.locator);for(let[b,E]of v){let R=J.join(A,ue.toPortablePath(E));C.set(Li(b),R)}for(let[b,E]of h.children){let R=J.join(A,b),L=u(R,R,E);L.size>0&&n.set(A,new Map([...n.get(A)||new Map,...L]))}}else for(let[v,b]of h.children){let E=u(J.join(A,v),p,b);for(let[R,L]of E)C.set(R,L)}return C};for(let[A,p]of e){let h=u(A,A,p);h.size>0&&n.set(A,new Map([...n.get(A)||new Map,...h]))}return n}var N1e=(t,e)=>{if(!t||!e)return t===e;let r=Y.parseLocator(t);Y.isVirtualLocator(r)&&(r=Y.devirtualizeLocator(r));let o=Y.parseLocator(e);return Y.isVirtualLocator(o)&&(o=Y.devirtualizeLocator(o)),Y.areLocatorsEqual(r,o)};function mj(t){return J.join(t.get("globalFolder"),"store")}async function Uwt(t,e,{baseFs:r,project:o,report:a,loadManifest:n,realLocatorChecksums:u}){let A=J.join(o.cwd,vi),{locationTree:p,binSymlinks:h,locatorLocations:C,installChangedByUser:w}=Owt(t.locationTree,t.binSymlinks,t.mtimeMs,o),v=_1e(e,{skipPrefix:o.cwd}),b=[],E=async({srcDir:le,dstDir:Pe,linkType:g,globalHardlinksStore:ve,nmMode:Ee,windowsLinkType:de,packageChecksum:ne})=>{let Z=(async()=>{try{g==="SOFT"?(await oe.mkdirPromise(J.dirname(Pe),{recursive:!0}),await dj(J.resolve(le),Pe,de)):await Lwt(Pe,le,{baseFs:r,globalHardlinksStore:ve,nmMode:Ee,windowsLinkType:de,packageChecksum:ne})}catch(me){throw me.message=`While persisting ${le} -> ${Pe} ${me.message}`,me}finally{ae.tick()}})().then(()=>b.splice(b.indexOf(Z),1));b.push(Z),b.length>T1e&&await Promise.race(b)},R=async(le,Pe,g)=>{let ve=(async()=>{let Ee=async(de,ne,Z)=>{try{Z.innerLoop||await oe.mkdirPromise(ne,{recursive:!0});let me=await oe.readdirPromise(de,{withFileTypes:!0});for(let be of me){if(!Z.innerLoop&&be.name===Ek)continue;let ut=J.join(de,be.name),H=J.join(ne,be.name);be.isDirectory()?(be.name!==vi||Z&&Z.innerLoop)&&(await oe.mkdirPromise(H,{recursive:!0}),await Ee(ut,H,{...Z,innerLoop:!0})):De.value==="hardlinks-local"||De.value==="hardlinks-global"?await oe.linkPromise(ut,H):await oe.copyFilePromise(ut,H,O1e.default.constants.COPYFILE_FICLONE)}}catch(me){throw Z.innerLoop||(me.message=`While cloning ${de} -> ${ne} ${me.message}`),me}finally{Z.innerLoop||ae.tick()}};await Ee(le,Pe,g)})().then(()=>b.splice(b.indexOf(ve),1));b.push(ve),b.length>T1e&&await Promise.race(b)},L=async(le,Pe,g)=>{if(g)for(let[ve,Ee]of Pe.children){let de=g.children.get(ve);await L(J.join(le,ve),Ee,de)}else{Pe.children.has(vi)&&await _C(J.join(le,vi),{contentsOnly:!1});let ve=J.basename(le)===vi&&v.has(J.join(J.dirname(le),J.sep));await _C(le,{contentsOnly:le===A,allowSymlink:ve})}};for(let[le,Pe]of p){let g=v.get(le);for(let[ve,Ee]of Pe.children){if(ve===".")continue;let de=g&&g.children.get(ve),ne=J.join(le,ve);await L(ne,Ee,de)}}let _=async(le,Pe,g)=>{if(g){N1e(Pe.locator,g.locator)||await _C(le,{contentsOnly:Pe.linkType==="HARD"});for(let[ve,Ee]of Pe.children){let de=g.children.get(ve);await _(J.join(le,ve),Ee,de)}}else{Pe.children.has(vi)&&await _C(J.join(le,vi),{contentsOnly:!0});let ve=J.basename(le)===vi&&v.has(J.join(J.dirname(le),J.sep));await _C(le,{contentsOnly:Pe.linkType==="HARD",allowSymlink:ve})}};for(let[le,Pe]of v){let g=p.get(le);for(let[ve,Ee]of Pe.children){if(ve===".")continue;let de=g&&g.children.get(ve);await _(J.join(le,ve),Ee,de)}}let V=new Map,re=[];for(let[le,Pe]of C)for(let g of Pe){let{locationRoot:ve,segments:Ee}=Ck(g,{skipPrefix:o.cwd}),de=v.get(ve),ne=ve;if(de){for(let Z of Ee)if(ne=J.join(ne,Z),de=de.children.get(Z),!de)break;if(de){let Z=N1e(de.locator,le),me=e.get(de.locator),be=me.target,ut=ne,H=me.linkType;if(Z)V.has(be)||V.set(be,ut);else if(be!==ut){let yt=Y.parseLocator(de.locator);Y.isVirtualLocator(yt)&&(yt=Y.devirtualizeLocator(yt)),re.push({srcDir:be,dstDir:ut,linkType:H,realLocatorHash:yt.locatorHash})}}}}for(let[le,{locations:Pe}]of e.entries())for(let g of Pe){let{locationRoot:ve,segments:Ee}=Ck(g,{skipPrefix:o.cwd}),de=p.get(ve),ne=v.get(ve),Z=ve,me=e.get(le),be=Y.parseLocator(le);Y.isVirtualLocator(be)&&(be=Y.devirtualizeLocator(be));let ut=be.locatorHash,H=me.target,yt=g;if(H===yt)continue;let Me=me.linkType;for(let Te of Ee)ne=ne.children.get(Te);if(!de)re.push({srcDir:H,dstDir:yt,linkType:Me,realLocatorHash:ut});else for(let Te of Ee)if(Z=J.join(Z,Te),de=de.children.get(Te),!de){re.push({srcDir:H,dstDir:yt,linkType:Me,realLocatorHash:ut});break}}let ae=Js.progressViaCounter(re.length),he=a.reportProgress(ae),pe=o.configuration.get("nmMode"),De={value:pe},ge=o.configuration.get("winLinkType");try{let le=De.value==="hardlinks-global"?`${mj(o.configuration)}/v1`:null;if(le&&!await oe.existsPromise(le)){await oe.mkdirpPromise(le);for(let g=0;g<256;g++)await oe.mkdirPromise(J.join(le,g.toString(16).padStart(2,"0")))}for(let g of re)(g.linkType==="SOFT"||!V.has(g.srcDir))&&(V.set(g.srcDir,g.dstDir),await E({...g,globalHardlinksStore:le,nmMode:De,windowsLinkType:ge,packageChecksum:u.get(g.realLocatorHash)||null}));await Promise.all(b),b.length=0;for(let g of re){let ve=V.get(g.srcDir);g.linkType!=="SOFT"&&g.dstDir!==ve&&await R(ve,g.dstDir,{nmMode:De})}await Promise.all(b),await oe.mkdirPromise(A,{recursive:!0});let Pe=await Mwt(e,v,o.cwd,{loadManifest:n});await _wt(h,Pe,o.cwd,ge),await Twt(o,e,Pe,De,{installChangedByUser:w}),pe=="hardlinks-global"&&De.value=="hardlinks-local"&&a.reportWarningOnce(74,"'nmMode' has been downgraded to 'hardlinks-local' due to global cache and install folder being on different devices")}finally{he.stop()}}async function _wt(t,e,r,o){for(let a of t.keys()){if(J.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);if(!e.has(a)){let n=J.join(a,vi,Ek);await oe.removePromise(n)}}for(let[a,n]of e){if(J.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);let u=J.join(a,vi,Ek),A=t.get(a)||new Map;await oe.mkdirPromise(u,{recursive:!0});for(let p of A.keys())n.has(p)||(await oe.removePromise(J.join(u,p)),process.platform==="win32"&&await oe.removePromise(J.join(u,Li(`${p}.cmd`))));for(let[p,h]of n){let C=A.get(p),w=J.join(u,p);C!==h&&(process.platform==="win32"?await(0,L1e.default)(ue.fromPortablePath(h),ue.fromPortablePath(w),{createPwshFile:!1}):(await oe.removePromise(w),await dj(h,w,o),J.contains(r,await oe.realpathPromise(h))!==null&&await oe.chmodPromise(h,493)))}}}Ke();St();Hc();var ZB=class extends vh{constructor(){super(...arguments);this.mode="loose"}makeInstaller(r){return new yj(r)}},yj=class extends Cm{constructor(){super(...arguments);this.mode="loose"}async transformPnpSettings(r){let o=new pi({baseFs:new _l({maxOpenFiles:80,readOnlyArchives:!0})}),a=C1e(r,this.opts.project.cwd,o),{tree:n,errors:u}=MB(a,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:w,text:v}of u)this.opts.report.reportError(w,v);return}let A=new Map;r.fallbackPool=A;let p=(w,v)=>{let b=Y.parseLocator(v.locator),E=Y.stringifyIdent(b);E===w?A.set(w,b.reference):A.set(w,[E,b.reference])},h=J.join(this.opts.project.cwd,Lr.nodeModules),C=n.get(h);if(!(typeof C>"u")){if("target"in C)throw new Error("Assertion failed: Expected the root junction point to be a directory");for(let w of C.dirList){let v=J.join(h,w),b=n.get(v);if(typeof b>"u")throw new Error("Assertion failed: Expected the child to have been registered");if("target"in b)p(w,b);else for(let E of b.dirList){let R=J.join(v,E),L=n.get(R);if(typeof L>"u")throw new Error("Assertion failed: Expected the subchild to have been registered");if("target"in L)p(`${w}/${E}`,L);else throw new Error("Assertion failed: Expected the leaf junction to be a package")}}}}};var Hwt={hooks:{cleanGlobalArtifacts:async t=>{let e=mj(t);await oe.removePromise(e)}},configuration:{nmHoistingLimits:{description:"Prevent packages to be hoisted past specific levels",type:"STRING",values:["workspaces","dependencies","none"],default:"none"},nmMode:{description:'If set to "hardlinks-local" Yarn will utilize hardlinks to reduce disk space consumption inside "node_modules" directories. With "hardlinks-global" Yarn will use global content addressable storage to reduce "node_modules" size across all the projects using this option.',type:"STRING",values:["classic","hardlinks-local","hardlinks-global"],default:"classic"},nmSelfReferences:{description:"If set to 'false' the workspace will not be allowed to require itself and corresponding self-referencing symlink will not be created",type:"BOOLEAN",default:!0}},linkers:[XB,ZB]},qwt=Hwt;var dG={};Yt(dG,{NpmHttpFetcher:()=>ev,NpmRemapResolver:()=>tv,NpmSemverFetcher:()=>El,NpmSemverResolver:()=>rv,NpmTagResolver:()=>nv,default:()=>zBt,npmConfigUtils:()=>Wn,npmHttpUtils:()=>an,npmPublishUtils:()=>ZC});Ke();var V1e=tt(si());var _n="npm:";var an={};Yt(an,{AuthType:()=>K1e,customPackageError:()=>sp,del:()=>Kwt,get:()=>pu,getIdentUrl:()=>xh,handleInvalidAuthenticationError:()=>Ph,post:()=>Wwt,put:()=>Ywt});Ke();Ke();var wj=tt(Z1()),Y1e=Ie("url");var Wn={};Yt(Wn,{RegistryType:()=>G1e,getAuditRegistry:()=>jwt,getAuthConfiguration:()=>Ij,getDefaultRegistry:()=>$B,getPublishRegistry:()=>Gwt,getRegistryConfiguration:()=>W1e,getScopeConfiguration:()=>Cj,getScopeRegistry:()=>ip,normalizeRegistry:()=>IA});var G1e=(o=>(o.AUDIT_REGISTRY="npmAuditRegistry",o.FETCH_REGISTRY="npmRegistryServer",o.PUBLISH_REGISTRY="npmPublishRegistry",o))(G1e||{});function IA(t){return t.replace(/\/$/,"")}function jwt({configuration:t}){return $B({configuration:t,type:"npmAuditRegistry"})}function Gwt(t,{configuration:e}){var r;return(r=t.publishConfig)!=null&&r.registry?IA(t.publishConfig.registry):t.name?ip(t.name.scope,{configuration:e,type:"npmPublishRegistry"}):$B({configuration:e,type:"npmPublishRegistry"})}function ip(t,{configuration:e,type:r="npmRegistryServer"}){let o=Cj(t,{configuration:e});if(o===null)return $B({configuration:e,type:r});let a=o.get(r);return a===null?$B({configuration:e,type:r}):IA(a)}function $B({configuration:t,type:e="npmRegistryServer"}){let r=t.get(e);return IA(r!==null?r:t.get("npmRegistryServer"))}function W1e(t,{configuration:e}){let r=e.get("npmRegistries"),o=IA(t),a=r.get(o);if(typeof a<"u")return a;let n=r.get(o.replace(/^[a-z]+:/,""));return typeof n<"u"?n:null}function Cj(t,{configuration:e}){if(t===null)return null;let o=e.get("npmScopes").get(t);return o||null}function Ij(t,{configuration:e,ident:r}){let o=r&&Cj(r.scope,{configuration:e});return(o==null?void 0:o.get("npmAuthIdent"))||(o==null?void 0:o.get("npmAuthToken"))?o:W1e(t,{configuration:e})||e}var K1e=(a=>(a[a.NO_AUTH=0]="NO_AUTH",a[a.BEST_EFFORT=1]="BEST_EFFORT",a[a.CONFIGURATION=2]="CONFIGURATION",a[a.ALWAYS_AUTH=3]="ALWAYS_AUTH",a))(K1e||{});async function Ph(t,{attemptedAs:e,registry:r,headers:o,configuration:a}){var n,u;if(wk(t))throw new Vt(41,"Invalid OTP token");if(((n=t.originalError)==null?void 0:n.name)==="HTTPError"&&((u=t.originalError)==null?void 0:u.response.statusCode)===401)throw new Vt(41,`Invalid authentication (${typeof e!="string"?`as ${await Jwt(r,o,{configuration:a})}`:`attempted as ${e}`})`)}function sp(t,e){var o;let r=(o=t.response)==null?void 0:o.statusCode;return r?r===404?"Package not found":r>=500&&r<600?`The registry appears to be down (using a ${ye.applyHyperlink(e,"local cache","https://yarnpkg.com/advanced/lexicon#local-cache")} might have protected you against such outages)`:null:null}function xh(t){return t.scope?`/@${t.scope}%2f${t.name}`:`/${t.name}`}async function pu(t,{configuration:e,headers:r,ident:o,authType:a,registry:n,...u}){if(o&&typeof n>"u"&&(n=ip(o.scope,{configuration:e})),o&&o.scope&&typeof a>"u"&&(a=1),typeof n!="string")throw new Error("Assertion failed: The registry should be a string");let A=await Ik(n,{authType:a,configuration:e,ident:o});A&&(r={...r,authorization:A});try{return await ln.get(t.charAt(0)==="/"?`${n}${t}`:t,{configuration:e,headers:r,...u})}catch(p){throw await Ph(p,{registry:n,configuration:e,headers:r}),p}}async function Wwt(t,e,{attemptedAs:r,configuration:o,headers:a,ident:n,authType:u=3,registry:A,otp:p,...h}){if(n&&typeof A>"u"&&(A=ip(n.scope,{configuration:o})),typeof A!="string")throw new Error("Assertion failed: The registry should be a string");let C=await Ik(A,{authType:u,configuration:o,ident:n});C&&(a={...a,authorization:C}),p&&(a={...a,...HC(p)});try{return await ln.post(A+t,e,{configuration:o,headers:a,...h})}catch(w){if(!wk(w)||p)throw await Ph(w,{attemptedAs:r,registry:A,configuration:o,headers:a}),w;p=await Bj(w,{configuration:o});let v={...a,...HC(p)};try{return await ln.post(`${A}${t}`,e,{configuration:o,headers:v,...h})}catch(b){throw await Ph(b,{attemptedAs:r,registry:A,configuration:o,headers:a}),b}}}async function Ywt(t,e,{attemptedAs:r,configuration:o,headers:a,ident:n,authType:u=3,registry:A,otp:p,...h}){if(n&&typeof A>"u"&&(A=ip(n.scope,{configuration:o})),typeof A!="string")throw new Error("Assertion failed: The registry should be a string");let C=await Ik(A,{authType:u,configuration:o,ident:n});C&&(a={...a,authorization:C}),p&&(a={...a,...HC(p)});try{return await ln.put(A+t,e,{configuration:o,headers:a,...h})}catch(w){if(!wk(w))throw await Ph(w,{attemptedAs:r,registry:A,configuration:o,headers:a}),w;p=await Bj(w,{configuration:o});let v={...a,...HC(p)};try{return await ln.put(`${A}${t}`,e,{configuration:o,headers:v,...h})}catch(b){throw await Ph(b,{attemptedAs:r,registry:A,configuration:o,headers:a}),b}}}async function Kwt(t,{attemptedAs:e,configuration:r,headers:o,ident:a,authType:n=3,registry:u,otp:A,...p}){if(a&&typeof u>"u"&&(u=ip(a.scope,{configuration:r})),typeof u!="string")throw new Error("Assertion failed: The registry should be a string");let h=await Ik(u,{authType:n,configuration:r,ident:a});h&&(o={...o,authorization:h}),A&&(o={...o,...HC(A)});try{return await ln.del(u+t,{configuration:r,headers:o,...p})}catch(C){if(!wk(C)||A)throw await Ph(C,{attemptedAs:e,registry:u,configuration:r,headers:o}),C;A=await Bj(C,{configuration:r});let w={...o,...HC(A)};try{return await ln.del(`${u}${t}`,{configuration:r,headers:w,...p})}catch(v){throw await Ph(v,{attemptedAs:e,registry:u,configuration:r,headers:o}),v}}}async function Ik(t,{authType:e=2,configuration:r,ident:o}){let a=Ij(t,{configuration:r,ident:o}),n=Vwt(a,e);if(!n)return null;let u=await r.reduceHook(A=>A.getNpmAuthenticationHeader,void 0,t,{configuration:r,ident:o});if(u)return u;if(a.get("npmAuthToken"))return`Bearer ${a.get("npmAuthToken")}`;if(a.get("npmAuthIdent")){let A=a.get("npmAuthIdent");return A.includes(":")?`Basic ${Buffer.from(A).toString("base64")}`:`Basic ${A}`}if(n&&e!==1)throw new Vt(33,"No authentication configured for request");return null}function Vwt(t,e){switch(e){case 2:return t.get("npmAlwaysAuth");case 1:case 3:return!0;case 0:return!1;default:throw new Error("Unreachable")}}async function Jwt(t,e,{configuration:r}){if(typeof e>"u"||typeof e.authorization>"u")return"an anonymous user";try{return(await ln.get(new Y1e.URL(`${t}/-/whoami`).href,{configuration:r,headers:e,jsonResponse:!0})).username??"an unknown user"}catch{return"an unknown user"}}async function Bj(t,{configuration:e}){var a;let r=(a=t.originalError)==null?void 0:a.response.headers["npm-notice"];if(r&&(await Ct.start({configuration:e,stdout:process.stdout,includeFooter:!1},async n=>{if(n.reportInfo(0,r.replace(/(https?:\/\/\S+)/g,ye.pretty(e,"$1",ye.Type.URL))),!process.env.YARN_IS_TEST_ENV){let u=r.match(/open (https?:\/\/\S+)/i);if(u&&As.openUrl){let{openNow:A}=await(0,wj.prompt)({type:"confirm",name:"openNow",message:"Do you want to try to open this url now?",required:!0,initial:!0,onCancel:()=>process.exit(130)});A&&(await As.openUrl(u[1])||(n.reportSeparator(),n.reportWarning(0,"We failed to automatically open the url; you'll have to open it yourself in your browser of choice.")))}}}),process.stdout.write(` |
664 | `)),process.env.YARN_IS_TEST_ENV)return process.env.YARN_INJECT_NPM_2FA_TOKEN||"";let{otp:o}=await(0,hj.prompt)({type:"password",name:"otp",message:"One-time password:",required:!0,onCancel:()=>process.exit(130)});return process.stdout.write(` | 666 | `)),process.env.YARN_IS_TEST_ENV)return process.env.YARN_INJECT_NPM_2FA_TOKEN||"";let{otp:o}=await(0,wj.prompt)({type:"password",name:"otp",message:"One-time password:",required:!0,onCancel:()=>process.exit(130)});return process.stdout.write(` |
665 | `),o}function mk(t){var e,r;if(((e=t.originalError)==null?void 0:e.name)!=="HTTPError")return!1;try{return((r=t.originalError)==null?void 0:r.response.headers["www-authenticate"].split(/,\s*/).map(a=>a.toLowerCase())).includes("otp")}catch{return!1}}function OC(t){return{["npm-otp"]:t}}var WB=class{supports(e,r){if(!e.reference.startsWith(_n))return!1;let{selector:o,params:a}=Y.parseRange(e.reference);return!(!N1e.default.valid(o)||a===null||typeof a.__archiveUrl!="string")}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let{params:o}=Y.parseRange(e.reference);if(o===null||typeof o.__archiveUrl!="string")throw new Error("Assertion failed: The archiveUrl querystring parameter should have been available");let a=await fu(o.__archiveUrl,{customErrorMessage:rp,configuration:r.project.configuration,ident:e});return await Vi.convertToZip(a,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:Y.getIdentVendorPath(e),stripComponents:1})}};Ke();var YB=class{supportsDescriptor(e,r){return!(!e.range.startsWith(_n)||!Y.tryParseDescriptor(e.range.slice(_n.length),!0))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){let o=r.project.configuration.normalizeDependency(Y.parseDescriptor(e.range.slice(_n.length),!0));return r.resolver.getResolutionDependencies(o,r)}async getCandidates(e,r,o){let a=o.project.configuration.normalizeDependency(Y.parseDescriptor(e.range.slice(_n.length),!0));return await o.resolver.getCandidates(a,r,o)}async getSatisfying(e,r,o,a){let n=a.project.configuration.normalizeDependency(Y.parseDescriptor(e.range.slice(_n.length),!0));return a.resolver.getSatisfying(n,r,o,a)}resolve(e,r){throw new Error("Unreachable")}};Ke();Ke();var L1e=tt(ii()),O1e=Ie("url");var gl=class{supports(e,r){if(!e.reference.startsWith(_n))return!1;let o=new O1e.URL(e.reference);return!(!L1e.default.valid(o.pathname)||o.searchParams.has("__archiveUrl"))}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let o;try{o=await fu(gl.getLocatorUrl(e),{customErrorMessage:rp,configuration:r.project.configuration,ident:e})}catch{o=await fu(gl.getLocatorUrl(e).replace(/%2f/g,"/"),{customErrorMessage:rp,configuration:r.project.configuration,ident:e})}return await Vi.convertToZip(o,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:Y.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,r,{configuration:o}){let a=tp(e.scope,{configuration:o}),n=gl.getLocatorUrl(e);return r=r.replace(/^https?:(\/\/(?:[^/]+\.)?npmjs.org(?:$|\/))/,"https:$1"),a=a.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r=r.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r===a+n||r===a+n.replace(/%2f/g,"/")}static getLocatorUrl(e){let r=Tr.clean(e.reference.slice(_n.length));if(r===null)throw new Jt(10,"The npm semver resolver got selected, but the version isn't semver");return`${vh(e)}/-/${e.name}-${r}.tgz`}};Ke();Ke();Ke();var M1e=tt(ii());var yk=Y.makeIdent(null,"node-gyp"),kwt=/\b(node-gyp|prebuild-install)\b/,KB=class{supportsDescriptor(e,r){return e.range.startsWith(_n)?!!Tr.validRange(e.range.slice(_n.length)):!1}supportsLocator(e,r){if(!e.reference.startsWith(_n))return!1;let{selector:o}=Y.parseRange(e.reference);return!!M1e.default.valid(o)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=Tr.validRange(e.range.slice(_n.length));if(a===null)throw new Error(`Expected a valid range, got ${e.range.slice(_n.length)}`);let n=await fu(vh(e),{customErrorMessage:rp,configuration:o.project.configuration,ident:e,jsonResponse:!0}),u=Ye.mapAndFilter(Object.keys(n.versions),h=>{try{let C=new Tr.SemVer(h);if(a.test(C))return C}catch{}return Ye.mapAndFilter.skip}),A=u.filter(h=>!n.versions[h.raw].deprecated),p=A.length>0?A:u;return p.sort((h,C)=>-h.compare(C)),p.map(h=>{let C=Y.makeLocator(e,`${_n}${h.raw}`),w=n.versions[h.raw].dist.tarball;return gl.isConventionalTarballUrl(C,w,{configuration:o.project.configuration})?C:Y.bindLocator(C,{__archiveUrl:w})})}async getSatisfying(e,r,o,a){let n=Tr.validRange(e.range.slice(_n.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(_n.length)}`);return{locators:Ye.mapAndFilter(o,p=>{if(p.identHash!==e.identHash)return Ye.mapAndFilter.skip;let h=Y.tryParseRange(p.reference,{requireProtocol:_n});if(!h)return Ye.mapAndFilter.skip;let C=new Tr.SemVer(h.selector);return n.test(C)?{locator:p,version:C}:Ye.mapAndFilter.skip}).sort((p,h)=>-p.version.compare(h.version)).map(({locator:p})=>p),sorted:!0}}async resolve(e,r){let{selector:o}=Y.parseRange(e.reference),a=Tr.clean(o);if(a===null)throw new Jt(10,"The npm semver resolver got selected, but the version isn't semver");let n=await fu(vh(e),{customErrorMessage:rp,configuration:r.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(n,"versions"))throw new Jt(15,'Registry returned invalid data for - missing "versions" field');if(!Object.prototype.hasOwnProperty.call(n.versions,a))throw new Jt(16,`Registry failed to return reference "${a}"`);let u=new Nt;if(u.load(n.versions[a]),!u.dependencies.has(yk.identHash)&&!u.peerDependencies.has(yk.identHash)){for(let A of u.scripts.values())if(A.match(kwt)){u.dependencies.set(yk.identHash,Y.makeDescriptor(yk,"latest")),r.report.reportWarningOnce(32,`${Y.prettyLocator(r.project.configuration,e)}: Implicit dependencies on node-gyp are discouraged`);break}}if(typeof u.raw.deprecated=="string"&&u.raw.deprecated!==""){let A=Y.prettyLocator(r.project.configuration,e),p=u.raw.deprecated.match(/\S/)?`${A} is deprecated: ${u.raw.deprecated}`:`${A} is deprecated`;r.report.reportWarningOnce(61,p)}return{...e,version:a,languageName:"node",linkType:"HARD",conditions:u.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(u.dependencies),peerDependencies:u.peerDependencies,dependenciesMeta:u.dependenciesMeta,peerDependenciesMeta:u.peerDependenciesMeta,bin:u.bin}}};Ke();Ke();var U1e=tt(ii());var JB=class{supportsDescriptor(e,r){return!(!e.range.startsWith(_n)||!DE.test(e.range.slice(_n.length)))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice(_n.length),n=await fu(vh(e),{configuration:o.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(n,"dist-tags"))throw new Jt(15,'Registry returned invalid data - missing "dist-tags" field');let u=n["dist-tags"];if(!Object.prototype.hasOwnProperty.call(u,a))throw new Jt(16,`Registry failed to return tag "${a}"`);let A=u[a],p=Y.makeLocator(e,`${_n}${A}`),h=n.versions[A].dist.tarball;return gl.isConventionalTarballUrl(p,h,{configuration:o.project.configuration})?[p]:[Y.bindLocator(p,{__archiveUrl:h})]}async getSatisfying(e,r,o,a){var u;let n=[];for(let A of o){if(A.identHash!==e.identHash)continue;let p=Y.tryParseRange(A.reference,{requireProtocol:_n});if(!(!p||!U1e.default.valid(p.selector))){if((u=p.params)!=null&&u.__archiveUrl){let h=Y.makeRange({protocol:_n,selector:p.selector,source:null,params:null}),[C]=await this.getCandidates(Y.makeDescriptor(e,h),r,a);if(A.reference!==C.reference)continue}n.push(A)}}return{locators:n,sorted:!1}}async resolve(e,r){throw new Error("Unreachable")}};var JC={};Yt(JC,{getGitHead:()=>bBt,makePublishBody:()=>xBt});Ke();Ke();var n9={};Yt(n9,{PackCommand:()=>Rh,default:()=>uBt,packUtils:()=>IA});Ke();Ke();Ke();bt();_t();var IA={};Yt(IA,{genPackList:()=>Hk,genPackStream:()=>r9,genPackageManifest:()=>dBe,hasPackScripts:()=>e9,prepareForPack:()=>t9});Ke();bt();var $j=tt(Jo()),hBe=tt(uBe()),gBe=Ie("zlib"),$2t=["/package.json","/readme","/readme.*","/license","/license.*","/licence","/licence.*","/changelog","/changelog.*"],eBt=["/package.tgz",".github",".git",".hg","node_modules",".npmignore",".gitignore",".#*",".DS_Store"];async function e9(t){return!!(sn.hasWorkspaceScript(t,"prepack")||sn.hasWorkspaceScript(t,"postpack"))}async function t9(t,{report:e},r){await sn.maybeExecuteWorkspaceLifecycleScript(t,"prepack",{report:e});try{let o=V.join(t.cwd,Nt.fileName);await ae.existsPromise(o)&&await t.manifest.loadFile(o,{baseFs:ae}),await r()}finally{await sn.maybeExecuteWorkspaceLifecycleScript(t,"postpack",{report:e})}}async function r9(t,e){var n;typeof e>"u"&&(e=await Hk(t));let r=new Set;for(let u of((n=t.manifest.publishConfig)==null?void 0:n.executableFiles)??new Set)r.add(V.normalize(u));for(let u of t.manifest.bin.values())r.add(V.normalize(u));let o=hBe.default.pack();process.nextTick(async()=>{for(let u of e){let A=V.normalize(u),p=V.resolve(t.cwd,A),h=V.join("package",A),C=await ae.lstatPromise(p),w={name:h,mtime:new Date(Ii.SAFE_TIME*1e3)},v=r.has(A)?493:420,b,E,R=new Promise((_,J)=>{b=_,E=J}),L=_=>{_?E(_):b()};if(C.isFile()){let _;A==="package.json"?_=Buffer.from(JSON.stringify(await dBe(t),null,2)):_=await ae.readFilePromise(p),o.entry({...w,mode:v,type:"file"},_,L)}else C.isSymbolicLink()?o.entry({...w,mode:v,type:"symlink",linkname:await ae.readlinkPromise(p)},L):L(new Error(`Unsupported file type ${C.mode} for ${Ae.fromPortablePath(A)}`));await R}o.finalize()});let a=(0,gBe.createGzip)();return o.pipe(a),a}async function dBe(t){let e=JSON.parse(JSON.stringify(t.manifest.raw));return await t.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,t,e),e}async function Hk(t){var w,v,b,E;let e=t.project,r=e.configuration,o={accept:[],reject:[]};for(let R of eBt)o.reject.push(R);for(let R of $2t)o.accept.push(R);o.reject.push(r.get("rcFilename"));let a=R=>{if(R===null||!R.startsWith(`${t.cwd}/`))return;let L=V.relative(t.cwd,R),_=V.resolve(wt.root,L);o.reject.push(_)};a(V.resolve(e.cwd,r.get("lockfileFilename"))),a(r.get("cacheFolder")),a(r.get("globalFolder")),a(r.get("installStatePath")),a(r.get("virtualFolder")),a(r.get("yarnPath")),await r.triggerHook(R=>R.populateYarnPaths,e,R=>{a(R)});for(let R of e.workspaces){let L=V.relative(t.cwd,R.cwd);L!==""&&!L.match(/^(\.\.)?\//)&&o.reject.push(`/${L}`)}let n={accept:[],reject:[]},u=((w=t.manifest.publishConfig)==null?void 0:w.main)??t.manifest.main,A=((v=t.manifest.publishConfig)==null?void 0:v.module)??t.manifest.module,p=((b=t.manifest.publishConfig)==null?void 0:b.browser)??t.manifest.browser,h=((E=t.manifest.publishConfig)==null?void 0:E.bin)??t.manifest.bin;u!=null&&n.accept.push(V.resolve(wt.root,u)),A!=null&&n.accept.push(V.resolve(wt.root,A)),typeof p=="string"&&n.accept.push(V.resolve(wt.root,p));for(let R of h.values())n.accept.push(V.resolve(wt.root,R));if(p instanceof Map)for(let[R,L]of p.entries())n.accept.push(V.resolve(wt.root,R)),typeof L=="string"&&n.accept.push(V.resolve(wt.root,L));let C=t.manifest.files!==null;if(C){n.reject.push("/*");for(let R of t.manifest.files)mBe(n.accept,R,{cwd:wt.root})}return await tBt(t.cwd,{hasExplicitFileList:C,globalList:o,ignoreList:n})}async function tBt(t,{hasExplicitFileList:e,globalList:r,ignoreList:o}){let a=[],n=new ju(t),u=[[wt.root,[o]]];for(;u.length>0;){let[A,p]=u.pop(),h=await n.lstatPromise(A);if(!fBe(A,{globalList:r,ignoreLists:h.isDirectory()?null:p}))if(h.isDirectory()){let C=await n.readdirPromise(A),w=!1,v=!1;if(!e||A!==wt.root)for(let R of C)w=w||R===".gitignore",v=v||R===".npmignore";let b=v?await ABe(n,A,".npmignore"):w?await ABe(n,A,".gitignore"):null,E=b!==null?[b].concat(p):p;fBe(A,{globalList:r,ignoreLists:p})&&(E=[...p,{accept:[],reject:["**/*"]}]);for(let R of C)u.push([V.resolve(A,R),E])}else(h.isFile()||h.isSymbolicLink())&&a.push(V.relative(wt.root,A))}return a.sort()}async function ABe(t,e,r){let o={accept:[],reject:[]},a=await t.readFilePromise(V.join(e,r),"utf8");for(let n of a.split(/\n/g))mBe(o.reject,n,{cwd:e});return o}function rBt(t,{cwd:e}){let r=t[0]==="!";return r&&(t=t.slice(1)),t.match(/\.{0,1}\//)&&(t=V.resolve(e,t)),r&&(t=`!${t}`),t}function mBe(t,e,{cwd:r}){let o=e.trim();o===""||o[0]==="#"||t.push(rBt(o,{cwd:r}))}function fBe(t,{globalList:e,ignoreLists:r}){let o=_k(t,e.accept);if(o!==0)return o===2;let a=_k(t,e.reject);if(a!==0)return a===1;if(r!==null)for(let n of r){let u=_k(t,n.accept);if(u!==0)return u===2;let A=_k(t,n.reject);if(A!==0)return A===1}return!1}function _k(t,e){let r=e,o=[];for(let a=0;a<e.length;++a)e[a][0]!=="!"?r!==e&&r.push(e[a]):(r===e&&(r=e.slice(0,a)),o.push(e[a].slice(1)));return pBe(t,o)?2:pBe(t,r)?1:0}function pBe(t,e){let r=e,o=[];for(let a=0;a<e.length;++a)e[a].includes("/")?r!==e&&r.push(e[a]):(r===e&&(r=e.slice(0,a)),o.push(e[a]));return!!($j.default.isMatch(t,r,{dot:!0,nocase:!0})||$j.default.isMatch(t,o,{dot:!0,basename:!0,nocase:!0}))}var Rh=class extends ct{constructor(){super(...arguments);this.installIfNeeded=fe.Boolean("--install-if-needed",!1,{description:"Run a preliminary `yarn install` if the package contains build scripts"});this.dryRun=fe.Boolean("-n,--dry-run",!1,{description:"Print the file paths without actually generating the package archive"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.out=fe.String("-o,--out",{description:"Create the archive at the specified path"});this.filename=fe.String("--filename",{hidden:!0})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new er(o.cwd,this.context.cwd);await e9(a)&&(this.installIfNeeded?await o.install({cache:await Ur.find(r),report:new xi}):await o.restoreInstallState());let n=this.out??this.filename,u=typeof n<"u"?V.resolve(this.context.cwd,nBt(n,{workspace:a})):V.resolve(a.cwd,"package.tgz");return(await Ct.start({configuration:r,stdout:this.context.stdout,json:this.json},async p=>{await t9(a,{report:p},async()=>{p.reportJson({base:Ae.fromPortablePath(a.cwd)});let h=await Hk(a);for(let C of h)p.reportInfo(null,Ae.fromPortablePath(C)),p.reportJson({location:Ae.fromPortablePath(C)});if(!this.dryRun){let C=await r9(a,h),w=ae.createWriteStream(u);C.pipe(w),await new Promise(v=>{w.on("finish",v)})}}),this.dryRun||(p.reportInfo(0,`Package archive generated in ${ye.pretty(r,u,ye.Type.PATH)}`),p.reportJson({output:Ae.fromPortablePath(u)}))})).exitCode()}};Rh.paths=[["pack"]],Rh.usage=it.Usage({description:"generate a tarball from the active workspace",details:"\n This command will turn the active workspace into a compressed archive suitable for publishing. The archive will by default be stored at the root of the workspace (`package.tgz`).\n\n If the `-o,---out` is set the archive will be created at the specified path. The `%s` and `%v` variables can be used within the path and will be respectively replaced by the package name and version.\n ",examples:[["Create an archive from the active workspace","yarn pack"],["List the files that would be made part of the workspace's archive","yarn pack --dry-run"],["Name and output the archive in a dedicated folder","yarn pack --out /artifacts/%s-%v.tgz"]]});function nBt(t,{workspace:e}){let r=t.replace("%s",iBt(e)).replace("%v",sBt(e));return Ae.toPortablePath(r)}function iBt(t){return t.manifest.name!==null?Y.slugifyIdent(t.manifest.name):"package"}function sBt(t){return t.manifest.version!==null?t.manifest.version:"unknown"}var oBt=["dependencies","devDependencies","peerDependencies"],aBt="workspace:",lBt=(t,e)=>{e.publishConfig&&(e.publishConfig.type&&(e.type=e.publishConfig.type),e.publishConfig.main&&(e.main=e.publishConfig.main),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.module&&(e.module=e.publishConfig.module),e.publishConfig.exports&&(e.exports=e.publishConfig.exports),e.publishConfig.bin&&(e.bin=e.publishConfig.bin));let r=t.project;for(let o of oBt)for(let a of t.manifest.getForScope(o).values()){let n=r.tryWorkspaceByDescriptor(a),u=Y.parseRange(a.range);if(u.protocol===aBt)if(n===null){if(r.tryWorkspaceByIdent(a)===null)throw new Jt(21,`${Y.prettyDescriptor(r.configuration,a)}: No local workspace found for this range`)}else{let A;Y.areDescriptorsEqual(a,n.anchoredDescriptor)||u.selector==="*"?A=n.manifest.version??"0.0.0":u.selector==="~"||u.selector==="^"?A=`${u.selector}${n.manifest.version??"0.0.0"}`:A=u.selector;let p=o==="dependencies"?Y.makeDescriptor(a,"unknown"):null,h=p!==null&&t.manifest.ensureDependencyMeta(p).optional?"optionalDependencies":o;e[h][Y.stringifyIdent(a)]=A}}},cBt={hooks:{beforeWorkspacePacking:lBt},commands:[Rh]},uBt=cBt;var SBe=Ie("crypto"),PBe=tt(DBe()),xBe=Ie("url");async function xBt(t,e,{access:r,tag:o,registry:a,gitHead:n}){let u=t.project.configuration,A=t.manifest.name,p=t.manifest.version,h=Y.stringifyIdent(A),C=(0,SBe.createHash)("sha1").update(e).digest("hex"),w=PBe.default.fromData(e).toString();typeof r>"u"&&(t.manifest.publishConfig&&typeof t.manifest.publishConfig.access=="string"?r=t.manifest.publishConfig.access:u.get("npmPublishAccess")!==null?r=u.get("npmPublishAccess"):A.scope?r="restricted":r="public");let v=await IA.genPackageManifest(t),b=`${h}-${p}.tgz`,E=new xBe.URL(`${yA(a)}/${h}/-/${b}`);return{_id:h,_attachments:{[b]:{content_type:"application/octet-stream",data:e.toString("base64"),length:e.length}},name:h,access:r,["dist-tags"]:{[o]:p},versions:{[p]:{...v,_id:`${h}@${p}`,name:h,version:p,gitHead:n,dist:{shasum:C,integrity:w,tarball:E.toString()}}}}}async function bBt(t){try{let{stdout:e}=await Mr.execvp("git",["rev-parse","--revs-only","HEAD"],{cwd:t});return e.trim()===""?void 0:e.trim()}catch{return}}var a9={npmAlwaysAuth:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"BOOLEAN",default:!1},npmAuthIdent:{description:"Authentication identity for the npm registry (_auth in npm and yarn v1)",type:"SECRET",default:null},npmAuthToken:{description:"Authentication token for the npm registry (_authToken in npm and yarn v1)",type:"SECRET",default:null}},bBe={npmAuditRegistry:{description:"Registry to query for audit reports",type:"STRING",default:null},npmPublishRegistry:{description:"Registry to push packages to",type:"STRING",default:null},npmRegistryServer:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"STRING",default:"https://registry.yarnpkg.com"}},QBt={configuration:{...a9,...bBe,npmScopes:{description:"Settings per package scope",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{...a9,...bBe}}},npmRegistries:{description:"Settings per registry",type:"MAP",normalizeKeys:yA,valueDefinition:{description:"",type:"SHAPE",properties:{...a9}}}},fetchers:[WB,gl],resolvers:[YB,KB,JB]},kBt=QBt;var d9={};Yt(d9,{NpmAuditCommand:()=>Nh,NpmInfoCommand:()=>Lh,NpmLoginCommand:()=>Oh,NpmLogoutCommand:()=>Mh,NpmPublishCommand:()=>Uh,NpmTagAddCommand:()=>Hh,NpmTagListCommand:()=>_h,NpmTagRemoveCommand:()=>qh,NpmWhoamiCommand:()=>jh,default:()=>_Bt,npmAuditUtils:()=>Gk});Ke();_t();var uv=tt(Jo());$a();var qk=(o=>(o.All="all",o.Production="production",o.Development="development",o))(qk||{}),jk=(n=>(n.Info="info",n.Low="low",n.Moderate="moderate",n.High="high",n.Critical="critical",n))(jk||{});var Gk={};Yt(Gk,{allSeverities:()=>VC,getDependencies:()=>f9,getReportTree:()=>u9,getRequires:()=>A9,isError:()=>c9});Ke();var VC=["info","low","moderate","high","critical"];function kBe(t,e){let r=[],o=new Set,a=u=>{o.has(u)||(o.add(u),r.push(u))};for(let u of e)a(u);let n=new Set;for(;r.length>0;){let u=r.shift(),A=t.storedResolutions.get(u);if(typeof A>"u")throw new Error("Assertion failed: Expected the resolution to have been registered");let p=t.storedPackages.get(A);if(!!p){n.add(u);for(let h of p.dependencies.values())a(h.descriptorHash)}}return n}function FBt(t,e){return new Set([...t].filter(r=>!e.has(r)))}function RBt(t,e,{all:r}){let o=r?t.workspaces:[e],a=o.map(v=>v.manifest),n=new Set(a.map(v=>[...v.dependencies].map(([b,E])=>b)).flat()),u=new Set(a.map(v=>[...v.devDependencies].map(([b,E])=>b)).flat()),A=o.map(v=>[...v.anchoredPackage.dependencies.values()]).flat(),p=A.filter(v=>n.has(v.identHash)).map(v=>v.descriptorHash),h=A.filter(v=>u.has(v.identHash)).map(v=>v.descriptorHash),C=kBe(t,p),w=kBe(t,h);return FBt(w,C)}function FBe(t){let e={};for(let r of t)e[Y.stringifyIdent(r)]=Y.parseRange(r.range).selector;return e}function RBe(t){if(typeof t>"u")return new Set(VC);let e=VC.indexOf(t),r=VC.slice(e);return new Set(r)}function TBt(t,e){let r=RBe(e),o={};for(let a of r)o[a]=t[a];return o}function c9(t,e){let r=TBt(t,e);for(let o of Object.keys(r))if(r[o]??0>0)return!0;return!1}function u9(t,e){var n;let r={},o={children:r},a=Object.values(t.advisories);if(e!=null){let u=RBe(e);a=a.filter(A=>u.has(A.severity))}for(let u of Ye.sortMap(a,A=>A.module_name))r[u.module_name]={label:u.module_name,value:ye.tuple(ye.Type.RANGE,u.findings.map(A=>A.version).join(", ")),children:{ID:{label:"ID",value:ye.tuple(ye.Type.NUMBER,u.id)},Issue:{label:"Issue",value:ye.tuple(ye.Type.NO_HINT,u.title)},URL:{label:"URL",value:ye.tuple(ye.Type.URL,u.url)},Severity:{label:"Severity",value:ye.tuple(ye.Type.NO_HINT,u.severity)},["Vulnerable Versions"]:{label:"Vulnerable Versions",value:ye.tuple(ye.Type.RANGE,u.vulnerable_versions)},["Patched Versions"]:{label:"Patched Versions",value:ye.tuple(ye.Type.RANGE,u.patched_versions)},Via:{label:"Via",value:ye.tuple(ye.Type.NO_HINT,Array.from(new Set(u.findings.map(A=>A.paths).flat().map(A=>A.split(">")[0]))).join(", "))},Recommendation:{label:"Recommendation",value:ye.tuple(ye.Type.NO_HINT,(n=u.recommendation)==null?void 0:n.replace(/\n/g," "))}}};return o}function A9(t,e,{all:r,environment:o}){let a=r?t.workspaces:[e],n=["all","production"].includes(o),u=[];if(n)for(let h of a)for(let C of h.manifest.dependencies.values())u.push(C);let A=["all","development"].includes(o),p=[];if(A)for(let h of a)for(let C of h.manifest.devDependencies.values())p.push(C);return FBe([...u,...p].filter(h=>Y.parseRange(h.range).protocol===null))}function f9(t,e,{all:r}){let o=RBt(t,e,{all:r}),a={};for(let n of t.storedPackages.values())a[Y.stringifyIdent(n)]={version:n.version??"0.0.0",integrity:n.identHash,requires:FBe(n.dependencies.values()),dev:o.has(Y.convertLocatorToDescriptor(n).descriptorHash)};return a}var Nh=class extends ct{constructor(){super(...arguments);this.all=fe.Boolean("-A,--all",!1,{description:"Audit dependencies from all workspaces"});this.recursive=fe.Boolean("-R,--recursive",!1,{description:"Audit transitive dependencies as well"});this.environment=fe.String("--environment","all",{description:"Which environments to cover",validator:Gs(qk)});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.severity=fe.String("--severity","info",{description:"Minimal severity requested for packages to be displayed",validator:Gs(jk)});this.excludes=fe.Array("--exclude",[],{description:"Array of glob patterns of packages to exclude from audit"});this.ignores=fe.Array("--ignore",[],{description:"Array of glob patterns of advisory ID's to ignore in the audit report"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new er(o.cwd,this.context.cwd);await o.restoreInstallState();let n=A9(o,a,{all:this.all,environment:this.environment}),u=f9(o,a,{all:this.all});if(!this.recursive)for(let E of Object.keys(u))Object.prototype.hasOwnProperty.call(n,E)?u[E].requires={}:delete u[E];let A=Array.from(new Set([...r.get("npmAuditExcludePackages"),...this.excludes]));if(A){for(let E of Object.keys(n))uv.default.isMatch(E,A)&&delete n[E];for(let E of Object.keys(u))uv.default.isMatch(E,A)&&delete u[E];for(let E of Object.keys(u))for(let R of Object.keys(u[E].requires))uv.default.isMatch(R,A)&&delete u[E].requires[R]}let p={requires:n,dependencies:u},h=Gn.getAuditRegistry({configuration:r}),C,w=await fA.start({configuration:r,stdout:this.context.stdout},async()=>{C=await an.post("/-/npm/v1/security/audits/quick",p,{authType:an.AuthType.BEST_EFFORT,configuration:r,jsonResponse:!0,registry:h})});if(w.hasErrors())return w.exitCode();let v=Array.from(new Set([...r.get("npmAuditIgnoreAdvisories"),...this.ignores]));if(v){for(let E of Object.keys(C.advisories))if(uv.default.isMatch(E,v)){let R=C.advisories[E];C.metadata.vulnerabilities[R.severity]-=1,delete C.advisories[E]}}let b=c9(C.metadata.vulnerabilities,this.severity);return!this.json&&b?(Xo.emitTree(u9(C,this.severity),{configuration:r,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Ct.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async E=>{E.reportJson(C),b||E.reportInfo(1,"No audit suggestions")}),b?1:0)}};Nh.paths=[["npm","audit"]],Nh.usage=it.Usage({description:"perform a vulnerability audit against the installed packages",details:` | 667 | `),o}function wk(t){var e,r;if(((e=t.originalError)==null?void 0:e.name)!=="HTTPError")return!1;try{return((r=t.originalError)==null?void 0:r.response.headers["www-authenticate"].split(/,\s*/).map(a=>a.toLowerCase())).includes("otp")}catch{return!1}}function HC(t){return{["npm-otp"]:t}}var ev=class{supports(e,r){if(!e.reference.startsWith(_n))return!1;let{selector:o,params:a}=Y.parseRange(e.reference);return!(!V1e.default.valid(o)||a===null||typeof a.__archiveUrl!="string")}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote server`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let{params:o}=Y.parseRange(e.reference);if(o===null||typeof o.__archiveUrl!="string")throw new Error("Assertion failed: The archiveUrl querystring parameter should have been available");let a=await pu(o.__archiveUrl,{customErrorMessage:sp,configuration:r.project.configuration,ident:e});return await Ji.convertToZip(a,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:Y.getIdentVendorPath(e),stripComponents:1})}};Ke();var tv=class{supportsDescriptor(e,r){return!(!e.range.startsWith(_n)||!Y.tryParseDescriptor(e.range.slice(_n.length),!0))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){let o=r.project.configuration.normalizeDependency(Y.parseDescriptor(e.range.slice(_n.length),!0));return r.resolver.getResolutionDependencies(o,r)}async getCandidates(e,r,o){let a=o.project.configuration.normalizeDependency(Y.parseDescriptor(e.range.slice(_n.length),!0));return await o.resolver.getCandidates(a,r,o)}async getSatisfying(e,r,o,a){let n=a.project.configuration.normalizeDependency(Y.parseDescriptor(e.range.slice(_n.length),!0));return a.resolver.getSatisfying(n,r,o,a)}resolve(e,r){throw new Error("Unreachable")}};Ke();Ke();var J1e=tt(si()),z1e=Ie("url");var El=class{supports(e,r){if(!e.reference.startsWith(_n))return!1;let o=new z1e.URL(e.reference);return!(!J1e.default.valid(o.pathname)||o.searchParams.has("__archiveUrl"))}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote registry`),loader:()=>this.fetchFromNetwork(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),checksum:u}}async fetchFromNetwork(e,r){let o;try{o=await pu(El.getLocatorUrl(e),{customErrorMessage:sp,configuration:r.project.configuration,ident:e})}catch{o=await pu(El.getLocatorUrl(e).replace(/%2f/g,"/"),{customErrorMessage:sp,configuration:r.project.configuration,ident:e})}return await Ji.convertToZip(o,{compressionLevel:r.project.configuration.get("compressionLevel"),prefixPath:Y.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,r,{configuration:o}){let a=ip(e.scope,{configuration:o}),n=El.getLocatorUrl(e);return r=r.replace(/^https?:(\/\/(?:[^/]+\.)?npmjs.org(?:$|\/))/,"https:$1"),a=a.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r=r.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),r===a+n||r===a+n.replace(/%2f/g,"/")}static getLocatorUrl(e){let r=Tr.clean(e.reference.slice(_n.length));if(r===null)throw new Vt(10,"The npm semver resolver got selected, but the version isn't semver");return`${xh(e)}/-/${e.name}-${r}.tgz`}};Ke();Ke();Ke();var X1e=tt(si());var Bk=Y.makeIdent(null,"node-gyp"),zwt=/\b(node-gyp|prebuild-install)\b/,rv=class{supportsDescriptor(e,r){return e.range.startsWith(_n)?!!Tr.validRange(e.range.slice(_n.length)):!1}supportsLocator(e,r){if(!e.reference.startsWith(_n))return!1;let{selector:o}=Y.parseRange(e.reference);return!!X1e.default.valid(o)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=Tr.validRange(e.range.slice(_n.length));if(a===null)throw new Error(`Expected a valid range, got ${e.range.slice(_n.length)}`);let n=await pu(xh(e),{customErrorMessage:sp,configuration:o.project.configuration,ident:e,jsonResponse:!0}),u=We.mapAndFilter(Object.keys(n.versions),h=>{try{let C=new Tr.SemVer(h);if(a.test(C))return C}catch{}return We.mapAndFilter.skip}),A=u.filter(h=>!n.versions[h.raw].deprecated),p=A.length>0?A:u;return p.sort((h,C)=>-h.compare(C)),p.map(h=>{let C=Y.makeLocator(e,`${_n}${h.raw}`),w=n.versions[h.raw].dist.tarball;return El.isConventionalTarballUrl(C,w,{configuration:o.project.configuration})?C:Y.bindLocator(C,{__archiveUrl:w})})}async getSatisfying(e,r,o,a){let n=Tr.validRange(e.range.slice(_n.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(_n.length)}`);return{locators:We.mapAndFilter(o,p=>{if(p.identHash!==e.identHash)return We.mapAndFilter.skip;let h=Y.tryParseRange(p.reference,{requireProtocol:_n});if(!h)return We.mapAndFilter.skip;let C=new Tr.SemVer(h.selector);return n.test(C)?{locator:p,version:C}:We.mapAndFilter.skip}).sort((p,h)=>-p.version.compare(h.version)).map(({locator:p})=>p),sorted:!0}}async resolve(e,r){let{selector:o}=Y.parseRange(e.reference),a=Tr.clean(o);if(a===null)throw new Vt(10,"The npm semver resolver got selected, but the version isn't semver");let n=await pu(xh(e),{customErrorMessage:sp,configuration:r.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(n,"versions"))throw new Vt(15,'Registry returned invalid data for - missing "versions" field');if(!Object.prototype.hasOwnProperty.call(n.versions,a))throw new Vt(16,`Registry failed to return reference "${a}"`);let u=new Nt;if(u.load(n.versions[a]),!u.dependencies.has(Bk.identHash)&&!u.peerDependencies.has(Bk.identHash)){for(let A of u.scripts.values())if(A.match(zwt)){u.dependencies.set(Bk.identHash,Y.makeDescriptor(Bk,"latest")),r.report.reportWarningOnce(32,`${Y.prettyLocator(r.project.configuration,e)}: Implicit dependencies on node-gyp are discouraged`);break}}if(typeof u.raw.deprecated=="string"&&u.raw.deprecated!==""){let A=Y.prettyLocator(r.project.configuration,e),p=u.raw.deprecated.match(/\S/)?`${A} is deprecated: ${u.raw.deprecated}`:`${A} is deprecated`;r.report.reportWarningOnce(61,p)}return{...e,version:a,languageName:"node",linkType:"HARD",conditions:u.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(u.dependencies),peerDependencies:u.peerDependencies,dependenciesMeta:u.dependenciesMeta,peerDependenciesMeta:u.peerDependenciesMeta,bin:u.bin}}};Ke();Ke();var Z1e=tt(si());var nv=class{supportsDescriptor(e,r){return!(!e.range.startsWith(_n)||!QE.test(e.range.slice(_n.length)))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error("Unreachable")}bindDescriptor(e,r,o){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,o){let a=e.range.slice(_n.length),n=await pu(xh(e),{configuration:o.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(n,"dist-tags"))throw new Vt(15,'Registry returned invalid data - missing "dist-tags" field');let u=n["dist-tags"];if(!Object.prototype.hasOwnProperty.call(u,a))throw new Vt(16,`Registry failed to return tag "${a}"`);let A=u[a],p=Y.makeLocator(e,`${_n}${A}`),h=n.versions[A].dist.tarball;return El.isConventionalTarballUrl(p,h,{configuration:o.project.configuration})?[p]:[Y.bindLocator(p,{__archiveUrl:h})]}async getSatisfying(e,r,o,a){var u;let n=[];for(let A of o){if(A.identHash!==e.identHash)continue;let p=Y.tryParseRange(A.reference,{requireProtocol:_n});if(!(!p||!Z1e.default.valid(p.selector))){if((u=p.params)!=null&&u.__archiveUrl){let h=Y.makeRange({protocol:_n,selector:p.selector,source:null,params:null}),[C]=await this.getCandidates(Y.makeDescriptor(e,h),r,a);if(A.reference!==C.reference)continue}n.push(A)}}return{locators:n,sorted:!1}}async resolve(e,r){throw new Error("Unreachable")}};var ZC={};Yt(ZC,{getGitHead:()=>VBt,getPublishAccess:()=>qBe,getReadmeContent:()=>jBe,makePublishBody:()=>KBt});Ke();Ke();St();var AG={};Yt(AG,{PackCommand:()=>Oh,default:()=>bBt,packUtils:()=>vA});Ke();Ke();Ke();St();_t();var vA={};Yt(vA,{genPackList:()=>Yk,genPackStream:()=>uG,genPackageManifest:()=>bBe,hasPackScripts:()=>lG,prepareForPack:()=>cG});Ke();St();var aG=tt(zo()),PBe=tt(BBe()),xBe=Ie("zlib"),yBt=["/package.json","/readme","/readme.*","/license","/license.*","/licence","/licence.*","/changelog","/changelog.*"],EBt=["/package.tgz",".github",".git",".hg","node_modules",".npmignore",".gitignore",".#*",".DS_Store"];async function lG(t){return!!(sn.hasWorkspaceScript(t,"prepack")||sn.hasWorkspaceScript(t,"postpack"))}async function cG(t,{report:e},r){await sn.maybeExecuteWorkspaceLifecycleScript(t,"prepack",{report:e});try{let o=J.join(t.cwd,Nt.fileName);await oe.existsPromise(o)&&await t.manifest.loadFile(o,{baseFs:oe}),await r()}finally{await sn.maybeExecuteWorkspaceLifecycleScript(t,"postpack",{report:e})}}async function uG(t,e){var n;typeof e>"u"&&(e=await Yk(t));let r=new Set;for(let u of((n=t.manifest.publishConfig)==null?void 0:n.executableFiles)??new Set)r.add(J.normalize(u));for(let u of t.manifest.bin.values())r.add(J.normalize(u));let o=PBe.default.pack();process.nextTick(async()=>{for(let u of e){let A=J.normalize(u),p=J.resolve(t.cwd,A),h=J.join("package",A),C=await oe.lstatPromise(p),w={name:h,mtime:new Date(Ii.SAFE_TIME*1e3)},v=r.has(A)?493:420,b,E,R=new Promise((_,V)=>{b=_,E=V}),L=_=>{_?E(_):b()};if(C.isFile()){let _;A==="package.json"?_=Buffer.from(JSON.stringify(await bBe(t),null,2)):_=await oe.readFilePromise(p),o.entry({...w,mode:v,type:"file"},_,L)}else C.isSymbolicLink()?o.entry({...w,mode:v,type:"symlink",linkname:await oe.readlinkPromise(p)},L):L(new Error(`Unsupported file type ${C.mode} for ${ue.fromPortablePath(A)}`));await R}o.finalize()});let a=(0,xBe.createGzip)();return o.pipe(a),a}async function bBe(t){let e=JSON.parse(JSON.stringify(t.manifest.raw));return await t.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,t,e),e}async function Yk(t){var w,v,b,E;let e=t.project,r=e.configuration,o={accept:[],reject:[]};for(let R of EBt)o.reject.push(R);for(let R of yBt)o.accept.push(R);o.reject.push(r.get("rcFilename"));let a=R=>{if(R===null||!R.startsWith(`${t.cwd}/`))return;let L=J.relative(t.cwd,R),_=J.resolve(wt.root,L);o.reject.push(_)};a(J.resolve(e.cwd,r.get("lockfileFilename"))),a(r.get("cacheFolder")),a(r.get("globalFolder")),a(r.get("installStatePath")),a(r.get("virtualFolder")),a(r.get("yarnPath")),await r.triggerHook(R=>R.populateYarnPaths,e,R=>{a(R)});for(let R of e.workspaces){let L=J.relative(t.cwd,R.cwd);L!==""&&!L.match(/^(\.\.)?\//)&&o.reject.push(`/${L}`)}let n={accept:[],reject:[]},u=((w=t.manifest.publishConfig)==null?void 0:w.main)??t.manifest.main,A=((v=t.manifest.publishConfig)==null?void 0:v.module)??t.manifest.module,p=((b=t.manifest.publishConfig)==null?void 0:b.browser)??t.manifest.browser,h=((E=t.manifest.publishConfig)==null?void 0:E.bin)??t.manifest.bin;u!=null&&n.accept.push(J.resolve(wt.root,u)),A!=null&&n.accept.push(J.resolve(wt.root,A)),typeof p=="string"&&n.accept.push(J.resolve(wt.root,p));for(let R of h.values())n.accept.push(J.resolve(wt.root,R));if(p instanceof Map)for(let[R,L]of p.entries())n.accept.push(J.resolve(wt.root,R)),typeof L=="string"&&n.accept.push(J.resolve(wt.root,L));let C=t.manifest.files!==null;if(C){n.reject.push("/*");for(let R of t.manifest.files)QBe(n.accept,R,{cwd:wt.root})}return await CBt(t.cwd,{hasExplicitFileList:C,globalList:o,ignoreList:n})}async function CBt(t,{hasExplicitFileList:e,globalList:r,ignoreList:o}){let a=[],n=new Gu(t),u=[[wt.root,[o]]];for(;u.length>0;){let[A,p]=u.pop(),h=await n.lstatPromise(A);if(!DBe(A,{globalList:r,ignoreLists:h.isDirectory()?null:p}))if(h.isDirectory()){let C=await n.readdirPromise(A),w=!1,v=!1;if(!e||A!==wt.root)for(let R of C)w=w||R===".gitignore",v=v||R===".npmignore";let b=v?await vBe(n,A,".npmignore"):w?await vBe(n,A,".gitignore"):null,E=b!==null?[b].concat(p):p;DBe(A,{globalList:r,ignoreLists:p})&&(E=[...p,{accept:[],reject:["**/*"]}]);for(let R of C)u.push([J.resolve(A,R),E])}else(h.isFile()||h.isSymbolicLink())&&a.push(J.relative(wt.root,A))}return a.sort()}async function vBe(t,e,r){let o={accept:[],reject:[]},a=await t.readFilePromise(J.join(e,r),"utf8");for(let n of a.split(/\n/g))QBe(o.reject,n,{cwd:e});return o}function IBt(t,{cwd:e}){let r=t[0]==="!";return r&&(t=t.slice(1)),t.match(/\.{0,1}\//)&&(t=J.resolve(e,t)),r&&(t=`!${t}`),t}function QBe(t,e,{cwd:r}){let o=e.trim();o===""||o[0]==="#"||t.push(IBt(o,{cwd:r}))}function DBe(t,{globalList:e,ignoreLists:r}){let o=Wk(t,e.accept);if(o!==0)return o===2;let a=Wk(t,e.reject);if(a!==0)return a===1;if(r!==null)for(let n of r){let u=Wk(t,n.accept);if(u!==0)return u===2;let A=Wk(t,n.reject);if(A!==0)return A===1}return!1}function Wk(t,e){let r=e,o=[];for(let a=0;a<e.length;++a)e[a][0]!=="!"?r!==e&&r.push(e[a]):(r===e&&(r=e.slice(0,a)),o.push(e[a].slice(1)));return SBe(t,o)?2:SBe(t,r)?1:0}function SBe(t,e){let r=e,o=[];for(let a=0;a<e.length;++a)e[a].includes("/")?r!==e&&r.push(e[a]):(r===e&&(r=e.slice(0,a)),o.push(e[a]));return!!(aG.default.isMatch(t,r,{dot:!0,nocase:!0})||aG.default.isMatch(t,o,{dot:!0,basename:!0,nocase:!0}))}var Oh=class extends ct{constructor(){super(...arguments);this.installIfNeeded=fe.Boolean("--install-if-needed",!1,{description:"Run a preliminary `yarn install` if the package contains build scripts"});this.dryRun=fe.Boolean("-n,--dry-run",!1,{description:"Print the file paths without actually generating the package archive"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.out=fe.String("-o,--out",{description:"Create the archive at the specified path"});this.filename=fe.String("--filename",{hidden:!0})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new er(o.cwd,this.context.cwd);await lG(a)&&(this.installIfNeeded?await o.install({cache:await Ur.find(r),report:new xi}):await o.restoreInstallState());let n=this.out??this.filename,u=typeof n<"u"?J.resolve(this.context.cwd,wBt(n,{workspace:a})):J.resolve(a.cwd,"package.tgz");return(await Ct.start({configuration:r,stdout:this.context.stdout,json:this.json},async p=>{await cG(a,{report:p},async()=>{p.reportJson({base:ue.fromPortablePath(a.cwd)});let h=await Yk(a);for(let C of h)p.reportInfo(null,ue.fromPortablePath(C)),p.reportJson({location:ue.fromPortablePath(C)});if(!this.dryRun){let C=await uG(a,h),w=oe.createWriteStream(u);C.pipe(w),await new Promise(v=>{w.on("finish",v)})}}),this.dryRun||(p.reportInfo(0,`Package archive generated in ${ye.pretty(r,u,ye.Type.PATH)}`),p.reportJson({output:ue.fromPortablePath(u)}))})).exitCode()}};Oh.paths=[["pack"]],Oh.usage=it.Usage({description:"generate a tarball from the active workspace",details:"\n This command will turn the active workspace into a compressed archive suitable for publishing. The archive will by default be stored at the root of the workspace (`package.tgz`).\n\n If the `-o,---out` is set the archive will be created at the specified path. The `%s` and `%v` variables can be used within the path and will be respectively replaced by the package name and version.\n ",examples:[["Create an archive from the active workspace","yarn pack"],["List the files that would be made part of the workspace's archive","yarn pack --dry-run"],["Name and output the archive in a dedicated folder","yarn pack --out /artifacts/%s-%v.tgz"]]});function wBt(t,{workspace:e}){let r=t.replace("%s",BBt(e)).replace("%v",vBt(e));return ue.toPortablePath(r)}function BBt(t){return t.manifest.name!==null?Y.slugifyIdent(t.manifest.name):"package"}function vBt(t){return t.manifest.version!==null?t.manifest.version:"unknown"}var DBt=["dependencies","devDependencies","peerDependencies"],SBt="workspace:",PBt=(t,e)=>{e.publishConfig&&(e.publishConfig.type&&(e.type=e.publishConfig.type),e.publishConfig.main&&(e.main=e.publishConfig.main),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.module&&(e.module=e.publishConfig.module),e.publishConfig.exports&&(e.exports=e.publishConfig.exports),e.publishConfig.imports&&(e.imports=e.publishConfig.imports),e.publishConfig.bin&&(e.bin=e.publishConfig.bin));let r=t.project;for(let o of DBt)for(let a of t.manifest.getForScope(o).values()){let n=r.tryWorkspaceByDescriptor(a),u=Y.parseRange(a.range);if(u.protocol===SBt)if(n===null){if(r.tryWorkspaceByIdent(a)===null)throw new Vt(21,`${Y.prettyDescriptor(r.configuration,a)}: No local workspace found for this range`)}else{let A;Y.areDescriptorsEqual(a,n.anchoredDescriptor)||u.selector==="*"?A=n.manifest.version??"0.0.0":u.selector==="~"||u.selector==="^"?A=`${u.selector}${n.manifest.version??"0.0.0"}`:A=u.selector;let p=o==="dependencies"?Y.makeDescriptor(a,"unknown"):null,h=p!==null&&t.manifest.ensureDependencyMeta(p).optional?"optionalDependencies":o;e[h][Y.stringifyIdent(a)]=A}}},xBt={hooks:{beforeWorkspacePacking:PBt},commands:[Oh]},bBt=xBt;var UBe=Ie("crypto"),_Be=tt(MBe()),HBe=Ie("url");async function KBt(t,e,{access:r,tag:o,registry:a,gitHead:n}){let u=t.manifest.name,A=t.manifest.version,p=Y.stringifyIdent(u),h=(0,UBe.createHash)("sha1").update(e).digest("hex"),C=_Be.default.fromData(e).toString(),w=r??qBe(t,u),v=await jBe(t),b=await vA.genPackageManifest(t),E=`${p}-${A}.tgz`,R=new HBe.URL(`${IA(a)}/${p}/-/${E}`);return{_id:p,_attachments:{[E]:{content_type:"application/octet-stream",data:e.toString("base64"),length:e.length}},name:p,access:w,["dist-tags"]:{[o]:A},versions:{[A]:{...b,_id:`${p}@${A}`,name:p,version:A,gitHead:n,dist:{shasum:h,integrity:C,tarball:R.toString()}}},readme:v}}async function VBt(t){try{let{stdout:e}=await Mr.execvp("git",["rev-parse","--revs-only","HEAD"],{cwd:t});return e.trim()===""?void 0:e.trim()}catch{return}}function qBe(t,e){let r=t.project.configuration;return t.manifest.publishConfig&&typeof t.manifest.publishConfig.access=="string"?t.manifest.publishConfig.access:r.get("npmPublishAccess")!==null?r.get("npmPublishAccess"):e.scope?"restricted":"public"}async function jBe(t){let e=ue.toPortablePath(`${t.cwd}/README.md`),r=t.manifest.name,a=`# ${Y.stringifyIdent(r)} |
668 | `;try{a=await oe.readFilePromise(e,"utf8")}catch(n){if(n.code==="ENOENT")return a;throw n}return a}var gG={npmAlwaysAuth:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"BOOLEAN",default:!1},npmAuthIdent:{description:"Authentication identity for the npm registry (_auth in npm and yarn v1)",type:"SECRET",default:null},npmAuthToken:{description:"Authentication token for the npm registry (_authToken in npm and yarn v1)",type:"SECRET",default:null}},GBe={npmAuditRegistry:{description:"Registry to query for audit reports",type:"STRING",default:null},npmPublishRegistry:{description:"Registry to push packages to",type:"STRING",default:null},npmRegistryServer:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:"STRING",default:"https://registry.yarnpkg.com"}},JBt={configuration:{...gG,...GBe,npmScopes:{description:"Settings per package scope",type:"MAP",valueDefinition:{description:"",type:"SHAPE",properties:{...gG,...GBe}}},npmRegistries:{description:"Settings per registry",type:"MAP",normalizeKeys:IA,valueDefinition:{description:"",type:"SHAPE",properties:{...gG}}}},fetchers:[ev,El],resolvers:[tv,rv,nv]},zBt=JBt;var vG={};Yt(vG,{NpmAuditCommand:()=>Uh,NpmInfoCommand:()=>_h,NpmLoginCommand:()=>Hh,NpmLogoutCommand:()=>qh,NpmPublishCommand:()=>jh,NpmTagAddCommand:()=>Wh,NpmTagListCommand:()=>Gh,NpmTagRemoveCommand:()=>Yh,NpmWhoamiCommand:()=>Kh,default:()=>svt,npmAuditUtils:()=>Jk});Ke();_t();var Ev=tt(zo());rl();var Kk=(o=>(o.All="all",o.Production="production",o.Development="development",o))(Kk||{}),Vk=(n=>(n.Info="info",n.Low="low",n.Moderate="moderate",n.High="high",n.Critical="critical",n))(Vk||{});var Jk={};Yt(Jk,{allSeverities:()=>$C,getDependencies:()=>CG,getReportTree:()=>yG,getRequires:()=>EG,isError:()=>mG});Ke();var $C=["info","low","moderate","high","critical"];function YBe(t,e){let r=[],o=new Set,a=u=>{o.has(u)||(o.add(u),r.push(u))};for(let u of e)a(u);let n=new Set;for(;r.length>0;){let u=r.shift(),A=t.storedResolutions.get(u);if(typeof A>"u")throw new Error("Assertion failed: Expected the resolution to have been registered");let p=t.storedPackages.get(A);if(!!p){n.add(u);for(let h of p.dependencies.values())a(h.descriptorHash)}}return n}function XBt(t,e){return new Set([...t].filter(r=>!e.has(r)))}function ZBt(t,e,{all:r}){let o=r?t.workspaces:[e],a=o.map(v=>v.manifest),n=new Set(a.map(v=>[...v.dependencies].map(([b,E])=>b)).flat()),u=new Set(a.map(v=>[...v.devDependencies].map(([b,E])=>b)).flat()),A=o.map(v=>[...v.anchoredPackage.dependencies.values()]).flat(),p=A.filter(v=>n.has(v.identHash)).map(v=>v.descriptorHash),h=A.filter(v=>u.has(v.identHash)).map(v=>v.descriptorHash),C=YBe(t,p),w=YBe(t,h);return XBt(w,C)}function KBe(t){let e={};for(let r of t)e[Y.stringifyIdent(r)]=Y.parseRange(r.range).selector;return e}function VBe(t){if(typeof t>"u")return new Set($C);let e=$C.indexOf(t),r=$C.slice(e);return new Set(r)}function $Bt(t,e){let r=VBe(e),o={};for(let a of r)o[a]=t[a];return o}function mG(t,e){let r=$Bt(t,e);for(let o of Object.keys(r))if(r[o]??0>0)return!0;return!1}function yG(t,e){var n;let r={},o={children:r},a=Object.values(t.advisories);if(e!=null){let u=VBe(e);a=a.filter(A=>u.has(A.severity))}for(let u of We.sortMap(a,A=>A.module_name))r[u.module_name]={label:u.module_name,value:ye.tuple(ye.Type.RANGE,u.findings.map(A=>A.version).join(", ")),children:{ID:{label:"ID",value:ye.tuple(ye.Type.NUMBER,u.id)},Issue:{label:"Issue",value:ye.tuple(ye.Type.NO_HINT,u.title)},URL:{label:"URL",value:ye.tuple(ye.Type.URL,u.url)},Severity:{label:"Severity",value:ye.tuple(ye.Type.NO_HINT,u.severity)},["Vulnerable Versions"]:{label:"Vulnerable Versions",value:ye.tuple(ye.Type.RANGE,u.vulnerable_versions)},["Patched Versions"]:{label:"Patched Versions",value:ye.tuple(ye.Type.RANGE,u.patched_versions)},Via:{label:"Via",value:ye.tuple(ye.Type.NO_HINT,Array.from(new Set(u.findings.map(A=>A.paths).flat().map(A=>A.split(">")[0]))).join(", "))},Recommendation:{label:"Recommendation",value:ye.tuple(ye.Type.NO_HINT,(n=u.recommendation)==null?void 0:n.replace(/\n/g," "))}}};return o}function EG(t,e,{all:r,environment:o}){let a=r?t.workspaces:[e],n=["all","production"].includes(o),u=[];if(n)for(let h of a)for(let C of h.manifest.dependencies.values())u.push(C);let A=["all","development"].includes(o),p=[];if(A)for(let h of a)for(let C of h.manifest.devDependencies.values())p.push(C);return KBe([...u,...p].filter(h=>Y.parseRange(h.range).protocol===null))}function CG(t,e,{all:r}){let o=ZBt(t,e,{all:r}),a={};for(let n of t.storedPackages.values())a[Y.stringifyIdent(n)]={version:n.version??"0.0.0",integrity:n.identHash,requires:KBe(n.dependencies.values()),dev:o.has(Y.convertLocatorToDescriptor(n).descriptorHash)};return a}var Uh=class extends ct{constructor(){super(...arguments);this.all=fe.Boolean("-A,--all",!1,{description:"Audit dependencies from all workspaces"});this.recursive=fe.Boolean("-R,--recursive",!1,{description:"Audit transitive dependencies as well"});this.environment=fe.String("--environment","all",{description:"Which environments to cover",validator:Gs(Kk)});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.severity=fe.String("--severity","info",{description:"Minimal severity requested for packages to be displayed",validator:Gs(Vk)});this.excludes=fe.Array("--exclude",[],{description:"Array of glob patterns of packages to exclude from audit"});this.ignores=fe.Array("--ignore",[],{description:"Array of glob patterns of advisory ID's to ignore in the audit report"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new er(o.cwd,this.context.cwd);await o.restoreInstallState();let n=EG(o,a,{all:this.all,environment:this.environment}),u=CG(o,a,{all:this.all});if(!this.recursive)for(let E of Object.keys(u))Object.prototype.hasOwnProperty.call(n,E)?u[E].requires={}:delete u[E];let A=Array.from(new Set([...r.get("npmAuditExcludePackages"),...this.excludes]));if(A){for(let E of Object.keys(n))Ev.default.isMatch(E,A)&&delete n[E];for(let E of Object.keys(u))Ev.default.isMatch(E,A)&&delete u[E];for(let E of Object.keys(u))for(let R of Object.keys(u[E].requires))Ev.default.isMatch(R,A)&&delete u[E].requires[R]}let p={requires:n,dependencies:u},h=Wn.getAuditRegistry({configuration:r}),C,w=await pA.start({configuration:r,stdout:this.context.stdout},async()=>{C=await an.post("/-/npm/v1/security/audits/quick",p,{authType:an.AuthType.BEST_EFFORT,configuration:r,jsonResponse:!0,registry:h})});if(w.hasErrors())return w.exitCode();let v=Array.from(new Set([...r.get("npmAuditIgnoreAdvisories"),...this.ignores]));if(v){for(let E of Object.keys(C.advisories))if(Ev.default.isMatch(E,v)){let R=C.advisories[E],L=0;R.findings.forEach(_=>L+=_.paths.length),C.metadata.vulnerabilities[R.severity]-=L,delete C.advisories[E]}}let b=mG(C.metadata.vulnerabilities,this.severity);return!this.json&&b?($o.emitTree(yG(C,this.severity),{configuration:r,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Ct.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async E=>{E.reportJson(C),b||E.reportInfo(1,"No audit suggestions")}),b?1:0)}};Uh.paths=[["npm","audit"]],Uh.usage=it.Usage({description:"perform a vulnerability audit against the installed packages",details:` | ||
666 | This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths). | 669 | This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths). |
667 | 670 | ||
668 | For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \`-A,--all\`. To extend this search to both direct and transitive dependencies, use \`-R,--recursive\`. | 671 | For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \`-A,--all\`. To extend this search to both direct and transitive dependencies, use \`-R,--recursive\`. |
669 | 672 | ||
670 | Applying the \`--severity\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${VC.map(r=>`\`${r}\``).join(", ")}. | 673 | Applying the \`--severity\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${$C.map(r=>`\`${r}\``).join(", ")}. |
671 | 674 | ||
672 | If the \`--json\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages. | 675 | If the \`--json\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages. |
673 | 676 | ||
@@ -676,32 +679,32 @@ ${Qe.map(Le=>`Not found: ${uu(Le)} | |||
676 | If particular advisories are needed to be ignored, the \`--ignore\` flag can be used with Advisory ID's to ignore any number of advisories in the audit report. This can also be set in the configuration file with the \`npmAuditIgnoreAdvisories\` option. | 679 | If particular advisories are needed to be ignored, the \`--ignore\` flag can be used with Advisory ID's to ignore any number of advisories in the audit report. This can also be set in the configuration file with the \`npmAuditIgnoreAdvisories\` option. |
677 | 680 | ||
678 | To understand the dependency tree requiring vulnerable packages, check the raw report with the \`--json\` flag or use \`yarn why <package>\` to get more information as to who depends on them. | 681 | To understand the dependency tree requiring vulnerable packages, check the raw report with the \`--json\` flag or use \`yarn why <package>\` to get more information as to who depends on them. |
679 | `,examples:[["Checks for known security issues with the installed packages. The output is a list of known issues.","yarn npm audit"],["Audit dependencies in all workspaces","yarn npm audit --all"],["Limit auditing to `dependencies` (excludes `devDependencies`)","yarn npm audit --environment production"],["Show audit report as valid JSON","yarn npm audit --json"],["Audit all direct and transitive dependencies","yarn npm audit --recursive"],["Output moderate (or more severe) vulnerabilities","yarn npm audit --severity moderate"],["Exclude certain packages","yarn npm audit --exclude package1 --exclude package2"],["Ignore specific advisories","yarn npm audit --ignore 1234567 --ignore 7654321"]]});Ke();Ke();bt();_t();var p9=tt(ii()),h9=Ie("util"),Lh=class extends ct{constructor(){super(...arguments);this.fields=fe.String("-f,--fields",{description:"A comma-separated list of manifest fields that should be displayed"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.packages=fe.Rest()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd),a=typeof this.fields<"u"?new Set(["name",...this.fields.split(/\s*,\s*/)]):null,n=[],u=!1,A=await Ct.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async p=>{for(let h of this.packages){let C;if(h==="."){let oe=o.topLevelWorkspace;if(!oe.manifest.name)throw new ot(`Missing ${ye.pretty(r,"name",ye.Type.CODE)} field in ${Ae.fromPortablePath(V.join(oe.cwd,Lr.manifest))}`);C=Y.makeDescriptor(oe.manifest.name,"unknown")}else C=Y.parseDescriptor(h);let w=an.getIdentUrl(C),v=g9(await an.get(w,{configuration:r,ident:C,jsonResponse:!0,customErrorMessage:an.customPackageError})),b=Object.keys(v.versions).sort(p9.default.compareLoose),R=v["dist-tags"].latest||b[b.length-1],L=Tr.validRange(C.range);if(L){let oe=p9.default.maxSatisfying(b,L);oe!==null?R=oe:(p.reportWarning(0,`Unmet range ${Y.prettyRange(r,C.range)}; falling back to the latest version`),u=!0)}else Object.prototype.hasOwnProperty.call(v["dist-tags"],C.range)?R=v["dist-tags"][C.range]:C.range!=="unknown"&&(p.reportWarning(0,`Unknown tag ${Y.prettyRange(r,C.range)}; falling back to the latest version`),u=!0);let _=v.versions[R],J={...v,..._,version:R,versions:b},re;if(a!==null){re={};for(let oe of a){let pe=J[oe];if(typeof pe<"u")re[oe]=pe;else{p.reportWarning(1,`The ${ye.pretty(r,oe,ye.Type.CODE)} field doesn't exist inside ${Y.prettyIdent(r,C)}'s information`),u=!0;continue}}}else this.json||(delete J.dist,delete J.readme,delete J.users),re=J;p.reportJson(re),this.json||n.push(re)}});h9.inspect.styles.name="cyan";for(let p of n)(p!==n[0]||u)&&this.context.stdout.write(` | 682 | `,examples:[["Checks for known security issues with the installed packages. The output is a list of known issues.","yarn npm audit"],["Audit dependencies in all workspaces","yarn npm audit --all"],["Limit auditing to `dependencies` (excludes `devDependencies`)","yarn npm audit --environment production"],["Show audit report as valid JSON","yarn npm audit --json"],["Audit all direct and transitive dependencies","yarn npm audit --recursive"],["Output moderate (or more severe) vulnerabilities","yarn npm audit --severity moderate"],["Exclude certain packages","yarn npm audit --exclude package1 --exclude package2"],["Ignore specific advisories","yarn npm audit --ignore 1234567 --ignore 7654321"]]});Ke();Ke();St();_t();var IG=tt(si()),wG=Ie("util"),_h=class extends ct{constructor(){super(...arguments);this.fields=fe.String("-f,--fields",{description:"A comma-separated list of manifest fields that should be displayed"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.packages=fe.Rest()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd),a=typeof this.fields<"u"?new Set(["name",...this.fields.split(/\s*,\s*/)]):null,n=[],u=!1,A=await Ct.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async p=>{for(let h of this.packages){let C;if(h==="."){let ae=o.topLevelWorkspace;if(!ae.manifest.name)throw new ot(`Missing ${ye.pretty(r,"name",ye.Type.CODE)} field in ${ue.fromPortablePath(J.join(ae.cwd,Lr.manifest))}`);C=Y.makeDescriptor(ae.manifest.name,"unknown")}else C=Y.parseDescriptor(h);let w=an.getIdentUrl(C),v=BG(await an.get(w,{configuration:r,ident:C,jsonResponse:!0,customErrorMessage:an.customPackageError})),b=Object.keys(v.versions).sort(IG.default.compareLoose),R=v["dist-tags"].latest||b[b.length-1],L=Tr.validRange(C.range);if(L){let ae=IG.default.maxSatisfying(b,L);ae!==null?R=ae:(p.reportWarning(0,`Unmet range ${Y.prettyRange(r,C.range)}; falling back to the latest version`),u=!0)}else Object.prototype.hasOwnProperty.call(v["dist-tags"],C.range)?R=v["dist-tags"][C.range]:C.range!=="unknown"&&(p.reportWarning(0,`Unknown tag ${Y.prettyRange(r,C.range)}; falling back to the latest version`),u=!0);let _=v.versions[R],V={...v,..._,version:R,versions:b},re;if(a!==null){re={};for(let ae of a){let he=V[ae];if(typeof he<"u")re[ae]=he;else{p.reportWarning(1,`The ${ye.pretty(r,ae,ye.Type.CODE)} field doesn't exist inside ${Y.prettyIdent(r,C)}'s information`),u=!0;continue}}}else this.json||(delete V.dist,delete V.readme,delete V.users),re=V;p.reportJson(re),this.json||n.push(re)}});wG.inspect.styles.name="cyan";for(let p of n)(p!==n[0]||u)&&this.context.stdout.write(` |
680 | `),this.context.stdout.write(`${(0,h9.inspect)(p,{depth:1/0,colors:!0,compact:!1})} | 683 | `),this.context.stdout.write(`${(0,wG.inspect)(p,{depth:1/0,colors:!0,compact:!1})} |
681 | `);return A.exitCode()}};Lh.paths=[["npm","info"]],Lh.usage=it.Usage({category:"Npm-related commands",description:"show information about a package",details:"\n This command fetches information about a package from the npm registry and prints it in a tree format.\n\n The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\n\n Append `@<range>` to the package argument to provide information specific to the latest version that satisfies the range or to the corresponding tagged version. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\n\n If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package information.\n\n By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\n ",examples:[["Show all available information about react (except the `dist`, `readme`, and `users` fields)","yarn npm info react"],["Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)","yarn npm info react --json"],["Show all available information about react@16.12.0","yarn npm info react@16.12.0"],["Show all available information about react@next","yarn npm info react@next"],["Show the description of react","yarn npm info react --fields description"],["Show all available versions of react","yarn npm info react --fields versions"],["Show the readme of react","yarn npm info react --fields readme"],["Show a few fields of react","yarn npm info react --fields homepage,repository"]]});function g9(t){if(Array.isArray(t)){let e=[];for(let r of t)r=g9(r),r&&e.push(r);return e}else if(typeof t=="object"&&t!==null){let e={};for(let r of Object.keys(t)){if(r.startsWith("_"))continue;let o=g9(t[r]);o&&(e[r]=o)}return e}else return t||null}Ke();Ke();_t();var TBe=tt(Y1()),Oh=class extends ct{constructor(){super(...arguments);this.scope=fe.String("-s,--scope",{description:"Login to the registry configured for a given scope"});this.publish=fe.Boolean("--publish",!1,{description:"Login to the publish registry"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),o=await Wk({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Ct.start({configuration:r,stdout:this.context.stdout,includeFooter:!1},async n=>{let u=await LBt({configuration:r,registry:o,report:n,stdin:this.context.stdin,stdout:this.context.stdout}),A=`/-/user/org.couchdb.user:${encodeURIComponent(u.name)}`,p=await an.put(A,u,{attemptedAs:u.name,configuration:r,registry:o,jsonResponse:!0,authType:an.AuthType.NO_AUTH});return await NBt(o,p.token,{configuration:r,scope:this.scope}),n.reportInfo(0,"Successfully logged in")})).exitCode()}};Oh.paths=[["npm","login"]],Oh.usage=it.Usage({category:"Npm-related commands",description:"store new login info to access the npm registry",details:"\n This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\n\n Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n ",examples:[["Login to the default registry","yarn npm login"],["Login to the registry linked to the @my-scope registry","yarn npm login --scope my-scope"],["Login to the publish registry for the current package","yarn npm login --publish"]]});async function Wk({scope:t,publish:e,configuration:r,cwd:o}){return t&&e?Gn.getScopeRegistry(t,{configuration:r,type:Gn.RegistryType.PUBLISH_REGISTRY}):t?Gn.getScopeRegistry(t,{configuration:r}):e?Gn.getPublishRegistry((await iC(r,o)).manifest,{configuration:r}):Gn.getDefaultRegistry({configuration:r})}async function NBt(t,e,{configuration:r,scope:o}){let a=u=>A=>{let p=Ye.isIndexableObject(A)?A:{},h=p[u],C=Ye.isIndexableObject(h)?h:{};return{...p,[u]:{...C,npmAuthToken:e}}},n=o?{npmScopes:a(o)}:{npmRegistries:a(t)};return await Xe.updateHomeConfiguration(n)}async function LBt({configuration:t,registry:e,report:r,stdin:o,stdout:a}){r.reportInfo(0,`Logging in to ${ye.pretty(t,e,ye.Type.URL)}`);let n=!1;if(e.match(/^https:\/\/npm\.pkg\.github\.com(\/|$)/)&&(r.reportInfo(0,"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions."),n=!0),r.reportSeparator(),process.env.YARN_IS_TEST_ENV)return{name:process.env.YARN_INJECT_NPM_USER||"",password:process.env.YARN_INJECT_NPM_PASSWORD||""};let{username:u,password:A}=await(0,TBe.prompt)([{type:"input",name:"username",message:"Username:",required:!0,onCancel:()=>process.exit(130),stdin:o,stdout:a},{type:"password",name:"password",message:n?"Token:":"Password:",required:!0,onCancel:()=>process.exit(130),stdin:o,stdout:a}]);return r.reportSeparator(),{name:u,password:A}}Ke();Ke();_t();var zC=new Set(["npmAuthIdent","npmAuthToken"]),Mh=class extends ct{constructor(){super(...arguments);this.scope=fe.String("-s,--scope",{description:"Logout of the registry configured for a given scope"});this.publish=fe.Boolean("--publish",!1,{description:"Logout of the publish registry"});this.all=fe.Boolean("-A,--all",!1,{description:"Logout of all registries"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),o=async()=>{let n=await Wk({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),u=await Xe.find(this.context.cwd,this.context.plugins),A=Y.makeIdent(this.scope??null,"pkg");return!Gn.getAuthConfiguration(n,{configuration:u,ident:A}).get("npmAuthToken")};return(await Ct.start({configuration:r,stdout:this.context.stdout},async n=>{if(this.all&&(await MBt(),n.reportInfo(0,"Successfully logged out from everything")),this.scope){await NBe("npmScopes",this.scope),await o()?n.reportInfo(0,`Successfully logged out from ${this.scope}`):n.reportWarning(0,"Scope authentication settings removed, but some other ones settings still apply to it");return}let u=await Wk({configuration:r,cwd:this.context.cwd,publish:this.publish});await NBe("npmRegistries",u),await o()?n.reportInfo(0,`Successfully logged out from ${u}`):n.reportWarning(0,"Registry authentication settings removed, but some other ones settings still apply to it")})).exitCode()}};Mh.paths=[["npm","logout"]],Mh.usage=it.Usage({category:"Npm-related commands",description:"logout of the npm registry",details:"\n This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\n\n Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n\n Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\n ",examples:[["Logout of the default registry","yarn npm logout"],["Logout of the @my-scope scope","yarn npm logout --scope my-scope"],["Logout of the publish registry for the current package","yarn npm logout --publish"],["Logout of all registries","yarn npm logout --all"]]});function OBt(t,e){let r=t[e];if(!Ye.isIndexableObject(r))return!1;let o=new Set(Object.keys(r));if([...zC].every(n=>!o.has(n)))return!1;for(let n of zC)o.delete(n);if(o.size===0)return t[e]=void 0,!0;let a={...r};for(let n of zC)delete a[n];return t[e]=a,!0}async function MBt(){let t=e=>{let r=!1,o=Ye.isIndexableObject(e)?{...e}:{};o.npmAuthToken&&(delete o.npmAuthToken,r=!0);for(let a of Object.keys(o))OBt(o,a)&&(r=!0);if(Object.keys(o).length!==0)return r?o:e};return await Xe.updateHomeConfiguration({npmRegistries:t,npmScopes:t})}async function NBe(t,e){return await Xe.updateHomeConfiguration({[t]:r=>{let o=Ye.isIndexableObject(r)?r:{};if(!Object.prototype.hasOwnProperty.call(o,e))return r;let a=o[e],n=Ye.isIndexableObject(a)?a:{},u=new Set(Object.keys(n));if([...zC].every(p=>!u.has(p)))return r;for(let p of zC)u.delete(p);if(u.size===0)return Object.keys(o).length===1?void 0:{...o,[e]:void 0};let A={};for(let p of zC)A[p]=void 0;return{...o,[e]:{...n,...A}}}})}Ke();_t();var Uh=class extends ct{constructor(){super(...arguments);this.access=fe.String("--access",{description:"The access for the published package (public or restricted)"});this.tag=fe.String("--tag","latest",{description:"The tag on the registry that the package should be attached to"});this.tolerateRepublish=fe.Boolean("--tolerate-republish",!1,{description:"Warn and exit when republishing an already existing version of a package"});this.otp=fe.String("--otp",{description:"The OTP token to use with the command"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new er(o.cwd,this.context.cwd);if(a.manifest.private)throw new ot("Private workspaces cannot be published");if(a.manifest.name===null||a.manifest.version===null)throw new ot("Workspaces must have valid names and versions to be published on an external registry");await o.restoreInstallState();let n=a.manifest.name,u=a.manifest.version,A=Gn.getPublishRegistry(a.manifest,{configuration:r});return(await Ct.start({configuration:r,stdout:this.context.stdout},async h=>{var C,w;if(this.tolerateRepublish)try{let v=await an.get(an.getIdentUrl(n),{configuration:r,registry:A,ident:n,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(v,"versions"))throw new Jt(15,'Registry returned invalid data for - missing "versions" field');if(Object.prototype.hasOwnProperty.call(v.versions,u)){h.reportWarning(0,`Registry already knows about version ${u}; skipping.`);return}}catch(v){if(((w=(C=v.originalError)==null?void 0:C.response)==null?void 0:w.statusCode)!==404)throw v}await sn.maybeExecuteWorkspaceLifecycleScript(a,"prepublish",{report:h}),await IA.prepareForPack(a,{report:h},async()=>{let v=await IA.genPackList(a);for(let _ of v)h.reportInfo(null,_);let b=await IA.genPackStream(a,v),E=await Ye.bufferStream(b),R=await JC.getGitHead(a.cwd),L=await JC.makePublishBody(a,E,{access:this.access,tag:this.tag,registry:A,gitHead:R});await an.put(an.getIdentUrl(n),L,{configuration:r,registry:A,ident:n,otp:this.otp,jsonResponse:!0})}),h.reportInfo(0,"Package archive published")})).exitCode()}};Uh.paths=[["npm","publish"]],Uh.usage=it.Usage({category:"Npm-related commands",description:"publish the active workspace to the npm registry",details:'\n This command will pack the active workspace into a fresh archive and upload it to the npm registry.\n\n The package will by default be attached to the `latest` tag on the registry, but this behavior can be overriden by using the `--tag` option.\n\n Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka "private packages"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\n ',examples:[["Publish the active workspace","yarn npm publish"]]});Ke();_t();var LBe=tt(ii());Ke();bt();_t();var _h=class extends ct{constructor(){super(...arguments);this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=fe.String({required:!1})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n;if(typeof this.package<"u")n=Y.parseIdent(this.package);else{if(!a)throw new er(o.cwd,this.context.cwd);if(!a.manifest.name)throw new ot(`Missing 'name' field in ${Ae.fromPortablePath(V.join(a.cwd,Lr.manifest))}`);n=a.manifest.name}let u=await Av(n,r),p={children:Ye.sortMap(Object.entries(u),([h])=>h).map(([h,C])=>({value:ye.tuple(ye.Type.RESOLUTION,{descriptor:Y.makeDescriptor(n,h),locator:Y.makeLocator(n,C)})}))};return Xo.emitTree(p,{configuration:r,json:this.json,stdout:this.context.stdout})}};_h.paths=[["npm","tag","list"]],_h.usage=it.Usage({category:"Npm-related commands",description:"list all dist-tags of a package",details:` | 684 | `);return A.exitCode()}};_h.paths=[["npm","info"]],_h.usage=it.Usage({category:"Npm-related commands",description:"show information about a package",details:"\n This command fetches information about a package from the npm registry and prints it in a tree format.\n\n The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\n\n Append `@<range>` to the package argument to provide information specific to the latest version that satisfies the range or to the corresponding tagged version. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\n\n If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package information.\n\n By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\n ",examples:[["Show all available information about react (except the `dist`, `readme`, and `users` fields)","yarn npm info react"],["Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)","yarn npm info react --json"],["Show all available information about react@16.12.0","yarn npm info react@16.12.0"],["Show all available information about react@next","yarn npm info react@next"],["Show the description of react","yarn npm info react --fields description"],["Show all available versions of react","yarn npm info react --fields versions"],["Show the readme of react","yarn npm info react --fields readme"],["Show a few fields of react","yarn npm info react --fields homepage,repository"]]});function BG(t){if(Array.isArray(t)){let e=[];for(let r of t)r=BG(r),r&&e.push(r);return e}else if(typeof t=="object"&&t!==null){let e={};for(let r of Object.keys(t)){if(r.startsWith("_"))continue;let o=BG(t[r]);o&&(e[r]=o)}return e}else return t||null}Ke();Ke();_t();var JBe=tt(Z1()),Hh=class extends ct{constructor(){super(...arguments);this.scope=fe.String("-s,--scope",{description:"Login to the registry configured for a given scope"});this.publish=fe.Boolean("--publish",!1,{description:"Login to the publish registry"});this.alwaysAuth=fe.Boolean("--always-auth",{description:"Set the npmAlwaysAuth configuration"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),o=await zk({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Ct.start({configuration:r,stdout:this.context.stdout,includeFooter:!1},async n=>{let u=await tvt({configuration:r,registry:o,report:n,stdin:this.context.stdin,stdout:this.context.stdout}),A=`/-/user/org.couchdb.user:${encodeURIComponent(u.name)}`,p=await an.put(A,u,{attemptedAs:u.name,configuration:r,registry:o,jsonResponse:!0,authType:an.AuthType.NO_AUTH});return await evt(o,p.token,{alwaysAuth:this.alwaysAuth,scope:this.scope}),n.reportInfo(0,"Successfully logged in")})).exitCode()}};Hh.paths=[["npm","login"]],Hh.usage=it.Usage({category:"Npm-related commands",description:"store new login info to access the npm registry",details:"\n This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\n\n Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n ",examples:[["Login to the default registry","yarn npm login"],["Login to the registry linked to the @my-scope registry","yarn npm login --scope my-scope"],["Login to the publish registry for the current package","yarn npm login --publish"]]});async function zk({scope:t,publish:e,configuration:r,cwd:o}){return t&&e?Wn.getScopeRegistry(t,{configuration:r,type:Wn.RegistryType.PUBLISH_REGISTRY}):t?Wn.getScopeRegistry(t,{configuration:r}):e?Wn.getPublishRegistry((await cC(r,o)).manifest,{configuration:r}):Wn.getDefaultRegistry({configuration:r})}async function evt(t,e,{alwaysAuth:r,scope:o}){let a=u=>A=>{let p=We.isIndexableObject(A)?A:{},h=p[u],C=We.isIndexableObject(h)?h:{};return{...p,[u]:{...C,...r!==void 0?{npmAlwaysAuth:r}:{},npmAuthToken:e}}},n=o?{npmScopes:a(o)}:{npmRegistries:a(t)};return await Xe.updateHomeConfiguration(n)}async function tvt({configuration:t,registry:e,report:r,stdin:o,stdout:a}){r.reportInfo(0,`Logging in to ${ye.pretty(t,e,ye.Type.URL)}`);let n=!1;if(e.match(/^https:\/\/npm\.pkg\.github\.com(\/|$)/)&&(r.reportInfo(0,"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions."),n=!0),r.reportSeparator(),process.env.YARN_IS_TEST_ENV)return{name:process.env.YARN_INJECT_NPM_USER||"",password:process.env.YARN_INJECT_NPM_PASSWORD||""};let{username:u,password:A}=await(0,JBe.prompt)([{type:"input",name:"username",message:"Username:",required:!0,onCancel:()=>process.exit(130),stdin:o,stdout:a},{type:"password",name:"password",message:n?"Token:":"Password:",required:!0,onCancel:()=>process.exit(130),stdin:o,stdout:a}]);return r.reportSeparator(),{name:u,password:A}}Ke();Ke();_t();var eI=new Set(["npmAuthIdent","npmAuthToken"]),qh=class extends ct{constructor(){super(...arguments);this.scope=fe.String("-s,--scope",{description:"Logout of the registry configured for a given scope"});this.publish=fe.Boolean("--publish",!1,{description:"Logout of the publish registry"});this.all=fe.Boolean("-A,--all",!1,{description:"Logout of all registries"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),o=async()=>{let n=await zk({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),u=await Xe.find(this.context.cwd,this.context.plugins),A=Y.makeIdent(this.scope??null,"pkg");return!Wn.getAuthConfiguration(n,{configuration:u,ident:A}).get("npmAuthToken")};return(await Ct.start({configuration:r,stdout:this.context.stdout},async n=>{if(this.all&&(await nvt(),n.reportInfo(0,"Successfully logged out from everything")),this.scope){await zBe("npmScopes",this.scope),await o()?n.reportInfo(0,`Successfully logged out from ${this.scope}`):n.reportWarning(0,"Scope authentication settings removed, but some other ones settings still apply to it");return}let u=await zk({configuration:r,cwd:this.context.cwd,publish:this.publish});await zBe("npmRegistries",u),await o()?n.reportInfo(0,`Successfully logged out from ${u}`):n.reportWarning(0,"Registry authentication settings removed, but some other ones settings still apply to it")})).exitCode()}};qh.paths=[["npm","logout"]],qh.usage=it.Usage({category:"Npm-related commands",description:"logout of the npm registry",details:"\n This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\n\n Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n\n Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\n ",examples:[["Logout of the default registry","yarn npm logout"],["Logout of the @my-scope scope","yarn npm logout --scope my-scope"],["Logout of the publish registry for the current package","yarn npm logout --publish"],["Logout of all registries","yarn npm logout --all"]]});function rvt(t,e){let r=t[e];if(!We.isIndexableObject(r))return!1;let o=new Set(Object.keys(r));if([...eI].every(n=>!o.has(n)))return!1;for(let n of eI)o.delete(n);if(o.size===0)return t[e]=void 0,!0;let a={...r};for(let n of eI)delete a[n];return t[e]=a,!0}async function nvt(){let t=e=>{let r=!1,o=We.isIndexableObject(e)?{...e}:{};o.npmAuthToken&&(delete o.npmAuthToken,r=!0);for(let a of Object.keys(o))rvt(o,a)&&(r=!0);if(Object.keys(o).length!==0)return r?o:e};return await Xe.updateHomeConfiguration({npmRegistries:t,npmScopes:t})}async function zBe(t,e){return await Xe.updateHomeConfiguration({[t]:r=>{let o=We.isIndexableObject(r)?r:{};if(!Object.prototype.hasOwnProperty.call(o,e))return r;let a=o[e],n=We.isIndexableObject(a)?a:{},u=new Set(Object.keys(n));if([...eI].every(p=>!u.has(p)))return r;for(let p of eI)u.delete(p);if(u.size===0)return Object.keys(o).length===1?void 0:{...o,[e]:void 0};let A={};for(let p of eI)A[p]=void 0;return{...o,[e]:{...n,...A}}}})}Ke();_t();var jh=class extends ct{constructor(){super(...arguments);this.access=fe.String("--access",{description:"The access for the published package (public or restricted)"});this.tag=fe.String("--tag","latest",{description:"The tag on the registry that the package should be attached to"});this.tolerateRepublish=fe.Boolean("--tolerate-republish",!1,{description:"Warn and exit when republishing an already existing version of a package"});this.otp=fe.String("--otp",{description:"The OTP token to use with the command"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new er(o.cwd,this.context.cwd);if(a.manifest.private)throw new ot("Private workspaces cannot be published");if(a.manifest.name===null||a.manifest.version===null)throw new ot("Workspaces must have valid names and versions to be published on an external registry");await o.restoreInstallState();let n=a.manifest.name,u=a.manifest.version,A=Wn.getPublishRegistry(a.manifest,{configuration:r});return(await Ct.start({configuration:r,stdout:this.context.stdout},async h=>{var C,w;if(this.tolerateRepublish)try{let v=await an.get(an.getIdentUrl(n),{configuration:r,registry:A,ident:n,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(v,"versions"))throw new Vt(15,'Registry returned invalid data for - missing "versions" field');if(Object.prototype.hasOwnProperty.call(v.versions,u)){h.reportWarning(0,`Registry already knows about version ${u}; skipping.`);return}}catch(v){if(((w=(C=v.originalError)==null?void 0:C.response)==null?void 0:w.statusCode)!==404)throw v}await sn.maybeExecuteWorkspaceLifecycleScript(a,"prepublish",{report:h}),await vA.prepareForPack(a,{report:h},async()=>{let v=await vA.genPackList(a);for(let _ of v)h.reportInfo(null,_);let b=await vA.genPackStream(a,v),E=await We.bufferStream(b),R=await ZC.getGitHead(a.cwd),L=await ZC.makePublishBody(a,E,{access:this.access,tag:this.tag,registry:A,gitHead:R});await an.put(an.getIdentUrl(n),L,{configuration:r,registry:A,ident:n,otp:this.otp,jsonResponse:!0})}),h.reportInfo(0,"Package archive published")})).exitCode()}};jh.paths=[["npm","publish"]],jh.usage=it.Usage({category:"Npm-related commands",description:"publish the active workspace to the npm registry",details:'\n This command will pack the active workspace into a fresh archive and upload it to the npm registry.\n\n The package will by default be attached to the `latest` tag on the registry, but this behavior can be overriden by using the `--tag` option.\n\n Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka "private packages"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\n ',examples:[["Publish the active workspace","yarn npm publish"]]});Ke();_t();var XBe=tt(si());Ke();St();_t();var Gh=class extends ct{constructor(){super(...arguments);this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=fe.String({required:!1})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n;if(typeof this.package<"u")n=Y.parseIdent(this.package);else{if(!a)throw new er(o.cwd,this.context.cwd);if(!a.manifest.name)throw new ot(`Missing 'name' field in ${ue.fromPortablePath(J.join(a.cwd,Lr.manifest))}`);n=a.manifest.name}let u=await Cv(n,r),p={children:We.sortMap(Object.entries(u),([h])=>h).map(([h,C])=>({value:ye.tuple(ye.Type.RESOLUTION,{descriptor:Y.makeDescriptor(n,h),locator:Y.makeLocator(n,C)})}))};return $o.emitTree(p,{configuration:r,json:this.json,stdout:this.context.stdout})}};Gh.paths=[["npm","tag","list"]],Gh.usage=it.Usage({category:"Npm-related commands",description:"list all dist-tags of a package",details:` |
682 | This command will list all tags of a package from the npm registry. | 685 | This command will list all tags of a package from the npm registry. |
683 | 686 | ||
684 | If the package is not specified, Yarn will default to the current workspace. | 687 | If the package is not specified, Yarn will default to the current workspace. |
685 | `,examples:[["List all tags of package `my-pkg`","yarn npm tag list my-pkg"]]});async function Av(t,e){let r=`/-/package${an.getIdentUrl(t)}/dist-tags`;return an.get(r,{configuration:e,ident:t,jsonResponse:!0,customErrorMessage:an.customPackageError})}var Hh=class extends ct{constructor(){super(...arguments);this.package=fe.String();this.tag=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new er(o.cwd,this.context.cwd);let n=Y.parseDescriptor(this.package,!0),u=n.range;if(!LBe.default.valid(u))throw new ot(`The range ${ye.pretty(r,n.range,ye.Type.RANGE)} must be a valid semver version`);let A=Gn.getPublishRegistry(a.manifest,{configuration:r}),p=ye.pretty(r,n,ye.Type.IDENT),h=ye.pretty(r,u,ye.Type.RANGE),C=ye.pretty(r,this.tag,ye.Type.CODE);return(await Ct.start({configuration:r,stdout:this.context.stdout},async v=>{let b=await Av(n,r);Object.prototype.hasOwnProperty.call(b,this.tag)&&b[this.tag]===u&&v.reportWarning(0,`Tag ${C} is already set to version ${h}`);let E=`/-/package${an.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await an.put(E,u,{configuration:r,registry:A,ident:n,jsonRequest:!0,jsonResponse:!0}),v.reportInfo(0,`Tag ${C} added to version ${h} of package ${p}`)})).exitCode()}};Hh.paths=[["npm","tag","add"]],Hh.usage=it.Usage({category:"Npm-related commands",description:"add a tag for a specific version of a package",details:` | 688 | `,examples:[["List all tags of package `my-pkg`","yarn npm tag list my-pkg"]]});async function Cv(t,e){let r=`/-/package${an.getIdentUrl(t)}/dist-tags`;return an.get(r,{configuration:e,ident:t,jsonResponse:!0,customErrorMessage:an.customPackageError})}var Wh=class extends ct{constructor(){super(...arguments);this.package=fe.String();this.tag=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new er(o.cwd,this.context.cwd);let n=Y.parseDescriptor(this.package,!0),u=n.range;if(!XBe.default.valid(u))throw new ot(`The range ${ye.pretty(r,n.range,ye.Type.RANGE)} must be a valid semver version`);let A=Wn.getPublishRegistry(a.manifest,{configuration:r}),p=ye.pretty(r,n,ye.Type.IDENT),h=ye.pretty(r,u,ye.Type.RANGE),C=ye.pretty(r,this.tag,ye.Type.CODE);return(await Ct.start({configuration:r,stdout:this.context.stdout},async v=>{let b=await Cv(n,r);Object.prototype.hasOwnProperty.call(b,this.tag)&&b[this.tag]===u&&v.reportWarning(0,`Tag ${C} is already set to version ${h}`);let E=`/-/package${an.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await an.put(E,u,{configuration:r,registry:A,ident:n,jsonRequest:!0,jsonResponse:!0}),v.reportInfo(0,`Tag ${C} added to version ${h} of package ${p}`)})).exitCode()}};Wh.paths=[["npm","tag","add"]],Wh.usage=it.Usage({category:"Npm-related commands",description:"add a tag for a specific version of a package",details:` |
686 | This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten. | 689 | This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten. |
687 | `,examples:[["Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`","yarn npm tag add my-pkg@2.3.4-beta.4 beta"]]});Ke();_t();var qh=class extends ct{constructor(){super(...arguments);this.package=fe.String();this.tag=fe.String()}async execute(){if(this.tag==="latest")throw new ot("The 'latest' tag cannot be removed.");let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new er(o.cwd,this.context.cwd);let n=Y.parseIdent(this.package),u=Gn.getPublishRegistry(a.manifest,{configuration:r}),A=ye.pretty(r,this.tag,ye.Type.CODE),p=ye.pretty(r,n,ye.Type.IDENT),h=await Av(n,r);if(!Object.prototype.hasOwnProperty.call(h,this.tag))throw new ot(`${A} is not a tag of package ${p}`);return(await Ct.start({configuration:r,stdout:this.context.stdout},async w=>{let v=`/-/package${an.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await an.del(v,{configuration:r,registry:u,ident:n,jsonResponse:!0}),w.reportInfo(0,`Tag ${A} removed from package ${p}`)})).exitCode()}};qh.paths=[["npm","tag","remove"]],qh.usage=it.Usage({category:"Npm-related commands",description:"remove a tag from a package",details:` | 690 | `,examples:[["Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`","yarn npm tag add my-pkg@2.3.4-beta.4 beta"]]});Ke();_t();var Yh=class extends ct{constructor(){super(...arguments);this.package=fe.String();this.tag=fe.String()}async execute(){if(this.tag==="latest")throw new ot("The 'latest' tag cannot be removed.");let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new er(o.cwd,this.context.cwd);let n=Y.parseIdent(this.package),u=Wn.getPublishRegistry(a.manifest,{configuration:r}),A=ye.pretty(r,this.tag,ye.Type.CODE),p=ye.pretty(r,n,ye.Type.IDENT),h=await Cv(n,r);if(!Object.prototype.hasOwnProperty.call(h,this.tag))throw new ot(`${A} is not a tag of package ${p}`);return(await Ct.start({configuration:r,stdout:this.context.stdout},async w=>{let v=`/-/package${an.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await an.del(v,{configuration:r,registry:u,ident:n,jsonResponse:!0}),w.reportInfo(0,`Tag ${A} removed from package ${p}`)})).exitCode()}};Yh.paths=[["npm","tag","remove"]],Yh.usage=it.Usage({category:"Npm-related commands",description:"remove a tag from a package",details:` |
688 | This command will remove a tag from a package from the npm registry. | 691 | This command will remove a tag from a package from the npm registry. |
689 | `,examples:[["Remove the `beta` tag from package `my-pkg`","yarn npm tag remove my-pkg beta"]]});Ke();Ke();_t();var jh=class extends ct{constructor(){super(...arguments);this.scope=fe.String("-s,--scope",{description:"Print username for the registry configured for a given scope"});this.publish=fe.Boolean("--publish",!1,{description:"Print username for the publish registry"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),o;return this.scope&&this.publish?o=Gn.getScopeRegistry(this.scope,{configuration:r,type:Gn.RegistryType.PUBLISH_REGISTRY}):this.scope?o=Gn.getScopeRegistry(this.scope,{configuration:r}):this.publish?o=Gn.getPublishRegistry((await iC(r,this.context.cwd)).manifest,{configuration:r}):o=Gn.getDefaultRegistry({configuration:r}),(await Ct.start({configuration:r,stdout:this.context.stdout},async n=>{var A,p;let u;try{u=await an.get("/-/whoami",{configuration:r,registry:o,authType:an.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?Y.makeIdent(this.scope,""):void 0})}catch(h){if(((A=h.response)==null?void 0:A.statusCode)===401||((p=h.response)==null?void 0:p.statusCode)===403){n.reportError(41,"Authentication failed - your credentials may have expired");return}else throw h}n.reportInfo(0,u.username)})).exitCode()}};jh.paths=[["npm","whoami"]],jh.usage=it.Usage({category:"Npm-related commands",description:"display the name of the authenticated user",details:"\n Print the username associated with the current authentication settings to the standard output.\n\n When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\n\n When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\n ",examples:[["Print username for the default registry","yarn npm whoami"],["Print username for the registry on a given scope","yarn npm whoami --scope company"]]});var UBt={configuration:{npmPublishAccess:{description:"Default access of the published packages",type:"STRING",default:null},npmAuditExcludePackages:{description:"Array of glob patterns of packages to exclude from npm audit",type:"STRING",default:[],isArray:!0},npmAuditIgnoreAdvisories:{description:"Array of glob patterns of advisory IDs to exclude from npm audit",type:"STRING",default:[],isArray:!0}},commands:[Nh,Lh,Oh,Mh,Uh,Hh,_h,qh,jh]},_Bt=UBt;var B9={};Yt(B9,{PatchCommand:()=>Yh,PatchCommitCommand:()=>Wh,PatchFetcher:()=>dv,PatchResolver:()=>mv,default:()=>ivt,patchUtils:()=>Bm});Ke();Ke();bt();Oc();var Bm={};Yt(Bm,{applyPatchFile:()=>Kk,diffFolders:()=>I9,ensureUnpatchedDescriptor:()=>m9,ensureUnpatchedLocator:()=>Vk,extractPackageToDisk:()=>C9,extractPatchFlags:()=>jBe,isParentRequired:()=>E9,isPatchDescriptor:()=>Jk,isPatchLocator:()=>Gh,loadPatchFiles:()=>gv,makeDescriptor:()=>zk,makeLocator:()=>y9,makePatchHash:()=>w9,parseDescriptor:()=>pv,parseLocator:()=>hv,parsePatchFile:()=>fv,unpatchDescriptor:()=>tvt,unpatchLocator:()=>rvt});Ke();bt();Ke();bt();var HBt=/^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@.*/;function XC(t){return V.relative(wt.root,V.resolve(wt.root,Ae.toPortablePath(t)))}function qBt(t){let e=t.trim().match(HBt);if(!e)throw new Error(`Bad header line: '${t}'`);return{original:{start:Math.max(Number(e[1]),1),length:Number(e[3]||1)},patched:{start:Math.max(Number(e[4]),1),length:Number(e[6]||1)}}}var jBt=420,GBt=493;var OBe=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),WBt=t=>({header:qBt(t),parts:[]}),YBt={["@"]:"header",["-"]:"deletion",["+"]:"insertion",[" "]:"context",["\\"]:"pragma",undefined:"context"};function KBt(t){let e=[],r=OBe(),o="parsing header",a=null,n=null;function u(){a&&(n&&(a.parts.push(n),n=null),r.hunks.push(a),a=null)}function A(){u(),e.push(r),r=OBe()}for(let p=0;p<t.length;p++){let h=t[p];if(o==="parsing header")if(h.startsWith("@@"))o="parsing hunks",r.hunks=[],p-=1;else if(h.startsWith("diff --git ")){r&&r.diffLineFromPath&&A();let C=h.match(/^diff --git a\/(.*?) b\/(.*?)\s*$/);if(!C)throw new Error(`Bad diff line: ${h}`);r.diffLineFromPath=C[1],r.diffLineToPath=C[2]}else if(h.startsWith("old mode "))r.oldMode=h.slice(9).trim();else if(h.startsWith("new mode "))r.newMode=h.slice(9).trim();else if(h.startsWith("deleted file mode "))r.deletedFileMode=h.slice(18).trim();else if(h.startsWith("new file mode "))r.newFileMode=h.slice(14).trim();else if(h.startsWith("rename from "))r.renameFrom=h.slice(12).trim();else if(h.startsWith("rename to "))r.renameTo=h.slice(10).trim();else if(h.startsWith("index ")){let C=h.match(/(\w+)\.\.(\w+)/);if(!C)continue;r.beforeHash=C[1],r.afterHash=C[2]}else h.startsWith("semver exclusivity ")?r.semverExclusivity=h.slice(19).trim():h.startsWith("--- ")?r.fromPath=h.slice(6).trim():h.startsWith("+++ ")&&(r.toPath=h.slice(6).trim());else{let C=YBt[h[0]]||null;switch(C){case"header":u(),a=WBt(h);break;case null:o="parsing header",A(),p-=1;break;case"pragma":{if(!h.startsWith("\\ No newline at end of file"))throw new Error(`Unrecognized pragma in patch file: ${h}`);if(!n)throw new Error("Bad parser state: No newline at EOF pragma encountered without context");n.noNewlineAtEndOfFile=!0}break;case"context":case"deletion":case"insertion":{if(!a)throw new Error("Bad parser state: Hunk lines encountered before hunk header");n&&n.type!==C&&(a.parts.push(n),n=null),n||(n={type:C,lines:[],noNewlineAtEndOfFile:!1}),n.lines.push(h.slice(1))}break;default:Ye.assertNever(C);break}}}A();for(let{hunks:p}of e)if(p)for(let h of p)VBt(h);return e}function JBt(t){let e=[];for(let r of t){let{semverExclusivity:o,diffLineFromPath:a,diffLineToPath:n,oldMode:u,newMode:A,deletedFileMode:p,newFileMode:h,renameFrom:C,renameTo:w,beforeHash:v,afterHash:b,fromPath:E,toPath:R,hunks:L}=r,_=C?"rename":p?"file deletion":h?"file creation":L&&L.length>0?"patch":"mode change",J=null;switch(_){case"rename":{if(!C||!w)throw new Error("Bad parser state: rename from & to not given");e.push({type:"rename",semverExclusivity:o,fromPath:XC(C),toPath:XC(w)}),J=w}break;case"file deletion":{let re=a||E;if(!re)throw new Error("Bad parse state: no path given for file deletion");e.push({type:"file deletion",semverExclusivity:o,hunk:L&&L[0]||null,path:XC(re),mode:Yk(p),hash:v})}break;case"file creation":{let re=n||R;if(!re)throw new Error("Bad parse state: no path given for file creation");e.push({type:"file creation",semverExclusivity:o,hunk:L&&L[0]||null,path:XC(re),mode:Yk(h),hash:b})}break;case"patch":case"mode change":J=R||n;break;default:Ye.assertNever(_);break}J&&u&&A&&u!==A&&e.push({type:"mode change",semverExclusivity:o,path:XC(J),oldMode:Yk(u),newMode:Yk(A)}),J&&L&&L.length&&e.push({type:"patch",semverExclusivity:o,path:XC(J),hunks:L,beforeHash:v,afterHash:b})}if(e.length===0)throw new Error("Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string");return e}function Yk(t){let e=parseInt(t,8)&511;if(e!==jBt&&e!==GBt)throw new Error(`Unexpected file mode string: ${t}`);return e}function fv(t){let e=t.split(/\n/g);return e[e.length-1]===""&&e.pop(),JBt(KBt(e))}function VBt(t){let e=0,r=0;for(let{type:o,lines:a}of t.parts)switch(o){case"context":r+=a.length,e+=a.length;break;case"deletion":e+=a.length;break;case"insertion":r+=a.length;break;default:Ye.assertNever(o);break}if(e!==t.header.original.length||r!==t.header.patched.length){let o=a=>a<0?a:`+${a}`;throw new Error(`hunk header integrity check failed (expected @@ ${o(t.header.original.length)} ${o(t.header.patched.length)} @@, got @@ ${o(e)} ${o(r)} @@)`)}}Ke();bt();var ZC=class extends Error{constructor(r,o){super(`Cannot apply hunk #${r+1}`);this.hunk=o}};async function $C(t,e,r){let o=await t.lstatPromise(e),a=await r();typeof a<"u"&&(e=a),await t.lutimesPromise(e,o.atime,o.mtime)}async function Kk(t,{baseFs:e=new xn,dryRun:r=!1,version:o=null}={}){for(let a of t)if(!(a.semverExclusivity!==null&&o!==null&&!Tr.satisfiesWithPrereleases(o,a.semverExclusivity)))switch(a.type){case"file deletion":if(r){if(!e.existsSync(a.path))throw new Error(`Trying to delete a file that doesn't exist: ${a.path}`)}else await $C(e,V.dirname(a.path),async()=>{await e.unlinkPromise(a.path)});break;case"rename":if(r){if(!e.existsSync(a.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${a.fromPath}`)}else await $C(e,V.dirname(a.fromPath),async()=>{await $C(e,V.dirname(a.toPath),async()=>{await $C(e,a.fromPath,async()=>(await e.movePromise(a.fromPath,a.toPath),a.toPath))})});break;case"file creation":if(r){if(e.existsSync(a.path))throw new Error(`Trying to create a file that already exists: ${a.path}`)}else{let n=a.hunk?a.hunk.parts[0].lines.join(` | 692 | `,examples:[["Remove the `beta` tag from package `my-pkg`","yarn npm tag remove my-pkg beta"]]});Ke();Ke();_t();var Kh=class extends ct{constructor(){super(...arguments);this.scope=fe.String("-s,--scope",{description:"Print username for the registry configured for a given scope"});this.publish=fe.Boolean("--publish",!1,{description:"Print username for the publish registry"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),o;return this.scope&&this.publish?o=Wn.getScopeRegistry(this.scope,{configuration:r,type:Wn.RegistryType.PUBLISH_REGISTRY}):this.scope?o=Wn.getScopeRegistry(this.scope,{configuration:r}):this.publish?o=Wn.getPublishRegistry((await cC(r,this.context.cwd)).manifest,{configuration:r}):o=Wn.getDefaultRegistry({configuration:r}),(await Ct.start({configuration:r,stdout:this.context.stdout},async n=>{var A,p;let u;try{u=await an.get("/-/whoami",{configuration:r,registry:o,authType:an.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?Y.makeIdent(this.scope,""):void 0})}catch(h){if(((A=h.response)==null?void 0:A.statusCode)===401||((p=h.response)==null?void 0:p.statusCode)===403){n.reportError(41,"Authentication failed - your credentials may have expired");return}else throw h}n.reportInfo(0,u.username)})).exitCode()}};Kh.paths=[["npm","whoami"]],Kh.usage=it.Usage({category:"Npm-related commands",description:"display the name of the authenticated user",details:"\n Print the username associated with the current authentication settings to the standard output.\n\n When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\n\n When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\n ",examples:[["Print username for the default registry","yarn npm whoami"],["Print username for the registry on a given scope","yarn npm whoami --scope company"]]});var ivt={configuration:{npmPublishAccess:{description:"Default access of the published packages",type:"STRING",default:null},npmAuditExcludePackages:{description:"Array of glob patterns of packages to exclude from npm audit",type:"STRING",default:[],isArray:!0},npmAuditIgnoreAdvisories:{description:"Array of glob patterns of advisory IDs to exclude from npm audit",type:"STRING",default:[],isArray:!0}},commands:[Uh,_h,Hh,qh,jh,Wh,Gh,Yh,Kh]},svt=ivt;var kG={};Yt(kG,{PatchCommand:()=>zh,PatchCommitCommand:()=>Jh,PatchFetcher:()=>Dv,PatchResolver:()=>Sv,default:()=>Bvt,patchUtils:()=>Pm});Ke();Ke();St();Hc();var Pm={};Yt(Pm,{applyPatchFile:()=>Zk,diffFolders:()=>bG,ensureUnpatchedDescriptor:()=>DG,ensureUnpatchedLocator:()=>eF,extractPackageToDisk:()=>xG,extractPatchFlags:()=>ive,isParentRequired:()=>PG,isPatchDescriptor:()=>$k,isPatchLocator:()=>Vh,loadPatchFiles:()=>vv,makeDescriptor:()=>tF,makeLocator:()=>SG,makePatchHash:()=>QG,parseDescriptor:()=>wv,parseLocator:()=>Bv,parsePatchFile:()=>Iv,unpatchDescriptor:()=>Cvt,unpatchLocator:()=>Ivt});Ke();St();Ke();St();var ovt=/^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@.*/;function tI(t){return J.relative(wt.root,J.resolve(wt.root,ue.toPortablePath(t)))}function avt(t){let e=t.trim().match(ovt);if(!e)throw new Error(`Bad header line: '${t}'`);return{original:{start:Math.max(Number(e[1]),1),length:Number(e[3]||1)},patched:{start:Math.max(Number(e[4]),1),length:Number(e[6]||1)}}}var lvt=420,cvt=493;var ZBe=()=>({semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}),uvt=t=>({header:avt(t),parts:[]}),Avt={["@"]:"header",["-"]:"deletion",["+"]:"insertion",[" "]:"context",["\\"]:"pragma",undefined:"context"};function fvt(t){let e=[],r=ZBe(),o="parsing header",a=null,n=null;function u(){a&&(n&&(a.parts.push(n),n=null),r.hunks.push(a),a=null)}function A(){u(),e.push(r),r=ZBe()}for(let p=0;p<t.length;p++){let h=t[p];if(o==="parsing header")if(h.startsWith("@@"))o="parsing hunks",r.hunks=[],p-=1;else if(h.startsWith("diff --git ")){r&&r.diffLineFromPath&&A();let C=h.match(/^diff --git a\/(.*?) b\/(.*?)\s*$/);if(!C)throw new Error(`Bad diff line: ${h}`);r.diffLineFromPath=C[1],r.diffLineToPath=C[2]}else if(h.startsWith("old mode "))r.oldMode=h.slice(9).trim();else if(h.startsWith("new mode "))r.newMode=h.slice(9).trim();else if(h.startsWith("deleted file mode "))r.deletedFileMode=h.slice(18).trim();else if(h.startsWith("new file mode "))r.newFileMode=h.slice(14).trim();else if(h.startsWith("rename from "))r.renameFrom=h.slice(12).trim();else if(h.startsWith("rename to "))r.renameTo=h.slice(10).trim();else if(h.startsWith("index ")){let C=h.match(/(\w+)\.\.(\w+)/);if(!C)continue;r.beforeHash=C[1],r.afterHash=C[2]}else h.startsWith("semver exclusivity ")?r.semverExclusivity=h.slice(19).trim():h.startsWith("--- ")?r.fromPath=h.slice(6).trim():h.startsWith("+++ ")&&(r.toPath=h.slice(6).trim());else{let C=Avt[h[0]]||null;switch(C){case"header":u(),a=uvt(h);break;case null:o="parsing header",A(),p-=1;break;case"pragma":{if(!h.startsWith("\\ No newline at end of file"))throw new Error(`Unrecognized pragma in patch file: ${h}`);if(!n)throw new Error("Bad parser state: No newline at EOF pragma encountered without context");n.noNewlineAtEndOfFile=!0}break;case"context":case"deletion":case"insertion":{if(!a)throw new Error("Bad parser state: Hunk lines encountered before hunk header");n&&n.type!==C&&(a.parts.push(n),n=null),n||(n={type:C,lines:[],noNewlineAtEndOfFile:!1}),n.lines.push(h.slice(1))}break;default:We.assertNever(C);break}}}A();for(let{hunks:p}of e)if(p)for(let h of p)hvt(h);return e}function pvt(t){let e=[];for(let r of t){let{semverExclusivity:o,diffLineFromPath:a,diffLineToPath:n,oldMode:u,newMode:A,deletedFileMode:p,newFileMode:h,renameFrom:C,renameTo:w,beforeHash:v,afterHash:b,fromPath:E,toPath:R,hunks:L}=r,_=C?"rename":p?"file deletion":h?"file creation":L&&L.length>0?"patch":"mode change",V=null;switch(_){case"rename":{if(!C||!w)throw new Error("Bad parser state: rename from & to not given");e.push({type:"rename",semverExclusivity:o,fromPath:tI(C),toPath:tI(w)}),V=w}break;case"file deletion":{let re=a||E;if(!re)throw new Error("Bad parse state: no path given for file deletion");e.push({type:"file deletion",semverExclusivity:o,hunk:L&&L[0]||null,path:tI(re),mode:Xk(p),hash:v})}break;case"file creation":{let re=n||R;if(!re)throw new Error("Bad parse state: no path given for file creation");e.push({type:"file creation",semverExclusivity:o,hunk:L&&L[0]||null,path:tI(re),mode:Xk(h),hash:b})}break;case"patch":case"mode change":V=R||n;break;default:We.assertNever(_);break}V&&u&&A&&u!==A&&e.push({type:"mode change",semverExclusivity:o,path:tI(V),oldMode:Xk(u),newMode:Xk(A)}),V&&L&&L.length&&e.push({type:"patch",semverExclusivity:o,path:tI(V),hunks:L,beforeHash:v,afterHash:b})}if(e.length===0)throw new Error("Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string");return e}function Xk(t){let e=parseInt(t,8)&511;if(e!==lvt&&e!==cvt)throw new Error(`Unexpected file mode string: ${t}`);return e}function Iv(t){let e=t.split(/\n/g);return e[e.length-1]===""&&e.pop(),pvt(fvt(e))}function hvt(t){let e=0,r=0;for(let{type:o,lines:a}of t.parts)switch(o){case"context":r+=a.length,e+=a.length;break;case"deletion":e+=a.length;break;case"insertion":r+=a.length;break;default:We.assertNever(o);break}if(e!==t.header.original.length||r!==t.header.patched.length){let o=a=>a<0?a:`+${a}`;throw new Error(`hunk header integrity check failed (expected @@ ${o(t.header.original.length)} ${o(t.header.patched.length)} @@, got @@ ${o(e)} ${o(r)} @@)`)}}Ke();St();var rI=class extends Error{constructor(r,o){super(`Cannot apply hunk #${r+1}`);this.hunk=o}};async function nI(t,e,r){let o=await t.lstatPromise(e),a=await r();typeof a<"u"&&(e=a),await t.lutimesPromise(e,o.atime,o.mtime)}async function Zk(t,{baseFs:e=new xn,dryRun:r=!1,version:o=null}={}){for(let a of t)if(!(a.semverExclusivity!==null&&o!==null&&!Tr.satisfiesWithPrereleases(o,a.semverExclusivity)))switch(a.type){case"file deletion":if(r){if(!e.existsSync(a.path))throw new Error(`Trying to delete a file that doesn't exist: ${a.path}`)}else await nI(e,J.dirname(a.path),async()=>{await e.unlinkPromise(a.path)});break;case"rename":if(r){if(!e.existsSync(a.fromPath))throw new Error(`Trying to move a file that doesn't exist: ${a.fromPath}`)}else await nI(e,J.dirname(a.fromPath),async()=>{await nI(e,J.dirname(a.toPath),async()=>{await nI(e,a.fromPath,async()=>(await e.movePromise(a.fromPath,a.toPath),a.toPath))})});break;case"file creation":if(r){if(e.existsSync(a.path))throw new Error(`Trying to create a file that already exists: ${a.path}`)}else{let n=a.hunk?a.hunk.parts[0].lines.join(` |
690 | `)+(a.hunk.parts[0].noNewlineAtEndOfFile?"":` | 693 | `)+(a.hunk.parts[0].noNewlineAtEndOfFile?"":` |
691 | `):"";await e.mkdirpPromise(V.dirname(a.path),{chmod:493,utimes:[Ii.SAFE_TIME,Ii.SAFE_TIME]}),await e.writeFilePromise(a.path,n,{mode:a.mode}),await e.utimesPromise(a.path,Ii.SAFE_TIME,Ii.SAFE_TIME)}break;case"patch":await $C(e,a.path,async()=>{await ZBt(a,{baseFs:e,dryRun:r})});break;case"mode change":{let u=(await e.statPromise(a.path)).mode;if(MBe(a.newMode)!==MBe(u))continue;await $C(e,a.path,async()=>{await e.chmodPromise(a.path,a.newMode)})}break;default:Ye.assertNever(a);break}}function MBe(t){return(t&64)>0}function UBe(t){return t.replace(/\s+$/,"")}function XBt(t,e){return UBe(t)===UBe(e)}async function ZBt({hunks:t,path:e},{baseFs:r,dryRun:o=!1}){let a=await r.statSync(e).mode,u=(await r.readFileSync(e,"utf8")).split(/\n/),A=[],p=0,h=0;for(let w of t){let v=Math.max(h,w.header.patched.start+p),b=Math.max(0,v-h),E=Math.max(0,u.length-v-w.header.original.length),R=Math.max(b,E),L=0,_=0,J=null;for(;L<=R;){if(L<=b&&(_=v-L,J=_Be(w,u,_),J!==null)){L=-L;break}if(L<=E&&(_=v+L,J=_Be(w,u,_),J!==null))break;L+=1}if(J===null)throw new ZC(t.indexOf(w),w);A.push(J),p+=L,h=_+w.header.original.length}if(o)return;let C=0;for(let w of A)for(let v of w)switch(v.type){case"splice":{let b=v.index+C;u.splice(b,v.numToDelete,...v.linesToInsert),C+=v.linesToInsert.length-v.numToDelete}break;case"pop":u.pop();break;case"push":u.push(v.line);break;default:Ye.assertNever(v);break}await r.writeFilePromise(e,u.join(` | 694 | `):"";await e.mkdirpPromise(J.dirname(a.path),{chmod:493,utimes:[Ii.SAFE_TIME,Ii.SAFE_TIME]}),await e.writeFilePromise(a.path,n,{mode:a.mode}),await e.utimesPromise(a.path,Ii.SAFE_TIME,Ii.SAFE_TIME)}break;case"patch":await nI(e,a.path,async()=>{await mvt(a,{baseFs:e,dryRun:r})});break;case"mode change":{let u=(await e.statPromise(a.path)).mode;if($Be(a.newMode)!==$Be(u))continue;await nI(e,a.path,async()=>{await e.chmodPromise(a.path,a.newMode)})}break;default:We.assertNever(a);break}}function $Be(t){return(t&64)>0}function eve(t){return t.replace(/\s+$/,"")}function dvt(t,e){return eve(t)===eve(e)}async function mvt({hunks:t,path:e},{baseFs:r,dryRun:o=!1}){let a=await r.statSync(e).mode,u=(await r.readFileSync(e,"utf8")).split(/\n/),A=[],p=0,h=0;for(let w of t){let v=Math.max(h,w.header.patched.start+p),b=Math.max(0,v-h),E=Math.max(0,u.length-v-w.header.original.length),R=Math.max(b,E),L=0,_=0,V=null;for(;L<=R;){if(L<=b&&(_=v-L,V=tve(w,u,_),V!==null)){L=-L;break}if(L<=E&&(_=v+L,V=tve(w,u,_),V!==null))break;L+=1}if(V===null)throw new rI(t.indexOf(w),w);A.push(V),p+=L,h=_+w.header.original.length}if(o)return;let C=0;for(let w of A)for(let v of w)switch(v.type){case"splice":{let b=v.index+C;u.splice(b,v.numToDelete,...v.linesToInsert),C+=v.linesToInsert.length-v.numToDelete}break;case"pop":u.pop();break;case"push":u.push(v.line);break;default:We.assertNever(v);break}await r.writeFilePromise(e,u.join(` |
692 | `),{mode:a})}function _Be(t,e,r){let o=[];for(let a of t.parts)switch(a.type){case"context":case"deletion":{for(let n of a.lines){let u=e[r];if(u==null||!XBt(u,n))return null;r+=1}a.type==="deletion"&&(o.push({type:"splice",index:r-a.lines.length,numToDelete:a.lines.length,linesToInsert:[]}),a.noNewlineAtEndOfFile&&o.push({type:"push",line:""}))}break;case"insertion":o.push({type:"splice",index:r,numToDelete:0,linesToInsert:a.lines}),a.noNewlineAtEndOfFile&&o.push({type:"pop"});break;default:Ye.assertNever(a.type);break}return o}var evt=/^builtin<([^>]+)>$/;function eI(t,e){let{protocol:r,source:o,selector:a,params:n}=Y.parseRange(t);if(r!=="patch:")throw new Error("Invalid patch range");if(o===null)throw new Error("Patch locators must explicitly define their source");let u=a?a.split(/&/).map(C=>Ae.toPortablePath(C)):[],A=n&&typeof n.locator=="string"?Y.parseLocator(n.locator):null,p=n&&typeof n.version=="string"?n.version:null,h=e(o);return{parentLocator:A,sourceItem:h,patchPaths:u,sourceVersion:p}}function Jk(t){return t.range.startsWith("patch:")}function Gh(t){return t.reference.startsWith("patch:")}function pv(t){let{sourceItem:e,...r}=eI(t.range,Y.parseDescriptor);return{...r,sourceDescriptor:e}}function hv(t){let{sourceItem:e,...r}=eI(t.reference,Y.parseLocator);return{...r,sourceLocator:e}}function tvt(t){let{sourceItem:e}=eI(t.range,Y.parseDescriptor);return e}function rvt(t){let{sourceItem:e}=eI(t.reference,Y.parseLocator);return e}function m9(t){if(!Jk(t))return t;let{sourceItem:e}=eI(t.range,Y.parseDescriptor);return e}function Vk(t){if(!Gh(t))return t;let{sourceItem:e}=eI(t.reference,Y.parseLocator);return e}function HBe({parentLocator:t,sourceItem:e,patchPaths:r,sourceVersion:o,patchHash:a},n){let u=t!==null?{locator:Y.stringifyLocator(t)}:{},A=typeof o<"u"?{version:o}:{},p=typeof a<"u"?{hash:a}:{};return Y.makeRange({protocol:"patch:",source:n(e),selector:r.join("&"),params:{...A,...p,...u}})}function zk(t,{parentLocator:e,sourceDescriptor:r,patchPaths:o}){return Y.makeDescriptor(t,HBe({parentLocator:e,sourceItem:r,patchPaths:o},Y.stringifyDescriptor))}function y9(t,{parentLocator:e,sourcePackage:r,patchPaths:o,patchHash:a}){return Y.makeLocator(t,HBe({parentLocator:e,sourceItem:r,sourceVersion:r.version,patchPaths:o,patchHash:a},Y.stringifyLocator))}function qBe({onAbsolute:t,onRelative:e,onProject:r,onBuiltin:o},a){let n=a.lastIndexOf("!");n!==-1&&(a=a.slice(n+1));let u=a.match(evt);return u!==null?o(u[1]):a.startsWith("~/")?r(a.slice(2)):V.isAbsolute(a)?t(a):e(a)}function jBe(t){let e=t.lastIndexOf("!");return{optional:(e!==-1?new Set(t.slice(0,e).split(/!/)):new Set).has("optional")}}function E9(t){return qBe({onAbsolute:()=>!1,onRelative:()=>!0,onProject:()=>!1,onBuiltin:()=>!1},t)}async function gv(t,e,r){let o=t!==null?await r.fetcher.fetch(t,r):null,a=o&&o.localPath?{packageFs:new An(wt.root),prefixPath:V.relative(wt.root,o.localPath)}:o;o&&o!==a&&o.releaseFs&&o.releaseFs();let n=await Ye.releaseAfterUseAsync(async()=>await Promise.all(e.map(async u=>{let A=jBe(u),p=await qBe({onAbsolute:async h=>await ae.readFilePromise(h,"utf8"),onRelative:async h=>{if(a===null)throw new Error("Assertion failed: The parent locator should have been fetched");return await a.packageFs.readFilePromise(V.join(a.prefixPath,h),"utf8")},onProject:async h=>await ae.readFilePromise(V.join(r.project.cwd,h),"utf8"),onBuiltin:async h=>await r.project.configuration.firstHook(C=>C.getBuiltinPatch,r.project,h)},u);return{...A,source:p}})));for(let u of n)typeof u.source=="string"&&(u.source=u.source.replace(/\r\n?/g,` | 695 | `),{mode:a})}function tve(t,e,r){let o=[];for(let a of t.parts)switch(a.type){case"context":case"deletion":{for(let n of a.lines){let u=e[r];if(u==null||!dvt(u,n))return null;r+=1}a.type==="deletion"&&(o.push({type:"splice",index:r-a.lines.length,numToDelete:a.lines.length,linesToInsert:[]}),a.noNewlineAtEndOfFile&&o.push({type:"push",line:""}))}break;case"insertion":o.push({type:"splice",index:r,numToDelete:0,linesToInsert:a.lines}),a.noNewlineAtEndOfFile&&o.push({type:"pop"});break;default:We.assertNever(a.type);break}return o}var Evt=/^builtin<([^>]+)>$/;function iI(t,e){let{protocol:r,source:o,selector:a,params:n}=Y.parseRange(t);if(r!=="patch:")throw new Error("Invalid patch range");if(o===null)throw new Error("Patch locators must explicitly define their source");let u=a?a.split(/&/).map(C=>ue.toPortablePath(C)):[],A=n&&typeof n.locator=="string"?Y.parseLocator(n.locator):null,p=n&&typeof n.version=="string"?n.version:null,h=e(o);return{parentLocator:A,sourceItem:h,patchPaths:u,sourceVersion:p}}function $k(t){return t.range.startsWith("patch:")}function Vh(t){return t.reference.startsWith("patch:")}function wv(t){let{sourceItem:e,...r}=iI(t.range,Y.parseDescriptor);return{...r,sourceDescriptor:e}}function Bv(t){let{sourceItem:e,...r}=iI(t.reference,Y.parseLocator);return{...r,sourceLocator:e}}function Cvt(t){let{sourceItem:e}=iI(t.range,Y.parseDescriptor);return e}function Ivt(t){let{sourceItem:e}=iI(t.reference,Y.parseLocator);return e}function DG(t){if(!$k(t))return t;let{sourceItem:e}=iI(t.range,Y.parseDescriptor);return e}function eF(t){if(!Vh(t))return t;let{sourceItem:e}=iI(t.reference,Y.parseLocator);return e}function rve({parentLocator:t,sourceItem:e,patchPaths:r,sourceVersion:o,patchHash:a},n){let u=t!==null?{locator:Y.stringifyLocator(t)}:{},A=typeof o<"u"?{version:o}:{},p=typeof a<"u"?{hash:a}:{};return Y.makeRange({protocol:"patch:",source:n(e),selector:r.join("&"),params:{...A,...p,...u}})}function tF(t,{parentLocator:e,sourceDescriptor:r,patchPaths:o}){return Y.makeDescriptor(t,rve({parentLocator:e,sourceItem:r,patchPaths:o},Y.stringifyDescriptor))}function SG(t,{parentLocator:e,sourcePackage:r,patchPaths:o,patchHash:a}){return Y.makeLocator(t,rve({parentLocator:e,sourceItem:r,sourceVersion:r.version,patchPaths:o,patchHash:a},Y.stringifyLocator))}function nve({onAbsolute:t,onRelative:e,onProject:r,onBuiltin:o},a){let n=a.lastIndexOf("!");n!==-1&&(a=a.slice(n+1));let u=a.match(Evt);return u!==null?o(u[1]):a.startsWith("~/")?r(a.slice(2)):J.isAbsolute(a)?t(a):e(a)}function ive(t){let e=t.lastIndexOf("!");return{optional:(e!==-1?new Set(t.slice(0,e).split(/!/)):new Set).has("optional")}}function PG(t){return nve({onAbsolute:()=>!1,onRelative:()=>!0,onProject:()=>!1,onBuiltin:()=>!1},t)}async function vv(t,e,r){let o=t!==null?await r.fetcher.fetch(t,r):null,a=o&&o.localPath?{packageFs:new An(wt.root),prefixPath:J.relative(wt.root,o.localPath)}:o;o&&o!==a&&o.releaseFs&&o.releaseFs();let n=await We.releaseAfterUseAsync(async()=>await Promise.all(e.map(async u=>{let A=ive(u),p=await nve({onAbsolute:async h=>await oe.readFilePromise(h,"utf8"),onRelative:async h=>{if(a===null)throw new Error("Assertion failed: The parent locator should have been fetched");return await a.packageFs.readFilePromise(J.join(a.prefixPath,h),"utf8")},onProject:async h=>await oe.readFilePromise(J.join(r.project.cwd,h),"utf8"),onBuiltin:async h=>await r.project.configuration.firstHook(C=>C.getBuiltinPatch,r.project,h)},u);return{...A,source:p}})));for(let u of n)typeof u.source=="string"&&(u.source=u.source.replace(/\r\n?/g,` |
693 | `));return n}async function C9(t,{cache:e,project:r}){let o=r.storedPackages.get(t.locatorHash);if(typeof o>"u")throw new Error("Assertion failed: Expected the package to be registered");let a=Vk(t),n=r.storedChecksums,u=new xi,A=await ae.mktempPromise(),p=V.join(A,"source"),h=V.join(A,"user"),C=V.join(A,".yarn-patch.json"),w=r.configuration.makeFetcher(),v=[];try{let b,E;if(t.locatorHash===a.locatorHash){let R=await w.fetch(t,{cache:e,project:r,fetcher:w,checksums:n,report:u});v.push(()=>{var L;return(L=R.releaseFs)==null?void 0:L.call(R)}),b=R,E=R}else b=await w.fetch(t,{cache:e,project:r,fetcher:w,checksums:n,report:u}),v.push(()=>{var R;return(R=b.releaseFs)==null?void 0:R.call(b)}),E=await w.fetch(t,{cache:e,project:r,fetcher:w,checksums:n,report:u}),v.push(()=>{var R;return(R=E.releaseFs)==null?void 0:R.call(E)});await Promise.all([ae.copyPromise(p,b.prefixPath,{baseFs:b.packageFs}),ae.copyPromise(h,E.prefixPath,{baseFs:E.packageFs}),ae.writeJsonPromise(C,{locator:Y.stringifyLocator(t),version:o.version})])}finally{for(let b of v)b()}return ae.detachTemp(A),h}async function I9(t,e){let r=Ae.fromPortablePath(t).replace(/\\/g,"/"),o=Ae.fromPortablePath(e).replace(/\\/g,"/"),{stdout:a,stderr:n}=await Mr.execvp("git",["-c","core.safecrlf=false","diff","--src-prefix=a/","--dst-prefix=b/","--ignore-cr-at-eol","--full-index","--no-index","--no-renames","--text",r,o],{cwd:Ae.toPortablePath(process.cwd()),env:{...process.env,GIT_CONFIG_NOSYSTEM:"1",HOME:"",XDG_CONFIG_HOME:"",USERPROFILE:""}});if(n.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH. | 696 | `));return n}async function xG(t,{cache:e,project:r}){let o=r.storedPackages.get(t.locatorHash);if(typeof o>"u")throw new Error("Assertion failed: Expected the package to be registered");let a=eF(t),n=r.storedChecksums,u=new xi,A=await oe.mktempPromise(),p=J.join(A,"source"),h=J.join(A,"user"),C=J.join(A,".yarn-patch.json"),w=r.configuration.makeFetcher(),v=[];try{let b,E;if(t.locatorHash===a.locatorHash){let R=await w.fetch(t,{cache:e,project:r,fetcher:w,checksums:n,report:u});v.push(()=>{var L;return(L=R.releaseFs)==null?void 0:L.call(R)}),b=R,E=R}else b=await w.fetch(t,{cache:e,project:r,fetcher:w,checksums:n,report:u}),v.push(()=>{var R;return(R=b.releaseFs)==null?void 0:R.call(b)}),E=await w.fetch(t,{cache:e,project:r,fetcher:w,checksums:n,report:u}),v.push(()=>{var R;return(R=E.releaseFs)==null?void 0:R.call(E)});await Promise.all([oe.copyPromise(p,b.prefixPath,{baseFs:b.packageFs}),oe.copyPromise(h,E.prefixPath,{baseFs:E.packageFs}),oe.writeJsonPromise(C,{locator:Y.stringifyLocator(t),version:o.version})])}finally{for(let b of v)b()}return oe.detachTemp(A),h}async function bG(t,e){let r=ue.fromPortablePath(t).replace(/\\/g,"/"),o=ue.fromPortablePath(e).replace(/\\/g,"/"),{stdout:a,stderr:n}=await Mr.execvp("git",["-c","core.safecrlf=false","diff","--src-prefix=a/","--dst-prefix=b/","--ignore-cr-at-eol","--full-index","--no-index","--no-renames","--text",r,o],{cwd:ue.toPortablePath(process.cwd()),env:{...process.env,GIT_CONFIG_NOSYSTEM:"1",HOME:"",XDG_CONFIG_HOME:"",USERPROFILE:""}});if(n.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH. |
694 | The following error was reported by 'git': | 697 | The following error was reported by 'git': |
695 | ${n}`);let u=r.startsWith("/")?A=>A.slice(1):A=>A;return a.replace(new RegExp(`(a|b)(${Ye.escapeRegExp(`/${u(r)}/`)})`,"g"),"$1/").replace(new RegExp(`(a|b)${Ye.escapeRegExp(`/${u(o)}/`)}`,"g"),"$1/").replace(new RegExp(Ye.escapeRegExp(`${r}/`),"g"),"").replace(new RegExp(Ye.escapeRegExp(`${o}/`),"g"),"")}function w9(t,e){let r=[];for(let{source:o}of t){if(o===null)continue;let a=fv(o);for(let n of a){let{semverExclusivity:u,...A}=n;u!==null&&e!==null&&!Tr.satisfiesWithPrereleases(e,u)||r.push(JSON.stringify(A))}}return bn.makeHash(`${3}`,...r).slice(0,6)}Ke();function GBe(t,{configuration:e,report:r}){for(let o of t.parts)for(let a of o.lines)switch(o.type){case"context":r.reportInfo(null,` ${ye.pretty(e,a,"grey")}`);break;case"deletion":r.reportError(28,`- ${ye.pretty(e,a,ye.Type.REMOVED)}`);break;case"insertion":r.reportError(28,`+ ${ye.pretty(e,a,ye.Type.ADDED)}`);break;default:Ye.assertNever(o.type)}}var dv=class{supports(e,r){return!!Gh(e)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:u}}async patchPackage(e,r){let{parentLocator:o,sourceLocator:a,sourceVersion:n,patchPaths:u}=hv(e),A=await gv(o,u,r),p=await ae.mktempPromise(),h=V.join(p,"current.zip"),C=await r.fetcher.fetch(a,r),w=Y.getIdentVendorPath(e),v=new os(h,{create:!0,level:r.project.configuration.get("compressionLevel")});await Ye.releaseAfterUseAsync(async()=>{await v.copyPromise(w,C.prefixPath,{baseFs:C.packageFs,stableSort:!0})},C.releaseFs),v.saveAndClose();for(let{source:b,optional:E}of A){if(b===null)continue;let R=new os(h,{level:r.project.configuration.get("compressionLevel")}),L=new An(V.resolve(wt.root,w),{baseFs:R});try{await Kk(fv(b),{baseFs:L,version:n})}catch(_){if(!(_ instanceof ZC))throw _;let J=r.project.configuration.get("enableInlineHunks"),re=!J&&!E?" (set enableInlineHunks for details)":"",oe=`${Y.prettyLocator(r.project.configuration,e)}: ${_.message}${re}`,pe=he=>{!J||GBe(_.hunk,{configuration:r.project.configuration,report:he})};if(R.discardAndClose(),E){r.report.reportWarningOnce(66,oe,{reportExtra:pe});continue}else throw new Jt(66,oe,pe)}R.saveAndClose()}return new os(h,{level:r.project.configuration.get("compressionLevel")})}};Ke();var mv=class{supportsDescriptor(e,r){return!!Jk(e)}supportsLocator(e,r){return!!Gh(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){let{patchPaths:a}=pv(e);return a.every(n=>!E9(n))?e:Y.bindDescriptor(e,{locator:Y.stringifyLocator(r)})}getResolutionDependencies(e,r){let{sourceDescriptor:o}=pv(e);return{sourceDescriptor:r.project.configuration.normalizeDependency(o)}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{parentLocator:a,patchPaths:n}=pv(e),u=await gv(a,n,o.fetchOptions),A=r.sourceDescriptor;if(typeof A>"u")throw new Error("Assertion failed: The dependency should have been resolved");let p=w9(u,A.version);return[y9(e,{parentLocator:a,sourcePackage:A,patchPaths:n,patchHash:p})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let{sourceLocator:o}=hv(e);return{...await r.resolver.resolve(o,r),...e}}};Ke();bt();_t();var Wh=class extends ct{constructor(){super(...arguments);this.save=fe.Boolean("-s,--save",!1,{description:"Add the patch to your resolution entries"});this.patchFolder=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new er(o.cwd,this.context.cwd);await o.restoreInstallState();let n=V.resolve(this.context.cwd,Ae.toPortablePath(this.patchFolder)),u=V.join(n,"../source"),A=V.join(n,"../.yarn-patch.json");if(!ae.existsSync(u))throw new ot("The argument folder didn't get created by 'yarn patch'");let p=await I9(u,n),h=await ae.readJsonPromise(A),C=Y.parseLocator(h.locator,!0);if(!o.storedPackages.has(C.locatorHash))throw new ot("No package found in the project for the given locator");if(!this.save){this.context.stdout.write(p);return}let w=r.get("patchFolder"),v=V.join(w,`${Y.slugifyLocator(C)}.patch`);await ae.mkdirPromise(w,{recursive:!0}),await ae.writeFilePromise(v,p);let b=[],E=new Map;for(let R of o.storedPackages.values()){if(Y.isVirtualLocator(R))continue;let L=R.dependencies.get(C.identHash);if(!L)continue;let _=Y.ensureDevirtualizedDescriptor(L),J=m9(_),re=o.storedResolutions.get(J.descriptorHash);if(!re)throw new Error("Assertion failed: Expected the resolution to have been registered");if(!o.storedPackages.get(re))throw new Error("Assertion failed: Expected the package to have been registered");let pe=o.tryWorkspaceByLocator(R);if(pe)b.push(pe);else{let he=o.originalPackages.get(R.locatorHash);if(!he)throw new Error("Assertion failed: Expected the original package to have been registered");let ve=he.dependencies.get(L.identHash);if(!ve)throw new Error("Assertion failed: Expected the original dependency to have been registered");E.set(ve.descriptorHash,ve)}}for(let R of b)for(let L of Nt.hardDependencies){let _=R.manifest[L].get(C.identHash);if(!_)continue;let J=zk(_,{parentLocator:null,sourceDescriptor:Y.convertLocatorToDescriptor(C),patchPaths:[V.join(Lr.home,V.relative(o.cwd,v))]});R.manifest[L].set(_.identHash,J)}for(let R of E.values()){let L=zk(R,{parentLocator:null,sourceDescriptor:Y.convertLocatorToDescriptor(C),patchPaths:[V.join(Lr.home,V.relative(o.cwd,v))]});o.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:Y.stringifyIdent(L),description:R.range}},reference:L.range})}await o.persist()}};Wh.paths=[["patch-commit"]],Wh.usage=it.Usage({description:"generate a patch out of a directory",details:"\n By default, this will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\n\n With the `-s,--save` option set, the patchfile won't be printed on stdout anymore and will instead be stored within a local file (by default kept within `.yarn/patches`, but configurable via the `patchFolder` setting). A `resolutions` entry will also be added to your top-level manifest, referencing the patched package via the `patch:` protocol.\n\n Note that only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\n "});Ke();bt();_t();var Yh=class extends ct{constructor(){super(...arguments);this.update=fe.Boolean("-u,--update",!1,{description:"Reapply local patches that already apply to this packages"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Ur.find(r);if(!a)throw new er(o.cwd,this.context.cwd);await o.restoreInstallState();let u=Y.parseLocator(this.package);if(u.reference==="unknown"){let A=Ye.mapAndFilter([...o.storedPackages.values()],p=>p.identHash!==u.identHash?Ye.mapAndFilter.skip:Y.isVirtualLocator(p)?Ye.mapAndFilter.skip:Gh(p)!==this.update?Ye.mapAndFilter.skip:p);if(A.length===0)throw new ot("No package found in the project for the given locator");if(A.length>1)throw new ot(`Multiple candidate packages found; explicitly choose one of them (use \`yarn why <package>\` to get more information as to who depends on them): | 698 | ${n}`);let u=r.startsWith("/")?A=>A.slice(1):A=>A;return a.replace(new RegExp(`(a|b)(${We.escapeRegExp(`/${u(r)}/`)})`,"g"),"$1/").replace(new RegExp(`(a|b)${We.escapeRegExp(`/${u(o)}/`)}`,"g"),"$1/").replace(new RegExp(We.escapeRegExp(`${r}/`),"g"),"").replace(new RegExp(We.escapeRegExp(`${o}/`),"g"),"")}function QG(t,e){let r=[];for(let{source:o}of t){if(o===null)continue;let a=Iv(o);for(let n of a){let{semverExclusivity:u,...A}=n;u!==null&&e!==null&&!Tr.satisfiesWithPrereleases(e,u)||r.push(JSON.stringify(A))}}return bn.makeHash(`${3}`,...r).slice(0,6)}Ke();function sve(t,{configuration:e,report:r}){for(let o of t.parts)for(let a of o.lines)switch(o.type){case"context":r.reportInfo(null,` ${ye.pretty(e,a,"grey")}`);break;case"deletion":r.reportError(28,`- ${ye.pretty(e,a,ye.Type.REMOVED)}`);break;case"insertion":r.reportError(28,`+ ${ye.pretty(e,a,ye.Type.ADDED)}`);break;default:We.assertNever(o.type)}}var Dv=class{supports(e,r){return!!Vh(e)}getLocalPath(e,r){return null}async fetch(e,r){let o=r.checksums.get(e.locatorHash)||null,[a,n,u]=await r.cache.fetchPackageFromCache(e,o,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${Y.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the disk`),loader:()=>this.patchPackage(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:Y.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:u}}async patchPackage(e,r){let{parentLocator:o,sourceLocator:a,sourceVersion:n,patchPaths:u}=Bv(e),A=await vv(o,u,r),p=await oe.mktempPromise(),h=J.join(p,"current.zip"),C=await r.fetcher.fetch(a,r),w=Y.getIdentVendorPath(e),v=new os(h,{create:!0,level:r.project.configuration.get("compressionLevel")});await We.releaseAfterUseAsync(async()=>{await v.copyPromise(w,C.prefixPath,{baseFs:C.packageFs,stableSort:!0})},C.releaseFs),v.saveAndClose();for(let{source:b,optional:E}of A){if(b===null)continue;let R=new os(h,{level:r.project.configuration.get("compressionLevel")}),L=new An(J.resolve(wt.root,w),{baseFs:R});try{await Zk(Iv(b),{baseFs:L,version:n})}catch(_){if(!(_ instanceof rI))throw _;let V=r.project.configuration.get("enableInlineHunks"),re=!V&&!E?" (set enableInlineHunks for details)":"",ae=`${Y.prettyLocator(r.project.configuration,e)}: ${_.message}${re}`,he=pe=>{!V||sve(_.hunk,{configuration:r.project.configuration,report:pe})};if(R.discardAndClose(),E){r.report.reportWarningOnce(66,ae,{reportExtra:he});continue}else throw new Vt(66,ae,he)}R.saveAndClose()}return new os(h,{level:r.project.configuration.get("compressionLevel")})}};Ke();var Sv=class{supportsDescriptor(e,r){return!!$k(e)}supportsLocator(e,r){return!!Vh(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,o){let{patchPaths:a}=wv(e);return a.every(n=>!PG(n))?e:Y.bindDescriptor(e,{locator:Y.stringifyLocator(r)})}getResolutionDependencies(e,r){let{sourceDescriptor:o}=wv(e);return{sourceDescriptor:r.project.configuration.normalizeDependency(o)}}async getCandidates(e,r,o){if(!o.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");let{parentLocator:a,patchPaths:n}=wv(e),u=await vv(a,n,o.fetchOptions),A=r.sourceDescriptor;if(typeof A>"u")throw new Error("Assertion failed: The dependency should have been resolved");let p=QG(u,A.version);return[SG(e,{parentLocator:a,sourcePackage:A,patchPaths:n,patchHash:p})]}async getSatisfying(e,r,o,a){let[n]=await this.getCandidates(e,r,a);return{locators:o.filter(u=>u.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let{sourceLocator:o}=Bv(e);return{...await r.resolver.resolve(o,r),...e}}};Ke();St();_t();var Jh=class extends ct{constructor(){super(...arguments);this.save=fe.Boolean("-s,--save",!1,{description:"Add the patch to your resolution entries"});this.patchFolder=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new er(o.cwd,this.context.cwd);await o.restoreInstallState();let n=J.resolve(this.context.cwd,ue.toPortablePath(this.patchFolder)),u=J.join(n,"../source"),A=J.join(n,"../.yarn-patch.json");if(!oe.existsSync(u))throw new ot("The argument folder didn't get created by 'yarn patch'");let p=await bG(u,n),h=await oe.readJsonPromise(A),C=Y.parseLocator(h.locator,!0);if(!o.storedPackages.has(C.locatorHash))throw new ot("No package found in the project for the given locator");if(!this.save){this.context.stdout.write(p);return}let w=r.get("patchFolder"),v=J.join(w,`${Y.slugifyLocator(C)}.patch`);await oe.mkdirPromise(w,{recursive:!0}),await oe.writeFilePromise(v,p);let b=[],E=new Map;for(let R of o.storedPackages.values()){if(Y.isVirtualLocator(R))continue;let L=R.dependencies.get(C.identHash);if(!L)continue;let _=Y.ensureDevirtualizedDescriptor(L),V=DG(_),re=o.storedResolutions.get(V.descriptorHash);if(!re)throw new Error("Assertion failed: Expected the resolution to have been registered");if(!o.storedPackages.get(re))throw new Error("Assertion failed: Expected the package to have been registered");let he=o.tryWorkspaceByLocator(R);if(he)b.push(he);else{let pe=o.originalPackages.get(R.locatorHash);if(!pe)throw new Error("Assertion failed: Expected the original package to have been registered");let De=pe.dependencies.get(L.identHash);if(!De)throw new Error("Assertion failed: Expected the original dependency to have been registered");E.set(De.descriptorHash,De)}}for(let R of b)for(let L of Nt.hardDependencies){let _=R.manifest[L].get(C.identHash);if(!_)continue;let V=tF(_,{parentLocator:null,sourceDescriptor:Y.convertLocatorToDescriptor(C),patchPaths:[J.join(Lr.home,J.relative(o.cwd,v))]});R.manifest[L].set(_.identHash,V)}for(let R of E.values()){let L=tF(R,{parentLocator:null,sourceDescriptor:Y.convertLocatorToDescriptor(C),patchPaths:[J.join(Lr.home,J.relative(o.cwd,v))]});o.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:Y.stringifyIdent(L),description:R.range}},reference:L.range})}await o.persist()}};Jh.paths=[["patch-commit"]],Jh.usage=it.Usage({description:"generate a patch out of a directory",details:"\n By default, this will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\n\n With the `-s,--save` option set, the patchfile won't be printed on stdout anymore and will instead be stored within a local file (by default kept within `.yarn/patches`, but configurable via the `patchFolder` setting). A `resolutions` entry will also be added to your top-level manifest, referencing the patched package via the `patch:` protocol.\n\n Note that only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\n "});Ke();St();_t();var zh=class extends ct{constructor(){super(...arguments);this.update=fe.Boolean("-u,--update",!1,{description:"Reapply local patches that already apply to this packages"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.package=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Ur.find(r);if(!a)throw new er(o.cwd,this.context.cwd);await o.restoreInstallState();let u=Y.parseLocator(this.package);if(u.reference==="unknown"){let A=We.mapAndFilter([...o.storedPackages.values()],p=>p.identHash!==u.identHash?We.mapAndFilter.skip:Y.isVirtualLocator(p)?We.mapAndFilter.skip:Vh(p)!==this.update?We.mapAndFilter.skip:p);if(A.length===0)throw new ot("No package found in the project for the given locator");if(A.length>1)throw new ot(`Multiple candidate packages found; explicitly choose one of them (use \`yarn why <package>\` to get more information as to who depends on them): |
696 | ${A.map(p=>` | 699 | ${A.map(p=>` |
697 | - ${Y.prettyLocator(r,p)}`).join("")}`);u=A[0]}if(!o.storedPackages.has(u.locatorHash))throw new ot("No package found in the project for the given locator");await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout},async A=>{let p=Vk(u),h=await C9(u,{cache:n,project:o});A.reportJson({locator:Y.stringifyLocator(p),path:Ae.fromPortablePath(h)});let C=this.update?" along with its current modifications":"";A.reportInfo(0,`Package ${Y.prettyLocator(r,p)} got extracted with success${C}!`),A.reportInfo(0,`You can now edit the following folder: ${ye.pretty(r,Ae.fromPortablePath(h),"magenta")}`),A.reportInfo(0,`Once you are done run ${ye.pretty(r,`yarn patch-commit -s ${process.platform==="win32"?'"':""}${Ae.fromPortablePath(h)}${process.platform==="win32"?'"':""}`,"cyan")} and Yarn will store a patchfile based on your changes.`)})}};Yh.paths=[["patch"]],Yh.usage=it.Usage({description:"prepare a package for patching",details:"\n This command will cause a package to be extracted in a temporary directory intended to be editable at will.\n\n Once you're done with your changes, run `yarn patch-commit -s <path>` (with `<path>` being the temporary directory you received) to generate a patchfile and register it into your top-level manifest via the `patch:` protocol. Run `yarn patch-commit -h` for more details.\n\n Calling the command when you already have a patch won't import it by default (in other words, the default behavior is to reset existing patches). However, adding the `-u,--update` flag will import any current patch.\n "});var nvt={configuration:{enableInlineHunks:{description:"If true, the installs will print unmatched patch hunks",type:"BOOLEAN",default:!1},patchFolder:{description:"Folder where the patch files must be written",type:"ABSOLUTE_PATH",default:"./.yarn/patches"}},commands:[Wh,Yh],fetchers:[dv],resolvers:[mv]},ivt=nvt;var S9={};Yt(S9,{PnpmLinker:()=>yv,default:()=>cvt});Ke();bt();_t();var yv=class{getCustomDataKey(){return JSON.stringify({name:"PnpmLinker",version:3})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the pnpm linker to be enabled");let o=this.getCustomDataKey(),a=r.project.linkersCustomData.get(o);if(!a)throw new ot(`The project in ${ye.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ye.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=a.pathsByLocator.get(e.locatorHash);if(typeof n>"u")throw new ot(`Couldn't find ${Y.prettyLocator(r.project.configuration,e)} in the currently installed pnpm map - running an install might help`);return n.packageLocation}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let o=this.getCustomDataKey(),a=r.project.linkersCustomData.get(o);if(!a)throw new ot(`The project in ${ye.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ye.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=e.match(/(^.*\/node_modules\/(@[^/]*\/)?[^/]+)(\/.*$)/);if(n){let p=a.locatorByPath.get(n[1]);if(p)return p}let u=e,A=e;do{A=u,u=V.dirname(A);let p=a.locatorByPath.get(A);if(p)return p}while(u!==A);return null}makeInstaller(e){return new v9(e)}isEnabled(e){return e.project.configuration.get("nodeLinker")==="pnpm"}},v9=class{constructor(e){this.opts=e;this.asyncActions=new Ye.AsyncActions(10);this.customData={pathsByLocator:new Map,locatorByPath:new Map};this.indexFolderPromise=sD(ae,{indexPath:V.join(e.project.configuration.get("globalFolder"),"index")})}attachCustomData(e){}async installPackage(e,r,o){switch(e.linkType){case"SOFT":return this.installPackageSoft(e,r,o);case"HARD":return this.installPackageHard(e,r,o)}throw new Error("Assertion failed: Unsupported package link type")}async installPackageSoft(e,r,o){let a=V.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.opts.project.tryWorkspaceByLocator(e)?V.join(a,Lr.nodeModules):null;return this.customData.pathsByLocator.set(e.locatorHash,{packageLocation:a,dependenciesLocation:n}),{packageLocation:a,buildDirective:null}}async installPackageHard(e,r,o){let a=svt(e,{project:this.opts.project}),n=a.packageLocation;this.customData.locatorByPath.set(n,Y.stringifyLocator(e)),this.customData.pathsByLocator.set(e.locatorHash,a),o.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await ae.mkdirPromise(n,{recursive:!0}),await ae.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1,linkStrategy:{type:"HardlinkFromIndex",indexPath:await this.indexFolderPromise,autoRepair:!0}})}));let A=Y.isVirtualLocator(e)?Y.devirtualizeLocator(e):e,p={manifest:await Nt.tryFind(r.prefixPath,{baseFs:r.packageFs})??new Nt,misc:{hasBindingGyp:mA.hasBindingGyp(r)}},h=this.opts.project.getDependencyMeta(A,e.version),C=mA.extractBuildScripts(e,p,h,{configuration:this.opts.project.configuration,report:this.opts.report});return{packageLocation:n,buildDirective:C}}async attachInternalDependencies(e,r){if(this.opts.project.configuration.get("nodeLinker")!=="pnpm"||!WBe(e,{project:this.opts.project}))return;let o=this.customData.pathsByLocator.get(e.locatorHash);if(typeof o>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${Y.stringifyLocator(e)})`);let{dependenciesLocation:a}=o;!a||this.asyncActions.reduce(e.locatorHash,async n=>{await ae.mkdirPromise(a,{recursive:!0});let u=await ovt(a),A=new Map(u),p=[n],h=(w,v)=>{let b=v;WBe(v,{project:this.opts.project})||(this.opts.report.reportWarningOnce(0,"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies"),b=Y.devirtualizeLocator(v));let E=this.customData.pathsByLocator.get(b.locatorHash);if(typeof E>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${Y.stringifyLocator(v)})`);let R=Y.stringifyIdent(w),L=V.join(a,R),_=V.relative(V.dirname(L),E.packageLocation),J=A.get(R);A.delete(R),p.push(Promise.resolve().then(async()=>{if(J){if(J.isSymbolicLink()&&await ae.readlinkPromise(L)===_)return;await ae.removePromise(L)}await ae.mkdirpPromise(V.dirname(L)),process.platform=="win32"&&this.opts.project.configuration.get("winLinkType")==="junctions"?await ae.symlinkPromise(E.packageLocation,L,"junction"):await ae.symlinkPromise(_,L)}))},C=!1;for(let[w,v]of r)w.identHash===e.identHash&&(C=!0),h(w,v);!C&&!this.opts.project.tryWorkspaceByLocator(e)&&h(Y.convertLocatorToDescriptor(e),e),p.push(avt(a,A)),await Promise.all(p)})}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the pnpm linker")}async finalizeInstall(){let e=KBe(this.opts.project);if(this.opts.project.configuration.get("nodeLinker")!=="pnpm")await ae.removePromise(e);else{let r;try{r=new Set(await ae.readdirPromise(e))}catch{r=new Set}for(let{dependenciesLocation:o}of this.customData.pathsByLocator.values()){if(!o)continue;let a=V.contains(e,o);if(a===null)continue;let[n]=a.split(V.sep);r.delete(n)}await Promise.all([...r].map(async o=>{await ae.removePromise(V.join(e,o))}))}return await this.asyncActions.wait(),await D9(e),this.opts.project.configuration.get("nodeLinker")!=="node-modules"&&await D9(YBe(this.opts.project)),{customData:this.customData}}};function YBe(t){return V.join(t.cwd,Lr.nodeModules)}function KBe(t){return V.join(YBe(t),".store")}function svt(t,{project:e}){let r=Y.slugifyLocator(t),o=KBe(e),a=V.join(o,r,"package"),n=V.join(o,r,Lr.nodeModules);return{packageLocation:a,dependenciesLocation:n}}function WBe(t,{project:e}){return!Y.isVirtualLocator(t)||!e.tryWorkspaceByLocator(t)}async function ovt(t){let e=new Map,r=[];try{r=await ae.readdirPromise(t,{withFileTypes:!0})}catch(o){if(o.code!=="ENOENT")throw o}try{for(let o of r)if(!o.name.startsWith("."))if(o.name.startsWith("@")){let a=await ae.readdirPromise(V.join(t,o.name),{withFileTypes:!0});if(a.length===0)e.set(o.name,o);else for(let n of a)e.set(`${o.name}/${n.name}`,n)}else e.set(o.name,o)}catch(o){if(o.code!=="ENOENT")throw o}return e}async function avt(t,e){var a;let r=[],o=new Set;for(let n of e.keys()){r.push(ae.removePromise(V.join(t,n)));let u=(a=Y.tryParseIdent(n))==null?void 0:a.scope;u&&o.add(`@${u}`)}return Promise.all(r).then(()=>Promise.all([...o].map(n=>D9(V.join(t,n)))))}async function D9(t){try{await ae.rmdirPromise(t)}catch(e){if(e.code!=="ENOENT"&&e.code!=="ENOTEMPTY")throw e}}var lvt={linkers:[yv]},cvt=lvt;var F9={};Yt(F9,{StageCommand:()=>Kh,default:()=>Cvt,stageUtils:()=>Cv});Ke();bt();_t();Ke();bt();var Cv={};Yt(Cv,{ActionType:()=>P9,checkConsensus:()=>Xk,expandDirectory:()=>b9,findConsensus:()=>Q9,findVcsRoot:()=>Ev,genCommitMessage:()=>k9,getCommitPrefix:()=>JBe,isYarnFile:()=>x9});bt();var P9=(n=>(n[n.CREATE=0]="CREATE",n[n.DELETE=1]="DELETE",n[n.ADD=2]="ADD",n[n.REMOVE=3]="REMOVE",n[n.MODIFY=4]="MODIFY",n))(P9||{});async function Ev(t,{marker:e}){do if(!ae.existsSync(V.join(t,e)))t=V.dirname(t);else return t;while(t!=="/");return null}function x9(t,{roots:e,names:r}){if(r.has(V.basename(t)))return!0;do if(!e.has(t))t=V.dirname(t);else return!0;while(t!=="/");return!1}function b9(t){let e=[],r=[t];for(;r.length>0;){let o=r.pop(),a=ae.readdirSync(o);for(let n of a){let u=V.resolve(o,n);ae.lstatSync(u).isDirectory()?r.push(u):e.push(u)}}return e}function Xk(t,e){let r=0,o=0;for(let a of t)a!=="wip"&&(e.test(a)?r+=1:o+=1);return r>=o}function Q9(t){let e=Xk(t,/^(\w\(\w+\):\s*)?\w+s/),r=Xk(t,/^(\w\(\w+\):\s*)?[A-Z]/),o=Xk(t,/^\w\(\w+\):/);return{useThirdPerson:e,useUpperCase:r,useComponent:o}}function JBe(t){return t.useComponent?"chore(yarn): ":""}var uvt=new Map([[0,"create"],[1,"delete"],[2,"add"],[3,"remove"],[4,"update"]]);function k9(t,e){let r=JBe(t),o=[],a=e.slice().sort((n,u)=>n[0]-u[0]);for(;a.length>0;){let[n,u]=a.shift(),A=uvt.get(n);t.useUpperCase&&o.length===0&&(A=`${A[0].toUpperCase()}${A.slice(1)}`),t.useThirdPerson&&(A+="s");let p=[u];for(;a.length>0&&a[0][0]===n;){let[,C]=a.shift();p.push(C)}p.sort();let h=p.shift();p.length===1?h+=" (and one other)":p.length>1&&(h+=` (and ${p.length} others)`),o.push(`${A} ${h}`)}return`${r}${o.join(", ")}`}var Avt="Commit generated via `yarn stage`",fvt=11;async function VBe(t){let{code:e,stdout:r}=await Mr.execvp("git",["log","-1","--pretty=format:%H"],{cwd:t});return e===0?r.trim():null}async function pvt(t,e){let r=[],o=e.filter(h=>V.basename(h.path)==="package.json");for(let{action:h,path:C}of o){let w=V.relative(t,C);if(h===4){let v=await VBe(t),{stdout:b}=await Mr.execvp("git",["show",`${v}:${w}`],{cwd:t,strict:!0}),E=await Nt.fromText(b),R=await Nt.fromFile(C),L=new Map([...R.dependencies,...R.devDependencies]),_=new Map([...E.dependencies,...E.devDependencies]);for(let[J,re]of _){let oe=Y.stringifyIdent(re),pe=L.get(J);pe?pe.range!==re.range&&r.push([4,`${oe} to ${pe.range}`]):r.push([3,oe])}for(let[J,re]of L)_.has(J)||r.push([2,Y.stringifyIdent(re)])}else if(h===0){let v=await Nt.fromFile(C);v.name?r.push([0,Y.stringifyIdent(v.name)]):r.push([0,"a package"])}else if(h===1){let v=await VBe(t),{stdout:b}=await Mr.execvp("git",["show",`${v}:${w}`],{cwd:t,strict:!0}),E=await Nt.fromText(b);E.name?r.push([1,Y.stringifyIdent(E.name)]):r.push([1,"a package"])}else throw new Error("Assertion failed: Unsupported action type")}let{code:a,stdout:n}=await Mr.execvp("git",["log",`-${fvt}`,"--pretty=format:%s"],{cwd:t}),u=a===0?n.split(/\n/g).filter(h=>h!==""):[],A=Q9(u);return k9(A,r)}var hvt={[0]:[" A ","?? "],[4]:[" M "],[1]:[" D "]},gvt={[0]:["A "],[4]:["M "],[1]:["D "]},zBe={async findRoot(t){return await Ev(t,{marker:".git"})},async filterChanges(t,e,r,o){let{stdout:a}=await Mr.execvp("git",["status","-s"],{cwd:t,strict:!0}),n=a.toString().split(/\n/g),u=o!=null&&o.staged?gvt:hvt;return[].concat(...n.map(p=>{if(p==="")return[];let h=p.slice(0,3),C=V.resolve(t,p.slice(3));if(!(o!=null&&o.staged)&&h==="?? "&&p.endsWith("/"))return b9(C).map(w=>({action:0,path:w}));{let v=[0,4,1].find(b=>u[b].includes(h));return v!==void 0?[{action:v,path:C}]:[]}})).filter(p=>x9(p.path,{roots:e,names:r}))},async genCommitMessage(t,e){return await pvt(t,e)},async makeStage(t,e){let r=e.map(o=>Ae.fromPortablePath(o.path));await Mr.execvp("git",["add","--",...r],{cwd:t,strict:!0})},async makeCommit(t,e,r){let o=e.map(a=>Ae.fromPortablePath(a.path));await Mr.execvp("git",["add","-N","--",...o],{cwd:t,strict:!0}),await Mr.execvp("git",["commit","-m",`${r} | 700 | - ${Y.prettyLocator(r,p)}`).join("")}`);u=A[0]}if(!o.storedPackages.has(u.locatorHash))throw new ot("No package found in the project for the given locator");await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout},async A=>{let p=eF(u),h=await xG(u,{cache:n,project:o});A.reportJson({locator:Y.stringifyLocator(p),path:ue.fromPortablePath(h)});let C=this.update?" along with its current modifications":"";A.reportInfo(0,`Package ${Y.prettyLocator(r,p)} got extracted with success${C}!`),A.reportInfo(0,`You can now edit the following folder: ${ye.pretty(r,ue.fromPortablePath(h),"magenta")}`),A.reportInfo(0,`Once you are done run ${ye.pretty(r,`yarn patch-commit -s ${process.platform==="win32"?'"':""}${ue.fromPortablePath(h)}${process.platform==="win32"?'"':""}`,"cyan")} and Yarn will store a patchfile based on your changes.`)})}};zh.paths=[["patch"]],zh.usage=it.Usage({description:"prepare a package for patching",details:"\n This command will cause a package to be extracted in a temporary directory intended to be editable at will.\n\n Once you're done with your changes, run `yarn patch-commit -s <path>` (with `<path>` being the temporary directory you received) to generate a patchfile and register it into your top-level manifest via the `patch:` protocol. Run `yarn patch-commit -h` for more details.\n\n Calling the command when you already have a patch won't import it by default (in other words, the default behavior is to reset existing patches). However, adding the `-u,--update` flag will import any current patch.\n "});var wvt={configuration:{enableInlineHunks:{description:"If true, the installs will print unmatched patch hunks",type:"BOOLEAN",default:!1},patchFolder:{description:"Folder where the patch files must be written",type:"ABSOLUTE_PATH",default:"./.yarn/patches"}},commands:[Jh,zh],fetchers:[Dv],resolvers:[Sv]},Bvt=wvt;var TG={};Yt(TG,{PnpmLinker:()=>Pv,default:()=>xvt});Ke();St();_t();var Pv=class{getCustomDataKey(){return JSON.stringify({name:"PnpmLinker",version:3})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error("Assertion failed: Expected the pnpm linker to be enabled");let o=this.getCustomDataKey(),a=r.project.linkersCustomData.get(o);if(!a)throw new ot(`The project in ${ye.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ye.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=a.pathsByLocator.get(e.locatorHash);if(typeof n>"u")throw new ot(`Couldn't find ${Y.prettyLocator(r.project.configuration,e)} in the currently installed pnpm map - running an install might help`);return n.packageLocation}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let o=this.getCustomDataKey(),a=r.project.linkersCustomData.get(o);if(!a)throw new ot(`The project in ${ye.pretty(r.project.configuration,`${r.project.cwd}/package.json`,ye.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=e.match(/(^.*\/node_modules\/(@[^/]*\/)?[^/]+)(\/.*$)/);if(n){let p=a.locatorByPath.get(n[1]);if(p)return p}let u=e,A=e;do{A=u,u=J.dirname(A);let p=a.locatorByPath.get(A);if(p)return p}while(u!==A);return null}makeInstaller(e){return new FG(e)}isEnabled(e){return e.project.configuration.get("nodeLinker")==="pnpm"}},FG=class{constructor(e){this.opts=e;this.asyncActions=new We.AsyncActions(10);this.customData={pathsByLocator:new Map,locatorByPath:new Map};this.indexFolderPromise=hD(oe,{indexPath:J.join(e.project.configuration.get("globalFolder"),"index")})}attachCustomData(e){}async installPackage(e,r,o){switch(e.linkType){case"SOFT":return this.installPackageSoft(e,r,o);case"HARD":return this.installPackageHard(e,r,o)}throw new Error("Assertion failed: Unsupported package link type")}async installPackageSoft(e,r,o){let a=J.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.opts.project.tryWorkspaceByLocator(e)?J.join(a,Lr.nodeModules):null;return this.customData.pathsByLocator.set(e.locatorHash,{packageLocation:a,dependenciesLocation:n}),{packageLocation:a,buildDirective:null}}async installPackageHard(e,r,o){let a=vvt(e,{project:this.opts.project}),n=a.packageLocation;this.customData.locatorByPath.set(n,Y.stringifyLocator(e)),this.customData.pathsByLocator.set(e.locatorHash,a),o.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await oe.mkdirPromise(n,{recursive:!0}),await oe.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1,linkStrategy:{type:"HardlinkFromIndex",indexPath:await this.indexFolderPromise,autoRepair:!0}})}));let A=Y.isVirtualLocator(e)?Y.devirtualizeLocator(e):e,p={manifest:await Nt.tryFind(r.prefixPath,{baseFs:r.packageFs})??new Nt,misc:{hasBindingGyp:CA.hasBindingGyp(r)}},h=this.opts.project.getDependencyMeta(A,e.version),C=CA.extractBuildScripts(e,p,h,{configuration:this.opts.project.configuration,report:this.opts.report});return{packageLocation:n,buildDirective:C}}async attachInternalDependencies(e,r){if(this.opts.project.configuration.get("nodeLinker")!=="pnpm"||!ove(e,{project:this.opts.project}))return;let o=this.customData.pathsByLocator.get(e.locatorHash);if(typeof o>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${Y.stringifyLocator(e)})`);let{dependenciesLocation:a}=o;!a||this.asyncActions.reduce(e.locatorHash,async n=>{await oe.mkdirPromise(a,{recursive:!0});let u=await Dvt(a),A=new Map(u),p=[n],h=(w,v)=>{let b=v;ove(v,{project:this.opts.project})||(this.opts.report.reportWarningOnce(0,"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies"),b=Y.devirtualizeLocator(v));let E=this.customData.pathsByLocator.get(b.locatorHash);if(typeof E>"u")throw new Error(`Assertion failed: Expected the package to have been registered (${Y.stringifyLocator(v)})`);let R=Y.stringifyIdent(w),L=J.join(a,R),_=J.relative(J.dirname(L),E.packageLocation),V=A.get(R);A.delete(R),p.push(Promise.resolve().then(async()=>{if(V){if(V.isSymbolicLink()&&await oe.readlinkPromise(L)===_)return;await oe.removePromise(L)}await oe.mkdirpPromise(J.dirname(L)),process.platform=="win32"&&this.opts.project.configuration.get("winLinkType")==="junctions"?await oe.symlinkPromise(E.packageLocation,L,"junction"):await oe.symlinkPromise(_,L)}))},C=!1;for(let[w,v]of r)w.identHash===e.identHash&&(C=!0),h(w,v);!C&&!this.opts.project.tryWorkspaceByLocator(e)&&h(Y.convertLocatorToDescriptor(e),e),p.push(Svt(a,A)),await Promise.all(p)})}async attachExternalDependents(e,r){throw new Error("External dependencies haven't been implemented for the pnpm linker")}async finalizeInstall(){let e=lve(this.opts.project);if(this.opts.project.configuration.get("nodeLinker")!=="pnpm")await oe.removePromise(e);else{let r;try{r=new Set(await oe.readdirPromise(e))}catch{r=new Set}for(let{dependenciesLocation:o}of this.customData.pathsByLocator.values()){if(!o)continue;let a=J.contains(e,o);if(a===null)continue;let[n]=a.split(J.sep);r.delete(n)}await Promise.all([...r].map(async o=>{await oe.removePromise(J.join(e,o))}))}return await this.asyncActions.wait(),await RG(e),this.opts.project.configuration.get("nodeLinker")!=="node-modules"&&await RG(ave(this.opts.project)),{customData:this.customData}}};function ave(t){return J.join(t.cwd,Lr.nodeModules)}function lve(t){return J.join(ave(t),".store")}function vvt(t,{project:e}){let r=Y.slugifyLocator(t),o=lve(e),a=J.join(o,r,"package"),n=J.join(o,r,Lr.nodeModules);return{packageLocation:a,dependenciesLocation:n}}function ove(t,{project:e}){return!Y.isVirtualLocator(t)||!e.tryWorkspaceByLocator(t)}async function Dvt(t){let e=new Map,r=[];try{r=await oe.readdirPromise(t,{withFileTypes:!0})}catch(o){if(o.code!=="ENOENT")throw o}try{for(let o of r)if(!o.name.startsWith("."))if(o.name.startsWith("@")){let a=await oe.readdirPromise(J.join(t,o.name),{withFileTypes:!0});if(a.length===0)e.set(o.name,o);else for(let n of a)e.set(`${o.name}/${n.name}`,n)}else e.set(o.name,o)}catch(o){if(o.code!=="ENOENT")throw o}return e}async function Svt(t,e){var a;let r=[],o=new Set;for(let n of e.keys()){r.push(oe.removePromise(J.join(t,n)));let u=(a=Y.tryParseIdent(n))==null?void 0:a.scope;u&&o.add(`@${u}`)}return Promise.all(r).then(()=>Promise.all([...o].map(n=>RG(J.join(t,n)))))}async function RG(t){try{await oe.rmdirPromise(t)}catch(e){if(e.code!=="ENOENT"&&e.code!=="ENOTEMPTY")throw e}}var Pvt={linkers:[Pv]},xvt=Pvt;var _G={};Yt(_G,{StageCommand:()=>Xh,default:()=>Uvt,stageUtils:()=>bv});Ke();St();_t();Ke();St();var bv={};Yt(bv,{ActionType:()=>NG,checkConsensus:()=>rF,expandDirectory:()=>OG,findConsensus:()=>MG,findVcsRoot:()=>xv,genCommitMessage:()=>UG,getCommitPrefix:()=>cve,isYarnFile:()=>LG});St();var NG=(n=>(n[n.CREATE=0]="CREATE",n[n.DELETE=1]="DELETE",n[n.ADD=2]="ADD",n[n.REMOVE=3]="REMOVE",n[n.MODIFY=4]="MODIFY",n))(NG||{});async function xv(t,{marker:e}){do if(!oe.existsSync(J.join(t,e)))t=J.dirname(t);else return t;while(t!=="/");return null}function LG(t,{roots:e,names:r}){if(r.has(J.basename(t)))return!0;do if(!e.has(t))t=J.dirname(t);else return!0;while(t!=="/");return!1}function OG(t){let e=[],r=[t];for(;r.length>0;){let o=r.pop(),a=oe.readdirSync(o);for(let n of a){let u=J.resolve(o,n);oe.lstatSync(u).isDirectory()?r.push(u):e.push(u)}}return e}function rF(t,e){let r=0,o=0;for(let a of t)a!=="wip"&&(e.test(a)?r+=1:o+=1);return r>=o}function MG(t){let e=rF(t,/^(\w\(\w+\):\s*)?\w+s/),r=rF(t,/^(\w\(\w+\):\s*)?[A-Z]/),o=rF(t,/^\w\(\w+\):/);return{useThirdPerson:e,useUpperCase:r,useComponent:o}}function cve(t){return t.useComponent?"chore(yarn): ":""}var bvt=new Map([[0,"create"],[1,"delete"],[2,"add"],[3,"remove"],[4,"update"]]);function UG(t,e){let r=cve(t),o=[],a=e.slice().sort((n,u)=>n[0]-u[0]);for(;a.length>0;){let[n,u]=a.shift(),A=bvt.get(n);t.useUpperCase&&o.length===0&&(A=`${A[0].toUpperCase()}${A.slice(1)}`),t.useThirdPerson&&(A+="s");let p=[u];for(;a.length>0&&a[0][0]===n;){let[,C]=a.shift();p.push(C)}p.sort();let h=p.shift();p.length===1?h+=" (and one other)":p.length>1&&(h+=` (and ${p.length} others)`),o.push(`${A} ${h}`)}return`${r}${o.join(", ")}`}var Qvt="Commit generated via `yarn stage`",kvt=11;async function uve(t){let{code:e,stdout:r}=await Mr.execvp("git",["log","-1","--pretty=format:%H"],{cwd:t});return e===0?r.trim():null}async function Fvt(t,e){let r=[],o=e.filter(h=>J.basename(h.path)==="package.json");for(let{action:h,path:C}of o){let w=J.relative(t,C);if(h===4){let v=await uve(t),{stdout:b}=await Mr.execvp("git",["show",`${v}:${w}`],{cwd:t,strict:!0}),E=await Nt.fromText(b),R=await Nt.fromFile(C),L=new Map([...R.dependencies,...R.devDependencies]),_=new Map([...E.dependencies,...E.devDependencies]);for(let[V,re]of _){let ae=Y.stringifyIdent(re),he=L.get(V);he?he.range!==re.range&&r.push([4,`${ae} to ${he.range}`]):r.push([3,ae])}for(let[V,re]of L)_.has(V)||r.push([2,Y.stringifyIdent(re)])}else if(h===0){let v=await Nt.fromFile(C);v.name?r.push([0,Y.stringifyIdent(v.name)]):r.push([0,"a package"])}else if(h===1){let v=await uve(t),{stdout:b}=await Mr.execvp("git",["show",`${v}:${w}`],{cwd:t,strict:!0}),E=await Nt.fromText(b);E.name?r.push([1,Y.stringifyIdent(E.name)]):r.push([1,"a package"])}else throw new Error("Assertion failed: Unsupported action type")}let{code:a,stdout:n}=await Mr.execvp("git",["log",`-${kvt}`,"--pretty=format:%s"],{cwd:t}),u=a===0?n.split(/\n/g).filter(h=>h!==""):[],A=MG(u);return UG(A,r)}var Rvt={[0]:[" A ","?? "],[4]:[" M "],[1]:[" D "]},Tvt={[0]:["A "],[4]:["M "],[1]:["D "]},Ave={async findRoot(t){return await xv(t,{marker:".git"})},async filterChanges(t,e,r,o){let{stdout:a}=await Mr.execvp("git",["status","-s"],{cwd:t,strict:!0}),n=a.toString().split(/\n/g),u=o!=null&&o.staged?Tvt:Rvt;return[].concat(...n.map(p=>{if(p==="")return[];let h=p.slice(0,3),C=J.resolve(t,p.slice(3));if(!(o!=null&&o.staged)&&h==="?? "&&p.endsWith("/"))return OG(C).map(w=>({action:0,path:w}));{let v=[0,4,1].find(b=>u[b].includes(h));return v!==void 0?[{action:v,path:C}]:[]}})).filter(p=>LG(p.path,{roots:e,names:r}))},async genCommitMessage(t,e){return await Fvt(t,e)},async makeStage(t,e){let r=e.map(o=>ue.fromPortablePath(o.path));await Mr.execvp("git",["add","--",...r],{cwd:t,strict:!0})},async makeCommit(t,e,r){let o=e.map(a=>ue.fromPortablePath(a.path));await Mr.execvp("git",["add","-N","--",...o],{cwd:t,strict:!0}),await Mr.execvp("git",["commit","-m",`${r} |
698 | 701 | ||
699 | ${Avt} | 702 | ${Qvt} |
700 | `,"--",...o],{cwd:t,strict:!0})},async makeReset(t,e){let r=e.map(o=>Ae.fromPortablePath(o.path));await Mr.execvp("git",["reset","HEAD","--",...r],{cwd:t,strict:!0})}};var XBe={async findRoot(t){return await Ev(t,{marker:".hg"})},async filterChanges(t,e,r){return[]},async genCommitMessage(t,e){return""},async makeStage(t,e){},async makeCommit(t,e,r){},async makeReset(t,e){},async makeUpdate(t,e){}};var dvt=[zBe,XBe],Kh=class extends ct{constructor(){super(...arguments);this.commit=fe.Boolean("-c,--commit",!1,{description:"Commit the staged files"});this.reset=fe.Boolean("-r,--reset",!1,{description:"Remove all files from the staging area"});this.dryRun=fe.Boolean("-n,--dry-run",!1,{description:"Print the commit message and the list of modified files without staging / committing"});this.update=fe.Boolean("-u,--update",!1,{hidden:!0})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o}=await St.find(r,this.context.cwd),{driver:a,root:n}=await mvt(o.cwd),u=[r.get("cacheFolder"),r.get("globalFolder"),r.get("virtualFolder"),r.get("yarnPath")];await r.triggerHook(w=>w.populateYarnPaths,o,w=>{u.push(w)});let A=new Set;for(let w of u)for(let v of yvt(n,w))A.add(v);let p=new Set([r.get("rcFilename"),r.get("lockfileFilename"),"package.json"]),h=await a.filterChanges(n,A,p),C=await a.genCommitMessage(n,h);if(this.dryRun)if(this.commit)this.context.stdout.write(`${C} | 703 | `,"--",...o],{cwd:t,strict:!0})},async makeReset(t,e){let r=e.map(o=>ue.fromPortablePath(o.path));await Mr.execvp("git",["reset","HEAD","--",...r],{cwd:t,strict:!0})}};var fve={async findRoot(t){return await xv(t,{marker:".hg"})},async filterChanges(t,e,r){return[]},async genCommitMessage(t,e){return""},async makeStage(t,e){},async makeCommit(t,e,r){},async makeReset(t,e){},async makeUpdate(t,e){}};var Nvt=[Ave,fve],Xh=class extends ct{constructor(){super(...arguments);this.commit=fe.Boolean("-c,--commit",!1,{description:"Commit the staged files"});this.reset=fe.Boolean("-r,--reset",!1,{description:"Remove all files from the staging area"});this.dryRun=fe.Boolean("-n,--dry-run",!1,{description:"Print the commit message and the list of modified files without staging / committing"});this.update=fe.Boolean("-u,--update",!1,{hidden:!0})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o}=await Pt.find(r,this.context.cwd),{driver:a,root:n}=await Lvt(o.cwd),u=[r.get("cacheFolder"),r.get("globalFolder"),r.get("virtualFolder"),r.get("yarnPath")];await r.triggerHook(w=>w.populateYarnPaths,o,w=>{u.push(w)});let A=new Set;for(let w of u)for(let v of Ovt(n,w))A.add(v);let p=new Set([r.get("rcFilename"),r.get("lockfileFilename"),"package.json"]),h=await a.filterChanges(n,A,p),C=await a.genCommitMessage(n,h);if(this.dryRun)if(this.commit)this.context.stdout.write(`${C} |
701 | `);else for(let w of h)this.context.stdout.write(`${Ae.fromPortablePath(w.path)} | 704 | `);else for(let w of h)this.context.stdout.write(`${ue.fromPortablePath(w.path)} |
702 | `);else if(this.reset){let w=await a.filterChanges(n,A,p,{staged:!0});w.length===0?this.context.stdout.write("No staged changes found!"):await a.makeReset(n,w)}else h.length===0?this.context.stdout.write("No changes found!"):this.commit?await a.makeCommit(n,h,C):(await a.makeStage(n,h),this.context.stdout.write(C))}};Kh.paths=[["stage"]],Kh.usage=it.Usage({description:"add all yarn files to your vcs",details:"\n This command will add to your staging area the files belonging to Yarn (typically any modified `package.json` and `.yarnrc.yml` files, but also linker-generated files, cache data, etc). It will take your ignore list into account, so the cache files won't be added if the cache is ignored in a `.gitignore` file (assuming you use Git).\n\n Running `--reset` will instead remove them from the staging area (the changes will still be there, but won't be committed until you stage them back).\n\n Since the staging area is a non-existent concept in Mercurial, Yarn will always create a new commit when running this command on Mercurial repositories. You can get this behavior when using Git by using the `--commit` flag which will directly create a commit.\n ",examples:[["Adds all modified project files to the staging area","yarn stage"],["Creates a new commit containing all modified project files","yarn stage --commit"]]});async function mvt(t){let e=null,r=null;for(let o of dvt)if((r=await o.findRoot(t))!==null){e=o;break}if(e===null||r===null)throw new ot("No stage driver has been found for your current project");return{driver:e,root:r}}function yvt(t,e){let r=[];if(e===null)return r;for(;;){(e===t||e.startsWith(`${t}/`))&&r.push(e);let o;try{o=ae.statSync(e)}catch{break}if(o.isSymbolicLink())e=V.resolve(V.dirname(e),ae.readlinkSync(e));else break}return r}var Evt={commands:[Kh]},Cvt=Evt;var R9={};Yt(R9,{default:()=>xvt});Ke();Ke();bt();var eve=tt(ii());Ke();var ZBe=tt(JH()),Ivt="e8e1bd300d860104bb8c58453ffa1eb4",wvt="OFCNCOG2CU",$Be=async(t,e)=>{var n;let r=Y.stringifyIdent(t),a=Bvt(e).initIndex("npm-search");try{return((n=(await a.getObject(r,{attributesToRetrieve:["types"]})).types)==null?void 0:n.ts)==="definitely-typed"}catch{return!1}},Bvt=t=>(0,ZBe.default)(wvt,Ivt,{requester:{async send(r){try{let o=await ln.request(r.url,r.data||null,{configuration:t,headers:r.headers});return{content:o.body,isTimedOut:!1,status:o.statusCode}}catch(o){return{content:o.response.body,isTimedOut:!1,status:o.response.statusCode}}}}});var tve=t=>t.scope?`${t.scope}__${t.name}`:`${t.name}`,vvt=async(t,e,r,o)=>{if(r.scope==="types")return;let{project:a}=t,{configuration:n}=a;if(!(n.get("tsEnableAutoTypes")??ae.existsSync(V.join(a.cwd,"tsconfig.json"))))return;let A=n.makeResolver(),p={project:a,resolver:A,report:new xi};if(!await $Be(r,n))return;let C=tve(r),w=Y.parseRange(r.range).selector;if(!Tr.validRange(w)){let L=n.normalizeDependency(r),_=await A.getCandidates(L,{},p);w=Y.parseRange(_[0].reference).selector}let v=eve.default.coerce(w);if(v===null)return;let b=`${Zc.Modifier.CARET}${v.major}`,E=Y.makeDescriptor(Y.makeIdent("types",C),b),R=Ye.mapAndFind(a.workspaces,L=>{var oe,pe;let _=(oe=L.manifest.dependencies.get(r.identHash))==null?void 0:oe.descriptorHash,J=(pe=L.manifest.devDependencies.get(r.identHash))==null?void 0:pe.descriptorHash;if(_!==r.descriptorHash&&J!==r.descriptorHash)return Ye.mapAndFind.skip;let re=[];for(let he of Nt.allDependencies){let ve=L.manifest[he].get(E.identHash);typeof ve>"u"||re.push([he,ve])}return re.length===0?Ye.mapAndFind.skip:re});if(typeof R<"u")for(let[L,_]of R)t.manifest[L].set(_.identHash,_);else{try{let L=n.normalizeDependency(E);if((await A.getCandidates(L,{},p)).length===0)return}catch{return}t.manifest[Zc.Target.DEVELOPMENT].set(E.identHash,E)}},Dvt=async(t,e,r)=>{if(r.scope==="types")return;let{project:o}=t,{configuration:a}=o;if(!(a.get("tsEnableAutoTypes")??ae.existsSync(V.join(o.cwd,"tsconfig.json"))))return;let u=tve(r),A=Y.makeIdent("types",u);for(let p of Nt.allDependencies)typeof t.manifest[p].get(A.identHash)>"u"||t.manifest[p].delete(A.identHash)},Svt=(t,e)=>{e.publishConfig&&e.publishConfig.typings&&(e.typings=e.publishConfig.typings),e.publishConfig&&e.publishConfig.types&&(e.types=e.publishConfig.types)},Pvt={configuration:{tsEnableAutoTypes:{description:"Whether Yarn should auto-install @types/ dependencies on 'yarn add'",type:"BOOLEAN",isNullable:!0,default:null}},hooks:{afterWorkspaceDependencyAddition:vvt,afterWorkspaceDependencyRemoval:Dvt,beforeWorkspacePacking:Svt}},xvt=Pvt;var M9={};Yt(M9,{VersionApplyCommand:()=>Jh,VersionCheckCommand:()=>Vh,VersionCommand:()=>zh,default:()=>Kvt,versionUtils:()=>iI});Ke();Ke();_t();var iI={};Yt(iI,{Decision:()=>rI,applyPrerelease:()=>ave,applyReleases:()=>O9,applyStrategy:()=>$k,clearVersionFiles:()=>T9,getUndecidedDependentWorkspaces:()=>wv,getUndecidedWorkspaces:()=>Zk,openVersionFile:()=>nI,requireMoreDecisions:()=>Gvt,resolveVersionFiles:()=>Iv,suggestStrategy:()=>L9,updateVersionFiles:()=>N9,validateReleaseDecision:()=>tI});Ke();bt();Ol();_t();var ove=tt(sve()),vA=tt(ii()),jvt=/^(>=|[~^]|)(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(-(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(\.(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\+[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*)?$/,rI=(u=>(u.UNDECIDED="undecided",u.DECLINE="decline",u.MAJOR="major",u.MINOR="minor",u.PATCH="patch",u.PRERELEASE="prerelease",u))(rI||{});function tI(t){let e=vA.default.valid(t);return e||Ye.validateEnum((0,ove.default)(rI,"UNDECIDED"),t)}async function Iv(t,{prerelease:e=null}={}){let r=new Map,o=t.configuration.get("deferredVersionFolder");if(!ae.existsSync(o))return r;let a=await ae.readdirPromise(o);for(let n of a){if(!n.endsWith(".yml"))continue;let u=V.join(o,n),A=await ae.readFilePromise(u,"utf8"),p=Yi(A);for(let[h,C]of Object.entries(p.releases||{})){if(C==="decline")continue;let w=Y.parseIdent(h),v=t.tryWorkspaceByIdent(w);if(v===null)throw new Error(`Assertion failed: Expected a release definition file to only reference existing workspaces (${V.basename(u)} references ${h})`);if(v.manifest.version===null)throw new Error(`Assertion failed: Expected the workspace to have a version (${Y.prettyLocator(t.configuration,v.anchoredLocator)})`);let b=v.manifest.raw.stableVersion??v.manifest.version,E=r.get(v),R=$k(b,tI(C));if(R===null)throw new Error(`Assertion failed: Expected ${b} to support being bumped via strategy ${C}`);let L=typeof E<"u"?vA.default.gt(R,E)?R:E:R;r.set(v,L)}}return e&&(r=new Map([...r].map(([n,u])=>[n,ave(u,{current:n.manifest.version,prerelease:e})]))),r}async function T9(t){let e=t.configuration.get("deferredVersionFolder");!ae.existsSync(e)||await ae.removePromise(e)}async function N9(t,e){let r=new Set(e),o=t.configuration.get("deferredVersionFolder");if(!ae.existsSync(o))return;let a=await ae.readdirPromise(o);for(let n of a){if(!n.endsWith(".yml"))continue;let u=V.join(o,n),A=await ae.readFilePromise(u,"utf8"),p=Yi(A),h=p==null?void 0:p.releases;if(!!h){for(let C of Object.keys(h)){let w=Y.parseIdent(C),v=t.tryWorkspaceByIdent(w);(v===null||r.has(v))&&delete p.releases[C]}Object.keys(p.releases).length>0?await ae.changeFilePromise(u,Ia(new Ia.PreserveOrdering(p))):await ae.unlinkPromise(u)}}}async function nI(t,{allowEmpty:e=!1}={}){let r=t.configuration;if(r.projectCwd===null)throw new ot("This command can only be run from within a Yarn project");let o=await Zo.fetchRoot(r.projectCwd),a=o!==null?await Zo.fetchBase(o,{baseRefs:r.get("changesetBaseRefs")}):null,n=o!==null?await Zo.fetchChangedFiles(o,{base:a.hash,project:t}):[],u=r.get("deferredVersionFolder"),A=n.filter(b=>V.contains(u,b)!==null);if(A.length>1)throw new ot(`Your current branch contains multiple versioning files; this isn't supported: | 705 | `);else if(this.reset){let w=await a.filterChanges(n,A,p,{staged:!0});w.length===0?this.context.stdout.write("No staged changes found!"):await a.makeReset(n,w)}else h.length===0?this.context.stdout.write("No changes found!"):this.commit?await a.makeCommit(n,h,C):(await a.makeStage(n,h),this.context.stdout.write(C))}};Xh.paths=[["stage"]],Xh.usage=it.Usage({description:"add all yarn files to your vcs",details:"\n This command will add to your staging area the files belonging to Yarn (typically any modified `package.json` and `.yarnrc.yml` files, but also linker-generated files, cache data, etc). It will take your ignore list into account, so the cache files won't be added if the cache is ignored in a `.gitignore` file (assuming you use Git).\n\n Running `--reset` will instead remove them from the staging area (the changes will still be there, but won't be committed until you stage them back).\n\n Since the staging area is a non-existent concept in Mercurial, Yarn will always create a new commit when running this command on Mercurial repositories. You can get this behavior when using Git by using the `--commit` flag which will directly create a commit.\n ",examples:[["Adds all modified project files to the staging area","yarn stage"],["Creates a new commit containing all modified project files","yarn stage --commit"]]});async function Lvt(t){let e=null,r=null;for(let o of Nvt)if((r=await o.findRoot(t))!==null){e=o;break}if(e===null||r===null)throw new ot("No stage driver has been found for your current project");return{driver:e,root:r}}function Ovt(t,e){let r=[];if(e===null)return r;for(;;){(e===t||e.startsWith(`${t}/`))&&r.push(e);let o;try{o=oe.statSync(e)}catch{break}if(o.isSymbolicLink())e=J.resolve(J.dirname(e),oe.readlinkSync(e));else break}return r}var Mvt={commands:[Xh]},Uvt=Mvt;var HG={};Yt(HG,{default:()=>Kvt});Ke();Ke();St();var gve=tt(si());Ke();var pve=tt(XH()),_vt="e8e1bd300d860104bb8c58453ffa1eb4",Hvt="OFCNCOG2CU",hve=async(t,e)=>{var n;let r=Y.stringifyIdent(t),a=qvt(e).initIndex("npm-search");try{return((n=(await a.getObject(r,{attributesToRetrieve:["types"]})).types)==null?void 0:n.ts)==="definitely-typed"}catch{return!1}},qvt=t=>(0,pve.default)(Hvt,_vt,{requester:{async send(r){try{let o=await ln.request(r.url,r.data||null,{configuration:t,headers:r.headers});return{content:o.body,isTimedOut:!1,status:o.statusCode}}catch(o){return{content:o.response.body,isTimedOut:!1,status:o.response.statusCode}}}}});var dve=t=>t.scope?`${t.scope}__${t.name}`:`${t.name}`,jvt=async(t,e,r,o)=>{if(r.scope==="types")return;let{project:a}=t,{configuration:n}=a;if(!(n.get("tsEnableAutoTypes")??oe.existsSync(J.join(a.cwd,"tsconfig.json"))))return;let A=n.makeResolver(),p={project:a,resolver:A,report:new xi};if(!await hve(r,n))return;let C=dve(r),w=Y.parseRange(r.range).selector;if(!Tr.validRange(w)){let L=n.normalizeDependency(r),_=await A.getCandidates(L,{},p);w=Y.parseRange(_[0].reference).selector}let v=gve.default.coerce(w);if(v===null)return;let b=`${tu.Modifier.CARET}${v.major}`,E=Y.makeDescriptor(Y.makeIdent("types",C),b),R=We.mapAndFind(a.workspaces,L=>{var ae,he;let _=(ae=L.manifest.dependencies.get(r.identHash))==null?void 0:ae.descriptorHash,V=(he=L.manifest.devDependencies.get(r.identHash))==null?void 0:he.descriptorHash;if(_!==r.descriptorHash&&V!==r.descriptorHash)return We.mapAndFind.skip;let re=[];for(let pe of Nt.allDependencies){let De=L.manifest[pe].get(E.identHash);typeof De>"u"||re.push([pe,De])}return re.length===0?We.mapAndFind.skip:re});if(typeof R<"u")for(let[L,_]of R)t.manifest[L].set(_.identHash,_);else{try{let L=n.normalizeDependency(E);if((await A.getCandidates(L,{},p)).length===0)return}catch{return}t.manifest[tu.Target.DEVELOPMENT].set(E.identHash,E)}},Gvt=async(t,e,r)=>{if(r.scope==="types")return;let{project:o}=t,{configuration:a}=o;if(!(a.get("tsEnableAutoTypes")??oe.existsSync(J.join(o.cwd,"tsconfig.json"))))return;let u=dve(r),A=Y.makeIdent("types",u);for(let p of Nt.allDependencies)typeof t.manifest[p].get(A.identHash)>"u"||t.manifest[p].delete(A.identHash)},Wvt=(t,e)=>{e.publishConfig&&e.publishConfig.typings&&(e.typings=e.publishConfig.typings),e.publishConfig&&e.publishConfig.types&&(e.types=e.publishConfig.types)},Yvt={configuration:{tsEnableAutoTypes:{description:"Whether Yarn should auto-install @types/ dependencies on 'yarn add'",type:"BOOLEAN",isNullable:!0,default:null}},hooks:{afterWorkspaceDependencyAddition:jvt,afterWorkspaceDependencyRemoval:Gvt,beforeWorkspacePacking:Wvt}},Kvt=Yvt;var YG={};Yt(YG,{VersionApplyCommand:()=>Zh,VersionCheckCommand:()=>$h,VersionCommand:()=>eg,default:()=>fDt,versionUtils:()=>lI});Ke();Ke();_t();var lI={};Yt(lI,{Decision:()=>oI,applyPrerelease:()=>wve,applyReleases:()=>WG,applyStrategy:()=>iF,clearVersionFiles:()=>qG,getUndecidedDependentWorkspaces:()=>kv,getUndecidedWorkspaces:()=>nF,openVersionFile:()=>aI,requireMoreDecisions:()=>cDt,resolveVersionFiles:()=>Qv,suggestStrategy:()=>GG,updateVersionFiles:()=>jG,validateReleaseDecision:()=>sI});Ke();St();Hl();_t();var Ive=tt(Cve()),PA=tt(si()),lDt=/^(>=|[~^]|)(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(-(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(\.(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\+[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*)?$/,oI=(u=>(u.UNDECIDED="undecided",u.DECLINE="decline",u.MAJOR="major",u.MINOR="minor",u.PATCH="patch",u.PRERELEASE="prerelease",u))(oI||{});function sI(t){let e=PA.default.valid(t);return e||We.validateEnum((0,Ive.default)(oI,"UNDECIDED"),t)}async function Qv(t,{prerelease:e=null}={}){let r=new Map,o=t.configuration.get("deferredVersionFolder");if(!oe.existsSync(o))return r;let a=await oe.readdirPromise(o);for(let n of a){if(!n.endsWith(".yml"))continue;let u=J.join(o,n),A=await oe.readFilePromise(u,"utf8"),p=Yi(A);for(let[h,C]of Object.entries(p.releases||{})){if(C==="decline")continue;let w=Y.parseIdent(h),v=t.tryWorkspaceByIdent(w);if(v===null)throw new Error(`Assertion failed: Expected a release definition file to only reference existing workspaces (${J.basename(u)} references ${h})`);if(v.manifest.version===null)throw new Error(`Assertion failed: Expected the workspace to have a version (${Y.prettyLocator(t.configuration,v.anchoredLocator)})`);let b=v.manifest.raw.stableVersion??v.manifest.version,E=r.get(v),R=iF(b,sI(C));if(R===null)throw new Error(`Assertion failed: Expected ${b} to support being bumped via strategy ${C}`);let L=typeof E<"u"?PA.default.gt(R,E)?R:E:R;r.set(v,L)}}return e&&(r=new Map([...r].map(([n,u])=>[n,wve(u,{current:n.manifest.version,prerelease:e})]))),r}async function qG(t){let e=t.configuration.get("deferredVersionFolder");!oe.existsSync(e)||await oe.removePromise(e)}async function jG(t,e){let r=new Set(e),o=t.configuration.get("deferredVersionFolder");if(!oe.existsSync(o))return;let a=await oe.readdirPromise(o);for(let n of a){if(!n.endsWith(".yml"))continue;let u=J.join(o,n),A=await oe.readFilePromise(u,"utf8"),p=Yi(A),h=p==null?void 0:p.releases;if(!!h){for(let C of Object.keys(h)){let w=Y.parseIdent(C),v=t.tryWorkspaceByIdent(w);(v===null||r.has(v))&&delete p.releases[C]}Object.keys(p.releases).length>0?await oe.changeFilePromise(u,Ba(new Ba.PreserveOrdering(p))):await oe.unlinkPromise(u)}}}async function aI(t,{allowEmpty:e=!1}={}){let r=t.configuration;if(r.projectCwd===null)throw new ot("This command can only be run from within a Yarn project");let o=await ea.fetchRoot(r.projectCwd),a=o!==null?await ea.fetchBase(o,{baseRefs:r.get("changesetBaseRefs")}):null,n=o!==null?await ea.fetchChangedFiles(o,{base:a.hash,project:t}):[],u=r.get("deferredVersionFolder"),A=n.filter(b=>J.contains(u,b)!==null);if(A.length>1)throw new ot(`Your current branch contains multiple versioning files; this isn't supported: |
703 | - ${A.map(b=>Ae.fromPortablePath(b)).join(` | 706 | - ${A.map(b=>ue.fromPortablePath(b)).join(` |
704 | - `)}`);let p=new Set(Ye.mapAndFilter(n,b=>{let E=t.tryWorkspaceByFilePath(b);return E===null?Ye.mapAndFilter.skip:E}));if(A.length===0&&p.size===0&&!e)return null;let h=A.length===1?A[0]:V.join(u,`${bn.makeHash(Math.random().toString()).slice(0,8)}.yml`),C=ae.existsSync(h)?await ae.readFilePromise(h,"utf8"):"{}",w=Yi(C),v=new Map;for(let b of w.declined||[]){let E=Y.parseIdent(b),R=t.getWorkspaceByIdent(E);v.set(R,"decline")}for(let[b,E]of Object.entries(w.releases||{})){let R=Y.parseIdent(b),L=t.getWorkspaceByIdent(R);v.set(L,tI(E))}return{project:t,root:o,baseHash:a!==null?a.hash:null,baseTitle:a!==null?a.title:null,changedFiles:new Set(n),changedWorkspaces:p,releaseRoots:new Set([...p].filter(b=>b.manifest.version!==null)),releases:v,async saveAll(){let b={},E=[],R=[];for(let L of t.workspaces){if(L.manifest.version===null)continue;let _=Y.stringifyIdent(L.locator),J=v.get(L);J==="decline"?E.push(_):typeof J<"u"?b[_]=tI(J):p.has(L)&&R.push(_)}await ae.mkdirPromise(V.dirname(h),{recursive:!0}),await ae.changeFilePromise(h,Ia(new Ia.PreserveOrdering({releases:Object.keys(b).length>0?b:void 0,declined:E.length>0?E:void 0,undecided:R.length>0?R:void 0})))}}}function Gvt(t){return Zk(t).size>0||wv(t).length>0}function Zk(t){let e=new Set;for(let r of t.changedWorkspaces)r.manifest.version!==null&&(t.releases.has(r)||e.add(r));return e}function wv(t,{include:e=new Set}={}){let r=[],o=new Map(Ye.mapAndFilter([...t.releases],([n,u])=>u==="decline"?Ye.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n])),a=new Map(Ye.mapAndFilter([...t.releases],([n,u])=>u!=="decline"?Ye.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n]));for(let n of t.project.workspaces)if(!(!e.has(n)&&(a.has(n.anchoredLocator.locatorHash)||o.has(n.anchoredLocator.locatorHash)))&&n.manifest.version!==null)for(let u of Nt.hardDependencies)for(let A of n.manifest.getForScope(u).values()){let p=t.project.tryWorkspaceByDescriptor(A);p!==null&&o.has(p.anchoredLocator.locatorHash)&&r.push([n,p])}return r}function L9(t,e){let r=vA.default.clean(e);for(let o of Object.values(rI))if(o!=="undecided"&&o!=="decline"&&vA.default.inc(t,o)===r)return o;return null}function $k(t,e){if(vA.default.valid(e))return e;if(t===null)throw new ot(`Cannot apply the release strategy "${e}" unless the workspace already has a valid version`);if(!vA.default.valid(t))throw new ot(`Cannot apply the release strategy "${e}" on a non-semver version (${t})`);let r=vA.default.inc(t,e);if(r===null)throw new ot(`Cannot apply the release strategy "${e}" on the specified version (${t})`);return r}function O9(t,e,{report:r}){let o=new Map;for(let a of t.workspaces)for(let n of Nt.allDependencies)for(let u of a.manifest[n].values()){let A=t.tryWorkspaceByDescriptor(u);if(A===null||!e.has(A))continue;Ye.getArrayWithDefault(o,A).push([a,n,u.identHash])}for(let[a,n]of e){let u=a.manifest.version;a.manifest.version=n,vA.default.prerelease(n)===null?delete a.manifest.raw.stableVersion:a.manifest.raw.stableVersion||(a.manifest.raw.stableVersion=u);let A=a.manifest.name!==null?Y.stringifyIdent(a.manifest.name):null;r.reportInfo(0,`${Y.prettyLocator(t.configuration,a.anchoredLocator)}: Bumped to ${n}`),r.reportJson({cwd:Ae.fromPortablePath(a.cwd),ident:A,oldVersion:u,newVersion:n});let p=o.get(a);if(!(typeof p>"u"))for(let[h,C,w]of p){let v=h.manifest[C].get(w);if(typeof v>"u")throw new Error("Assertion failed: The dependency should have existed");let b=v.range,E=!1;if(b.startsWith(oi.protocol)&&(b=b.slice(oi.protocol.length),E=!0,b===a.relativeCwd))continue;let R=b.match(jvt);if(!R){r.reportWarning(0,`Couldn't auto-upgrade range ${b} (in ${Y.prettyLocator(t.configuration,h.anchoredLocator)})`);continue}let L=`${R[1]}${n}`;E&&(L=`${oi.protocol}${L}`);let _=Y.makeDescriptor(v,L);h.manifest[C].set(w,_)}}}var Wvt=new Map([["%n",{extract:t=>t.length>=1?[t[0],t.slice(1)]:null,generate:(t=0)=>`${t+1}`}]]);function ave(t,{current:e,prerelease:r}){let o=new vA.default.SemVer(e),a=o.prerelease.slice(),n=[];o.prerelease=[],o.format()!==t&&(a.length=0);let u=!0,A=r.split(/\./g);for(let p of A){let h=Wvt.get(p);if(typeof h>"u")n.push(p),a[0]===p?a.shift():u=!1;else{let C=u?h.extract(a):null;C!==null&&typeof C[0]=="number"?(n.push(h.generate(C[0])),a=C[1]):(n.push(h.generate()),u=!1)}}return o.prerelease&&(o.prerelease=[]),`${t}-${n.join(".")}`}var Jh=class extends ct{constructor(){super(...arguments);this.all=fe.Boolean("--all",!1,{description:"Apply the deferred version changes on all workspaces"});this.dryRun=fe.Boolean("--dry-run",!1,{description:"Print the versions without actually generating the package archive"});this.prerelease=fe.String("--prerelease",{description:"Add a prerelease identifier to new versions",tolerateBoolean:!0});this.recursive=fe.Boolean("-R,--recursive",{description:"Release the transitive workspaces as well"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Ur.find(r);if(!a)throw new er(o.cwd,this.context.cwd);return await o.restoreInstallState({restoreResolutions:!1}),(await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout},async A=>{let p=this.prerelease?typeof this.prerelease!="boolean"?this.prerelease:"rc.%n":null,h=await Iv(o,{prerelease:p}),C=new Map;if(this.all)C=h;else{let w=this.recursive?a.getRecursiveWorkspaceDependencies():[a];for(let v of w){let b=h.get(v);typeof b<"u"&&C.set(v,b)}}if(C.size===0){let w=h.size>0?" Did you want to add --all?":"";A.reportWarning(0,`The current workspace doesn't seem to require a version bump.${w}`);return}O9(o,C,{report:A}),this.dryRun||(p||(this.all?await T9(o):await N9(o,[...C.keys()])),A.reportSeparator(),await o.install({cache:n,report:A}))})).exitCode()}};Jh.paths=[["version","apply"]],Jh.usage=it.Usage({category:"Release-related commands",description:"apply all the deferred version bumps at once",details:` | 707 | - `)}`);let p=new Set(We.mapAndFilter(n,b=>{let E=t.tryWorkspaceByFilePath(b);return E===null?We.mapAndFilter.skip:E}));if(A.length===0&&p.size===0&&!e)return null;let h=A.length===1?A[0]:J.join(u,`${bn.makeHash(Math.random().toString()).slice(0,8)}.yml`),C=oe.existsSync(h)?await oe.readFilePromise(h,"utf8"):"{}",w=Yi(C),v=new Map;for(let b of w.declined||[]){let E=Y.parseIdent(b),R=t.getWorkspaceByIdent(E);v.set(R,"decline")}for(let[b,E]of Object.entries(w.releases||{})){let R=Y.parseIdent(b),L=t.getWorkspaceByIdent(R);v.set(L,sI(E))}return{project:t,root:o,baseHash:a!==null?a.hash:null,baseTitle:a!==null?a.title:null,changedFiles:new Set(n),changedWorkspaces:p,releaseRoots:new Set([...p].filter(b=>b.manifest.version!==null)),releases:v,async saveAll(){let b={},E=[],R=[];for(let L of t.workspaces){if(L.manifest.version===null)continue;let _=Y.stringifyIdent(L.locator),V=v.get(L);V==="decline"?E.push(_):typeof V<"u"?b[_]=sI(V):p.has(L)&&R.push(_)}await oe.mkdirPromise(J.dirname(h),{recursive:!0}),await oe.changeFilePromise(h,Ba(new Ba.PreserveOrdering({releases:Object.keys(b).length>0?b:void 0,declined:E.length>0?E:void 0,undecided:R.length>0?R:void 0})))}}}function cDt(t){return nF(t).size>0||kv(t).length>0}function nF(t){let e=new Set;for(let r of t.changedWorkspaces)r.manifest.version!==null&&(t.releases.has(r)||e.add(r));return e}function kv(t,{include:e=new Set}={}){let r=[],o=new Map(We.mapAndFilter([...t.releases],([n,u])=>u==="decline"?We.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n])),a=new Map(We.mapAndFilter([...t.releases],([n,u])=>u!=="decline"?We.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n]));for(let n of t.project.workspaces)if(!(!e.has(n)&&(a.has(n.anchoredLocator.locatorHash)||o.has(n.anchoredLocator.locatorHash)))&&n.manifest.version!==null)for(let u of Nt.hardDependencies)for(let A of n.manifest.getForScope(u).values()){let p=t.project.tryWorkspaceByDescriptor(A);p!==null&&o.has(p.anchoredLocator.locatorHash)&&r.push([n,p])}return r}function GG(t,e){let r=PA.default.clean(e);for(let o of Object.values(oI))if(o!=="undecided"&&o!=="decline"&&PA.default.inc(t,o)===r)return o;return null}function iF(t,e){if(PA.default.valid(e))return e;if(t===null)throw new ot(`Cannot apply the release strategy "${e}" unless the workspace already has a valid version`);if(!PA.default.valid(t))throw new ot(`Cannot apply the release strategy "${e}" on a non-semver version (${t})`);let r=PA.default.inc(t,e);if(r===null)throw new ot(`Cannot apply the release strategy "${e}" on the specified version (${t})`);return r}function WG(t,e,{report:r}){let o=new Map;for(let a of t.workspaces)for(let n of Nt.allDependencies)for(let u of a.manifest[n].values()){let A=t.tryWorkspaceByDescriptor(u);if(A===null||!e.has(A))continue;We.getArrayWithDefault(o,A).push([a,n,u.identHash])}for(let[a,n]of e){let u=a.manifest.version;a.manifest.version=n,PA.default.prerelease(n)===null?delete a.manifest.raw.stableVersion:a.manifest.raw.stableVersion||(a.manifest.raw.stableVersion=u);let A=a.manifest.name!==null?Y.stringifyIdent(a.manifest.name):null;r.reportInfo(0,`${Y.prettyLocator(t.configuration,a.anchoredLocator)}: Bumped to ${n}`),r.reportJson({cwd:ue.fromPortablePath(a.cwd),ident:A,oldVersion:u,newVersion:n});let p=o.get(a);if(!(typeof p>"u"))for(let[h,C,w]of p){let v=h.manifest[C].get(w);if(typeof v>"u")throw new Error("Assertion failed: The dependency should have existed");let b=v.range,E=!1;if(b.startsWith(Gn.protocol)&&(b=b.slice(Gn.protocol.length),E=!0,b===a.relativeCwd))continue;let R=b.match(lDt);if(!R){r.reportWarning(0,`Couldn't auto-upgrade range ${b} (in ${Y.prettyLocator(t.configuration,h.anchoredLocator)})`);continue}let L=`${R[1]}${n}`;E&&(L=`${Gn.protocol}${L}`);let _=Y.makeDescriptor(v,L);h.manifest[C].set(w,_)}}}var uDt=new Map([["%n",{extract:t=>t.length>=1?[t[0],t.slice(1)]:null,generate:(t=0)=>`${t+1}`}]]);function wve(t,{current:e,prerelease:r}){let o=new PA.default.SemVer(e),a=o.prerelease.slice(),n=[];o.prerelease=[],o.format()!==t&&(a.length=0);let u=!0,A=r.split(/\./g);for(let p of A){let h=uDt.get(p);if(typeof h>"u")n.push(p),a[0]===p?a.shift():u=!1;else{let C=u?h.extract(a):null;C!==null&&typeof C[0]=="number"?(n.push(h.generate(C[0])),a=C[1]):(n.push(h.generate()),u=!1)}}return o.prerelease&&(o.prerelease=[]),`${t}-${n.join(".")}`}var Zh=class extends ct{constructor(){super(...arguments);this.all=fe.Boolean("--all",!1,{description:"Apply the deferred version changes on all workspaces"});this.dryRun=fe.Boolean("--dry-run",!1,{description:"Print the versions without actually generating the package archive"});this.prerelease=fe.String("--prerelease",{description:"Add a prerelease identifier to new versions",tolerateBoolean:!0});this.recursive=fe.Boolean("-R,--recursive",{description:"Release the transitive workspaces as well"});this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"})}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Ur.find(r);if(!a)throw new er(o.cwd,this.context.cwd);return await o.restoreInstallState({restoreResolutions:!1}),(await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout},async A=>{let p=this.prerelease?typeof this.prerelease!="boolean"?this.prerelease:"rc.%n":null,h=await Qv(o,{prerelease:p}),C=new Map;if(this.all)C=h;else{let w=this.recursive?a.getRecursiveWorkspaceDependencies():[a];for(let v of w){let b=h.get(v);typeof b<"u"&&C.set(v,b)}}if(C.size===0){let w=h.size>0?" Did you want to add --all?":"";A.reportWarning(0,`The current workspace doesn't seem to require a version bump.${w}`);return}WG(o,C,{report:A}),this.dryRun||(p||(this.all?await qG(o):await jG(o,[...C.keys()])),A.reportSeparator(),await o.install({cache:n,report:A}))})).exitCode()}};Zh.paths=[["version","apply"]],Zh.usage=it.Usage({category:"Release-related commands",description:"apply all the deferred version bumps at once",details:` |
705 | This command will apply the deferred version changes and remove their definitions from the repository. | 708 | This command will apply the deferred version changes and remove their definitions from the repository. |
706 | 709 | ||
707 | Note that if \`--prerelease\` is set, the given prerelease identifier (by default \`rc.%d\`) will be used on all new versions and the version definitions will be kept as-is. | 710 | Note that if \`--prerelease\` is set, the given prerelease identifier (by default \`rc.%d\`) will be used on all new versions and the version definitions will be kept as-is. |
@@ -712,7 +715,7 @@ ${Avt} | |||
712 | - \`--all\` to apply the version bump on all packages in the repository | 715 | - \`--all\` to apply the version bump on all packages in the repository |
713 | 716 | ||
714 | Note that this command will also update the \`workspace:\` references across all your local workspaces, thus ensuring that they keep referring to the same workspaces even after the version bump. | 717 | Note that this command will also update the \`workspace:\` references across all your local workspaces, thus ensuring that they keep referring to the same workspaces even after the version bump. |
715 | `,examples:[["Apply the version change to the local workspace","yarn version apply"],["Apply the version change to all the workspaces in the local workspace","yarn version apply --all"]]});Ke();bt();_t();var eF=tt(ii());var Vh=class extends ct{constructor(){super(...arguments);this.interactive=fe.Boolean("-i,--interactive",{description:"Open an interactive interface used to set version bumps"})}async execute(){return this.interactive?await this.executeInteractive():await this.executeStandard()}async executeInteractive(){mC(this.context);let{Gem:r}=await Promise.resolve().then(()=>(JQ(),Iq)),{ScrollableItems:o}=await Promise.resolve().then(()=>(ZQ(),XQ)),{FocusRequest:a}=await Promise.resolve().then(()=>(Bq(),cwe)),{useListInput:n}=await Promise.resolve().then(()=>(zQ(),uwe)),{renderForm:u}=await Promise.resolve().then(()=>(rk(),tk)),{Box:A,Text:p}=await Promise.resolve().then(()=>tt(oc())),{default:h,useCallback:C,useState:w}=await Promise.resolve().then(()=>tt(en())),v=await Xe.find(this.context.cwd,this.context.plugins),{project:b,workspace:E}=await St.find(v,this.context.cwd);if(!E)throw new er(b.cwd,this.context.cwd);await b.restoreInstallState();let R=await nI(b);if(R===null||R.releaseRoots.size===0)return 0;if(R.root===null)throw new ot("This command can only be run on Git repositories");let L=()=>h.createElement(A,{flexDirection:"row",paddingBottom:1},h.createElement(A,{flexDirection:"column",width:60},h.createElement(A,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"<up>"),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"<down>")," to select workspaces.")),h.createElement(A,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"<left>"),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"<right>")," to select release strategies."))),h.createElement(A,{flexDirection:"column"},h.createElement(A,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"<enter>")," to save.")),h.createElement(A,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"<ctrl+c>")," to abort.")))),_=({workspace:ve,active:ge,decision:le,setDecision:Pe})=>{let g=ve.manifest.raw.stableVersion??ve.manifest.version;if(g===null)throw new Error(`Assertion failed: The version should have been set (${Y.prettyLocator(v,ve.anchoredLocator)})`);if(eF.default.prerelease(g)!==null)throw new Error(`Assertion failed: Prerelease identifiers shouldn't be found (${g})`);let De=["undecided","decline","patch","minor","major"];n(le,De,{active:ge,minus:"left",plus:"right",set:Pe});let Ee=le==="undecided"?h.createElement(p,{color:"yellow"},g):le==="decline"?h.createElement(p,{color:"green"},g):h.createElement(p,null,h.createElement(p,{color:"magenta"},g)," \u2192 ",h.createElement(p,{color:"green"},eF.default.valid(le)?le:eF.default.inc(g,le)));return h.createElement(A,{flexDirection:"column"},h.createElement(A,null,h.createElement(p,null,Y.prettyLocator(v,ve.anchoredLocator)," - ",Ee)),h.createElement(A,null,De.map(de=>h.createElement(A,{key:de,paddingLeft:2},h.createElement(p,null,h.createElement(r,{active:de===le})," ",de)))))},J=ve=>{let ge=new Set(R.releaseRoots),le=new Map([...ve].filter(([Pe])=>ge.has(Pe)));for(;;){let Pe=wv({project:R.project,releases:le}),g=!1;if(Pe.length>0){for(let[De]of Pe)if(!ge.has(De)){ge.add(De),g=!0;let Ee=ve.get(De);typeof Ee<"u"&&le.set(De,Ee)}}if(!g)break}return{relevantWorkspaces:ge,relevantReleases:le}},re=()=>{let[ve,ge]=w(()=>new Map(R.releases)),le=C((Pe,g)=>{let De=new Map(ve);g!=="undecided"?De.set(Pe,g):De.delete(Pe);let{relevantReleases:Ee}=J(De);ge(Ee)},[ve,ge]);return[ve,le]},oe=({workspaces:ve,releases:ge})=>{let le=[];le.push(`${ve.size} total`);let Pe=0,g=0;for(let De of ve){let Ee=ge.get(De);typeof Ee>"u"?g+=1:Ee!=="decline"&&(Pe+=1)}return le.push(`${Pe} release${Pe===1?"":"s"}`),le.push(`${g} remaining`),h.createElement(p,{color:"yellow"},le.join(", "))},he=await u(({useSubmit:ve})=>{let[ge,le]=re();ve(ge);let{relevantWorkspaces:Pe}=J(ge),g=new Set([...Pe].filter(ne=>!R.releaseRoots.has(ne))),[De,Ee]=w(0),de=C(ne=>{switch(ne){case a.BEFORE:Ee(De-1);break;case a.AFTER:Ee(De+1);break}},[De,Ee]);return h.createElement(A,{flexDirection:"column"},h.createElement(L,null),h.createElement(A,null,h.createElement(p,{wrap:"wrap"},"The following files have been modified in your local checkout.")),h.createElement(A,{flexDirection:"column",marginTop:1,paddingLeft:2},[...R.changedFiles].map(ne=>h.createElement(A,{key:ne},h.createElement(p,null,h.createElement(p,{color:"grey"},Ae.fromPortablePath(R.root)),Ae.sep,Ae.relative(Ae.fromPortablePath(R.root),Ae.fromPortablePath(ne)))))),R.releaseRoots.size>0&&h.createElement(h.Fragment,null,h.createElement(A,{marginTop:1},h.createElement(p,{wrap:"wrap"},"Because of those files having been modified, the following workspaces may need to be released again (note that private workspaces are also shown here, because even though they won't be published, releasing them will allow us to flag their dependents for potential re-release):")),g.size>3?h.createElement(A,{marginTop:1},h.createElement(oe,{workspaces:R.releaseRoots,releases:ge})):null,h.createElement(A,{marginTop:1,flexDirection:"column"},h.createElement(o,{active:De%2===0,radius:1,size:2,onFocusRequest:de},[...R.releaseRoots].map(ne=>h.createElement(_,{key:ne.cwd,workspace:ne,decision:ge.get(ne)||"undecided",setDecision:Z=>le(ne,Z)}))))),g.size>0?h.createElement(h.Fragment,null,h.createElement(A,{marginTop:1},h.createElement(p,{wrap:"wrap"},"The following workspaces depend on other workspaces that have been marked for release, and thus may need to be released as well:")),h.createElement(A,null,h.createElement(p,null,"(Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"<tab>")," to move the focus between the workspace groups.)")),g.size>5?h.createElement(A,{marginTop:1},h.createElement(oe,{workspaces:g,releases:ge})):null,h.createElement(A,{marginTop:1,flexDirection:"column"},h.createElement(o,{active:De%2===1,radius:2,size:2,onFocusRequest:de},[...g].map(ne=>h.createElement(_,{key:ne.cwd,workspace:ne,decision:ge.get(ne)||"undecided",setDecision:Z=>le(ne,Z)}))))):null)},{versionFile:R},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof he>"u")return 1;R.releases.clear();for(let[ve,ge]of he)R.releases.set(ve,ge);await R.saveAll()}async executeStandard(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new er(o.cwd,this.context.cwd);return await o.restoreInstallState(),(await Ct.start({configuration:r,stdout:this.context.stdout},async u=>{let A=await nI(o);if(A===null||A.releaseRoots.size===0)return;if(A.root===null)throw new ot("This command can only be run on Git repositories");if(u.reportInfo(0,`Your PR was started right after ${ye.pretty(r,A.baseHash.slice(0,7),"yellow")} ${ye.pretty(r,A.baseTitle,"magenta")}`),A.changedFiles.size>0){u.reportInfo(0,"You have changed the following files since then:"),u.reportSeparator();for(let v of A.changedFiles)u.reportInfo(null,`${ye.pretty(r,Ae.fromPortablePath(A.root),"gray")}${Ae.sep}${Ae.relative(Ae.fromPortablePath(A.root),Ae.fromPortablePath(v))}`)}let p=!1,h=!1,C=Zk(A);if(C.size>0){p||u.reportSeparator();for(let v of C)u.reportError(0,`${Y.prettyLocator(r,v.anchoredLocator)} has been modified but doesn't have a release strategy attached`);p=!0}let w=wv(A);for(let[v,b]of w)h||u.reportSeparator(),u.reportError(0,`${Y.prettyLocator(r,v.anchoredLocator)} doesn't have a release strategy attached, but depends on ${Y.prettyWorkspace(r,b)} which is planned for release.`),h=!0;(p||h)&&(u.reportSeparator(),u.reportInfo(0,"This command detected that at least some workspaces have received modifications without explicit instructions as to how they had to be released (if needed)."),u.reportInfo(0,"To correct these errors, run `yarn version check --interactive` then follow the instructions."))})).exitCode()}};Vh.paths=[["version","check"]],Vh.usage=it.Usage({category:"Release-related commands",description:"check that all the relevant packages have been bumped",details:"\n **Warning:** This command currently requires Git.\n\n This command will check that all the packages covered by the files listed in argument have been properly bumped or declined to bump.\n\n In the case of a bump, the check will also cover transitive packages - meaning that should `Foo` be bumped, a package `Bar` depending on `Foo` will require a decision as to whether `Bar` will need to be bumped. This check doesn't cross packages that have declined to bump.\n\n In case no arguments are passed to the function, the list of modified files will be generated by comparing the HEAD against `master`.\n ",examples:[["Check whether the modified packages need a bump","yarn version check"]]});Ke();_t();var tF=tt(ii());var zh=class extends ct{constructor(){super(...arguments);this.deferred=fe.Boolean("-d,--deferred",{description:"Prepare the version to be bumped during the next release cycle"});this.immediate=fe.Boolean("-i,--immediate",{description:"Bump the version immediately"});this.strategy=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!a)throw new er(o.cwd,this.context.cwd);let n=r.get("preferDeferredVersions");this.deferred&&(n=!0),this.immediate&&(n=!1);let u=tF.default.valid(this.strategy),A=this.strategy==="decline",p;if(u)if(a.manifest.version!==null){let C=L9(a.manifest.version,this.strategy);C!==null?p=C:p=this.strategy}else p=this.strategy;else{let C=a.manifest.version;if(!A){if(C===null)throw new ot("Can't bump the version if there wasn't a version to begin with - use 0.0.0 as initial version then run the command again.");if(typeof C!="string"||!tF.default.valid(C))throw new ot(`Can't bump the version (${C}) if it's not valid semver`)}p=tI(this.strategy)}if(!n){let w=(await Iv(o)).get(a);if(typeof w<"u"&&p!=="decline"){let v=$k(a.manifest.version,p);if(tF.default.lt(v,w))throw new ot(`Can't bump the version to one that would be lower than the current deferred one (${w})`)}}let h=await nI(o,{allowEmpty:!0});return h.releases.set(a,p),await h.saveAll(),n?0:await this.cli.run(["version","apply"])}};zh.paths=[["version"]],zh.usage=it.Usage({category:"Release-related commands",description:"apply a new version to the current package",details:"\n This command will bump the version number for the given package, following the specified strategy:\n\n - If `major`, the first number from the semver range will be increased (`X.0.0`).\n - If `minor`, the second number from the semver range will be increased (`0.X.0`).\n - If `patch`, the third number from the semver range will be increased (`0.0.X`).\n - If prefixed by `pre` (`premajor`, ...), a `-0` suffix will be set (`0.0.0-0`).\n - If `prerelease`, the suffix will be increased (`0.0.0-X`); the third number from the semver range will also be increased if there was no suffix in the previous version.\n - If `decline`, the nonce will be increased for `yarn version check` to pass without version bump.\n - If a valid semver range, it will be used as new version.\n - If unspecified, Yarn will ask you for guidance.\n\n For more information about the `--deferred` flag, consult our documentation (https://yarnpkg.com/features/release-workflow#deferred-versioning).\n ",examples:[["Immediately bump the version to the next major","yarn version major"],["Prepare the version to be bumped to the next major","yarn version major --deferred"]]});var Yvt={configuration:{deferredVersionFolder:{description:"Folder where are stored the versioning files",type:"ABSOLUTE_PATH",default:"./.yarn/versions"},preferDeferredVersions:{description:"If true, running `yarn version` will assume the `--deferred` flag unless `--immediate` is set",type:"BOOLEAN",default:!1}},commands:[Jh,Vh,zh]},Kvt=Yvt;var U9={};Yt(U9,{WorkspacesFocusCommand:()=>Xh,WorkspacesForeachCommand:()=>Zh,default:()=>zvt});Ke();Ke();_t();var Xh=class extends ct{constructor(){super(...arguments);this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.production=fe.Boolean("--production",!1,{description:"Only install regular dependencies by omitting dev dependencies"});this.all=fe.Boolean("-A,--all",!1,{description:"Install the entire project"});this.workspaces=fe.Rest()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd),n=await Ur.find(r);await o.restoreInstallState({restoreResolutions:!1});let u;if(this.all)u=new Set(o.workspaces);else if(this.workspaces.length===0){if(!a)throw new er(o.cwd,this.context.cwd);u=new Set([a])}else u=new Set(this.workspaces.map(p=>o.getWorkspaceByIdent(Y.parseIdent(p))));for(let p of u)for(let h of this.production?["dependencies"]:Nt.hardDependencies)for(let C of p.manifest.getForScope(h).values()){let w=o.tryWorkspaceByDescriptor(C);w!==null&&u.add(w)}for(let p of o.workspaces)u.has(p)?this.production&&p.manifest.devDependencies.clear():(p.manifest.installConfig=p.manifest.installConfig||{},p.manifest.installConfig.selfReferences=!1,p.manifest.dependencies.clear(),p.manifest.devDependencies.clear(),p.manifest.peerDependencies.clear(),p.manifest.scripts.clear());return(await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout,includeLogs:!0},async p=>{await o.install({cache:n,report:p,persistProject:!1})})).exitCode()}};Xh.paths=[["workspaces","focus"]],Xh.usage=it.Usage({category:"Workspace-related commands",description:"install a single workspace and its dependencies",details:"\n This command will run an install as if the specified workspaces (and all other workspaces they depend on) were the only ones in the project. If no workspaces are explicitly listed, the active one will be assumed.\n\n Note that this command is only very moderately useful when using zero-installs, since the cache will contain all the packages anyway - meaning that the only difference between a full install and a focused install would just be a few extra lines in the `.pnp.cjs` file, at the cost of introducing an extra complexity.\n\n If the `-A,--all` flag is set, the entire project will be installed. Combine with `--production` to replicate the old `yarn install --production`.\n "});Ke();Ke();Ke();_t();var rF=tt(Jo()),cve=tt($g());$a();var Zh=class extends ct{constructor(){super(...arguments);this.recursive=fe.Boolean("-R,--recursive",!1,{description:"Find packages via dependencies/devDependencies instead of using the workspaces field"});this.from=fe.Array("--from",[],{description:"An array of glob pattern idents from which to base any recursion"});this.all=fe.Boolean("-A,--all",!1,{description:"Run the command on all workspaces of a project"});this.verbose=fe.Boolean("-v,--verbose",{description:"Prefix each output line with the name of the originating workspace"});this.parallel=fe.Boolean("-p,--parallel",!1,{description:"Run the commands in parallel"});this.interlaced=fe.Boolean("-i,--interlaced",!1,{description:"Print the output of commands in real-time instead of buffering it"});this.jobs=fe.String("-j,--jobs",{description:"The maximum number of parallel tasks that the execution will be limited to; or `unlimited`",validator:NT([Gs(["unlimited"]),Xg(TT(),[OT(),LT(1)])])});this.topological=fe.Boolean("-t,--topological",!1,{description:"Run the command after all workspaces it depends on (regular) have finished"});this.topologicalDev=fe.Boolean("--topological-dev",!1,{description:"Run the command after all workspaces it depends on (regular + dev) have finished"});this.include=fe.Array("--include",[],{description:"An array of glob pattern idents; only matching workspaces will be traversed"});this.exclude=fe.Array("--exclude",[],{description:"An array of glob pattern idents; matching workspaces won't be traversed"});this.publicOnly=fe.Boolean("--no-private",{description:"Avoid running the command on private workspaces"});this.since=fe.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.commandName=fe.String();this.args=fe.Proxy()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await St.find(r,this.context.cwd);if(!this.all&&!a)throw new er(o.cwd,this.context.cwd);await o.restoreInstallState();let n=this.cli.process([this.commandName,...this.args]),u=n.path.length===1&&n.path[0]==="run"&&typeof n.scriptName<"u"?n.scriptName:null;if(n.path.length===0)throw new ot("Invalid subcommand name for iteration - use the 'run' keyword if you wish to execute a script");let A=this.all?o.topLevelWorkspace:a,p=this.since?Array.from(await Zo.fetchChangedWorkspaces({ref:this.since,project:o})):[A,...this.from.length>0?A.getRecursiveWorkspaceChildren():[]],h=le=>rF.default.isMatch(Y.stringifyIdent(le.locator),this.from),C=this.from.length>0?p.filter(h):p,w=new Set([...C,...C.map(le=>[...this.recursive?this.since?le.getRecursiveWorkspaceDependents():le.getRecursiveWorkspaceDependencies():le.getRecursiveWorkspaceChildren()]).flat()]),v=[],b=!1;if(u!=null&&u.includes(":")){for(let le of o.workspaces)if(le.manifest.scripts.has(u)&&(b=!b,b===!1))break}for(let le of w)u&&!le.manifest.scripts.has(u)&&!b&&!(await sn.getWorkspaceAccessibleBinaries(le)).has(u)||u===process.env.npm_lifecycle_event&&le.cwd===a.cwd||this.include.length>0&&!rF.default.isMatch(Y.stringifyIdent(le.locator),this.include)||this.exclude.length>0&&rF.default.isMatch(Y.stringifyIdent(le.locator),this.exclude)||this.publicOnly&&le.manifest.private===!0||v.push(le);let E=this.verbose??this.context.stdout.isTTY,R=this.parallel?this.jobs==="unlimited"?1/0:Number(this.jobs)||Math.ceil(As.availableParallelism()/2):1,L=R===1?!1:this.parallel,_=L?this.interlaced:!0,J=(0,cve.default)(R),re=new Map,oe=new Set,pe=0,he=null,ve=!1,ge=await Ct.start({configuration:r,stdout:this.context.stdout,includePrefix:!1},async le=>{let Pe=async(g,{commandIndex:De})=>{if(ve)return-1;!L&&E&&De>1&&le.reportSeparator();let Ee=Jvt(g,{configuration:r,verbose:E,commandIndex:De}),[de,ne]=lve(le,{prefix:Ee,interlaced:_}),[Z,me]=lve(le,{prefix:Ee,interlaced:_});try{E&&le.reportInfo(null,`${Ee} Process started`);let be=Date.now(),ut=await this.cli.run([this.commandName,...this.args],{cwd:g.cwd,stdout:de,stderr:Z})||0;de.end(),Z.end(),await ne,await me;let H=Date.now();if(E){let yt=r.get("enableTimers")?`, completed in ${ye.pretty(r,H-be,ye.Type.DURATION)}`:"";le.reportInfo(null,`${Ee} Process exited (exit code ${ut})${yt}`)}return ut===130&&(ve=!0,he=ut),ut}catch(be){throw de.end(),Z.end(),await ne,await me,be}};for(let g of v)re.set(g.anchoredLocator.locatorHash,g);for(;re.size>0&&!le.hasErrors();){let g=[];for(let[de,ne]of re){if(oe.has(ne.anchoredDescriptor.descriptorHash))continue;let Z=!0;if(this.topological||this.topologicalDev){let me=this.topologicalDev?new Map([...ne.manifest.dependencies,...ne.manifest.devDependencies]):ne.manifest.dependencies;for(let be of me.values()){let ut=o.tryWorkspaceByDescriptor(be);if(Z=ut===null||!re.has(ut.anchoredLocator.locatorHash),!Z)break}}if(!!Z&&(oe.add(ne.anchoredDescriptor.descriptorHash),g.push(J(async()=>{let me=await Pe(ne,{commandIndex:++pe});return re.delete(de),oe.delete(ne.anchoredDescriptor.descriptorHash),me})),!L))break}if(g.length===0){let de=Array.from(re.values()).map(ne=>Y.prettyLocator(r,ne.anchoredLocator)).join(", ");le.reportError(3,`Dependency cycle detected (${de})`);return}let Ee=(await Promise.all(g)).find(de=>de!==0);he===null&&(he=typeof Ee<"u"?1:he),(this.topological||this.topologicalDev)&&typeof Ee<"u"&&le.reportError(0,"The command failed for workspaces that are depended upon by other workspaces; can't satisfy the dependency graph")}});return he!==null?he:ge.exitCode()}};Zh.paths=[["workspaces","foreach"]],Zh.usage=it.Usage({category:"Workspace-related commands",description:"run a command on all workspaces",details:"\n This command will run a given sub-command on current and all its descendant workspaces. Various flags can alter the exact behavior of the command:\n\n - If `-p,--parallel` is set, the commands will be ran in parallel; they'll by default be limited to a number of parallel tasks roughly equal to half your core number, but that can be overridden via `-j,--jobs`, or disabled by setting `-j unlimited`.\n\n - If `-p,--parallel` and `-i,--interlaced` are both set, Yarn will print the lines from the output as it receives them. If `-i,--interlaced` wasn't set, it would instead buffer the output from each process and print the resulting buffers only after their source processes have exited.\n\n - If `-t,--topological` is set, Yarn will only run the command after all workspaces that it depends on through the `dependencies` field have successfully finished executing. If `--topological-dev` is set, both the `dependencies` and `devDependencies` fields will be considered when figuring out the wait points.\n\n - If `-A,--all` is set, Yarn will run the command on all the workspaces of a project. By default yarn runs the command only on current and all its descendant workspaces.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If `--from` is set, Yarn will use the packages matching the 'from' glob as the starting point for any recursive search.\n\n - If `--since` is set, Yarn will only run the command on workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - The command may apply to only some workspaces through the use of `--include` which acts as a whitelist. The `--exclude` flag will do the opposite and will be a list of packages that mustn't execute the script. Both flags accept glob patterns (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n Adding the `-v,--verbose` flag (automatically enabled in interactive terminal environments) will cause Yarn to print more information; in particular the name of the workspace that generated the output will be printed at the front of each line.\n\n If the command is `run` and the script being run does not exist the child workspace will be skipped without error.\n ",examples:[["Publish current and all descendant packages","yarn workspaces foreach npm publish --tolerate-republish"],["Run build script on current and all descendant packages","yarn workspaces foreach run build"],["Run build script on current and all descendant packages in parallel, building package dependencies first","yarn workspaces foreach -pt run build"],["Run build script on several packages and all their dependencies, building dependencies first","yarn workspaces foreach -ptR --from '{workspace-a,workspace-b}' run build"]]});function lve(t,{prefix:e,interlaced:r}){let o=t.createStreamReporter(e),a=new Ye.DefaultStream;a.pipe(o,{end:!1}),a.on("finish",()=>{o.end()});let n=new Promise(A=>{o.on("finish",()=>{A(a.active)})});if(r)return[a,n];let u=new Ye.BufferStream;return u.pipe(a,{end:!1}),u.on("finish",()=>{a.end()}),[u,n]}function Jvt(t,{configuration:e,commandIndex:r,verbose:o}){if(!o)return null;let n=`[${Y.stringifyIdent(t.locator)}]:`,u=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],A=u[r%u.length];return ye.pretty(e,n,A)}var Vvt={commands:[Xh,Zh]},zvt=Vvt;var qb=()=>({modules:new Map([["@yarnpkg/cli",H1],["@yarnpkg/core",_1],["@yarnpkg/fslib",TI],["@yarnpkg/libzip",LI],["@yarnpkg/parsers",GI],["@yarnpkg/shell",E1],["clipanion",$I],["semver",Xvt],["typanion",Go],["@yarnpkg/plugin-essentials",X8],["@yarnpkg/plugin-compat",rH],["@yarnpkg/plugin-constraints",EH],["@yarnpkg/plugin-dlx",CH],["@yarnpkg/plugin-exec",BH],["@yarnpkg/plugin-file",DH],["@yarnpkg/plugin-git",z8],["@yarnpkg/plugin-github",xH],["@yarnpkg/plugin-http",bH],["@yarnpkg/plugin-init",QH],["@yarnpkg/plugin-interactive-tools",Fq],["@yarnpkg/plugin-link",Rq],["@yarnpkg/plugin-nm",Aj],["@yarnpkg/plugin-npm",l9],["@yarnpkg/plugin-npm-cli",d9],["@yarnpkg/plugin-pack",n9],["@yarnpkg/plugin-patch",B9],["@yarnpkg/plugin-pnp",$q],["@yarnpkg/plugin-pnpm",S9],["@yarnpkg/plugin-stage",F9],["@yarnpkg/plugin-typescript",R9],["@yarnpkg/plugin-version",M9],["@yarnpkg/plugin-workspace-tools",U9]]),plugins:new Set(["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-constraints","@yarnpkg/plugin-dlx","@yarnpkg/plugin-exec","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools"])});Hb({binaryVersion:On||"<unknown>",pluginConfiguration:qb()});})(); | 718 | `,examples:[["Apply the version change to the local workspace","yarn version apply"],["Apply the version change to all the workspaces in the local workspace","yarn version apply --all"]]});Ke();St();_t();var sF=tt(si());var $h=class extends ct{constructor(){super(...arguments);this.interactive=fe.Boolean("-i,--interactive",{description:"Open an interactive interface used to set version bumps"})}async execute(){return this.interactive?await this.executeInteractive():await this.executeStandard()}async executeInteractive(){wC(this.context);let{Gem:r}=await Promise.resolve().then(()=>(ik(),vq)),{ScrollableItems:o}=await Promise.resolve().then(()=>(lk(),ak)),{FocusRequest:a}=await Promise.resolve().then(()=>(Sq(),mwe)),{useListInput:n}=await Promise.resolve().then(()=>(ok(),ywe)),{renderForm:u}=await Promise.resolve().then(()=>(fk(),Ak)),{Box:A,Text:p}=await Promise.resolve().then(()=>tt(uc())),{default:h,useCallback:C,useState:w}=await Promise.resolve().then(()=>tt(en())),v=await Xe.find(this.context.cwd,this.context.plugins),{project:b,workspace:E}=await Pt.find(v,this.context.cwd);if(!E)throw new er(b.cwd,this.context.cwd);await b.restoreInstallState();let R=await aI(b);if(R===null||R.releaseRoots.size===0)return 0;if(R.root===null)throw new ot("This command can only be run on Git repositories");let L=()=>h.createElement(A,{flexDirection:"row",paddingBottom:1},h.createElement(A,{flexDirection:"column",width:60},h.createElement(A,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"<up>"),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"<down>")," to select workspaces.")),h.createElement(A,null,h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"<left>"),"/",h.createElement(p,{bold:!0,color:"cyanBright"},"<right>")," to select release strategies."))),h.createElement(A,{flexDirection:"column"},h.createElement(A,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"<enter>")," to save.")),h.createElement(A,{marginLeft:1},h.createElement(p,null,"Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"<ctrl+c>")," to abort.")))),_=({workspace:De,active:ge,decision:le,setDecision:Pe})=>{let g=De.manifest.raw.stableVersion??De.manifest.version;if(g===null)throw new Error(`Assertion failed: The version should have been set (${Y.prettyLocator(v,De.anchoredLocator)})`);if(sF.default.prerelease(g)!==null)throw new Error(`Assertion failed: Prerelease identifiers shouldn't be found (${g})`);let ve=["undecided","decline","patch","minor","major"];n(le,ve,{active:ge,minus:"left",plus:"right",set:Pe});let Ee=le==="undecided"?h.createElement(p,{color:"yellow"},g):le==="decline"?h.createElement(p,{color:"green"},g):h.createElement(p,null,h.createElement(p,{color:"magenta"},g)," \u2192 ",h.createElement(p,{color:"green"},sF.default.valid(le)?le:sF.default.inc(g,le)));return h.createElement(A,{flexDirection:"column"},h.createElement(A,null,h.createElement(p,null,Y.prettyLocator(v,De.anchoredLocator)," - ",Ee)),h.createElement(A,null,ve.map(de=>h.createElement(A,{key:de,paddingLeft:2},h.createElement(p,null,h.createElement(r,{active:de===le})," ",de)))))},V=De=>{let ge=new Set(R.releaseRoots),le=new Map([...De].filter(([Pe])=>ge.has(Pe)));for(;;){let Pe=kv({project:R.project,releases:le}),g=!1;if(Pe.length>0){for(let[ve]of Pe)if(!ge.has(ve)){ge.add(ve),g=!0;let Ee=De.get(ve);typeof Ee<"u"&&le.set(ve,Ee)}}if(!g)break}return{relevantWorkspaces:ge,relevantReleases:le}},re=()=>{let[De,ge]=w(()=>new Map(R.releases)),le=C((Pe,g)=>{let ve=new Map(De);g!=="undecided"?ve.set(Pe,g):ve.delete(Pe);let{relevantReleases:Ee}=V(ve);ge(Ee)},[De,ge]);return[De,le]},ae=({workspaces:De,releases:ge})=>{let le=[];le.push(`${De.size} total`);let Pe=0,g=0;for(let ve of De){let Ee=ge.get(ve);typeof Ee>"u"?g+=1:Ee!=="decline"&&(Pe+=1)}return le.push(`${Pe} release${Pe===1?"":"s"}`),le.push(`${g} remaining`),h.createElement(p,{color:"yellow"},le.join(", "))},pe=await u(({useSubmit:De})=>{let[ge,le]=re();De(ge);let{relevantWorkspaces:Pe}=V(ge),g=new Set([...Pe].filter(ne=>!R.releaseRoots.has(ne))),[ve,Ee]=w(0),de=C(ne=>{switch(ne){case a.BEFORE:Ee(ve-1);break;case a.AFTER:Ee(ve+1);break}},[ve,Ee]);return h.createElement(A,{flexDirection:"column"},h.createElement(L,null),h.createElement(A,null,h.createElement(p,{wrap:"wrap"},"The following files have been modified in your local checkout.")),h.createElement(A,{flexDirection:"column",marginTop:1,paddingLeft:2},[...R.changedFiles].map(ne=>h.createElement(A,{key:ne},h.createElement(p,null,h.createElement(p,{color:"grey"},ue.fromPortablePath(R.root)),ue.sep,ue.relative(ue.fromPortablePath(R.root),ue.fromPortablePath(ne)))))),R.releaseRoots.size>0&&h.createElement(h.Fragment,null,h.createElement(A,{marginTop:1},h.createElement(p,{wrap:"wrap"},"Because of those files having been modified, the following workspaces may need to be released again (note that private workspaces are also shown here, because even though they won't be published, releasing them will allow us to flag their dependents for potential re-release):")),g.size>3?h.createElement(A,{marginTop:1},h.createElement(ae,{workspaces:R.releaseRoots,releases:ge})):null,h.createElement(A,{marginTop:1,flexDirection:"column"},h.createElement(o,{active:ve%2===0,radius:1,size:2,onFocusRequest:de},[...R.releaseRoots].map(ne=>h.createElement(_,{key:ne.cwd,workspace:ne,decision:ge.get(ne)||"undecided",setDecision:Z=>le(ne,Z)}))))),g.size>0?h.createElement(h.Fragment,null,h.createElement(A,{marginTop:1},h.createElement(p,{wrap:"wrap"},"The following workspaces depend on other workspaces that have been marked for release, and thus may need to be released as well:")),h.createElement(A,null,h.createElement(p,null,"(Press ",h.createElement(p,{bold:!0,color:"cyanBright"},"<tab>")," to move the focus between the workspace groups.)")),g.size>5?h.createElement(A,{marginTop:1},h.createElement(ae,{workspaces:g,releases:ge})):null,h.createElement(A,{marginTop:1,flexDirection:"column"},h.createElement(o,{active:ve%2===1,radius:2,size:2,onFocusRequest:de},[...g].map(ne=>h.createElement(_,{key:ne.cwd,workspace:ne,decision:ge.get(ne)||"undecided",setDecision:Z=>le(ne,Z)}))))):null)},{versionFile:R},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof pe>"u")return 1;R.releases.clear();for(let[De,ge]of pe)R.releases.set(De,ge);await R.saveAll()}async executeStandard(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new er(o.cwd,this.context.cwd);return await o.restoreInstallState(),(await Ct.start({configuration:r,stdout:this.context.stdout},async u=>{let A=await aI(o);if(A===null||A.releaseRoots.size===0)return;if(A.root===null)throw new ot("This command can only be run on Git repositories");if(u.reportInfo(0,`Your PR was started right after ${ye.pretty(r,A.baseHash.slice(0,7),"yellow")} ${ye.pretty(r,A.baseTitle,"magenta")}`),A.changedFiles.size>0){u.reportInfo(0,"You have changed the following files since then:"),u.reportSeparator();for(let v of A.changedFiles)u.reportInfo(null,`${ye.pretty(r,ue.fromPortablePath(A.root),"gray")}${ue.sep}${ue.relative(ue.fromPortablePath(A.root),ue.fromPortablePath(v))}`)}let p=!1,h=!1,C=nF(A);if(C.size>0){p||u.reportSeparator();for(let v of C)u.reportError(0,`${Y.prettyLocator(r,v.anchoredLocator)} has been modified but doesn't have a release strategy attached`);p=!0}let w=kv(A);for(let[v,b]of w)h||u.reportSeparator(),u.reportError(0,`${Y.prettyLocator(r,v.anchoredLocator)} doesn't have a release strategy attached, but depends on ${Y.prettyWorkspace(r,b)} which is planned for release.`),h=!0;(p||h)&&(u.reportSeparator(),u.reportInfo(0,"This command detected that at least some workspaces have received modifications without explicit instructions as to how they had to be released (if needed)."),u.reportInfo(0,"To correct these errors, run `yarn version check --interactive` then follow the instructions."))})).exitCode()}};$h.paths=[["version","check"]],$h.usage=it.Usage({category:"Release-related commands",description:"check that all the relevant packages have been bumped",details:"\n **Warning:** This command currently requires Git.\n\n This command will check that all the packages covered by the files listed in argument have been properly bumped or declined to bump.\n\n In the case of a bump, the check will also cover transitive packages - meaning that should `Foo` be bumped, a package `Bar` depending on `Foo` will require a decision as to whether `Bar` will need to be bumped. This check doesn't cross packages that have declined to bump.\n\n In case no arguments are passed to the function, the list of modified files will be generated by comparing the HEAD against `master`.\n ",examples:[["Check whether the modified packages need a bump","yarn version check"]]});Ke();_t();var oF=tt(si());var eg=class extends ct{constructor(){super(...arguments);this.deferred=fe.Boolean("-d,--deferred",{description:"Prepare the version to be bumped during the next release cycle"});this.immediate=fe.Boolean("-i,--immediate",{description:"Bump the version immediately"});this.strategy=fe.String()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!a)throw new er(o.cwd,this.context.cwd);let n=r.get("preferDeferredVersions");this.deferred&&(n=!0),this.immediate&&(n=!1);let u=oF.default.valid(this.strategy),A=this.strategy==="decline",p;if(u)if(a.manifest.version!==null){let C=GG(a.manifest.version,this.strategy);C!==null?p=C:p=this.strategy}else p=this.strategy;else{let C=a.manifest.version;if(!A){if(C===null)throw new ot("Can't bump the version if there wasn't a version to begin with - use 0.0.0 as initial version then run the command again.");if(typeof C!="string"||!oF.default.valid(C))throw new ot(`Can't bump the version (${C}) if it's not valid semver`)}p=sI(this.strategy)}if(!n){let w=(await Qv(o)).get(a);if(typeof w<"u"&&p!=="decline"){let v=iF(a.manifest.version,p);if(oF.default.lt(v,w))throw new ot(`Can't bump the version to one that would be lower than the current deferred one (${w})`)}}let h=await aI(o,{allowEmpty:!0});return h.releases.set(a,p),await h.saveAll(),n?0:await this.cli.run(["version","apply"])}};eg.paths=[["version"]],eg.usage=it.Usage({category:"Release-related commands",description:"apply a new version to the current package",details:"\n This command will bump the version number for the given package, following the specified strategy:\n\n - If `major`, the first number from the semver range will be increased (`X.0.0`).\n - If `minor`, the second number from the semver range will be increased (`0.X.0`).\n - If `patch`, the third number from the semver range will be increased (`0.0.X`).\n - If prefixed by `pre` (`premajor`, ...), a `-0` suffix will be set (`0.0.0-0`).\n - If `prerelease`, the suffix will be increased (`0.0.0-X`); the third number from the semver range will also be increased if there was no suffix in the previous version.\n - If `decline`, the nonce will be increased for `yarn version check` to pass without version bump.\n - If a valid semver range, it will be used as new version.\n - If unspecified, Yarn will ask you for guidance.\n\n For more information about the `--deferred` flag, consult our documentation (https://yarnpkg.com/features/release-workflow#deferred-versioning).\n ",examples:[["Immediately bump the version to the next major","yarn version major"],["Prepare the version to be bumped to the next major","yarn version major --deferred"]]});var ADt={configuration:{deferredVersionFolder:{description:"Folder where are stored the versioning files",type:"ABSOLUTE_PATH",default:"./.yarn/versions"},preferDeferredVersions:{description:"If true, running `yarn version` will assume the `--deferred` flag unless `--immediate` is set",type:"BOOLEAN",default:!1}},commands:[Zh,$h,eg]},fDt=ADt;var KG={};Yt(KG,{WorkspacesFocusCommand:()=>tg,WorkspacesForeachCommand:()=>rg,default:()=>gDt});Ke();Ke();_t();var tg=class extends ct{constructor(){super(...arguments);this.json=fe.Boolean("--json",!1,{description:"Format the output as an NDJSON stream"});this.production=fe.Boolean("--production",!1,{description:"Only install regular dependencies by omitting dev dependencies"});this.all=fe.Boolean("-A,--all",!1,{description:"Install the entire project"});this.workspaces=fe.Rest()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd),n=await Ur.find(r);await o.restoreInstallState({restoreResolutions:!1});let u;if(this.all)u=new Set(o.workspaces);else if(this.workspaces.length===0){if(!a)throw new er(o.cwd,this.context.cwd);u=new Set([a])}else u=new Set(this.workspaces.map(p=>o.getWorkspaceByIdent(Y.parseIdent(p))));for(let p of u)for(let h of this.production?["dependencies"]:Nt.hardDependencies)for(let C of p.manifest.getForScope(h).values()){let w=o.tryWorkspaceByDescriptor(C);w!==null&&u.add(w)}for(let p of o.workspaces)u.has(p)?this.production&&p.manifest.devDependencies.clear():(p.manifest.installConfig=p.manifest.installConfig||{},p.manifest.installConfig.selfReferences=!1,p.manifest.dependencies.clear(),p.manifest.devDependencies.clear(),p.manifest.peerDependencies.clear(),p.manifest.scripts.clear());return(await Ct.start({configuration:r,json:this.json,stdout:this.context.stdout,includeLogs:!0},async p=>{await o.install({cache:n,report:p,persistProject:!1})})).exitCode()}};tg.paths=[["workspaces","focus"]],tg.usage=it.Usage({category:"Workspace-related commands",description:"install a single workspace and its dependencies",details:"\n This command will run an install as if the specified workspaces (and all other workspaces they depend on) were the only ones in the project. If no workspaces are explicitly listed, the active one will be assumed.\n\n Note that this command is only very moderately useful when using zero-installs, since the cache will contain all the packages anyway - meaning that the only difference between a full install and a focused install would just be a few extra lines in the `.pnp.cjs` file, at the cost of introducing an extra complexity.\n\n If the `-A,--all` flag is set, the entire project will be installed. Combine with `--production` to replicate the old `yarn install --production`.\n "});Ke();Ke();Ke();_t();var xm=tt(zo()),vve=tt(nd());rl();var rg=class extends ct{constructor(){super(...arguments);this.recursive=fe.Boolean("-R,--recursive",!1,{description:"Find packages via dependencies/devDependencies instead of using the workspaces field"});this.from=fe.Array("--from",[],{description:"An array of glob pattern idents or paths from which to base any recursion"});this.all=fe.Boolean("-A,--all",!1,{description:"Run the command on all workspaces of a project"});this.verbose=fe.Boolean("-v,--verbose",{description:"Prefix each output line with the name of the originating workspace"});this.parallel=fe.Boolean("-p,--parallel",!1,{description:"Run the commands in parallel"});this.interlaced=fe.Boolean("-i,--interlaced",!1,{description:"Print the output of commands in real-time instead of buffering it"});this.jobs=fe.String("-j,--jobs",{description:"The maximum number of parallel tasks that the execution will be limited to; or `unlimited`",validator:MT([Gs(["unlimited"]),td(OT(),[_T(),UT(1)])])});this.topological=fe.Boolean("-t,--topological",!1,{description:"Run the command after all workspaces it depends on (regular) have finished"});this.topologicalDev=fe.Boolean("--topological-dev",!1,{description:"Run the command after all workspaces it depends on (regular + dev) have finished"});this.include=fe.Array("--include",[],{description:"An array of glob pattern idents or paths; only matching workspaces will be traversed"});this.exclude=fe.Array("--exclude",[],{description:"An array of glob pattern idents or paths; matching workspaces won't be traversed"});this.publicOnly=fe.Boolean("--no-private",{description:"Avoid running the command on private workspaces"});this.since=fe.String("--since",{description:"Only include workspaces that have been changed since the specified ref.",tolerateBoolean:!0});this.commandName=fe.String();this.args=fe.Proxy()}async execute(){let r=await Xe.find(this.context.cwd,this.context.plugins),{project:o,workspace:a}=await Pt.find(r,this.context.cwd);if(!this.all&&!a)throw new er(o.cwd,this.context.cwd);await o.restoreInstallState();let n=this.cli.process([this.commandName,...this.args]),u=n.path.length===1&&n.path[0]==="run"&&typeof n.scriptName<"u"?n.scriptName:null;if(n.path.length===0)throw new ot("Invalid subcommand name for iteration - use the 'run' keyword if you wish to execute a script");let A=this.all?o.topLevelWorkspace:a,p=this.since?Array.from(await ea.fetchChangedWorkspaces({ref:this.since,project:o})):[A,...this.from.length>0?A.getRecursiveWorkspaceChildren():[]],h=le=>xm.default.isMatch(Y.stringifyIdent(le.locator),this.from)||xm.default.isMatch(le.relativeCwd,this.from),C=this.from.length>0?p.filter(h):p,w=new Set([...C,...C.map(le=>[...this.recursive?this.since?le.getRecursiveWorkspaceDependents():le.getRecursiveWorkspaceDependencies():le.getRecursiveWorkspaceChildren()]).flat()]),v=[],b=!1;if(u!=null&&u.includes(":")){for(let le of o.workspaces)if(le.manifest.scripts.has(u)&&(b=!b,b===!1))break}for(let le of w)u&&!le.manifest.scripts.has(u)&&!b&&!(await sn.getWorkspaceAccessibleBinaries(le)).has(u)||u===process.env.npm_lifecycle_event&&le.cwd===a.cwd||this.include.length>0&&!xm.default.isMatch(Y.stringifyIdent(le.locator),this.include)&&!xm.default.isMatch(le.relativeCwd,this.include)||this.exclude.length>0&&(xm.default.isMatch(Y.stringifyIdent(le.locator),this.exclude)||xm.default.isMatch(le.relativeCwd,this.exclude))||this.publicOnly&&le.manifest.private===!0||v.push(le);let E=this.verbose??this.context.stdout.isTTY,R=this.parallel?this.jobs==="unlimited"?1/0:Number(this.jobs)||Math.ceil(As.availableParallelism()/2):1,L=R===1?!1:this.parallel,_=L?this.interlaced:!0,V=(0,vve.default)(R),re=new Map,ae=new Set,he=0,pe=null,De=!1,ge=await Ct.start({configuration:r,stdout:this.context.stdout,includePrefix:!1},async le=>{let Pe=async(g,{commandIndex:ve})=>{if(De)return-1;!L&&E&&ve>1&&le.reportSeparator();let Ee=pDt(g,{configuration:r,verbose:E,commandIndex:ve}),[de,ne]=Bve(le,{prefix:Ee,interlaced:_}),[Z,me]=Bve(le,{prefix:Ee,interlaced:_});try{E&&le.reportInfo(null,`${Ee} Process started`);let be=Date.now(),ut=await this.cli.run([this.commandName,...this.args],{cwd:g.cwd,stdout:de,stderr:Z})||0;de.end(),Z.end(),await ne,await me;let H=Date.now();if(E){let yt=r.get("enableTimers")?`, completed in ${ye.pretty(r,H-be,ye.Type.DURATION)}`:"";le.reportInfo(null,`${Ee} Process exited (exit code ${ut})${yt}`)}return ut===130&&(De=!0,pe=ut),ut}catch(be){throw de.end(),Z.end(),await ne,await me,be}};for(let g of v)re.set(g.anchoredLocator.locatorHash,g);for(;re.size>0&&!le.hasErrors();){let g=[];for(let[de,ne]of re){if(ae.has(ne.anchoredDescriptor.descriptorHash))continue;let Z=!0;if(this.topological||this.topologicalDev){let me=this.topologicalDev?new Map([...ne.manifest.dependencies,...ne.manifest.devDependencies]):ne.manifest.dependencies;for(let be of me.values()){let ut=o.tryWorkspaceByDescriptor(be);if(Z=ut===null||!re.has(ut.anchoredLocator.locatorHash),!Z)break}}if(!!Z&&(ae.add(ne.anchoredDescriptor.descriptorHash),g.push(V(async()=>{let me=await Pe(ne,{commandIndex:++he});return re.delete(de),ae.delete(ne.anchoredDescriptor.descriptorHash),me})),!L))break}if(g.length===0){let de=Array.from(re.values()).map(ne=>Y.prettyLocator(r,ne.anchoredLocator)).join(", ");le.reportError(3,`Dependency cycle detected (${de})`);return}let Ee=(await Promise.all(g)).find(de=>de!==0);pe===null&&(pe=typeof Ee<"u"?1:pe),(this.topological||this.topologicalDev)&&typeof Ee<"u"&&le.reportError(0,"The command failed for workspaces that are depended upon by other workspaces; can't satisfy the dependency graph")}});return pe!==null?pe:ge.exitCode()}};rg.paths=[["workspaces","foreach"]],rg.usage=it.Usage({category:"Workspace-related commands",description:"run a command on all workspaces",details:"\n This command will run a given sub-command on current and all its descendant workspaces. Various flags can alter the exact behavior of the command:\n\n - If `-p,--parallel` is set, the commands will be ran in parallel; they'll by default be limited to a number of parallel tasks roughly equal to half your core number, but that can be overridden via `-j,--jobs`, or disabled by setting `-j unlimited`.\n\n - If `-p,--parallel` and `-i,--interlaced` are both set, Yarn will print the lines from the output as it receives them. If `-i,--interlaced` wasn't set, it would instead buffer the output from each process and print the resulting buffers only after their source processes have exited.\n\n - If `-t,--topological` is set, Yarn will only run the command after all workspaces that it depends on through the `dependencies` field have successfully finished executing. If `--topological-dev` is set, both the `dependencies` and `devDependencies` fields will be considered when figuring out the wait points.\n\n - If `-A,--all` is set, Yarn will run the command on all the workspaces of a project. By default yarn runs the command only on current and all its descendant workspaces.\n\n - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\n\n - If `--from` is set, Yarn will use the packages matching the 'from' glob as the starting point for any recursive search.\n\n - If `--since` is set, Yarn will only run the command on workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\n\n - The command may apply to only some workspaces through the use of `--include` which acts as a whitelist. The `--exclude` flag will do the opposite and will be a list of packages that mustn't execute the script. Both flags accept glob patterns (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n Adding the `-v,--verbose` flag (automatically enabled in interactive terminal environments) will cause Yarn to print more information; in particular the name of the workspace that generated the output will be printed at the front of each line.\n\n If the command is `run` and the script being run does not exist the child workspace will be skipped without error.\n ",examples:[["Publish current and all descendant packages","yarn workspaces foreach npm publish --tolerate-republish"],["Run build script on current and all descendant packages","yarn workspaces foreach run build"],["Run build script on current and all descendant packages in parallel, building package dependencies first","yarn workspaces foreach -pt run build"],["Run build script on several packages and all their dependencies, building dependencies first","yarn workspaces foreach -ptR --from '{workspace-a,workspace-b}' run build"]]});function Bve(t,{prefix:e,interlaced:r}){let o=t.createStreamReporter(e),a=new We.DefaultStream;a.pipe(o,{end:!1}),a.on("finish",()=>{o.end()});let n=new Promise(A=>{o.on("finish",()=>{A(a.active)})});if(r)return[a,n];let u=new We.BufferStream;return u.pipe(a,{end:!1}),u.on("finish",()=>{a.end()}),[u,n]}function pDt(t,{configuration:e,commandIndex:r,verbose:o}){if(!o)return null;let n=`[${Y.stringifyIdent(t.locator)}]:`,u=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],A=u[r%u.length];return ye.pretty(e,n,A)}var hDt={commands:[tg,rg]},gDt=hDt;var Zb=()=>({modules:new Map([["@yarnpkg/cli",K1],["@yarnpkg/core",Y1],["@yarnpkg/fslib",UI],["@yarnpkg/libzip",HI],["@yarnpkg/parsers",JI],["@yarnpkg/shell",D1],["clipanion",iw],["semver",dDt],["typanion",Yo],["@yarnpkg/plugin-essentials",eH],["@yarnpkg/plugin-compat",sH],["@yarnpkg/plugin-constraints",wH],["@yarnpkg/plugin-dlx",BH],["@yarnpkg/plugin-exec",SH],["@yarnpkg/plugin-file",xH],["@yarnpkg/plugin-git",$8],["@yarnpkg/plugin-github",kH],["@yarnpkg/plugin-http",FH],["@yarnpkg/plugin-init",RH],["@yarnpkg/plugin-interactive-tools",Nq],["@yarnpkg/plugin-link",Lq],["@yarnpkg/plugin-nm",Ej],["@yarnpkg/plugin-npm",dG],["@yarnpkg/plugin-npm-cli",vG],["@yarnpkg/plugin-pack",AG],["@yarnpkg/plugin-patch",kG],["@yarnpkg/plugin-pnp",aj],["@yarnpkg/plugin-pnpm",TG],["@yarnpkg/plugin-stage",_G],["@yarnpkg/plugin-typescript",HG],["@yarnpkg/plugin-version",YG],["@yarnpkg/plugin-workspace-tools",KG]]),plugins:new Set(["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-constraints","@yarnpkg/plugin-dlx","@yarnpkg/plugin-exec","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-interactive-tools","@yarnpkg/plugin-link","@yarnpkg/plugin-nm","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp","@yarnpkg/plugin-pnpm","@yarnpkg/plugin-stage","@yarnpkg/plugin-typescript","@yarnpkg/plugin-version","@yarnpkg/plugin-workspace-tools"])});Xb({binaryVersion:On||"<unknown>",pluginConfiguration:Zb()});})(); |
716 | /* | 719 | /* |
717 | object-assign | 720 | object-assign |
718 | (c) Sindre Sorhus | 721 | (c) Sindre Sorhus |
@@ -781,6 +784,29 @@ object-assign | |||
781 | */ | 784 | */ |
782 | /** | 785 | /** |
783 | @license | 786 | @license |
787 | Copyright Joyent, Inc. and other Node contributors. | ||
788 | |||
789 | Permission is hereby granted, free of charge, to any person obtaining a | ||
790 | copy of this software and associated documentation files (the | ||
791 | "Software"), to deal in the Software without restriction, including | ||
792 | without limitation the rights to use, copy, modify, merge, publish, | ||
793 | distribute, sublicense, and/or sell copies of the Software, and to permit | ||
794 | persons to whom the Software is furnished to do so, subject to the | ||
795 | following conditions: | ||
796 | |||
797 | The above copyright notice and this permission notice shall be included | ||
798 | in all copies or substantial portions of the Software. | ||
799 | |||
800 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | ||
801 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
802 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN | ||
803 | NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | ||
804 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | ||
805 | OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE | ||
806 | USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
807 | */ | ||
808 | /** | ||
809 | @license | ||
784 | Copyright Node.js contributors. All rights reserved. | 810 | Copyright Node.js contributors. All rights reserved. |
785 | 811 | ||
786 | Permission is hereby granted, free of charge, to any person obtaining a copy | 812 | Permission is hereby granted, free of charge, to any person obtaining a copy |
@@ -801,6 +827,30 @@ object-assign | |||
801 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS | 827 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS |
802 | IN THE SOFTWARE. | 828 | IN THE SOFTWARE. |
803 | */ | 829 | */ |
830 | /** | ||
831 | @license | ||
832 | The MIT License (MIT) | ||
833 | |||
834 | Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) | ||
835 | |||
836 | Permission is hereby granted, free of charge, to any person obtaining a copy | ||
837 | of this software and associated documentation files (the "Software"), to deal | ||
838 | in the Software without restriction, including without limitation the rights | ||
839 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
840 | copies of the Software, and to permit persons to whom the Software is | ||
841 | furnished to do so, subject to the following conditions: | ||
842 | |||
843 | The above copyright notice and this permission notice shall be included in | ||
844 | all copies or substantial portions of the Software. | ||
845 | |||
846 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
847 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
848 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
849 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
850 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
851 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
852 | THE SOFTWARE. | ||
853 | */ | ||
804 | /** @license React v0.18.0 | 854 | /** @license React v0.18.0 |
805 | * scheduler.production.min.js | 855 | * scheduler.production.min.js |
806 | * | 856 | * |
diff --git a/.yarn/sdks/eslint/package.json b/.yarn/sdks/eslint/package.json index 1769894e..3910b861 100644 --- a/.yarn/sdks/eslint/package.json +++ b/.yarn/sdks/eslint/package.json | |||
@@ -1,6 +1,6 @@ | |||
1 | { | 1 | { |
2 | "name": "eslint", | 2 | "name": "eslint", |
3 | "version": "8.29.0-sdk", | 3 | "version": "8.38.0-sdk", |
4 | "main": "./lib/api.js", | 4 | "main": "./lib/api.js", |
5 | "type": "commonjs" | 5 | "type": "commonjs" |
6 | } | 6 | } |
diff --git a/.yarn/sdks/integrations.yml.license b/.yarn/sdks/integrations.yml.license new file mode 100644 index 00000000..08673e9c --- /dev/null +++ b/.yarn/sdks/integrations.yml.license | |||
@@ -0,0 +1,3 @@ | |||
1 | SPDX-FileCopyrightText: 2021-2023 The Refinery Authors | ||
2 | |||
3 | SPDX-License-Identifier: CC0-1.0 | ||
diff --git a/.yarn/sdks/typescript/lib/tsserver.js b/.yarn/sdks/typescript/lib/tsserver.js index 0fb2ac10..bbb1e465 100644 --- a/.yarn/sdks/typescript/lib/tsserver.js +++ b/.yarn/sdks/typescript/lib/tsserver.js | |||
@@ -109,6 +109,8 @@ const moduleWrapper = tsserver => { | |||
109 | str = `zip:${str}`; | 109 | str = `zip:${str}`; |
110 | } break; | 110 | } break; |
111 | } | 111 | } |
112 | } else { | ||
113 | str = str.replace(/^\/?/, process.platform === `win32` ? `` : `/`); | ||
112 | } | 114 | } |
113 | } | 115 | } |
114 | 116 | ||
diff --git a/.yarn/sdks/typescript/lib/tsserverlibrary.js b/.yarn/sdks/typescript/lib/tsserverlibrary.js index e7033a81..a68f028f 100644 --- a/.yarn/sdks/typescript/lib/tsserverlibrary.js +++ b/.yarn/sdks/typescript/lib/tsserverlibrary.js | |||
@@ -109,6 +109,8 @@ const moduleWrapper = tsserver => { | |||
109 | str = `zip:${str}`; | 109 | str = `zip:${str}`; |
110 | } break; | 110 | } break; |
111 | } | 111 | } |
112 | } else { | ||
113 | str = str.replace(/^\/?/, process.platform === `win32` ? `` : `/`); | ||
112 | } | 114 | } |
113 | } | 115 | } |
114 | 116 | ||
diff --git a/.yarn/sdks/typescript/package.json b/.yarn/sdks/typescript/package.json index 176c2069..925b839e 100644 --- a/.yarn/sdks/typescript/package.json +++ b/.yarn/sdks/typescript/package.json | |||
@@ -1,6 +1,6 @@ | |||
1 | { | 1 | { |
2 | "name": "typescript", | 2 | "name": "typescript", |
3 | "version": "4.9.3-sdk", | 3 | "version": "5.0.4-sdk", |
4 | "main": "./lib/typescript.js", | 4 | "main": "./lib/typescript.js", |
5 | "type": "commonjs" | 5 | "type": "commonjs" |
6 | } | 6 | } |
diff --git a/.yarnrc.yml b/.yarnrc.yml index f02aeec9..84755cc2 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml | |||
@@ -1,6 +1,6 @@ | |||
1 | enableGlobalCache: false | 1 | enableGlobalCache: false |
2 | 2 | ||
3 | enableTelemetry: 0 | 3 | enableTelemetry: false |
4 | 4 | ||
5 | nodeLinker: pnp | 5 | nodeLinker: pnp |
6 | 6 | ||
@@ -11,5 +11,8 @@ packageExtensions: | |||
11 | "@xstate/tools-shared@*": | 11 | "@xstate/tools-shared@*": |
12 | peerDependencies: | 12 | peerDependencies: |
13 | "@babel/core": "*" | 13 | "@babel/core": "*" |
14 | notistack@*: | ||
15 | peerDependencies: | ||
16 | csstype: "*" | ||
14 | 17 | ||
15 | yarnPath: .yarn/releases/yarn-4.0.0-rc.37.cjs | 18 | yarnPath: .yarn/releases/yarn-4.0.0-rc.45.cjs |
diff --git a/.yarnrc.yml.license b/.yarnrc.yml.license new file mode 100644 index 00000000..e5db6ccd --- /dev/null +++ b/.yarnrc.yml.license | |||
@@ -0,0 +1,3 @@ | |||
1 | SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
2 | |||
3 | SPDX-License-Identifier: EPL-2.0 | ||
diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md new file mode 100644 index 00000000..a408945b --- /dev/null +++ b/CONTRIBUTORS.md | |||
@@ -0,0 +1,28 @@ | |||
1 | <!-- | ||
2 | SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | |||
4 | SPDX-License-Identifier: EPL-2.0 | ||
5 | --> | ||
6 | |||
7 | # Contributors | ||
8 | |||
9 | ## The Refinery Authors | ||
10 | |||
11 | **Project leader:** [Prof. Dániel Varró](https://liu.se/en/employee/danva91) <daniel.varro@liu.se> | ||
12 | |||
13 | Other contributors (in alphabetical order): | ||
14 | |||
15 | * Ficsor, Attila <ficsorattila96@gmail.com> | ||
16 | * Garami, Bence <85867500+garamibence@users.noreply.github.com> | ||
17 | * Golej, Márton Marcell <golejmarci@gmail.com> | ||
18 | * Marussy, Kristóf <marussy@mit.bme.hu> | ||
19 | * Semeráth, Oszkár <semerath@mit.bme.hu> | ||
20 | |||
21 | ## Support | ||
22 | |||
23 | Refinery was also supported by | ||
24 | |||
25 | * [Budapest University of Technology and Economics (BME)](https://www.bme.hu/?language=en), [Department of Measurement and Information Systems (MIT)](https://mit.bme.hu/eng/), [Critical Systems Research Group (FTSRG)](https://ftsrg.mit.bme.hu/en/) | ||
26 | * [Department of Electrical and Computer Engineering](https://www.mcgill.ca/ece/), [McGill University](https://www.mcgill.ca/) | ||
27 | * [2022 Amazon Research Awards](https://www.amazon.science/research-awards/recipients/daniel-varro-fall-2021) | ||
28 | * [Linköping University](https://liu.se/en), [Department of Computer and Information Science (IDA)](https://liu.se/en/organisation/liu/ida), [Software and Systems (SAS)](https://liu.se/en/organisation/liu/ida/sas) | ||
@@ -1,278 +1,80 @@ | |||
1 | Eclipse Public License - v 2.0 | 1 | Eclipse Public License - v 2.0 |
2 | 2 | THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (“AGREEMENT”). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. | |
3 | THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE | ||
4 | PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION | ||
5 | OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. | ||
6 | 3 | ||
7 | 1. DEFINITIONS | 4 | 1. DEFINITIONS |
5 | “Contribution” means: | ||
8 | 6 | ||
9 | "Contribution" means: | 7 | a) in the case of the initial Contributor, the initial content Distributed under this Agreement, and |
10 | 8 | b) in the case of each subsequent Contributor: | |
11 | a) in the case of the initial Contributor, the initial content | 9 | i) changes to the Program, and |
12 | Distributed under this Agreement, and | 10 | ii) additions to the Program; |
13 | 11 | where such changes and/or additions to the Program originate from and are Distributed by that particular Contributor. A Contribution “originates” from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include changes or additions to the Program that are not Modified Works. | |
14 | b) in the case of each subsequent Contributor: | 12 | “Contributor” means any person or entity that Distributes the Program. |
15 | i) changes to the Program, and | ||
16 | ii) additions to the Program; | ||
17 | where such changes and/or additions to the Program originate from | ||
18 | and are Distributed by that particular Contributor. A Contribution | ||
19 | "originates" from a Contributor if it was added to the Program by | ||
20 | such Contributor itself or anyone acting on such Contributor's behalf. | ||
21 | Contributions do not include changes or additions to the Program that | ||
22 | are not Modified Works. | ||
23 | 13 | ||
24 | "Contributor" means any person or entity that Distributes the Program. | 14 | “Licensed Patents” mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. |
25 | 15 | ||
26 | "Licensed Patents" mean patent claims licensable by a Contributor which | 16 | “Program” means the Contributions Distributed in accordance with this Agreement. |
27 | are necessarily infringed by the use or sale of its Contribution alone | ||
28 | or when combined with the Program. | ||
29 | 17 | ||
30 | "Program" means the Contributions Distributed in accordance with this | 18 | “Recipient” means anyone who receives the Program under this Agreement or any Secondary License (as applicable), including Contributors. |
31 | Agreement. | ||
32 | 19 | ||
33 | "Recipient" means anyone who receives the Program under this Agreement | 20 | “Derivative Works” shall mean any work, whether in Source Code or other form, that is based on (or derived from) the Program and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. |
34 | or any Secondary License (as applicable), including Contributors. | ||
35 | 21 | ||
36 | "Derivative Works" shall mean any work, whether in Source Code or other | 22 | “Modified Works” shall mean any work in Source Code or other form that results from an addition to, deletion from, or modification of the contents of the Program, including, for purposes of clarity any new file in Source Code form that contains any contents of the Program. Modified Works shall not include works that contain only declarations, interfaces, types, classes, structures, or files of the Program solely in each case in order to link to, bind by name, or subclass the Program or Modified Works thereof. |
37 | form, that is based on (or derived from) the Program and for which the | ||
38 | editorial revisions, annotations, elaborations, or other modifications | ||
39 | represent, as a whole, an original work of authorship. | ||
40 | 23 | ||
41 | "Modified Works" shall mean any work in Source Code or other form that | 24 | “Distribute” means the acts of a) distributing or b) making available in any manner that enables the transfer of a copy. |
42 | results from an addition to, deletion from, or modification of the | ||
43 | contents of the Program, including, for purposes of clarity any new file | ||
44 | in Source Code form that contains any contents of the Program. Modified | ||
45 | Works shall not include works that contain only declarations, | ||
46 | interfaces, types, classes, structures, or files of the Program solely | ||
47 | in each case in order to link to, bind by name, or subclass the Program | ||
48 | or Modified Works thereof. | ||
49 | 25 | ||
50 | "Distribute" means the acts of a) distributing or b) making available | 26 | “Source Code” means the form of a Program preferred for making modifications, including but not limited to software source code, documentation source, and configuration files. |
51 | in any manner that enables the transfer of a copy. | ||
52 | 27 | ||
53 | "Source Code" means the form of a Program preferred for making | 28 | “Secondary License” means either the GNU General Public License, Version 2.0, or any later versions of that license, including any exceptions or additional permissions as identified by the initial Contributor. |
54 | modifications, including but not limited to software source code, | ||
55 | documentation source, and configuration files. | ||
56 | |||
57 | "Secondary License" means either the GNU General Public License, | ||
58 | Version 2.0, or any later versions of that license, including any | ||
59 | exceptions or additional permissions as identified by the initial | ||
60 | Contributor. | ||
61 | 29 | ||
62 | 2. GRANT OF RIGHTS | 30 | 2. GRANT OF RIGHTS |
63 | 31 | a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, Distribute and sublicense the Contribution of such Contributor, if any, and such Derivative Works. | |
64 | a) Subject to the terms of this Agreement, each Contributor hereby | 32 | b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in Source Code or other form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. |
65 | grants Recipient a non-exclusive, worldwide, royalty-free copyright | 33 | c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to Distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. |
66 | license to reproduce, prepare Derivative Works of, publicly display, | 34 | d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. |
67 | publicly perform, Distribute and sublicense the Contribution of such | 35 | e) Notwithstanding the terms of any Secondary License, no Contributor makes additional grants to any Recipient (other than those set forth in this Agreement) as a result of such Recipient's receipt of the Program under the terms of a Secondary License (if permitted under the terms of Section 3). |
68 | Contributor, if any, and such Derivative Works. | ||
69 | |||
70 | b) Subject to the terms of this Agreement, each Contributor hereby | ||
71 | grants Recipient a non-exclusive, worldwide, royalty-free patent | ||
72 | license under Licensed Patents to make, use, sell, offer to sell, | ||
73 | import and otherwise transfer the Contribution of such Contributor, | ||
74 | if any, in Source Code or other form. This patent license shall | ||
75 | apply to the combination of the Contribution and the Program if, at | ||
76 | the time the Contribution is added by the Contributor, such addition | ||
77 | of the Contribution causes such combination to be covered by the | ||
78 | Licensed Patents. The patent license shall not apply to any other | ||
79 | combinations which include the Contribution. No hardware per se is | ||
80 | licensed hereunder. | ||
81 | |||
82 | c) Recipient understands that although each Contributor grants the | ||
83 | licenses to its Contributions set forth herein, no assurances are | ||
84 | provided by any Contributor that the Program does not infringe the | ||
85 | patent or other intellectual property rights of any other entity. | ||
86 | Each Contributor disclaims any liability to Recipient for claims | ||
87 | brought by any other entity based on infringement of intellectual | ||
88 | property rights or otherwise. As a condition to exercising the | ||
89 | rights and licenses granted hereunder, each Recipient hereby | ||
90 | assumes sole responsibility to secure any other intellectual | ||
91 | property rights needed, if any. For example, if a third party | ||
92 | patent license is required to allow Recipient to Distribute the | ||
93 | Program, it is Recipient's responsibility to acquire that license | ||
94 | before distributing the Program. | ||
95 | |||
96 | d) Each Contributor represents that to its knowledge it has | ||
97 | sufficient copyright rights in its Contribution, if any, to grant | ||
98 | the copyright license set forth in this Agreement. | ||
99 | |||
100 | e) Notwithstanding the terms of any Secondary License, no | ||
101 | Contributor makes additional grants to any Recipient (other than | ||
102 | those set forth in this Agreement) as a result of such Recipient's | ||
103 | receipt of the Program under the terms of a Secondary License | ||
104 | (if permitted under the terms of Section 3). | ||
105 | |||
106 | 3. REQUIREMENTS | 36 | 3. REQUIREMENTS |
107 | |||
108 | 3.1 If a Contributor Distributes the Program in any form, then: | 37 | 3.1 If a Contributor Distributes the Program in any form, then: |
109 | 38 | ||
110 | a) the Program must also be made available as Source Code, in | 39 | a) the Program must also be made available as Source Code, in accordance with section 3.2, and the Contributor must accompany the Program with a statement that the Source Code for the Program is available under this Agreement, and informs Recipients how to obtain it in a reasonable manner on or through a medium customarily used for software exchange; and |
111 | accordance with section 3.2, and the Contributor must accompany | 40 | b) the Contributor may Distribute the Program under a license different than this Agreement, provided that such license: |
112 | the Program with a statement that the Source Code for the Program | 41 | i) effectively disclaims on behalf of all other Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; |
113 | is available under this Agreement, and informs Recipients how to | 42 | ii) effectively excludes on behalf of all other Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; |
114 | obtain it in a reasonable manner on or through a medium customarily | 43 | iii) does not attempt to limit or alter the recipients' rights in the Source Code under section 3.2; and |
115 | used for software exchange; and | 44 | iv) requires any subsequent distribution of the Program by any party to be under a license that satisfies the requirements of this section 3. |
116 | |||
117 | b) the Contributor may Distribute the Program under a license | ||
118 | different than this Agreement, provided that such license: | ||
119 | i) effectively disclaims on behalf of all other Contributors all | ||
120 | warranties and conditions, express and implied, including | ||
121 | warranties or conditions of title and non-infringement, and | ||
122 | implied warranties or conditions of merchantability and fitness | ||
123 | for a particular purpose; | ||
124 | |||
125 | ii) effectively excludes on behalf of all other Contributors all | ||
126 | liability for damages, including direct, indirect, special, | ||
127 | incidental and consequential damages, such as lost profits; | ||
128 | |||
129 | iii) does not attempt to limit or alter the recipients' rights | ||
130 | in the Source Code under section 3.2; and | ||
131 | |||
132 | iv) requires any subsequent distribution of the Program by any | ||
133 | party to be under a license that satisfies the requirements | ||
134 | of this section 3. | ||
135 | |||
136 | 3.2 When the Program is Distributed as Source Code: | 45 | 3.2 When the Program is Distributed as Source Code: |
137 | 46 | ||
138 | a) it must be made available under this Agreement, or if the | 47 | a) it must be made available under this Agreement, or if the Program (i) is combined with other material in a separate file or files made available under a Secondary License, and (ii) the initial Contributor attached to the Source Code the notice described in Exhibit A of this Agreement, then the Program may be made available under the terms of such Secondary Licenses, and |
139 | Program (i) is combined with other material in a separate file or | 48 | b) a copy of this Agreement must be included with each copy of the Program. |
140 | files made available under a Secondary License, and (ii) the initial | 49 | 3.3 Contributors may not remove or alter any copyright, patent, trademark, attribution notices, disclaimers of warranty, or limitations of liability (‘notices’) contained within the Program from any copy of the Program which they Distribute, provided that Contributors may add their own appropriate notices. |
141 | Contributor attached to the Source Code the notice described in | ||
142 | Exhibit A of this Agreement, then the Program may be made available | ||
143 | under the terms of such Secondary Licenses, and | ||
144 | |||
145 | b) a copy of this Agreement must be included with each copy of | ||
146 | the Program. | ||
147 | |||
148 | 3.3 Contributors may not remove or alter any copyright, patent, | ||
149 | trademark, attribution notices, disclaimers of warranty, or limitations | ||
150 | of liability ("notices") contained within the Program from any copy of | ||
151 | the Program which they Distribute, provided that Contributors may add | ||
152 | their own appropriate notices. | ||
153 | 50 | ||
154 | 4. COMMERCIAL DISTRIBUTION | 51 | 4. COMMERCIAL DISTRIBUTION |
52 | Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor (“Commercial Contributor”) hereby agrees to defend and indemnify every other Contributor (“Indemnified Contributor”) against any losses, damages and costs (collectively “Losses”) arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. | ||
155 | 53 | ||
156 | Commercial distributors of software may accept certain responsibilities | 54 | For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. |
157 | with respect to end users, business partners and the like. While this | ||
158 | license is intended to facilitate the commercial use of the Program, | ||
159 | the Contributor who includes the Program in a commercial product | ||
160 | offering should do so in a manner which does not create potential | ||
161 | liability for other Contributors. Therefore, if a Contributor includes | ||
162 | the Program in a commercial product offering, such Contributor | ||
163 | ("Commercial Contributor") hereby agrees to defend and indemnify every | ||
164 | other Contributor ("Indemnified Contributor") against any losses, | ||
165 | damages and costs (collectively "Losses") arising from claims, lawsuits | ||
166 | and other legal actions brought by a third party against the Indemnified | ||
167 | Contributor to the extent caused by the acts or omissions of such | ||
168 | Commercial Contributor in connection with its distribution of the Program | ||
169 | in a commercial product offering. The obligations in this section do not | ||
170 | apply to any claims or Losses relating to any actual or alleged | ||
171 | intellectual property infringement. In order to qualify, an Indemnified | ||
172 | Contributor must: a) promptly notify the Commercial Contributor in | ||
173 | writing of such claim, and b) allow the Commercial Contributor to control, | ||
174 | and cooperate with the Commercial Contributor in, the defense and any | ||
175 | related settlement negotiations. The Indemnified Contributor may | ||
176 | participate in any such claim at its own expense. | ||
177 | |||
178 | For example, a Contributor might include the Program in a commercial | ||
179 | product offering, Product X. That Contributor is then a Commercial | ||
180 | Contributor. If that Commercial Contributor then makes performance | ||
181 | claims, or offers warranties related to Product X, those performance | ||
182 | claims and warranties are such Commercial Contributor's responsibility | ||
183 | alone. Under this section, the Commercial Contributor would have to | ||
184 | defend claims against the other Contributors related to those performance | ||
185 | claims and warranties, and if a court requires any other Contributor to | ||
186 | pay any damages as a result, the Commercial Contributor must pay | ||
187 | those damages. | ||
188 | 55 | ||
189 | 5. NO WARRANTY | 56 | 5. NO WARRANTY |
190 | 57 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. | |
191 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT | ||
192 | PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" | ||
193 | BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR | ||
194 | IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF | ||
195 | TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR | ||
196 | PURPOSE. Each Recipient is solely responsible for determining the | ||
197 | appropriateness of using and distributing the Program and assumes all | ||
198 | risks associated with its exercise of rights under this Agreement, | ||
199 | including but not limited to the risks and costs of program errors, | ||
200 | compliance with applicable laws, damage to or loss of data, programs | ||
201 | or equipment, and unavailability or interruption of operations. | ||
202 | 58 | ||
203 | 6. DISCLAIMER OF LIABILITY | 59 | 6. DISCLAIMER OF LIABILITY |
204 | 60 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. | |
205 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT | ||
206 | PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS | ||
207 | SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | ||
208 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST | ||
209 | PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
210 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
211 | ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE | ||
212 | EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE | ||
213 | POSSIBILITY OF SUCH DAMAGES. | ||
214 | 61 | ||
215 | 7. GENERAL | 62 | 7. GENERAL |
63 | If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. | ||
216 | 64 | ||
217 | If any provision of this Agreement is invalid or unenforceable under | 65 | If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. |
218 | applicable law, it shall not affect the validity or enforceability of | ||
219 | the remainder of the terms of this Agreement, and without further | ||
220 | action by the parties hereto, such provision shall be reformed to the | ||
221 | minimum extent necessary to make such provision valid and enforceable. | ||
222 | |||
223 | If Recipient institutes patent litigation against any entity | ||
224 | (including a cross-claim or counterclaim in a lawsuit) alleging that the | ||
225 | Program itself (excluding combinations of the Program with other software | ||
226 | or hardware) infringes such Recipient's patent(s), then such Recipient's | ||
227 | rights granted under Section 2(b) shall terminate as of the date such | ||
228 | litigation is filed. | ||
229 | |||
230 | All Recipient's rights under this Agreement shall terminate if it | ||
231 | fails to comply with any of the material terms or conditions of this | ||
232 | Agreement and does not cure such failure in a reasonable period of | ||
233 | time after becoming aware of such noncompliance. If all Recipient's | ||
234 | rights under this Agreement terminate, Recipient agrees to cease use | ||
235 | and distribution of the Program as soon as reasonably practicable. | ||
236 | However, Recipient's obligations under this Agreement and any licenses | ||
237 | granted by Recipient relating to the Program shall continue and survive. | ||
238 | |||
239 | Everyone is permitted to copy and distribute copies of this Agreement, | ||
240 | but in order to avoid inconsistency the Agreement is copyrighted and | ||
241 | may only be modified in the following manner. The Agreement Steward | ||
242 | reserves the right to publish new versions (including revisions) of | ||
243 | this Agreement from time to time. No one other than the Agreement | ||
244 | Steward has the right to modify this Agreement. The Eclipse Foundation | ||
245 | is the initial Agreement Steward. The Eclipse Foundation may assign the | ||
246 | responsibility to serve as the Agreement Steward to a suitable separate | ||
247 | entity. Each new version of the Agreement will be given a distinguishing | ||
248 | version number. The Program (including Contributions) may always be | ||
249 | Distributed subject to the version of the Agreement under which it was | ||
250 | received. In addition, after a new version of the Agreement is published, | ||
251 | Contributor may elect to Distribute the Program (including its | ||
252 | Contributions) under the new version. | ||
253 | 66 | ||
254 | Except as expressly stated in Sections 2(a) and 2(b) above, Recipient | 67 | All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. |
255 | receives no rights or licenses to the intellectual property of any | ||
256 | Contributor under this Agreement, whether expressly, by implication, | ||
257 | estoppel or otherwise. All rights in the Program not expressly granted | ||
258 | under this Agreement are reserved. Nothing in this Agreement is intended | ||
259 | to be enforceable by any entity that is not a Contributor or Recipient. | ||
260 | No third-party beneficiary rights are created under this Agreement. | ||
261 | 68 | ||
262 | Exhibit A - Form of Secondary Licenses Notice | 69 | Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be Distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to Distribute the Program (including its Contributions) under the new version. |
263 | 70 | ||
264 | "This Source Code may also be made available under the following | 71 | Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. Nothing in this Agreement is intended to be enforceable by any entity that is not a Contributor or Recipient. No third-party beneficiary rights are created under this Agreement. |
265 | Secondary Licenses when the conditions for such availability set forth | ||
266 | in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), | ||
267 | version(s), and exceptions or additional permissions here}." | ||
268 | 72 | ||
269 | Simply including a copy of this Agreement, including this Exhibit A | 73 | Exhibit A – Form of Secondary Licenses Notice |
270 | is not sufficient to license the Source Code under Secondary Licenses. | 74 | “This Source Code may also be made available under the following Secondary Licenses when the conditions for such availability set forth in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), version(s), and exceptions or additional permissions here}.” |
271 | 75 | ||
272 | If it is not possible or desirable to put the notice in a particular | 76 | Simply including a copy of this Agreement, including this Exhibit A is not sufficient to license the Source Code under Secondary Licenses. |
273 | file, then You may include the notice in a location (such as a LICENSE | ||
274 | file in a relevant directory) where a recipient would be likely to | ||
275 | look for such a notice. | ||
276 | 77 | ||
277 | You may add additional accurate notices of copyright ownership. | 78 | If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice. |
278 | 79 | ||
80 | You may add additional accurate notices of copyright ownership. | ||
diff --git a/LICENSES/Apache-2.0.txt b/LICENSES/Apache-2.0.txt new file mode 100644 index 00000000..137069b8 --- /dev/null +++ b/LICENSES/Apache-2.0.txt | |||
@@ -0,0 +1,73 @@ | |||
1 | Apache License | ||
2 | Version 2.0, January 2004 | ||
3 | http://www.apache.org/licenses/ | ||
4 | |||
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | ||
6 | |||
7 | 1. Definitions. | ||
8 | |||
9 | "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. | ||
10 | |||
11 | "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. | ||
12 | |||
13 | "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. | ||
14 | |||
15 | "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. | ||
16 | |||
17 | "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. | ||
18 | |||
19 | "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. | ||
20 | |||
21 | "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). | ||
22 | |||
23 | "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. | ||
24 | |||
25 | "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." | ||
26 | |||
27 | "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. | ||
28 | |||
29 | 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. | ||
30 | |||
31 | 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. | ||
32 | |||
33 | 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: | ||
34 | |||
35 | (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and | ||
36 | |||
37 | (b) You must cause any modified files to carry prominent notices stating that You changed the files; and | ||
38 | |||
39 | (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and | ||
40 | |||
41 | (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. | ||
42 | |||
43 | You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. | ||
44 | |||
45 | 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. | ||
46 | |||
47 | 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. | ||
48 | |||
49 | 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. | ||
50 | |||
51 | 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. | ||
52 | |||
53 | 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. | ||
54 | |||
55 | END OF TERMS AND CONDITIONS | ||
56 | |||
57 | APPENDIX: How to apply the Apache License to your work. | ||
58 | |||
59 | To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. | ||
60 | |||
61 | Copyright [yyyy] [name of copyright owner] | ||
62 | |||
63 | Licensed under the Apache License, Version 2.0 (the "License"); | ||
64 | you may not use this file except in compliance with the License. | ||
65 | You may obtain a copy of the License at | ||
66 | |||
67 | http://www.apache.org/licenses/LICENSE-2.0 | ||
68 | |||
69 | Unless required by applicable law or agreed to in writing, software | ||
70 | distributed under the License is distributed on an "AS IS" BASIS, | ||
71 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
72 | See the License for the specific language governing permissions and | ||
73 | limitations under the License. | ||
diff --git a/LICENSES/BSD-2-Clause.txt b/LICENSES/BSD-2-Clause.txt new file mode 100644 index 00000000..5f662b35 --- /dev/null +++ b/LICENSES/BSD-2-Clause.txt | |||
@@ -0,0 +1,9 @@ | |||
1 | Copyright (c) <year> <owner> | ||
2 | |||
3 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: | ||
4 | |||
5 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. | ||
6 | |||
7 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. | ||
8 | |||
9 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt new file mode 100644 index 00000000..0e259d42 --- /dev/null +++ b/LICENSES/CC0-1.0.txt | |||
@@ -0,0 +1,121 @@ | |||
1 | Creative Commons Legal Code | ||
2 | |||
3 | CC0 1.0 Universal | ||
4 | |||
5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE | ||
6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN | ||
7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS | ||
8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES | ||
9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS | ||
10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM | ||
11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED | ||
12 | HEREUNDER. | ||
13 | |||
14 | Statement of Purpose | ||
15 | |||
16 | The laws of most jurisdictions throughout the world automatically confer | ||
17 | exclusive Copyright and Related Rights (defined below) upon the creator | ||
18 | and subsequent owner(s) (each and all, an "owner") of an original work of | ||
19 | authorship and/or a database (each, a "Work"). | ||
20 | |||
21 | Certain owners wish to permanently relinquish those rights to a Work for | ||
22 | the purpose of contributing to a commons of creative, cultural and | ||
23 | scientific works ("Commons") that the public can reliably and without fear | ||
24 | of later claims of infringement build upon, modify, incorporate in other | ||
25 | works, reuse and redistribute as freely as possible in any form whatsoever | ||
26 | and for any purposes, including without limitation commercial purposes. | ||
27 | These owners may contribute to the Commons to promote the ideal of a free | ||
28 | culture and the further production of creative, cultural and scientific | ||
29 | works, or to gain reputation or greater distribution for their Work in | ||
30 | part through the use and efforts of others. | ||
31 | |||
32 | For these and/or other purposes and motivations, and without any | ||
33 | expectation of additional consideration or compensation, the person | ||
34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she | ||
35 | is an owner of Copyright and Related Rights in the Work, voluntarily | ||
36 | elects to apply CC0 to the Work and publicly distribute the Work under its | ||
37 | terms, with knowledge of his or her Copyright and Related Rights in the | ||
38 | Work and the meaning and intended legal effect of CC0 on those rights. | ||
39 | |||
40 | 1. Copyright and Related Rights. A Work made available under CC0 may be | ||
41 | protected by copyright and related or neighboring rights ("Copyright and | ||
42 | Related Rights"). Copyright and Related Rights include, but are not | ||
43 | limited to, the following: | ||
44 | |||
45 | i. the right to reproduce, adapt, distribute, perform, display, | ||
46 | communicate, and translate a Work; | ||
47 | ii. moral rights retained by the original author(s) and/or performer(s); | ||
48 | iii. publicity and privacy rights pertaining to a person's image or | ||
49 | likeness depicted in a Work; | ||
50 | iv. rights protecting against unfair competition in regards to a Work, | ||
51 | subject to the limitations in paragraph 4(a), below; | ||
52 | v. rights protecting the extraction, dissemination, use and reuse of data | ||
53 | in a Work; | ||
54 | vi. database rights (such as those arising under Directive 96/9/EC of the | ||
55 | European Parliament and of the Council of 11 March 1996 on the legal | ||
56 | protection of databases, and under any national implementation | ||
57 | thereof, including any amended or successor version of such | ||
58 | directive); and | ||
59 | vii. other similar, equivalent or corresponding rights throughout the | ||
60 | world based on applicable law or treaty, and any national | ||
61 | implementations thereof. | ||
62 | |||
63 | 2. Waiver. To the greatest extent permitted by, but not in contravention | ||
64 | of, applicable law, Affirmer hereby overtly, fully, permanently, | ||
65 | irrevocably and unconditionally waives, abandons, and surrenders all of | ||
66 | Affirmer's Copyright and Related Rights and associated claims and causes | ||
67 | of action, whether now known or unknown (including existing as well as | ||
68 | future claims and causes of action), in the Work (i) in all territories | ||
69 | worldwide, (ii) for the maximum duration provided by applicable law or | ||
70 | treaty (including future time extensions), (iii) in any current or future | ||
71 | medium and for any number of copies, and (iv) for any purpose whatsoever, | ||
72 | including without limitation commercial, advertising or promotional | ||
73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each | ||
74 | member of the public at large and to the detriment of Affirmer's heirs and | ||
75 | successors, fully intending that such Waiver shall not be subject to | ||
76 | revocation, rescission, cancellation, termination, or any other legal or | ||
77 | equitable action to disrupt the quiet enjoyment of the Work by the public | ||
78 | as contemplated by Affirmer's express Statement of Purpose. | ||
79 | |||
80 | 3. Public License Fallback. Should any part of the Waiver for any reason | ||
81 | be judged legally invalid or ineffective under applicable law, then the | ||
82 | Waiver shall be preserved to the maximum extent permitted taking into | ||
83 | account Affirmer's express Statement of Purpose. In addition, to the | ||
84 | extent the Waiver is so judged Affirmer hereby grants to each affected | ||
85 | person a royalty-free, non transferable, non sublicensable, non exclusive, | ||
86 | irrevocable and unconditional license to exercise Affirmer's Copyright and | ||
87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the | ||
88 | maximum duration provided by applicable law or treaty (including future | ||
89 | time extensions), (iii) in any current or future medium and for any number | ||
90 | of copies, and (iv) for any purpose whatsoever, including without | ||
91 | limitation commercial, advertising or promotional purposes (the | ||
92 | "License"). The License shall be deemed effective as of the date CC0 was | ||
93 | applied by Affirmer to the Work. Should any part of the License for any | ||
94 | reason be judged legally invalid or ineffective under applicable law, such | ||
95 | partial invalidity or ineffectiveness shall not invalidate the remainder | ||
96 | of the License, and in such case Affirmer hereby affirms that he or she | ||
97 | will not (i) exercise any of his or her remaining Copyright and Related | ||
98 | Rights in the Work or (ii) assert any associated claims and causes of | ||
99 | action with respect to the Work, in either case contrary to Affirmer's | ||
100 | express Statement of Purpose. | ||
101 | |||
102 | 4. Limitations and Disclaimers. | ||
103 | |||
104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, | ||
105 | surrendered, licensed or otherwise affected by this document. | ||
106 | b. Affirmer offers the Work as-is and makes no representations or | ||
107 | warranties of any kind concerning the Work, express, implied, | ||
108 | statutory or otherwise, including without limitation warranties of | ||
109 | title, merchantability, fitness for a particular purpose, non | ||
110 | infringement, or the absence of latent or other defects, accuracy, or | ||
111 | the present or absence of errors, whether or not discoverable, all to | ||
112 | the greatest extent permissible under applicable law. | ||
113 | c. Affirmer disclaims responsibility for clearing rights of other persons | ||
114 | that may apply to the Work or any use thereof, including without | ||
115 | limitation any person's Copyright and Related Rights in the Work. | ||
116 | Further, Affirmer disclaims responsibility for obtaining any necessary | ||
117 | consents, permissions or other rights required for any use of the | ||
118 | Work. | ||
119 | d. Affirmer understands and acknowledges that Creative Commons is not a | ||
120 | party to this document and has no duty or obligation with respect to | ||
121 | this CC0 or use of the Work. | ||
diff --git a/LICENSES/EPL-2.0.txt b/LICENSES/EPL-2.0.txt new file mode 100644 index 00000000..78756b5e --- /dev/null +++ b/LICENSES/EPL-2.0.txt | |||
@@ -0,0 +1,80 @@ | |||
1 | Eclipse Public License - v 2.0 | ||
2 | THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (“AGREEMENT”). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. | ||
3 | |||
4 | 1. DEFINITIONS | ||
5 | “Contribution” means: | ||
6 | |||
7 | a) in the case of the initial Contributor, the initial content Distributed under this Agreement, and | ||
8 | b) in the case of each subsequent Contributor: | ||
9 | i) changes to the Program, and | ||
10 | ii) additions to the Program; | ||
11 | where such changes and/or additions to the Program originate from and are Distributed by that particular Contributor. A Contribution “originates” from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include changes or additions to the Program that are not Modified Works. | ||
12 | “Contributor” means any person or entity that Distributes the Program. | ||
13 | |||
14 | “Licensed Patents” mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program. | ||
15 | |||
16 | “Program” means the Contributions Distributed in accordance with this Agreement. | ||
17 | |||
18 | “Recipient” means anyone who receives the Program under this Agreement or any Secondary License (as applicable), including Contributors. | ||
19 | |||
20 | “Derivative Works” shall mean any work, whether in Source Code or other form, that is based on (or derived from) the Program and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. | ||
21 | |||
22 | “Modified Works” shall mean any work in Source Code or other form that results from an addition to, deletion from, or modification of the contents of the Program, including, for purposes of clarity any new file in Source Code form that contains any contents of the Program. Modified Works shall not include works that contain only declarations, interfaces, types, classes, structures, or files of the Program solely in each case in order to link to, bind by name, or subclass the Program or Modified Works thereof. | ||
23 | |||
24 | “Distribute” means the acts of a) distributing or b) making available in any manner that enables the transfer of a copy. | ||
25 | |||
26 | “Source Code” means the form of a Program preferred for making modifications, including but not limited to software source code, documentation source, and configuration files. | ||
27 | |||
28 | “Secondary License” means either the GNU General Public License, Version 2.0, or any later versions of that license, including any exceptions or additional permissions as identified by the initial Contributor. | ||
29 | |||
30 | 2. GRANT OF RIGHTS | ||
31 | a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, Distribute and sublicense the Contribution of such Contributor, if any, and such Derivative Works. | ||
32 | b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in Source Code or other form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder. | ||
33 | c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to Distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program. | ||
34 | d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. | ||
35 | e) Notwithstanding the terms of any Secondary License, no Contributor makes additional grants to any Recipient (other than those set forth in this Agreement) as a result of such Recipient's receipt of the Program under the terms of a Secondary License (if permitted under the terms of Section 3). | ||
36 | 3. REQUIREMENTS | ||
37 | 3.1 If a Contributor Distributes the Program in any form, then: | ||
38 | |||
39 | a) the Program must also be made available as Source Code, in accordance with section 3.2, and the Contributor must accompany the Program with a statement that the Source Code for the Program is available under this Agreement, and informs Recipients how to obtain it in a reasonable manner on or through a medium customarily used for software exchange; and | ||
40 | b) the Contributor may Distribute the Program under a license different than this Agreement, provided that such license: | ||
41 | i) effectively disclaims on behalf of all other Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose; | ||
42 | ii) effectively excludes on behalf of all other Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits; | ||
43 | iii) does not attempt to limit or alter the recipients' rights in the Source Code under section 3.2; and | ||
44 | iv) requires any subsequent distribution of the Program by any party to be under a license that satisfies the requirements of this section 3. | ||
45 | 3.2 When the Program is Distributed as Source Code: | ||
46 | |||
47 | a) it must be made available under this Agreement, or if the Program (i) is combined with other material in a separate file or files made available under a Secondary License, and (ii) the initial Contributor attached to the Source Code the notice described in Exhibit A of this Agreement, then the Program may be made available under the terms of such Secondary Licenses, and | ||
48 | b) a copy of this Agreement must be included with each copy of the Program. | ||
49 | 3.3 Contributors may not remove or alter any copyright, patent, trademark, attribution notices, disclaimers of warranty, or limitations of liability (‘notices’) contained within the Program from any copy of the Program which they Distribute, provided that Contributors may add their own appropriate notices. | ||
50 | |||
51 | 4. COMMERCIAL DISTRIBUTION | ||
52 | Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor (“Commercial Contributor”) hereby agrees to defend and indemnify every other Contributor (“Indemnified Contributor”) against any losses, damages and costs (collectively “Losses”) arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense. | ||
53 | |||
54 | For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages. | ||
55 | |||
56 | 5. NO WARRANTY | ||
57 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations. | ||
58 | |||
59 | 6. DISCLAIMER OF LIABILITY | ||
60 | EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. | ||
61 | |||
62 | 7. GENERAL | ||
63 | If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. | ||
64 | |||
65 | If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed. | ||
66 | |||
67 | All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive. | ||
68 | |||
69 | Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be Distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to Distribute the Program (including its Contributions) under the new version. | ||
70 | |||
71 | Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved. Nothing in this Agreement is intended to be enforceable by any entity that is not a Contributor or Recipient. No third-party beneficiary rights are created under this Agreement. | ||
72 | |||
73 | Exhibit A – Form of Secondary Licenses Notice | ||
74 | “This Source Code may also be made available under the following Secondary Licenses when the conditions for such availability set forth in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), version(s), and exceptions or additional permissions here}.” | ||
75 | |||
76 | Simply including a copy of this Agreement, including this Exhibit A is not sufficient to license the Source Code under Secondary Licenses. | ||
77 | |||
78 | If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice. | ||
79 | |||
80 | You may add additional accurate notices of copyright ownership. | ||
diff --git a/LICENSES/MIT.txt b/LICENSES/MIT.txt new file mode 100644 index 00000000..2071b23b --- /dev/null +++ b/LICENSES/MIT.txt | |||
@@ -0,0 +1,9 @@ | |||
1 | MIT License | ||
2 | |||
3 | Copyright (c) <year> <copyright holders> | ||
4 | |||
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: | ||
6 | |||
7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. | ||
8 | |||
9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
@@ -1,3 +1,9 @@ | |||
1 | <!-- | ||
2 | SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | |||
4 | SPDX-License-Identifier: EPL-2.0 | ||
5 | --> | ||
6 | |||
1 | # Refinery | 7 | # Refinery |
2 | 8 | ||
3 | [![Build](https://github.com/graphs4value/refinery/actions/workflows/build.yml/badge.svg)](https://github.com/graphs4value/refinery/actions/workflows/build.yml) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=graphs4value_refinery&metric=alert_status)](https://sonarcloud.io/dashboard?id=graphs4value_refinery) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=graphs4value_refinery&metric=coverage)](https://sonarcloud.io/dashboard?id=graphs4value_refinery) | 9 | [![Build](https://github.com/graphs4value/refinery/actions/workflows/build.yml/badge.svg)](https://github.com/graphs4value/refinery/actions/workflows/build.yml) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=graphs4value_refinery&metric=alert_status)](https://sonarcloud.io/dashboard?id=graphs4value_refinery) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=graphs4value_refinery&metric=coverage)](https://sonarcloud.io/dashboard?id=graphs4value_refinery) |
@@ -6,7 +12,7 @@ | |||
6 | 12 | ||
7 | ### With Eclipse IDE | 13 | ### With Eclipse IDE |
8 | 14 | ||
9 | 1. Download and install a _Java 19_ compatible JDK. For Windows, prefer OpenJDK builds from [Adoptium](https://adoptium.net/). | 15 | 1. Download and install a _Java 17_ compatible JDK. For Windows, prefer OpenJDK builds from [Adoptium](https://adoptium.net/). |
10 | 16 | ||
11 | 2. Download and extract the [Eclipse IDE for Java and DSL Developers 2022-09](https://www.eclipse.org/downloads/packages/release/2022-09/r/eclipse-ide-java-and-dsl-developers) package. | 17 | 2. Download and extract the [Eclipse IDE for Java and DSL Developers 2022-09](https://www.eclipse.org/downloads/packages/release/2022-09/r/eclipse-ide-java-and-dsl-developers) package. |
12 | 18 | ||
@@ -17,16 +23,15 @@ | |||
17 | 23 | ||
18 | 5. Open _Help > Eclipse Marketplace_ and install the following software: | 24 | 5. Open _Help > Eclipse Marketplace_ and install the following software: |
19 | * _EclEmma Java Code Coverage_ | 25 | * _EclEmma Java Code Coverage_ |
20 | * _Java 19 Support for Eclipse 2022-09 (4.25)_ | ||
21 | * _SonarLint_ | 26 | * _SonarLint_ |
22 | 27 | ||
23 | 6. Open _Window > Preferences_ and set the following preferences: | 28 | 6. Open _Window > Preferences_ and set the following preferences: |
24 | * _General > Workspace > Text file encoding_ should be _UTF-8_. | 29 | * _General > Workspace > Text file encoding_ should be _UTF-8_. |
25 | * _General > Workspace > New text file line delimiter_ should be _Unix_. | 30 | * _General > Workspace > New text file line delimiter_ should be _Unix_. |
26 | * Add the JDK 19 to _Java > Installed JREs_. | 31 | * Add the JDK 17 to _Java > Installed JREs_. |
27 | * Make sure JDK 19 is selected for _JavaSE-19_ at _Java > Installed JREs > Execution Environments_. | 32 | * Make sure JDK 17 is selected for _JavaSE-17_ at _Java > Installed JREs > Execution Environments_. |
28 | * Set _Gradle > Java home_ to the `JAVA_HOME` directory (the directory which contains the `bin` directory) of JDK 17. Here, Buildship will show a yellow warning sign, which can be safely ignored. | 33 | * Set _Gradle > Java home_ to the `JAVA_HOME` directory (the directory which contains the `bin` directory) of JDK 17. Here, Buildship will show a yellow warning sign, which can be safely ignored. |
29 | * Set _Java > Compiler > JDK Compliance > Compiler compliance level_ to _19_. The warning about using Java 16 system libraries during compilation should disappear. | 34 | * Set _Java > Compiler > JDK Compliance > Compiler compliance level_ to _17_. |
30 | 35 | ||
31 | 7. Clone the project Git repository but do not import it into Eclipse yet. | 36 | 7. Clone the project Git repository but do not import it into Eclipse yet. |
32 | 37 | ||
@@ -45,4 +50,9 @@ It is possible to import the project into IntelliJ IDEA, but it gives no editing | |||
45 | 50 | ||
46 | ## License | 51 | ## License |
47 | 52 | ||
48 | All code in this repository is available under the [Eclipse Public License - v 2.0](https://www.eclipse.org/legal/epl-2.0/). | 53 | Copyright (c) 2021-2023 [The Refinery Authors](CONTRIBUTORS.md) |
54 | |||
55 | Refinery is available under the [Eclipse Public License - v 2.0](https://www.eclipse.org/legal/epl-2.0/). | ||
56 | |||
57 | Refinery complies with the [REUSE Specification – Version 3.0](https://reuse.software/) to provide copyright and licensing information to each file, including files available under other licenses. | ||
58 | For more information, see the comments headers in each file and the license texts in the [LICENSES](LICENSES/) directory. | ||
diff --git a/build.gradle b/build.gradle deleted file mode 100644 index a632b457..00000000 --- a/build.gradle +++ /dev/null | |||
@@ -1,6 +0,0 @@ | |||
1 | plugins { | ||
2 | alias libs.plugins.versions | ||
3 | id 'refinery-eclipse' | ||
4 | id 'refinery-frontend-worktree' | ||
5 | id 'refinery-sonarqube' | ||
6 | } | ||
diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 00000000..46fc8c37 --- /dev/null +++ b/build.gradle.kts | |||
@@ -0,0 +1,12 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | plugins { | ||
8 | alias(libs.plugins.versions) | ||
9 | id("tools.refinery.gradle.eclipse") | ||
10 | id("tools.refinery.gradle.frontend-worktree") | ||
11 | id("tools.refinery.gradle.sonarqube") | ||
12 | } | ||
diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle deleted file mode 100644 index cd3101be..00000000 --- a/buildSrc/build.gradle +++ /dev/null | |||
@@ -1,14 +0,0 @@ | |||
1 | plugins { | ||
2 | id 'groovy-gradle-plugin' | ||
3 | alias libs.plugins.versions | ||
4 | } | ||
5 | |||
6 | repositories { | ||
7 | gradlePluginPortal() | ||
8 | } | ||
9 | |||
10 | dependencies { | ||
11 | implementation libs.gradlePlugin.frontend | ||
12 | implementation libs.gradlePlugin.shadow | ||
13 | implementation libs.gradlePlugin.sonarqube | ||
14 | } | ||
diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts new file mode 100644 index 00000000..2326e7a4 --- /dev/null +++ b/buildSrc/build.gradle.kts | |||
@@ -0,0 +1,23 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | plugins { | ||
8 | `kotlin-dsl` | ||
9 | alias(libs.plugins.versions) | ||
10 | } | ||
11 | |||
12 | repositories { | ||
13 | gradlePluginPortal() | ||
14 | mavenCentral() | ||
15 | } | ||
16 | |||
17 | dependencies { | ||
18 | implementation(libs.gradlePlugin.frontend) | ||
19 | implementation(libs.gradlePlugin.shadow) | ||
20 | implementation(libs.gradlePlugin.sonarqube) | ||
21 | // https://github.com/gradle/gradle/issues/15383 | ||
22 | implementation(files(libs.javaClass.superclass.protectionDomain.codeSource.location)) | ||
23 | } | ||
diff --git a/buildSrc/settings.gradle b/buildSrc/settings.gradle deleted file mode 100644 index b54c8e5d..00000000 --- a/buildSrc/settings.gradle +++ /dev/null | |||
@@ -1,7 +0,0 @@ | |||
1 | dependencyResolutionManagement { | ||
2 | versionCatalogs { | ||
3 | libs { | ||
4 | from files('../gradle/libs.versions.toml') | ||
5 | } | ||
6 | } | ||
7 | } | ||
diff --git a/buildSrc/settings.gradle.kts b/buildSrc/settings.gradle.kts new file mode 100644 index 00000000..1daa9bbd --- /dev/null +++ b/buildSrc/settings.gradle.kts | |||
@@ -0,0 +1,13 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | dependencyResolutionManagement { | ||
8 | versionCatalogs { | ||
9 | create("libs") { | ||
10 | from(files("../gradle/libs.versions.toml")) | ||
11 | } | ||
12 | } | ||
13 | } | ||
diff --git a/buildSrc/src/main/groovy/refinery-eclipse.gradle b/buildSrc/src/main/groovy/refinery-eclipse.gradle deleted file mode 100644 index 15dcb5ce..00000000 --- a/buildSrc/src/main/groovy/refinery-eclipse.gradle +++ /dev/null | |||
@@ -1,28 +0,0 @@ | |||
1 | plugins { | ||
2 | id 'eclipse' | ||
3 | } | ||
4 | |||
5 | // Workaround from https://github.com/gradle/gradle/issues/898#issuecomment-885765821 | ||
6 | def eclipseResourceEncoding = tasks.register('eclipseResourceEncoding') { | ||
7 | ext.outputFile = file('.settings/org.eclipse.core.resources.prefs') | ||
8 | def compileTask = tasks.findByName('compileJava') | ||
9 | ext.encoding = provider({ compileTask?.options?.encoding }).orElse(providers.systemProperty('file.encoding')) | ||
10 | |||
11 | inputs.property('file.encoding', encoding) | ||
12 | outputs.file(outputFile).withPropertyName('outputFile') | ||
13 | |||
14 | doLast { | ||
15 | Properties eclipseEncodingProperties = | ||
16 | new Properties(Collections.singletonMap('eclipse.preferences.version', '1')) | ||
17 | eclipseEncodingProperties.put('encoding/<project>', encoding.get()) | ||
18 | outputFile.withOutputStream { | ||
19 | eclipseEncodingProperties.store(it, 'generated by ' + name) | ||
20 | } | ||
21 | } | ||
22 | } | ||
23 | |||
24 | tasks.named('eclipse') { | ||
25 | dependsOn(eclipseResourceEncoding) | ||
26 | } | ||
27 | |||
28 | eclipse.synchronizationTasks(eclipseResourceEncoding) | ||
diff --git a/buildSrc/src/main/groovy/refinery-frontend-conventions.gradle b/buildSrc/src/main/groovy/refinery-frontend-conventions.gradle deleted file mode 100644 index da9370fe..00000000 --- a/buildSrc/src/main/groovy/refinery-frontend-conventions.gradle +++ /dev/null | |||
@@ -1,14 +0,0 @@ | |||
1 | plugins { | ||
2 | id 'org.siouan.frontend-jdk11' | ||
3 | } | ||
4 | |||
5 | frontend { | ||
6 | nodeVersion = project.ext['frontend.nodeVersion'] | ||
7 | nodeInstallDirectory = file("${rootDir}/.node") | ||
8 | yarnEnabled = true | ||
9 | yarnVersion = project.ext['frontend.yarnVersion'] | ||
10 | } | ||
11 | |||
12 | tasks.named('enableYarnBerry') { | ||
13 | enabled = false | ||
14 | } | ||
diff --git a/buildSrc/src/main/groovy/refinery-frontend-workspace.gradle b/buildSrc/src/main/groovy/refinery-frontend-workspace.gradle deleted file mode 100644 index 9c6d7b13..00000000 --- a/buildSrc/src/main/groovy/refinery-frontend-workspace.gradle +++ /dev/null | |||
@@ -1,29 +0,0 @@ | |||
1 | plugins { | ||
2 | id 'refinery-eclipse' | ||
3 | id 'refinery-frontend-conventions' | ||
4 | } | ||
5 | |||
6 | tasks.named('installNode') { | ||
7 | dependsOn rootProject.tasks.named('installNode') | ||
8 | enabled = false | ||
9 | } | ||
10 | |||
11 | tasks.named('installYarnGlobally') { | ||
12 | dependsOn rootProject.tasks.named('installYarnGlobally') | ||
13 | enabled = false | ||
14 | } | ||
15 | |||
16 | tasks.named('installYarn') { | ||
17 | dependsOn rootProject.tasks.named('installYarn') | ||
18 | enabled = false | ||
19 | } | ||
20 | |||
21 | def rootInstallFrontend = rootProject.tasks.named('installFrontend') | ||
22 | rootInstallFrontend.configure { | ||
23 | inputs.file "${projectDir}/package.json" | ||
24 | } | ||
25 | |||
26 | tasks.named('installFrontend') { | ||
27 | dependsOn rootInstallFrontend | ||
28 | enabled = false | ||
29 | } | ||
diff --git a/buildSrc/src/main/groovy/refinery-frontend-worktree.gradle b/buildSrc/src/main/groovy/refinery-frontend-worktree.gradle deleted file mode 100644 index 1d239fd5..00000000 --- a/buildSrc/src/main/groovy/refinery-frontend-worktree.gradle +++ /dev/null | |||
@@ -1,95 +0,0 @@ | |||
1 | plugins { | ||
2 | id 'refinery-frontend-conventions' | ||
3 | } | ||
4 | |||
5 | frontend { | ||
6 | yarnGlobalInstallScript = "install -g yarn@${project.ext['frontend.yarn1Version']}" | ||
7 | yarnInstallScript = "set version ${frontend.yarnVersion.get()} --only-if-needed" | ||
8 | if (project.hasProperty('ci')) { | ||
9 | installScript = 'install --immutable --inline-builds' | ||
10 | } else { | ||
11 | installScript = 'install' | ||
12 | } | ||
13 | } | ||
14 | |||
15 | ext.frontedPropertiesFile = "${frontend.nodeInstallDirectory.get()}/frontend.properties" | ||
16 | |||
17 | String getFrontendProperty(String propertyName) { | ||
18 | FileInputStream inputStream = null | ||
19 | Properties props = new Properties() | ||
20 | try { | ||
21 | inputStream = new FileInputStream(frontedPropertiesFile) | ||
22 | props.load(inputStream) | ||
23 | } catch (IOException ignored) { | ||
24 | return null | ||
25 | } finally { | ||
26 | if (inputStream != null) { | ||
27 | inputStream.close() | ||
28 | } | ||
29 | } | ||
30 | return props.get(propertyName) | ||
31 | } | ||
32 | |||
33 | void putFrontedProperty(String propertyName, String propertyValue) { | ||
34 | FileInputStream inputStream = null | ||
35 | Properties props = new Properties() | ||
36 | try { | ||
37 | inputStream = new FileInputStream(frontedPropertiesFile) | ||
38 | props.load(inputStream) | ||
39 | } catch (FileNotFoundException ignored) { | ||
40 | // Use an empty Properties object instead | ||
41 | } finally { | ||
42 | if (inputStream != null) { | ||
43 | inputStream.close() | ||
44 | } | ||
45 | } | ||
46 | props.put(propertyName, propertyValue) | ||
47 | FileOutputStream outputStream = null | ||
48 | try { | ||
49 | outputStream = new FileOutputStream(frontedPropertiesFile) | ||
50 | props.store(outputStream, null) | ||
51 | } catch (IOException ignored) { | ||
52 | } finally { | ||
53 | if (outputStream != null) { | ||
54 | outputStream.close() | ||
55 | } | ||
56 | } | ||
57 | } | ||
58 | |||
59 | tasks.named('installNode') { | ||
60 | onlyIf { | ||
61 | getFrontendProperty('installedNodeVersion') != frontend.nodeVersion.get() | ||
62 | } | ||
63 | doLast { | ||
64 | putFrontedProperty('installedNodeVersion', frontend.nodeVersion.get()) | ||
65 | } | ||
66 | } | ||
67 | |||
68 | tasks.named('installYarnGlobally') { | ||
69 | onlyIf { | ||
70 | getFrontendProperty('installedYarn1Version') != project.ext['frontend.yarn1Version'] | ||
71 | } | ||
72 | doLast { | ||
73 | putFrontedProperty('installedYarn1Version', project.ext['frontend.yarn1Version']) | ||
74 | } | ||
75 | outputs.dir "${frontend.nodeInstallDirectory.get()}/lib/node_modules/yarn" | ||
76 | } | ||
77 | |||
78 | tasks.named('installYarn') { | ||
79 | outputs.file ".yarn/releases/yarn-${frontend.yarnVersion.get()}.cjs" | ||
80 | } | ||
81 | |||
82 | tasks.named('installFrontend') { | ||
83 | inputs.files('package.json', 'yarn.lock') | ||
84 | outputs.files('.pnp.cjs', '.pnp.loader.mjs') | ||
85 | } | ||
86 | |||
87 | tasks.register('clobberFrontend', Delete) { | ||
88 | delete frontend.nodeInstallDirectory.get() | ||
89 | delete '.yarn/cache' | ||
90 | delete '.yarn/install-state.gz' | ||
91 | delete '.yarn/sdks' | ||
92 | delete '.yarn/unplugged' | ||
93 | delete '.pnp.cjs' | ||
94 | delete '.pnp.loader.mjs' | ||
95 | } | ||
diff --git a/buildSrc/src/main/groovy/refinery-java-application.gradle b/buildSrc/src/main/groovy/refinery-java-application.gradle deleted file mode 100644 index c38ccdb3..00000000 --- a/buildSrc/src/main/groovy/refinery-java-application.gradle +++ /dev/null | |||
@@ -1,11 +0,0 @@ | |||
1 | plugins { | ||
2 | id 'application' | ||
3 | id 'com.github.johnrengelman.shadow' | ||
4 | id 'refinery-java-conventions' | ||
5 | } | ||
6 | |||
7 | for (taskName in ['distTar', 'distZip', 'shadowDistTar', 'shadowDistZip']) { | ||
8 | tasks.named(taskName) { | ||
9 | enabled = false | ||
10 | } | ||
11 | } | ||
diff --git a/buildSrc/src/main/groovy/refinery-java-conventions.gradle b/buildSrc/src/main/groovy/refinery-java-conventions.gradle deleted file mode 100644 index fdf5818a..00000000 --- a/buildSrc/src/main/groovy/refinery-java-conventions.gradle +++ /dev/null | |||
@@ -1,93 +0,0 @@ | |||
1 | plugins { | ||
2 | id 'jacoco' | ||
3 | id 'java' | ||
4 | id 'refinery-eclipse' | ||
5 | } | ||
6 | |||
7 | repositories { | ||
8 | mavenCentral() | ||
9 | maven { | ||
10 | url 'https://repo.eclipse.org/content/groups/releases/' | ||
11 | } | ||
12 | } | ||
13 | |||
14 | dependencies { | ||
15 | compileOnly libs.jetbrainsAnnotations | ||
16 | testCompileOnly libs.jetbrainsAnnotations | ||
17 | testImplementation libs.hamcrest | ||
18 | testImplementation libs.junit.api | ||
19 | testRuntimeOnly libs.junit.engine | ||
20 | testImplementation libs.junit.params | ||
21 | testImplementation libs.mockito.core | ||
22 | testImplementation libs.mockito.junit | ||
23 | } | ||
24 | |||
25 | java.toolchain { | ||
26 | languageVersion = JavaLanguageVersion.of(19) | ||
27 | } | ||
28 | |||
29 | tasks.withType(JavaCompile) { | ||
30 | options.release.set(17) | ||
31 | } | ||
32 | |||
33 | def jacocoTestReport = tasks.named('jacocoTestReport') | ||
34 | jacocoTestReport.configure { | ||
35 | dependsOn test | ||
36 | reports { | ||
37 | xml.required = true | ||
38 | } | ||
39 | } | ||
40 | |||
41 | tasks.named('test') { | ||
42 | useJUnitPlatform { | ||
43 | excludeTags 'slow' | ||
44 | } | ||
45 | finalizedBy jacocoTestReport | ||
46 | } | ||
47 | |||
48 | tasks.register('slowTest', Test) { | ||
49 | useJUnitPlatform() | ||
50 | finalizedBy jacocoTestReport | ||
51 | } | ||
52 | |||
53 | tasks.named('jar') { | ||
54 | manifest { | ||
55 | attributes( | ||
56 | 'Bundle-SymbolicName': "${project.group}.${project.name}", | ||
57 | 'Bundle-Version': project.version | ||
58 | ) | ||
59 | } | ||
60 | } | ||
61 | |||
62 | def generateEclipseSourceFolders = tasks.register('generateEclipseSourceFolders') | ||
63 | |||
64 | tasks.register('prepareEclipse') { | ||
65 | dependsOn generateEclipseSourceFolders | ||
66 | dependsOn tasks.named('eclipseJdt') | ||
67 | } | ||
68 | |||
69 | tasks.named('eclipseClasspath') { | ||
70 | dependsOn generateEclipseSourceFolders | ||
71 | } | ||
72 | |||
73 | eclipse { | ||
74 | classpath.file.whenMerged { | ||
75 | for (entry in entries) { | ||
76 | if (entry.path.endsWith('-gen')) { | ||
77 | entry.entryAttributes['ignore_optional_problems'] = true | ||
78 | } | ||
79 | // If a project has a main dependency on a project and an test dependency on the testFixtures of a project, | ||
80 | // it will be erroneously added as a test-only dependency to Eclipse. | ||
81 | // As a workaround, we add all project dependencies as main dependencies | ||
82 | // (we do not deliberately use test-only project dependencies). | ||
83 | if (entry in org.gradle.plugins.ide.eclipse.model.ProjectDependency) { | ||
84 | entry.entryAttributes.remove('test') | ||
85 | } | ||
86 | } | ||
87 | } | ||
88 | |||
89 | jdt.file.withProperties { properties -> | ||
90 | // Allow @SuppressWarnings to suppress SonarLint warnings | ||
91 | properties['org.eclipse.jdt.core.compiler.problem.unhandledWarningToken'] = 'ignore' | ||
92 | } | ||
93 | } | ||
diff --git a/buildSrc/src/main/groovy/refinery-java-library.gradle b/buildSrc/src/main/groovy/refinery-java-library.gradle deleted file mode 100644 index daa80f17..00000000 --- a/buildSrc/src/main/groovy/refinery-java-library.gradle +++ /dev/null | |||
@@ -1,4 +0,0 @@ | |||
1 | plugins { | ||
2 | id 'java-library' | ||
3 | id 'refinery-java-conventions' | ||
4 | } | ||
diff --git a/buildSrc/src/main/groovy/refinery-java-test-fixtures.gradle b/buildSrc/src/main/groovy/refinery-java-test-fixtures.gradle deleted file mode 100644 index 02568abd..00000000 --- a/buildSrc/src/main/groovy/refinery-java-test-fixtures.gradle +++ /dev/null | |||
@@ -1,35 +0,0 @@ | |||
1 | import org.gradle.plugins.ide.eclipse.model.AbstractClasspathEntry | ||
2 | |||
3 | plugins { | ||
4 | id 'java-test-fixtures' | ||
5 | id 'refinery-java-conventions' | ||
6 | } | ||
7 | |||
8 | eclipse.classpath { | ||
9 | containsTestFixtures = true | ||
10 | |||
11 | file.whenMerged { classpath -> | ||
12 | def hasTest = classpath.entries.any { entry -> | ||
13 | entry in AbstractClasspathEntry && | ||
14 | entry.entryAttributes['gradle_scope'] == 'test' | ||
15 | } | ||
16 | for (entry in classpath.entries) { | ||
17 | // Workaround https://github.com/gradle/gradle/issues/11845 based on | ||
18 | // https://discuss.gradle.org/t/gradle-used-by-scope-not-correctly-generated-when-the-java-test-fixtures-plugin-is-used/39935/2 | ||
19 | if (entry in AbstractClasspathEntry) { | ||
20 | def usedBy = new LinkedHashSet( | ||
21 | Arrays.asList((entry.entryAttributes['gradle_used_by_scope'] ?: '').split(',')) | ||
22 | ) | ||
23 | if (usedBy.contains('main')) { | ||
24 | usedBy += 'testFixtures' | ||
25 | } | ||
26 | if (hasTest && usedBy.contains('testFixtures')) { | ||
27 | usedBy += 'test' | ||
28 | } | ||
29 | if (!usedBy.empty) { | ||
30 | entry.entryAttributes['gradle_used_by_scope'] = usedBy.join(',') | ||
31 | } | ||
32 | } | ||
33 | } | ||
34 | } | ||
35 | } | ||
diff --git a/buildSrc/src/main/groovy/refinery-jmh.gradle b/buildSrc/src/main/groovy/refinery-jmh.gradle deleted file mode 100644 index 1ab9edc3..00000000 --- a/buildSrc/src/main/groovy/refinery-jmh.gradle +++ /dev/null | |||
@@ -1,64 +0,0 @@ | |||
1 | import org.gradle.plugins.ide.eclipse.model.AbstractClasspathEntry | ||
2 | |||
3 | plugins { | ||
4 | id 'refinery-java-conventions' | ||
5 | id 'refinery-sonarqube' | ||
6 | } | ||
7 | |||
8 | configurations { | ||
9 | jmh { | ||
10 | extendsFrom implementation | ||
11 | } | ||
12 | } | ||
13 | |||
14 | sourceSets { | ||
15 | jmh { | ||
16 | java.srcDirs = ['src/jmh/java'] | ||
17 | resources.srcDirs = ['src/jmh/resources'] | ||
18 | compileClasspath += sourceSets.main.runtimeClasspath | ||
19 | compileClasspath += sourceSets.test.runtimeClasspath | ||
20 | } | ||
21 | } | ||
22 | |||
23 | dependencies { | ||
24 | jmhImplementation libs.jmh.core | ||
25 | jmhAnnotationProcessor libs.jmh.annprocess | ||
26 | } | ||
27 | |||
28 | tasks.register('jmh', JavaExec) { | ||
29 | dependsOn tasks.named('jmhClasses') | ||
30 | mainClass = 'org.openjdk.jmh.Main' | ||
31 | classpath = sourceSets.jmh.compileClasspath + sourceSets.jmh.runtimeClasspath | ||
32 | } | ||
33 | |||
34 | eclipse.classpath.file.whenMerged { classpath -> | ||
35 | for (entry in classpath.entries) { | ||
36 | if (entry in AbstractClasspathEntry) { | ||
37 | // Workaround from https://github.com/gradle/gradle/issues/4802#issuecomment-407902081 | ||
38 | if (entry.entryAttributes['gradle_scope'] == 'jmh') { | ||
39 | // Allow test helper classes to be used in benchmarks from Eclipse | ||
40 | // and do not expose JMH dependencies to the main source code. | ||
41 | entry.entryAttributes['test'] = true | ||
42 | } else { | ||
43 | // Workaround based on | ||
44 | // https://discuss.gradle.org/t/gradle-used-by-scope-not-correctly-generated-when-the-java-test-fixtures-plugin-is-used/39935/2 | ||
45 | def usedBy = new LinkedHashSet( | ||
46 | Arrays.asList((entry.entryAttributes['gradle_used_by_scope'] ?: '').split(',')) | ||
47 | ) | ||
48 | if (['main', 'test', 'testFixtures'].any { e -> usedBy.contains(e) }) { | ||
49 | // main and test sources are also used by jmh sources. | ||
50 | usedBy += 'jmh' | ||
51 | } | ||
52 | if (!usedBy.empty) { | ||
53 | entry.entryAttributes['gradle_used_by_scope'] = usedBy.join(',') | ||
54 | } | ||
55 | } | ||
56 | } | ||
57 | } | ||
58 | } | ||
59 | |||
60 | sonarqube.properties { | ||
61 | properties['sonar.tests'] += [ | ||
62 | 'src/jmh/java', | ||
63 | ] | ||
64 | } | ||
diff --git a/buildSrc/src/main/groovy/refinery-mwe2.gradle b/buildSrc/src/main/groovy/refinery-mwe2.gradle deleted file mode 100644 index c7f15e82..00000000 --- a/buildSrc/src/main/groovy/refinery-mwe2.gradle +++ /dev/null | |||
@@ -1,16 +0,0 @@ | |||
1 | plugins { | ||
2 | id 'eclipse' | ||
3 | id 'refinery-java-conventions' | ||
4 | } | ||
5 | |||
6 | configurations { | ||
7 | mwe2 { | ||
8 | extendsFrom implementation | ||
9 | } | ||
10 | } | ||
11 | |||
12 | dependencies { | ||
13 | mwe2 libs.mwe2.launch | ||
14 | } | ||
15 | |||
16 | eclipse.classpath.plusConfigurations += [configurations.mwe2] | ||
diff --git a/buildSrc/src/main/groovy/refinery-sonarqube.gradle b/buildSrc/src/main/groovy/refinery-sonarqube.gradle deleted file mode 100644 index d84f4ada..00000000 --- a/buildSrc/src/main/groovy/refinery-sonarqube.gradle +++ /dev/null | |||
@@ -1,8 +0,0 @@ | |||
1 | plugins { | ||
2 | id 'org.sonarqube' | ||
3 | } | ||
4 | |||
5 | sonarqube.properties { | ||
6 | // Make sure `exclusions` is a List in every subproject | ||
7 | property 'sonar.exclusions', [] | ||
8 | } | ||
diff --git a/buildSrc/src/main/groovy/refinery-xtext-conventions.gradle b/buildSrc/src/main/groovy/refinery-xtext-conventions.gradle deleted file mode 100644 index 0c7c82f0..00000000 --- a/buildSrc/src/main/groovy/refinery-xtext-conventions.gradle +++ /dev/null | |||
@@ -1,21 +0,0 @@ | |||
1 | plugins { | ||
2 | id 'refinery-java-conventions' | ||
3 | id 'refinery-sonarqube' | ||
4 | } | ||
5 | |||
6 | sourceSets { | ||
7 | main { | ||
8 | java.srcDirs += ['src/main/xtext-gen'] | ||
9 | resources.srcDirs += ['src/main/xtext-gen'] | ||
10 | } | ||
11 | } | ||
12 | |||
13 | tasks.named('clean') { | ||
14 | delete 'src/main/xtext-gen' | ||
15 | } | ||
16 | |||
17 | sonarqube.properties { | ||
18 | properties['sonar.exclusions'] += [ | ||
19 | 'src/main/xtext-gen/**', | ||
20 | ] | ||
21 | } | ||
diff --git a/buildSrc/src/main/java/tools/refinery/gradle/utils/EclipseUtils.java b/buildSrc/src/main/java/tools/refinery/gradle/utils/EclipseUtils.java new file mode 100644 index 00000000..ac7ba3f4 --- /dev/null +++ b/buildSrc/src/main/java/tools/refinery/gradle/utils/EclipseUtils.java | |||
@@ -0,0 +1,77 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.gradle.utils; | ||
7 | |||
8 | import groovy.lang.Closure; | ||
9 | import org.gradle.api.Action; | ||
10 | import org.gradle.plugins.ide.api.XmlFileContentMerger; | ||
11 | import org.gradle.plugins.ide.eclipse.model.AbstractClasspathEntry; | ||
12 | import org.gradle.plugins.ide.eclipse.model.Classpath; | ||
13 | import org.gradle.plugins.ide.eclipse.model.EclipseModel; | ||
14 | |||
15 | import java.util.LinkedHashSet; | ||
16 | import java.util.List; | ||
17 | import java.util.Set; | ||
18 | import java.util.function.Consumer; | ||
19 | |||
20 | public final class EclipseUtils { | ||
21 | private static final String GRADLE_USED_BY_SCOPE_ATTRIBUTE = "gradle_used_by_scope"; | ||
22 | private static final String GRADLE_USED_BY_SCOPE_SEPARATOR = ","; | ||
23 | |||
24 | private EclipseUtils() { | ||
25 | throw new IllegalStateException("This is a static utility class and should not be instantiated directly"); | ||
26 | } | ||
27 | |||
28 | public static void patchClasspathEntries(EclipseModel eclipseModel, Consumer<AbstractClasspathEntry> consumer) { | ||
29 | whenClasspathFileMerged(eclipseModel.getClasspath().getFile(), | ||
30 | classpath -> patchClasspathEntries(classpath, consumer)); | ||
31 | } | ||
32 | |||
33 | public static void patchClasspathEntries(Classpath eclipseClasspath, Consumer<AbstractClasspathEntry> consumer) { | ||
34 | for (var entry : eclipseClasspath.getEntries()) { | ||
35 | if (entry instanceof AbstractClasspathEntry abstractClasspathEntry) { | ||
36 | consumer.accept(abstractClasspathEntry); | ||
37 | } | ||
38 | } | ||
39 | } | ||
40 | |||
41 | /** | ||
42 | * Avoids ambiguous call to ({@link XmlFileContentMerger#whenMerged(Closure)} versus | ||
43 | * {@link XmlFileContentMerger#whenMerged(Action)}) in Kotlin build scripts. | ||
44 | * <p> | ||
45 | * The {@code Closure} variant will use the build script itself as {@code this}, and Kotlin will consider any | ||
46 | * type ascription as a cast of {@code this} (instead of the argument of the {@code Action<?>}). This results in | ||
47 | * a mysterious {@link ClassCastException}, since the class generated from the build script doesn't extend from | ||
48 | * {@link Classpath}. Using this helper method selects the correct call and applies the cast properly. | ||
49 | * | ||
50 | * @param file The Eclipse classpath file. | ||
51 | * @param consumer The lambda to run on when the classpath file is merged. | ||
52 | */ | ||
53 | public static void whenClasspathFileMerged(XmlFileContentMerger file, Consumer<Classpath> consumer) { | ||
54 | file.whenMerged(untypedClasspath -> { | ||
55 | var classpath = (Classpath) untypedClasspath; | ||
56 | consumer.accept(classpath); | ||
57 | }); | ||
58 | } | ||
59 | |||
60 | public static void patchGradleUsedByScope(AbstractClasspathEntry entry, Consumer<Set<String>> consumer) { | ||
61 | var entryAttributes = entry.getEntryAttributes(); | ||
62 | var usedByValue = entryAttributes.get(GRADLE_USED_BY_SCOPE_ATTRIBUTE); | ||
63 | Set<String> usedBySet; | ||
64 | if (usedByValue instanceof String usedByString) { | ||
65 | usedBySet = new LinkedHashSet<>(List.of(usedByString.split(GRADLE_USED_BY_SCOPE_SEPARATOR))); | ||
66 | } else { | ||
67 | usedBySet = new LinkedHashSet<>(); | ||
68 | } | ||
69 | consumer.accept(usedBySet); | ||
70 | if (usedBySet.isEmpty()) { | ||
71 | entryAttributes.remove(GRADLE_USED_BY_SCOPE_ATTRIBUTE); | ||
72 | } else { | ||
73 | var newUsedByString = String.join(GRADLE_USED_BY_SCOPE_SEPARATOR, usedBySet); | ||
74 | entryAttributes.put(GRADLE_USED_BY_SCOPE_ATTRIBUTE, newUsedByString); | ||
75 | } | ||
76 | } | ||
77 | } | ||
diff --git a/buildSrc/src/main/java/tools/refinery/gradle/utils/SonarPropertiesUtils.java b/buildSrc/src/main/java/tools/refinery/gradle/utils/SonarPropertiesUtils.java new file mode 100644 index 00000000..183cd56a --- /dev/null +++ b/buildSrc/src/main/java/tools/refinery/gradle/utils/SonarPropertiesUtils.java | |||
@@ -0,0 +1,49 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.gradle.utils; | ||
7 | |||
8 | import java.util.ArrayList; | ||
9 | import java.util.Collections; | ||
10 | import java.util.Map; | ||
11 | |||
12 | public final class SonarPropertiesUtils { | ||
13 | private SonarPropertiesUtils() { | ||
14 | throw new IllegalStateException("This is a static utility class and should not be instantiated directly"); | ||
15 | } | ||
16 | |||
17 | /** | ||
18 | * Adds the entries to a Sonar property of list type. | ||
19 | * <p> | ||
20 | * According to the Sonar Gradle documentation for {@link org.sonarqube.gradle.SonarProperties}, property values | ||
21 | * are converted to Strings as follows: | ||
22 | * <ul> | ||
23 | * <li>{@code Iterable}s are recursively converted and joined into a comma-separated String.</li> | ||
24 | * <li>All other values are converted to Strings by calling their {@code toString()} method.</li> | ||
25 | * </ul> | ||
26 | * Therefore, we use {@link ArrayList} to retain lists entries, which will be recursively converted later. | ||
27 | * | ||
28 | * @param properties The sonar properties map returned by | ||
29 | * {@link org.sonarqube.gradle.SonarProperties#getProperties()}. | ||
30 | * @param propertyName The name of the property to append to. | ||
31 | * @param entries The entries to append. | ||
32 | */ | ||
33 | public static void addToList(Map<String, Object> properties, String propertyName, String... entries) { | ||
34 | ArrayList<Object> newValue; | ||
35 | var currentValue = properties.get(propertyName); | ||
36 | if (currentValue instanceof ArrayList<?> currentList) { | ||
37 | @SuppressWarnings("unchecked") | ||
38 | var objectList = (ArrayList<Object>) currentList; | ||
39 | newValue = objectList; | ||
40 | } else if (currentValue == null) { | ||
41 | newValue = new ArrayList<>(entries.length); | ||
42 | } else { | ||
43 | newValue = new ArrayList<>(entries.length + 1); | ||
44 | newValue.add(currentValue); | ||
45 | } | ||
46 | Collections.addAll(newValue, entries); | ||
47 | properties.put(propertyName, newValue); | ||
48 | } | ||
49 | } | ||
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/eclipse.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/eclipse.gradle.kts new file mode 100644 index 00000000..8bab1d2b --- /dev/null +++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/eclipse.gradle.kts | |||
@@ -0,0 +1,43 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.gradle | ||
7 | |||
8 | import java.util.Properties | ||
9 | |||
10 | plugins { | ||
11 | eclipse | ||
12 | } | ||
13 | |||
14 | // Workaround from https://github.com/gradle/gradle/issues/898#issuecomment-885765821 | ||
15 | val eclipseResourceEncoding by tasks.registering { | ||
16 | val outputFile = file(".settings/org.eclipse.core.resources.prefs") | ||
17 | val encoding = providers.systemProperty("file.encoding") | ||
18 | |||
19 | inputs.property("file.encoding", encoding) | ||
20 | outputs.file(outputFile) | ||
21 | |||
22 | doLast { | ||
23 | val eclipseEncodingProperties = Properties(2) | ||
24 | eclipseEncodingProperties["eclipse.preferences.version"] = "1" | ||
25 | eclipseEncodingProperties["encoding/<project>"] = encoding.get() | ||
26 | outputFile.outputStream().use { outputStream -> | ||
27 | eclipseEncodingProperties.store(outputStream, "generated by $name") | ||
28 | } | ||
29 | } | ||
30 | } | ||
31 | |||
32 | tasks.eclipse { | ||
33 | dependsOn(eclipseResourceEncoding) | ||
34 | } | ||
35 | |||
36 | eclipse.synchronizationTasks(eclipseResourceEncoding) | ||
37 | |||
38 | tasks.register<Delete>("clobberEclipse") { | ||
39 | mustRunAfter(tasks.eclipse) | ||
40 | delete(".classpath") | ||
41 | delete(".project") | ||
42 | delete(".settings") | ||
43 | } | ||
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/frontend-workspace.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/frontend-workspace.gradle.kts new file mode 100644 index 00000000..f1f6d952 --- /dev/null +++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/frontend-workspace.gradle.kts | |||
@@ -0,0 +1,39 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.gradle | ||
7 | |||
8 | plugins { | ||
9 | id("tools.refinery.gradle.eclipse") | ||
10 | id("tools.refinery.gradle.internal.frontend-conventions") | ||
11 | } | ||
12 | |||
13 | tasks { | ||
14 | installNode { | ||
15 | dependsOn(rootProject.tasks.named("installNode")) | ||
16 | enabled = false | ||
17 | } | ||
18 | |||
19 | installYarnGlobally { | ||
20 | dependsOn(rootProject.tasks.named("installYarnGlobally")) | ||
21 | enabled = false | ||
22 | } | ||
23 | |||
24 | installYarn { | ||
25 | dependsOn(rootProject.tasks.named("installYarn")) | ||
26 | enabled = false | ||
27 | } | ||
28 | |||
29 | val rootInstallFrontend = rootProject.tasks.named("installFrontend") | ||
30 | |||
31 | rootInstallFrontend.configure { | ||
32 | inputs.file("$projectDir/package.json") | ||
33 | } | ||
34 | |||
35 | installFrontend { | ||
36 | dependsOn(rootInstallFrontend) | ||
37 | enabled = false | ||
38 | } | ||
39 | } | ||
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/frontend-worktree.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/frontend-worktree.gradle.kts new file mode 100644 index 00000000..609e6f24 --- /dev/null +++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/frontend-worktree.gradle.kts | |||
@@ -0,0 +1,92 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.gradle | ||
7 | |||
8 | import java.io.FileInputStream | ||
9 | import java.io.FileNotFoundException | ||
10 | import java.io.FileOutputStream | ||
11 | import java.util.Properties | ||
12 | |||
13 | plugins { | ||
14 | id("tools.refinery.gradle.internal.frontend-conventions") | ||
15 | } | ||
16 | |||
17 | val yarn1Version = providers.gradleProperty("frontend.yarn1Version") | ||
18 | |||
19 | frontend { | ||
20 | yarnGlobalInstallScript.set(yarn1Version.map { version -> "install -g yarn@$version" }) | ||
21 | yarnInstallScript.set(frontend.yarnVersion.map { version -> "set version $version --only-if-needed" }) | ||
22 | installScript.set(provider { | ||
23 | if (project.hasProperty("ci")) "install --immutable --inline-builds" else "install" | ||
24 | }) | ||
25 | } | ||
26 | |||
27 | val frontendPropertiesFile: Provider<String> = frontend.nodeInstallDirectory.map { dir -> "$dir/frontend.properties" } | ||
28 | |||
29 | fun readFrontendProperties(): Properties { | ||
30 | val props = Properties() | ||
31 | try { | ||
32 | FileInputStream(frontendPropertiesFile.get()).use { inputStream -> | ||
33 | props.load(inputStream) | ||
34 | } | ||
35 | } catch (ignored: FileNotFoundException) { | ||
36 | // Ignore missing file. | ||
37 | } | ||
38 | return props | ||
39 | } | ||
40 | |||
41 | fun getFrontendProperty(propertyName: String): String? { | ||
42 | val props = readFrontendProperties() | ||
43 | return props[propertyName]?.toString() | ||
44 | } | ||
45 | |||
46 | fun putFrontedProperty(propertyName: String, propertyValue: String) { | ||
47 | val props = readFrontendProperties() | ||
48 | props[propertyName] = propertyValue | ||
49 | FileOutputStream(frontendPropertiesFile.get()).use { outputStream -> | ||
50 | props.store(outputStream, "generated by refinery-frontend-worktree") | ||
51 | } | ||
52 | } | ||
53 | |||
54 | tasks { | ||
55 | installNode { | ||
56 | onlyIf { | ||
57 | getFrontendProperty("installedNodeVersion") != frontend.nodeVersion.get() | ||
58 | } | ||
59 | doLast { | ||
60 | putFrontedProperty("installedNodeVersion", frontend.nodeVersion.get()) | ||
61 | } | ||
62 | } | ||
63 | |||
64 | installYarnGlobally { | ||
65 | onlyIf { | ||
66 | getFrontendProperty("installedYarn1Version") != yarn1Version.get() | ||
67 | } | ||
68 | doLast { | ||
69 | putFrontedProperty("installedYarn1Version", yarn1Version.get()) | ||
70 | } | ||
71 | outputs.dir(frontend.nodeInstallDirectory.map { dir -> "$dir/lib/node_modules/yarn" }) | ||
72 | } | ||
73 | |||
74 | installYarn { | ||
75 | outputs.file(frontend.yarnVersion.map { version -> ".yarn/releases/yarn-$version.cjs" }) | ||
76 | } | ||
77 | |||
78 | installFrontend { | ||
79 | inputs.files("package.json", "yarn.lock") | ||
80 | outputs.files(".pnp.cjs", ".pnp.loader.mjs") | ||
81 | } | ||
82 | |||
83 | register("clobberFrontend", Delete::class) { | ||
84 | delete(frontend.nodeInstallDirectory) | ||
85 | delete(".yarn/cache") | ||
86 | delete(".yarn/install-state.gz") | ||
87 | delete(".yarn/sdks") | ||
88 | delete(".yarn/unplugged") | ||
89 | delete(".pnp.cjs") | ||
90 | delete(".pnp.loader.mjs") | ||
91 | } | ||
92 | } | ||
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/internal/frontend-conventions.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/internal/frontend-conventions.gradle.kts new file mode 100644 index 00000000..bd5d0197 --- /dev/null +++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/internal/frontend-conventions.gradle.kts | |||
@@ -0,0 +1,22 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.gradle.internal | ||
7 | |||
8 | plugins { | ||
9 | id("org.siouan.frontend-jdk11") | ||
10 | } | ||
11 | |||
12 | frontend { | ||
13 | nodeVersion.set(providers.gradleProperty("frontend.nodeVersion")) | ||
14 | nodeInstallDirectory.set(file("$rootDir/.node")) | ||
15 | yarnEnabled.set(true) | ||
16 | yarnVersion.set(providers.gradleProperty("frontend.yarnVersion")) | ||
17 | } | ||
18 | |||
19 | tasks.enableYarnBerry { | ||
20 | // There is no need to enable berry manually, because berry files are already committed to the repo. | ||
21 | enabled = false | ||
22 | } | ||
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/internal/java-conventions.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/internal/java-conventions.gradle.kts new file mode 100644 index 00000000..7c7cbabd --- /dev/null +++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/internal/java-conventions.gradle.kts | |||
@@ -0,0 +1,102 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.gradle.internal | ||
7 | |||
8 | import org.gradle.accessors.dm.LibrariesForLibs | ||
9 | import org.gradle.plugins.ide.eclipse.model.ProjectDependency | ||
10 | import tools.refinery.gradle.utils.EclipseUtils | ||
11 | |||
12 | plugins { | ||
13 | jacoco | ||
14 | java | ||
15 | id("tools.refinery.gradle.eclipse") | ||
16 | } | ||
17 | |||
18 | repositories { | ||
19 | mavenCentral() | ||
20 | maven { | ||
21 | url = uri("https://repo.eclipse.org/content/groups/releases/") | ||
22 | } | ||
23 | } | ||
24 | |||
25 | // Use log4j-over-slf4j instead of log4j 1.x in the tests. | ||
26 | configurations.testRuntimeClasspath { | ||
27 | exclude(group = "log4j", module = "log4j") | ||
28 | } | ||
29 | |||
30 | val libs = the<LibrariesForLibs>() | ||
31 | |||
32 | dependencies { | ||
33 | compileOnly(libs.jetbrainsAnnotations) | ||
34 | testCompileOnly(libs.jetbrainsAnnotations) | ||
35 | testImplementation(libs.hamcrest) | ||
36 | testImplementation(libs.junit.api) | ||
37 | testRuntimeOnly(libs.junit.engine) | ||
38 | testImplementation(libs.junit.params) | ||
39 | testImplementation(libs.mockito.core) | ||
40 | testImplementation(libs.mockito.junit) | ||
41 | testImplementation(libs.slf4j.simple) | ||
42 | testImplementation(libs.slf4j.log4j) | ||
43 | } | ||
44 | |||
45 | java.toolchain { | ||
46 | languageVersion.set(JavaLanguageVersion.of(17)) | ||
47 | } | ||
48 | |||
49 | tasks { | ||
50 | test { | ||
51 | useJUnitPlatform { | ||
52 | excludeTags("slow") | ||
53 | } | ||
54 | finalizedBy(tasks.jacocoTestReport) | ||
55 | } | ||
56 | |||
57 | jacocoTestReport { | ||
58 | dependsOn(tasks.test) | ||
59 | reports { | ||
60 | xml.required.set(true) | ||
61 | } | ||
62 | } | ||
63 | |||
64 | jar { | ||
65 | manifest { | ||
66 | attributes( | ||
67 | "Bundle-SymbolicName" to "${project.group}.${project.name}", | ||
68 | "Bundle-Version" to project.version | ||
69 | ) | ||
70 | } | ||
71 | } | ||
72 | |||
73 | val generateEclipseSourceFolders by tasks.registering | ||
74 | |||
75 | register("prepareEclipse") { | ||
76 | dependsOn(generateEclipseSourceFolders) | ||
77 | dependsOn(tasks.named("eclipseJdt")) | ||
78 | } | ||
79 | |||
80 | eclipseClasspath { | ||
81 | dependsOn(generateEclipseSourceFolders) | ||
82 | } | ||
83 | } | ||
84 | |||
85 | eclipse { | ||
86 | EclipseUtils.patchClasspathEntries(this) { entry -> | ||
87 | if (entry.path.endsWith("-gen")) { | ||
88 | entry.entryAttributes["ignore_optional_problems"] = true | ||
89 | } | ||
90 | // If a project has a main dependency on a project and a test dependency on the testFixtures of a project, | ||
91 | // it will be erroneously added as a test-only dependency to Eclipse. As a workaround, we add all project | ||
92 | // dependencies as main dependencies (we do not deliberately use test-only project dependencies). | ||
93 | if (entry is ProjectDependency) { | ||
94 | entry.entryAttributes.remove("test") | ||
95 | } | ||
96 | } | ||
97 | |||
98 | jdt.file.withProperties { | ||
99 | // Allow @SuppressWarnings to suppress SonarLint warnings | ||
100 | this["org.eclipse.jdt.core.compiler.problem.unhandledWarningToken"] = "ignore" | ||
101 | } | ||
102 | } | ||
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/java-application.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/java-application.gradle.kts new file mode 100644 index 00000000..0924311b --- /dev/null +++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/java-application.gradle.kts | |||
@@ -0,0 +1,32 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.gradle | ||
7 | |||
8 | import org.gradle.accessors.dm.LibrariesForLibs | ||
9 | |||
10 | plugins { | ||
11 | application | ||
12 | id("com.github.johnrengelman.shadow") | ||
13 | id("tools.refinery.gradle.internal.java-conventions") | ||
14 | } | ||
15 | |||
16 | // Use log4j-over-slf4j instead of log4j 1.x when running the application. | ||
17 | configurations.runtimeClasspath { | ||
18 | exclude(group = "log4j", module = "log4j") | ||
19 | } | ||
20 | |||
21 | val libs = the<LibrariesForLibs>() | ||
22 | |||
23 | dependencies { | ||
24 | implementation(libs.slf4j.simple) | ||
25 | implementation(libs.slf4j.log4j) | ||
26 | } | ||
27 | |||
28 | for (taskName in listOf("distTar", "distZip", "shadowDistTar", "shadowDistZip")) { | ||
29 | tasks.named(taskName) { | ||
30 | enabled = false | ||
31 | } | ||
32 | } | ||
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/java-library.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/java-library.gradle.kts new file mode 100644 index 00000000..3aff3833 --- /dev/null +++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/java-library.gradle.kts | |||
@@ -0,0 +1,11 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.gradle | ||
7 | |||
8 | plugins { | ||
9 | `java-library` | ||
10 | id("tools.refinery.gradle.internal.java-conventions") | ||
11 | } | ||
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/java-test-fixtures.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/java-test-fixtures.gradle.kts new file mode 100644 index 00000000..a28484d4 --- /dev/null +++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/java-test-fixtures.gradle.kts | |||
@@ -0,0 +1,36 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.gradle | ||
7 | |||
8 | import org.gradle.plugins.ide.eclipse.model.AbstractClasspathEntry | ||
9 | import tools.refinery.gradle.utils.EclipseUtils | ||
10 | |||
11 | plugins { | ||
12 | `java-test-fixtures` | ||
13 | id("tools.refinery.gradle.internal.java-conventions") | ||
14 | } | ||
15 | |||
16 | eclipse.classpath { | ||
17 | containsTestFixtures.set(true) | ||
18 | |||
19 | EclipseUtils.whenClasspathFileMerged(file) { eclipseClasspath -> | ||
20 | val hasTest = eclipseClasspath.entries.any { entry -> | ||
21 | entry is AbstractClasspathEntry && entry.entryAttributes["gradle_scope"] == "test" | ||
22 | } | ||
23 | EclipseUtils.patchClasspathEntries(eclipseClasspath) { entry -> | ||
24 | // Workaround https://github.com/gradle/gradle/issues/11845 based on | ||
25 | // https://discuss.gradle.org/t/gradle-used-by-scope-not-correctly-generated-when-the-java-test-fixtures-plugin-is-used/39935/2 | ||
26 | EclipseUtils.patchGradleUsedByScope(entry) { usedBy -> | ||
27 | if (usedBy.contains("main")) { | ||
28 | usedBy += "testFixtures" | ||
29 | } | ||
30 | if (hasTest && usedBy.contains("testFixtures")) { | ||
31 | usedBy += "test" | ||
32 | } | ||
33 | } | ||
34 | } | ||
35 | } | ||
36 | } | ||
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/jmh.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/jmh.gradle.kts new file mode 100644 index 00000000..6fb8fbac --- /dev/null +++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/jmh.gradle.kts | |||
@@ -0,0 +1,66 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.gradle | ||
7 | |||
8 | import org.gradle.accessors.dm.LibrariesForLibs | ||
9 | import tools.refinery.gradle.utils.EclipseUtils | ||
10 | import tools.refinery.gradle.utils.SonarPropertiesUtils | ||
11 | |||
12 | plugins { | ||
13 | id("tools.refinery.gradle.internal.java-conventions") | ||
14 | id("tools.refinery.gradle.sonarqube") | ||
15 | } | ||
16 | |||
17 | val sourceSets = the<SourceSetContainer>() | ||
18 | |||
19 | val jmh: SourceSet by sourceSets.creating { | ||
20 | compileClasspath += sourceSets.main.get().output | ||
21 | runtimeClasspath += sourceSets.main.get().output | ||
22 | // Allow using test classes in benchmarks for now. | ||
23 | compileClasspath += sourceSets.test.get().output | ||
24 | runtimeClasspath += sourceSets.test.get().output | ||
25 | } | ||
26 | |||
27 | val jmhImplementation: Configuration by configurations.getting { | ||
28 | extendsFrom(configurations.implementation.get(), configurations.testImplementation.get()) | ||
29 | } | ||
30 | |||
31 | val jmhAnnotationProcessor: Configuration by configurations.getting | ||
32 | |||
33 | configurations["jmhRuntimeOnly"].extendsFrom(configurations.runtimeOnly.get(), configurations.testRuntimeOnly.get()) | ||
34 | |||
35 | val libs = the<LibrariesForLibs>() | ||
36 | |||
37 | dependencies { | ||
38 | jmhImplementation(libs.jmh.core) | ||
39 | jmhAnnotationProcessor(libs.jmh.annprocess) | ||
40 | } | ||
41 | |||
42 | tasks.register<JavaExec>("jmh") { | ||
43 | dependsOn(tasks.named("jmhClasses")) | ||
44 | mainClass.set("org.openjdk.jmh.Main") | ||
45 | classpath = jmh.runtimeClasspath | ||
46 | } | ||
47 | |||
48 | EclipseUtils.patchClasspathEntries(eclipse) { entry -> | ||
49 | // Workaround from https://github.com/gradle/gradle/issues/4802#issuecomment-407902081 | ||
50 | if (entry.entryAttributes["gradle_scope"] == "jmh") { | ||
51 | // Allow test helper classes to be used in benchmarks from Eclipse | ||
52 | // and do not expose JMH dependencies to the main source code. | ||
53 | entry.entryAttributes["test"] = true | ||
54 | } else { | ||
55 | EclipseUtils.patchGradleUsedByScope(entry) { usedBy -> | ||
56 | if (listOf("main", "test", "testFixtures").any { e -> usedBy.contains(e) }) { | ||
57 | // main and test sources are also used by jmh sources. | ||
58 | usedBy += "jmh" | ||
59 | } | ||
60 | } | ||
61 | } | ||
62 | } | ||
63 | |||
64 | sonarqube.properties { | ||
65 | SonarPropertiesUtils.addToList(properties, "sonar.tests", "src/jmh/java") | ||
66 | } | ||
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/mwe2.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/mwe2.gradle.kts new file mode 100644 index 00000000..f4381434 --- /dev/null +++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/mwe2.gradle.kts | |||
@@ -0,0 +1,26 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.gradle | ||
7 | |||
8 | import org.gradle.accessors.dm.LibrariesForLibs | ||
9 | |||
10 | plugins { | ||
11 | id("tools.refinery.gradle.internal.java-conventions") | ||
12 | } | ||
13 | |||
14 | val mwe2: Configuration by configurations.creating { | ||
15 | isCanBeConsumed = false | ||
16 | isCanBeResolved = true | ||
17 | extendsFrom(configurations.implementation.get()) | ||
18 | } | ||
19 | |||
20 | val libs = the<LibrariesForLibs>() | ||
21 | |||
22 | dependencies { | ||
23 | mwe2(libs.mwe2.launch) | ||
24 | } | ||
25 | |||
26 | eclipse.classpath.plusConfigurations += mwe2 | ||
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/sonarqube.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/sonarqube.gradle.kts new file mode 100644 index 00000000..93406492 --- /dev/null +++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/sonarqube.gradle.kts | |||
@@ -0,0 +1,10 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.gradle | ||
7 | |||
8 | plugins { | ||
9 | id("org.sonarqube") | ||
10 | } | ||
diff --git a/buildSrc/src/main/kotlin/tools/refinery/gradle/xtext-generated.gradle.kts b/buildSrc/src/main/kotlin/tools/refinery/gradle/xtext-generated.gradle.kts new file mode 100644 index 00000000..6cb1d7b5 --- /dev/null +++ b/buildSrc/src/main/kotlin/tools/refinery/gradle/xtext-generated.gradle.kts | |||
@@ -0,0 +1,49 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.gradle | ||
7 | |||
8 | import tools.refinery.gradle.utils.SonarPropertiesUtils | ||
9 | |||
10 | plugins { | ||
11 | id("tools.refinery.gradle.internal.java-conventions") | ||
12 | id("tools.refinery.gradle.sonarqube") | ||
13 | } | ||
14 | |||
15 | val xtextGenPath = "src/main/xtext-gen" | ||
16 | |||
17 | val xtextGenerated: Configuration by configurations.creating { | ||
18 | isCanBeConsumed = false | ||
19 | isCanBeResolved = true | ||
20 | } | ||
21 | |||
22 | sourceSets.main { | ||
23 | java.srcDir(xtextGenPath) | ||
24 | resources.srcDir(xtextGenPath) | ||
25 | } | ||
26 | |||
27 | tasks { | ||
28 | // Based on the idea from https://stackoverflow.com/a/57788355 to safely consume generated sources in sibling | ||
29 | // projects. | ||
30 | val syncXtextGeneratedSources by tasks.creating(Sync::class) { | ||
31 | from(xtextGenerated) | ||
32 | into(xtextGenPath) | ||
33 | } | ||
34 | |||
35 | for (taskName in listOf("compileJava", "processResources", "generateEclipseSourceFolders")) { | ||
36 | tasks.named(taskName) { | ||
37 | dependsOn(syncXtextGeneratedSources) | ||
38 | } | ||
39 | } | ||
40 | |||
41 | clean { | ||
42 | delete(xtextGenPath) | ||
43 | } | ||
44 | } | ||
45 | |||
46 | |||
47 | sonarqube.properties { | ||
48 | SonarPropertiesUtils.addToList(properties, "sonar.exclusions", "$xtextGenPath/**") | ||
49 | } | ||
diff --git a/gradle.properties b/gradle.properties index 3733420b..535c14df 100644 --- a/gradle.properties +++ b/gradle.properties | |||
@@ -1,8 +1,15 @@ | |||
1 | # SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
2 | # | ||
3 | # SPDX-License-Identifier: EPL-2.0 | ||
4 | |||
1 | file.encoding=UTF-8 | 5 | file.encoding=UTF-8 |
2 | frontend.nodeVersion=18.13.0 | 6 | frontend.nodeVersion=18.16.0 |
3 | frontend.yarnVersion=4.0.0-rc.37 | 7 | frontend.yarnVersion=4.0.0-rc.45 |
4 | frontend.yarn1Version=1.22.19 | 8 | frontend.yarn1Version=1.22.19 |
5 | group=tools.refinery | 9 | group=tools.refinery |
10 | # Set to true once tools.refinery.gradle.frontend-worktree supports the cache. | ||
11 | org.gradle.configuration-cache=false | ||
12 | org.gradle.parallel=true | ||
6 | systemProp.sonar.projectKey=graphs4value_refinery | 13 | systemProp.sonar.projectKey=graphs4value_refinery |
7 | systemProp.sonar.organization=graphs4value | 14 | systemProp.sonar.organization=graphs4value |
8 | systemProp.sonar.host.url=https://sonarcloud.io | 15 | systemProp.sonar.host.url=https://sonarcloud.io |
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9340f5c8..c21d2718 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml | |||
@@ -1,27 +1,33 @@ | |||
1 | # SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
2 | # | ||
3 | # SPDX-License-Identifier: EPL-2.0 | ||
4 | |||
1 | [versions] | 5 | [versions] |
2 | eclipseCollections = "11.1.0" | 6 | eclipseCollections = "12.0.0.M1" |
3 | jetty = "12.0.0.alpha3" | 7 | ecore = "2.34.0" |
8 | jetty = "12.0.0.beta1" | ||
4 | jmh = "1.36" | 9 | jmh = "1.36" |
5 | junit = "5.9.2" | 10 | junit = "5.10.0-M1" |
6 | mockito = "5.1.1" | 11 | mockito = "5.4.0" |
7 | mwe2 = "2.14.0" | 12 | mwe2 = "2.15.0.M0" |
8 | slf4j = "2.0.6" | 13 | slf4j = "2.0.7" |
9 | xtext = "2.30.0.M2" | 14 | xtext = "2.31.0" |
10 | 15 | ||
11 | [libraries] | 16 | [libraries] |
12 | jetbrainsAnnotations = { group = "org.jetbrains", name = "annotations", version = "24.0.0"} | 17 | jetbrainsAnnotations = { group = "org.jetbrains", name = "annotations", version = "24.0.1" } |
13 | eclipseCollections = { group = "org.eclipse.collections", name = "eclipse-collections", version.ref = "eclipseCollections" } | 18 | eclipseCollections = { group = "org.eclipse.collections", name = "eclipse-collections", version.ref = "eclipseCollections" } |
14 | eclipseCollections-api = { group = "org.eclipse.collections", name = "eclipse-collections-api", version.ref = "eclipseCollections" } | 19 | eclipseCollections-api = { group = "org.eclipse.collections", name = "eclipse-collections-api", version.ref = "eclipseCollections" } |
15 | ecore = { group = "org.eclipse.emf", name = "org.eclipse.emf.ecore", version = "2.29.0" } | 20 | ecore = { group = "org.eclipse.emf", name = "org.eclipse.emf.ecore", version.ref = "ecore" } |
16 | ecore-xmi = { group = "org.eclipse.emf", name = "org.eclipse.emf.ecore.xmi", version = "2.17.0" } | 21 | ecore-xmi = { group = "org.eclipse.emf", name = "org.eclipse.emf.ecore.xmi", version = "2.18.0" } |
17 | ecore-codegen = { group = "org.eclipse.emf", name = "org.eclipse.emf.codegen.ecore", version = "2.32.0" } | 22 | ecore-codegen = { group = "org.eclipse.emf", name = "org.eclipse.emf.codegen.ecore", version.ref = "ecore" } |
18 | gradlePlugin-frontend = { group = "org.siouan", name = "frontend-gradle-plugin-jdk11", version = "6.0.0" } | 23 | gradlePlugin-frontend = { group = "org.siouan", name = "frontend-gradle-plugin-jdk11", version = "6.0.0" } |
19 | gradlePlugin-shadow = { group = "gradle.plugin.com.github.johnrengelman", name = "shadow", version = "7.1.0" } | 24 | gradlePlugin-shadow = { group = "com.github.johnrengelman", name = "shadow", version = "8.1.1" } |
20 | gradlePlugin-sonarqube = { group = "org.sonarsource.scanner.gradle", name = "sonarqube-gradle-plugin", version = "3.3" } | 25 | gradlePlugin-sonarqube = { group = "org.sonarsource.scanner.gradle", name = "sonarqube-gradle-plugin", version = "4.2.1.3168" } |
21 | hamcrest = { group = "org.hamcrest", name = "hamcrest", version = "2.2" } | 26 | hamcrest = { group = "org.hamcrest", name = "hamcrest", version = "2.2" } |
22 | jetty-server = { group = "org.eclipse.jetty", name = "jetty-server", version.ref = "jetty" } | 27 | jetty-server = { group = "org.eclipse.jetty", name = "jetty-server", version.ref = "jetty" } |
23 | jetty-servlet = { group = "org.eclipse.jetty.ee10", name = "jetty-ee10-servlet", version.ref = "jetty" } | 28 | jetty-servlet = { group = "org.eclipse.jetty.ee10", name = "jetty-ee10-servlet", version.ref = "jetty" } |
24 | jetty-websocket-client = { group = "org.eclipse.jetty.ee10.websocket", name = "jetty-ee10-websocket-jetty-client", version.ref = "jetty" } | 29 | jetty-websocket-api = { group = "org.eclipse.jetty.websocket", name = "jetty-websocket-jetty-api", version.ref = "jetty" } |
30 | jetty-websocket-client = { group = "org.eclipse.jetty.websocket", name = "jetty-websocket-jetty-client", version.ref = "jetty" } | ||
25 | jetty-websocket-server = { group = "org.eclipse.jetty.ee10.websocket", name = "jetty-ee10-websocket-jetty-server", version.ref = "jetty" } | 31 | jetty-websocket-server = { group = "org.eclipse.jetty.ee10.websocket", name = "jetty-ee10-websocket-jetty-server", version.ref = "jetty" } |
26 | jmh-core = { group = "org.openjdk.jmh", name = "jmh-core", version.ref = "jmh" } | 32 | jmh-core = { group = "org.openjdk.jmh", name = "jmh-core", version.ref = "jmh" } |
27 | jmh-annprocess = { group = "org.openjdk.jmh", name = "jmh-generator-annprocess", version.ref = "jmh" } | 33 | jmh-annprocess = { group = "org.openjdk.jmh", name = "jmh-generator-annprocess", version.ref = "jmh" } |
@@ -30,7 +36,7 @@ junit-engine = { group = "org.junit.jupiter", name = "junit-jupiter-engine", ver | |||
30 | junit-params = { group = "org.junit.jupiter", name = "junit-jupiter-params", version.ref = "junit" } | 36 | junit-params = { group = "org.junit.jupiter", name = "junit-jupiter-params", version.ref = "junit" } |
31 | mockito-core = { group = "org.mockito", name = "mockito-core", version.ref = "mockito" } | 37 | mockito-core = { group = "org.mockito", name = "mockito-core", version.ref = "mockito" } |
32 | mockito-junit = { group = "org.mockito", name = "mockito-junit-jupiter", version.ref = "mockito" } | 38 | mockito-junit = { group = "org.mockito", name = "mockito-junit-jupiter", version.ref = "mockito" } |
33 | mwe-utils = { group = "org.eclipse.emf", name = "org.eclipse.emf.mwe.utils", version = "1.8.0" } | 39 | mwe-utils = { group = "org.eclipse.emf", name = "org.eclipse.emf.mwe.utils", version = "1.9.0.M0" } |
34 | mwe2-launch = { group = "org.eclipse.emf", name = "org.eclipse.emf.mwe2.launch", version.ref = "mwe2" } | 40 | mwe2-launch = { group = "org.eclipse.emf", name = "org.eclipse.emf.mwe2.launch", version.ref = "mwe2" } |
35 | mwe2-lib = { group = "org.eclipse.emf", name = "org.eclipse.emf.mwe2.lib", version.ref = "mwe2" } | 41 | mwe2-lib = { group = "org.eclipse.emf", name = "org.eclipse.emf.mwe2.lib", version.ref = "mwe2" } |
36 | slf4j-api = { group = "org.slf4j", name = "slf4j-api", version.ref = "slf4j" } | 42 | slf4j-api = { group = "org.slf4j", name = "slf4j-api", version.ref = "slf4j" } |
@@ -48,4 +54,4 @@ xtext-xbase = { group = "org.eclipse.xtext", name = "org.eclipse.xtext.xbase", v | |||
48 | xtext-xbase-ide = { group = "org.eclipse.xtext", name = "org.eclipse.xtext.xbase.ide", version.ref = "xtext" } | 54 | xtext-xbase-ide = { group = "org.eclipse.xtext", name = "org.eclipse.xtext.xbase.ide", version.ref = "xtext" } |
49 | 55 | ||
50 | [plugins] | 56 | [plugins] |
51 | versions = { id = "com.github.ben-manes.versions", version = "0.45.0" } | 57 | versions = { id = "com.github.ben-manes.versions", version = "0.47.0" } |
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index ccebba77..c1962a79 100644 --- a/gradle/wrapper/gradle-wrapper.jar +++ b/gradle/wrapper/gradle-wrapper.jar | |||
Binary files differ | |||
diff --git a/gradle/wrapper/gradle-wrapper.jar.license b/gradle/wrapper/gradle-wrapper.jar.license new file mode 100644 index 00000000..13cd9906 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.jar.license | |||
@@ -0,0 +1,3 @@ | |||
1 | Copyright © 2015-2021 the original authors. | ||
2 | |||
3 | SPDX-License-Identifier: Apache-2.0 | ||
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index f398c33c..c2929f89 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties | |||
@@ -1,6 +1,6 @@ | |||
1 | distributionBase=GRADLE_USER_HOME | 1 | distributionBase=GRADLE_USER_HOME |
2 | distributionPath=wrapper/dists | 2 | distributionPath=wrapper/dists |
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip | 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-rc-2-bin.zip |
4 | networkTimeout=10000 | 4 | networkTimeout=10000 |
5 | zipStoreBase=GRADLE_USER_HOME | 5 | zipStoreBase=GRADLE_USER_HOME |
6 | zipStorePath=wrapper/dists | 6 | zipStorePath=wrapper/dists |
diff --git a/gradle/wrapper/gradle-wrapper.properties.license b/gradle/wrapper/gradle-wrapper.properties.license new file mode 100644 index 00000000..13cd9906 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties.license | |||
@@ -0,0 +1,3 @@ | |||
1 | Copyright © 2015-2021 the original authors. | ||
2 | |||
3 | SPDX-License-Identifier: Apache-2.0 | ||
@@ -85,9 +85,6 @@ done | |||
85 | APP_BASE_NAME=${0##*/} | 85 | APP_BASE_NAME=${0##*/} |
86 | APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit | 86 | APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit |
87 | 87 | ||
88 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||
89 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' | ||
90 | |||
91 | # Use the maximum available, or set MAX_FD != -1 to use that value. | 88 | # Use the maximum available, or set MAX_FD != -1 to use that value. |
92 | MAX_FD=maximum | 89 | MAX_FD=maximum |
93 | 90 | ||
@@ -197,6 +194,10 @@ if "$cygwin" || "$msys" ; then | |||
197 | done | 194 | done |
198 | fi | 195 | fi |
199 | 196 | ||
197 | |||
198 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||
199 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' | ||
200 | |||
200 | # Collect all arguments for the java command; | 201 | # Collect all arguments for the java command; |
201 | # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of | 202 | # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of |
202 | # shell script including quotes and variable substitutions, so put them in | 203 | # shell script including quotes and variable substitutions, so put them in |
diff --git a/gradlew.bat.license b/gradlew.bat.license new file mode 100644 index 00000000..0bcf26f6 --- /dev/null +++ b/gradlew.bat.license | |||
@@ -0,0 +1,3 @@ | |||
1 | Copyright 2015 the original author or authors. | ||
2 | |||
3 | SPDX-License-Identifier: Apache-2.0 | ||
diff --git a/gradlew.license b/gradlew.license new file mode 100644 index 00000000..13cd9906 --- /dev/null +++ b/gradlew.license | |||
@@ -0,0 +1,3 @@ | |||
1 | Copyright © 2015-2021 the original authors. | ||
2 | |||
3 | SPDX-License-Identifier: Apache-2.0 | ||
diff --git a/package.json b/package.json index 88a4b2a6..80ddacd3 100644 --- a/package.json +++ b/package.json | |||
@@ -1,16 +1,31 @@ | |||
1 | { | 1 | { |
2 | "//": [ | ||
3 | "SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/>", | ||
4 | "", | ||
5 | "SPDX-License-Identifier: EPL-2.0" | ||
6 | ], | ||
2 | "name": "@refinery/root", | 7 | "name": "@refinery/root", |
3 | "version": "0.0.0", | 8 | "version": "0.0.0", |
4 | "private": true, | 9 | "private": true, |
10 | "repository": { | ||
11 | "type": "git", | ||
12 | "url": "git+https://github.com/graphs4value/refinery.git" | ||
13 | }, | ||
14 | "author": "The Refinery Authors <https://refinery.tools/>", | ||
15 | "license": "EPL-2.0", | ||
16 | "bugs": { | ||
17 | "url": "https://github.com/graphs4value/refinery/issues" | ||
18 | }, | ||
19 | "homepage": "https://refinery.tools", | ||
5 | "workspaces": [ | 20 | "workspaces": [ |
6 | "subprojects/frontend" | 21 | "subprojects/frontend" |
7 | ], | 22 | ], |
8 | "scripts": { | 23 | "scripts": { |
9 | "frontend": "yarn workspace @refinery/frontend" | 24 | "frontend": "yarn workspace @refinery/frontend" |
10 | }, | 25 | }, |
11 | "packageManager": "yarn@4.0.0-rc.37", | 26 | "packageManager": "yarn@4.0.0-rc.45", |
12 | "devDependencies": { | 27 | "devDependencies": { |
13 | "eslint": "^8.33.0", | 28 | "eslint": "^8.43.0", |
14 | "typescript": "4.9.5" | 29 | "typescript": "5.1.3" |
15 | } | 30 | } |
16 | } | 31 | } |
diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index 3149380d..00000000 --- a/settings.gradle +++ /dev/null | |||
@@ -1,16 +0,0 @@ | |||
1 | rootProject.name = 'refinery' | ||
2 | |||
3 | include 'frontend' | ||
4 | include 'language' | ||
5 | include 'language-ide' | ||
6 | include 'language-model' | ||
7 | include 'language-semantics' | ||
8 | include 'language-web' | ||
9 | include 'store' | ||
10 | include 'store-query-viatra' | ||
11 | |||
12 | for (project in rootProject.children) { | ||
13 | def projectName = project.name | ||
14 | project.name = "${rootProject.name}-${projectName}" | ||
15 | project.projectDir = file("subprojects/${projectName}") | ||
16 | } | ||
diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 00000000..2b1c179d --- /dev/null +++ b/settings.gradle.kts | |||
@@ -0,0 +1,26 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | rootProject.name = "refinery" | ||
8 | |||
9 | include( | ||
10 | "frontend", | ||
11 | "language", | ||
12 | "language-ide", | ||
13 | "language-model", | ||
14 | "language-semantics", | ||
15 | "language-web", | ||
16 | "store", | ||
17 | "store-query", | ||
18 | "store-query-viatra", | ||
19 | "store-reasoning", | ||
20 | ) | ||
21 | |||
22 | for (project in rootProject.children) { | ||
23 | val projectName = project.name | ||
24 | project.name = "${rootProject.name}-$projectName" | ||
25 | project.projectDir = file("subprojects/$projectName") | ||
26 | } | ||
diff --git a/subprojects/frontend/.eslintrc.cjs b/subprojects/frontend/.eslintrc.cjs index 8a7b474a..25b86a83 100644 --- a/subprojects/frontend/.eslintrc.cjs +++ b/subprojects/frontend/.eslintrc.cjs | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | const path = require('node:path'); | 7 | const path = require('node:path'); |
2 | 8 | ||
3 | // Allow the Codium ESLint plugin to find `tsconfig.json` from the repository root. | 9 | // Allow the Codium ESLint plugin to find `tsconfig.json` from the repository root. |
@@ -43,6 +49,15 @@ module.exports = { | |||
43 | // In typescript, some class methods implementing an inderface do not use `this`: | 49 | // In typescript, some class methods implementing an inderface do not use `this`: |
44 | // https://github.com/typescript-eslint/typescript-eslint/issues/1103 | 50 | // https://github.com/typescript-eslint/typescript-eslint/issues/1103 |
45 | 'class-methods-use-this': 'off', | 51 | 'class-methods-use-this': 'off', |
52 | // Disable rules with a high performance cost. | ||
53 | // See https://typescript-eslint.io/linting/troubleshooting/performance-troubleshooting/ | ||
54 | 'import/default': 'off', | ||
55 | 'import/extensions': 'off', | ||
56 | 'import/named': 'off', | ||
57 | 'import/namespace': 'off', | ||
58 | 'import/no-named-as-default': 'off', | ||
59 | 'import/no-named-as-default-member': 'off', | ||
60 | '@typescript-eslint/indent': 'off', | ||
46 | // Make sure every import can be resolved by `eslint-import-resolver-typescript`. | 61 | // Make sure every import can be resolved by `eslint-import-resolver-typescript`. |
47 | 'import/no-unresolved': 'error', | 62 | 'import/no-unresolved': 'error', |
48 | // Organize imports automatically. | 63 | // Organize imports automatically. |
@@ -90,6 +105,7 @@ module.exports = { | |||
90 | files: [ | 105 | files: [ |
91 | '.eslintrc.cjs', | 106 | '.eslintrc.cjs', |
92 | 'config/*.ts', | 107 | 'config/*.ts', |
108 | 'config/*.cjs', | ||
93 | 'prettier.config.cjs', | 109 | 'prettier.config.cjs', |
94 | 'vite.config.ts', | 110 | 'vite.config.ts', |
95 | ], | 111 | ], |
@@ -103,6 +119,8 @@ module.exports = { | |||
103 | 'error', | 119 | 'error', |
104 | { devDependencies: true }, | 120 | { devDependencies: true }, |
105 | ], | 121 | ], |
122 | // Allow writing to the console in ad-hoc scripts. | ||
123 | 'no-console': 'off', | ||
106 | // Access to the environment in configuration files. | 124 | // Access to the environment in configuration files. |
107 | 'no-process-env': 'off', | 125 | 'no-process-env': 'off', |
108 | }, | 126 | }, |
diff --git a/subprojects/frontend/assets-src/favicon.svg.license b/subprojects/frontend/assets-src/favicon.svg.license new file mode 100644 index 00000000..e5db6ccd --- /dev/null +++ b/subprojects/frontend/assets-src/favicon.svg.license | |||
@@ -0,0 +1,3 @@ | |||
1 | SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
2 | |||
3 | SPDX-License-Identifier: EPL-2.0 | ||
diff --git a/subprojects/frontend/assets-src/icon.svg.license b/subprojects/frontend/assets-src/icon.svg.license new file mode 100644 index 00000000..e5db6ccd --- /dev/null +++ b/subprojects/frontend/assets-src/icon.svg.license | |||
@@ -0,0 +1,3 @@ | |||
1 | SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
2 | |||
3 | SPDX-License-Identifier: EPL-2.0 | ||
diff --git a/subprojects/frontend/assets-src/mask-icon.svg.license b/subprojects/frontend/assets-src/mask-icon.svg.license new file mode 100644 index 00000000..e5db6ccd --- /dev/null +++ b/subprojects/frontend/assets-src/mask-icon.svg.license | |||
@@ -0,0 +1,3 @@ | |||
1 | SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
2 | |||
3 | SPDX-License-Identifier: EPL-2.0 | ||
diff --git a/subprojects/frontend/build.gradle b/subprojects/frontend/build.gradle deleted file mode 100644 index 4cc2c5d7..00000000 --- a/subprojects/frontend/build.gradle +++ /dev/null | |||
@@ -1,131 +0,0 @@ | |||
1 | plugins { | ||
2 | id 'refinery-frontend-workspace' | ||
3 | id 'refinery-sonarqube' | ||
4 | } | ||
5 | |||
6 | import org.siouan.frontendgradleplugin.infrastructure.gradle.RunYarn | ||
7 | |||
8 | def viteOutputDir = "${buildDir}/vite" | ||
9 | def productionResources = file("${viteOutputDir}/production") | ||
10 | |||
11 | frontend { | ||
12 | assembleScript = 'run build' | ||
13 | } | ||
14 | |||
15 | configurations { | ||
16 | productionAssets { | ||
17 | canBeConsumed = true | ||
18 | canBeResolved = false | ||
19 | } | ||
20 | } | ||
21 | |||
22 | def installFrontend = tasks.named('installFrontend') | ||
23 | |||
24 | def sourcesWithoutTypegen = fileTree('src') { | ||
25 | exclude '**/*.typegen.ts' | ||
26 | } | ||
27 | |||
28 | def assembleFrontend = tasks.named('assembleFrontend') | ||
29 | assembleFrontend.configure { | ||
30 | dependsOn generateXStateTypes | ||
31 | inputs.dir 'public' | ||
32 | inputs.files sourcesWithoutTypegen | ||
33 | inputs.file 'index.html' | ||
34 | inputs.files('package.json', 'tsconfig.json', 'tsconfig.base.json', 'vite.config.ts') | ||
35 | inputs.file rootProject.file('yarn.lock') | ||
36 | outputs.dir productionResources | ||
37 | } | ||
38 | |||
39 | artifacts { | ||
40 | productionAssets(productionResources) { | ||
41 | builtBy assembleFrontend | ||
42 | } | ||
43 | } | ||
44 | |||
45 | def generateXStateTypes = tasks.register('generateXStateTypes', RunYarn) { | ||
46 | dependsOn installFrontend | ||
47 | inputs.files sourcesWithoutTypegen | ||
48 | inputs.file 'package.json' | ||
49 | inputs.file rootProject.file('yarn.lock') | ||
50 | outputs.dir 'src' | ||
51 | script = 'run typegen' | ||
52 | description = 'Generate TypeScript typings for XState state machines.' | ||
53 | } | ||
54 | |||
55 | def typecheckFrontend = tasks.register('typecheckFrontend', RunYarn) { | ||
56 | dependsOn installFrontend | ||
57 | dependsOn generateXStateTypes | ||
58 | inputs.dir 'src' | ||
59 | inputs.dir 'types' | ||
60 | inputs.files('package.json', 'tsconfig.json', 'tsconfig.base.json', 'tsconfig.node.json') | ||
61 | inputs.file rootProject.file('yarn.lock') | ||
62 | outputs.dir "${buildDir}/typescript" | ||
63 | script = 'run typecheck' | ||
64 | group = 'verification' | ||
65 | description = 'Check for TypeScript type errors.' | ||
66 | } | ||
67 | |||
68 | def lintFrontend = tasks.register('lintFrontend', RunYarn) { | ||
69 | dependsOn installFrontend | ||
70 | dependsOn generateXStateTypes | ||
71 | dependsOn typecheckFrontend | ||
72 | inputs.dir 'src' | ||
73 | inputs.dir 'types' | ||
74 | inputs.files('.eslintrc.cjs', 'prettier.config.cjs') | ||
75 | inputs.files('package.json', 'tsconfig.json', 'tsconfig.base.json', 'tsconfig.node.json') | ||
76 | inputs.file rootProject.file('yarn.lock') | ||
77 | if (project.hasProperty('ci')) { | ||
78 | outputs.file "${buildDir}/eslint.json" | ||
79 | script = 'run lint:ci' | ||
80 | } else { | ||
81 | script = 'run lint' | ||
82 | } | ||
83 | group = 'verification' | ||
84 | description = 'Check for TypeScript lint errors and warnings.' | ||
85 | } | ||
86 | |||
87 | def prettier = tasks.register('fixFrontend', RunYarn) { | ||
88 | dependsOn installFrontend | ||
89 | dependsOn generateXStateTypes | ||
90 | dependsOn typecheckFrontend | ||
91 | inputs.dir 'src' | ||
92 | inputs.dir 'types' | ||
93 | inputs.files('.eslintrc.cjs', 'prettier.config.cjs') | ||
94 | inputs.files('package.json', 'tsconfig.json', 'tsconfig.base.json', 'tsconfig.node.json') | ||
95 | inputs.file rootProject.file('yarn.lock') | ||
96 | script = 'run lint:fix' | ||
97 | group = 'verification' | ||
98 | description = 'Fix TypeScript lint errors and warnings.' | ||
99 | } | ||
100 | |||
101 | tasks.named('check') { | ||
102 | dependsOn(typecheckFrontend) | ||
103 | dependsOn(lintFrontend) | ||
104 | } | ||
105 | |||
106 | tasks.register('serveFrontend', RunYarn) { | ||
107 | dependsOn installFrontend | ||
108 | dependsOn generateXStateTypes | ||
109 | inputs.dir 'public' | ||
110 | inputs.files sourcesWithoutTypegen | ||
111 | inputs.file 'index.html' | ||
112 | inputs.files('package.json', 'tsconfig.json', 'tsconfig.base.json', 'vite.config.ts') | ||
113 | inputs.file rootProject.file('yarn.lock') | ||
114 | outputs.dir "${viteOutputDir}/development" | ||
115 | script = 'run serve' | ||
116 | group = 'run' | ||
117 | description = 'Start a Vite dev server with hot module replacement.' | ||
118 | } | ||
119 | |||
120 | tasks.named('clean') { | ||
121 | delete 'dev-dist' | ||
122 | delete fileTree('src') { | ||
123 | include '**/*.typegen.ts' | ||
124 | } | ||
125 | } | ||
126 | |||
127 | sonarqube.properties { | ||
128 | properties['sonar.sources'] = 'src' | ||
129 | property 'sonar.nodejs.executable', "${frontend.nodeInstallDirectory.get()}/bin/node" | ||
130 | property 'sonar.eslint.reportPaths', "${buildDir}/eslint.json" | ||
131 | } | ||
diff --git a/subprojects/frontend/build.gradle.kts b/subprojects/frontend/build.gradle.kts new file mode 100644 index 00000000..d0839371 --- /dev/null +++ b/subprojects/frontend/build.gradle.kts | |||
@@ -0,0 +1,144 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | import org.siouan.frontendgradleplugin.infrastructure.gradle.RunYarn | ||
8 | import tools.refinery.gradle.utils.SonarPropertiesUtils | ||
9 | |||
10 | plugins { | ||
11 | id("tools.refinery.gradle.frontend-workspace") | ||
12 | id("tools.refinery.gradle.sonarqube") | ||
13 | } | ||
14 | |||
15 | frontend { | ||
16 | assembleScript.set("run build") | ||
17 | } | ||
18 | |||
19 | val viteOutputDir = "$buildDir/vite" | ||
20 | |||
21 | val productionResources = file("$viteOutputDir/production") | ||
22 | |||
23 | val productionAssets: Configuration by configurations.creating { | ||
24 | isCanBeConsumed = true | ||
25 | isCanBeResolved = false | ||
26 | } | ||
27 | |||
28 | val sourcesWithoutTypes = fileTree("src") { | ||
29 | exclude("**/*.typegen.ts") | ||
30 | } | ||
31 | |||
32 | val sourcesWithTypes: FileCollection = fileTree("src") + fileTree("types") | ||
33 | |||
34 | val buildScripts: FileCollection = fileTree("config") + files( | ||
35 | ".eslintrc.cjs", | ||
36 | "prettier.config.cjs", | ||
37 | "vite.config.ts", | ||
38 | ) | ||
39 | |||
40 | val installationState = files( | ||
41 | rootProject.file("yarn.lock"), | ||
42 | rootProject.file("package.json"), | ||
43 | "package.json", | ||
44 | ) | ||
45 | |||
46 | val sharedConfigFiles: FileCollection = installationState + files( | ||
47 | "tsconfig.json", | ||
48 | "tsconfig.base.json", | ||
49 | "tsconfig.node.json", | ||
50 | "tsconfig.shared.json", | ||
51 | ) | ||
52 | |||
53 | val assembleConfigFiles = sharedConfigFiles + file("vite.config.ts") + fileTree("config") { | ||
54 | include("**/*.ts") | ||
55 | } | ||
56 | |||
57 | val assembleSources = sourcesWithTypes + fileTree("public") + file("index.html") | ||
58 | |||
59 | val assembleFiles = assembleSources + assembleConfigFiles | ||
60 | |||
61 | val lintingFiles: FileCollection = sourcesWithTypes + buildScripts + sharedConfigFiles | ||
62 | |||
63 | tasks { | ||
64 | val generateXStateTypes by registering(RunYarn::class) { | ||
65 | dependsOn(installFrontend) | ||
66 | inputs.files(sourcesWithoutTypes) | ||
67 | inputs.files(installationState) | ||
68 | outputs.dir("src") | ||
69 | script.set("run typegen") | ||
70 | description = "Generate TypeScript typings for XState state machines." | ||
71 | } | ||
72 | |||
73 | assembleFrontend { | ||
74 | dependsOn(generateXStateTypes) | ||
75 | inputs.files(assembleFiles) | ||
76 | outputs.dir(productionResources) | ||
77 | } | ||
78 | |||
79 | |||
80 | val typeCheckFrontend by registering(RunYarn::class) { | ||
81 | dependsOn(installFrontend) | ||
82 | dependsOn(generateXStateTypes) | ||
83 | inputs.files(lintingFiles) | ||
84 | outputs.dir("$buildDir/typescript") | ||
85 | script.set("run typecheck") | ||
86 | group = "verification" | ||
87 | description = "Check for TypeScript type errors." | ||
88 | } | ||
89 | |||
90 | val lintFrontend by registering(RunYarn::class) { | ||
91 | dependsOn(installFrontend) | ||
92 | dependsOn(generateXStateTypes) | ||
93 | dependsOn(typeCheckFrontend) | ||
94 | inputs.files(lintingFiles) | ||
95 | outputs.file("$buildDir/eslint.json") | ||
96 | script.set("run lint") | ||
97 | group = "verification" | ||
98 | description = "Check for TypeScript lint errors and warnings." | ||
99 | } | ||
100 | |||
101 | register<RunYarn>("fixFrontend") { | ||
102 | dependsOn(installFrontend) | ||
103 | dependsOn(generateXStateTypes) | ||
104 | dependsOn(typeCheckFrontend) | ||
105 | inputs.files(lintingFiles) | ||
106 | script.set("run lint:fix") | ||
107 | group = "verification" | ||
108 | description = "Fix TypeScript lint errors and warnings." | ||
109 | } | ||
110 | |||
111 | check { | ||
112 | dependsOn(typeCheckFrontend) | ||
113 | dependsOn(lintFrontend) | ||
114 | } | ||
115 | |||
116 | register<RunYarn>("serveFrontend") { | ||
117 | dependsOn(installFrontend) | ||
118 | dependsOn(generateXStateTypes) | ||
119 | inputs.files(assembleFiles) | ||
120 | outputs.dir("$viteOutputDir/development") | ||
121 | script.set("run serve") | ||
122 | group = "run" | ||
123 | description = "Start a Vite dev server with hot module replacement." | ||
124 | } | ||
125 | |||
126 | clean { | ||
127 | delete("dev-dist") | ||
128 | delete(fileTree("src") { | ||
129 | include("**/*.typegen.ts") | ||
130 | }) | ||
131 | } | ||
132 | } | ||
133 | |||
134 | artifacts { | ||
135 | add("productionAssets", productionResources) { | ||
136 | builtBy(tasks.assembleFrontend) | ||
137 | } | ||
138 | } | ||
139 | |||
140 | sonarqube.properties { | ||
141 | SonarPropertiesUtils.addToList(properties, "sonar.sources", "src") | ||
142 | property("sonar.nodejs.executable", "${frontend.nodeInstallDirectory.get()}/bin/node") | ||
143 | property("sonar.eslint.reportPaths", "$buildDir/eslint.json") | ||
144 | } | ||
diff --git a/subprojects/frontend/config/backendConfigVitePlugin.ts b/subprojects/frontend/config/backendConfigVitePlugin.ts index 7a6bc3db..3bffce3a 100644 --- a/subprojects/frontend/config/backendConfigVitePlugin.ts +++ b/subprojects/frontend/config/backendConfigVitePlugin.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import type { PluginOption } from 'vite'; | 7 | import type { PluginOption } from 'vite'; |
2 | 8 | ||
3 | import type BackendConfig from '../src/xtext/BackendConfig'; | 9 | import type BackendConfig from '../src/xtext/BackendConfig'; |
diff --git a/subprojects/frontend/config/detectDevModeOptions.ts b/subprojects/frontend/config/detectDevModeOptions.ts index b3696241..665204dc 100644 --- a/subprojects/frontend/config/detectDevModeOptions.ts +++ b/subprojects/frontend/config/detectDevModeOptions.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import type { PluginOption, ServerOptions } from 'vite'; | 7 | import type { PluginOption, ServerOptions } from 'vite'; |
2 | 8 | ||
3 | import backendConfigVitePlugin, { | 9 | import backendConfigVitePlugin, { |
diff --git a/subprojects/frontend/config/eslintReport.cjs b/subprojects/frontend/config/eslintReport.cjs new file mode 100644 index 00000000..7c4b7bd6 --- /dev/null +++ b/subprojects/frontend/config/eslintReport.cjs | |||
@@ -0,0 +1,58 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | const { writeFile } = require('node:fs/promises'); | ||
8 | const path = require('node:path'); | ||
9 | const { Readable } = require('node:stream'); | ||
10 | const { pipeline } = require('node:stream/promises'); | ||
11 | |||
12 | const { ESLint } = require('eslint'); | ||
13 | |||
14 | const rootDir = path.join(__dirname, '..'); | ||
15 | |||
16 | /** | ||
17 | * Write ESLint report to console. | ||
18 | * | ||
19 | * @param cli {import('eslint').ESLint} The ESLint CLI. | ||
20 | * @param report {import('eslint').ESLint.LintResult[]} The ESLint report. | ||
21 | * @return {Promise<void>} A promise that resolves when the report is finished. | ||
22 | */ | ||
23 | async function reportToConsole(cli, report) { | ||
24 | const stylishFormatter = await cli.loadFormatter('stylish'); | ||
25 | const output = new Readable(); | ||
26 | output.push(await stylishFormatter.format(report)); | ||
27 | output.push(null); | ||
28 | return pipeline(output, process.stdout); | ||
29 | } | ||
30 | |||
31 | /** | ||
32 | * Write ESLint report to the <code>build</code> directory. | ||
33 | * | ||
34 | * @param cli {import('eslint').ESLint} The ESLint CLI. | ||
35 | * @param report {import('eslint').ESLint.LintResult[]} The ESLint report. | ||
36 | * @return {Promise<void>} A promise that resolves when the report is finished. | ||
37 | */ | ||
38 | async function reportToJson(cli, report) { | ||
39 | const jsonFormatter = await cli.loadFormatter('json'); | ||
40 | const json = await jsonFormatter.format(report); | ||
41 | const reportPath = path.join(rootDir, 'build', 'eslint.json'); | ||
42 | return writeFile(reportPath, json, 'utf-8'); | ||
43 | } | ||
44 | |||
45 | async function createReport() { | ||
46 | const cli = new ESLint({ | ||
47 | useEslintrc: true, | ||
48 | cwd: rootDir, | ||
49 | }); | ||
50 | const report = await cli.lintFiles('.'); | ||
51 | await Promise.all([reportToConsole(cli, report), reportToJson(cli, report)]); | ||
52 | |||
53 | if (report.some((entry) => entry.errorCount > 0)) { | ||
54 | process.exitCode = 1; | ||
55 | } | ||
56 | } | ||
57 | |||
58 | createReport().catch(console.error); | ||
diff --git a/subprojects/frontend/config/fetchPackageMetadata.ts b/subprojects/frontend/config/fetchPackageMetadata.ts index 50807b03..02e16d57 100644 --- a/subprojects/frontend/config/fetchPackageMetadata.ts +++ b/subprojects/frontend/config/fetchPackageMetadata.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import { readFile } from 'node:fs/promises'; | 7 | import { readFile } from 'node:fs/promises'; |
2 | import path from 'node:path'; | 8 | import path from 'node:path'; |
3 | 9 | ||
diff --git a/subprojects/frontend/config/manifest.ts b/subprojects/frontend/config/manifest.ts index 3cec777c..1822dc7c 100644 --- a/subprojects/frontend/config/manifest.ts +++ b/subprojects/frontend/config/manifest.ts | |||
@@ -1,10 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import type { ManifestOptions } from 'vite-plugin-pwa'; | 7 | import type { ManifestOptions } from 'vite-plugin-pwa'; |
2 | 8 | ||
3 | const manifest: Partial<ManifestOptions> = { | 9 | const manifest: Partial<ManifestOptions> = { |
4 | lang: 'en-US', | 10 | lang: 'en-US', |
5 | name: 'Refinery', | 11 | name: 'Refinery', |
6 | short_name: 'Refinery', | 12 | short_name: 'Refinery', |
7 | description: 'An efficient graph sovler for generating well-formed models', | 13 | description: 'An efficient graph solver for generating well-formed models', |
8 | theme_color: '#f5f5f5', | 14 | theme_color: '#f5f5f5', |
9 | display_override: ['window-controls-overlay'], | 15 | display_override: ['window-controls-overlay'], |
10 | display: 'standalone', | 16 | display: 'standalone', |
diff --git a/subprojects/frontend/config/minifyHTMLVitePlugin.ts b/subprojects/frontend/config/minifyHTMLVitePlugin.ts index 18336d4d..7c08c488 100644 --- a/subprojects/frontend/config/minifyHTMLVitePlugin.ts +++ b/subprojects/frontend/config/minifyHTMLVitePlugin.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import { minify, type Options as TerserOptions } from 'html-minifier-terser'; | 7 | import { minify, type Options as TerserOptions } from 'html-minifier-terser'; |
2 | import type { PluginOption } from 'vite'; | 8 | import type { PluginOption } from 'vite'; |
3 | 9 | ||
diff --git a/subprojects/frontend/config/preloadFontsVitePlugin.ts b/subprojects/frontend/config/preloadFontsVitePlugin.ts index bc6f8eaf..5c04477a 100644 --- a/subprojects/frontend/config/preloadFontsVitePlugin.ts +++ b/subprojects/frontend/config/preloadFontsVitePlugin.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import micromatch from 'micromatch'; | 7 | import micromatch from 'micromatch'; |
2 | import type { PluginOption } from 'vite'; | 8 | import type { PluginOption } from 'vite'; |
3 | 9 | ||
diff --git a/subprojects/frontend/index.html b/subprojects/frontend/index.html index 8b6814eb..1bf3472e 100644 --- a/subprojects/frontend/index.html +++ b/subprojects/frontend/index.html | |||
@@ -1,4 +1,9 @@ | |||
1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
2 | <!-- | ||
3 | SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
4 | |||
5 | SPDX-License-Identifier: EPL-2.0 | ||
6 | --> | ||
2 | <html lang="en-US"> | 7 | <html lang="en-US"> |
3 | <head> | 8 | <head> |
4 | <meta charset="utf-8"> | 9 | <meta charset="utf-8"> |
@@ -13,9 +18,9 @@ | |||
13 | <meta name="theme-color" media="(prefers-color-scheme:light)" content="#f5f5f5"> | 18 | <meta name="theme-color" media="(prefers-color-scheme:light)" content="#f5f5f5"> |
14 | <meta name="theme-color" media="(prefers-color-scheme:dark)" content="#21252b"> | 19 | <meta name="theme-color" media="(prefers-color-scheme:dark)" content="#21252b"> |
15 | <style> | 20 | <style> |
16 | @import '@fontsource/inter/variable.css'; | 21 | @import '@fontsource-variable/inter/wght.css'; |
17 | @import '@fontsource/jetbrains-mono/variable.css'; | 22 | @import '@fontsource-variable/jetbrains-mono/wght.css'; |
18 | @import '@fontsource/jetbrains-mono/variable-italic.css'; | 23 | @import '@fontsource-variable/jetbrains-mono/wght-italic.css'; |
19 | </style> | 24 | </style> |
20 | </head> | 25 | </head> |
21 | <body> | 26 | <body> |
diff --git a/subprojects/frontend/package.json b/subprojects/frontend/package.json index a9153cd4..ba8a0a58 100644 --- a/subprojects/frontend/package.json +++ b/subprojects/frontend/package.json | |||
@@ -1,94 +1,99 @@ | |||
1 | { | 1 | { |
2 | "//": [ | ||
3 | "SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/>", | ||
4 | "", | ||
5 | "SPDX-License-Identifier: EPL-2.0" | ||
6 | ], | ||
2 | "name": "@refinery/frontend", | 7 | "name": "@refinery/frontend", |
3 | "version": "0.0.0", | 8 | "version": "0.0.0", |
4 | "description": "Web frontend for Refinery", | 9 | "description": "Web frontend for Refinery", |
10 | "type": "module", | ||
5 | "private": true, | 11 | "private": true, |
6 | "scripts": { | 12 | "scripts": { |
7 | "build": "cross-env MODE=production vite build", | 13 | "build": "cross-env MODE=production vite build", |
8 | "serve": "cross-env MODE=development vite serve", | 14 | "serve": "cross-env MODE=development vite serve", |
9 | "typegen": "xstate typegen \"src/**/*.ts?(x)\"", | 15 | "typegen": "xstate typegen \"src/**/*.ts?(x)\"", |
10 | "typecheck": "tsc -p tsconfig.shared.json && tsc -p tsconfig.node.json && tsc -p tsconfig.json", | 16 | "typecheck": "tsc -p tsconfig.shared.json && tsc -p tsconfig.node.json && tsc -p tsconfig.json", |
11 | "lint": "eslint .", | 17 | "lint": "node config/eslintReport.cjs", |
12 | "lint:ci": "eslint -f json -o build/eslint.json .", | ||
13 | "lint:fix": "yarn run lint --fix" | 18 | "lint:fix": "yarn run lint --fix" |
14 | }, | 19 | }, |
15 | "repository": { | 20 | "repository": { |
16 | "type": "git", | 21 | "type": "git", |
17 | "url": "git+https://github.com/graphs4value/refinery.git" | 22 | "url": "git+https://github.com/graphs4value/refinery.git" |
18 | }, | 23 | }, |
19 | "author": "Refinery authors", | 24 | "author": "The Refinery Authors <https://refinery.tools/>", |
20 | "license": "EPL-2.0", | 25 | "license": "EPL-2.0", |
21 | "bugs": { | 26 | "bugs": { |
22 | "url": "https://github.com/graphs4value/issues" | 27 | "url": "https://github.com/graphs4value/refinery/issues" |
23 | }, | 28 | }, |
24 | "homepage": "https://refinery.tools", | 29 | "homepage": "https://refinery.tools", |
25 | "dependencies": { | 30 | "dependencies": { |
26 | "@codemirror/autocomplete": "^6.4.0", | 31 | "@codemirror/autocomplete": "^6.8.0", |
27 | "@codemirror/commands": "^6.2.0", | 32 | "@codemirror/commands": "^6.2.4", |
28 | "@codemirror/language": "^6.4.0", | 33 | "@codemirror/language": "^6.8.0", |
29 | "@codemirror/lint": "^6.1.0", | 34 | "@codemirror/lint": "^6.2.2", |
30 | "@codemirror/search": "^6.2.3", | 35 | "@codemirror/search": "^6.5.0", |
31 | "@codemirror/state": "^6.2.0", | 36 | "@codemirror/state": "^6.2.1", |
32 | "@codemirror/view": "^6.7.3", | 37 | "@codemirror/view": "^6.13.2", |
33 | "@emotion/react": "^11.10.5", | 38 | "@emotion/react": "^11.11.1", |
34 | "@emotion/styled": "^11.10.5", | 39 | "@emotion/styled": "^11.11.0", |
35 | "@fontsource/inter": "^4.5.15", | 40 | "@fontsource-variable/inter": "^5.0.3", |
36 | "@fontsource/jetbrains-mono": "^4.5.12", | 41 | "@fontsource-variable/jetbrains-mono": "^5.0.3", |
37 | "@lezer/common": "^1.0.2", | 42 | "@lezer/common": "^1.0.3", |
38 | "@lezer/highlight": "^1.1.3", | 43 | "@lezer/highlight": "^1.1.6", |
39 | "@lezer/lr": "^1.3.3", | 44 | "@lezer/lr": "^1.3.6", |
40 | "@material-icons/svg": "^1.0.33", | 45 | "@material-icons/svg": "^1.0.33", |
41 | "@mui/icons-material": "5.11.0", | 46 | "@mui/icons-material": "5.11.16", |
42 | "@mui/material": "5.11.7", | 47 | "@mui/material": "5.13.5", |
43 | "@vitejs/plugin-react-swc": "^3.1.0", | 48 | "@vitejs/plugin-react-swc": "^3.3.2", |
44 | "ansi-styles": "^6.2.1", | 49 | "ansi-styles": "^6.2.1", |
50 | "csstype": "^3.1.2", | ||
45 | "escape-string-regexp": "^5.0.0", | 51 | "escape-string-regexp": "^5.0.0", |
46 | "lodash-es": "^4.17.21", | 52 | "lodash-es": "^4.17.21", |
47 | "loglevel": "^1.8.1", | 53 | "loglevel": "^1.8.1", |
48 | "loglevel-plugin-prefix": "^0.8.4", | 54 | "loglevel-plugin-prefix": "^0.8.4", |
49 | "mobx": "^6.7.0", | 55 | "mobx": "^6.9.0", |
50 | "mobx-react-lite": "^3.4.0", | 56 | "mobx-react-lite": "^3.4.3", |
51 | "ms": "^2.1.3", | 57 | "ms": "^2.1.3", |
52 | "nanoid": "^4.0.0", | 58 | "nanoid": "^4.0.2", |
53 | "notistack": "^2.0.8", | 59 | "notistack": "^3.0.1", |
54 | "react": "^18.2.0", | 60 | "react": "^18.2.0", |
55 | "react-dom": "^18.2.0", | 61 | "react-dom": "^18.2.0", |
56 | "xstate": "^4.35.4", | 62 | "xstate": "^4.37.2", |
57 | "zod": "^3.20.2" | 63 | "zod": "^3.21.4" |
58 | }, | 64 | }, |
59 | "devDependencies": { | 65 | "devDependencies": { |
60 | "@lezer/generator": "^1.2.2", | 66 | "@lezer/generator": "^1.3.0", |
61 | "@tsconfig/node18-strictest-esm": "^1.0.1", | 67 | "@types/eslint": "^8.40.2", |
62 | "@types/eslint": "^8.21.0", | ||
63 | "@types/html-minifier-terser": "^7.0.0", | 68 | "@types/html-minifier-terser": "^7.0.0", |
64 | "@types/lodash-es": "^4.17.6", | 69 | "@types/lodash-es": "^4.17.7", |
65 | "@types/micromatch": "^4.0.2", | 70 | "@types/micromatch": "^4.0.2", |
66 | "@types/ms": "^0.7.31", | 71 | "@types/ms": "^0.7.31", |
67 | "@types/node": "^18.11.18", | 72 | "@types/node": "^18.16.18", |
68 | "@types/prettier": "^2.7.2", | 73 | "@types/prettier": "^2.7.3", |
69 | "@types/react": "^18.0.27", | 74 | "@types/react": "^18.2.12", |
70 | "@types/react-dom": "^18.0.10", | 75 | "@types/react-dom": "^18.2.5", |
71 | "@typescript-eslint/eslint-plugin": "^5.50.0", | 76 | "@typescript-eslint/eslint-plugin": "^5.59.11", |
72 | "@typescript-eslint/parser": "^5.50.0", | 77 | "@typescript-eslint/parser": "^5.59.11", |
73 | "@xstate/cli": "^0.4.2", | 78 | "@xstate/cli": "^0.5.1", |
74 | "cross-env": "^7.0.3", | 79 | "cross-env": "^7.0.3", |
75 | "eslint": "^8.33.0", | 80 | "eslint": "^8.43.0", |
76 | "eslint-config-airbnb": "^19.0.4", | 81 | "eslint-config-airbnb": "^19.0.4", |
77 | "eslint-config-airbnb-typescript": "^17.0.0", | 82 | "eslint-config-airbnb-typescript": "^17.0.0", |
78 | "eslint-config-prettier": "^8.6.0", | 83 | "eslint-config-prettier": "^8.8.0", |
79 | "eslint-import-resolver-typescript": "^3.5.3", | 84 | "eslint-import-resolver-typescript": "^3.5.5", |
80 | "eslint-plugin-import": "^2.27.5", | 85 | "eslint-plugin-import": "^2.27.5", |
81 | "eslint-plugin-jsx-a11y": "^6.7.1", | 86 | "eslint-plugin-jsx-a11y": "^6.7.1", |
82 | "eslint-plugin-mobx": "^0.0.9", | 87 | "eslint-plugin-mobx": "^0.0.9", |
83 | "eslint-plugin-prettier": "^4.2.1", | 88 | "eslint-plugin-prettier": "^4.2.1", |
84 | "eslint-plugin-react": "^7.32.2", | 89 | "eslint-plugin-react": "^7.32.2", |
85 | "eslint-plugin-react-hooks": "^4.6.0", | 90 | "eslint-plugin-react-hooks": "^4.6.0", |
86 | "html-minifier-terser": "^7.1.0", | 91 | "html-minifier-terser": "^7.2.0", |
87 | "micromatch": "^4.0.5", | 92 | "micromatch": "^4.0.5", |
88 | "prettier": "^2.8.3", | 93 | "prettier": "^2.8.8", |
89 | "typescript": "4.9.5", | 94 | "typescript": "5.1.3", |
90 | "vite": "^4.1.1", | 95 | "vite": "^4.3.9", |
91 | "vite-plugin-pwa": "^0.14.1", | 96 | "vite-plugin-pwa": "^0.16.4", |
92 | "workbox-window": "^6.5.4" | 97 | "workbox-window": "^7.0.0" |
93 | } | 98 | } |
94 | } | 99 | } |
diff --git a/subprojects/frontend/prettier.config.cjs b/subprojects/frontend/prettier.config.cjs index 75f5c54d..6f9ff7ad 100644 --- a/subprojects/frontend/prettier.config.cjs +++ b/subprojects/frontend/prettier.config.cjs | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | /** @type {import('prettier').Config} */ | 7 | /** @type {import('prettier').Config} */ |
2 | module.exports = { | 8 | module.exports = { |
3 | singleQuote: true, | 9 | singleQuote: true, |
diff --git a/subprojects/frontend/public/apple-touch-icon.png.license b/subprojects/frontend/public/apple-touch-icon.png.license new file mode 100644 index 00000000..e5db6ccd --- /dev/null +++ b/subprojects/frontend/public/apple-touch-icon.png.license | |||
@@ -0,0 +1,3 @@ | |||
1 | SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
2 | |||
3 | SPDX-License-Identifier: EPL-2.0 | ||
diff --git a/subprojects/frontend/public/favicon-96x96.png.license b/subprojects/frontend/public/favicon-96x96.png.license new file mode 100644 index 00000000..e5db6ccd --- /dev/null +++ b/subprojects/frontend/public/favicon-96x96.png.license | |||
@@ -0,0 +1,3 @@ | |||
1 | SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
2 | |||
3 | SPDX-License-Identifier: EPL-2.0 | ||
diff --git a/subprojects/frontend/public/favicon.png.license b/subprojects/frontend/public/favicon.png.license new file mode 100644 index 00000000..e5db6ccd --- /dev/null +++ b/subprojects/frontend/public/favicon.png.license | |||
@@ -0,0 +1,3 @@ | |||
1 | SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
2 | |||
3 | SPDX-License-Identifier: EPL-2.0 | ||
diff --git a/subprojects/frontend/public/favicon.svg.license b/subprojects/frontend/public/favicon.svg.license new file mode 100644 index 00000000..e5db6ccd --- /dev/null +++ b/subprojects/frontend/public/favicon.svg.license | |||
@@ -0,0 +1,3 @@ | |||
1 | SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
2 | |||
3 | SPDX-License-Identifier: EPL-2.0 | ||
diff --git a/subprojects/frontend/public/icon-192x192.png.license b/subprojects/frontend/public/icon-192x192.png.license new file mode 100644 index 00000000..e5db6ccd --- /dev/null +++ b/subprojects/frontend/public/icon-192x192.png.license | |||
@@ -0,0 +1,3 @@ | |||
1 | SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
2 | |||
3 | SPDX-License-Identifier: EPL-2.0 | ||
diff --git a/subprojects/frontend/public/icon-512x512.png.license b/subprojects/frontend/public/icon-512x512.png.license new file mode 100644 index 00000000..e5db6ccd --- /dev/null +++ b/subprojects/frontend/public/icon-512x512.png.license | |||
@@ -0,0 +1,3 @@ | |||
1 | SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
2 | |||
3 | SPDX-License-Identifier: EPL-2.0 | ||
diff --git a/subprojects/frontend/public/icon-any.svg.license b/subprojects/frontend/public/icon-any.svg.license new file mode 100644 index 00000000..e5db6ccd --- /dev/null +++ b/subprojects/frontend/public/icon-any.svg.license | |||
@@ -0,0 +1,3 @@ | |||
1 | SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
2 | |||
3 | SPDX-License-Identifier: EPL-2.0 | ||
diff --git a/subprojects/frontend/public/mask-icon.svg.license b/subprojects/frontend/public/mask-icon.svg.license new file mode 100644 index 00000000..e5db6ccd --- /dev/null +++ b/subprojects/frontend/public/mask-icon.svg.license | |||
@@ -0,0 +1,3 @@ | |||
1 | SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
2 | |||
3 | SPDX-License-Identifier: EPL-2.0 | ||
diff --git a/subprojects/frontend/public/robots.txt b/subprojects/frontend/public/robots.txt index c2a49f4f..e7c73099 100644 --- a/subprojects/frontend/public/robots.txt +++ b/subprojects/frontend/public/robots.txt | |||
@@ -1,2 +1,6 @@ | |||
1 | # SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
2 | # | ||
3 | # SPDX-License-Identifier: CC0-1.0 | ||
4 | |||
1 | User-agent: * | 5 | User-agent: * |
2 | Allow: / | 6 | Allow: / |
diff --git a/subprojects/frontend/src/App.tsx b/subprojects/frontend/src/App.tsx index cd394345..7f242529 100644 --- a/subprojects/frontend/src/App.tsx +++ b/subprojects/frontend/src/App.tsx | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import Box from '@mui/material/Box'; | 7 | import Box from '@mui/material/Box'; |
2 | import CssBaseline from '@mui/material/CssBaseline'; | 8 | import CssBaseline from '@mui/material/CssBaseline'; |
3 | import { throttle } from 'lodash-es'; | 9 | import { throttle } from 'lodash-es'; |
diff --git a/subprojects/frontend/src/Loading.tsx b/subprojects/frontend/src/Loading.tsx index 489563e0..adee4f0e 100644 --- a/subprojects/frontend/src/Loading.tsx +++ b/subprojects/frontend/src/Loading.tsx | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import CircularProgress from '@mui/material/CircularProgress'; | 7 | import CircularProgress from '@mui/material/CircularProgress'; |
2 | import { styled } from '@mui/material/styles'; | 8 | import { styled } from '@mui/material/styles'; |
3 | 9 | ||
diff --git a/subprojects/frontend/src/PWAStore.ts b/subprojects/frontend/src/PWAStore.ts index e9f99e2a..a1b3ffd9 100644 --- a/subprojects/frontend/src/PWAStore.ts +++ b/subprojects/frontend/src/PWAStore.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import { makeAutoObservable, observable } from 'mobx'; | 7 | import { makeAutoObservable, observable } from 'mobx'; |
2 | import ms from 'ms'; | 8 | import ms from 'ms'; |
3 | // eslint-disable-next-line import/no-unresolved -- Importing virtual module. | 9 | // eslint-disable-next-line import/no-unresolved -- Importing virtual module. |
diff --git a/subprojects/frontend/src/Refinery.tsx b/subprojects/frontend/src/Refinery.tsx index 93a82ee1..b5ff94e1 100644 --- a/subprojects/frontend/src/Refinery.tsx +++ b/subprojects/frontend/src/Refinery.tsx | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import Grow from '@mui/material/Grow'; | 7 | import Grow from '@mui/material/Grow'; |
2 | import Stack from '@mui/material/Stack'; | 8 | import Stack from '@mui/material/Stack'; |
3 | import { SnackbarProvider } from 'notistack'; | 9 | import { SnackbarProvider } from 'notistack'; |
@@ -8,7 +14,6 @@ import EditorPane from './editor/EditorPane'; | |||
8 | 14 | ||
9 | export default function Refinery(): JSX.Element { | 15 | export default function Refinery(): JSX.Element { |
10 | return ( | 16 | return ( |
11 | // @ts-expect-error -- notistack has problems with `exactOptionalPropertyTypes | ||
12 | <SnackbarProvider TransitionComponent={Grow}> | 17 | <SnackbarProvider TransitionComponent={Grow}> |
13 | <UpdateNotification /> | 18 | <UpdateNotification /> |
14 | <Stack direction="column" height="100%" overflow="auto"> | 19 | <Stack direction="column" height="100%" overflow="auto"> |
diff --git a/subprojects/frontend/src/RootStore.ts b/subprojects/frontend/src/RootStore.ts index 2e76d66d..b84c0ce0 100644 --- a/subprojects/frontend/src/RootStore.ts +++ b/subprojects/frontend/src/RootStore.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import { getLogger } from 'loglevel'; | 7 | import { getLogger } from 'loglevel'; |
2 | import { makeAutoObservable, runInAction } from 'mobx'; | 8 | import { makeAutoObservable, runInAction } from 'mobx'; |
3 | 9 | ||
diff --git a/subprojects/frontend/src/RootStoreProvider.tsx b/subprojects/frontend/src/RootStoreProvider.tsx index 2c11a0f9..7cb89af1 100644 --- a/subprojects/frontend/src/RootStoreProvider.tsx +++ b/subprojects/frontend/src/RootStoreProvider.tsx | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import { type ReactNode, createContext, useContext } from 'react'; | 7 | import { type ReactNode, createContext, useContext } from 'react'; |
2 | 8 | ||
3 | import type RootStore from './RootStore'; | 9 | import type RootStore from './RootStore'; |
diff --git a/subprojects/frontend/src/ToggleDarkModeButton.tsx b/subprojects/frontend/src/ToggleDarkModeButton.tsx index 59714f20..7a835e61 100644 --- a/subprojects/frontend/src/ToggleDarkModeButton.tsx +++ b/subprojects/frontend/src/ToggleDarkModeButton.tsx | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import DarkModeIcon from '@mui/icons-material/DarkMode'; | 7 | import DarkModeIcon from '@mui/icons-material/DarkMode'; |
2 | import LightModeIcon from '@mui/icons-material/LightMode'; | 8 | import LightModeIcon from '@mui/icons-material/LightMode'; |
3 | import IconButton from '@mui/material/IconButton'; | 9 | import IconButton from '@mui/material/IconButton'; |
diff --git a/subprojects/frontend/src/TopBar.tsx b/subprojects/frontend/src/TopBar.tsx index 5a825512..f2542b14 100644 --- a/subprojects/frontend/src/TopBar.tsx +++ b/subprojects/frontend/src/TopBar.tsx | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import GitHubIcon from '@mui/icons-material/GitHub'; | 7 | import GitHubIcon from '@mui/icons-material/GitHub'; |
2 | import AppBar from '@mui/material/AppBar'; | 8 | import AppBar from '@mui/material/AppBar'; |
3 | import Button from '@mui/material/Button'; | 9 | import Button from '@mui/material/Button'; |
diff --git a/subprojects/frontend/src/UpdateNotification.tsx b/subprojects/frontend/src/UpdateNotification.tsx index 07f7f5f7..d86c0703 100644 --- a/subprojects/frontend/src/UpdateNotification.tsx +++ b/subprojects/frontend/src/UpdateNotification.tsx | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import Button from '@mui/material/Button'; | 7 | import Button from '@mui/material/Button'; |
2 | import { observer } from 'mobx-react-lite'; | 8 | import { observer } from 'mobx-react-lite'; |
3 | import { useEffect } from 'react'; | 9 | import { useEffect } from 'react'; |
@@ -32,14 +38,14 @@ export default observer(function UpdateNotification(): null { | |||
32 | return enqueueLater('Failed to download update', { | 38 | return enqueueLater('Failed to download update', { |
33 | variant: 'error', | 39 | variant: 'error', |
34 | action: ( | 40 | action: ( |
35 | <> | 41 | <ContrastThemeProvider> |
36 | <Button color="inherit" onClick={() => pwaStore.checkForUpdates()}> | 42 | <Button color="inherit" onClick={() => pwaStore.checkForUpdates()}> |
37 | Try again | 43 | Try again |
38 | </Button> | 44 | </Button> |
39 | <Button color="inherit" onClick={() => pwaStore.dismissError()}> | 45 | <Button color="inherit" onClick={() => pwaStore.dismissError()}> |
40 | Dismiss | 46 | Dismiss |
41 | </Button> | 47 | </Button> |
42 | </> | 48 | </ContrastThemeProvider> |
43 | ), | 49 | ), |
44 | }); | 50 | }); |
45 | } | 51 | } |
diff --git a/subprojects/frontend/src/WindowControlsOverlayColor.tsx b/subprojects/frontend/src/WindowControlsOverlayColor.tsx index 14eda566..cfa468ea 100644 --- a/subprojects/frontend/src/WindowControlsOverlayColor.tsx +++ b/subprojects/frontend/src/WindowControlsOverlayColor.tsx | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import { useTheme } from '@mui/material/styles'; | 7 | import { useTheme } from '@mui/material/styles'; |
2 | import { useEffect } from 'react'; | 8 | import { useEffect } from 'react'; |
3 | 9 | ||
diff --git a/subprojects/frontend/src/editor/AnimatedButton.tsx b/subprojects/frontend/src/editor/AnimatedButton.tsx index f75d4617..dbbda618 100644 --- a/subprojects/frontend/src/editor/AnimatedButton.tsx +++ b/subprojects/frontend/src/editor/AnimatedButton.tsx | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import Box from '@mui/material/Box'; | 7 | import Box from '@mui/material/Box'; |
2 | import Button from '@mui/material/Button'; | 8 | import Button from '@mui/material/Button'; |
3 | import { styled, type SxProps, type Theme } from '@mui/material/styles'; | 9 | import { styled, type SxProps, type Theme } from '@mui/material/styles'; |
diff --git a/subprojects/frontend/src/editor/ConnectButton.tsx b/subprojects/frontend/src/editor/ConnectButton.tsx index e2d251f3..eed6fbc7 100644 --- a/subprojects/frontend/src/editor/ConnectButton.tsx +++ b/subprojects/frontend/src/editor/ConnectButton.tsx | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import CloudIcon from '@mui/icons-material/Cloud'; | 7 | import CloudIcon from '@mui/icons-material/Cloud'; |
2 | import CloudOffIcon from '@mui/icons-material/CloudOff'; | 8 | import CloudOffIcon from '@mui/icons-material/CloudOff'; |
3 | import SyncIcon from '@mui/icons-material/Sync'; | 9 | import SyncIcon from '@mui/icons-material/Sync'; |
diff --git a/subprojects/frontend/src/editor/ConnectionStatusNotification.tsx b/subprojects/frontend/src/editor/ConnectionStatusNotification.tsx index 9b27f45c..b7b962ab 100644 --- a/subprojects/frontend/src/editor/ConnectionStatusNotification.tsx +++ b/subprojects/frontend/src/editor/ConnectionStatusNotification.tsx | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import Button from '@mui/material/Button'; | 7 | import Button from '@mui/material/Button'; |
2 | import { observer } from 'mobx-react-lite'; | 8 | import { observer } from 'mobx-react-lite'; |
3 | import { useEffect } from 'react'; | 9 | import { useEffect } from 'react'; |
diff --git a/subprojects/frontend/src/editor/DiagnosticValue.ts b/subprojects/frontend/src/editor/DiagnosticValue.ts index b4e0b165..20478262 100644 --- a/subprojects/frontend/src/editor/DiagnosticValue.ts +++ b/subprojects/frontend/src/editor/DiagnosticValue.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import type { Diagnostic } from '@codemirror/lint'; | 7 | import type { Diagnostic } from '@codemirror/lint'; |
2 | import { RangeValue } from '@codemirror/state'; | 8 | import { RangeValue } from '@codemirror/state'; |
3 | 9 | ||
diff --git a/subprojects/frontend/src/editor/EditorArea.tsx b/subprojects/frontend/src/editor/EditorArea.tsx index cfb988b2..905fa2ec 100644 --- a/subprojects/frontend/src/editor/EditorArea.tsx +++ b/subprojects/frontend/src/editor/EditorArea.tsx | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import Box from '@mui/material/Box'; | 7 | import Box from '@mui/material/Box'; |
2 | import { useTheme } from '@mui/material/styles'; | 8 | import { useTheme } from '@mui/material/styles'; |
3 | import { observer } from 'mobx-react-lite'; | 9 | import { observer } from 'mobx-react-lite'; |
diff --git a/subprojects/frontend/src/editor/EditorButtons.tsx b/subprojects/frontend/src/editor/EditorButtons.tsx index 53b06e23..9b187e5c 100644 --- a/subprojects/frontend/src/editor/EditorButtons.tsx +++ b/subprojects/frontend/src/editor/EditorButtons.tsx | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import type { Diagnostic } from '@codemirror/lint'; | 7 | import type { Diagnostic } from '@codemirror/lint'; |
2 | import CheckIcon from '@mui/icons-material/Check'; | 8 | import CheckIcon from '@mui/icons-material/Check'; |
3 | import ErrorIcon from '@mui/icons-material/Error'; | 9 | import ErrorIcon from '@mui/icons-material/Error'; |
diff --git a/subprojects/frontend/src/editor/EditorPane.tsx b/subprojects/frontend/src/editor/EditorPane.tsx index f7f8241a..87f408fe 100644 --- a/subprojects/frontend/src/editor/EditorPane.tsx +++ b/subprojects/frontend/src/editor/EditorPane.tsx | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import Box from '@mui/material/Box'; | 7 | import Box from '@mui/material/Box'; |
2 | import Skeleton from '@mui/material/Skeleton'; | 8 | import Skeleton from '@mui/material/Skeleton'; |
3 | import Stack from '@mui/material/Stack'; | 9 | import Stack from '@mui/material/Stack'; |
diff --git a/subprojects/frontend/src/editor/EditorStore.ts b/subprojects/frontend/src/editor/EditorStore.ts index 0a0d885d..b98f085e 100644 --- a/subprojects/frontend/src/editor/EditorStore.ts +++ b/subprojects/frontend/src/editor/EditorStore.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import type { | 7 | import type { |
2 | CompletionContext, | 8 | CompletionContext, |
3 | CompletionResult, | 9 | CompletionResult, |
diff --git a/subprojects/frontend/src/editor/EditorTheme.ts b/subprojects/frontend/src/editor/EditorTheme.ts index 01b65a7e..e057ce18 100644 --- a/subprojects/frontend/src/editor/EditorTheme.ts +++ b/subprojects/frontend/src/editor/EditorTheme.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import errorSVG from '@material-icons/svg/svg/error/baseline.svg?raw'; | 7 | import errorSVG from '@material-icons/svg/svg/error/baseline.svg?raw'; |
2 | import expandMoreSVG from '@material-icons/svg/svg/expand_more/baseline.svg?raw'; | 8 | import expandMoreSVG from '@material-icons/svg/svg/expand_more/baseline.svg?raw'; |
3 | import infoSVG from '@material-icons/svg/svg/info/baseline.svg?raw'; | 9 | import infoSVG from '@material-icons/svg/svg/info/baseline.svg?raw'; |
@@ -8,32 +14,6 @@ function svgURL(svg: string): string { | |||
8 | return `url('data:image/svg+xml;utf8,${svg}')`; | 14 | return `url('data:image/svg+xml;utf8,${svg}')`; |
9 | } | 15 | } |
10 | 16 | ||
11 | function radialShadowTheme( | ||
12 | origin: string, | ||
13 | scaleX: boolean, | ||
14 | scaleY: boolean, | ||
15 | ): CSSObject { | ||
16 | function radialGradient(opacity: number, scale: string): string { | ||
17 | return `radial-gradient( | ||
18 | farthest-side at ${origin}, | ||
19 | rgba(0, 0, 0, ${opacity}), | ||
20 | rgba(0, 0, 0, 0) | ||
21 | ) | ||
22 | ${origin} / | ||
23 | ${scaleX ? scale : '100%'} | ||
24 | ${scaleY ? scale : '100%'} | ||
25 | no-repeat`; | ||
26 | } | ||
27 | |||
28 | return { | ||
29 | background: ` | ||
30 | ${radialGradient(0.2, '40%')}, | ||
31 | ${radialGradient(0.14, '50%')}, | ||
32 | ${radialGradient(0.12, '100%')} | ||
33 | `, | ||
34 | }; | ||
35 | } | ||
36 | |||
37 | export default styled('div', { | 17 | export default styled('div', { |
38 | name: 'EditorTheme', | 18 | name: 'EditorTheme', |
39 | shouldForwardProp: (propName) => | 19 | shouldForwardProp: (propName) => |
@@ -52,98 +32,13 @@ export default styled('div', { | |||
52 | }, | 32 | }, |
53 | }; | 33 | }; |
54 | 34 | ||
55 | const scrollerThumbOpacity = theme.palette.mode === 'dark' ? 0.16 : 0.28; | ||
56 | |||
57 | const generalStyle: CSSObject = { | 35 | const generalStyle: CSSObject = { |
58 | background: theme.palette.background.default, | 36 | background: theme.palette.background.default, |
59 | '&, .cm-editor': { | 37 | '&, .cm-editor': { |
60 | height: '100%', | 38 | height: '100%', |
61 | }, | 39 | }, |
62 | '.cm-scroller-holder': { | ||
63 | display: 'flex', | ||
64 | position: 'relative', | ||
65 | flexDirection: 'column', | ||
66 | overflow: 'hidden', | ||
67 | flex: '1 1', | ||
68 | }, | ||
69 | '.cm-scroller-spacer': { | ||
70 | position: 'sticky', | ||
71 | flexShrink: 0, | ||
72 | zIndex: 300, | ||
73 | width: 1, | ||
74 | marginRight: -1, | ||
75 | pointerEvents: 'none', | ||
76 | }, | ||
77 | '.cm-scroller': { | 40 | '.cm-scroller': { |
78 | color: theme.palette.text.secondary, | 41 | color: theme.palette.text.secondary, |
79 | scrollbarWidth: 'none', | ||
80 | MsOverflowStyle: 'none', | ||
81 | '&::-webkit-scrollbar': { | ||
82 | width: 0, | ||
83 | height: 0, | ||
84 | background: 'transparent', | ||
85 | }, | ||
86 | }, | ||
87 | '.cm-scroller-track': { | ||
88 | position: 'absolute', | ||
89 | zIndex: 300, | ||
90 | touchAction: 'none', | ||
91 | }, | ||
92 | '.cm-scroller-thumb': { | ||
93 | position: 'absolute', | ||
94 | background: theme.palette.text.secondary, | ||
95 | opacity: scrollerThumbOpacity, | ||
96 | transition: theme.transitions.create('opacity', { | ||
97 | duration: theme.transitions.duration.shortest, | ||
98 | }), | ||
99 | touchAction: 'none', | ||
100 | WebkitTapHighlightColor: 'transparent', | ||
101 | '&:hover': { | ||
102 | opacity: 0.75, | ||
103 | '@media (hover: none)': { | ||
104 | opacity: scrollerThumbOpacity, | ||
105 | }, | ||
106 | }, | ||
107 | '&.active': { | ||
108 | opacity: 1, | ||
109 | pointerEvents: 'none', | ||
110 | userSelect: 'none', | ||
111 | }, | ||
112 | }, | ||
113 | '.cm-scroller-track-y, .cm-scroller-thumb-y': { | ||
114 | top: 0, | ||
115 | right: 0, | ||
116 | width: 12, | ||
117 | }, | ||
118 | '.cm-scroller-track-x, .cm-scroller-thumb-x': { | ||
119 | left: 0, | ||
120 | bottom: 0, | ||
121 | height: 12, | ||
122 | }, | ||
123 | '.cm-scroller-track-x': { | ||
124 | right: 12, | ||
125 | }, | ||
126 | '.cm-scroller-gutter-decoration': { | ||
127 | position: 'absolute', | ||
128 | top: 0, | ||
129 | bottom: 0, | ||
130 | left: 0, | ||
131 | width: 0, | ||
132 | transition: theme.transitions.create('width', { | ||
133 | duration: theme.transitions.duration.shortest, | ||
134 | }), | ||
135 | ...radialShadowTheme('0 50%', true, false), | ||
136 | }, | ||
137 | '.cm-scroller-top-decoration': { | ||
138 | position: 'absolute', | ||
139 | top: 0, | ||
140 | left: 0, | ||
141 | right: 0, | ||
142 | height: 0, | ||
143 | transition: theme.transitions.create('height', { | ||
144 | duration: theme.transitions.duration.shortest, | ||
145 | }), | ||
146 | ...radialShadowTheme('50% 0', false, true), | ||
147 | }, | 42 | }, |
148 | '.cm-gutters': { | 43 | '.cm-gutters': { |
149 | background: theme.palette.background.default, | 44 | background: theme.palette.background.default, |
@@ -162,7 +57,6 @@ export default styled('div', { | |||
162 | background: 'transparent', | 57 | background: 'transparent', |
163 | }, | 58 | }, |
164 | '.cm-cursor, .cm-cursor-primary': { | 59 | '.cm-cursor, .cm-cursor-primary': { |
165 | marginLeft: -1, | ||
166 | borderLeft: `2px solid ${theme.palette.info.main}`, | 60 | borderLeft: `2px solid ${theme.palette.info.main}`, |
167 | }, | 61 | }, |
168 | '.cm-selectionBackground': { | 62 | '.cm-selectionBackground': { |
@@ -175,7 +69,6 @@ export default styled('div', { | |||
175 | }, | 69 | }, |
176 | }, | 70 | }, |
177 | '.cm-line': { | 71 | '.cm-line': { |
178 | position: 'relative', // For indentation highlights | ||
179 | padding: '0 12px 0 0px', | 72 | padding: '0 12px 0 0px', |
180 | }, | 73 | }, |
181 | }; | 74 | }; |
@@ -265,13 +158,6 @@ export default styled('div', { | |||
265 | '.cm-searchMatch-selected': { | 158 | '.cm-searchMatch-selected': { |
266 | background: theme.palette.highlight.search.selected, | 159 | background: theme.palette.highlight.search.selected, |
267 | }, | 160 | }, |
268 | '.cm-indentation-marker': { | ||
269 | display: 'inline-block', | ||
270 | boxShadow: `1px 0 0 ${theme.palette.text.disabled} inset`, | ||
271 | '&.active': { | ||
272 | boxShadow: `1px 0 0 ${theme.palette.text.primary} inset`, | ||
273 | }, | ||
274 | }, | ||
275 | '.cm-scroller-selection': { | 161 | '.cm-scroller-selection': { |
276 | position: 'absolute', | 162 | position: 'absolute', |
277 | right: 0, | 163 | right: 0, |
@@ -452,11 +338,11 @@ export default styled('div', { | |||
452 | 338 | ||
453 | const foldStyle = { | 339 | const foldStyle = { |
454 | '.cm-foldGutter': { | 340 | '.cm-foldGutter': { |
455 | width: 17, | 341 | width: 16, |
456 | }, | 342 | }, |
457 | '.problem-editor-foldMarker': { | 343 | '.problem-editor-foldMarker': { |
458 | display: 'block', | 344 | display: 'block', |
459 | margin: '4px 1px 4px 0', | 345 | margin: '4px 0 4px 0', |
460 | padding: 0, | 346 | padding: 0, |
461 | maskImage: svgURL(expandMoreSVG), | 347 | maskImage: svgURL(expandMoreSVG), |
462 | maskSize: '16px 16px', | 348 | maskSize: '16px 16px', |
@@ -467,7 +353,7 @@ export default styled('div', { | |||
467 | cursor: 'pointer', | 353 | cursor: 'pointer', |
468 | WebkitTapHighlightColor: 'transparent', | 354 | WebkitTapHighlightColor: 'transparent', |
469 | [theme.breakpoints.down('sm')]: { | 355 | [theme.breakpoints.down('sm')]: { |
470 | margin: '2px 1px 2px 0', | 356 | margin: '2px 0 2px 0', |
471 | }, | 357 | }, |
472 | }, | 358 | }, |
473 | '.problem-editor-foldMarker-open': { | 359 | '.problem-editor-foldMarker-open': { |
diff --git a/subprojects/frontend/src/editor/GenerateButton.tsx b/subprojects/frontend/src/editor/GenerateButton.tsx index 2036fc28..3837ef8e 100644 --- a/subprojects/frontend/src/editor/GenerateButton.tsx +++ b/subprojects/frontend/src/editor/GenerateButton.tsx | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import DangerousOutlinedIcon from '@mui/icons-material/DangerousOutlined'; | 7 | import DangerousOutlinedIcon from '@mui/icons-material/DangerousOutlined'; |
2 | import PlayArrowIcon from '@mui/icons-material/PlayArrow'; | 8 | import PlayArrowIcon from '@mui/icons-material/PlayArrow'; |
3 | import Button from '@mui/material/Button'; | 9 | import Button from '@mui/material/Button'; |
diff --git a/subprojects/frontend/src/editor/LintPanelStore.ts b/subprojects/frontend/src/editor/LintPanelStore.ts index 502f9c59..f81587fa 100644 --- a/subprojects/frontend/src/editor/LintPanelStore.ts +++ b/subprojects/frontend/src/editor/LintPanelStore.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import { closeLintPanel, openLintPanel } from '@codemirror/lint'; | 7 | import { closeLintPanel, openLintPanel } from '@codemirror/lint'; |
2 | 8 | ||
3 | import type EditorStore from './EditorStore'; | 9 | import type EditorStore from './EditorStore'; |
diff --git a/subprojects/frontend/src/editor/PanelStore.ts b/subprojects/frontend/src/editor/PanelStore.ts index 4f827280..25ef8b6c 100644 --- a/subprojects/frontend/src/editor/PanelStore.ts +++ b/subprojects/frontend/src/editor/PanelStore.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import type { Command } from '@codemirror/view'; | 7 | import type { Command } from '@codemirror/view'; |
2 | import { action, makeObservable, observable } from 'mobx'; | 8 | import { action, makeObservable, observable } from 'mobx'; |
3 | 9 | ||
diff --git a/subprojects/frontend/src/editor/SearchPanel.ts b/subprojects/frontend/src/editor/SearchPanel.ts index c9df41b7..b63d5eed 100644 --- a/subprojects/frontend/src/editor/SearchPanel.ts +++ b/subprojects/frontend/src/editor/SearchPanel.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import { | 7 | import { |
2 | type EditorView, | 8 | type EditorView, |
3 | type Panel, | 9 | type Panel, |
diff --git a/subprojects/frontend/src/editor/SearchPanelPortal.tsx b/subprojects/frontend/src/editor/SearchPanelPortal.tsx index 5cf1c90e..b4b07c74 100644 --- a/subprojects/frontend/src/editor/SearchPanelPortal.tsx +++ b/subprojects/frontend/src/editor/SearchPanelPortal.tsx | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import Portal from '@mui/material/Portal'; | 7 | import Portal from '@mui/material/Portal'; |
2 | import { observer } from 'mobx-react-lite'; | 8 | import { observer } from 'mobx-react-lite'; |
3 | 9 | ||
diff --git a/subprojects/frontend/src/editor/SearchPanelStore.ts b/subprojects/frontend/src/editor/SearchPanelStore.ts index 65d595a8..6a97baf1 100644 --- a/subprojects/frontend/src/editor/SearchPanelStore.ts +++ b/subprojects/frontend/src/editor/SearchPanelStore.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import { | 7 | import { |
2 | closeSearchPanel, | 8 | closeSearchPanel, |
3 | findNext, | 9 | findNext, |
diff --git a/subprojects/frontend/src/editor/SearchToolbar.tsx b/subprojects/frontend/src/editor/SearchToolbar.tsx index 54f3dba7..4ae7e893 100644 --- a/subprojects/frontend/src/editor/SearchToolbar.tsx +++ b/subprojects/frontend/src/editor/SearchToolbar.tsx | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import CloseIcon from '@mui/icons-material/Close'; | 7 | import CloseIcon from '@mui/icons-material/Close'; |
2 | import FindReplaceIcon from '@mui/icons-material/FindReplace'; | 8 | import FindReplaceIcon from '@mui/icons-material/FindReplace'; |
3 | import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'; | 9 | import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'; |
diff --git a/subprojects/frontend/src/editor/createEditorState.ts b/subprojects/frontend/src/editor/createEditorState.ts index ce1efa4f..67b8fb9e 100644 --- a/subprojects/frontend/src/editor/createEditorState.ts +++ b/subprojects/frontend/src/editor/createEditorState.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import { | 7 | import { |
2 | closeBrackets, | 8 | closeBrackets, |
3 | closeBracketsKeymap, | 9 | closeBracketsKeymap, |
@@ -38,8 +44,6 @@ import type EditorStore from './EditorStore'; | |||
38 | import SearchPanel from './SearchPanel'; | 44 | import SearchPanel from './SearchPanel'; |
39 | import exposeDiagnostics from './exposeDiagnostics'; | 45 | import exposeDiagnostics from './exposeDiagnostics'; |
40 | import findOccurrences from './findOccurrences'; | 46 | import findOccurrences from './findOccurrences'; |
41 | import indentationMarkerViewPlugin from './indentationMarkerViewPlugin'; | ||
42 | import scrollbarViewPlugin from './scrollbarViewPlugin'; | ||
43 | import semanticHighlighting from './semanticHighlighting'; | 47 | import semanticHighlighting from './semanticHighlighting'; |
44 | 48 | ||
45 | export default function createEditorState( | 49 | export default function createEditorState( |
@@ -64,7 +68,6 @@ export default function createEditorState( | |||
64 | highlightSpecialChars(), | 68 | highlightSpecialChars(), |
65 | history(), | 69 | history(), |
66 | indentOnInput(), | 70 | indentOnInput(), |
67 | indentationMarkerViewPlugin(), | ||
68 | rectangularSelection(), | 71 | rectangularSelection(), |
69 | search({ | 72 | search({ |
70 | createPanel(view) { | 73 | createPanel(view) { |
@@ -123,7 +126,6 @@ export default function createEditorState( | |||
123 | ...defaultKeymap, | 126 | ...defaultKeymap, |
124 | ]), | 127 | ]), |
125 | problemLanguageSupport(), | 128 | problemLanguageSupport(), |
126 | scrollbarViewPlugin(store), | ||
127 | ], | 129 | ], |
128 | }); | 130 | }); |
129 | } | 131 | } |
diff --git a/subprojects/frontend/src/editor/defineDecorationSetExtension.ts b/subprojects/frontend/src/editor/defineDecorationSetExtension.ts index d9c7bc7d..0887c92e 100644 --- a/subprojects/frontend/src/editor/defineDecorationSetExtension.ts +++ b/subprojects/frontend/src/editor/defineDecorationSetExtension.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import { StateEffect, StateField, TransactionSpec } from '@codemirror/state'; | 7 | import { StateEffect, StateField, TransactionSpec } from '@codemirror/state'; |
2 | import { EditorView, Decoration, DecorationSet } from '@codemirror/view'; | 8 | import { EditorView, Decoration, DecorationSet } from '@codemirror/view'; |
3 | 9 | ||
diff --git a/subprojects/frontend/src/editor/exposeDiagnostics.ts b/subprojects/frontend/src/editor/exposeDiagnostics.ts index 82f24c93..c4dcbb87 100644 --- a/subprojects/frontend/src/editor/exposeDiagnostics.ts +++ b/subprojects/frontend/src/editor/exposeDiagnostics.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import { setDiagnosticsEffect } from '@codemirror/lint'; | 7 | import { setDiagnosticsEffect } from '@codemirror/lint'; |
2 | import { | 8 | import { |
3 | StateField, | 9 | StateField, |
diff --git a/subprojects/frontend/src/editor/findOccurrences.ts b/subprojects/frontend/src/editor/findOccurrences.ts index 08c078c2..00dffc96 100644 --- a/subprojects/frontend/src/editor/findOccurrences.ts +++ b/subprojects/frontend/src/editor/findOccurrences.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import { | 7 | import { |
2 | type Range, | 8 | type Range, |
3 | RangeSet, | 9 | RangeSet, |
diff --git a/subprojects/frontend/src/editor/indentationMarkerViewPlugin.ts b/subprojects/frontend/src/editor/indentationMarkerViewPlugin.ts deleted file mode 100644 index 730fa6e3..00000000 --- a/subprojects/frontend/src/editor/indentationMarkerViewPlugin.ts +++ /dev/null | |||
@@ -1,341 +0,0 @@ | |||
1 | /** | ||
2 | * @file CodeMirror plugin to highlight indentation | ||
3 | * | ||
4 | * This file is based on the | ||
5 | * [@replit/codemirror-indentation-markers](https://github.com/replit/codemirror-indentation-markers) | ||
6 | * package, which is available under the | ||
7 | * [MIT License](https://github.com/replit/codemirror-indentation-markers/blob/543cc508ca5cef5d8350af23973eb1425e31525c/LICENSE). | ||
8 | * | ||
9 | * The highlighting heuristics were adjusted to make them more suitable | ||
10 | * for logic programming. | ||
11 | * | ||
12 | * @see https://github.com/replit/codemirror-indentation-markers/blob/543cc508ca5cef5d8350af23973eb1425e31525c/src/index.ts | ||
13 | */ | ||
14 | |||
15 | import { getIndentUnit } from '@codemirror/language'; | ||
16 | import { Text, RangeSet, EditorState } from '@codemirror/state'; | ||
17 | import { | ||
18 | ViewPlugin, | ||
19 | Decoration, | ||
20 | EditorView, | ||
21 | WidgetType, | ||
22 | PluginValue, | ||
23 | } from '@codemirror/view'; | ||
24 | |||
25 | export const INDENTATION_MARKER_CLASS = 'cm-indentation-marker'; | ||
26 | |||
27 | export const INDENTATION_MARKER_ACTIVE_CLASS = 'active'; | ||
28 | |||
29 | const indentationMark = Decoration.mark({ | ||
30 | class: INDENTATION_MARKER_CLASS, | ||
31 | tagName: 'span', | ||
32 | }); | ||
33 | |||
34 | const activeIndentationMark = Decoration.mark({ | ||
35 | class: `${INDENTATION_MARKER_CLASS} ${INDENTATION_MARKER_ACTIVE_CLASS}`, | ||
36 | tagName: 'span', | ||
37 | }); | ||
38 | |||
39 | /** | ||
40 | * Widget used to simulate N indentation markers on empty lines. | ||
41 | */ | ||
42 | class IndentationWidget extends WidgetType { | ||
43 | constructor( | ||
44 | readonly numIndent: number, | ||
45 | readonly indentSize: number, | ||
46 | readonly activeIndent?: number, | ||
47 | ) { | ||
48 | super(); | ||
49 | } | ||
50 | |||
51 | override eq(other: IndentationWidget) { | ||
52 | return ( | ||
53 | this.numIndent === other.numIndent && | ||
54 | this.indentSize === other.indentSize && | ||
55 | this.activeIndent === other.activeIndent | ||
56 | ); | ||
57 | } | ||
58 | |||
59 | override toDOM(view: EditorView) { | ||
60 | const indentSize = getIndentUnit(view.state); | ||
61 | |||
62 | const wrapper = document.createElement('span'); | ||
63 | wrapper.style.top = '0'; | ||
64 | wrapper.style.left = '0'; | ||
65 | wrapper.style.position = 'absolute'; | ||
66 | wrapper.style.pointerEvents = 'none'; | ||
67 | |||
68 | for (let indent = 0; indent < this.numIndent; indent += 1) { | ||
69 | const element = document.createElement('span'); | ||
70 | element.className = INDENTATION_MARKER_CLASS; | ||
71 | element.classList.toggle( | ||
72 | INDENTATION_MARKER_ACTIVE_CLASS, | ||
73 | indent === this.activeIndent, | ||
74 | ); | ||
75 | element.innerHTML = ' '.repeat(indentSize); | ||
76 | wrapper.appendChild(element); | ||
77 | } | ||
78 | |||
79 | return wrapper; | ||
80 | } | ||
81 | } | ||
82 | |||
83 | /** | ||
84 | * Returns the number of indentation markers a non-empty line should have | ||
85 | * based on the text in the line and the size of the indent. | ||
86 | */ | ||
87 | function getNumIndentMarkersForNonEmptyLine( | ||
88 | text: string, | ||
89 | indentSize: number, | ||
90 | onIndentMarker?: (pos: number) => void, | ||
91 | ) { | ||
92 | let numIndents = 0; | ||
93 | let numConsecutiveSpaces = 0; | ||
94 | let prevChar: string | undefined; | ||
95 | |||
96 | for (let char = 0; char < text.length; char += 1) { | ||
97 | // Bail if we encounter a non-whitespace character | ||
98 | if (text[char] !== ' ' && text[char] !== '\t') { | ||
99 | // We still increment the indentation level if we would | ||
100 | // have added a marker here had this been a space or tab. | ||
101 | if (numConsecutiveSpaces % indentSize === 0 && char !== 0) { | ||
102 | numIndents += 1; | ||
103 | } | ||
104 | |||
105 | return numIndents; | ||
106 | } | ||
107 | |||
108 | // Every tab and N space has an indentation marker | ||
109 | const shouldAddIndent = | ||
110 | prevChar === '\t' || numConsecutiveSpaces % indentSize === 0; | ||
111 | |||
112 | if (shouldAddIndent) { | ||
113 | numIndents += 1; | ||
114 | |||
115 | if (onIndentMarker) { | ||
116 | onIndentMarker(char); | ||
117 | } | ||
118 | } | ||
119 | |||
120 | if (text[char] === ' ') { | ||
121 | numConsecutiveSpaces += 1; | ||
122 | } else { | ||
123 | numConsecutiveSpaces = 0; | ||
124 | } | ||
125 | |||
126 | prevChar = text[char]; | ||
127 | } | ||
128 | |||
129 | return numIndents; | ||
130 | } | ||
131 | |||
132 | /** | ||
133 | * Returns the number of indent markers an empty line should have | ||
134 | * based on the number of indent markers of the previous | ||
135 | * and next non-empty lines. | ||
136 | */ | ||
137 | function getNumIndentMarkersForEmptyLine(prev: number, next: number) { | ||
138 | const min = Math.min(prev, next); | ||
139 | const max = Math.max(prev, next); | ||
140 | |||
141 | // If only one side is non-zero, we omit markers, | ||
142 | // because in logic programming, a block often ends with an empty line. | ||
143 | if (min === 0 && max > 0) { | ||
144 | return 0; | ||
145 | } | ||
146 | |||
147 | // Else, default to the minimum of the two | ||
148 | return min; | ||
149 | } | ||
150 | |||
151 | /** | ||
152 | * Returns the next non-empty line and its indent level. | ||
153 | */ | ||
154 | function findNextNonEmptyLineAndIndentLevel( | ||
155 | doc: Text, | ||
156 | startLine: number, | ||
157 | indentSize: number, | ||
158 | ): [number, number] { | ||
159 | const numLines = doc.lines; | ||
160 | let lineNo = startLine; | ||
161 | |||
162 | while (lineNo <= numLines) { | ||
163 | const { text } = doc.line(lineNo); | ||
164 | |||
165 | if (text.trim().length === 0) { | ||
166 | lineNo += 1; | ||
167 | } else { | ||
168 | const indent = getNumIndentMarkersForNonEmptyLine(text, indentSize); | ||
169 | return [lineNo, indent]; | ||
170 | } | ||
171 | } | ||
172 | |||
173 | // Reached the end of the doc | ||
174 | return [numLines + 1, 0]; | ||
175 | } | ||
176 | |||
177 | interface IndentationMarkerDesc { | ||
178 | lineNumber: number; | ||
179 | from: number; | ||
180 | to: number; | ||
181 | create(activeIndentIndex?: number): Decoration; | ||
182 | } | ||
183 | |||
184 | /** | ||
185 | * Returns a range of lines with an active indent marker. | ||
186 | */ | ||
187 | function getLinesWithActiveIndentMarker( | ||
188 | state: EditorState, | ||
189 | indentMap: Map<number, number>, | ||
190 | ): { start: number; end: number; activeIndent: number } { | ||
191 | const currentLine = state.doc.lineAt(state.selection.main.head); | ||
192 | const currentIndent = indentMap.get(currentLine.number); | ||
193 | const currentLineNo = currentLine.number; | ||
194 | |||
195 | if (!currentIndent) { | ||
196 | return { start: -1, end: -1, activeIndent: NaN }; | ||
197 | } | ||
198 | |||
199 | let start: number; | ||
200 | let end: number; | ||
201 | |||
202 | for (start = currentLineNo; start >= 0; start -= 1) { | ||
203 | const indent = indentMap.get(start - 1); | ||
204 | if (!indent || indent < currentIndent) { | ||
205 | break; | ||
206 | } | ||
207 | } | ||
208 | |||
209 | for (end = currentLineNo; ; end += 1) { | ||
210 | const indent = indentMap.get(end + 1); | ||
211 | if (!indent || indent < currentIndent) { | ||
212 | break; | ||
213 | } | ||
214 | } | ||
215 | |||
216 | return { start, end, activeIndent: currentIndent }; | ||
217 | } | ||
218 | /** | ||
219 | * Adds indentation markers to all lines within view. | ||
220 | */ | ||
221 | function addIndentationMarkers(view: EditorView) { | ||
222 | const indentSize = getIndentUnit(view.state); | ||
223 | const indentSizeMap = new Map</* lineNumber */ number, number>(); | ||
224 | const decorations: Array<IndentationMarkerDesc> = []; | ||
225 | |||
226 | view.visibleRanges.forEach(({ from, to }) => { | ||
227 | let pos = from; | ||
228 | |||
229 | let prevIndentMarkers = 0; | ||
230 | let nextIndentMarkers = 0; | ||
231 | let nextNonEmptyLine = 0; | ||
232 | |||
233 | while (pos <= to) { | ||
234 | const line = view.state.doc.lineAt(pos); | ||
235 | const { text } = line; | ||
236 | |||
237 | // If a line is empty, we match the indentation according | ||
238 | // to a heuristic based on the indentations of the | ||
239 | // previous and next non-empty lines. | ||
240 | if (text.trim().length === 0) { | ||
241 | // To retrieve the next non-empty indentation level, | ||
242 | // we perform a lookahead and cache the result. | ||
243 | if (nextNonEmptyLine < line.number) { | ||
244 | const [nextLine, nextIndent] = findNextNonEmptyLineAndIndentLevel( | ||
245 | view.state.doc, | ||
246 | line.number + 1, | ||
247 | indentSize, | ||
248 | ); | ||
249 | |||
250 | nextNonEmptyLine = nextLine; | ||
251 | nextIndentMarkers = nextIndent; | ||
252 | } | ||
253 | |||
254 | const numIndentMarkers = getNumIndentMarkersForEmptyLine( | ||
255 | prevIndentMarkers, | ||
256 | nextIndentMarkers, | ||
257 | ); | ||
258 | |||
259 | // Add the indent widget and move on to next line | ||
260 | indentSizeMap.set(line.number, numIndentMarkers); | ||
261 | decorations.push({ | ||
262 | from: pos, | ||
263 | to: pos, | ||
264 | lineNumber: line.number, | ||
265 | create: (activeIndentIndex) => | ||
266 | Decoration.widget({ | ||
267 | widget: new IndentationWidget( | ||
268 | numIndentMarkers, | ||
269 | indentSize, | ||
270 | activeIndentIndex, | ||
271 | ), | ||
272 | }), | ||
273 | }); | ||
274 | } else { | ||
275 | const indices: Array<number> = []; | ||
276 | |||
277 | prevIndentMarkers = getNumIndentMarkersForNonEmptyLine( | ||
278 | text, | ||
279 | indentSize, | ||
280 | (char) => indices.push(char), | ||
281 | ); | ||
282 | |||
283 | indentSizeMap.set(line.number, indices.length); | ||
284 | decorations.push( | ||
285 | ...indices.map( | ||
286 | (char, i): IndentationMarkerDesc => ({ | ||
287 | from: line.from + char, | ||
288 | to: line.from + char + 1, | ||
289 | lineNumber: line.number, | ||
290 | create: (activeIndentIndex) => | ||
291 | activeIndentIndex === i | ||
292 | ? activeIndentationMark | ||
293 | : indentationMark, | ||
294 | }), | ||
295 | ), | ||
296 | ); | ||
297 | } | ||
298 | |||
299 | // Move on to the next line | ||
300 | pos = line.to + 1; | ||
301 | } | ||
302 | }); | ||
303 | |||
304 | const activeBlockRange = getLinesWithActiveIndentMarker( | ||
305 | view.state, | ||
306 | indentSizeMap, | ||
307 | ); | ||
308 | |||
309 | return RangeSet.of<Decoration>( | ||
310 | Array.from(decorations).map(({ lineNumber, from, to, create }) => { | ||
311 | const activeIndent = | ||
312 | lineNumber >= activeBlockRange.start && | ||
313 | lineNumber <= activeBlockRange.end | ||
314 | ? activeBlockRange.activeIndent - 1 | ||
315 | : undefined; | ||
316 | |||
317 | return { from, to, value: create(activeIndent) }; | ||
318 | }), | ||
319 | true, | ||
320 | ); | ||
321 | } | ||
322 | |||
323 | export default function indentationMarkerViewPlugin() { | ||
324 | return ViewPlugin.define<PluginValue & { decorations: RangeSet<Decoration> }>( | ||
325 | (view) => ({ | ||
326 | decorations: addIndentationMarkers(view), | ||
327 | update(update) { | ||
328 | if ( | ||
329 | update.docChanged || | ||
330 | update.viewportChanged || | ||
331 | update.selectionSet | ||
332 | ) { | ||
333 | this.decorations = addIndentationMarkers(update.view); | ||
334 | } | ||
335 | }, | ||
336 | }), | ||
337 | { | ||
338 | decorations: (v) => v.decorations, | ||
339 | }, | ||
340 | ); | ||
341 | } | ||
diff --git a/subprojects/frontend/src/editor/scrollbarViewPlugin.ts b/subprojects/frontend/src/editor/scrollbarViewPlugin.ts deleted file mode 100644 index f54251a9..00000000 --- a/subprojects/frontend/src/editor/scrollbarViewPlugin.ts +++ /dev/null | |||
@@ -1,358 +0,0 @@ | |||
1 | import { EditorSelection } from '@codemirror/state'; | ||
2 | import { | ||
3 | type EditorView, | ||
4 | type PluginValue, | ||
5 | ViewPlugin, | ||
6 | } from '@codemirror/view'; | ||
7 | import { reaction } from 'mobx'; | ||
8 | |||
9 | import type EditorStore from './EditorStore'; | ||
10 | import { getDiagnostics } from './exposeDiagnostics'; | ||
11 | import findOccurrences from './findOccurrences'; | ||
12 | |||
13 | export const HOLDER_CLASS = 'cm-scroller-holder'; | ||
14 | export const SPACER_CLASS = 'cm-scroller-spacer'; | ||
15 | export const TRACK_CLASS = 'cm-scroller-track'; | ||
16 | export const THUMB_CLASS = 'cm-scroller-thumb'; | ||
17 | export const THUMB_ACTIVE_CLASS = 'active'; | ||
18 | export const GUTTER_DECORATION_CLASS = 'cm-scroller-gutter-decoration'; | ||
19 | export const TOP_DECORATION_CLASS = 'cm-scroller-top-decoration'; | ||
20 | export const ANNOTATION_SELECTION_CLASS = 'cm-scroller-selection'; | ||
21 | export const ANNOTATION_DIAGNOSTIC_CLASS = 'cm-scroller-diagnostic'; | ||
22 | export const ANNOTATION_OCCURRENCE_CLASS = 'cm-scroller-occurrence'; | ||
23 | export const SHADOW_WIDTH = 10; | ||
24 | export const SCROLLBAR_WIDTH = 12; | ||
25 | export const ANNOTATION_WIDTH = SCROLLBAR_WIDTH / 2; | ||
26 | export const MIN_ANNOTATION_HEIGHT = 1; | ||
27 | |||
28 | function createScrollbar( | ||
29 | holder: HTMLElement, | ||
30 | direction: 'x' | 'y', | ||
31 | touchCallback: (offsetX: number, offsetY: number) => void, | ||
32 | moveCallback: (movementX: number, movementY: number) => void, | ||
33 | ): { track: HTMLElement; thumb: HTMLElement } { | ||
34 | const track = holder.ownerDocument.createElement('div'); | ||
35 | track.className = `${TRACK_CLASS} ${TRACK_CLASS}-${direction}`; | ||
36 | holder.appendChild(track); | ||
37 | |||
38 | const thumb = holder.ownerDocument.createElement('div'); | ||
39 | thumb.className = `${THUMB_CLASS} ${THUMB_CLASS}-${direction}`; | ||
40 | track.appendChild(thumb); | ||
41 | |||
42 | let pointerId: number | undefined; | ||
43 | track.addEventListener('pointerdown', (event) => { | ||
44 | if (pointerId !== undefined) { | ||
45 | event.preventDefault(); | ||
46 | return; | ||
47 | } | ||
48 | ({ pointerId } = event); | ||
49 | thumb.classList.add(THUMB_ACTIVE_CLASS); | ||
50 | if (event.target === thumb) { | ||
51 | // Prevent implicit pointer capture on mobile. | ||
52 | thumb.releasePointerCapture(pointerId); | ||
53 | } else { | ||
54 | touchCallback(event.offsetX, event.offsetY); | ||
55 | } | ||
56 | track.setPointerCapture(pointerId); | ||
57 | }); | ||
58 | |||
59 | track.addEventListener('pointermove', (event) => { | ||
60 | if (event.pointerId !== pointerId) { | ||
61 | return; | ||
62 | } | ||
63 | moveCallback(event.movementX, event.movementY); | ||
64 | event.preventDefault(); | ||
65 | }); | ||
66 | |||
67 | function scrollEnd(event: PointerEvent) { | ||
68 | if (event.pointerId !== pointerId) { | ||
69 | return; | ||
70 | } | ||
71 | pointerId = undefined; | ||
72 | thumb.classList.remove(THUMB_ACTIVE_CLASS); | ||
73 | } | ||
74 | |||
75 | track.addEventListener('pointerup', scrollEnd, { passive: true }); | ||
76 | track.addEventListener('pointercancel', scrollEnd, { passive: true }); | ||
77 | |||
78 | return { track, thumb }; | ||
79 | } | ||
80 | |||
81 | function rebuildAnnotations( | ||
82 | view: EditorView, | ||
83 | scrollHeight: number, | ||
84 | trackYHeight: number, | ||
85 | holder: HTMLElement, | ||
86 | annotations: HTMLDivElement[], | ||
87 | ) { | ||
88 | const { state } = view; | ||
89 | const overlayAnnotationsHeight = | ||
90 | (view.contentHeight / scrollHeight) * trackYHeight; | ||
91 | const lineHeight = overlayAnnotationsHeight / state.doc.lines; | ||
92 | |||
93 | let i = 0; | ||
94 | |||
95 | function getOrCreateAnnotation(from: number, to?: number): HTMLDivElement { | ||
96 | const startLine = state.doc.lineAt(from).number; | ||
97 | const endLine = to === undefined ? startLine : state.doc.lineAt(to).number; | ||
98 | const top = (startLine - 1) * lineHeight; | ||
99 | const height = Math.max( | ||
100 | MIN_ANNOTATION_HEIGHT, | ||
101 | Math.max(1, endLine - startLine) * lineHeight, | ||
102 | ); | ||
103 | |||
104 | let annotation: HTMLDivElement | undefined; | ||
105 | if (i < annotations.length) { | ||
106 | annotation = annotations[i]; | ||
107 | } | ||
108 | if (annotation === undefined) { | ||
109 | annotation = holder.ownerDocument.createElement('div'); | ||
110 | annotations.push(annotation); | ||
111 | holder.appendChild(annotation); | ||
112 | } | ||
113 | i += 1; | ||
114 | |||
115 | annotation.style.top = `${top}px`; | ||
116 | annotation.style.height = `${height}px`; | ||
117 | |||
118 | return annotation; | ||
119 | } | ||
120 | |||
121 | state.selection.ranges.forEach(({ head }) => { | ||
122 | const selectionAnnotation = getOrCreateAnnotation(head); | ||
123 | selectionAnnotation.className = ANNOTATION_SELECTION_CLASS; | ||
124 | selectionAnnotation.style.width = `${SCROLLBAR_WIDTH}px`; | ||
125 | }); | ||
126 | |||
127 | const diagnosticsIter = getDiagnostics(state).iter(); | ||
128 | while (diagnosticsIter.value !== null) { | ||
129 | const diagnosticAnnotation = getOrCreateAnnotation( | ||
130 | diagnosticsIter.from, | ||
131 | diagnosticsIter.to, | ||
132 | ); | ||
133 | diagnosticAnnotation.className = `${ANNOTATION_DIAGNOSTIC_CLASS} ${ANNOTATION_DIAGNOSTIC_CLASS}-${diagnosticsIter.value.severity}`; | ||
134 | diagnosticAnnotation.style.width = `${ANNOTATION_WIDTH}px`; | ||
135 | diagnosticsIter.next(); | ||
136 | } | ||
137 | |||
138 | const occurrences = view.state.field(findOccurrences); | ||
139 | const occurrencesIter = occurrences.iter(); | ||
140 | while (occurrencesIter.value !== null) { | ||
141 | const occurrenceAnnotation = getOrCreateAnnotation( | ||
142 | occurrencesIter.from, | ||
143 | occurrencesIter.to, | ||
144 | ); | ||
145 | occurrenceAnnotation.className = ANNOTATION_OCCURRENCE_CLASS; | ||
146 | occurrenceAnnotation.style.width = `${ANNOTATION_WIDTH}px`; | ||
147 | occurrenceAnnotation.style.right = `${ANNOTATION_WIDTH}px`; | ||
148 | occurrencesIter.next(); | ||
149 | } | ||
150 | |||
151 | annotations | ||
152 | .splice(i) | ||
153 | .forEach((staleAnnotation) => holder.removeChild(staleAnnotation)); | ||
154 | } | ||
155 | |||
156 | export default function scrollbarViewPlugin( | ||
157 | editorStore: EditorStore, | ||
158 | ): ViewPlugin<PluginValue> { | ||
159 | return ViewPlugin.define((view) => { | ||
160 | const { scrollDOM } = view; | ||
161 | const { ownerDocument, parentElement: parentDOM } = scrollDOM; | ||
162 | if (parentDOM === null) { | ||
163 | return {}; | ||
164 | } | ||
165 | |||
166 | const holder = ownerDocument.createElement('div'); | ||
167 | holder.className = HOLDER_CLASS; | ||
168 | parentDOM.replaceChild(holder, scrollDOM); | ||
169 | holder.appendChild(scrollDOM); | ||
170 | |||
171 | const spacer = ownerDocument.createElement('div'); | ||
172 | spacer.className = SPACER_CLASS; | ||
173 | scrollDOM.insertBefore(spacer, scrollDOM.firstChild); | ||
174 | |||
175 | let gutterWidth = 0; | ||
176 | |||
177 | scrollDOM.addEventListener('click', (event) => { | ||
178 | const scrollX = scrollDOM.scrollLeft + event.offsetX; | ||
179 | const scrollY = scrollDOM.scrollTop + event.offsetY; | ||
180 | if (scrollX > gutterWidth && scrollY > view.contentHeight) { | ||
181 | event.preventDefault(); | ||
182 | view.focus(); | ||
183 | editorStore.dispatch({ | ||
184 | scrollIntoView: true, | ||
185 | selection: EditorSelection.create([ | ||
186 | EditorSelection.cursor(view.state.doc.length), | ||
187 | ]), | ||
188 | }); | ||
189 | } | ||
190 | }); | ||
191 | |||
192 | let factorY = 1; | ||
193 | let factorX = 1; | ||
194 | |||
195 | const { track: trackY, thumb: thumbY } = createScrollbar( | ||
196 | holder, | ||
197 | 'y', | ||
198 | (_offsetX, offsetY) => { | ||
199 | const scaledOffset = offsetY / factorY; | ||
200 | const { height: scrollerHeight } = scrollDOM.getBoundingClientRect(); | ||
201 | const target = Math.max(0, scaledOffset - scrollerHeight / 2); | ||
202 | scrollDOM.scrollTo({ top: target }); | ||
203 | }, | ||
204 | (_movementX, movementY) => { | ||
205 | scrollDOM.scrollBy({ top: movementY / factorY }); | ||
206 | }, | ||
207 | ); | ||
208 | |||
209 | const { track: trackX, thumb: thumbX } = createScrollbar( | ||
210 | holder, | ||
211 | 'x', | ||
212 | (offsetX) => { | ||
213 | const scaledOffset = offsetX / factorX; | ||
214 | const { width: scrollerWidth } = scrollDOM.getBoundingClientRect(); | ||
215 | const target = Math.max(0, scaledOffset - scrollerWidth / 2); | ||
216 | scrollDOM.scrollTo({ left: target }); | ||
217 | }, | ||
218 | (movementX) => { | ||
219 | scrollDOM.scrollBy({ left: movementX / factorX }); | ||
220 | }, | ||
221 | ); | ||
222 | |||
223 | const gutterDecoration = ownerDocument.createElement('div'); | ||
224 | gutterDecoration.className = GUTTER_DECORATION_CLASS; | ||
225 | holder.appendChild(gutterDecoration); | ||
226 | |||
227 | const topDecoration = ownerDocument.createElement('div'); | ||
228 | topDecoration.className = TOP_DECORATION_CLASS; | ||
229 | holder.appendChild(topDecoration); | ||
230 | |||
231 | const disposePanelReaction = reaction( | ||
232 | () => editorStore.searchPanel.state, | ||
233 | (panelOpen) => { | ||
234 | topDecoration.style.display = panelOpen ? 'none' : 'block'; | ||
235 | }, | ||
236 | { fireImmediately: true }, | ||
237 | ); | ||
238 | |||
239 | let gutters: Element | undefined; | ||
240 | |||
241 | let firstRun = true; | ||
242 | let firstRunTimeout: number | undefined; | ||
243 | let requested = false; | ||
244 | let rebuildRequested = false; | ||
245 | |||
246 | const annotations: HTMLDivElement[] = []; | ||
247 | |||
248 | let observer: ResizeObserver | undefined; | ||
249 | |||
250 | function update() { | ||
251 | requested = false; | ||
252 | |||
253 | if (gutters === undefined) { | ||
254 | gutters = scrollDOM.querySelector('.cm-gutters') ?? undefined; | ||
255 | if (gutters !== undefined && observer !== undefined) { | ||
256 | observer.observe(gutters); | ||
257 | } | ||
258 | } | ||
259 | |||
260 | const { height: scrollerHeight, width: scrollerWidth } = | ||
261 | scrollDOM.getBoundingClientRect(); | ||
262 | const { scrollTop, scrollLeft, scrollWidth } = scrollDOM; | ||
263 | const scrollHeight = | ||
264 | view.contentHeight + scrollerHeight - view.defaultLineHeight; | ||
265 | if (firstRun) { | ||
266 | if (firstRunTimeout !== undefined) { | ||
267 | clearTimeout(firstRunTimeout); | ||
268 | } | ||
269 | // @ts-expect-error `@types/node` typings should not be in effect here. | ||
270 | firstRunTimeout = setTimeout(() => { | ||
271 | spacer.style.minHeight = `${scrollHeight}px`; | ||
272 | firstRun = false; | ||
273 | }, 0); | ||
274 | } else { | ||
275 | spacer.style.minHeight = `${scrollHeight}px`; | ||
276 | } | ||
277 | gutterWidth = gutters?.clientWidth ?? 0; | ||
278 | let trackYHeight = scrollerHeight; | ||
279 | |||
280 | // Prevent spurious horizontal scrollbar by rounding up to the nearest pixel. | ||
281 | if (scrollWidth > Math.ceil(scrollerWidth)) { | ||
282 | // Leave space for horizontal scrollbar. | ||
283 | trackYHeight -= SCROLLBAR_WIDTH; | ||
284 | // Alwalys leave space for annotation in the vertical scrollbar. | ||
285 | const trackXWidth = scrollerWidth - gutterWidth - SCROLLBAR_WIDTH; | ||
286 | const thumbWidth = trackXWidth * (scrollerWidth / scrollWidth); | ||
287 | factorX = (trackXWidth - thumbWidth) / (scrollWidth - scrollerWidth); | ||
288 | trackY.style.bottom = `${SCROLLBAR_WIDTH}px`; | ||
289 | trackX.style.display = 'block'; | ||
290 | trackX.style.left = `${gutterWidth}px`; | ||
291 | thumbX.style.width = `${thumbWidth}px`; | ||
292 | thumbX.style.left = `${scrollLeft * factorX}px`; | ||
293 | scrollDOM.style.overflowX = 'scroll'; | ||
294 | } else { | ||
295 | trackY.style.bottom = '0px'; | ||
296 | trackX.style.display = 'none'; | ||
297 | scrollDOM.style.overflowX = 'hidden'; | ||
298 | } | ||
299 | |||
300 | const thumbHeight = trackYHeight * (scrollerHeight / scrollHeight); | ||
301 | factorY = (trackYHeight - thumbHeight) / (scrollHeight - scrollerHeight); | ||
302 | thumbY.style.display = 'block'; | ||
303 | thumbY.style.height = `${thumbHeight}px`; | ||
304 | thumbY.style.top = `${scrollTop * factorY}px`; | ||
305 | |||
306 | gutterDecoration.style.left = `${gutterWidth}px`; | ||
307 | gutterDecoration.style.width = `${Math.max( | ||
308 | 0, | ||
309 | Math.min(scrollLeft, SHADOW_WIDTH), | ||
310 | )}px`; | ||
311 | |||
312 | topDecoration.style.height = `${Math.max( | ||
313 | 0, | ||
314 | Math.min(scrollTop, SHADOW_WIDTH), | ||
315 | )}px`; | ||
316 | |||
317 | if (rebuildRequested) { | ||
318 | rebuildAnnotations( | ||
319 | view, | ||
320 | scrollHeight, | ||
321 | trackYHeight, | ||
322 | holder, | ||
323 | annotations, | ||
324 | ); | ||
325 | rebuildRequested = false; | ||
326 | } | ||
327 | } | ||
328 | |||
329 | function requestUpdate() { | ||
330 | if (!requested) { | ||
331 | requested = true; | ||
332 | view.requestMeasure({ read: update }); | ||
333 | } | ||
334 | } | ||
335 | |||
336 | function requestRebuild() { | ||
337 | requestUpdate(); | ||
338 | rebuildRequested = true; | ||
339 | } | ||
340 | |||
341 | observer = new ResizeObserver(requestRebuild); | ||
342 | observer.observe(holder); | ||
343 | |||
344 | scrollDOM.addEventListener('scroll', requestUpdate); | ||
345 | |||
346 | requestRebuild(); | ||
347 | |||
348 | return { | ||
349 | update: requestRebuild, | ||
350 | destroy() { | ||
351 | disposePanelReaction(); | ||
352 | observer?.disconnect(); | ||
353 | scrollDOM.removeEventListener('scroll', requestUpdate); | ||
354 | parentDOM.replaceChild(holder, holder); | ||
355 | }, | ||
356 | }; | ||
357 | }); | ||
358 | } | ||
diff --git a/subprojects/frontend/src/editor/semanticHighlighting.ts b/subprojects/frontend/src/editor/semanticHighlighting.ts index 2c1bd67d..1f2e564c 100644 --- a/subprojects/frontend/src/editor/semanticHighlighting.ts +++ b/subprojects/frontend/src/editor/semanticHighlighting.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import { RangeSet, type TransactionSpec } from '@codemirror/state'; | 7 | import { RangeSet, type TransactionSpec } from '@codemirror/state'; |
2 | import { Decoration } from '@codemirror/view'; | 8 | import { Decoration } from '@codemirror/view'; |
3 | 9 | ||
diff --git a/subprojects/frontend/src/index.tsx b/subprojects/frontend/src/index.tsx index 29b2b196..cb11e6c3 100644 --- a/subprojects/frontend/src/index.tsx +++ b/subprojects/frontend/src/index.tsx | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import { configure } from 'mobx'; | 7 | import { configure } from 'mobx'; |
2 | import { type Root, createRoot } from 'react-dom/client'; | 8 | import { type Root, createRoot } from 'react-dom/client'; |
3 | 9 | ||
diff --git a/subprojects/frontend/src/language/folding.ts b/subprojects/frontend/src/language/folding.ts index 4dabfa27..b4d4ca22 100644 --- a/subprojects/frontend/src/language/folding.ts +++ b/subprojects/frontend/src/language/folding.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import type { EditorState } from '@codemirror/state'; | 7 | import type { EditorState } from '@codemirror/state'; |
2 | import type { SyntaxNode } from '@lezer/common'; | 8 | import type { SyntaxNode } from '@lezer/common'; |
3 | 9 | ||
diff --git a/subprojects/frontend/src/language/indentation.ts b/subprojects/frontend/src/language/indentation.ts index a0f7032d..8446d7fa 100644 --- a/subprojects/frontend/src/language/indentation.ts +++ b/subprojects/frontend/src/language/indentation.ts | |||
@@ -1,3 +1,10 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2018-2021 by Marijn Haverbeke <marijnh@gmail.com> and others | ||
3 | * Copyright (C) 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
4 | * | ||
5 | * SPDX-License-Identifier: MIT OR EPL-2.0 | ||
6 | */ | ||
7 | |||
1 | import type { TreeIndentContext } from '@codemirror/language'; | 8 | import type { TreeIndentContext } from '@codemirror/language'; |
2 | 9 | ||
3 | /** | 10 | /** |
diff --git a/subprojects/frontend/src/language/problem.grammar b/subprojects/frontend/src/language/problem.grammar index 704badab..a7b1fb0a 100644 --- a/subprojects/frontend/src/language/problem.grammar +++ b/subprojects/frontend/src/language/problem.grammar | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | @detectDelim | 7 | @detectDelim |
2 | 8 | ||
3 | @external prop implicitCompletion from './props' | 9 | @external prop implicitCompletion from './props' |
diff --git a/subprojects/frontend/src/language/problemLanguageSupport.ts b/subprojects/frontend/src/language/problemLanguageSupport.ts index c3ae7ed9..2121e05f 100644 --- a/subprojects/frontend/src/language/problemLanguageSupport.ts +++ b/subprojects/frontend/src/language/problemLanguageSupport.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import { | 7 | import { |
2 | foldInside, | 8 | foldInside, |
3 | foldNodeProp, | 9 | foldNodeProp, |
diff --git a/subprojects/frontend/src/language/props.ts b/subprojects/frontend/src/language/props.ts index 65392e75..aa67145a 100644 --- a/subprojects/frontend/src/language/props.ts +++ b/subprojects/frontend/src/language/props.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | /* eslint-disable import/prefer-default-export -- Lezer needs non-default exports */ | 7 | /* eslint-disable import/prefer-default-export -- Lezer needs non-default exports */ |
2 | 8 | ||
3 | import { NodeProp } from '@lezer/common'; | 9 | import { NodeProp } from '@lezer/common'; |
diff --git a/subprojects/frontend/src/theme/ThemeProvider.tsx b/subprojects/frontend/src/theme/ThemeProvider.tsx index 7bda1ede..78146f25 100644 --- a/subprojects/frontend/src/theme/ThemeProvider.tsx +++ b/subprojects/frontend/src/theme/ThemeProvider.tsx | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import { | 7 | import { |
2 | alpha, | 8 | alpha, |
3 | createTheme, | 9 | createTheme, |
@@ -6,7 +12,6 @@ import { | |||
6 | type ThemeOptions, | 12 | type ThemeOptions, |
7 | ThemeProvider as MaterialUiThemeProvider, | 13 | ThemeProvider as MaterialUiThemeProvider, |
8 | type TypographyStyle, | 14 | type TypographyStyle, |
9 | useTheme, | ||
10 | type CSSObject, | 15 | type CSSObject, |
11 | } from '@mui/material/styles'; | 16 | } from '@mui/material/styles'; |
12 | import { observer } from 'mobx-react-lite'; | 17 | import { observer } from 'mobx-react-lite'; |
@@ -70,7 +75,7 @@ function createResponsiveTheme( | |||
70 | ...options, | 75 | ...options, |
71 | typography: { | 76 | typography: { |
72 | fontFamily: | 77 | fontFamily: |
73 | '"InterVariable", "Inter", "Roboto", "Helvetica", "Arial", sans-serif', | 78 | '"Inter Variable", "Inter", "Roboto", "Helvetica", "Arial", sans-serif', |
74 | fontWeightMedium: 600, | 79 | fontWeightMedium: 600, |
75 | fontWeightEditorNormal: 400, | 80 | fontWeightEditorNormal: 400, |
76 | fontWeightEditorBold: 700, | 81 | fontWeightEditorBold: 700, |
@@ -80,7 +85,7 @@ function createResponsiveTheme( | |||
80 | }, | 85 | }, |
81 | editor: { | 86 | editor: { |
82 | fontFamily: | 87 | fontFamily: |
83 | '"JetBrains MonoVariable", "JetBrains Mono", "Cascadia Code", "Fira Code", monospace', | 88 | '"JetBrains Mono Variable", "JetBrains Mono", "Cascadia Code", "Fira Code", monospace', |
84 | fontFeatureSettings: '"liga", "calt"', | 89 | fontFeatureSettings: '"liga", "calt"', |
85 | // `rem` for JetBrains MonoVariable make the text too large in Safari. | 90 | // `rem` for JetBrains MonoVariable make the text too large in Safari. |
86 | fontSize: '16px', | 91 | fontSize: '16px', |
@@ -350,15 +355,14 @@ export function ContrastThemeProvider({ | |||
350 | }: { | 355 | }: { |
351 | children?: ReactNode; | 356 | children?: ReactNode; |
352 | }): JSX.Element { | 357 | }): JSX.Element { |
353 | const theme = useTheme(); | ||
354 | const contrastTheme = useContext(ContrastThemeContext); | 358 | const contrastTheme = useContext(ContrastThemeContext); |
355 | if (!contrastTheme) { | 359 | if (!contrastTheme) { |
356 | throw new Error('ContrastThemeProvider must be used within ThemeProvider'); | 360 | throw new Error('ContrastThemeProvider must be used within ThemeProvider'); |
357 | } | 361 | } |
358 | return ( | 362 | return ( |
359 | <ThemeAndContrastThemeProvider theme={contrastTheme} contrastTheme={theme}> | 363 | <MaterialUiThemeProvider theme={contrastTheme}> |
360 | {children} | 364 | {children} |
361 | </ThemeAndContrastThemeProvider> | 365 | </MaterialUiThemeProvider> |
362 | ); | 366 | ); |
363 | } | 367 | } |
364 | 368 | ||
@@ -378,7 +382,7 @@ const ThemeProvider = observer(function ThemeProvider({ | |||
378 | return ( | 382 | return ( |
379 | <ThemeAndContrastThemeProvider | 383 | <ThemeAndContrastThemeProvider |
380 | theme={darkMode ? darkTheme : lightTheme} | 384 | theme={darkMode ? darkTheme : lightTheme} |
381 | contrastTheme={darkMode ? lightTheme : darkTheme} | 385 | contrastTheme={darkTheme} |
382 | > | 386 | > |
383 | {children} | 387 | {children} |
384 | </ThemeAndContrastThemeProvider> | 388 | </ThemeAndContrastThemeProvider> |
diff --git a/subprojects/frontend/src/theme/ThemeStore.ts b/subprojects/frontend/src/theme/ThemeStore.ts index e09d8d99..7c657449 100644 --- a/subprojects/frontend/src/theme/ThemeStore.ts +++ b/subprojects/frontend/src/theme/ThemeStore.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import { makeAutoObservable } from 'mobx'; | 7 | import { makeAutoObservable } from 'mobx'; |
2 | 8 | ||
3 | export enum ThemePreference { | 9 | export enum ThemePreference { |
diff --git a/subprojects/frontend/src/utils/CancelledError.ts b/subprojects/frontend/src/utils/CancelledError.ts index ee23676f..96b67af7 100644 --- a/subprojects/frontend/src/utils/CancelledError.ts +++ b/subprojects/frontend/src/utils/CancelledError.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | export default class CancelledError extends Error { | 7 | export default class CancelledError extends Error { |
2 | constructor(message = 'Operation cancelled') { | 8 | constructor(message = 'Operation cancelled') { |
3 | super(message); | 9 | super(message); |
diff --git a/subprojects/frontend/src/utils/PendingTask.ts b/subprojects/frontend/src/utils/PendingTask.ts index fd52cef1..80d1a346 100644 --- a/subprojects/frontend/src/utils/PendingTask.ts +++ b/subprojects/frontend/src/utils/PendingTask.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import TimeoutError from './TimeoutError'; | 7 | import TimeoutError from './TimeoutError'; |
2 | import getLogger from './getLogger'; | 8 | import getLogger from './getLogger'; |
3 | 9 | ||
@@ -20,7 +26,6 @@ export default class PendingTask<T> { | |||
20 | ) { | 26 | ) { |
21 | this.resolveCallback = resolveCallback; | 27 | this.resolveCallback = resolveCallback; |
22 | this.rejectCallback = rejectCallback; | 28 | this.rejectCallback = rejectCallback; |
23 | // @ts-expect-error See https://github.com/mobxjs/mobx/issues/3582 on `@types/node` pollution | ||
24 | this.timeout = setTimeout(() => { | 29 | this.timeout = setTimeout(() => { |
25 | if (!this.resolved) { | 30 | if (!this.resolved) { |
26 | this.reject(new TimeoutError()); | 31 | this.reject(new TimeoutError()); |
diff --git a/subprojects/frontend/src/utils/PriorityMutex.ts b/subprojects/frontend/src/utils/PriorityMutex.ts index 78736141..c1215c76 100644 --- a/subprojects/frontend/src/utils/PriorityMutex.ts +++ b/subprojects/frontend/src/utils/PriorityMutex.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import CancelledError from './CancelledError'; | 7 | import CancelledError from './CancelledError'; |
2 | import PendingTask from './PendingTask'; | 8 | import PendingTask from './PendingTask'; |
3 | import getLogger from './getLogger'; | 9 | import getLogger from './getLogger'; |
diff --git a/subprojects/frontend/src/utils/TimeoutError.ts b/subprojects/frontend/src/utils/TimeoutError.ts index eb800f40..21365502 100644 --- a/subprojects/frontend/src/utils/TimeoutError.ts +++ b/subprojects/frontend/src/utils/TimeoutError.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | export default class TimeoutError extends Error { | 7 | export default class TimeoutError extends Error { |
2 | constructor() { | 8 | constructor() { |
3 | super('Operation timed out'); | 9 | super('Operation timed out'); |
diff --git a/subprojects/frontend/src/utils/getLogger.ts b/subprojects/frontend/src/utils/getLogger.ts index 301fd76d..09b0b17f 100644 --- a/subprojects/frontend/src/utils/getLogger.ts +++ b/subprojects/frontend/src/utils/getLogger.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import styles, { type CSPair } from 'ansi-styles'; | 7 | import styles, { type CSPair } from 'ansi-styles'; |
2 | import log from 'loglevel'; | 8 | import log from 'loglevel'; |
3 | import prefix from 'loglevel-plugin-prefix'; | 9 | import prefix from 'loglevel-plugin-prefix'; |
diff --git a/subprojects/frontend/src/utils/useDelayedSnackbar.ts b/subprojects/frontend/src/utils/useDelayedSnackbar.ts index 54716c0c..3d6df3e3 100644 --- a/subprojects/frontend/src/utils/useDelayedSnackbar.ts +++ b/subprojects/frontend/src/utils/useDelayedSnackbar.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import { | 7 | import { |
2 | useSnackbar, | 8 | useSnackbar, |
3 | type SnackbarKey, | 9 | type SnackbarKey, |
@@ -21,7 +27,6 @@ export default function useDelayedSnackbar( | |||
21 | delay = defaultDelay, | 27 | delay = defaultDelay, |
22 | ) => { | 28 | ) => { |
23 | let key: SnackbarKey | undefined; | 29 | let key: SnackbarKey | undefined; |
24 | // @ts-expect-error See https://github.com/mobxjs/mobx/issues/3582 on `@types/node` pollution | ||
25 | let timeout: number | undefined = setTimeout(() => { | 30 | let timeout: number | undefined = setTimeout(() => { |
26 | timeout = undefined; | 31 | timeout = undefined; |
27 | key = enqueueSnackbar(message, options); | 32 | key = enqueueSnackbar(message, options); |
diff --git a/subprojects/frontend/src/xtext/BackendConfig.ts b/subprojects/frontend/src/xtext/BackendConfig.ts index 41737c0b..4c7eac5f 100644 --- a/subprojects/frontend/src/xtext/BackendConfig.ts +++ b/subprojects/frontend/src/xtext/BackendConfig.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | /* eslint-disable @typescript-eslint/no-redeclare -- Declare types with their companion objects */ | 7 | /* eslint-disable @typescript-eslint/no-redeclare -- Declare types with their companion objects */ |
2 | 8 | ||
3 | import { z } from 'zod'; | 9 | import { z } from 'zod'; |
diff --git a/subprojects/frontend/src/xtext/ContentAssistService.ts b/subprojects/frontend/src/xtext/ContentAssistService.ts index 78f61c06..fd30c4f9 100644 --- a/subprojects/frontend/src/xtext/ContentAssistService.ts +++ b/subprojects/frontend/src/xtext/ContentAssistService.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import type { | 7 | import type { |
2 | Completion, | 8 | Completion, |
3 | CompletionContext, | 9 | CompletionContext, |
diff --git a/subprojects/frontend/src/xtext/HighlightingService.ts b/subprojects/frontend/src/xtext/HighlightingService.ts index a126ee40..447f1401 100644 --- a/subprojects/frontend/src/xtext/HighlightingService.ts +++ b/subprojects/frontend/src/xtext/HighlightingService.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import type EditorStore from '../editor/EditorStore'; | 7 | import type EditorStore from '../editor/EditorStore'; |
2 | import type { IHighlightRange } from '../editor/semanticHighlighting'; | 8 | import type { IHighlightRange } from '../editor/semanticHighlighting'; |
3 | 9 | ||
diff --git a/subprojects/frontend/src/xtext/OccurrencesService.ts b/subprojects/frontend/src/xtext/OccurrencesService.ts index fc72ead2..c9c6c699 100644 --- a/subprojects/frontend/src/xtext/OccurrencesService.ts +++ b/subprojects/frontend/src/xtext/OccurrencesService.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import type { Transaction } from '@codemirror/state'; | 7 | import type { Transaction } from '@codemirror/state'; |
2 | import { debounce } from 'lodash-es'; | 8 | import { debounce } from 'lodash-es'; |
3 | import ms from 'ms'; | 9 | import ms from 'ms'; |
diff --git a/subprojects/frontend/src/xtext/UpdateService.ts b/subprojects/frontend/src/xtext/UpdateService.ts index 63e28652..ee5ebde2 100644 --- a/subprojects/frontend/src/xtext/UpdateService.ts +++ b/subprojects/frontend/src/xtext/UpdateService.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import type { ChangeDesc, Transaction } from '@codemirror/state'; | 7 | import type { ChangeDesc, Transaction } from '@codemirror/state'; |
2 | import { debounce } from 'lodash-es'; | 8 | import { debounce } from 'lodash-es'; |
3 | import { nanoid } from 'nanoid'; | 9 | import { nanoid } from 'nanoid'; |
diff --git a/subprojects/frontend/src/xtext/UpdateStateTracker.ts b/subprojects/frontend/src/xtext/UpdateStateTracker.ts index 5d4ce49e..4ce93ed6 100644 --- a/subprojects/frontend/src/xtext/UpdateStateTracker.ts +++ b/subprojects/frontend/src/xtext/UpdateStateTracker.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import { | 7 | import { |
2 | type ChangeDesc, | 8 | type ChangeDesc, |
3 | ChangeSet, | 9 | ChangeSet, |
diff --git a/subprojects/frontend/src/xtext/ValidationService.ts b/subprojects/frontend/src/xtext/ValidationService.ts index 72414590..64fb63eb 100644 --- a/subprojects/frontend/src/xtext/ValidationService.ts +++ b/subprojects/frontend/src/xtext/ValidationService.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import type { Diagnostic } from '@codemirror/lint'; | 7 | import type { Diagnostic } from '@codemirror/lint'; |
2 | 8 | ||
3 | import type EditorStore from '../editor/EditorStore'; | 9 | import type EditorStore from '../editor/EditorStore'; |
diff --git a/subprojects/frontend/src/xtext/XtextClient.ts b/subprojects/frontend/src/xtext/XtextClient.ts index 14fb2430..e8181af0 100644 --- a/subprojects/frontend/src/xtext/XtextClient.ts +++ b/subprojects/frontend/src/xtext/XtextClient.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import type { | 7 | import type { |
2 | CompletionContext, | 8 | CompletionContext, |
3 | CompletionResult, | 9 | CompletionResult, |
diff --git a/subprojects/frontend/src/xtext/XtextWebSocketClient.ts b/subprojects/frontend/src/xtext/XtextWebSocketClient.ts index 6b734546..6bb7eec8 100644 --- a/subprojects/frontend/src/xtext/XtextWebSocketClient.ts +++ b/subprojects/frontend/src/xtext/XtextWebSocketClient.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import { createAtom, makeAutoObservable, observable } from 'mobx'; | 7 | import { createAtom, makeAutoObservable, observable } from 'mobx'; |
2 | import ms from 'ms'; | 8 | import ms from 'ms'; |
3 | import { nanoid } from 'nanoid'; | 9 | import { nanoid } from 'nanoid'; |
diff --git a/subprojects/frontend/src/xtext/fetchBackendConfig.ts b/subprojects/frontend/src/xtext/fetchBackendConfig.ts index 15e976d8..71ff2e63 100644 --- a/subprojects/frontend/src/xtext/fetchBackendConfig.ts +++ b/subprojects/frontend/src/xtext/fetchBackendConfig.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import BackendConfig, { ENDPOINT } from './BackendConfig'; | 7 | import BackendConfig, { ENDPOINT } from './BackendConfig'; |
2 | 8 | ||
3 | export default async function fetchBackendConfig(): Promise<BackendConfig> { | 9 | export default async function fetchBackendConfig(): Promise<BackendConfig> { |
diff --git a/subprojects/frontend/src/xtext/webSocketMachine.ts b/subprojects/frontend/src/xtext/webSocketMachine.ts index 216ed86a..2fb1f52f 100644 --- a/subprojects/frontend/src/xtext/webSocketMachine.ts +++ b/subprojects/frontend/src/xtext/webSocketMachine.ts | |||
@@ -1,5 +1,11 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import ms from 'ms'; | 7 | import ms from 'ms'; |
2 | import { actions, assign, createMachine, RaiseAction } from 'xstate'; | 8 | import { actions, assign, createMachine } from 'xstate'; |
3 | 9 | ||
4 | const { raise } = actions; | 10 | const { raise } = actions; |
5 | 11 | ||
@@ -217,16 +223,15 @@ export default createMachine( | |||
217 | ...context, | 223 | ...context, |
218 | errors: [], | 224 | errors: [], |
219 | })), | 225 | })), |
220 | // Workaround from https://github.com/statelyai/xstate/issues/1414#issuecomment-699972485 | ||
221 | raiseTimeoutError: raise({ | 226 | raiseTimeoutError: raise({ |
222 | type: 'ERROR', | 227 | type: 'ERROR', |
223 | message: 'Open timeout', | 228 | message: 'Open timeout', |
224 | }) as RaiseAction<WebSocketEvent>, | 229 | }), |
225 | raisePromiseRejectionError: (_context, { data }) => | 230 | raisePromiseRejectionError: (_context, { data }) => |
226 | raise({ | 231 | raise<WebSocketContext, WebSocketEvent>({ |
227 | type: 'ERROR', | 232 | type: 'ERROR', |
228 | message: data, | 233 | message: String(data), |
229 | }) as RaiseAction<WebSocketEvent>, | 234 | }), |
230 | }, | 235 | }, |
231 | }, | 236 | }, |
232 | ); | 237 | ); |
diff --git a/subprojects/frontend/src/xtext/xtextMessages.ts b/subprojects/frontend/src/xtext/xtextMessages.ts index ec7a2a31..bbbff064 100644 --- a/subprojects/frontend/src/xtext/xtextMessages.ts +++ b/subprojects/frontend/src/xtext/xtextMessages.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | /* eslint-disable @typescript-eslint/no-redeclare -- Declare types with their companion objects */ | 7 | /* eslint-disable @typescript-eslint/no-redeclare -- Declare types with their companion objects */ |
2 | 8 | ||
3 | import { z } from 'zod'; | 9 | import { z } from 'zod'; |
diff --git a/subprojects/frontend/src/xtext/xtextServiceResults.ts b/subprojects/frontend/src/xtext/xtextServiceResults.ts index e93c6714..d3b467ad 100644 --- a/subprojects/frontend/src/xtext/xtextServiceResults.ts +++ b/subprojects/frontend/src/xtext/xtextServiceResults.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | /* eslint-disable @typescript-eslint/no-redeclare -- Declare types with their companion objects */ | 7 | /* eslint-disable @typescript-eslint/no-redeclare -- Declare types with their companion objects */ |
2 | 8 | ||
3 | import { z } from 'zod'; | 9 | import { z } from 'zod'; |
diff --git a/subprojects/frontend/tsconfig.base.json b/subprojects/frontend/tsconfig.base.json index 585866f1..5ef50b5e 100644 --- a/subprojects/frontend/tsconfig.base.json +++ b/subprojects/frontend/tsconfig.base.json | |||
@@ -1,7 +1,41 @@ | |||
1 | /* | ||
2 | * Copyright (c) Microsoft Corporation. | ||
3 | * Copyright (c) 2023 The Refinery Authors <https://refinery.tools/> | ||
4 | * | ||
5 | * SPDX-License-Identifier: MIT OR EPL-2.0 | ||
6 | * | ||
7 | * This file is based on | ||
8 | * https://github.com/tsconfig/bases/blob/7db25a41bc5a9c0f66d91f6f3aa28438afcb2f18/bases/strictest.json | ||
9 | * but we moved it inside the project for better tooling support. | ||
10 | */ | ||
1 | { | 11 | { |
2 | "extends": "@tsconfig/node18-strictest-esm/tsconfig.json", | ||
3 | "compilerOptions": { | 12 | "compilerOptions": { |
4 | "useDefineForClassFields": true, | 13 | "strict": true, |
14 | "allowUnusedLabels": false, | ||
15 | "allowUnreachableCode": false, | ||
16 | "exactOptionalPropertyTypes": true, | ||
17 | "noFallthroughCasesInSwitch": true, | ||
18 | "noImplicitOverride": true, | ||
19 | "noImplicitReturns": true, | ||
20 | "noPropertyAccessFromIndexSignature": true, | ||
21 | "noUncheckedIndexedAccess": true, | ||
22 | "noUnusedLocals": true, | ||
23 | "noUnusedParameters": true, | ||
24 | // "verbatimModuleSyntax" is incompatible with `import` syntax in modules | ||
25 | // with CommonJS import resolution, so we use "isolatedModules" only. | ||
26 | // "verbatimModuleSyntax": false, | ||
5 | "isolatedModules": true, | 27 | "isolatedModules": true, |
28 | "checkJs": true, | ||
29 | "esModuleInterop": true, | ||
30 | "skipLibCheck": true, | ||
31 | "forceConsistentCasingInFileNames": true, | ||
32 | "useDefineForClassFields": true, | ||
33 | // Project-specific configuration below. | ||
34 | "module": "es2022", | ||
35 | "moduleResolution": "node", | ||
36 | "incremental": true, | ||
37 | "declaration": true, | ||
38 | "emitDeclarationOnly": true, | ||
39 | "outDir": "build/typescript" | ||
6 | } | 40 | } |
7 | } | 41 | } |
diff --git a/subprojects/frontend/tsconfig.json b/subprojects/frontend/tsconfig.json index 35abd789..06f6d8fe 100644 --- a/subprojects/frontend/tsconfig.json +++ b/subprojects/frontend/tsconfig.json | |||
@@ -1,8 +1,12 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | { | 6 | { |
2 | "extends": "./tsconfig.base.json", | 7 | "extends": "./tsconfig.base.json", |
3 | "compilerOptions": { | 8 | "compilerOptions": { |
4 | "jsx": "react-jsx", | 9 | "jsx": "react-jsx", |
5 | "noEmit": true, | ||
6 | "lib": ["DOM", "DOM.Iterable", "ES2022"], | 10 | "lib": ["DOM", "DOM.Iterable", "ES2022"], |
7 | "types": ["vite/client", "vite-plugin-pwa/client"] | 11 | "types": ["vite/client", "vite-plugin-pwa/client"] |
8 | }, | 12 | }, |
diff --git a/subprojects/frontend/tsconfig.node.json b/subprojects/frontend/tsconfig.node.json index f4908bcb..47feaf97 100644 --- a/subprojects/frontend/tsconfig.node.json +++ b/subprojects/frontend/tsconfig.node.json | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | { | 6 | { |
2 | "extends": "./tsconfig.base.json", | 7 | "extends": "./tsconfig.base.json", |
3 | "compilerOptions": { | 8 | "compilerOptions": { |
@@ -10,6 +15,7 @@ | |||
10 | "include": [ | 15 | "include": [ |
11 | ".eslintrc.cjs", | 16 | ".eslintrc.cjs", |
12 | "config/*.ts", | 17 | "config/*.ts", |
18 | "config/*.cjs", | ||
13 | "prettier.config.cjs", | 19 | "prettier.config.cjs", |
14 | "types/node", | 20 | "types/node", |
15 | "vite.config.ts" | 21 | "vite.config.ts" |
diff --git a/subprojects/frontend/tsconfig.shared.json b/subprojects/frontend/tsconfig.shared.json index b7e1de55..154fe122 100644 --- a/subprojects/frontend/tsconfig.shared.json +++ b/subprojects/frontend/tsconfig.shared.json | |||
@@ -1,13 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | { | 6 | { |
2 | "extends": "./tsconfig.base.json", | 7 | "extends": "./tsconfig.base.json", |
3 | "compilerOptions": { | 8 | "compilerOptions": { |
4 | "composite": true, | 9 | "composite": true, |
5 | "lib": ["ES2022"], | 10 | "lib": ["ES2022"], |
6 | "types": [], | 11 | "types": [], |
7 | "emitDeclarationOnly": true, | ||
8 | "outDir": "build/typescript" | ||
9 | }, | 12 | }, |
10 | "include": [ | 13 | "include": [ |
11 | "src/xtext/BackendConfig.ts", | 14 | "src/xtext/BackendConfig.ts" |
12 | ] | 15 | ] |
13 | } | 16 | } |
diff --git a/subprojects/frontend/types/ImportMeta.d.ts b/subprojects/frontend/types/ImportMeta.d.ts index c32b48f5..f5a32ef1 100644 --- a/subprojects/frontend/types/ImportMeta.d.ts +++ b/subprojects/frontend/types/ImportMeta.d.ts | |||
@@ -1,3 +1,10 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2019-present, Yuxi (Evan) You and Vite contributors | ||
3 | * Copyright (c) 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
4 | * | ||
5 | * SPDX-License-Identifier: MIT OR EPL-2.0 | ||
6 | */ | ||
7 | |||
1 | interface ImportMeta { | 8 | interface ImportMeta { |
2 | env: { | 9 | env: { |
3 | BASE_URL: string; | 10 | BASE_URL: string; |
diff --git a/subprojects/frontend/types/grammar.d.ts b/subprojects/frontend/types/grammar.d.ts index 1480085b..e7a7eebf 100644 --- a/subprojects/frontend/types/grammar.d.ts +++ b/subprojects/frontend/types/grammar.d.ts | |||
@@ -1,3 +1,10 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2018 by Marijn Haverbeke <marijn@haverbeke.berlin> and others | ||
3 | * Copyright (C) 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
4 | * | ||
5 | * SPDX-License-Identifier: MIT OR EPL-2.0 | ||
6 | */ | ||
7 | |||
1 | declare module '*.grammar' { | 8 | declare module '*.grammar' { |
2 | import type { LRParser } from '@lezer/lr'; | 9 | import type { LRParser } from '@lezer/lr'; |
3 | 10 | ||
diff --git a/subprojects/frontend/types/node/@lezer-generator-rollup.d.ts b/subprojects/frontend/types/node/@lezer-generator-rollup.d.ts index 9c1ff03e..4ef9f4e3 100644 --- a/subprojects/frontend/types/node/@lezer-generator-rollup.d.ts +++ b/subprojects/frontend/types/node/@lezer-generator-rollup.d.ts | |||
@@ -1,3 +1,10 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2018 by Marijn Haverbeke <marijn@haverbeke.berlin> and others | ||
3 | * Copyright (C) 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
4 | * | ||
5 | * SPDX-License-Identifier: MIT OR EPL-2.0 | ||
6 | */ | ||
7 | |||
1 | // We have to explicitly redeclare the type of the `./rollup` ESM export of `@lezer/generator`, | 8 | // We have to explicitly redeclare the type of the `./rollup` ESM export of `@lezer/generator`, |
2 | // because TypeScript can't find it on its own even with `"moduleResolution": "Node16"`. | 9 | // because TypeScript can't find it on its own even with `"moduleResolution": "Node16"`. |
3 | declare module '@lezer/generator/rollup' { | 10 | declare module '@lezer/generator/rollup' { |
diff --git a/subprojects/frontend/types/windowControlsOverlay.d.ts b/subprojects/frontend/types/windowControlsOverlay.d.ts index d8f3182f..2513d620 100644 --- a/subprojects/frontend/types/windowControlsOverlay.d.ts +++ b/subprojects/frontend/types/windowControlsOverlay.d.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | interface WindowControlsOverlayGeometryChangeEvent extends Event { | 7 | interface WindowControlsOverlayGeometryChangeEvent extends Event { |
2 | titlebarAreaRect: DOMRect; | 8 | titlebarAreaRect: DOMRect; |
3 | 9 | ||
diff --git a/subprojects/frontend/vite.config.ts b/subprojects/frontend/vite.config.ts index cd9993cc..9e08ccc4 100644 --- a/subprojects/frontend/vite.config.ts +++ b/subprojects/frontend/vite.config.ts | |||
@@ -1,3 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
1 | import path from 'node:path'; | 7 | import path from 'node:path'; |
2 | import { fileURLToPath } from 'node:url'; | 8 | import { fileURLToPath } from 'node:url'; |
3 | 9 | ||
diff --git a/subprojects/language-ide/build.gradle b/subprojects/language-ide/build.gradle deleted file mode 100644 index 3786762b..00000000 --- a/subprojects/language-ide/build.gradle +++ /dev/null | |||
@@ -1,18 +0,0 @@ | |||
1 | plugins { | ||
2 | id 'refinery-java-library' | ||
3 | id 'refinery-xtext-conventions' | ||
4 | } | ||
5 | |||
6 | dependencies { | ||
7 | api project(':refinery-language') | ||
8 | api libs.xtext.ide | ||
9 | api libs.xtext.xbase.ide | ||
10 | } | ||
11 | |||
12 | def generateXtextLanguage = project(':refinery-language').tasks.named('generateXtextLanguage') | ||
13 | |||
14 | for (taskName in ['compileJava', 'processResources']) { | ||
15 | tasks.named(taskName) { | ||
16 | dependsOn generateXtextLanguage | ||
17 | } | ||
18 | } | ||
diff --git a/subprojects/language-ide/build.gradle.kts b/subprojects/language-ide/build.gradle.kts new file mode 100644 index 00000000..1259cd67 --- /dev/null +++ b/subprojects/language-ide/build.gradle.kts | |||
@@ -0,0 +1,18 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | plugins { | ||
8 | id("tools.refinery.gradle.java-library") | ||
9 | id("tools.refinery.gradle.xtext-generated") | ||
10 | } | ||
11 | |||
12 | dependencies { | ||
13 | api(project(":refinery-language")) | ||
14 | api(libs.xtext.ide) | ||
15 | api(libs.xtext.xbase.ide) | ||
16 | xtextGenerated(project(":refinery-language", "generatedIdeSources")) | ||
17 | } | ||
18 | |||
diff --git a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/ProblemIdeModule.java b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/ProblemIdeModule.java index fb620065..122fe874 100644 --- a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/ProblemIdeModule.java +++ b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/ProblemIdeModule.java | |||
@@ -1,4 +1,10 @@ | |||
1 | /* | 1 | /* |
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | /* | ||
2 | * generated by Xtext 2.25.0 | 8 | * generated by Xtext 2.25.0 |
3 | */ | 9 | */ |
4 | package tools.refinery.language.ide; | 10 | package tools.refinery.language.ide; |
diff --git a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/ProblemIdeSetup.java b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/ProblemIdeSetup.java index 5b88d41f..9d77e022 100644 --- a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/ProblemIdeSetup.java +++ b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/ProblemIdeSetup.java | |||
@@ -1,4 +1,10 @@ | |||
1 | /* | 1 | /* |
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | /* | ||
2 | * generated by Xtext 2.25.0 | 8 | * generated by Xtext 2.25.0 |
3 | */ | 9 | */ |
4 | package tools.refinery.language.ide; | 10 | package tools.refinery.language.ide; |
diff --git a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/FuzzyMatcher.java b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/FuzzyMatcher.java index fe722ca1..4511223b 100644 --- a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/FuzzyMatcher.java +++ b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/FuzzyMatcher.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.ide.contentassist; | 6 | package tools.refinery.language.ide.contentassist; |
2 | 7 | ||
3 | import org.eclipse.xtext.ide.editor.contentassist.IPrefixMatcher; | 8 | import org.eclipse.xtext.ide.editor.contentassist.IPrefixMatcher; |
diff --git a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/ProblemCrossrefProposalProvider.java b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/ProblemCrossrefProposalProvider.java index 8f04ed00..e194ee31 100644 --- a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/ProblemCrossrefProposalProvider.java +++ b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/ProblemCrossrefProposalProvider.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.ide.contentassist; | 6 | package tools.refinery.language.ide.contentassist; |
2 | 7 | ||
3 | import java.util.Objects; | 8 | import java.util.Objects; |
diff --git a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/TokenSourceInjectingPartialProblemContentAssistParser.java b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/TokenSourceInjectingPartialProblemContentAssistParser.java index 3ece6f67..146bd8da 100644 --- a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/TokenSourceInjectingPartialProblemContentAssistParser.java +++ b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/TokenSourceInjectingPartialProblemContentAssistParser.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.ide.contentassist; | 6 | package tools.refinery.language.ide.contentassist; |
2 | 7 | ||
3 | import com.google.inject.Inject; | 8 | import com.google.inject.Inject; |
diff --git a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/TokenSourceInjectingProblemParser.java b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/TokenSourceInjectingProblemParser.java index 80dfee5c..f906d881 100644 --- a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/TokenSourceInjectingProblemParser.java +++ b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/TokenSourceInjectingProblemParser.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.ide.contentassist; | 6 | package tools.refinery.language.ide.contentassist; |
2 | 7 | ||
3 | import com.google.inject.Inject; | 8 | import com.google.inject.Inject; |
diff --git a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/antlr/ProblemTokenSource.java b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/antlr/ProblemTokenSource.java index c6c7f41f..fdc17c4f 100644 --- a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/antlr/ProblemTokenSource.java +++ b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/antlr/ProblemTokenSource.java | |||
@@ -1,4 +1,10 @@ | |||
1 | /* | 1 | /* |
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | /* | ||
2 | * generated by Xtext 2.29.0.M2 | 8 | * generated by Xtext 2.29.0.M2 |
3 | */ | 9 | */ |
4 | package tools.refinery.language.ide.contentassist.antlr; | 10 | package tools.refinery.language.ide.contentassist.antlr; |
diff --git a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/syntaxcoloring/ProblemSemanticHighlightingCalculator.java b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/syntaxcoloring/ProblemSemanticHighlightingCalculator.java index 7703e4e3..e8f97d51 100644 --- a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/syntaxcoloring/ProblemSemanticHighlightingCalculator.java +++ b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/syntaxcoloring/ProblemSemanticHighlightingCalculator.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.ide.syntaxcoloring; | 6 | package tools.refinery.language.ide.syntaxcoloring; |
2 | 7 | ||
3 | import com.google.common.collect.ImmutableList; | 8 | import com.google.common.collect.ImmutableList; |
diff --git a/subprojects/language-model/META-INF/MANIFEST.MF b/subprojects/language-model/META-INF/MANIFEST.MF index a9c6340a..5d36a475 100644 --- a/subprojects/language-model/META-INF/MANIFEST.MF +++ b/subprojects/language-model/META-INF/MANIFEST.MF | |||
@@ -7,7 +7,7 @@ Bundle-Version: 0.0.0.qualifier | |||
7 | Bundle-ClassPath: . | 7 | Bundle-ClassPath: . |
8 | Bundle-Vendor: %providerName | 8 | Bundle-Vendor: %providerName |
9 | Bundle-Localization: plugin | 9 | Bundle-Localization: plugin |
10 | Bundle-RequiredExecutionEnvironment: JavaSE-17 | 10 | Bundle-RequiredExecutionEnvironment: J2SE-1.5 |
11 | Export-Package: tools.refinery.language.model, | 11 | Export-Package: tools.refinery.language.model, |
12 | tools.refinery.language.model.problem, | 12 | tools.refinery.language.model.problem, |
13 | tools.refinery.language.model.problem.impl, | 13 | tools.refinery.language.model.problem.impl, |
diff --git a/subprojects/language-model/META-INF/MANIFEST.MF.license b/subprojects/language-model/META-INF/MANIFEST.MF.license new file mode 100644 index 00000000..e5db6ccd --- /dev/null +++ b/subprojects/language-model/META-INF/MANIFEST.MF.license | |||
@@ -0,0 +1,3 @@ | |||
1 | SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
2 | |||
3 | SPDX-License-Identifier: EPL-2.0 | ||
diff --git a/subprojects/language-model/build.gradle b/subprojects/language-model/build.gradle deleted file mode 100644 index 275db188..00000000 --- a/subprojects/language-model/build.gradle +++ /dev/null | |||
@@ -1,55 +0,0 @@ | |||
1 | plugins { | ||
2 | id 'refinery-java-library' | ||
3 | id 'refinery-mwe2' | ||
4 | id 'refinery-sonarqube' | ||
5 | } | ||
6 | |||
7 | dependencies { | ||
8 | api libs.ecore | ||
9 | api libs.ecore.xmi | ||
10 | mwe2 libs.ecore.codegen | ||
11 | mwe2 libs.mwe.utils | ||
12 | mwe2 libs.mwe2.lib | ||
13 | mwe2 libs.xtext.core | ||
14 | mwe2 libs.xtext.xbase | ||
15 | } | ||
16 | |||
17 | sourceSets { | ||
18 | main { | ||
19 | java.srcDirs += ['src/main/emf-gen'] | ||
20 | } | ||
21 | } | ||
22 | |||
23 | def generateEPackage = tasks.register('generateEPackage', JavaExec) { | ||
24 | mainClass = 'org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher' | ||
25 | classpath = configurations.mwe2 | ||
26 | inputs.file 'src/main/java/tools/refinery/language/model/GenerateProblemModel.mwe2' | ||
27 | inputs.file 'src/main/resources/model/problem.ecore' | ||
28 | inputs.file 'src/main/resources/model/problem.genmodel' | ||
29 | outputs.dir 'src/main/emf-gen' | ||
30 | args += 'src/main/java/tools/refinery/language/model/GenerateProblemModel.mwe2' | ||
31 | args += '-p' | ||
32 | args += "rootPath=/${projectDir}" | ||
33 | } | ||
34 | |||
35 | for (taskName in ['compileJava', 'processResources', 'generateEclipseSourceFolders']) { | ||
36 | tasks.named(taskName) { | ||
37 | dependsOn generateEPackage | ||
38 | } | ||
39 | } | ||
40 | |||
41 | tasks.named('clean') { | ||
42 | delete 'src/main/emf-gen' | ||
43 | } | ||
44 | |||
45 | sonarqube.properties { | ||
46 | properties['sonar.exclusions'] += [ | ||
47 | 'src/main/emf-gen/**', | ||
48 | ] | ||
49 | } | ||
50 | |||
51 | eclipse.project.natures += [ | ||
52 | 'org.eclipse.sirius.nature.modelingproject', | ||
53 | 'org.eclipse.pde.PluginNature', | ||
54 | 'org.eclipse.xtext.ui.shared.xtextNature' | ||
55 | ] | ||
diff --git a/subprojects/language-model/build.gradle.kts b/subprojects/language-model/build.gradle.kts new file mode 100644 index 00000000..59ff9046 --- /dev/null +++ b/subprojects/language-model/build.gradle.kts | |||
@@ -0,0 +1,65 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | import tools.refinery.gradle.utils.SonarPropertiesUtils | ||
8 | |||
9 | plugins { | ||
10 | id("tools.refinery.gradle.java-library") | ||
11 | id("tools.refinery.gradle.mwe2") | ||
12 | id("tools.refinery.gradle.sonarqube") | ||
13 | } | ||
14 | |||
15 | dependencies { | ||
16 | api(libs.ecore) | ||
17 | api(libs.ecore.xmi) | ||
18 | mwe2(libs.ecore.codegen) | ||
19 | mwe2(libs.mwe.utils) | ||
20 | mwe2(libs.mwe2.lib) | ||
21 | mwe2(libs.xtext.core) | ||
22 | mwe2(libs.xtext.xbase) | ||
23 | } | ||
24 | |||
25 | sourceSets { | ||
26 | main { | ||
27 | java.srcDir("src/main/emf-gen") | ||
28 | } | ||
29 | } | ||
30 | |||
31 | tasks { | ||
32 | val generateEPackage by registering(JavaExec::class) { | ||
33 | mainClass.set("org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher") | ||
34 | classpath(configurations.mwe2) | ||
35 | inputs.file("src/main/java/tools/refinery/language/model/GenerateProblemModel.mwe2") | ||
36 | inputs.file("src/main/resources/model/problem.ecore") | ||
37 | inputs.file("src/main/resources/model/problem.genmodel") | ||
38 | outputs.file("build.properties") | ||
39 | outputs.file("META-INF/MANIFEST.MF") | ||
40 | outputs.file("plugin.xml") | ||
41 | outputs.file("plugin.properties") | ||
42 | outputs.dir("src/main/emf-gen") | ||
43 | args("src/main/java/tools/refinery/language/model/GenerateProblemModel.mwe2", "-p", "rootPath=/$projectDir") | ||
44 | } | ||
45 | |||
46 | for (taskName in listOf("compileJava", "processResources", "generateEclipseSourceFolders")) { | ||
47 | named(taskName) { | ||
48 | dependsOn(generateEPackage) | ||
49 | } | ||
50 | } | ||
51 | |||
52 | clean { | ||
53 | delete("src/main/emf-gen") | ||
54 | } | ||
55 | } | ||
56 | |||
57 | sonarqube.properties { | ||
58 | SonarPropertiesUtils.addToList(properties, "sonar.exclusions", "src/main/emf-gen/**") | ||
59 | } | ||
60 | |||
61 | eclipse.project.natures.plusAssign(listOf( | ||
62 | "org.eclipse.sirius.nature.modelingproject", | ||
63 | "org.eclipse.pde.PluginNature", | ||
64 | "org.eclipse.xtext.ui.shared.xtextNature", | ||
65 | )) | ||
diff --git a/subprojects/language-model/build.properties b/subprojects/language-model/build.properties index 65dfc7c4..9b9859ff 100644 --- a/subprojects/language-model/build.properties +++ b/subprojects/language-model/build.properties | |||
@@ -1,4 +1,6 @@ | |||
1 | # SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
1 | # | 2 | # |
3 | # SPDX-License-Identifier: EPL-2.0 | ||
2 | 4 | ||
3 | bin.includes = .,\ | 5 | bin.includes = .,\ |
4 | src/main/resources/model/,\ | 6 | src/main/resources/model/,\ |
diff --git a/subprojects/language-model/plugin.properties b/subprojects/language-model/plugin.properties index c4fb7e23..c410feb7 100644 --- a/subprojects/language-model/plugin.properties +++ b/subprojects/language-model/plugin.properties | |||
@@ -1,4 +1,6 @@ | |||
1 | # SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
1 | # | 2 | # |
3 | # SPDX-License-Identifier: EPL-2.0 | ||
2 | 4 | ||
3 | pluginName = tools.refinery.language.model | 5 | pluginName = tools.refinery.language.model |
4 | providerName = refinery.tools | 6 | providerName = refinery.tools |
diff --git a/subprojects/language-model/plugin.xml b/subprojects/language-model/plugin.xml index 4ca005a8..ef1e21f4 100644 --- a/subprojects/language-model/plugin.xml +++ b/subprojects/language-model/plugin.xml | |||
@@ -2,6 +2,9 @@ | |||
2 | <?eclipse version="3.0"?> | 2 | <?eclipse version="3.0"?> |
3 | 3 | ||
4 | <!-- | 4 | <!-- |
5 | SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
6 | |||
7 | SPDX-License-Identifier: EPL-2.0 | ||
5 | --> | 8 | --> |
6 | 9 | ||
7 | <plugin> | 10 | <plugin> |
diff --git a/subprojects/language-model/problem.aird.license b/subprojects/language-model/problem.aird.license new file mode 100644 index 00000000..e5db6ccd --- /dev/null +++ b/subprojects/language-model/problem.aird.license | |||
@@ -0,0 +1,3 @@ | |||
1 | SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
2 | |||
3 | SPDX-License-Identifier: EPL-2.0 | ||
diff --git a/subprojects/language-model/src/main/java/tools/refinery/language/model/GenerateProblemModel.mwe2 b/subprojects/language-model/src/main/java/tools/refinery/language/model/GenerateProblemModel.mwe2 index 15198d69..074b6b71 100644 --- a/subprojects/language-model/src/main/java/tools/refinery/language/model/GenerateProblemModel.mwe2 +++ b/subprojects/language-model/src/main/java/tools/refinery/language/model/GenerateProblemModel.mwe2 | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | module tools.refinery.language.model.GenerateProblemModel | 6 | module tools.refinery.language.model.GenerateProblemModel |
2 | 7 | ||
3 | Workflow { | 8 | Workflow { |
diff --git a/subprojects/language-model/src/main/resources/model/problem.ecore.license b/subprojects/language-model/src/main/resources/model/problem.ecore.license new file mode 100644 index 00000000..e5db6ccd --- /dev/null +++ b/subprojects/language-model/src/main/resources/model/problem.ecore.license | |||
@@ -0,0 +1,3 @@ | |||
1 | SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
2 | |||
3 | SPDX-License-Identifier: EPL-2.0 | ||
diff --git a/subprojects/language-model/src/main/resources/model/problem.genmodel.license b/subprojects/language-model/src/main/resources/model/problem.genmodel.license new file mode 100644 index 00000000..e5db6ccd --- /dev/null +++ b/subprojects/language-model/src/main/resources/model/problem.genmodel.license | |||
@@ -0,0 +1,3 @@ | |||
1 | SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
2 | |||
3 | SPDX-License-Identifier: EPL-2.0 | ||
diff --git a/subprojects/language-semantics/build.gradle b/subprojects/language-semantics/build.gradle deleted file mode 100644 index 4f43ad24..00000000 --- a/subprojects/language-semantics/build.gradle +++ /dev/null | |||
@@ -1,11 +0,0 @@ | |||
1 | plugins { | ||
2 | id 'refinery-java-library' | ||
3 | } | ||
4 | |||
5 | dependencies { | ||
6 | implementation libs.eclipseCollections | ||
7 | implementation libs.eclipseCollections.api | ||
8 | api project(':refinery-language') | ||
9 | api project(':refinery-store') | ||
10 | testImplementation testFixtures(project(':refinery-language')) | ||
11 | } | ||
diff --git a/subprojects/language-semantics/build.gradle.kts b/subprojects/language-semantics/build.gradle.kts new file mode 100644 index 00000000..38cd9e0d --- /dev/null +++ b/subprojects/language-semantics/build.gradle.kts | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | plugins { | ||
8 | id("tools.refinery.gradle.java-library") | ||
9 | } | ||
10 | |||
11 | dependencies { | ||
12 | implementation(libs.eclipseCollections) | ||
13 | implementation(libs.eclipseCollections.api) | ||
14 | api(project(":refinery-language")) | ||
15 | api(project(":refinery-store")) | ||
16 | testImplementation(testFixtures(project(":refinery-language"))) | ||
17 | } | ||
diff --git a/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/ModelInitializer.java b/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/ModelInitializer.java index a6712a89..06b8ad77 100644 --- a/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/ModelInitializer.java +++ b/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/ModelInitializer.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.semantics.model; | 6 | package tools.refinery.language.semantics.model; |
2 | 7 | ||
3 | import com.google.inject.Inject; | 8 | import com.google.inject.Inject; |
@@ -39,8 +44,8 @@ public class ModelInitializer { | |||
39 | var isEqualsRelation = relation == builtinSymbols.equals(); | 44 | var isEqualsRelation = relation == builtinSymbols.equals(); |
40 | var decisionTree = mergeAssertions(relationInfo, isEqualsRelation); | 45 | var decisionTree = mergeAssertions(relationInfo, isEqualsRelation); |
41 | var defaultValue = isEqualsRelation ? TruthValue.FALSE : TruthValue.UNKNOWN; | 46 | var defaultValue = isEqualsRelation ? TruthValue.FALSE : TruthValue.UNKNOWN; |
42 | relationTrace.put(relation, new Symbol<>(relationInfo.name(), relationInfo.arity(), TruthValue.class, defaultValue | 47 | relationTrace.put(relation, Symbol.of( |
43 | )); | 48 | relationInfo.name(), relationInfo.arity(), TruthValue.class, defaultValue)); |
44 | } | 49 | } |
45 | } | 50 | } |
46 | 51 | ||
diff --git a/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/DecisionTree.java b/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/DecisionTree.java index 55edee6d..c1afecf9 100644 --- a/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/DecisionTree.java +++ b/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/DecisionTree.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.semantics.model.internal; | 6 | package tools.refinery.language.semantics.model.internal; |
2 | 7 | ||
3 | import org.eclipse.collections.api.factory.primitive.IntObjectMaps; | 8 | import org.eclipse.collections.api.factory.primitive.IntObjectMaps; |
diff --git a/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/DecisionTreeCursor.java b/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/DecisionTreeCursor.java index fdf8e452..9a1e15a3 100644 --- a/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/DecisionTreeCursor.java +++ b/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/DecisionTreeCursor.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.semantics.model.internal; | 6 | package tools.refinery.language.semantics.model.internal; |
2 | 7 | ||
3 | import tools.refinery.store.map.Cursor; | 8 | import tools.refinery.store.map.Cursor; |
diff --git a/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/DecisionTreeNode.java b/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/DecisionTreeNode.java index b81ea3fe..3c54e3c5 100644 --- a/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/DecisionTreeNode.java +++ b/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/DecisionTreeNode.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.semantics.model.internal; | 6 | package tools.refinery.language.semantics.model.internal; |
2 | 7 | ||
3 | import org.eclipse.collections.api.LazyIntIterable; | 8 | import org.eclipse.collections.api.LazyIntIterable; |
diff --git a/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/DecisionTreeValue.java b/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/DecisionTreeValue.java index 495a53dd..915ae2bf 100644 --- a/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/DecisionTreeValue.java +++ b/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/DecisionTreeValue.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.semantics.model.internal; | 6 | package tools.refinery.language.semantics.model.internal; |
2 | 7 | ||
3 | import tools.refinery.store.representation.TruthValue; | 8 | import tools.refinery.store.representation.TruthValue; |
diff --git a/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/IntermediateNode.java b/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/IntermediateNode.java index c4200509..e6f01d48 100644 --- a/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/IntermediateNode.java +++ b/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/IntermediateNode.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.semantics.model.internal; | 6 | package tools.refinery.language.semantics.model.internal; |
2 | 7 | ||
3 | import org.eclipse.collections.api.LazyIntIterable; | 8 | import org.eclipse.collections.api.LazyIntIterable; |
diff --git a/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/TerminalNode.java b/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/TerminalNode.java index 4af836ff..ce49aa62 100644 --- a/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/TerminalNode.java +++ b/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/TerminalNode.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.semantics.model.internal; | 6 | package tools.refinery.language.semantics.model.internal; |
2 | 7 | ||
3 | import org.eclipse.collections.api.LazyIntIterable; | 8 | import org.eclipse.collections.api.LazyIntIterable; |
diff --git a/subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/model/tests/DecisionTreeTests.java b/subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/model/tests/DecisionTreeTests.java index 4630bf53..b3fcbabb 100644 --- a/subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/model/tests/DecisionTreeTests.java +++ b/subprojects/language-semantics/src/test/java/tools/refinery/language/semantics/model/tests/DecisionTreeTests.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.semantics.model.tests; | 6 | package tools.refinery.language.semantics.model.tests; |
2 | 7 | ||
3 | import org.junit.jupiter.api.Test; | 8 | import org.junit.jupiter.api.Test; |
diff --git a/subprojects/language-web/build.gradle b/subprojects/language-web/build.gradle deleted file mode 100644 index 8d277a5b..00000000 --- a/subprojects/language-web/build.gradle +++ /dev/null | |||
@@ -1,87 +0,0 @@ | |||
1 | plugins { | ||
2 | id 'refinery-java-application' | ||
3 | id 'refinery-xtext-conventions' | ||
4 | } | ||
5 | |||
6 | configurations { | ||
7 | webapp { | ||
8 | canBeConsumed = false | ||
9 | canBeResolved = true | ||
10 | } | ||
11 | |||
12 | all { | ||
13 | // Use log4j-over-slf4j instead of log4j 1.x | ||
14 | exclude group: 'log4j', module: 'log4j' | ||
15 | } | ||
16 | } | ||
17 | |||
18 | dependencies { | ||
19 | implementation project(':refinery-language') | ||
20 | implementation project(':refinery-language-ide') | ||
21 | implementation libs.jetty.server | ||
22 | implementation libs.jetty.servlet | ||
23 | implementation libs.jetty.websocket.server | ||
24 | implementation libs.slf4j.api | ||
25 | implementation libs.slf4j.simple | ||
26 | implementation libs.slf4j.log4j | ||
27 | implementation libs.xtext.web | ||
28 | webapp project(path: ':refinery-frontend', configuration: 'productionAssets') | ||
29 | testImplementation testFixtures(project(':refinery-language')) | ||
30 | testImplementation libs.jetty.websocket.client | ||
31 | } | ||
32 | |||
33 | def generateXtextLanguage = project(':refinery-language').tasks.named('generateXtextLanguage') | ||
34 | |||
35 | for (taskName in ['compileJava', 'processResources']) { | ||
36 | tasks.named(taskName) { | ||
37 | dependsOn generateXtextLanguage | ||
38 | } | ||
39 | } | ||
40 | |||
41 | mainClassName = 'tools.refinery.language.web.ServerLauncher' | ||
42 | |||
43 | // Enable JDK 19 preview features for virtual thread support. | ||
44 | application { | ||
45 | applicationDefaultJvmArgs += '--enable-preview' | ||
46 | } | ||
47 | tasks.withType(JavaCompile) { | ||
48 | options.release = 19 | ||
49 | options.compilerArgs += '--enable-preview' | ||
50 | } | ||
51 | tasks.withType(Test) { | ||
52 | jvmArgs += '--enable-preview' | ||
53 | } | ||
54 | |||
55 | tasks.named('jar') { | ||
56 | dependsOn project.configurations.webapp | ||
57 | from(project.configurations.webapp) { | ||
58 | into 'webapp' | ||
59 | } | ||
60 | } | ||
61 | |||
62 | tasks.named('shadowJar') { | ||
63 | dependsOn project.configurations.webapp | ||
64 | from(project.sourceSets.main.output) | ||
65 | configurations = [project.configurations.runtimeClasspath] | ||
66 | exclude('META-INF/INDEX.LIST', 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA','schema/*', | ||
67 | '.options', '.api_description', '*.profile', 'about.*', 'about_*.html', 'about_files/*', | ||
68 | 'plugin.xml', 'systembundle.properties', 'profile.list', 'META-INF/resources/xtext/**') | ||
69 | append('plugin.properties') | ||
70 | from(project.configurations.webapp) { | ||
71 | into 'webapp' | ||
72 | } | ||
73 | } | ||
74 | |||
75 | tasks.register('serveBackend', JavaExec) { | ||
76 | dependsOn project.configurations.webapp | ||
77 | dependsOn sourceSets.main.runtimeClasspath | ||
78 | classpath = sourceSets.main.runtimeClasspath | ||
79 | mainClass = mainClassName | ||
80 | // Enable JDK 19 preview features for virtual thread support. | ||
81 | jvmArgs += '--enable-preview' | ||
82 | standardInput = System.in | ||
83 | def baseResource = project.configurations.webapp.incoming.artifacts.artifactFiles.first() | ||
84 | environment BASE_RESOURCE: baseResource | ||
85 | group = 'run' | ||
86 | description = 'Start a Jetty web server serving the Xtex API and assets.' | ||
87 | } | ||
diff --git a/subprojects/language-web/build.gradle.kts b/subprojects/language-web/build.gradle.kts new file mode 100644 index 00000000..562a1bd9 --- /dev/null +++ b/subprojects/language-web/build.gradle.kts | |||
@@ -0,0 +1,68 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | plugins { | ||
8 | id("tools.refinery.gradle.java-application") | ||
9 | id("tools.refinery.gradle.xtext-generated") | ||
10 | } | ||
11 | |||
12 | val webapp: Configuration by configurations.creating { | ||
13 | isCanBeConsumed = false | ||
14 | isCanBeResolved = true | ||
15 | } | ||
16 | |||
17 | dependencies { | ||
18 | implementation(project(":refinery-language")) | ||
19 | implementation(project(":refinery-language-ide")) | ||
20 | implementation(libs.jetty.server) | ||
21 | implementation(libs.jetty.servlet) | ||
22 | implementation(libs.jetty.websocket.api) | ||
23 | implementation(libs.jetty.websocket.server) | ||
24 | implementation(libs.slf4j.api) | ||
25 | implementation(libs.xtext.web) | ||
26 | xtextGenerated(project(":refinery-language", "generatedWebSources")) | ||
27 | webapp(project(":refinery-frontend", "productionAssets")) | ||
28 | testImplementation(testFixtures(project(":refinery-language"))) | ||
29 | testImplementation(libs.jetty.websocket.client) | ||
30 | } | ||
31 | |||
32 | application { | ||
33 | mainClass.set("tools.refinery.language.web.ServerLauncher") | ||
34 | } | ||
35 | |||
36 | tasks { | ||
37 | jar { | ||
38 | dependsOn(webapp) | ||
39 | from(webapp) { | ||
40 | into("webapp") | ||
41 | } | ||
42 | } | ||
43 | |||
44 | shadowJar { | ||
45 | dependsOn(webapp) | ||
46 | from(project.sourceSets.main.map { it.output }) | ||
47 | exclude("META-INF/INDEX.LIST", "META-INF/*.SF", "META-INF/*.DSA", "META-INF/*.RSA", "schema/*", | ||
48 | ".options", ".api_description", "*.profile", "about.*", "about_*.html", "about_files/*", | ||
49 | "plugin.xml", "systembundle.properties", "profile.list", "META-INF/resources/xtext/**") | ||
50 | append("plugin.properties") | ||
51 | from(webapp) { | ||
52 | into("webapp") | ||
53 | } | ||
54 | } | ||
55 | |||
56 | register<JavaExec>("serveBackend") { | ||
57 | dependsOn(webapp) | ||
58 | val mainRuntimeClasspath = sourceSets.main.map { it.runtimeClasspath } | ||
59 | dependsOn(mainRuntimeClasspath) | ||
60 | classpath(mainRuntimeClasspath) | ||
61 | mainClass.set(application.mainClass) | ||
62 | standardInput = System.`in` | ||
63 | val baseResource = webapp.incoming.artifacts.artifactFiles.first() | ||
64 | environment("BASE_RESOURCE", baseResource) | ||
65 | group = "run" | ||
66 | description = "Start a Jetty web server serving the Xtex API and assets." | ||
67 | } | ||
68 | } | ||
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/CacheControlFilter.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/CacheControlFilter.java index fd2af1b2..53f78c3c 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/CacheControlFilter.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/CacheControlFilter.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web; | 6 | package tools.refinery.language.web; |
2 | 7 | ||
3 | import jakarta.servlet.*; | 8 | import jakarta.servlet.*; |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/ProblemWebModule.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/ProblemWebModule.java index 706413a9..b0197c01 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/ProblemWebModule.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/ProblemWebModule.java | |||
@@ -1,15 +1,19 @@ | |||
1 | /* | 1 | /* |
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | /* | ||
2 | * generated by Xtext 2.25.0 | 8 | * generated by Xtext 2.25.0 |
3 | */ | 9 | */ |
4 | package tools.refinery.language.web; | 10 | package tools.refinery.language.web; |
5 | 11 | ||
6 | import org.eclipse.xtext.ide.ExecutorServiceProvider; | ||
7 | import org.eclipse.xtext.web.server.XtextServiceDispatcher; | 12 | import org.eclipse.xtext.web.server.XtextServiceDispatcher; |
8 | import org.eclipse.xtext.web.server.model.IWebDocumentProvider; | 13 | import org.eclipse.xtext.web.server.model.IWebDocumentProvider; |
9 | import org.eclipse.xtext.web.server.model.XtextWebDocumentAccess; | 14 | import org.eclipse.xtext.web.server.model.XtextWebDocumentAccess; |
10 | import org.eclipse.xtext.web.server.occurrences.OccurrencesService; | 15 | import org.eclipse.xtext.web.server.occurrences.OccurrencesService; |
11 | import tools.refinery.language.web.occurrences.ProblemOccurrencesService; | 16 | import tools.refinery.language.web.occurrences.ProblemOccurrencesService; |
12 | import tools.refinery.language.web.xtext.VirtualThreadExecutorServiceProvider; | ||
13 | import tools.refinery.language.web.xtext.server.push.PushServiceDispatcher; | 17 | import tools.refinery.language.web.xtext.server.push.PushServiceDispatcher; |
14 | import tools.refinery.language.web.xtext.server.push.PushWebDocumentAccess; | 18 | import tools.refinery.language.web.xtext.server.push.PushWebDocumentAccess; |
15 | import tools.refinery.language.web.xtext.server.push.PushWebDocumentProvider; | 19 | import tools.refinery.language.web.xtext.server.push.PushWebDocumentProvider; |
@@ -33,8 +37,4 @@ public class ProblemWebModule extends AbstractProblemWebModule { | |||
33 | public Class<? extends OccurrencesService> bindOccurrencesService() { | 37 | public Class<? extends OccurrencesService> bindOccurrencesService() { |
34 | return ProblemOccurrencesService.class; | 38 | return ProblemOccurrencesService.class; |
35 | } | 39 | } |
36 | |||
37 | public Class<? extends ExecutorServiceProvider> bindExecutorServiceProvider() { | ||
38 | return VirtualThreadExecutorServiceProvider.class; | ||
39 | } | ||
40 | } | 40 | } |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/ProblemWebSetup.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/ProblemWebSetup.java index 4738bc80..53a394d8 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/ProblemWebSetup.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/ProblemWebSetup.java | |||
@@ -1,4 +1,10 @@ | |||
1 | /* | 1 | /* |
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | /* | ||
2 | * generated by Xtext 2.25.0 | 8 | * generated by Xtext 2.25.0 |
3 | */ | 9 | */ |
4 | package tools.refinery.language.web; | 10 | package tools.refinery.language.web; |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/ProblemWebSocketServlet.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/ProblemWebSocketServlet.java index df67b521..7b48cde8 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/ProblemWebSocketServlet.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/ProblemWebSocketServlet.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web; | 6 | package tools.refinery.language.web; |
2 | 7 | ||
3 | import org.eclipse.xtext.util.DisposableRegistry; | 8 | import org.eclipse.xtext.util.DisposableRegistry; |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/SecurityHeadersFilter.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/SecurityHeadersFilter.java index c41db799..7b094fde 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/SecurityHeadersFilter.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/SecurityHeadersFilter.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web; | 6 | package tools.refinery.language.web; |
2 | 7 | ||
3 | import jakarta.servlet.*; | 8 | import jakarta.servlet.*; |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/ServerLauncher.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/ServerLauncher.java index f49f46ee..ad19e77d 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/ServerLauncher.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/ServerLauncher.java | |||
@@ -1,4 +1,10 @@ | |||
1 | /* | 1 | /* |
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | /* | ||
2 | * generated by Xtext 2.25.0 | 8 | * generated by Xtext 2.25.0 |
3 | */ | 9 | */ |
4 | package tools.refinery.language.web; | 10 | package tools.refinery.language.web; |
@@ -13,6 +19,7 @@ import org.eclipse.jetty.ee10.websocket.server.config.JettyWebSocketServletConta | |||
13 | import org.eclipse.jetty.server.Server; | 19 | import org.eclipse.jetty.server.Server; |
14 | import org.eclipse.jetty.util.resource.Resource; | 20 | import org.eclipse.jetty.util.resource.Resource; |
15 | import org.eclipse.jetty.util.resource.ResourceFactory; | 21 | import org.eclipse.jetty.util.resource.ResourceFactory; |
22 | import org.eclipse.jetty.util.thread.QueuedThreadPool; | ||
16 | import org.slf4j.Logger; | 23 | import org.slf4j.Logger; |
17 | import org.slf4j.LoggerFactory; | 24 | import org.slf4j.LoggerFactory; |
18 | import tools.refinery.language.web.config.BackendConfigServlet; | 25 | import tools.refinery.language.web.config.BackendConfigServlet; |
@@ -43,7 +50,8 @@ public class ServerLauncher { | |||
43 | private final Server server; | 50 | private final Server server; |
44 | 51 | ||
45 | public ServerLauncher(InetSocketAddress bindAddress, String[] allowedOrigins, String webSocketUrl) { | 52 | public ServerLauncher(InetSocketAddress bindAddress, String[] allowedOrigins, String webSocketUrl) { |
46 | server = VirtualThreadUtils.newServerWithVirtualThreadsThreadPool("jetty", bindAddress); | 53 | server = new Server(bindAddress); |
54 | ((QueuedThreadPool) server.getThreadPool()).setName("jetty"); | ||
47 | var handler = new ServletContextHandler(); | 55 | var handler = new ServletContextHandler(); |
48 | addSessionHandler(handler); | 56 | addSessionHandler(handler); |
49 | addProblemServlet(handler, allowedOrigins); | 57 | addProblemServlet(handler, allowedOrigins); |
@@ -105,7 +113,7 @@ public class ServerLauncher { | |||
105 | var indexUrlInJar = ServerLauncher.class.getResource("/webapp/index.html"); | 113 | var indexUrlInJar = ServerLauncher.class.getResource("/webapp/index.html"); |
106 | if (indexUrlInJar != null) { | 114 | if (indexUrlInJar != null) { |
107 | // If the app is packaged in the jar, serve it. | 115 | // If the app is packaged in the jar, serve it. |
108 | URI webRootUri = null; | 116 | URI webRootUri; |
109 | try { | 117 | try { |
110 | webRootUri = URI.create(indexUrlInJar.toURI().toASCIIString().replaceFirst("/index.html$", "/")); | 118 | webRootUri = URI.create(indexUrlInJar.toURI().toASCIIString().replaceFirst("/index.html$", "/")); |
111 | } catch (URISyntaxException e) { | 119 | } catch (URISyntaxException e) { |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/VirtualThreadUtils.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/VirtualThreadUtils.java deleted file mode 100644 index a055e755..00000000 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/VirtualThreadUtils.java +++ /dev/null | |||
@@ -1,52 +0,0 @@ | |||
1 | package tools.refinery.language.web; | ||
2 | |||
3 | import org.eclipse.jetty.server.Server; | ||
4 | import org.eclipse.jetty.server.ServerConnector; | ||
5 | import org.eclipse.jetty.util.thread.QueuedThreadPool; | ||
6 | import org.eclipse.jetty.util.thread.ThreadPool; | ||
7 | |||
8 | import java.net.InetSocketAddress; | ||
9 | import java.time.Duration; | ||
10 | import java.util.concurrent.ExecutorService; | ||
11 | import java.util.concurrent.Executors; | ||
12 | |||
13 | public final class VirtualThreadUtils { | ||
14 | private VirtualThreadUtils() { | ||
15 | throw new IllegalStateException("This is a static utility class and should not be instantiated directly"); | ||
16 | } | ||
17 | |||
18 | public static ExecutorService newNamedVirtualThreadsExecutor(String name) { | ||
19 | // Based on | ||
20 | // https://github.com/eclipse/jetty.project/blob/83154b4ffe4767ef44981598d6c26e6a5d32e57c/jetty-server/src/main/config/etc/jetty-threadpool-virtual-preview.xml | ||
21 | return Executors.newThreadPerTaskExecutor(Thread.ofVirtual() | ||
22 | .allowSetThreadLocals(true) | ||
23 | .inheritInheritableThreadLocals(false) | ||
24 | .name(name + "-virtual-", 0) | ||
25 | .factory()); | ||
26 | } | ||
27 | |||
28 | public static ThreadPool newThreadPoolWithVirtualThreadsExecutor(String name) { | ||
29 | // Based on | ||
30 | // https://github.com/eclipse/jetty.project/blob/83154b4ffe4767ef44981598d6c26e6a5d32e57c/jetty-server/src/main/config/etc/jetty-threadpool-virtual-preview.xml | ||
31 | int timeout = (int) Duration.ofMinutes(1).toMillis(); | ||
32 | var threadPool = new QueuedThreadPool(200, 10, timeout, -1, null, null); | ||
33 | threadPool.setName(name); | ||
34 | threadPool.setDetailedDump(false); | ||
35 | threadPool.setVirtualThreadsExecutor(newNamedVirtualThreadsExecutor(name)); | ||
36 | return threadPool; | ||
37 | } | ||
38 | |||
39 | public static Server newServerWithVirtualThreadsThreadPool(String name, InetSocketAddress listenAddress) { | ||
40 | var server = new Server(newThreadPoolWithVirtualThreadsExecutor(name)); | ||
41 | var connector = new ServerConnector(server); | ||
42 | try { | ||
43 | connector.setHost(listenAddress.getHostName()); | ||
44 | connector.setPort(listenAddress.getPort()); | ||
45 | server.addConnector(connector); | ||
46 | } catch (Exception e) { | ||
47 | connector.close(); | ||
48 | throw e; | ||
49 | } | ||
50 | return server; | ||
51 | } | ||
52 | } | ||
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/config/BackendConfig.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/config/BackendConfig.java index 2e864998..807b789c 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/config/BackendConfig.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/config/BackendConfig.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.config; | 6 | package tools.refinery.language.web.config; |
2 | 7 | ||
3 | import com.google.gson.annotations.SerializedName; | 8 | import com.google.gson.annotations.SerializedName; |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/config/BackendConfigServlet.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/config/BackendConfigServlet.java index f314a9fa..a2f04e34 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/config/BackendConfigServlet.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/config/BackendConfigServlet.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.config; | 6 | package tools.refinery.language.web.config; |
2 | 7 | ||
3 | import com.google.gson.Gson; | 8 | import com.google.gson.Gson; |
@@ -29,7 +34,7 @@ public class BackendConfigServlet extends HttpServlet { | |||
29 | } | 34 | } |
30 | 35 | ||
31 | @Override | 36 | @Override |
32 | protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { | 37 | protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { |
33 | resp.setStatus(HttpStatus.OK_200); | 38 | resp.setStatus(HttpStatus.OK_200); |
34 | resp.setContentType("application/json"); | 39 | resp.setContentType("application/json"); |
35 | var writer = resp.getWriter(); | 40 | var writer = resp.getWriter(); |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/occurrences/ProblemOccurrencesService.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/occurrences/ProblemOccurrencesService.java index d32bbb54..34117384 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/occurrences/ProblemOccurrencesService.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/occurrences/ProblemOccurrencesService.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.occurrences; | 6 | package tools.refinery.language.web.occurrences; |
2 | 7 | ||
3 | import org.eclipse.emf.ecore.EObject; | 8 | import org.eclipse.emf.ecore.EObject; |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/VirtualThreadExecutorServiceProvider.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/VirtualThreadExecutorServiceProvider.java deleted file mode 100644 index abbcbd53..00000000 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/VirtualThreadExecutorServiceProvider.java +++ /dev/null | |||
@@ -1,16 +0,0 @@ | |||
1 | package tools.refinery.language.web.xtext; | ||
2 | |||
3 | import org.eclipse.xtext.ide.ExecutorServiceProvider; | ||
4 | import tools.refinery.language.web.VirtualThreadUtils; | ||
5 | |||
6 | import java.util.concurrent.ExecutorService; | ||
7 | |||
8 | public class VirtualThreadExecutorServiceProvider extends ExecutorServiceProvider { | ||
9 | private static final String THREAD_POOL_NAME = "xtextWeb"; | ||
10 | |||
11 | @Override | ||
12 | protected ExecutorService createInstance(String key) { | ||
13 | var name = key == null ? THREAD_POOL_NAME : THREAD_POOL_NAME + "-" + key; | ||
14 | return VirtualThreadUtils.newNamedVirtualThreadsExecutor(name); | ||
15 | } | ||
16 | } | ||
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/PongResult.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/PongResult.java index fe510f51..27b2e04e 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/PongResult.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/PongResult.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.xtext.server; | 6 | package tools.refinery.language.web.xtext.server; |
2 | 7 | ||
3 | import java.util.Objects; | 8 | import java.util.Objects; |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/ResponseHandler.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/ResponseHandler.java index 2a85afe3..3069c2dd 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/ResponseHandler.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/ResponseHandler.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.xtext.server; | 6 | package tools.refinery.language.web.xtext.server; |
2 | 7 | ||
3 | import tools.refinery.language.web.xtext.server.message.XtextWebResponse; | 8 | import tools.refinery.language.web.xtext.server.message.XtextWebResponse; |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/ResponseHandlerException.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/ResponseHandlerException.java index b686d33a..366ef0a7 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/ResponseHandlerException.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/ResponseHandlerException.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.xtext.server; | 6 | package tools.refinery.language.web.xtext.server; |
2 | 7 | ||
3 | import java.io.Serial; | 8 | import java.io.Serial; |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/SubscribingServiceContext.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/SubscribingServiceContext.java index 78e00a9e..04212b84 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/SubscribingServiceContext.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/SubscribingServiceContext.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.xtext.server; | 6 | package tools.refinery.language.web.xtext.server; |
2 | 7 | ||
3 | import java.util.Set; | 8 | import java.util.Set; |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/TransactionExecutor.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/TransactionExecutor.java index 7bb11d2e..0135d8f5 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/TransactionExecutor.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/TransactionExecutor.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.xtext.server; | 6 | package tools.refinery.language.web.xtext.server; |
2 | 7 | ||
3 | import com.google.common.base.Strings; | 8 | import com.google.common.base.Strings; |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebErrorKind.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebErrorKind.java index f74bae74..6f4f265c 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebErrorKind.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebErrorKind.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.xtext.server.message; | 6 | package tools.refinery.language.web.xtext.server.message; |
2 | 7 | ||
3 | import com.google.gson.annotations.SerializedName; | 8 | import com.google.gson.annotations.SerializedName; |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebErrorResponse.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebErrorResponse.java index 01d78c31..af38ad70 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebErrorResponse.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebErrorResponse.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.xtext.server.message; | 6 | package tools.refinery.language.web.xtext.server.message; |
2 | 7 | ||
3 | import java.util.Objects; | 8 | import java.util.Objects; |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebOkResponse.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebOkResponse.java index 8af27247..73527ee5 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebOkResponse.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebOkResponse.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.xtext.server.message; | 6 | package tools.refinery.language.web.xtext.server.message; |
2 | 7 | ||
3 | import java.util.Objects; | 8 | import java.util.Objects; |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebPushMessage.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebPushMessage.java index c9432e1c..e9ff87c4 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebPushMessage.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebPushMessage.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.xtext.server.message; | 6 | package tools.refinery.language.web.xtext.server.message; |
2 | 7 | ||
3 | import java.util.Objects; | 8 | import java.util.Objects; |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebRequest.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebRequest.java index 959749f8..ff788e94 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebRequest.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebRequest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.xtext.server.message; | 6 | package tools.refinery.language.web.xtext.server.message; |
2 | 7 | ||
3 | import java.util.Map; | 8 | import java.util.Map; |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebResponse.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebResponse.java index 3bd13047..61444c99 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebResponse.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/message/XtextWebResponse.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.xtext.server.message; | 6 | package tools.refinery.language.web.xtext.server.message; |
2 | 7 | ||
3 | public sealed interface XtextWebResponse permits XtextWebOkResponse,XtextWebErrorResponse,XtextWebPushMessage { | 8 | public sealed interface XtextWebResponse permits XtextWebOkResponse,XtextWebErrorResponse,XtextWebPushMessage { |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PrecomputationListener.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PrecomputationListener.java index 79a284db..110c8f52 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PrecomputationListener.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PrecomputationListener.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.xtext.server.push; | 6 | package tools.refinery.language.web.xtext.server.push; |
2 | 7 | ||
3 | import org.eclipse.xtext.web.server.IServiceResult; | 8 | import org.eclipse.xtext.web.server.IServiceResult; |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushServiceDispatcher.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushServiceDispatcher.java index c7b8108d..4c9135c8 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushServiceDispatcher.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushServiceDispatcher.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.xtext.server.push; | 6 | package tools.refinery.language.web.xtext.server.push; |
2 | 7 | ||
3 | import org.eclipse.xtext.web.server.IServiceContext; | 8 | import org.eclipse.xtext.web.server.IServiceContext; |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocument.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocument.java index 906b9e30..56fd12c9 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocument.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocument.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.xtext.server.push; | 6 | package tools.refinery.language.web.xtext.server.push; |
2 | 7 | ||
3 | import java.util.ArrayList; | 8 | import java.util.ArrayList; |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocumentAccess.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocumentAccess.java index b3666a86..d9e548cd 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocumentAccess.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocumentAccess.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.xtext.server.push; | 6 | package tools.refinery.language.web.xtext.server.push; |
2 | 7 | ||
3 | import org.eclipse.xtext.service.OperationCanceledManager; | 8 | import org.eclipse.xtext.service.OperationCanceledManager; |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocumentProvider.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocumentProvider.java index b6f04748..b6f4fb43 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocumentProvider.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/server/push/PushWebDocumentProvider.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.xtext.server.push; | 6 | package tools.refinery.language.web.xtext.server.push; |
2 | 7 | ||
3 | import org.eclipse.xtext.web.server.IServiceContext; | 8 | import org.eclipse.xtext.web.server.IServiceContext; |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/SimpleServiceContext.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/SimpleServiceContext.java index 43e37160..fee1141d 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/SimpleServiceContext.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/SimpleServiceContext.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.xtext.servlet; | 6 | package tools.refinery.language.web.xtext.servlet; |
2 | 7 | ||
3 | import java.util.Map; | 8 | import java.util.Map; |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/SimpleSession.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/SimpleSession.java index 09c055a2..bc60c282 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/SimpleSession.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/SimpleSession.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.xtext.servlet; | 6 | package tools.refinery.language.web.xtext.servlet; |
2 | 7 | ||
3 | import java.util.HashMap; | 8 | import java.util.HashMap; |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextStatusCode.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextStatusCode.java index 0cd229e8..caa98e84 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextStatusCode.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextStatusCode.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.xtext.servlet; | 6 | package tools.refinery.language.web.xtext.servlet; |
2 | 7 | ||
3 | public final class XtextStatusCode { | 8 | public final class XtextStatusCode { |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextWebSocket.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextWebSocket.java index 1d9e0463..043d318c 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextWebSocket.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextWebSocket.java | |||
@@ -1,12 +1,17 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.xtext.servlet; | 6 | package tools.refinery.language.web.xtext.servlet; |
2 | 7 | ||
3 | import com.google.gson.Gson; | 8 | import com.google.gson.Gson; |
4 | import com.google.gson.JsonIOException; | 9 | import com.google.gson.JsonIOException; |
5 | import com.google.gson.JsonParseException; | 10 | import com.google.gson.JsonParseException; |
6 | import org.eclipse.jetty.ee10.websocket.api.Session; | 11 | import org.eclipse.jetty.websocket.api.Callback; |
7 | import org.eclipse.jetty.ee10.websocket.api.StatusCode; | 12 | import org.eclipse.jetty.websocket.api.Session; |
8 | import org.eclipse.jetty.ee10.websocket.api.WriteCallback; | 13 | import org.eclipse.jetty.websocket.api.StatusCode; |
9 | import org.eclipse.jetty.ee10.websocket.api.annotations.*; | 14 | import org.eclipse.jetty.websocket.api.annotations.*; |
10 | import org.eclipse.xtext.resource.IResourceServiceProvider; | 15 | import org.eclipse.xtext.resource.IResourceServiceProvider; |
11 | import org.eclipse.xtext.web.server.ISession; | 16 | import org.eclipse.xtext.web.server.ISession; |
12 | import org.slf4j.Logger; | 17 | import org.slf4j.Logger; |
@@ -20,7 +25,7 @@ import tools.refinery.language.web.xtext.server.message.XtextWebResponse; | |||
20 | import java.io.Reader; | 25 | import java.io.Reader; |
21 | 26 | ||
22 | @WebSocket | 27 | @WebSocket |
23 | public class XtextWebSocket implements WriteCallback, ResponseHandler { | 28 | public class XtextWebSocket implements ResponseHandler { |
24 | private static final Logger LOG = LoggerFactory.getLogger(XtextWebSocket.class); | 29 | private static final Logger LOG = LoggerFactory.getLogger(XtextWebSocket.class); |
25 | 30 | ||
26 | private final Gson gson = new Gson(); | 31 | private final Gson gson = new Gson(); |
@@ -38,13 +43,13 @@ public class XtextWebSocket implements WriteCallback, ResponseHandler { | |||
38 | this(new TransactionExecutor(session, resourceServiceProviderRegistry)); | 43 | this(new TransactionExecutor(session, resourceServiceProviderRegistry)); |
39 | } | 44 | } |
40 | 45 | ||
41 | @OnWebSocketConnect | 46 | @OnWebSocketOpen |
42 | public void onConnect(Session webSocketSession) { | 47 | public void onOpen(Session webSocketSession) { |
43 | if (this.webSocketSession != null) { | 48 | if (this.webSocketSession != null) { |
44 | LOG.error("Websocket session onConnect when already connected"); | 49 | LOG.error("Websocket session onConnect when already connected"); |
45 | return; | 50 | return; |
46 | } | 51 | } |
47 | LOG.debug("New websocket connection from {}", webSocketSession.getRemoteAddress()); | 52 | LOG.debug("New websocket connection from {}", webSocketSession.getRemoteSocketAddress()); |
48 | this.webSocketSession = webSocketSession; | 53 | this.webSocketSession = webSocketSession; |
49 | } | 54 | } |
50 | 55 | ||
@@ -55,10 +60,10 @@ public class XtextWebSocket implements WriteCallback, ResponseHandler { | |||
55 | return; | 60 | return; |
56 | } | 61 | } |
57 | if (statusCode == StatusCode.NORMAL || statusCode == StatusCode.SHUTDOWN) { | 62 | if (statusCode == StatusCode.NORMAL || statusCode == StatusCode.SHUTDOWN) { |
58 | LOG.debug("{} closed connection normally: {}", webSocketSession.getRemoteAddress(), reason); | 63 | LOG.debug("{} closed connection normally: {}", webSocketSession.getRemoteSocketAddress(), reason); |
59 | } else { | 64 | } else { |
60 | LOG.warn("{} closed connection with status code {}: {}", webSocketSession.getRemoteAddress(), statusCode, | 65 | LOG.warn("{} closed connection with status code {}: {}", webSocketSession.getRemoteSocketAddress(), |
61 | reason); | 66 | statusCode, reason); |
62 | } | 67 | } |
63 | webSocketSession = null; | 68 | webSocketSession = null; |
64 | } | 69 | } |
@@ -68,7 +73,7 @@ public class XtextWebSocket implements WriteCallback, ResponseHandler { | |||
68 | if (webSocketSession == null) { | 73 | if (webSocketSession == null) { |
69 | return; | 74 | return; |
70 | } | 75 | } |
71 | LOG.error("Internal websocket error in connection from" + webSocketSession.getRemoteAddress(), error); | 76 | LOG.error("Internal websocket error in connection from" + webSocketSession.getRemoteSocketAddress(), error); |
72 | } | 77 | } |
73 | 78 | ||
74 | @OnWebSocketMessage | 79 | @OnWebSocketMessage |
@@ -81,14 +86,14 @@ public class XtextWebSocket implements WriteCallback, ResponseHandler { | |||
81 | try { | 86 | try { |
82 | request = gson.fromJson(reader, XtextWebRequest.class); | 87 | request = gson.fromJson(reader, XtextWebRequest.class); |
83 | } catch (JsonIOException e) { | 88 | } catch (JsonIOException e) { |
84 | LOG.error("Cannot read from websocket from" + webSocketSession.getRemoteAddress(), e); | 89 | LOG.error("Cannot read from websocket from" + webSocketSession.getRemoteSocketAddress(), e); |
85 | if (webSocketSession.isOpen()) { | 90 | if (webSocketSession.isOpen()) { |
86 | webSocketSession.close(StatusCode.SERVER_ERROR, "Cannot read payload"); | 91 | webSocketSession.close(StatusCode.SERVER_ERROR, "Cannot read payload", Callback.NOOP); |
87 | } | 92 | } |
88 | return; | 93 | return; |
89 | } catch (JsonParseException e) { | 94 | } catch (JsonParseException e) { |
90 | LOG.warn("Malformed websocket request from" + webSocketSession.getRemoteAddress(), e); | 95 | LOG.warn("Malformed websocket request from" + webSocketSession.getRemoteSocketAddress(), e); |
91 | webSocketSession.close(XtextStatusCode.INVALID_JSON, "Invalid JSON payload"); | 96 | webSocketSession.close(XtextStatusCode.INVALID_JSON, "Invalid JSON payload", Callback.NOOP); |
92 | return; | 97 | return; |
93 | } | 98 | } |
94 | try { | 99 | try { |
@@ -96,7 +101,7 @@ public class XtextWebSocket implements WriteCallback, ResponseHandler { | |||
96 | } catch (ResponseHandlerException e) { | 101 | } catch (ResponseHandlerException e) { |
97 | LOG.warn("Cannot write websocket response", e); | 102 | LOG.warn("Cannot write websocket response", e); |
98 | if (webSocketSession.isOpen()) { | 103 | if (webSocketSession.isOpen()) { |
99 | webSocketSession.close(StatusCode.SERVER_ERROR, "Cannot write response"); | 104 | webSocketSession.close(StatusCode.SERVER_ERROR, "Cannot write response", Callback.NOOP); |
100 | } | 105 | } |
101 | } | 106 | } |
102 | } | 107 | } |
@@ -107,15 +112,14 @@ public class XtextWebSocket implements WriteCallback, ResponseHandler { | |||
107 | throw new ResponseHandlerException("Trying to send message when websocket is disconnected"); | 112 | throw new ResponseHandlerException("Trying to send message when websocket is disconnected"); |
108 | } | 113 | } |
109 | var responseString = gson.toJson(response); | 114 | var responseString = gson.toJson(response); |
110 | webSocketSession.getRemote().sendPartialString(responseString, true, this); | 115 | webSocketSession.sendText(responseString, Callback.from(() -> {}, this::writeFailed)); |
111 | } | 116 | } |
112 | 117 | ||
113 | @Override | ||
114 | public void writeFailed(Throwable x) { | 118 | public void writeFailed(Throwable x) { |
115 | if (webSocketSession == null) { | 119 | if (webSocketSession == null) { |
116 | LOG.error("Cannot complete async write to disconnected websocket", x); | 120 | LOG.error("Cannot complete async write to disconnected websocket", x); |
117 | return; | 121 | return; |
118 | } | 122 | } |
119 | LOG.warn("Cannot complete async write to websocket " + webSocketSession.getRemoteAddress(), x); | 123 | LOG.warn("Cannot complete async write to websocket " + webSocketSession.getRemoteSocketAddress(), x); |
120 | } | 124 | } |
121 | } | 125 | } |
diff --git a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextWebSocketServlet.java b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextWebSocketServlet.java index 9a32b937..5e4fb0ce 100644 --- a/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextWebSocketServlet.java +++ b/subprojects/language-web/src/main/java/tools/refinery/language/web/xtext/servlet/XtextWebSocketServlet.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.xtext.servlet; | 6 | package tools.refinery.language.web.xtext.servlet; |
2 | 7 | ||
3 | import jakarta.servlet.ServletConfig; | 8 | import jakarta.servlet.ServletConfig; |
diff --git a/subprojects/language-web/src/test/java/tools/refinery/language/web/ProblemWebSocketServletIntegrationTest.java b/subprojects/language-web/src/test/java/tools/refinery/language/web/ProblemWebSocketServletIntegrationTest.java index ecbefc4f..927eeab1 100644 --- a/subprojects/language-web/src/test/java/tools/refinery/language/web/ProblemWebSocketServletIntegrationTest.java +++ b/subprojects/language-web/src/test/java/tools/refinery/language/web/ProblemWebSocketServletIntegrationTest.java | |||
@@ -1,20 +1,30 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web; | 6 | package tools.refinery.language.web; |
2 | 7 | ||
3 | import org.eclipse.jetty.ee10.servlet.ServletContextHandler; | 8 | import org.eclipse.jetty.ee10.servlet.ServletContextHandler; |
4 | import org.eclipse.jetty.ee10.servlet.ServletHolder; | 9 | import org.eclipse.jetty.ee10.servlet.ServletHolder; |
5 | import org.eclipse.jetty.ee10.websocket.api.Session; | ||
6 | import org.eclipse.jetty.ee10.websocket.api.StatusCode; | ||
7 | import org.eclipse.jetty.ee10.websocket.api.annotations.WebSocket; | ||
8 | import org.eclipse.jetty.ee10.websocket.api.exceptions.UpgradeException; | ||
9 | import org.eclipse.jetty.ee10.websocket.client.ClientUpgradeRequest; | ||
10 | import org.eclipse.jetty.ee10.websocket.client.WebSocketClient; | ||
11 | import org.eclipse.jetty.ee10.websocket.server.config.JettyWebSocketServletContainerInitializer; | 10 | import org.eclipse.jetty.ee10.websocket.server.config.JettyWebSocketServletContainerInitializer; |
12 | import org.eclipse.jetty.http.HttpHeader; | 11 | import org.eclipse.jetty.http.HttpHeader; |
13 | import org.eclipse.jetty.http.HttpStatus; | 12 | import org.eclipse.jetty.http.HttpStatus; |
14 | import org.eclipse.jetty.server.Server; | 13 | import org.eclipse.jetty.server.Server; |
14 | import org.eclipse.jetty.util.thread.QueuedThreadPool; | ||
15 | import org.eclipse.jetty.websocket.api.Callback; | ||
16 | import org.eclipse.jetty.websocket.api.Session; | ||
17 | import org.eclipse.jetty.websocket.api.StatusCode; | ||
18 | import org.eclipse.jetty.websocket.api.annotations.WebSocket; | ||
19 | import org.eclipse.jetty.websocket.api.exceptions.UpgradeException; | ||
20 | import org.eclipse.jetty.websocket.client.ClientUpgradeRequest; | ||
21 | import org.eclipse.jetty.websocket.client.WebSocketClient; | ||
15 | import org.eclipse.xtext.testing.GlobalRegistries; | 22 | import org.eclipse.xtext.testing.GlobalRegistries; |
16 | import org.eclipse.xtext.testing.GlobalRegistries.GlobalStateMemento; | 23 | import org.eclipse.xtext.testing.GlobalRegistries.GlobalStateMemento; |
17 | import org.junit.jupiter.api.*; | 24 | import org.junit.jupiter.api.AfterEach; |
25 | import org.junit.jupiter.api.BeforeEach; | ||
26 | import org.junit.jupiter.api.Test; | ||
27 | import org.junit.jupiter.api.TestInfo; | ||
18 | import org.junit.jupiter.params.ParameterizedTest; | 28 | import org.junit.jupiter.params.ParameterizedTest; |
19 | import org.junit.jupiter.params.provider.ValueSource; | 29 | import org.junit.jupiter.params.provider.ValueSource; |
20 | import tools.refinery.language.web.tests.WebSocketIntegrationTestClient; | 30 | import tools.refinery.language.web.tests.WebSocketIntegrationTestClient; |
@@ -86,23 +96,34 @@ class ProblemWebSocketServletIntegrationTest { | |||
86 | assertThat(responses, hasSize(5)); | 96 | assertThat(responses, hasSize(5)); |
87 | assertThat(responses.get(0), equalTo("{\"id\":\"foo\",\"response\":{\"stateId\":\"-80000000\"}}")); | 97 | assertThat(responses.get(0), equalTo("{\"id\":\"foo\",\"response\":{\"stateId\":\"-80000000\"}}")); |
88 | assertThat(responses.get(1), startsWith( | 98 | assertThat(responses.get(1), startsWith( |
89 | "{\"resource\":\"test.problem\",\"stateId\":\"-80000000\",\"service\":\"highlight\",\"push\":{\"regions\":[")); | 99 | "{\"resource\":\"test.problem\",\"stateId\":\"-80000000\",\"service\":\"highlight\"," + |
100 | "\"push\":{\"regions\":[")); | ||
90 | assertThat(responses.get(2), equalTo( | 101 | assertThat(responses.get(2), equalTo( |
91 | "{\"resource\":\"test.problem\",\"stateId\":\"-80000000\",\"service\":\"validate\",\"push\":{\"issues\":[]}}")); | 102 | "{\"resource\":\"test.problem\",\"stateId\":\"-80000000\",\"service\":\"validate\"," + |
103 | "\"push\":{\"issues\":[]}}")); | ||
92 | assertThat(responses.get(3), equalTo("{\"id\":\"bar\",\"response\":{\"stateId\":\"-7fffffff\"}}")); | 104 | assertThat(responses.get(3), equalTo("{\"id\":\"bar\",\"response\":{\"stateId\":\"-7fffffff\"}}")); |
93 | assertThat(responses.get(4), startsWith( | 105 | assertThat(responses.get(4), startsWith( |
94 | "{\"resource\":\"test.problem\",\"stateId\":\"-7fffffff\",\"service\":\"highlight\",\"push\":{\"regions\":[")); | 106 | "{\"resource\":\"test.problem\",\"stateId\":\"-7fffffff\",\"service\":\"highlight\"," + |
107 | "\"push\":{\"regions\":[")); | ||
95 | } | 108 | } |
96 | 109 | ||
97 | @WebSocket | 110 | @WebSocket |
98 | public static class UpdateTestClient extends WebSocketIntegrationTestClient { | 111 | public static class UpdateTestClient extends WebSocketIntegrationTestClient { |
99 | @Override | 112 | @Override |
100 | protected void arrange(Session session, int responsesReceived) throws IOException { | 113 | protected void arrange(Session session, int responsesReceived) { |
101 | switch (responsesReceived) { | 114 | switch (responsesReceived) { |
102 | case 0 -> session.getRemote().sendString( | 115 | case 0 -> session.sendText( |
103 | "{\"id\":\"foo\",\"request\":{\"resource\":\"test.problem\",\"serviceType\":\"update\",\"fullText\":\"class Person.\n\"}}"); | 116 | "{\"id\":\"foo\",\"request\":{\"resource\":\"test.problem\",\"serviceType\":\"update\"," + |
104 | case 3 -> session.getRemote().sendString( | 117 | "\"fullText\":\"class Person.\n\"}}", |
105 | "{\"id\":\"bar\",\"request\":{\"resource\":\"test.problem\",\"serviceType\":\"update\",\"requiredStateId\":\"-80000000\",\"deltaText\":\"indiv q.\nnode(q).\n\",\"deltaOffset\":\"0\",\"deltaReplaceLength\":\"0\"}}"); | 118 | Callback.NOOP |
119 | ); | ||
120 | case 3 -> //noinspection TextBlockMigration | ||
121 | session.sendText( | ||
122 | "{\"id\":\"bar\",\"request\":{\"resource\":\"test.problem\",\"serviceType\":\"update\"," + | ||
123 | "\"requiredStateId\":\"-80000000\",\"deltaText\":\"indiv q.\nnode(q).\n\"," + | ||
124 | "\"deltaOffset\":\"0\",\"deltaReplaceLength\":\"0\"}}", | ||
125 | Callback.NOOP | ||
126 | ); | ||
106 | case 5 -> session.close(); | 127 | case 5 -> session.close(); |
107 | } | 128 | } |
108 | } | 129 | } |
@@ -152,13 +173,13 @@ class ProblemWebSocketServletIntegrationTest { | |||
152 | @WebSocket | 173 | @WebSocket |
153 | public static class InvalidJsonTestClient extends WebSocketIntegrationTestClient { | 174 | public static class InvalidJsonTestClient extends WebSocketIntegrationTestClient { |
154 | @Override | 175 | @Override |
155 | protected void arrange(Session session, int responsesReceived) throws IOException { | 176 | protected void arrange(Session session, int responsesReceived) { |
156 | session.getRemote().sendString("<invalid json>"); | 177 | session.sendText("<invalid json>", Callback.NOOP); |
157 | } | 178 | } |
158 | } | 179 | } |
159 | 180 | ||
160 | @ParameterizedTest(name = "validOriginTest(\"{0}\")") | 181 | @ParameterizedTest(name = "validOriginTest(\"{0}\")") |
161 | @ValueSource(strings = { "https://refinery.example", "https://refinery.example:443", "HTTPS://REFINERY.EXAMPLE" }) | 182 | @ValueSource(strings = {"https://refinery.example", "https://refinery.example:443", "HTTPS://REFINERY.EXAMPLE"}) |
162 | void validOriginTest(String origin) { | 183 | void validOriginTest(String origin) { |
163 | startServer("https://refinery.example,https://refinery.example:443"); | 184 | startServer("https://refinery.example,https://refinery.example:443"); |
164 | var clientSocket = new CloseImmediatelyTestClient(); | 185 | var clientSocket = new CloseImmediatelyTestClient(); |
@@ -188,7 +209,8 @@ class ProblemWebSocketServletIntegrationTest { | |||
188 | private void startServer(String allowedOrigins) { | 209 | private void startServer(String allowedOrigins) { |
189 | var testName = getClass().getSimpleName() + "-" + testInfo.getDisplayName(); | 210 | var testName = getClass().getSimpleName() + "-" + testInfo.getDisplayName(); |
190 | var listenAddress = new InetSocketAddress(HOSTNAME, serverPort); | 211 | var listenAddress = new InetSocketAddress(HOSTNAME, serverPort); |
191 | server = VirtualThreadUtils.newServerWithVirtualThreadsThreadPool(testName, listenAddress); | 212 | server = new Server(listenAddress); |
213 | ((QueuedThreadPool) server.getThreadPool()).setName(testName); | ||
192 | var handler = new ServletContextHandler(); | 214 | var handler = new ServletContextHandler(); |
193 | var holder = new ServletHolder(ProblemWebSocketServlet.class); | 215 | var holder = new ServletHolder(ProblemWebSocketServlet.class); |
194 | if (allowedOrigins != null) { | 216 | if (allowedOrigins != null) { |
diff --git a/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/AwaitTerminationExecutorServiceProvider.java b/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/AwaitTerminationExecutorServiceProvider.java index c634e8fc..52acee6d 100644 --- a/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/AwaitTerminationExecutorServiceProvider.java +++ b/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/AwaitTerminationExecutorServiceProvider.java | |||
@@ -1,14 +1,19 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.tests; | 6 | package tools.refinery.language.web.tests; |
2 | 7 | ||
3 | import com.google.inject.Singleton; | 8 | import com.google.inject.Singleton; |
4 | import tools.refinery.language.web.xtext.VirtualThreadExecutorServiceProvider; | 9 | import org.eclipse.xtext.ide.ExecutorServiceProvider; |
5 | 10 | ||
6 | import java.util.ArrayList; | 11 | import java.util.ArrayList; |
7 | import java.util.List; | 12 | import java.util.List; |
8 | import java.util.concurrent.ExecutorService; | 13 | import java.util.concurrent.ExecutorService; |
9 | 14 | ||
10 | @Singleton | 15 | @Singleton |
11 | public class AwaitTerminationExecutorServiceProvider extends VirtualThreadExecutorServiceProvider { | 16 | public class AwaitTerminationExecutorServiceProvider extends ExecutorServiceProvider { |
12 | private final List<RestartableCachedThreadPool> servicesToShutDown = new ArrayList<>(); | 17 | private final List<RestartableCachedThreadPool> servicesToShutDown = new ArrayList<>(); |
13 | 18 | ||
14 | @Override | 19 | @Override |
diff --git a/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/ProblemWebInjectorProvider.java b/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/ProblemWebInjectorProvider.java index 43c12faa..4a5eed95 100644 --- a/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/ProblemWebInjectorProvider.java +++ b/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/ProblemWebInjectorProvider.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.tests; | 6 | package tools.refinery.language.web.tests; |
2 | 7 | ||
3 | import org.eclipse.xtext.ide.ExecutorServiceProvider; | 8 | import org.eclipse.xtext.ide.ExecutorServiceProvider; |
diff --git a/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/RestartableCachedThreadPool.java b/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/RestartableCachedThreadPool.java index cf805eda..09079aa8 100644 --- a/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/RestartableCachedThreadPool.java +++ b/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/RestartableCachedThreadPool.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.tests; | 6 | package tools.refinery.language.web.tests; |
2 | 7 | ||
3 | import com.google.inject.Provider; | 8 | import com.google.inject.Provider; |
diff --git a/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/WebSocketIntegrationTestClient.java b/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/WebSocketIntegrationTestClient.java index f19c10ca..6ccf1760 100644 --- a/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/WebSocketIntegrationTestClient.java +++ b/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/WebSocketIntegrationTestClient.java | |||
@@ -1,12 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.tests; | 6 | package tools.refinery.language.web.tests; |
2 | 7 | ||
3 | import org.eclipse.jetty.ee10.websocket.api.Session; | 8 | import org.eclipse.jetty.websocket.api.Session; |
4 | import org.eclipse.jetty.ee10.websocket.api.annotations.OnWebSocketClose; | 9 | import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose; |
5 | import org.eclipse.jetty.ee10.websocket.api.annotations.OnWebSocketConnect; | 10 | import org.eclipse.jetty.websocket.api.annotations.OnWebSocketError; |
6 | import org.eclipse.jetty.ee10.websocket.api.annotations.OnWebSocketError; | 11 | import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage; |
7 | import org.eclipse.jetty.ee10.websocket.api.annotations.OnWebSocketMessage; | 12 | import org.eclipse.jetty.websocket.api.annotations.OnWebSocketOpen; |
8 | 13 | ||
9 | import java.io.IOException; | ||
10 | import java.time.Duration; | 14 | import java.time.Duration; |
11 | import java.util.ArrayList; | 15 | import java.util.ArrayList; |
12 | import java.util.List; | 16 | import java.util.List; |
@@ -14,7 +18,7 @@ import java.util.List; | |||
14 | import static org.junit.jupiter.api.Assertions.fail; | 18 | import static org.junit.jupiter.api.Assertions.fail; |
15 | 19 | ||
16 | public abstract class WebSocketIntegrationTestClient { | 20 | public abstract class WebSocketIntegrationTestClient { |
17 | private static final long TIMEOUT_MILLIS = Duration.ofSeconds(1).toMillis(); | 21 | private static final long TIMEOUT_MILLIS = Duration.ofSeconds(10).toMillis(); |
18 | 22 | ||
19 | private boolean finished = false; | 23 | private boolean finished = false; |
20 | 24 | ||
@@ -34,8 +38,8 @@ public abstract class WebSocketIntegrationTestClient { | |||
34 | return responses; | 38 | return responses; |
35 | } | 39 | } |
36 | 40 | ||
37 | @OnWebSocketConnect | 41 | @OnWebSocketOpen |
38 | public void onConnect(Session session) { | 42 | public void onOpen(Session session) { |
39 | arrangeAndCatchErrors(session); | 43 | arrangeAndCatchErrors(session); |
40 | } | 44 | } |
41 | 45 | ||
@@ -47,7 +51,7 @@ public abstract class WebSocketIntegrationTestClient { | |||
47 | } | 51 | } |
48 | } | 52 | } |
49 | 53 | ||
50 | protected abstract void arrange(Session session, int responsesReceived) throws IOException; | 54 | protected abstract void arrange(Session session, int responsesReceived); |
51 | 55 | ||
52 | @OnWebSocketClose | 56 | @OnWebSocketClose |
53 | public void onClose(int statusCode, String reason) { | 57 | public void onClose(int statusCode, String reason) { |
diff --git a/subprojects/language-web/src/test/java/tools/refinery/language/web/xtext/servlet/TransactionExecutorTest.java b/subprojects/language-web/src/test/java/tools/refinery/language/web/xtext/servlet/TransactionExecutorTest.java index 17f1ff5c..841bacd3 100644 --- a/subprojects/language-web/src/test/java/tools/refinery/language/web/xtext/servlet/TransactionExecutorTest.java +++ b/subprojects/language-web/src/test/java/tools/refinery/language/web/xtext/servlet/TransactionExecutorTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.web.xtext.servlet; | 6 | package tools.refinery.language.web.xtext.servlet; |
2 | 7 | ||
3 | import com.google.inject.Inject; | 8 | import com.google.inject.Inject; |
diff --git a/subprojects/language/build.gradle b/subprojects/language/build.gradle deleted file mode 100644 index 654558e3..00000000 --- a/subprojects/language/build.gradle +++ /dev/null | |||
@@ -1,73 +0,0 @@ | |||
1 | plugins { | ||
2 | id 'refinery-java-library' | ||
3 | id 'refinery-java-test-fixtures' | ||
4 | id 'refinery-mwe2' | ||
5 | id 'refinery-sonarqube' | ||
6 | id 'refinery-xtext-conventions' | ||
7 | } | ||
8 | |||
9 | dependencies { | ||
10 | api platform(libs.xtext.bom) | ||
11 | api libs.ecore | ||
12 | api libs.xtext.core | ||
13 | api libs.xtext.xbase | ||
14 | api project(':refinery-language-model') | ||
15 | testFixturesApi libs.xtext.testing | ||
16 | mwe2 libs.xtext.generator | ||
17 | mwe2 libs.xtext.generator.antlr | ||
18 | } | ||
19 | |||
20 | sourceSets { | ||
21 | testFixtures { | ||
22 | java.srcDirs += ['src/testFixtures/xtext-gen'] | ||
23 | resources.srcDirs += ['src/testFixtures/xtext-gen'] | ||
24 | } | ||
25 | } | ||
26 | |||
27 | tasks.named('jar') { | ||
28 | from(sourceSets.main.allSource) { | ||
29 | include '**/*.xtext' | ||
30 | } | ||
31 | } | ||
32 | |||
33 | def generateXtextLanguage = tasks.register('generateXtextLanguage', JavaExec) { | ||
34 | mainClass = 'org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher' | ||
35 | classpath = configurations.mwe2 | ||
36 | inputs.file 'src/main/java/tools/refinery/language/GenerateProblem.mwe2' | ||
37 | inputs.file 'src/main/java/tools/refinery/language/Problem.xtext' | ||
38 | outputs.dir 'src/main/xtext-gen' | ||
39 | outputs.dir 'src/testFixtures/xtext-gen' | ||
40 | outputs.dir '../language-ide/src/main/xtext-gen' | ||
41 | outputs.dir '../language-web/src/main/xtext-gen' | ||
42 | args += 'src/main/java/tools/refinery/language/GenerateProblem.mwe2' | ||
43 | args += '-p' | ||
44 | args += "rootPath=/${projectDir}/.." | ||
45 | } | ||
46 | |||
47 | for (taskName in [ | ||
48 | 'compileJava', | ||
49 | 'processResources', | ||
50 | 'processTestFixturesResources', | ||
51 | 'generateEclipseSourceFolders' | ||
52 | ]) { | ||
53 | tasks.named(taskName) { | ||
54 | dependsOn generateXtextLanguage | ||
55 | } | ||
56 | } | ||
57 | |||
58 | tasks.named('clean') { | ||
59 | delete 'src/main/xtext-gen' | ||
60 | delete 'src/testFixtures/xtext-gen' | ||
61 | delete '../language-ide/src/main/xtext-gen' | ||
62 | delete '../language-web/src/main/xtext-gen' | ||
63 | } | ||
64 | |||
65 | sonarqube.properties { | ||
66 | properties['sonar.exclusions'] += [ | ||
67 | 'src/testFixtures/xtext-gen/**', | ||
68 | ] | ||
69 | } | ||
70 | |||
71 | eclipse.project.natures += [ | ||
72 | 'org.eclipse.xtext.ui.shared.xtextNature' | ||
73 | ] | ||
diff --git a/subprojects/language/build.gradle.kts b/subprojects/language/build.gradle.kts new file mode 100644 index 00000000..bac1e586 --- /dev/null +++ b/subprojects/language/build.gradle.kts | |||
@@ -0,0 +1,101 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | import tools.refinery.gradle.utils.SonarPropertiesUtils | ||
8 | |||
9 | plugins { | ||
10 | id("tools.refinery.gradle.java-library") | ||
11 | id("tools.refinery.gradle.java-test-fixtures") | ||
12 | id("tools.refinery.gradle.mwe2") | ||
13 | id("tools.refinery.gradle.sonarqube") | ||
14 | id("tools.refinery.gradle.xtext-generated") | ||
15 | } | ||
16 | |||
17 | val generatedIdeSources: Configuration by configurations.creating { | ||
18 | isCanBeConsumed = true | ||
19 | isCanBeResolved = false | ||
20 | } | ||
21 | |||
22 | val generatedWebSources: Configuration by configurations.creating { | ||
23 | isCanBeConsumed = true | ||
24 | isCanBeResolved = false | ||
25 | } | ||
26 | |||
27 | dependencies { | ||
28 | api(platform(libs.xtext.bom)) | ||
29 | api(libs.ecore) | ||
30 | api(libs.xtext.core) | ||
31 | api(libs.xtext.xbase) | ||
32 | api(project(":refinery-language-model")) | ||
33 | testFixturesApi(libs.xtext.testing) | ||
34 | mwe2(libs.xtext.generator) | ||
35 | mwe2(libs.xtext.generator.antlr) | ||
36 | } | ||
37 | |||
38 | sourceSets { | ||
39 | testFixtures { | ||
40 | java.srcDir("src/testFixtures/xtext-gen") | ||
41 | resources.srcDir("src/testFixtures/xtext-gen") | ||
42 | } | ||
43 | } | ||
44 | |||
45 | val generateXtextLanguage by tasks.registering(JavaExec::class) { | ||
46 | mainClass.set("org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher") | ||
47 | classpath(configurations.mwe2) | ||
48 | inputs.file("src/main/java/tools/refinery/language/GenerateProblem.mwe2") | ||
49 | inputs.file("src/main/java/tools/refinery/language/Problem.xtext") | ||
50 | inputs.file("../language-model/src/main/resources/model/problem.ecore") | ||
51 | inputs.file("../language-model/src/main/resources/model/problem.genmodel") | ||
52 | outputs.dir("src/main/xtext-gen") | ||
53 | outputs.dir("src/testFixtures/xtext-gen") | ||
54 | outputs.dir("$buildDir/generated/sources/xtext/ide") | ||
55 | outputs.dir("$buildDir/generated/sources/xtext/web") | ||
56 | args("src/main/java/tools/refinery/language/GenerateProblem.mwe2", "-p", "rootPath=/$projectDir/..") | ||
57 | } | ||
58 | |||
59 | tasks { | ||
60 | jar { | ||
61 | from(sourceSets.main.map { it.allSource }) { | ||
62 | include("**/*.xtext") | ||
63 | } | ||
64 | } | ||
65 | |||
66 | syncXtextGeneratedSources { | ||
67 | // We generate Xtext runtime sources directly to {@code src/main/xtext-gen}, so there is no need to copy them | ||
68 | // from an artifact. We expose the {@code generatedIdeSources} and {@code generatedWebSources} artifacts to | ||
69 | // sibling IDE and web projects which can use this task to consume them and copy the appropriate sources to | ||
70 | // their own {@code src/main/xtext-gen} directory. | ||
71 | enabled = false | ||
72 | } | ||
73 | |||
74 | for (taskName in listOf("compileJava", "processResources", "compileTestFixturesJava", | ||
75 | "processTestFixturesResources", "generateEclipseSourceFolders")) { | ||
76 | named(taskName) { | ||
77 | dependsOn(generateXtextLanguage) | ||
78 | } | ||
79 | } | ||
80 | |||
81 | clean { | ||
82 | delete("src/main/xtext-gen") | ||
83 | delete("src/testFixtures/xtext-gen") | ||
84 | } | ||
85 | } | ||
86 | |||
87 | artifacts { | ||
88 | add(generatedIdeSources.name, file("$buildDir/generated/sources/xtext/ide")) { | ||
89 | builtBy(generateXtextLanguage) | ||
90 | } | ||
91 | |||
92 | add(generatedWebSources.name, file("$buildDir/generated/sources/xtext/web")) { | ||
93 | builtBy(generateXtextLanguage) | ||
94 | } | ||
95 | } | ||
96 | |||
97 | sonarqube.properties { | ||
98 | SonarPropertiesUtils.addToList(properties, "sonar.exclusions", "src/textFixtures/xtext-gen/**") | ||
99 | } | ||
100 | |||
101 | eclipse.project.natures.plusAssign("org.eclipse.xtext.ui.shared.xtextNature") | ||
diff --git a/subprojects/language/src/main/java/tools/refinery/language/GenerateProblem.mwe2 b/subprojects/language/src/main/java/tools/refinery/language/GenerateProblem.mwe2 index 21ff456e..59eba8f7 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/GenerateProblem.mwe2 +++ b/subprojects/language/src/main/java/tools/refinery/language/GenerateProblem.mwe2 | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | module tools.refinery.language.GenerateProblem | 6 | module tools.refinery.language.GenerateProblem |
2 | 7 | ||
3 | import org.eclipse.xtext.xtext.generator.* | 8 | import org.eclipse.xtext.xtext.generator.* |
@@ -11,16 +16,28 @@ Workflow { | |||
11 | project = StandardProjectConfig { | 16 | project = StandardProjectConfig { |
12 | baseName = 'language' | 17 | baseName = 'language' |
13 | rootPath = rootPath | 18 | rootPath = rootPath |
19 | runtime = { | ||
20 | // Do not generate new files into src/main/java | ||
21 | src = null | ||
22 | } | ||
14 | runtimeTest = { | 23 | runtimeTest = { |
15 | enabled = true | 24 | enabled = true |
16 | srcGen = 'src/testFixtures/xtext-gen' | 25 | // Only generate the xtext-gen files and leave the rest of the project alone |
26 | root = null | ||
27 | srcGen = '${rootPath}/language/src/testFixtures/xtext-gen' | ||
17 | } | 28 | } |
18 | genericIde = { | 29 | genericIde = { |
19 | name = 'language-ide' | 30 | name = 'language-ide' |
31 | // Only generate the xtext-gen files and leave the rest of the project alone | ||
32 | root = null | ||
33 | srcGen = "${rootPath}/language/build/generated/sources/xtext/ide" | ||
20 | } | 34 | } |
21 | web = { | 35 | web = { |
22 | enabled = true | 36 | enabled = true |
23 | name = 'language-web' | 37 | name = 'language-web' |
38 | // Only generate the xtext-gen files and leave the rest of the project alone | ||
39 | root = null | ||
40 | srcGen = "${rootPath}/language/build/generated/sources/xtext/web" | ||
24 | } | 41 | } |
25 | mavenLayout = true | 42 | mavenLayout = true |
26 | } | 43 | } |
@@ -55,7 +72,7 @@ Workflow { | |||
55 | } | 72 | } |
56 | webSupport = { | 73 | webSupport = { |
57 | // We only generate the {@code AbstractProblemWebModule}, | 74 | // We only generate the {@code AbstractProblemWebModule}, |
58 | // because we write our own integration code for CodeMirror 6. | 75 | // because we write our own integration code for CodeMirror 6. |
59 | framework = 'codemirror' | 76 | framework = 'codemirror' |
60 | generateHtmlExample = false | 77 | generateHtmlExample = false |
61 | generateJettyLauncher = false | 78 | generateJettyLauncher = false |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/Problem.xtext b/subprojects/language/src/main/java/tools/refinery/language/Problem.xtext index 187ebf1f..9e330347 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/Problem.xtext +++ b/subprojects/language/src/main/java/tools/refinery/language/Problem.xtext | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | grammar tools.refinery.language.Problem with org.eclipse.xtext.common.Terminals | 6 | grammar tools.refinery.language.Problem with org.eclipse.xtext.common.Terminals |
2 | 7 | ||
3 | import "http://www.eclipse.org/emf/2002/Ecore" as ecore | 8 | import "http://www.eclipse.org/emf/2002/Ecore" as ecore |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/ProblemRuntimeModule.java b/subprojects/language/src/main/java/tools/refinery/language/ProblemRuntimeModule.java index 5efcdc81..2636a8ee 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/ProblemRuntimeModule.java +++ b/subprojects/language/src/main/java/tools/refinery/language/ProblemRuntimeModule.java | |||
@@ -1,4 +1,10 @@ | |||
1 | /* | 1 | /* |
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | /* | ||
2 | * generated by Xtext 2.25.0 | 8 | * generated by Xtext 2.25.0 |
3 | */ | 9 | */ |
4 | package tools.refinery.language; | 10 | package tools.refinery.language; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/ProblemStandaloneSetup.java b/subprojects/language/src/main/java/tools/refinery/language/ProblemStandaloneSetup.java index 41c96114..639d6778 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/ProblemStandaloneSetup.java +++ b/subprojects/language/src/main/java/tools/refinery/language/ProblemStandaloneSetup.java | |||
@@ -1,4 +1,10 @@ | |||
1 | /* | 1 | /* |
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | /* | ||
2 | * generated by Xtext 2.25.0 | 8 | * generated by Xtext 2.25.0 |
3 | */ | 9 | */ |
4 | package tools.refinery.language; | 10 | package tools.refinery.language; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/conversion/ProblemValueConverterService.java b/subprojects/language/src/main/java/tools/refinery/language/conversion/ProblemValueConverterService.java index 508688ed..afbc367e 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/conversion/ProblemValueConverterService.java +++ b/subprojects/language/src/main/java/tools/refinery/language/conversion/ProblemValueConverterService.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.conversion; | 6 | package tools.refinery.language.conversion; |
2 | 7 | ||
3 | import org.eclipse.xtext.common.services.DefaultTerminalConverters; | 8 | import org.eclipse.xtext.common.services.DefaultTerminalConverters; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/conversion/UpperBoundValueConverter.java b/subprojects/language/src/main/java/tools/refinery/language/conversion/UpperBoundValueConverter.java index be0d15ad..4886757d 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/conversion/UpperBoundValueConverter.java +++ b/subprojects/language/src/main/java/tools/refinery/language/conversion/UpperBoundValueConverter.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.conversion; | 6 | package tools.refinery.language.conversion; |
2 | 7 | ||
3 | import org.eclipse.xtext.conversion.ValueConverterException; | 8 | import org.eclipse.xtext.conversion.ValueConverterException; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/formatting2/ProblemFormatter.java b/subprojects/language/src/main/java/tools/refinery/language/formatting2/ProblemFormatter.java index 797535ea..55a5ac20 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/formatting2/ProblemFormatter.java +++ b/subprojects/language/src/main/java/tools/refinery/language/formatting2/ProblemFormatter.java | |||
@@ -1,4 +1,10 @@ | |||
1 | /* | 1 | /* |
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | /* | ||
2 | * generated by Xtext 2.26.0.M2 | 8 | * generated by Xtext 2.26.0.M2 |
3 | */ | 9 | */ |
4 | package tools.refinery.language.formatting2; | 10 | package tools.refinery.language.formatting2; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/naming/NamingUtil.java b/subprojects/language/src/main/java/tools/refinery/language/naming/NamingUtil.java index e959be74..1647d4e7 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/naming/NamingUtil.java +++ b/subprojects/language/src/main/java/tools/refinery/language/naming/NamingUtil.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.naming; | 6 | package tools.refinery.language.naming; |
2 | 7 | ||
3 | import java.util.regex.Pattern; | 8 | import java.util.regex.Pattern; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/naming/ProblemQualifiedNameConverter.java b/subprojects/language/src/main/java/tools/refinery/language/naming/ProblemQualifiedNameConverter.java index 5453906f..74b4e208 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/naming/ProblemQualifiedNameConverter.java +++ b/subprojects/language/src/main/java/tools/refinery/language/naming/ProblemQualifiedNameConverter.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.naming; | 6 | package tools.refinery.language.naming; |
2 | 7 | ||
3 | import org.eclipse.xtext.naming.IQualifiedNameConverter; | 8 | import org.eclipse.xtext.naming.IQualifiedNameConverter; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/parser/antlr/IdentifierTokenProvider.java b/subprojects/language/src/main/java/tools/refinery/language/parser/antlr/IdentifierTokenProvider.java index ab133a90..306a86fc 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/parser/antlr/IdentifierTokenProvider.java +++ b/subprojects/language/src/main/java/tools/refinery/language/parser/antlr/IdentifierTokenProvider.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.parser.antlr; | 6 | package tools.refinery.language.parser.antlr; |
2 | 7 | ||
3 | import com.google.inject.Inject; | 8 | import com.google.inject.Inject; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/parser/antlr/ProblemTokenSource.java b/subprojects/language/src/main/java/tools/refinery/language/parser/antlr/ProblemTokenSource.java index 0b4e7185..5b91a6cc 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/parser/antlr/ProblemTokenSource.java +++ b/subprojects/language/src/main/java/tools/refinery/language/parser/antlr/ProblemTokenSource.java | |||
@@ -1,4 +1,10 @@ | |||
1 | /* | 1 | /* |
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | /* | ||
2 | * generated by Xtext 2.29.0.M2 | 8 | * generated by Xtext 2.29.0.M2 |
3 | */ | 9 | */ |
4 | package tools.refinery.language.parser.antlr; | 10 | package tools.refinery.language.parser.antlr; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/parser/antlr/TokenSourceInjectingProblemParser.java b/subprojects/language/src/main/java/tools/refinery/language/parser/antlr/TokenSourceInjectingProblemParser.java index 0cdd38d8..fe4c0bc7 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/parser/antlr/TokenSourceInjectingProblemParser.java +++ b/subprojects/language/src/main/java/tools/refinery/language/parser/antlr/TokenSourceInjectingProblemParser.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.parser.antlr; | 6 | package tools.refinery.language.parser.antlr; |
2 | 7 | ||
3 | import com.google.inject.Inject; | 8 | import com.google.inject.Inject; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/resource/DerivedVariableComputer.java b/subprojects/language/src/main/java/tools/refinery/language/resource/DerivedVariableComputer.java index 6176b0c4..07c5da41 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/resource/DerivedVariableComputer.java +++ b/subprojects/language/src/main/java/tools/refinery/language/resource/DerivedVariableComputer.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.resource; | 6 | package tools.refinery.language.resource; |
2 | 7 | ||
3 | import com.google.inject.Inject; | 8 | import com.google.inject.Inject; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/resource/ImplicitVariableScope.java b/subprojects/language/src/main/java/tools/refinery/language/resource/ImplicitVariableScope.java index b0ac2ab6..e97c8287 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/resource/ImplicitVariableScope.java +++ b/subprojects/language/src/main/java/tools/refinery/language/resource/ImplicitVariableScope.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.resource; | 6 | package tools.refinery.language.resource; |
2 | 7 | ||
3 | import org.eclipse.emf.ecore.EObject; | 8 | import org.eclipse.emf.ecore.EObject; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/resource/NodeNameCollector.java b/subprojects/language/src/main/java/tools/refinery/language/resource/NodeNameCollector.java index 419be0d3..e5deca4d 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/resource/NodeNameCollector.java +++ b/subprojects/language/src/main/java/tools/refinery/language/resource/NodeNameCollector.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.resource; | 6 | package tools.refinery.language.resource; |
2 | 7 | ||
3 | import com.google.common.collect.ImmutableSet; | 8 | import com.google.common.collect.ImmutableSet; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemDerivedStateComputer.java b/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemDerivedStateComputer.java index 8d3a552a..b145ef27 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemDerivedStateComputer.java +++ b/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemDerivedStateComputer.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.resource; | 6 | package tools.refinery.language.resource; |
2 | 7 | ||
3 | import com.google.inject.Inject; | 8 | import com.google.inject.Inject; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemLocationInFileProvider.java b/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemLocationInFileProvider.java index df822987..1fe2df89 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemLocationInFileProvider.java +++ b/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemLocationInFileProvider.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.resource; | 6 | package tools.refinery.language.resource; |
2 | 7 | ||
3 | import org.eclipse.emf.ecore.EObject; | 8 | import org.eclipse.emf.ecore.EObject; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java b/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java index 1a0b73a8..630be379 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java +++ b/subprojects/language/src/main/java/tools/refinery/language/resource/ProblemResourceDescriptionStrategy.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.resource; | 6 | package tools.refinery.language.resource; |
2 | 7 | ||
3 | import org.eclipse.emf.ecore.EObject; | 8 | import org.eclipse.emf.ecore.EObject; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/resource/ReferenceCounter.java b/subprojects/language/src/main/java/tools/refinery/language/resource/ReferenceCounter.java index ca20325e..f1be55ee 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/resource/ReferenceCounter.java +++ b/subprojects/language/src/main/java/tools/refinery/language/resource/ReferenceCounter.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.resource; | 6 | package tools.refinery.language.resource; |
2 | 7 | ||
3 | import java.util.HashMap; | 8 | import java.util.HashMap; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemGlobalScopeProvider.java b/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemGlobalScopeProvider.java index b749154c..4d2dd772 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemGlobalScopeProvider.java +++ b/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemGlobalScopeProvider.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.scoping; | 6 | package tools.refinery.language.scoping; |
2 | 7 | ||
3 | import java.util.LinkedHashSet; | 8 | import java.util.LinkedHashSet; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemLocalScopeProvider.java b/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemLocalScopeProvider.java index 61883f0e..229960a0 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemLocalScopeProvider.java +++ b/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemLocalScopeProvider.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.scoping; | 6 | package tools.refinery.language.scoping; |
2 | 7 | ||
3 | import java.util.List; | 8 | import java.util.List; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemScopeProvider.java b/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemScopeProvider.java index 3ab07496..cf099aba 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemScopeProvider.java +++ b/subprojects/language/src/main/java/tools/refinery/language/scoping/ProblemScopeProvider.java | |||
@@ -1,4 +1,10 @@ | |||
1 | /* | 1 | /* |
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | /* | ||
2 | * generated by Xtext 2.25.0 | 8 | * generated by Xtext 2.25.0 |
3 | */ | 9 | */ |
4 | package tools.refinery.language.scoping; | 10 | package tools.refinery.language.scoping; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/serializer/PreferShortAssertionsProblemSemanticSequencer.java b/subprojects/language/src/main/java/tools/refinery/language/serializer/PreferShortAssertionsProblemSemanticSequencer.java index 27ce1521..b9cafbc2 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/serializer/PreferShortAssertionsProblemSemanticSequencer.java +++ b/subprojects/language/src/main/java/tools/refinery/language/serializer/PreferShortAssertionsProblemSemanticSequencer.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.serializer; | 6 | package tools.refinery.language.serializer; |
2 | 7 | ||
3 | import com.google.inject.Inject; | 8 | import com.google.inject.Inject; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/utils/BuiltinSymbols.java b/subprojects/language/src/main/java/tools/refinery/language/utils/BuiltinSymbols.java index d3777cd3..c8c7fd4a 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/utils/BuiltinSymbols.java +++ b/subprojects/language/src/main/java/tools/refinery/language/utils/BuiltinSymbols.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.utils; | 6 | package tools.refinery.language.utils; |
2 | 7 | ||
3 | import tools.refinery.language.model.problem.*; | 8 | import tools.refinery.language.model.problem.*; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/utils/CollectedSymbols.java b/subprojects/language/src/main/java/tools/refinery/language/utils/CollectedSymbols.java index b5682f32..e4e4d07a 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/utils/CollectedSymbols.java +++ b/subprojects/language/src/main/java/tools/refinery/language/utils/CollectedSymbols.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.utils; | 6 | package tools.refinery.language.utils; |
2 | 7 | ||
3 | import java.util.Map; | 8 | import java.util.Map; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/utils/ContainmentRole.java b/subprojects/language/src/main/java/tools/refinery/language/utils/ContainmentRole.java index 708e10a9..a43c7dfe 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/utils/ContainmentRole.java +++ b/subprojects/language/src/main/java/tools/refinery/language/utils/ContainmentRole.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.utils; | 6 | package tools.refinery.language.utils; |
2 | 7 | ||
3 | import tools.refinery.language.model.problem.PredicateKind; | 8 | import tools.refinery.language.model.problem.PredicateKind; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/utils/NodeInfo.java b/subprojects/language/src/main/java/tools/refinery/language/utils/NodeInfo.java index c8f47653..0fa7a454 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/utils/NodeInfo.java +++ b/subprojects/language/src/main/java/tools/refinery/language/utils/NodeInfo.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.utils; | 6 | package tools.refinery.language.utils; |
2 | 7 | ||
3 | public record NodeInfo(String name, boolean individual) { | 8 | public record NodeInfo(String name, boolean individual) { |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/utils/ProblemDesugarer.java b/subprojects/language/src/main/java/tools/refinery/language/utils/ProblemDesugarer.java index b8200919..738a0896 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/utils/ProblemDesugarer.java +++ b/subprojects/language/src/main/java/tools/refinery/language/utils/ProblemDesugarer.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.utils; | 6 | package tools.refinery.language.utils; |
2 | 7 | ||
3 | import com.google.inject.Inject; | 8 | import com.google.inject.Inject; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/utils/ProblemUtil.java b/subprojects/language/src/main/java/tools/refinery/language/utils/ProblemUtil.java index 1e5164d3..9486dc2a 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/utils/ProblemUtil.java +++ b/subprojects/language/src/main/java/tools/refinery/language/utils/ProblemUtil.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.utils; | 6 | package tools.refinery.language.utils; |
2 | 7 | ||
3 | import org.eclipse.emf.common.util.URI; | 8 | import org.eclipse.emf.common.util.URI; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/utils/RelationInfo.java b/subprojects/language/src/main/java/tools/refinery/language/utils/RelationInfo.java index 2253d257..1c46fe72 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/utils/RelationInfo.java +++ b/subprojects/language/src/main/java/tools/refinery/language/utils/RelationInfo.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.utils; | 6 | package tools.refinery.language.utils; |
2 | 7 | ||
3 | import tools.refinery.language.model.problem.*; | 8 | import tools.refinery.language.model.problem.*; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/utils/SymbolCollector.java b/subprojects/language/src/main/java/tools/refinery/language/utils/SymbolCollector.java index 65167ed6..a4ea1113 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/utils/SymbolCollector.java +++ b/subprojects/language/src/main/java/tools/refinery/language/utils/SymbolCollector.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.utils; | 6 | package tools.refinery.language.utils; |
2 | 7 | ||
3 | import com.google.inject.Inject; | 8 | import com.google.inject.Inject; |
diff --git a/subprojects/language/src/main/java/tools/refinery/language/validation/ProblemValidator.java b/subprojects/language/src/main/java/tools/refinery/language/validation/ProblemValidator.java index 659d882c..88d50c5b 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/validation/ProblemValidator.java +++ b/subprojects/language/src/main/java/tools/refinery/language/validation/ProblemValidator.java | |||
@@ -1,4 +1,10 @@ | |||
1 | /* | 1 | /* |
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | /* | ||
2 | * generated by Xtext 2.25.0 | 8 | * generated by Xtext 2.25.0 |
3 | */ | 9 | */ |
4 | package tools.refinery.language.validation; | 10 | package tools.refinery.language.validation; |
diff --git a/subprojects/language/src/main/resources/tools/refinery/language/builtin.problem b/subprojects/language/src/main/resources/tools/refinery/language/builtin.problem index 06b6da1d..9c1d7669 100644 --- a/subprojects/language/src/main/resources/tools/refinery/language/builtin.problem +++ b/subprojects/language/src/main/resources/tools/refinery/language/builtin.problem | |||
@@ -1,3 +1,6 @@ | |||
1 | % SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
2 | % | ||
3 | % SPDX-License-Identifier: EPL-2.0 | ||
1 | problem builtin. | 4 | problem builtin. |
2 | 5 | ||
3 | abstract class node { | 6 | abstract class node { |
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/ProblemParsingTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/ProblemParsingTest.java index 58daa365..c7952369 100644 --- a/subprojects/language/src/test/java/tools/refinery/language/tests/ProblemParsingTest.java +++ b/subprojects/language/src/test/java/tools/refinery/language/tests/ProblemParsingTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.tests; | 6 | package tools.refinery.language.tests; |
2 | 7 | ||
3 | import com.google.inject.Inject; | 8 | import com.google.inject.Inject; |
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/formatting2/ProblemFormatterTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/formatting2/ProblemFormatterTest.java index 6e0802ca..f688d970 100644 --- a/subprojects/language/src/test/java/tools/refinery/language/tests/formatting2/ProblemFormatterTest.java +++ b/subprojects/language/src/test/java/tools/refinery/language/tests/formatting2/ProblemFormatterTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.tests.formatting2; | 6 | package tools.refinery.language.tests.formatting2; |
2 | 7 | ||
3 | import com.google.inject.Inject; | 8 | import com.google.inject.Inject; |
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/IdentifierTokenProviderTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/IdentifierTokenProviderTest.java index abff8d9c..37d38dd9 100644 --- a/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/IdentifierTokenProviderTest.java +++ b/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/IdentifierTokenProviderTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.tests.parser.antlr; | 6 | package tools.refinery.language.tests.parser.antlr; |
2 | 7 | ||
3 | import com.google.inject.Inject; | 8 | import com.google.inject.Inject; |
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/ProblemTokenSourceTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/ProblemTokenSourceTest.java index cb42d5d0..644744a0 100644 --- a/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/ProblemTokenSourceTest.java +++ b/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/ProblemTokenSourceTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.tests.parser.antlr; | 6 | package tools.refinery.language.tests.parser.antlr; |
2 | 7 | ||
3 | import com.google.inject.Inject; | 8 | import com.google.inject.Inject; |
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/TransitiveClosureParserTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/TransitiveClosureParserTest.java index 65ceb45f..1180d131 100644 --- a/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/TransitiveClosureParserTest.java +++ b/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/TransitiveClosureParserTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.tests.parser.antlr; | 6 | package tools.refinery.language.tests.parser.antlr; |
2 | 7 | ||
3 | import com.google.inject.Inject; | 8 | import com.google.inject.Inject; |
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/rules/RuleParsingTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/rules/RuleParsingTest.java index 72e5e18a..68514bfa 100644 --- a/subprojects/language/src/test/java/tools/refinery/language/tests/rules/RuleParsingTest.java +++ b/subprojects/language/src/test/java/tools/refinery/language/tests/rules/RuleParsingTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.tests.rules; | 6 | package tools.refinery.language.tests.rules; |
2 | 7 | ||
3 | import com.google.inject.Inject; | 8 | import com.google.inject.Inject; |
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/scoping/NodeScopingTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/scoping/NodeScopingTest.java index fa462691..734bfcd1 100644 --- a/subprojects/language/src/test/java/tools/refinery/language/tests/scoping/NodeScopingTest.java +++ b/subprojects/language/src/test/java/tools/refinery/language/tests/scoping/NodeScopingTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.tests.scoping; | 6 | package tools.refinery.language.tests.scoping; |
2 | 7 | ||
3 | import com.google.inject.Inject; | 8 | import com.google.inject.Inject; |
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/serializer/ProblemSerializerTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/serializer/ProblemSerializerTest.java index 4a18704a..3f3a081f 100644 --- a/subprojects/language/src/test/java/tools/refinery/language/tests/serializer/ProblemSerializerTest.java +++ b/subprojects/language/src/test/java/tools/refinery/language/tests/serializer/ProblemSerializerTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.tests.serializer; | 6 | package tools.refinery.language.tests.serializer; |
2 | 7 | ||
3 | import com.google.inject.Inject; | 8 | import com.google.inject.Inject; |
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/utils/SymbolCollectorTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/utils/SymbolCollectorTest.java index af6de37f..d200eeff 100644 --- a/subprojects/language/src/test/java/tools/refinery/language/tests/utils/SymbolCollectorTest.java +++ b/subprojects/language/src/test/java/tools/refinery/language/tests/utils/SymbolCollectorTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.tests.utils; | 6 | package tools.refinery.language.tests.utils; |
2 | 7 | ||
3 | import com.google.inject.Inject; | 8 | import com.google.inject.Inject; |
diff --git a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/ProblemNavigationUtil.java b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/ProblemNavigationUtil.java index 5761935b..d92011a9 100644 --- a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/ProblemNavigationUtil.java +++ b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/ProblemNavigationUtil.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.model.tests.utils; | 6 | package tools.refinery.language.model.tests.utils; |
2 | 7 | ||
3 | import java.util.List; | 8 | import java.util.List; |
diff --git a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/ProblemParseHelper.java b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/ProblemParseHelper.java index 5e044a94..6f6a87f7 100644 --- a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/ProblemParseHelper.java +++ b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/ProblemParseHelper.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.model.tests.utils; | 6 | package tools.refinery.language.model.tests.utils; |
2 | 7 | ||
3 | import org.eclipse.xtext.testing.util.ParseHelper; | 8 | import org.eclipse.xtext.testing.util.ParseHelper; |
diff --git a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedAction.java b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedAction.java index d176727b..3a49a0b9 100644 --- a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedAction.java +++ b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedAction.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.model.tests.utils; | 6 | package tools.refinery.language.model.tests.utils; |
2 | 7 | ||
3 | import tools.refinery.language.model.problem.Action; | 8 | import tools.refinery.language.model.problem.Action; |
diff --git a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedArgument.java b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedArgument.java index 9e4c59f5..ed749fed 100644 --- a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedArgument.java +++ b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedArgument.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.model.tests.utils; | 6 | package tools.refinery.language.model.tests.utils; |
2 | 7 | ||
3 | import tools.refinery.language.model.problem.*; | 8 | import tools.refinery.language.model.problem.*; |
diff --git a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedAssertion.java b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedAssertion.java index 2c38639d..b2ef6e48 100644 --- a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedAssertion.java +++ b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedAssertion.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.model.tests.utils; | 6 | package tools.refinery.language.model.tests.utils; |
2 | 7 | ||
3 | import tools.refinery.language.model.problem.Assertion; | 8 | import tools.refinery.language.model.problem.Assertion; |
diff --git a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedAssertionArgument.java b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedAssertionArgument.java index 840c1f74..b36f2506 100644 --- a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedAssertionArgument.java +++ b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedAssertionArgument.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.model.tests.utils; | 6 | package tools.refinery.language.model.tests.utils; |
2 | 7 | ||
3 | import tools.refinery.language.model.problem.AssertionArgument; | 8 | import tools.refinery.language.model.problem.AssertionArgument; |
diff --git a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedAtom.java b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedAtom.java index 498991f8..c02f447b 100644 --- a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedAtom.java +++ b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedAtom.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.model.tests.utils; | 6 | package tools.refinery.language.model.tests.utils; |
2 | 7 | ||
3 | import tools.refinery.language.model.problem.Atom; | 8 | import tools.refinery.language.model.problem.Atom; |
diff --git a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedClassDeclaration.java b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedClassDeclaration.java index 41b2ea62..a228137c 100644 --- a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedClassDeclaration.java +++ b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedClassDeclaration.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.model.tests.utils; | 6 | package tools.refinery.language.model.tests.utils; |
2 | 7 | ||
3 | import tools.refinery.language.model.problem.ClassDeclaration; | 8 | import tools.refinery.language.model.problem.ClassDeclaration; |
diff --git a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedConjunction.java b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedConjunction.java index 88ff71ab..b126b1ce 100644 --- a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedConjunction.java +++ b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedConjunction.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.model.tests.utils; | 6 | package tools.refinery.language.model.tests.utils; |
2 | 7 | ||
3 | import tools.refinery.language.model.problem.Conjunction; | 8 | import tools.refinery.language.model.problem.Conjunction; |
diff --git a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedConsequent.java b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedConsequent.java index 46faa7da..8d6a92f8 100644 --- a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedConsequent.java +++ b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedConsequent.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.model.tests.utils; | 6 | package tools.refinery.language.model.tests.utils; |
2 | 7 | ||
3 | import tools.refinery.language.model.problem.Consequent; | 8 | import tools.refinery.language.model.problem.Consequent; |
diff --git a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedEnumDeclaration.java b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedEnumDeclaration.java index 74dcf01b..229a8c0a 100644 --- a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedEnumDeclaration.java +++ b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedEnumDeclaration.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.model.tests.utils; | 6 | package tools.refinery.language.model.tests.utils; |
2 | 7 | ||
3 | import tools.refinery.language.model.problem.EnumDeclaration; | 8 | import tools.refinery.language.model.problem.EnumDeclaration; |
diff --git a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedLiteral.java b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedLiteral.java index 4aa71b99..160e5dd8 100644 --- a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedLiteral.java +++ b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedLiteral.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.model.tests.utils; | 6 | package tools.refinery.language.model.tests.utils; |
2 | 7 | ||
3 | import tools.refinery.language.model.problem.Atom; | 8 | import tools.refinery.language.model.problem.Atom; |
diff --git a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedParametricDefinition.java b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedParametricDefinition.java index c2f18a60..d44b79ed 100644 --- a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedParametricDefinition.java +++ b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedParametricDefinition.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.model.tests.utils; | 6 | package tools.refinery.language.model.tests.utils; |
2 | 7 | ||
3 | import tools.refinery.language.model.problem.Parameter; | 8 | import tools.refinery.language.model.problem.Parameter; |
diff --git a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedPredicateDefinition.java b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedPredicateDefinition.java index 7b95ecc1..2cf5fd89 100644 --- a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedPredicateDefinition.java +++ b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedPredicateDefinition.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.model.tests.utils; | 6 | package tools.refinery.language.model.tests.utils; |
2 | 7 | ||
3 | import tools.refinery.language.model.problem.PredicateDefinition; | 8 | import tools.refinery.language.model.problem.PredicateDefinition; |
diff --git a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedProblem.java b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedProblem.java index 78ca95c7..e5aa0043 100644 --- a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedProblem.java +++ b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedProblem.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.model.tests.utils; | 6 | package tools.refinery.language.model.tests.utils; |
2 | 7 | ||
3 | import org.eclipse.emf.ecore.resource.Resource.Diagnostic; | 8 | import org.eclipse.emf.ecore.resource.Resource.Diagnostic; |
diff --git a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedRuleDefinition.java b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedRuleDefinition.java index a4cf2eaf..326d8ec3 100644 --- a/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedRuleDefinition.java +++ b/subprojects/language/src/testFixtures/java/tools/refinery/language/model/tests/utils/WrappedRuleDefinition.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.language.model.tests.utils; | 6 | package tools.refinery.language.model.tests.utils; |
2 | 7 | ||
3 | import tools.refinery.language.model.problem.RuleDefinition; | 8 | import tools.refinery.language.model.problem.RuleDefinition; |
diff --git a/subprojects/store-query-viatra/NOTICE.md b/subprojects/store-query-viatra/NOTICE.md new file mode 100644 index 00000000..7c21726a --- /dev/null +++ b/subprojects/store-query-viatra/NOTICE.md | |||
@@ -0,0 +1,87 @@ | |||
1 | <!-- | ||
2 | Copyright (c) 2018-2019, Zoltan Ujhelyi, IncQuery Labs Ltd. | ||
3 | Copyright (c) 2023 The Refinery Authors <https://refinery.tools/> | ||
4 | |||
5 | SPDX-License-Identifier: EPL-2.0 | ||
6 | --> | ||
7 | |||
8 | This module contains source code from the [Eclipse VIATRA project](https://projects.eclipse.org/projects/modeling.viatra), which is available under the terms of the [Eclipse Public License v 2.0](http://www.eclipse.org/legal/epl-v20.html). | ||
9 | |||
10 | We reproduce the [accompanying notices](https://github.com/viatra/org.eclipse.viatra/blob/d422bcc626a99c4640c0d13931f393ccea0d2326/NOTICE.md) in full below: | ||
11 | |||
12 | # Notices for Eclipse VIATRA | ||
13 | |||
14 | This content is produced and maintained by the Eclipse VIATRA project. | ||
15 | |||
16 | * Project home: https://projects.eclipse.org/projects/modeling.viatra | ||
17 | |||
18 | ## Trademarks | ||
19 | |||
20 | Eclipse VIATRA, and VIATRA are trademarks of the Eclipse Foundation. | ||
21 | |||
22 | ## Copyright | ||
23 | |||
24 | All content is the property of the respective authors or their employers. For | ||
25 | more information regarding authorship of content, please consult the listed | ||
26 | source code repository logs. | ||
27 | |||
28 | ## Declared Project Licenses | ||
29 | |||
30 | This program and the accompanying materials are made available under the terms | ||
31 | of the Eclipse Public License v. 2.0 which is available at | ||
32 | http://www.eclipse.org/legal/epl-v20.html. | ||
33 | |||
34 | SPDX-License-Identifier: EPL-2.0 | ||
35 | |||
36 | ## Source Code | ||
37 | |||
38 | The project maintains the following source code repositories: | ||
39 | |||
40 | * http://git.eclipse.org/c/viatra/org.eclipse.viatra.git | ||
41 | * http://git.eclipse.org/c/viatra/org.eclipse.viatra.modelobfuscator.git | ||
42 | * http://git.eclipse.org/c/viatra/org.eclipse.viatra.examples.git | ||
43 | * http://git.eclipse.org/c/viatra/org.eclipse.viatra2.vpm.git | ||
44 | |||
45 | ## Third-party Content | ||
46 | |||
47 | This project leverages the following third party content. | ||
48 | |||
49 | ANTLR Runtime only: (3.2) | ||
50 | |||
51 | * License: New BSD license | ||
52 | |||
53 | Apache Commons Language Library (2.1) | ||
54 | |||
55 | * License: Apache License, 2.0 | ||
56 | |||
57 | Google Guice / Inject Core API (3.0.0) | ||
58 | |||
59 | * License: Apache License, 2.0 | ||
60 | |||
61 | Google Guice / Inject Core API (3.0.0) | ||
62 | |||
63 | * License: Apache License 2.0 | ||
64 | |||
65 | Guava (10.0.1) | ||
66 | |||
67 | * License: Apache License, 2.0 | ||
68 | |||
69 | Guice (2.0) | ||
70 | |||
71 | * License: Apache License, 2.0 | ||
72 | |||
73 | guice-multibindings (3.0.0) | ||
74 | |||
75 | * License: Apache License, 2.0 | ||
76 | |||
77 | log4j (1.2.15) | ||
78 | |||
79 | * License: Apache License 2.0 | ||
80 | |||
81 | LPG Java Runtime (lpgjavaruntime.jar) (1.1) | ||
82 | |||
83 | * License: Eclipse Public License | ||
84 | |||
85 | mockito (1.9.5) | ||
86 | |||
87 | * License: Apache License, 2.0, New BSD license, MIT license | ||
diff --git a/subprojects/store-query-viatra/build.gradle b/subprojects/store-query-viatra/build.gradle deleted file mode 100644 index c12b48fe..00000000 --- a/subprojects/store-query-viatra/build.gradle +++ /dev/null | |||
@@ -1,16 +0,0 @@ | |||
1 | plugins { | ||
2 | id 'refinery-java-library' | ||
3 | } | ||
4 | |||
5 | configurations.testRuntimeClasspath { | ||
6 | // VIATRA requires log4j 1.x, but we use log4j-over-slf4j instead | ||
7 | exclude group: 'log4j', module: 'log4j' | ||
8 | } | ||
9 | |||
10 | dependencies { | ||
11 | implementation libs.ecore | ||
12 | api libs.viatra | ||
13 | api project(':refinery-store') | ||
14 | testImplementation libs.slf4j.simple | ||
15 | testImplementation libs.slf4j.log4j | ||
16 | } | ||
diff --git a/subprojects/store-query-viatra/build.gradle.kts b/subprojects/store-query-viatra/build.gradle.kts new file mode 100644 index 00000000..e3a22145 --- /dev/null +++ b/subprojects/store-query-viatra/build.gradle.kts | |||
@@ -0,0 +1,15 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | plugins { | ||
8 | id("tools.refinery.gradle.java-library") | ||
9 | } | ||
10 | |||
11 | dependencies { | ||
12 | implementation(libs.ecore) | ||
13 | api(libs.viatra) | ||
14 | api(project(":refinery-store-query")) | ||
15 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQuery.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQuery.java deleted file mode 100644 index 677e3c7d..00000000 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQuery.java +++ /dev/null | |||
@@ -1,21 +0,0 @@ | |||
1 | package tools.refinery.store.query.viatra; | ||
2 | |||
3 | import tools.refinery.store.adapter.ModelAdapterBuilderFactory; | ||
4 | import tools.refinery.store.model.ModelStoreBuilder; | ||
5 | import tools.refinery.store.query.ModelQuery; | ||
6 | import tools.refinery.store.query.viatra.internal.ViatraModelQueryBuilderImpl; | ||
7 | |||
8 | public final class ViatraModelQuery extends ModelAdapterBuilderFactory<ViatraModelQueryAdapter, | ||
9 | ViatraModelQueryStoreAdapter, ViatraModelQueryBuilder> { | ||
10 | public static final ViatraModelQuery ADAPTER = new ViatraModelQuery(); | ||
11 | |||
12 | private ViatraModelQuery() { | ||
13 | super(ViatraModelQueryAdapter.class, ViatraModelQueryStoreAdapter.class, ViatraModelQueryBuilder.class); | ||
14 | extendsAdapter(ModelQuery.ADAPTER); | ||
15 | } | ||
16 | |||
17 | @Override | ||
18 | public ViatraModelQueryBuilder createBuilder(ModelStoreBuilder storeBuilder) { | ||
19 | return new ViatraModelQueryBuilderImpl(storeBuilder); | ||
20 | } | ||
21 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryAdapter.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryAdapter.java index 7e21476b..12c93f62 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryAdapter.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryAdapter.java | |||
@@ -1,8 +1,18 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.query.viatra; | 6 | package tools.refinery.store.query.viatra; |
2 | 7 | ||
3 | import tools.refinery.store.query.ModelQueryAdapter; | 8 | import tools.refinery.store.query.ModelQueryAdapter; |
9 | import tools.refinery.store.query.viatra.internal.ViatraModelQueryBuilderImpl; | ||
4 | 10 | ||
5 | public interface ViatraModelQueryAdapter extends ModelQueryAdapter { | 11 | public interface ViatraModelQueryAdapter extends ModelQueryAdapter { |
6 | @Override | 12 | @Override |
7 | ViatraModelQueryStoreAdapter getStoreAdapter(); | 13 | ViatraModelQueryStoreAdapter getStoreAdapter(); |
14 | |||
15 | static ViatraModelQueryBuilder builder() { | ||
16 | return new ViatraModelQueryBuilderImpl(); | ||
17 | } | ||
8 | } | 18 | } |
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryBuilder.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryBuilder.java index efc6146c..931a07aa 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryBuilder.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryBuilder.java | |||
@@ -1,10 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.query.viatra; | 6 | package tools.refinery.store.query.viatra; |
2 | 7 | ||
3 | import org.eclipse.viatra.query.runtime.api.ViatraQueryEngineOptions; | 8 | import org.eclipse.viatra.query.runtime.api.ViatraQueryEngineOptions; |
4 | import org.eclipse.viatra.query.runtime.matchers.backend.IQueryBackendFactory; | 9 | import org.eclipse.viatra.query.runtime.matchers.backend.IQueryBackendFactory; |
5 | import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; | 10 | import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; |
6 | import tools.refinery.store.model.ModelStore; | 11 | import tools.refinery.store.model.ModelStore; |
7 | import tools.refinery.store.query.DNF; | 12 | import tools.refinery.store.query.dnf.AnyQuery; |
13 | import tools.refinery.store.query.dnf.Dnf; | ||
8 | import tools.refinery.store.query.ModelQueryBuilder; | 14 | import tools.refinery.store.query.ModelQueryBuilder; |
9 | 15 | ||
10 | import java.util.Collection; | 16 | import java.util.Collection; |
@@ -23,26 +29,26 @@ public interface ViatraModelQueryBuilder extends ModelQueryBuilder { | |||
23 | ViatraModelQueryBuilder searchBackend(IQueryBackendFactory queryBackendFactory); | 29 | ViatraModelQueryBuilder searchBackend(IQueryBackendFactory queryBackendFactory); |
24 | 30 | ||
25 | @Override | 31 | @Override |
26 | default ViatraModelQueryBuilder queries(DNF... queries) { | 32 | default ViatraModelQueryBuilder queries(AnyQuery... queries) { |
27 | ModelQueryBuilder.super.queries(queries); | 33 | ModelQueryBuilder.super.queries(queries); |
28 | return this; | 34 | return this; |
29 | } | 35 | } |
30 | 36 | ||
31 | @Override | 37 | @Override |
32 | default ViatraModelQueryBuilder queries(Collection<DNF> queries) { | 38 | default ViatraModelQueryBuilder queries(Collection<? extends AnyQuery> queries) { |
33 | ModelQueryBuilder.super.queries(queries); | 39 | ModelQueryBuilder.super.queries(queries); |
34 | return this; | 40 | return this; |
35 | } | 41 | } |
36 | 42 | ||
37 | @Override | 43 | @Override |
38 | ViatraModelQueryBuilder query(DNF query); | 44 | ViatraModelQueryBuilder query(AnyQuery query); |
39 | 45 | ||
40 | ViatraModelQueryBuilder query(DNF query, QueryEvaluationHint queryEvaluationHint); | 46 | ViatraModelQueryBuilder query(AnyQuery query, QueryEvaluationHint queryEvaluationHint); |
41 | 47 | ||
42 | ViatraModelQueryBuilder computeHint(Function<DNF, QueryEvaluationHint> computeHint); | 48 | ViatraModelQueryBuilder computeHint(Function<Dnf, QueryEvaluationHint> computeHint); |
43 | 49 | ||
44 | ViatraModelQueryBuilder hint(DNF dnf, QueryEvaluationHint queryEvaluationHint); | 50 | ViatraModelQueryBuilder hint(Dnf dnf, QueryEvaluationHint queryEvaluationHint); |
45 | 51 | ||
46 | @Override | 52 | @Override |
47 | ViatraModelQueryStoreAdapter createStoreAdapter(ModelStore store); | 53 | ViatraModelQueryStoreAdapter build(ModelStore store); |
48 | } | 54 | } |
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryStoreAdapter.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryStoreAdapter.java index 1ee02f12..da6d7bd5 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryStoreAdapter.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraModelQueryStoreAdapter.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.query.viatra; | 6 | package tools.refinery.store.query.viatra; |
2 | 7 | ||
3 | import org.eclipse.viatra.query.runtime.api.ViatraQueryEngineOptions; | 8 | import org.eclipse.viatra.query.runtime.api.ViatraQueryEngineOptions; |
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraTupleLike.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraTupleLike.java deleted file mode 100644 index 46c28434..00000000 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/ViatraTupleLike.java +++ /dev/null | |||
@@ -1,18 +0,0 @@ | |||
1 | package tools.refinery.store.query.viatra; | ||
2 | |||
3 | import org.eclipse.viatra.query.runtime.matchers.tuple.ITuple; | ||
4 | import tools.refinery.store.tuple.Tuple1; | ||
5 | import tools.refinery.store.tuple.TupleLike; | ||
6 | |||
7 | public record ViatraTupleLike(ITuple wrappedTuple) implements TupleLike { | ||
8 | @Override | ||
9 | public int getSize() { | ||
10 | return wrappedTuple.getSize(); | ||
11 | } | ||
12 | |||
13 | @Override | ||
14 | public int get(int element) { | ||
15 | var wrappedValue = (Tuple1) wrappedTuple.get(element); | ||
16 | return wrappedValue.value0(); | ||
17 | } | ||
18 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/RelationalScope.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/RelationalScope.java index 8328e759..d1a65a89 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/RelationalScope.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/RelationalScope.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.query.viatra.internal; | 6 | package tools.refinery.store.query.viatra.internal; |
2 | 7 | ||
3 | import org.apache.log4j.Logger; | 8 | import org.apache.log4j.Logger; |
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryAdapterImpl.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryAdapterImpl.java index 039f46fa..5f3e86b4 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryAdapterImpl.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryAdapterImpl.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.query.viatra.internal; | 6 | package tools.refinery.store.query.viatra.internal; |
2 | 7 | ||
3 | import org.eclipse.viatra.query.runtime.api.AdvancedViatraQueryEngine; | 8 | import org.eclipse.viatra.query.runtime.api.AdvancedViatraQueryEngine; |
@@ -7,62 +12,92 @@ import org.eclipse.viatra.query.runtime.internal.apiimpl.ViatraQueryEngineImpl; | |||
7 | import org.eclipse.viatra.query.runtime.matchers.backend.IQueryBackend; | 12 | import org.eclipse.viatra.query.runtime.matchers.backend.IQueryBackend; |
8 | import org.eclipse.viatra.query.runtime.matchers.backend.IQueryBackendFactory; | 13 | import org.eclipse.viatra.query.runtime.matchers.backend.IQueryBackendFactory; |
9 | import tools.refinery.store.model.Model; | 14 | import tools.refinery.store.model.Model; |
10 | import tools.refinery.store.query.DNF; | 15 | import tools.refinery.store.model.ModelListener; |
11 | import tools.refinery.store.query.ResultSet; | 16 | import tools.refinery.store.query.resultset.AnyResultSet; |
17 | import tools.refinery.store.query.resultset.EmptyResultSet; | ||
18 | import tools.refinery.store.query.resultset.ResultSet; | ||
19 | import tools.refinery.store.query.dnf.AnyQuery; | ||
20 | import tools.refinery.store.query.dnf.FunctionalQuery; | ||
21 | import tools.refinery.store.query.dnf.Query; | ||
22 | import tools.refinery.store.query.dnf.RelationalQuery; | ||
12 | import tools.refinery.store.query.viatra.ViatraModelQueryAdapter; | 23 | import tools.refinery.store.query.viatra.ViatraModelQueryAdapter; |
24 | import tools.refinery.store.query.viatra.internal.matcher.FunctionalViatraMatcher; | ||
25 | import tools.refinery.store.query.viatra.internal.matcher.RawPatternMatcher; | ||
26 | import tools.refinery.store.query.viatra.internal.matcher.RelationalViatraMatcher; | ||
13 | 27 | ||
14 | import java.lang.invoke.MethodHandle; | 28 | import java.lang.invoke.MethodHandle; |
15 | import java.lang.invoke.MethodHandles; | 29 | import java.lang.invoke.MethodHandles; |
16 | import java.util.Collection; | 30 | import java.util.Collection; |
17 | import java.util.Collections; | 31 | import java.util.Collections; |
18 | import java.util.HashMap; | 32 | import java.util.LinkedHashMap; |
19 | import java.util.Map; | 33 | import java.util.Map; |
20 | 34 | ||
21 | public class ViatraModelQueryAdapterImpl implements ViatraModelQueryAdapter { | 35 | public class ViatraModelQueryAdapterImpl implements ViatraModelQueryAdapter, ModelListener { |
22 | private static final String DELAY_MESSAGE_DELIVERY_FIELD_NAME = "delayMessageDelivery"; | 36 | private static final String DELAY_MESSAGE_DELIVERY_FIELD_NAME = "delayMessageDelivery"; |
37 | private static final MethodHandle SET_UPDATE_PROPAGATION_DELAYED_HANDLE; | ||
23 | private static final String QUERY_BACKENDS_FIELD_NAME = "queryBackends"; | 38 | private static final String QUERY_BACKENDS_FIELD_NAME = "queryBackends"; |
39 | private static final MethodHandle GET_QUERY_BACKENDS_HANDLE; | ||
24 | 40 | ||
25 | private final Model model; | 41 | private final Model model; |
26 | private final ViatraModelQueryStoreAdapterImpl storeAdapter; | 42 | private final ViatraModelQueryStoreAdapterImpl storeAdapter; |
27 | private final ViatraQueryEngineImpl queryEngine; | 43 | private final ViatraQueryEngineImpl queryEngine; |
28 | private final MethodHandle setUpdatePropagationDelayedHandle; | 44 | private final Map<AnyQuery, AnyResultSet> resultSets; |
29 | private final MethodHandle getQueryBackendsHandle; | ||
30 | private final Map<DNF, ResultSet> resultSets; | ||
31 | private boolean pendingChanges; | 45 | private boolean pendingChanges; |
32 | 46 | ||
33 | ViatraModelQueryAdapterImpl(Model model, ViatraModelQueryStoreAdapterImpl storeAdapter) { | 47 | static { |
34 | this.model = model; | ||
35 | this.storeAdapter = storeAdapter; | ||
36 | var scope = new RelationalScope(this); | ||
37 | queryEngine = (ViatraQueryEngineImpl) AdvancedViatraQueryEngine.createUnmanagedEngine(scope); | ||
38 | |||
39 | try { | 48 | try { |
40 | var lookup = MethodHandles.privateLookupIn(ViatraQueryEngineImpl.class, MethodHandles.lookup()); | 49 | var lookup = MethodHandles.privateLookupIn(ViatraQueryEngineImpl.class, MethodHandles.lookup()); |
41 | setUpdatePropagationDelayedHandle = lookup.findSetter(ViatraQueryEngineImpl.class, | 50 | SET_UPDATE_PROPAGATION_DELAYED_HANDLE = lookup.findSetter(ViatraQueryEngineImpl.class, |
42 | DELAY_MESSAGE_DELIVERY_FIELD_NAME, Boolean.TYPE); | 51 | DELAY_MESSAGE_DELIVERY_FIELD_NAME, Boolean.TYPE); |
43 | getQueryBackendsHandle = lookup.findGetter(ViatraQueryEngineImpl.class, QUERY_BACKENDS_FIELD_NAME, | 52 | GET_QUERY_BACKENDS_HANDLE = lookup.findGetter(ViatraQueryEngineImpl.class, QUERY_BACKENDS_FIELD_NAME, |
44 | Map.class); | 53 | Map.class); |
45 | } catch (IllegalAccessException | NoSuchFieldException e) { | 54 | } catch (IllegalAccessException | NoSuchFieldException e) { |
46 | throw new IllegalStateException("Cannot access private members of %s" | 55 | throw new IllegalStateException("Cannot access private members of %s" |
47 | .formatted(ViatraQueryEngineImpl.class.getName()), e); | 56 | .formatted(ViatraQueryEngineImpl.class.getName()), e); |
48 | } | 57 | } |
58 | } | ||
59 | |||
60 | ViatraModelQueryAdapterImpl(Model model, ViatraModelQueryStoreAdapterImpl storeAdapter) { | ||
61 | this.model = model; | ||
62 | this.storeAdapter = storeAdapter; | ||
63 | var scope = new RelationalScope(this); | ||
64 | queryEngine = (ViatraQueryEngineImpl) AdvancedViatraQueryEngine.createUnmanagedEngine(scope, | ||
65 | storeAdapter.getEngineOptions()); | ||
49 | 66 | ||
50 | var querySpecifications = storeAdapter.getQuerySpecifications(); | 67 | var querySpecifications = storeAdapter.getQuerySpecifications(); |
51 | GenericQueryGroup.of( | 68 | GenericQueryGroup.of( |
52 | Collections.<IQuerySpecification<?>>unmodifiableCollection(querySpecifications.values()).stream() | 69 | Collections.<IQuerySpecification<?>>unmodifiableCollection(querySpecifications.values()).stream() |
53 | ).prepare(queryEngine); | 70 | ).prepare(queryEngine); |
54 | resultSets = new HashMap<>(querySpecifications.size()); | 71 | var vacuousQueries = storeAdapter.getVacuousQueries(); |
72 | resultSets = new LinkedHashMap<>(querySpecifications.size() + vacuousQueries.size()); | ||
55 | for (var entry : querySpecifications.entrySet()) { | 73 | for (var entry : querySpecifications.entrySet()) { |
56 | var matcher = queryEngine.getMatcher(entry.getValue()); | 74 | var rawPatternMatcher = queryEngine.getMatcher(entry.getValue()); |
57 | resultSets.put(entry.getKey(), matcher); | 75 | var query = entry.getKey(); |
76 | resultSets.put(query, createResultSet((Query<?>) query, rawPatternMatcher)); | ||
77 | } | ||
78 | for (var vacuousQuery : vacuousQueries) { | ||
79 | resultSets.put(vacuousQuery, new EmptyResultSet<>(this, (Query<?>) vacuousQuery)); | ||
58 | } | 80 | } |
59 | 81 | ||
60 | setUpdatePropagationDelayed(true); | 82 | setUpdatePropagationDelayed(true); |
83 | model.addListener(this); | ||
84 | } | ||
85 | |||
86 | private <T> ResultSet<T> createResultSet(Query<T> query, RawPatternMatcher matcher) { | ||
87 | if (query instanceof RelationalQuery relationalQuery) { | ||
88 | @SuppressWarnings("unchecked") | ||
89 | var resultSet = (ResultSet<T>) new RelationalViatraMatcher(this, relationalQuery, matcher); | ||
90 | return resultSet; | ||
91 | } else if (query instanceof FunctionalQuery<T> functionalQuery) { | ||
92 | return new FunctionalViatraMatcher<>(this, functionalQuery, matcher); | ||
93 | } else { | ||
94 | throw new IllegalArgumentException("Unknown query: " + query); | ||
95 | } | ||
61 | } | 96 | } |
62 | 97 | ||
63 | private void setUpdatePropagationDelayed(boolean value) { | 98 | private void setUpdatePropagationDelayed(boolean value) { |
64 | try { | 99 | try { |
65 | setUpdatePropagationDelayedHandle.invokeExact(queryEngine, value); | 100 | SET_UPDATE_PROPAGATION_DELAYED_HANDLE.invokeExact(queryEngine, value); |
66 | } catch (Error e) { | 101 | } catch (Error e) { |
67 | // Fatal JVM errors should not be wrapped. | 102 | // Fatal JVM errors should not be wrapped. |
68 | throw e; | 103 | throw e; |
@@ -74,7 +109,7 @@ public class ViatraModelQueryAdapterImpl implements ViatraModelQueryAdapter { | |||
74 | private Collection<IQueryBackend> getQueryBackends() { | 109 | private Collection<IQueryBackend> getQueryBackends() { |
75 | try { | 110 | try { |
76 | @SuppressWarnings("unchecked") | 111 | @SuppressWarnings("unchecked") |
77 | var backendMap = (Map<IQueryBackendFactory, IQueryBackend>) getQueryBackendsHandle.invokeExact(queryEngine); | 112 | var backendMap = (Map<IQueryBackendFactory, IQueryBackend>) GET_QUERY_BACKENDS_HANDLE.invokeExact(queryEngine); |
78 | return backendMap.values(); | 113 | return backendMap.values(); |
79 | } catch (Error e) { | 114 | } catch (Error e) { |
80 | // Fatal JVM errors should not be wrapped. | 115 | // Fatal JVM errors should not be wrapped. |
@@ -95,12 +130,14 @@ public class ViatraModelQueryAdapterImpl implements ViatraModelQueryAdapter { | |||
95 | } | 130 | } |
96 | 131 | ||
97 | @Override | 132 | @Override |
98 | public ResultSet getResultSet(DNF query) { | 133 | public <T> ResultSet<T> getResultSet(Query<T> query) { |
99 | var resultSet = resultSets.get(query); | 134 | var resultSet = resultSets.get(query); |
100 | if (resultSet == null) { | 135 | if (resultSet == null) { |
101 | throw new IllegalArgumentException("No matcher for query %s in model".formatted(query.name())); | 136 | throw new IllegalArgumentException("No matcher for query %s in model".formatted(query.name())); |
102 | } | 137 | } |
103 | return resultSet; | 138 | @SuppressWarnings("unchecked") |
139 | var typedResultSet = (ResultSet<T>) resultSet; | ||
140 | return typedResultSet; | ||
104 | } | 141 | } |
105 | 142 | ||
106 | @Override | 143 | @Override |
@@ -132,4 +169,9 @@ public class ViatraModelQueryAdapterImpl implements ViatraModelQueryAdapter { | |||
132 | } | 169 | } |
133 | pendingChanges = false; | 170 | pendingChanges = false; |
134 | } | 171 | } |
172 | |||
173 | @Override | ||
174 | public void afterRestore() { | ||
175 | flushChanges(); | ||
176 | } | ||
135 | } | 177 | } |
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryBuilderImpl.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryBuilderImpl.java index 9f1e55b1..ce2467b4 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryBuilderImpl.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryBuilderImpl.java | |||
@@ -1,115 +1,162 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.query.viatra.internal; | 6 | package tools.refinery.store.query.viatra.internal; |
2 | 7 | ||
3 | import org.eclipse.viatra.query.runtime.api.IQuerySpecification; | 8 | import org.eclipse.viatra.query.runtime.api.IQuerySpecification; |
4 | import org.eclipse.viatra.query.runtime.api.ViatraQueryEngineOptions; | 9 | import org.eclipse.viatra.query.runtime.api.ViatraQueryEngineOptions; |
5 | import org.eclipse.viatra.query.runtime.localsearch.matcher.integration.LocalSearchGenericBackendFactory; | 10 | import org.eclipse.viatra.query.runtime.localsearch.matcher.integration.LocalSearchHintOptions; |
6 | import org.eclipse.viatra.query.runtime.matchers.backend.IQueryBackendFactory; | 11 | import org.eclipse.viatra.query.runtime.matchers.backend.IQueryBackendFactory; |
7 | import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; | 12 | import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; |
8 | import org.eclipse.viatra.query.runtime.rete.matcher.ReteBackendFactory; | 13 | import org.eclipse.viatra.query.runtime.rete.matcher.ReteBackendFactory; |
9 | import tools.refinery.store.adapter.AbstractModelAdapterBuilder; | 14 | import tools.refinery.store.adapter.AbstractModelAdapterBuilder; |
10 | import tools.refinery.store.model.ModelStore; | 15 | import tools.refinery.store.model.ModelStore; |
11 | import tools.refinery.store.model.ModelStoreBuilder; | 16 | import tools.refinery.store.model.ModelStoreBuilder; |
12 | import tools.refinery.store.query.DNF; | 17 | import tools.refinery.store.query.dnf.AnyQuery; |
18 | import tools.refinery.store.query.dnf.Dnf; | ||
13 | import tools.refinery.store.query.viatra.ViatraModelQueryBuilder; | 19 | import tools.refinery.store.query.viatra.ViatraModelQueryBuilder; |
14 | import tools.refinery.store.query.viatra.internal.pquery.DNF2PQuery; | 20 | import tools.refinery.store.query.viatra.internal.localsearch.FlatCostFunction; |
15 | import tools.refinery.store.query.viatra.internal.pquery.RawPatternMatcher; | 21 | import tools.refinery.store.query.viatra.internal.localsearch.RelationalLocalSearchBackendFactory; |
22 | import tools.refinery.store.query.viatra.internal.matcher.RawPatternMatcher; | ||
23 | import tools.refinery.store.query.viatra.internal.pquery.Dnf2PQuery; | ||
16 | 24 | ||
17 | import java.util.Collections; | 25 | import java.util.*; |
18 | import java.util.LinkedHashMap; | ||
19 | import java.util.Map; | ||
20 | import java.util.function.Function; | 26 | import java.util.function.Function; |
21 | 27 | ||
22 | public class ViatraModelQueryBuilderImpl extends AbstractModelAdapterBuilder implements ViatraModelQueryBuilder { | 28 | public class ViatraModelQueryBuilderImpl extends AbstractModelAdapterBuilder<ViatraModelQueryStoreAdapterImpl> |
29 | implements ViatraModelQueryBuilder { | ||
23 | private ViatraQueryEngineOptions.Builder engineOptionsBuilder; | 30 | private ViatraQueryEngineOptions.Builder engineOptionsBuilder; |
24 | private final DNF2PQuery dnf2PQuery = new DNF2PQuery(); | 31 | private QueryEvaluationHint defaultHint = new QueryEvaluationHint(Map.of( |
25 | private final Map<DNF, IQuerySpecification<RawPatternMatcher>> querySpecifications = new LinkedHashMap<>(); | 32 | // Use a cost function that ignores the initial (empty) model but allows higher arity input keys. |
33 | LocalSearchHintOptions.PLANNER_COST_FUNCTION, new FlatCostFunction() | ||
34 | ), (IQueryBackendFactory) null); | ||
35 | private final Dnf2PQuery dnf2PQuery = new Dnf2PQuery(); | ||
36 | private final Set<AnyQuery> vacuousQueries = new LinkedHashSet<>(); | ||
37 | private final Map<AnyQuery, IQuerySpecification<RawPatternMatcher>> querySpecifications = new LinkedHashMap<>(); | ||
26 | 38 | ||
27 | public ViatraModelQueryBuilderImpl(ModelStoreBuilder storeBuilder) { | 39 | public ViatraModelQueryBuilderImpl() { |
28 | super(storeBuilder); | ||
29 | engineOptionsBuilder = new ViatraQueryEngineOptions.Builder() | 40 | engineOptionsBuilder = new ViatraQueryEngineOptions.Builder() |
30 | .withDefaultBackend(ReteBackendFactory.INSTANCE) | 41 | .withDefaultBackend(ReteBackendFactory.INSTANCE) |
31 | .withDefaultCachingBackend(ReteBackendFactory.INSTANCE) | 42 | .withDefaultCachingBackend(ReteBackendFactory.INSTANCE) |
32 | .withDefaultSearchBackend(LocalSearchGenericBackendFactory.INSTANCE); | 43 | .withDefaultSearchBackend(RelationalLocalSearchBackendFactory.INSTANCE); |
33 | } | 44 | } |
34 | 45 | ||
35 | @Override | 46 | @Override |
36 | public ViatraModelQueryBuilder engineOptions(ViatraQueryEngineOptions engineOptions) { | 47 | public ViatraModelQueryBuilder engineOptions(ViatraQueryEngineOptions engineOptions) { |
48 | checkNotConfigured(); | ||
37 | engineOptionsBuilder = new ViatraQueryEngineOptions.Builder(engineOptions); | 49 | engineOptionsBuilder = new ViatraQueryEngineOptions.Builder(engineOptions); |
38 | return this; | 50 | return this; |
39 | } | 51 | } |
40 | 52 | ||
41 | @Override | 53 | @Override |
42 | public ViatraModelQueryBuilder defaultHint(QueryEvaluationHint queryEvaluationHint) { | 54 | public ViatraModelQueryBuilder defaultHint(QueryEvaluationHint queryEvaluationHint) { |
43 | engineOptionsBuilder.withDefaultHint(queryEvaluationHint); | 55 | checkNotConfigured(); |
56 | defaultHint = defaultHint.overrideBy(queryEvaluationHint); | ||
44 | return this; | 57 | return this; |
45 | } | 58 | } |
46 | 59 | ||
47 | @Override | 60 | @Override |
48 | public ViatraModelQueryBuilder backend(IQueryBackendFactory queryBackendFactory) { | 61 | public ViatraModelQueryBuilder backend(IQueryBackendFactory queryBackendFactory) { |
62 | checkNotConfigured(); | ||
49 | engineOptionsBuilder.withDefaultBackend(queryBackendFactory); | 63 | engineOptionsBuilder.withDefaultBackend(queryBackendFactory); |
50 | return this; | 64 | return this; |
51 | } | 65 | } |
52 | 66 | ||
53 | @Override | 67 | @Override |
54 | public ViatraModelQueryBuilder cachingBackend(IQueryBackendFactory queryBackendFactory) { | 68 | public ViatraModelQueryBuilder cachingBackend(IQueryBackendFactory queryBackendFactory) { |
69 | checkNotConfigured(); | ||
55 | engineOptionsBuilder.withDefaultCachingBackend(queryBackendFactory); | 70 | engineOptionsBuilder.withDefaultCachingBackend(queryBackendFactory); |
56 | return this; | 71 | return this; |
57 | } | 72 | } |
58 | 73 | ||
59 | @Override | 74 | @Override |
60 | public ViatraModelQueryBuilder searchBackend(IQueryBackendFactory queryBackendFactory) { | 75 | public ViatraModelQueryBuilder searchBackend(IQueryBackendFactory queryBackendFactory) { |
76 | checkNotConfigured(); | ||
61 | engineOptionsBuilder.withDefaultSearchBackend(queryBackendFactory); | 77 | engineOptionsBuilder.withDefaultSearchBackend(queryBackendFactory); |
62 | return this; | 78 | return this; |
63 | } | 79 | } |
64 | 80 | ||
65 | @Override | 81 | @Override |
66 | public ViatraModelQueryBuilder query(DNF query) { | 82 | public ViatraModelQueryBuilder query(AnyQuery query) { |
67 | if (querySpecifications.containsKey(query)) { | 83 | checkNotConfigured(); |
68 | throw new IllegalArgumentException("%s was already added to the query engine".formatted(query.name())); | 84 | if (querySpecifications.containsKey(query) || vacuousQueries.contains(query)) { |
85 | // Ignore duplicate queries. | ||
86 | return this; | ||
87 | } | ||
88 | var dnf = query.getDnf(); | ||
89 | var reduction = dnf.getReduction(); | ||
90 | switch (reduction) { | ||
91 | case NOT_REDUCIBLE -> { | ||
92 | var pQuery = dnf2PQuery.translate(dnf); | ||
93 | querySpecifications.put(query, pQuery.build()); | ||
94 | } | ||
95 | case ALWAYS_FALSE -> vacuousQueries.add(query); | ||
96 | case ALWAYS_TRUE -> throw new IllegalArgumentException( | ||
97 | "Query %s is relationally unsafe (it matches every tuple)".formatted(query.name())); | ||
98 | default -> throw new IllegalArgumentException("Unknown reduction: " + reduction); | ||
69 | } | 99 | } |
70 | var pQuery = dnf2PQuery.translate(query); | ||
71 | querySpecifications.put(query, pQuery.build()); | ||
72 | return this; | 100 | return this; |
73 | } | 101 | } |
74 | 102 | ||
75 | @Override | 103 | @Override |
76 | public ViatraModelQueryBuilder query(DNF query, QueryEvaluationHint queryEvaluationHint) { | 104 | public ViatraModelQueryBuilder query(AnyQuery query, QueryEvaluationHint queryEvaluationHint) { |
105 | hint(query.getDnf(), queryEvaluationHint); | ||
77 | query(query); | 106 | query(query); |
78 | hint(query, queryEvaluationHint); | ||
79 | return this; | 107 | return this; |
80 | } | 108 | } |
81 | 109 | ||
82 | @Override | 110 | @Override |
83 | public ViatraModelQueryBuilder computeHint(Function<DNF, QueryEvaluationHint> computeHint) { | 111 | public ViatraModelQueryBuilder computeHint(Function<Dnf, QueryEvaluationHint> computeHint) { |
112 | checkNotConfigured(); | ||
84 | dnf2PQuery.setComputeHint(computeHint); | 113 | dnf2PQuery.setComputeHint(computeHint); |
85 | return this; | 114 | return this; |
86 | } | 115 | } |
87 | 116 | ||
88 | @Override | 117 | @Override |
89 | public ViatraModelQueryBuilder hint(DNF dnf, QueryEvaluationHint queryEvaluationHint) { | 118 | public ViatraModelQueryBuilder hint(Dnf dnf, QueryEvaluationHint queryEvaluationHint) { |
90 | var pQuery = dnf2PQuery.getAlreadyTranslated(dnf); | 119 | checkNotConfigured(); |
91 | if (pQuery == null) { | 120 | dnf2PQuery.hint(dnf, queryEvaluationHint); |
92 | throw new IllegalArgumentException( | ||
93 | "Cannot specify hint for %s, because it was not added to the query engine".formatted(dnf.name())); | ||
94 | } | ||
95 | pQuery.setEvaluationHints(pQuery.getEvaluationHints().overrideBy(queryEvaluationHint)); | ||
96 | return this; | 121 | return this; |
97 | } | 122 | } |
98 | 123 | ||
99 | @Override | 124 | @Override |
100 | public ViatraModelQueryStoreAdapterImpl createStoreAdapter(ModelStore store) { | 125 | public void doConfigure(ModelStoreBuilder storeBuilder) { |
126 | dnf2PQuery.assertNoUnusedHints(); | ||
127 | } | ||
128 | |||
129 | @Override | ||
130 | public ViatraModelQueryStoreAdapterImpl doBuild(ModelStore store) { | ||
101 | validateSymbols(store); | 131 | validateSymbols(store); |
102 | return new ViatraModelQueryStoreAdapterImpl(store, engineOptionsBuilder.build(), dnf2PQuery.getRelationViews(), | 132 | return new ViatraModelQueryStoreAdapterImpl(store, buildEngineOptions(), dnf2PQuery.getSymbolViews(), |
103 | Collections.unmodifiableMap(querySpecifications)); | 133 | Collections.unmodifiableMap(querySpecifications), Collections.unmodifiableSet(vacuousQueries)); |
134 | } | ||
135 | |||
136 | private ViatraQueryEngineOptions buildEngineOptions() { | ||
137 | // Workaround: manually override the default backend, because {@link ViatraQueryEngineOptions.Builder} | ||
138 | // ignores all backend requirements except {@code SPECIFIC}. | ||
139 | switch (defaultHint.getQueryBackendRequirementType()) { | ||
140 | case SPECIFIC -> engineOptionsBuilder.withDefaultBackend(defaultHint.getQueryBackendFactory()); | ||
141 | case DEFAULT_CACHING -> engineOptionsBuilder.withDefaultBackend( | ||
142 | engineOptionsBuilder.build().getDefaultCachingBackendFactory()); | ||
143 | case DEFAULT_SEARCH -> engineOptionsBuilder.withDefaultBackend( | ||
144 | engineOptionsBuilder.build().getDefaultSearchBackendFactory()); | ||
145 | case UNSPECIFIED -> { | ||
146 | // Nothing to do, leave the default backend unchanged. | ||
147 | } | ||
148 | } | ||
149 | engineOptionsBuilder.withDefaultHint(defaultHint); | ||
150 | return engineOptionsBuilder.build(); | ||
104 | } | 151 | } |
105 | 152 | ||
106 | private void validateSymbols(ModelStore store) { | 153 | private void validateSymbols(ModelStore store) { |
107 | var symbols = store.getSymbols(); | 154 | var symbols = store.getSymbols(); |
108 | for (var relationView : dnf2PQuery.getRelationViews().keySet()) { | 155 | for (var symbolView : dnf2PQuery.getSymbolViews().keySet()) { |
109 | var symbol = relationView.getSymbol(); | 156 | var symbol = symbolView.getSymbol(); |
110 | if (!symbols.contains(symbol)) { | 157 | if (!symbols.contains(symbol)) { |
111 | throw new IllegalArgumentException("Cannot query relation view %s: symbol %s is not in the model" | 158 | throw new IllegalArgumentException("Cannot query view %s: symbol %s is not in the model" |
112 | .formatted(relationView, symbol)); | 159 | .formatted(symbolView, symbol)); |
113 | } | 160 | } |
114 | } | 161 | } |
115 | } | 162 | } |
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryStoreAdapterImpl.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryStoreAdapterImpl.java index 394e407e..11a3c7fd 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryStoreAdapterImpl.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/ViatraModelQueryStoreAdapterImpl.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.query.viatra.internal; | 6 | package tools.refinery.store.query.viatra.internal; |
2 | 7 | ||
3 | import org.eclipse.viatra.query.runtime.api.IQuerySpecification; | 8 | import org.eclipse.viatra.query.runtime.api.IQuerySpecification; |
@@ -5,27 +10,34 @@ import org.eclipse.viatra.query.runtime.api.ViatraQueryEngineOptions; | |||
5 | import org.eclipse.viatra.query.runtime.matchers.context.IInputKey; | 10 | import org.eclipse.viatra.query.runtime.matchers.context.IInputKey; |
6 | import tools.refinery.store.model.Model; | 11 | import tools.refinery.store.model.Model; |
7 | import tools.refinery.store.model.ModelStore; | 12 | import tools.refinery.store.model.ModelStore; |
8 | import tools.refinery.store.query.DNF; | 13 | import tools.refinery.store.query.dnf.AnyQuery; |
9 | import tools.refinery.store.query.viatra.ViatraModelQueryStoreAdapter; | 14 | import tools.refinery.store.query.viatra.ViatraModelQueryStoreAdapter; |
10 | import tools.refinery.store.query.viatra.internal.pquery.RawPatternMatcher; | 15 | import tools.refinery.store.query.viatra.internal.matcher.RawPatternMatcher; |
11 | import tools.refinery.store.query.view.AnyRelationView; | 16 | import tools.refinery.store.query.view.AnySymbolView; |
12 | 17 | ||
13 | import java.util.Collection; | 18 | import java.util.*; |
14 | import java.util.Map; | ||
15 | 19 | ||
16 | public class ViatraModelQueryStoreAdapterImpl implements ViatraModelQueryStoreAdapter { | 20 | public class ViatraModelQueryStoreAdapterImpl implements ViatraModelQueryStoreAdapter { |
17 | private final ModelStore store; | 21 | private final ModelStore store; |
18 | private final ViatraQueryEngineOptions engineOptions; | 22 | private final ViatraQueryEngineOptions engineOptions; |
19 | private final Map<AnyRelationView, IInputKey> inputKeys; | 23 | private final Map<AnySymbolView, IInputKey> inputKeys; |
20 | private final Map<DNF, IQuerySpecification<RawPatternMatcher>> querySpecifications; | 24 | private final Map<AnyQuery, IQuerySpecification<RawPatternMatcher>> querySpecifications; |
25 | private final Set<AnyQuery> vacuousQueries; | ||
26 | private final Set<AnyQuery> allQueries; | ||
21 | 27 | ||
22 | ViatraModelQueryStoreAdapterImpl(ModelStore store, ViatraQueryEngineOptions engineOptions, | 28 | ViatraModelQueryStoreAdapterImpl(ModelStore store, ViatraQueryEngineOptions engineOptions, |
23 | Map<AnyRelationView, IInputKey> inputKeys, | 29 | Map<AnySymbolView, IInputKey> inputKeys, |
24 | Map<DNF, IQuerySpecification<RawPatternMatcher>> querySpecifications) { | 30 | Map<AnyQuery, IQuerySpecification<RawPatternMatcher>> querySpecifications, |
31 | Set<AnyQuery> vacuousQueries) { | ||
25 | this.store = store; | 32 | this.store = store; |
26 | this.engineOptions = engineOptions; | 33 | this.engineOptions = engineOptions; |
27 | this.inputKeys = inputKeys; | 34 | this.inputKeys = inputKeys; |
28 | this.querySpecifications = querySpecifications; | 35 | this.querySpecifications = querySpecifications; |
36 | this.vacuousQueries = vacuousQueries; | ||
37 | var mutableAllQueries = new LinkedHashSet<AnyQuery>(querySpecifications.size() + vacuousQueries.size()); | ||
38 | mutableAllQueries.addAll(querySpecifications.keySet()); | ||
39 | mutableAllQueries.addAll(vacuousQueries); | ||
40 | this.allQueries = Collections.unmodifiableSet(mutableAllQueries); | ||
29 | } | 41 | } |
30 | 42 | ||
31 | @Override | 43 | @Override |
@@ -33,23 +45,27 @@ public class ViatraModelQueryStoreAdapterImpl implements ViatraModelQueryStoreAd | |||
33 | return store; | 45 | return store; |
34 | } | 46 | } |
35 | 47 | ||
36 | public Collection<AnyRelationView> getRelationViews() { | 48 | public Collection<AnySymbolView> getSymbolViews() { |
37 | return inputKeys.keySet(); | 49 | return inputKeys.keySet(); |
38 | } | 50 | } |
39 | 51 | ||
40 | public Map<AnyRelationView, IInputKey> getInputKeys() { | 52 | public Map<AnySymbolView, IInputKey> getInputKeys() { |
41 | return inputKeys; | 53 | return inputKeys; |
42 | } | 54 | } |
43 | 55 | ||
44 | @Override | 56 | @Override |
45 | public Collection<DNF> getQueries() { | 57 | public Collection<AnyQuery> getQueries() { |
46 | return querySpecifications.keySet(); | 58 | return allQueries; |
47 | } | 59 | } |
48 | 60 | ||
49 | Map<DNF, IQuerySpecification<RawPatternMatcher>> getQuerySpecifications() { | 61 | Map<AnyQuery, IQuerySpecification<RawPatternMatcher>> getQuerySpecifications() { |
50 | return querySpecifications; | 62 | return querySpecifications; |
51 | } | 63 | } |
52 | 64 | ||
65 | Set<AnyQuery> getVacuousQueries() { | ||
66 | return vacuousQueries; | ||
67 | } | ||
68 | |||
53 | @Override | 69 | @Override |
54 | public ViatraQueryEngineOptions getEngineOptions() { | 70 | public ViatraQueryEngineOptions getEngineOptions() { |
55 | return engineOptions; | 71 | return engineOptions; |
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/cardinality/UpperCardinalitySumAggregationOperator.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/cardinality/UpperCardinalitySumAggregationOperator.java deleted file mode 100644 index e0bca9e0..00000000 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/cardinality/UpperCardinalitySumAggregationOperator.java +++ /dev/null | |||
@@ -1,97 +0,0 @@ | |||
1 | package tools.refinery.store.query.viatra.internal.cardinality; | ||
2 | |||
3 | import org.eclipse.viatra.query.runtime.matchers.psystem.aggregations.BoundAggregator; | ||
4 | import org.eclipse.viatra.query.runtime.matchers.psystem.aggregations.IMultisetAggregationOperator; | ||
5 | import tools.refinery.store.representation.cardinality.FiniteUpperCardinality; | ||
6 | import tools.refinery.store.representation.cardinality.UnboundedUpperCardinality; | ||
7 | import tools.refinery.store.representation.cardinality.UpperCardinalities; | ||
8 | import tools.refinery.store.representation.cardinality.UpperCardinality; | ||
9 | |||
10 | import java.util.stream.Stream; | ||
11 | |||
12 | public class UpperCardinalitySumAggregationOperator implements IMultisetAggregationOperator<UpperCardinality, | ||
13 | UpperCardinalitySumAggregationOperator.Accumulator, UpperCardinality> { | ||
14 | public static final UpperCardinalitySumAggregationOperator INSTANCE = new UpperCardinalitySumAggregationOperator(); | ||
15 | |||
16 | public static final BoundAggregator BOUND_AGGREGATOR = new BoundAggregator(INSTANCE, UpperCardinality.class, | ||
17 | UpperCardinality.class); | ||
18 | |||
19 | private UpperCardinalitySumAggregationOperator() { | ||
20 | // Singleton constructor. | ||
21 | } | ||
22 | |||
23 | @Override | ||
24 | public String getName() { | ||
25 | return "sum<UpperCardinality>"; | ||
26 | } | ||
27 | |||
28 | @Override | ||
29 | public String getShortDescription() { | ||
30 | return "%s computes the sum of finite or unbounded upper cardinalities".formatted(getName()); | ||
31 | } | ||
32 | |||
33 | @Override | ||
34 | public Accumulator createNeutral() { | ||
35 | return new Accumulator(); | ||
36 | } | ||
37 | |||
38 | @Override | ||
39 | public boolean isNeutral(Accumulator result) { | ||
40 | return result.sumFiniteUpperBounds == 0 && result.countUnbounded == 0; | ||
41 | } | ||
42 | |||
43 | @Override | ||
44 | public Accumulator update(Accumulator oldResult, UpperCardinality updateValue, boolean isInsertion) { | ||
45 | if (updateValue instanceof FiniteUpperCardinality finiteUpperCardinality) { | ||
46 | int finiteUpperBound = finiteUpperCardinality.finiteUpperBound(); | ||
47 | if (isInsertion) { | ||
48 | oldResult.sumFiniteUpperBounds += finiteUpperBound; | ||
49 | } else { | ||
50 | oldResult.sumFiniteUpperBounds -= finiteUpperBound; | ||
51 | } | ||
52 | } else if (updateValue instanceof UnboundedUpperCardinality) { | ||
53 | if (isInsertion) { | ||
54 | oldResult.countUnbounded += 1; | ||
55 | } else { | ||
56 | oldResult.countUnbounded -= 1; | ||
57 | } | ||
58 | } else { | ||
59 | throw new IllegalArgumentException("Unknown UpperCardinality: " + updateValue); | ||
60 | } | ||
61 | return oldResult; | ||
62 | } | ||
63 | |||
64 | @Override | ||
65 | public UpperCardinality getAggregate(Accumulator result) { | ||
66 | return result.countUnbounded > 0 ? UpperCardinalities.UNBOUNDED : | ||
67 | UpperCardinalities.valueOf(result.sumFiniteUpperBounds); | ||
68 | } | ||
69 | |||
70 | @Override | ||
71 | public UpperCardinality aggregateStream(Stream<UpperCardinality> stream) { | ||
72 | var result = stream.collect(this::createNeutral, (accumulator, value) -> update(accumulator, value, true), | ||
73 | (left, right) -> new Accumulator(left.sumFiniteUpperBounds + right.sumFiniteUpperBounds, | ||
74 | left.countUnbounded + right.countUnbounded)); | ||
75 | return getAggregate(result); | ||
76 | } | ||
77 | |||
78 | @Override | ||
79 | public Accumulator clone(Accumulator original) { | ||
80 | return new Accumulator(original.sumFiniteUpperBounds, original.countUnbounded); | ||
81 | } | ||
82 | |||
83 | public static class Accumulator { | ||
84 | private int sumFiniteUpperBounds; | ||
85 | |||
86 | private int countUnbounded; | ||
87 | |||
88 | private Accumulator(int sumFiniteUpperBounds, int countUnbounded) { | ||
89 | this.sumFiniteUpperBounds = sumFiniteUpperBounds; | ||
90 | this.countUnbounded = countUnbounded; | ||
91 | } | ||
92 | |||
93 | private Accumulator() { | ||
94 | this(0, 0); | ||
95 | } | ||
96 | } | ||
97 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/context/DummyBaseIndexer.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/context/DummyBaseIndexer.java index 2a24b67c..8cb199d2 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/context/DummyBaseIndexer.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/context/DummyBaseIndexer.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.query.viatra.internal.context; | 6 | package tools.refinery.store.query.viatra.internal.context; |
2 | 7 | ||
3 | import org.eclipse.viatra.query.runtime.api.scope.IBaseIndex; | 8 | import org.eclipse.viatra.query.runtime.api.scope.IBaseIndex; |
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/context/RelationalEngineContext.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/context/RelationalEngineContext.java index 28bc69d0..7220f8ca 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/context/RelationalEngineContext.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/context/RelationalEngineContext.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.query.viatra.internal.context; | 6 | package tools.refinery.store.query.viatra.internal.context; |
2 | 7 | ||
3 | import org.eclipse.viatra.query.runtime.api.scope.IBaseIndex; | 8 | import org.eclipse.viatra.query.runtime.api.scope.IBaseIndex; |
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/context/RelationalQueryMetaContext.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/context/RelationalQueryMetaContext.java index cba3fa08..211eacb4 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/context/RelationalQueryMetaContext.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/context/RelationalQueryMetaContext.java | |||
@@ -1,10 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.query.viatra.internal.context; | 6 | package tools.refinery.store.query.viatra.internal.context; |
2 | 7 | ||
3 | import org.eclipse.viatra.query.runtime.matchers.context.AbstractQueryMetaContext; | 8 | import org.eclipse.viatra.query.runtime.matchers.context.AbstractQueryMetaContext; |
4 | import org.eclipse.viatra.query.runtime.matchers.context.IInputKey; | 9 | import org.eclipse.viatra.query.runtime.matchers.context.IInputKey; |
5 | import org.eclipse.viatra.query.runtime.matchers.context.InputKeyImplication; | 10 | import org.eclipse.viatra.query.runtime.matchers.context.InputKeyImplication; |
6 | import tools.refinery.store.query.viatra.internal.pquery.RelationViewWrapper; | 11 | import org.eclipse.viatra.query.runtime.matchers.context.common.JavaTransitiveInstancesKey; |
7 | import tools.refinery.store.query.view.AnyRelationView; | 12 | import tools.refinery.store.query.viatra.internal.pquery.SymbolViewWrapper; |
13 | import tools.refinery.store.query.view.AnySymbolView; | ||
8 | 14 | ||
9 | import java.util.*; | 15 | import java.util.*; |
10 | 16 | ||
@@ -12,9 +18,9 @@ import java.util.*; | |||
12 | * The meta context information for String scopes. | 18 | * The meta context information for String scopes. |
13 | */ | 19 | */ |
14 | public class RelationalQueryMetaContext extends AbstractQueryMetaContext { | 20 | public class RelationalQueryMetaContext extends AbstractQueryMetaContext { |
15 | private final Map<AnyRelationView, IInputKey> inputKeys; | 21 | private final Map<AnySymbolView, IInputKey> inputKeys; |
16 | 22 | ||
17 | RelationalQueryMetaContext(Map<AnyRelationView, IInputKey> inputKeys) { | 23 | RelationalQueryMetaContext(Map<AnySymbolView, IInputKey> inputKeys) { |
18 | this.inputKeys = inputKeys; | 24 | this.inputKeys = inputKeys; |
19 | } | 25 | } |
20 | 26 | ||
@@ -37,26 +43,43 @@ public class RelationalQueryMetaContext extends AbstractQueryMetaContext { | |||
37 | 43 | ||
38 | @Override | 44 | @Override |
39 | public Collection<InputKeyImplication> getImplications(IInputKey implyingKey) { | 45 | public Collection<InputKeyImplication> getImplications(IInputKey implyingKey) { |
40 | var relationView = checkKey(implyingKey); | 46 | if (implyingKey instanceof JavaTransitiveInstancesKey) { |
41 | var relationViewImplications = relationView.getImpliedRelationViews(); | 47 | return List.of(); |
48 | } | ||
49 | var symbolView = checkKey(implyingKey); | ||
50 | var relationViewImplications = symbolView.getImpliedRelationViews(); | ||
42 | var inputKeyImplications = new HashSet<InputKeyImplication>(relationViewImplications.size()); | 51 | var inputKeyImplications = new HashSet<InputKeyImplication>(relationViewImplications.size()); |
43 | for (var relationViewImplication : relationViewImplications) { | 52 | for (var relationViewImplication : relationViewImplications) { |
44 | if (!relationView.equals(relationViewImplication.implyingRelationView())) { | 53 | if (!symbolView.equals(relationViewImplication.implyingView())) { |
45 | throw new IllegalArgumentException("Relation view %s returned unrelated implication %s".formatted( | 54 | throw new IllegalArgumentException("Relation view %s returned unrelated implication %s".formatted( |
46 | relationView, relationViewImplication)); | 55 | symbolView, relationViewImplication)); |
47 | } | 56 | } |
48 | var impliedInputKey = inputKeys.get(relationViewImplication.impliedRelationView()); | 57 | var impliedInputKey = inputKeys.get(relationViewImplication.impliedView()); |
49 | // Ignore implications not relevant for any queries included in the model. | 58 | // Ignore implications not relevant for any queries included in the model. |
50 | if (impliedInputKey != null) { | 59 | if (impliedInputKey != null) { |
51 | inputKeyImplications.add(new InputKeyImplication(implyingKey, impliedInputKey, | 60 | inputKeyImplications.add(new InputKeyImplication(implyingKey, impliedInputKey, |
52 | relationViewImplication.impliedIndices())); | 61 | relationViewImplication.impliedIndices())); |
53 | } | 62 | } |
54 | } | 63 | } |
64 | var parameters = symbolView.getParameters(); | ||
65 | int arity = symbolView.arity(); | ||
66 | for (int i = 0; i < arity; i++) { | ||
67 | var parameter = parameters.get(i); | ||
68 | var parameterType = parameter.tryGetType(); | ||
69 | if (parameterType.isPresent()) { | ||
70 | var javaTransitiveInstancesKey = new JavaTransitiveInstancesKey(parameterType.get()); | ||
71 | var javaImplication = new InputKeyImplication(implyingKey, javaTransitiveInstancesKey, List.of(i)); | ||
72 | inputKeyImplications.add(javaImplication); | ||
73 | } | ||
74 | } | ||
55 | return inputKeyImplications; | 75 | return inputKeyImplications; |
56 | } | 76 | } |
57 | 77 | ||
58 | @Override | 78 | @Override |
59 | public Map<Set<Integer>, Set<Integer>> getFunctionalDependencies(IInputKey key) { | 79 | public Map<Set<Integer>, Set<Integer>> getFunctionalDependencies(IInputKey key) { |
80 | if (key instanceof JavaTransitiveInstancesKey) { | ||
81 | return Map.of(); | ||
82 | } | ||
60 | var relationView = checkKey(key); | 83 | var relationView = checkKey(key); |
61 | var functionalDependencies = relationView.getFunctionalDependencies(); | 84 | var functionalDependencies = relationView.getFunctionalDependencies(); |
62 | var flattened = new HashMap<Set<Integer>, Set<Integer>>(functionalDependencies.size()); | 85 | var flattened = new HashMap<Set<Integer>, Set<Integer>>(functionalDependencies.size()); |
@@ -75,20 +98,20 @@ public class RelationalQueryMetaContext extends AbstractQueryMetaContext { | |||
75 | return flattened; | 98 | return flattened; |
76 | } | 99 | } |
77 | 100 | ||
78 | private static void checkValidIndices(AnyRelationView relationView, Collection<Integer> indices) { | 101 | private static void checkValidIndices(AnySymbolView relationView, Collection<Integer> indices) { |
79 | indices.stream().filter(relationView::invalidIndex).findAny().ifPresent(i -> { | 102 | indices.stream().filter(relationView::invalidIndex).findAny().ifPresent(i -> { |
80 | throw new IllegalArgumentException("Index %d is invalid for %s".formatted(i, relationView)); | 103 | throw new IllegalArgumentException("Index %d is invalid for %s".formatted(i, relationView)); |
81 | }); | 104 | }); |
82 | } | 105 | } |
83 | 106 | ||
84 | public AnyRelationView checkKey(IInputKey key) { | 107 | public AnySymbolView checkKey(IInputKey key) { |
85 | if (!(key instanceof RelationViewWrapper wrapper)) { | 108 | if (!(key instanceof SymbolViewWrapper wrapper)) { |
86 | throw new IllegalArgumentException("The input key %s is not a valid input key".formatted(key)); | 109 | throw new IllegalArgumentException("The input key %s is not a valid input key".formatted(key)); |
87 | } | 110 | } |
88 | var relationView = wrapper.getWrappedKey(); | 111 | var symbolView = wrapper.getWrappedKey(); |
89 | if (!inputKeys.containsKey(relationView)) { | 112 | if (!inputKeys.containsKey(symbolView)) { |
90 | throw new IllegalArgumentException("The input key %s is not present in the model".formatted(key)); | 113 | throw new IllegalArgumentException("The input key %s is not present in the model".formatted(key)); |
91 | } | 114 | } |
92 | return relationView; | 115 | return symbolView; |
93 | } | 116 | } |
94 | } | 117 | } |
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/context/RelationalRuntimeContext.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/context/RelationalRuntimeContext.java index 01d20d3e..0f2daca8 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/context/RelationalRuntimeContext.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/context/RelationalRuntimeContext.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.query.viatra.internal.context; | 6 | package tools.refinery.store.query.viatra.internal.context; |
2 | 7 | ||
3 | import org.eclipse.viatra.query.runtime.matchers.context.*; | 8 | import org.eclipse.viatra.query.runtime.matchers.context.*; |
@@ -8,9 +13,9 @@ import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; | |||
8 | import org.eclipse.viatra.query.runtime.matchers.util.Accuracy; | 13 | import org.eclipse.viatra.query.runtime.matchers.util.Accuracy; |
9 | import tools.refinery.store.model.Model; | 14 | import tools.refinery.store.model.Model; |
10 | import tools.refinery.store.query.viatra.internal.ViatraModelQueryAdapterImpl; | 15 | import tools.refinery.store.query.viatra.internal.ViatraModelQueryAdapterImpl; |
11 | import tools.refinery.store.query.viatra.internal.pquery.RelationViewWrapper; | 16 | import tools.refinery.store.query.viatra.internal.pquery.SymbolViewWrapper; |
12 | import tools.refinery.store.query.viatra.internal.update.ModelUpdateListener; | 17 | import tools.refinery.store.query.viatra.internal.update.ModelUpdateListener; |
13 | import tools.refinery.store.query.view.AnyRelationView; | 18 | import tools.refinery.store.query.view.AnySymbolView; |
14 | 19 | ||
15 | import java.lang.reflect.InvocationTargetException; | 20 | import java.lang.reflect.InvocationTargetException; |
16 | import java.util.Iterator; | 21 | import java.util.Iterator; |
@@ -54,8 +59,9 @@ public class RelationalRuntimeContext implements IQueryRuntimeContext { | |||
54 | 59 | ||
55 | @Override | 60 | @Override |
56 | public boolean isIndexed(IInputKey key, IndexingService service) { | 61 | public boolean isIndexed(IInputKey key, IndexingService service) { |
57 | if (key instanceof AnyRelationView relationalKey) { | 62 | if (key instanceof SymbolViewWrapper wrapper) { |
58 | return this.modelUpdateListener.containsRelationView(relationalKey); | 63 | var symbolViewKey = wrapper.getWrappedKey(); |
64 | return this.modelUpdateListener.containsSymbolView(symbolViewKey); | ||
59 | } else { | 65 | } else { |
60 | return false; | 66 | return false; |
61 | } | 67 | } |
@@ -68,13 +74,13 @@ public class RelationalRuntimeContext implements IQueryRuntimeContext { | |||
68 | } | 74 | } |
69 | } | 75 | } |
70 | 76 | ||
71 | AnyRelationView checkKey(IInputKey key) { | 77 | AnySymbolView checkKey(IInputKey key) { |
72 | if (key instanceof RelationViewWrapper wrappedKey) { | 78 | if (key instanceof SymbolViewWrapper wrappedKey) { |
73 | var relationViewKey = wrappedKey.getWrappedKey(); | 79 | var symbolViewKey = wrappedKey.getWrappedKey(); |
74 | if (modelUpdateListener.containsRelationView(relationViewKey)) { | 80 | if (modelUpdateListener.containsSymbolView(symbolViewKey)) { |
75 | return relationViewKey; | 81 | return symbolViewKey; |
76 | } else { | 82 | } else { |
77 | throw new IllegalStateException("Query is asking for non-indexed key %s".formatted(relationViewKey)); | 83 | throw new IllegalStateException("Query is asking for non-indexed key %s".formatted(symbolViewKey)); |
78 | } | 84 | } |
79 | } else { | 85 | } else { |
80 | throw new IllegalStateException("Query is asking for non-relational key"); | 86 | throw new IllegalStateException("Query is asking for non-relational key"); |
@@ -83,10 +89,7 @@ public class RelationalRuntimeContext implements IQueryRuntimeContext { | |||
83 | 89 | ||
84 | @Override | 90 | @Override |
85 | public int countTuples(IInputKey key, TupleMask seedMask, ITuple seed) { | 91 | public int countTuples(IInputKey key, TupleMask seedMask, ITuple seed) { |
86 | var relationViewKey = checkKey(key); | 92 | Iterator<Object[]> iterator = enumerate(key, seedMask, seed).iterator(); |
87 | Iterable<Object[]> allObjects = relationViewKey.getAll(model); | ||
88 | Iterable<Object[]> filteredBySeed = filter(allObjects, objectArray -> isMatching(objectArray, seedMask, seed)); | ||
89 | Iterator<Object[]> iterator = filteredBySeed.iterator(); | ||
90 | int result = 0; | 93 | int result = 0; |
91 | while (iterator.hasNext()) { | 94 | while (iterator.hasNext()) { |
92 | iterator.next(); | 95 | iterator.next(); |
@@ -102,13 +105,25 @@ public class RelationalRuntimeContext implements IQueryRuntimeContext { | |||
102 | 105 | ||
103 | @Override | 106 | @Override |
104 | public Iterable<Tuple> enumerateTuples(IInputKey key, TupleMask seedMask, ITuple seed) { | 107 | public Iterable<Tuple> enumerateTuples(IInputKey key, TupleMask seedMask, ITuple seed) { |
108 | var filteredBySeed = enumerate(key, seedMask, seed); | ||
109 | return map(filteredBySeed, Tuples::flatTupleOf); | ||
110 | } | ||
111 | |||
112 | @Override | ||
113 | public Iterable<?> enumerateValues(IInputKey key, TupleMask seedMask, ITuple seed) { | ||
114 | var index = seedMask.getFirstOmittedIndex().orElseThrow( | ||
115 | () -> new IllegalArgumentException("Seed mask does not omit a value")); | ||
116 | var filteredBySeed = enumerate(key, seedMask, seed); | ||
117 | return map(filteredBySeed, array -> array[index]); | ||
118 | } | ||
119 | |||
120 | private Iterable<Object[]> enumerate(IInputKey key, TupleMask seedMask, ITuple seed) { | ||
105 | var relationViewKey = checkKey(key); | 121 | var relationViewKey = checkKey(key); |
106 | Iterable<Object[]> allObjects = relationViewKey.getAll(model); | 122 | Iterable<Object[]> allObjects = relationViewKey.getAll(model); |
107 | Iterable<Object[]> filteredBySeed = filter(allObjects, objectArray -> isMatching(objectArray, seedMask, seed)); | 123 | return filter(allObjects, objectArray -> isMatching(objectArray, seedMask, seed)); |
108 | return map(filteredBySeed, Tuples::flatTupleOf); | ||
109 | } | 124 | } |
110 | 125 | ||
111 | private boolean isMatching(Object[] tuple, TupleMask seedMask, ITuple seed) { | 126 | private static boolean isMatching(Object[] tuple, TupleMask seedMask, ITuple seed) { |
112 | for (int i = 0; i < seedMask.indices.length; i++) { | 127 | for (int i = 0; i < seedMask.indices.length; i++) { |
113 | final Object seedElement = seed.get(i); | 128 | final Object seedElement = seed.get(i); |
114 | final Object tupleElement = tuple[seedMask.indices[i]]; | 129 | final Object tupleElement = tuple[seedMask.indices[i]]; |
@@ -120,11 +135,6 @@ public class RelationalRuntimeContext implements IQueryRuntimeContext { | |||
120 | } | 135 | } |
121 | 136 | ||
122 | @Override | 137 | @Override |
123 | public Iterable<?> enumerateValues(IInputKey key, TupleMask seedMask, ITuple seed) { | ||
124 | return enumerateTuples(key, seedMask, seed); | ||
125 | } | ||
126 | |||
127 | @Override | ||
128 | public boolean containsTuple(IInputKey key, ITuple seed) { | 138 | public boolean containsTuple(IInputKey key, ITuple seed) { |
129 | var relationViewKey = checkKey(key); | 139 | var relationViewKey = checkKey(key); |
130 | return relationViewKey.get(model, seed.getElements()); | 140 | return relationViewKey.get(model, seed.getElements()); |
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/localsearch/ExtendOperationExecutor.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/localsearch/ExtendOperationExecutor.java new file mode 100644 index 00000000..37177cbf --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/localsearch/ExtendOperationExecutor.java | |||
@@ -0,0 +1,76 @@ | |||
1 | /******************************************************************************* | ||
2 | * Copyright (c) 2010-2013, Zoltan Ujhelyi, Akos Horvath, Istvan Rath and Daniel Varro | ||
3 | * Copyright (c) 2023 The Refinery Authors <https://refinery.tools/> | ||
4 | * This program and the accompanying materials are made available under the | ||
5 | * terms of the Eclipse Public License v. 2.0 which is available at | ||
6 | * http://www.eclipse.org/legal/epl-v20.html. | ||
7 | * SPDX-License-Identifier: EPL-2.0 | ||
8 | *******************************************************************************/ | ||
9 | package tools.refinery.store.query.viatra.internal.localsearch; | ||
10 | |||
11 | import org.eclipse.viatra.query.runtime.localsearch.MatchingFrame; | ||
12 | import org.eclipse.viatra.query.runtime.localsearch.matcher.ISearchContext; | ||
13 | import org.eclipse.viatra.query.runtime.localsearch.operations.ISearchOperation.ISearchOperationExecutor; | ||
14 | |||
15 | import java.util.Iterator; | ||
16 | |||
17 | /** | ||
18 | * An operation that can be used to enumerate all possible values for a single position based on a constraint | ||
19 | * @author Zoltan Ujhelyi, Akos Horvath | ||
20 | * @since 2.0 | ||
21 | */ | ||
22 | abstract class ExtendOperationExecutor<T> implements ISearchOperationExecutor { | ||
23 | |||
24 | private Iterator<? extends T> it; | ||
25 | |||
26 | /** | ||
27 | * Returns an iterator with the possible options from the current state | ||
28 | * @since 2.0 | ||
29 | */ | ||
30 | @SuppressWarnings("squid:S1452") | ||
31 | protected abstract Iterator<? extends T> getIterator(MatchingFrame frame, ISearchContext context); | ||
32 | /** | ||
33 | * Updates the frame with the next element of the iterator. Called during {@link #execute(MatchingFrame, ISearchContext)}. | ||
34 | * | ||
35 | * @return true if the update is successful or false otherwise; in case of false is returned, the next element should be taken from the iterator. | ||
36 | * @since 2.0 | ||
37 | */ | ||
38 | protected abstract boolean fillInValue(T newValue, MatchingFrame frame, ISearchContext context); | ||
39 | |||
40 | /** | ||
41 | * Restores the frame to the state before {@link #fillInValue(Object, MatchingFrame, ISearchContext)}. Called during | ||
42 | * {@link #onBacktrack(MatchingFrame, ISearchContext)}. | ||
43 | * | ||
44 | * @since 2.0 | ||
45 | */ | ||
46 | protected abstract void cleanup(MatchingFrame frame, ISearchContext context); | ||
47 | |||
48 | @Override | ||
49 | public void onInitialize(MatchingFrame frame, ISearchContext context) { | ||
50 | it = getIterator(frame, context); | ||
51 | } | ||
52 | |||
53 | @Override | ||
54 | public void onBacktrack(MatchingFrame frame, ISearchContext context) { | ||
55 | it = null; | ||
56 | |||
57 | } | ||
58 | |||
59 | /** | ||
60 | * Fixed version of {@link org.eclipse.viatra.query.runtime.localsearch.operations.ExtendOperationExecutor#execute} | ||
61 | * that handles failed unification of variables correctly. | ||
62 | * @param frame The matching frame to extend. | ||
63 | * @param context The search context. | ||
64 | * @return {@code true} if an extension was found, {@code false} otherwise. | ||
65 | */ | ||
66 | @Override | ||
67 | public boolean execute(MatchingFrame frame, ISearchContext context) { | ||
68 | while (it.hasNext()) { | ||
69 | var newValue = it.next(); | ||
70 | if (fillInValue(newValue, frame, context)) { | ||
71 | return true; | ||
72 | } | ||
73 | } | ||
74 | return false; | ||
75 | } | ||
76 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/localsearch/ExtendPositivePatternCall.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/localsearch/ExtendPositivePatternCall.java new file mode 100644 index 00000000..9d48c785 --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/localsearch/ExtendPositivePatternCall.java | |||
@@ -0,0 +1,117 @@ | |||
1 | /******************************************************************************* | ||
2 | * Copyright (c) 2010-2016, Grill Balázs, IncQueryLabs | ||
3 | * Copyright (c) 2023 The Refinery Authors <https://refinery.tools/> | ||
4 | * This program and the accompanying materials are made available under the | ||
5 | * terms of the Eclipse Public License v. 2.0 which is available at | ||
6 | * http://www.eclipse.org/legal/epl-v20.html. | ||
7 | * SPDX-License-Identifier: EPL-2.0 | ||
8 | *******************************************************************************/ | ||
9 | package tools.refinery.store.query.viatra.internal.localsearch; | ||
10 | |||
11 | import org.eclipse.viatra.query.runtime.localsearch.MatchingFrame; | ||
12 | import org.eclipse.viatra.query.runtime.localsearch.matcher.ISearchContext; | ||
13 | import org.eclipse.viatra.query.runtime.localsearch.operations.IPatternMatcherOperation; | ||
14 | import org.eclipse.viatra.query.runtime.localsearch.operations.ISearchOperation; | ||
15 | import org.eclipse.viatra.query.runtime.localsearch.operations.util.CallInformation; | ||
16 | import org.eclipse.viatra.query.runtime.matchers.backend.IQueryResultProvider; | ||
17 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; | ||
18 | import org.eclipse.viatra.query.runtime.matchers.tuple.TupleMask; | ||
19 | import org.eclipse.viatra.query.runtime.matchers.tuple.VolatileModifiableMaskedTuple; | ||
20 | |||
21 | import java.util.Iterator; | ||
22 | import java.util.List; | ||
23 | import java.util.function.Function; | ||
24 | |||
25 | /** | ||
26 | * @author Grill Balázs | ||
27 | * @since 1.4 | ||
28 | * | ||
29 | */ | ||
30 | public class ExtendPositivePatternCall implements ISearchOperation, IPatternMatcherOperation { | ||
31 | |||
32 | private class Executor extends ExtendOperationExecutor<Tuple> { | ||
33 | private final VolatileModifiableMaskedTuple maskedTuple; | ||
34 | |||
35 | public Executor() { | ||
36 | maskedTuple = new VolatileModifiableMaskedTuple(information.getThinFrameMask()); | ||
37 | } | ||
38 | |||
39 | @Override | ||
40 | protected Iterator<? extends Tuple> getIterator(MatchingFrame frame, ISearchContext context) { | ||
41 | maskedTuple.updateTuple(frame); | ||
42 | IQueryResultProvider matcher = context.getMatcher(information.getCallWithAdornment()); | ||
43 | return matcher.getAllMatches(information.getParameterMask(), maskedTuple).iterator(); | ||
44 | } | ||
45 | |||
46 | /** | ||
47 | * @since 2.0 | ||
48 | */ | ||
49 | @Override | ||
50 | protected boolean fillInValue(Tuple result, MatchingFrame frame, ISearchContext context) { | ||
51 | TupleMask mask = information.getFullFrameMask(); | ||
52 | // The first loop clears out the elements from a possible previous iteration | ||
53 | for(int i : information.getFreeParameterIndices()) { | ||
54 | mask.set(frame, i, null); | ||
55 | } | ||
56 | for(int i : information.getFreeParameterIndices()) { | ||
57 | Object oldValue = mask.getValue(frame, i); | ||
58 | Object valueToFill = result.get(i); | ||
59 | if (oldValue != null && !oldValue.equals(valueToFill)){ | ||
60 | // If the inverse map contains more than one values for the same key, it means that these arguments are unified by the caller. | ||
61 | // In this case if the callee assigns different values the frame shall be dropped | ||
62 | return false; | ||
63 | } | ||
64 | mask.set(frame, i, valueToFill); | ||
65 | } | ||
66 | return true; | ||
67 | } | ||
68 | |||
69 | @Override | ||
70 | protected void cleanup(MatchingFrame frame, ISearchContext context) { | ||
71 | TupleMask mask = information.getFullFrameMask(); | ||
72 | for(int i : information.getFreeParameterIndices()){ | ||
73 | mask.set(frame, i, null); | ||
74 | } | ||
75 | |||
76 | } | ||
77 | |||
78 | @Override | ||
79 | public ISearchOperation getOperation() { | ||
80 | return ExtendPositivePatternCall.this; | ||
81 | } | ||
82 | } | ||
83 | |||
84 | private final CallInformation information; | ||
85 | |||
86 | /** | ||
87 | * @since 1.7 | ||
88 | */ | ||
89 | public ExtendPositivePatternCall(CallInformation information) { | ||
90 | this.information = information; | ||
91 | } | ||
92 | |||
93 | @Override | ||
94 | public ISearchOperationExecutor createExecutor() { | ||
95 | return new Executor(); | ||
96 | } | ||
97 | |||
98 | @Override | ||
99 | public List<Integer> getVariablePositions() { | ||
100 | return information.getVariablePositions(); | ||
101 | } | ||
102 | |||
103 | @Override | ||
104 | public String toString() { | ||
105 | return toString(Object::toString); | ||
106 | } | ||
107 | |||
108 | @Override | ||
109 | public String toString(@SuppressWarnings("squid:S4276") Function<Integer, String> variableMapping) { | ||
110 | return "extend find " + information.toString(variableMapping); | ||
111 | } | ||
112 | |||
113 | @Override | ||
114 | public CallInformation getCallInformation() { | ||
115 | return information; | ||
116 | } | ||
117 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/localsearch/FlatCostFunction.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/localsearch/FlatCostFunction.java new file mode 100644 index 00000000..cc906f22 --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/localsearch/FlatCostFunction.java | |||
@@ -0,0 +1,35 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.internal.localsearch; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.localsearch.planner.cost.IConstraintEvaluationContext; | ||
9 | import org.eclipse.viatra.query.runtime.localsearch.planner.cost.impl.StatisticsBasedConstraintCostFunction; | ||
10 | import org.eclipse.viatra.query.runtime.matchers.context.IInputKey; | ||
11 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; | ||
12 | import org.eclipse.viatra.query.runtime.matchers.tuple.TupleMask; | ||
13 | import org.eclipse.viatra.query.runtime.matchers.util.Accuracy; | ||
14 | |||
15 | import java.util.Optional; | ||
16 | |||
17 | public class FlatCostFunction extends StatisticsBasedConstraintCostFunction { | ||
18 | public FlatCostFunction() { | ||
19 | // No inverse navigation penalty thanks to relational storage. | ||
20 | super(0); | ||
21 | } | ||
22 | |||
23 | @Override | ||
24 | public Optional<Long> projectionSize(IConstraintEvaluationContext input, IInputKey supplierKey, TupleMask groupMask, Accuracy requiredAccuracy) { | ||
25 | // We always start from an empty model, where every projection is of size 0. | ||
26 | // Therefore, projection size estimation is meaningless. | ||
27 | return Optional.empty(); | ||
28 | } | ||
29 | |||
30 | @Override | ||
31 | protected double _calculateCost(TypeConstraint constraint, IConstraintEvaluationContext input) { | ||
32 | // Assume a flat cost for each relation. Maybe adjust in the future if we perform indexing? | ||
33 | return DEFAULT_COST; | ||
34 | } | ||
35 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/localsearch/GenericTypeExtend.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/localsearch/GenericTypeExtend.java new file mode 100644 index 00000000..96ac4a72 --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/localsearch/GenericTypeExtend.java | |||
@@ -0,0 +1,137 @@ | |||
1 | /******************************************************************************* | ||
2 | * Copyright (c) 2010-2017, Zoltan Ujhelyi, IncQuery Labs Ltd. | ||
3 | * Copyright (c) 2023 The Refinery Authors <https://refinery.tools/> | ||
4 | * This program and the accompanying materials are made available under the | ||
5 | * terms of the Eclipse Public License v. 2.0 which is available at | ||
6 | * http://www.eclipse.org/legal/epl-v20.html. | ||
7 | * SPDX-License-Identifier: EPL-2.0 | ||
8 | *******************************************************************************/ | ||
9 | package tools.refinery.store.query.viatra.internal.localsearch; | ||
10 | |||
11 | import org.eclipse.viatra.query.runtime.localsearch.MatchingFrame; | ||
12 | import org.eclipse.viatra.query.runtime.localsearch.matcher.ISearchContext; | ||
13 | import org.eclipse.viatra.query.runtime.localsearch.operations.IIteratingSearchOperation; | ||
14 | import org.eclipse.viatra.query.runtime.localsearch.operations.ISearchOperation; | ||
15 | import org.eclipse.viatra.query.runtime.matchers.context.IInputKey; | ||
16 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; | ||
17 | import org.eclipse.viatra.query.runtime.matchers.tuple.TupleMask; | ||
18 | import org.eclipse.viatra.query.runtime.matchers.tuple.VolatileMaskedTuple; | ||
19 | import org.eclipse.viatra.query.runtime.matchers.util.Preconditions; | ||
20 | |||
21 | import java.util.*; | ||
22 | import java.util.function.Function; | ||
23 | import java.util.stream.Collectors; | ||
24 | |||
25 | /** | ||
26 | * @author Zoltan Ujhelyi | ||
27 | * @since 1.7 | ||
28 | */ | ||
29 | public class GenericTypeExtend implements IIteratingSearchOperation { | ||
30 | private class Executor extends ExtendOperationExecutor<Tuple> { | ||
31 | private final VolatileMaskedTuple maskedTuple; | ||
32 | |||
33 | public Executor() { | ||
34 | this.maskedTuple = new VolatileMaskedTuple(callMask); | ||
35 | } | ||
36 | |||
37 | @Override | ||
38 | protected Iterator<? extends Tuple> getIterator(MatchingFrame frame, ISearchContext context) { | ||
39 | maskedTuple.updateTuple(frame); | ||
40 | return context.getRuntimeContext().enumerateTuples(type, indexerMask, maskedTuple).iterator(); | ||
41 | } | ||
42 | |||
43 | @Override | ||
44 | protected boolean fillInValue(Tuple newTuple, MatchingFrame frame, ISearchContext context) { | ||
45 | for (Integer position : unboundVariableIndices) { | ||
46 | frame.setValue(position, null); | ||
47 | } | ||
48 | for (int i = 0; i < positions.length; i++) { | ||
49 | Object newValue = newTuple.get(i); | ||
50 | Object oldValue = frame.getValue(positions[i]); | ||
51 | if (oldValue != null && !Objects.equals(oldValue, newValue)) { | ||
52 | // If positions tuple maps more than one values for the same element (e.g. loop), it means that | ||
53 | // these arguments are to unified by the caller. In this case if the callee assigns different values | ||
54 | // the frame shall be considered a failed match | ||
55 | return false; | ||
56 | } | ||
57 | frame.setValue(positions[i], newValue); | ||
58 | } | ||
59 | return true; | ||
60 | } | ||
61 | |||
62 | @Override | ||
63 | protected void cleanup(MatchingFrame frame, ISearchContext context) { | ||
64 | for (Integer position : unboundVariableIndices) { | ||
65 | frame.setValue(position, null); | ||
66 | } | ||
67 | } | ||
68 | |||
69 | @Override | ||
70 | public ISearchOperation getOperation() { | ||
71 | return GenericTypeExtend.this; | ||
72 | } | ||
73 | } | ||
74 | |||
75 | private final IInputKey type; | ||
76 | private final int[] positions; | ||
77 | private final List<Integer> positionList; | ||
78 | private final Set<Integer> unboundVariableIndices; | ||
79 | private final TupleMask indexerMask; | ||
80 | private final TupleMask callMask; | ||
81 | |||
82 | /** | ||
83 | * | ||
84 | * @param type | ||
85 | * the type to execute the extend operation on | ||
86 | * @param positions | ||
87 | * the parameter positions that represent the variables of the input key | ||
88 | * @param unboundVariableIndices | ||
89 | * the set of positions that are bound at the start of the operation | ||
90 | */ | ||
91 | public GenericTypeExtend(IInputKey type, int[] positions, TupleMask callMask, TupleMask indexerMask, Set<Integer> unboundVariableIndices) { | ||
92 | Preconditions.checkArgument(positions.length == type.getArity(), | ||
93 | "The type %s requires %d parameters, but %d positions are provided", type.getPrettyPrintableName(), | ||
94 | type.getArity(), positions.length); | ||
95 | List<Integer> modifiablePositionList = new ArrayList<>(); | ||
96 | for (int position : positions) { | ||
97 | modifiablePositionList.add(position); | ||
98 | } | ||
99 | this.positionList = Collections.unmodifiableList(modifiablePositionList); | ||
100 | this.positions = positions; | ||
101 | this.type = type; | ||
102 | |||
103 | this.unboundVariableIndices = unboundVariableIndices; | ||
104 | this.indexerMask = indexerMask; | ||
105 | this.callMask = callMask; | ||
106 | } | ||
107 | |||
108 | @Override | ||
109 | public IInputKey getIteratedInputKey() { | ||
110 | return type; | ||
111 | } | ||
112 | |||
113 | @Override | ||
114 | public ISearchOperationExecutor createExecutor() { | ||
115 | return new Executor(); | ||
116 | } | ||
117 | |||
118 | @Override | ||
119 | public List<Integer> getVariablePositions() { | ||
120 | return positionList; | ||
121 | } | ||
122 | |||
123 | @Override | ||
124 | public String toString() { | ||
125 | return toString(Object::toString); | ||
126 | } | ||
127 | |||
128 | @Override | ||
129 | public String toString(@SuppressWarnings("squid:S4276") Function<Integer, String> variableMapping) { | ||
130 | return "extend " + type.getPrettyPrintableName() + "(" | ||
131 | + positionList.stream() | ||
132 | .map(input -> String.format("%s%s", unboundVariableIndices.contains(input) ? "-" : "+", variableMapping.apply(input))) | ||
133 | .collect(Collectors.joining(", ")) | ||
134 | + ")"; | ||
135 | } | ||
136 | |||
137 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/localsearch/RelationalLocalSearchBackendFactory.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/localsearch/RelationalLocalSearchBackendFactory.java new file mode 100644 index 00000000..0c77f587 --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/localsearch/RelationalLocalSearchBackendFactory.java | |||
@@ -0,0 +1,60 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.internal.localsearch; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.localsearch.matcher.integration.AbstractLocalSearchResultProvider; | ||
9 | import org.eclipse.viatra.query.runtime.localsearch.matcher.integration.LocalSearchBackend; | ||
10 | import org.eclipse.viatra.query.runtime.localsearch.matcher.integration.LocalSearchHints; | ||
11 | import org.eclipse.viatra.query.runtime.localsearch.plan.IPlanProvider; | ||
12 | import org.eclipse.viatra.query.runtime.localsearch.plan.SimplePlanProvider; | ||
13 | import org.eclipse.viatra.query.runtime.matchers.backend.IMatcherCapability; | ||
14 | import org.eclipse.viatra.query.runtime.matchers.backend.IQueryBackend; | ||
15 | import org.eclipse.viatra.query.runtime.matchers.backend.IQueryBackendFactory; | ||
16 | import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; | ||
17 | import org.eclipse.viatra.query.runtime.matchers.context.IQueryBackendContext; | ||
18 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery; | ||
19 | |||
20 | public class RelationalLocalSearchBackendFactory implements IQueryBackendFactory { | ||
21 | public static final RelationalLocalSearchBackendFactory INSTANCE = new RelationalLocalSearchBackendFactory(); | ||
22 | |||
23 | private RelationalLocalSearchBackendFactory() { | ||
24 | } | ||
25 | |||
26 | @Override | ||
27 | public IQueryBackend create(IQueryBackendContext context) { | ||
28 | return new LocalSearchBackend(context) { | ||
29 | // Create a new {@link IPlanProvider}, because the original {@link LocalSearchBackend#planProvider} is not | ||
30 | // accessible. | ||
31 | private final IPlanProvider planProvider = new SimplePlanProvider(context.getLogger()); | ||
32 | |||
33 | @Override | ||
34 | protected AbstractLocalSearchResultProvider initializeResultProvider(PQuery query, | ||
35 | QueryEvaluationHint hints) { | ||
36 | return new RelationalLocalSearchResultProvider(this, context, query, planProvider, hints); | ||
37 | } | ||
38 | |||
39 | @Override | ||
40 | public IQueryBackendFactory getFactory() { | ||
41 | return RelationalLocalSearchBackendFactory.this; | ||
42 | } | ||
43 | }; | ||
44 | } | ||
45 | |||
46 | @Override | ||
47 | public Class<? extends IQueryBackend> getBackendClass() { | ||
48 | return LocalSearchBackend.class; | ||
49 | } | ||
50 | |||
51 | @Override | ||
52 | public IMatcherCapability calculateRequiredCapability(PQuery pQuery, QueryEvaluationHint queryEvaluationHint) { | ||
53 | return LocalSearchHints.parse(queryEvaluationHint); | ||
54 | } | ||
55 | |||
56 | @Override | ||
57 | public boolean isCaching() { | ||
58 | return false; | ||
59 | } | ||
60 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/localsearch/RelationalLocalSearchResultProvider.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/localsearch/RelationalLocalSearchResultProvider.java new file mode 100644 index 00000000..da37be14 --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/localsearch/RelationalLocalSearchResultProvider.java | |||
@@ -0,0 +1,28 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.internal.localsearch; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.localsearch.matcher.integration.AbstractLocalSearchResultProvider; | ||
9 | import org.eclipse.viatra.query.runtime.localsearch.matcher.integration.LocalSearchBackend; | ||
10 | import org.eclipse.viatra.query.runtime.localsearch.matcher.integration.LocalSearchHints; | ||
11 | import org.eclipse.viatra.query.runtime.localsearch.plan.IPlanProvider; | ||
12 | import org.eclipse.viatra.query.runtime.localsearch.planner.compiler.IOperationCompiler; | ||
13 | import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; | ||
14 | import org.eclipse.viatra.query.runtime.matchers.context.IQueryBackendContext; | ||
15 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery; | ||
16 | |||
17 | class RelationalLocalSearchResultProvider extends AbstractLocalSearchResultProvider { | ||
18 | public RelationalLocalSearchResultProvider(LocalSearchBackend backend, IQueryBackendContext context, PQuery query, | ||
19 | IPlanProvider planProvider, QueryEvaluationHint userHints) { | ||
20 | super(backend, context, query, planProvider, userHints); | ||
21 | } | ||
22 | |||
23 | @Override | ||
24 | protected IOperationCompiler getOperationCompiler(IQueryBackendContext backendContext, | ||
25 | LocalSearchHints configuration) { | ||
26 | return new RelationalOperationCompiler(runtimeContext); | ||
27 | } | ||
28 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/localsearch/RelationalOperationCompiler.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/localsearch/RelationalOperationCompiler.java new file mode 100644 index 00000000..f76ef486 --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/localsearch/RelationalOperationCompiler.java | |||
@@ -0,0 +1,70 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.internal.localsearch; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.localsearch.operations.generic.GenericTypeExtendSingleValue; | ||
9 | import org.eclipse.viatra.query.runtime.localsearch.operations.util.CallInformation; | ||
10 | import org.eclipse.viatra.query.runtime.localsearch.planner.compiler.GenericOperationCompiler; | ||
11 | import org.eclipse.viatra.query.runtime.matchers.context.IInputKey; | ||
12 | import org.eclipse.viatra.query.runtime.matchers.context.IQueryRuntimeContext; | ||
13 | import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable; | ||
14 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.PositivePatternCall; | ||
15 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; | ||
16 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; | ||
17 | import org.eclipse.viatra.query.runtime.matchers.tuple.TupleMask; | ||
18 | |||
19 | import java.util.*; | ||
20 | |||
21 | public class RelationalOperationCompiler extends GenericOperationCompiler { | ||
22 | public RelationalOperationCompiler(IQueryRuntimeContext runtimeContext) { | ||
23 | super(runtimeContext); | ||
24 | } | ||
25 | |||
26 | @Override | ||
27 | protected void createExtend(TypeConstraint typeConstraint, Map<PVariable, Integer> variableMapping) { | ||
28 | IInputKey inputKey = typeConstraint.getSupplierKey(); | ||
29 | Tuple tuple = typeConstraint.getVariablesTuple(); | ||
30 | |||
31 | int[] positions = new int[tuple.getSize()]; | ||
32 | List<Integer> boundVariableIndices = new ArrayList<>(); | ||
33 | List<Integer> boundVariables = new ArrayList<>(); | ||
34 | Set<Integer> unboundVariables = new HashSet<>(); | ||
35 | for (int i = 0; i < tuple.getSize(); i++) { | ||
36 | PVariable variable = (PVariable) tuple.get(i); | ||
37 | Integer position = variableMapping.get(variable); | ||
38 | positions[i] = position; | ||
39 | if (variableBindings.get(typeConstraint).contains(position)) { | ||
40 | boundVariableIndices.add(i); | ||
41 | boundVariables.add(position); | ||
42 | } else { | ||
43 | unboundVariables.add(position); | ||
44 | } | ||
45 | } | ||
46 | TupleMask indexerMask = TupleMask.fromSelectedIndices(inputKey.getArity(), boundVariableIndices); | ||
47 | TupleMask callMask = TupleMask.fromSelectedIndices(variableMapping.size(), boundVariables); | ||
48 | // If multiple tuple elements from the indexer should be bound to the same variable, we must use a | ||
49 | // {@link GenericTypeExtend} check whether the tuple elements have the same value. | ||
50 | if (unboundVariables.size() == 1 && indexerMask.getSize() + 1 == indexerMask.getSourceWidth()) { | ||
51 | operations.add(new GenericTypeExtendSingleValue(inputKey, positions, callMask, indexerMask, | ||
52 | unboundVariables.iterator().next())); | ||
53 | } else { | ||
54 | // Use a fixed version of | ||
55 | // {@code org.eclipse.viatra.query.runtime.localsearch.operations.generic.GenericTypeExtend} that handles | ||
56 | // failed unification of variables correctly. | ||
57 | operations.add(new GenericTypeExtend(inputKey, positions, callMask, indexerMask, unboundVariables)); | ||
58 | } | ||
59 | } | ||
60 | |||
61 | @Override | ||
62 | protected void createExtend(PositivePatternCall pCall, Map<PVariable, Integer> variableMapping) { | ||
63 | CallInformation information = CallInformation.create(pCall, variableMapping, variableBindings.get(pCall)); | ||
64 | // Use a fixed version of | ||
65 | // {@code org.eclipse.viatra.query.runtime.localsearch.operations.extend.ExtendPositivePatternCall} that handles | ||
66 | // failed unification of variables correctly. | ||
67 | operations.add(new ExtendPositivePatternCall(information)); | ||
68 | dependencies.add(information.getCallWithAdornment()); | ||
69 | } | ||
70 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/AbstractViatraMatcher.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/AbstractViatraMatcher.java new file mode 100644 index 00000000..99b0a3d8 --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/AbstractViatraMatcher.java | |||
@@ -0,0 +1,32 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.internal.matcher; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.matchers.backend.IQueryResultProvider; | ||
9 | import org.eclipse.viatra.query.runtime.matchers.backend.IUpdateable; | ||
10 | import tools.refinery.store.query.dnf.Query; | ||
11 | import tools.refinery.store.query.resultset.AbstractResultSet; | ||
12 | import tools.refinery.store.query.viatra.internal.ViatraModelQueryAdapterImpl; | ||
13 | |||
14 | public abstract class AbstractViatraMatcher<T> extends AbstractResultSet<T> implements IUpdateable { | ||
15 | protected final IQueryResultProvider backend; | ||
16 | |||
17 | protected AbstractViatraMatcher(ViatraModelQueryAdapterImpl adapter, Query<T> query, | ||
18 | RawPatternMatcher rawPatternMatcher) { | ||
19 | super(adapter, query); | ||
20 | backend = rawPatternMatcher.getBackend(); | ||
21 | } | ||
22 | |||
23 | @Override | ||
24 | protected void startListeningForChanges() { | ||
25 | backend.addUpdateListener(this, this, false); | ||
26 | } | ||
27 | |||
28 | @Override | ||
29 | protected void stopListeningForChanges() { | ||
30 | backend.removeUpdateListener(this); | ||
31 | } | ||
32 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/FunctionalCursor.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/FunctionalCursor.java new file mode 100644 index 00000000..47efb2aa --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/FunctionalCursor.java | |||
@@ -0,0 +1,52 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.internal.matcher; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.rete.index.IterableIndexer; | ||
9 | import tools.refinery.store.map.Cursor; | ||
10 | import tools.refinery.store.tuple.Tuple; | ||
11 | |||
12 | import java.util.Iterator; | ||
13 | |||
14 | class FunctionalCursor<T> implements Cursor<Tuple, T> { | ||
15 | private final IterableIndexer indexer; | ||
16 | private final Iterator<org.eclipse.viatra.query.runtime.matchers.tuple.Tuple> iterator; | ||
17 | private boolean terminated; | ||
18 | private Tuple key; | ||
19 | private T value; | ||
20 | |||
21 | public FunctionalCursor(IterableIndexer indexer) { | ||
22 | this.indexer = indexer; | ||
23 | iterator = indexer.getSignatures().iterator(); | ||
24 | } | ||
25 | |||
26 | @Override | ||
27 | public Tuple getKey() { | ||
28 | return key; | ||
29 | } | ||
30 | |||
31 | @Override | ||
32 | public T getValue() { | ||
33 | return value; | ||
34 | } | ||
35 | |||
36 | @Override | ||
37 | public boolean isTerminated() { | ||
38 | return terminated; | ||
39 | } | ||
40 | |||
41 | @Override | ||
42 | public boolean move() { | ||
43 | if (!terminated && iterator.hasNext()) { | ||
44 | var match = iterator.next(); | ||
45 | key = MatcherUtils.toRefineryTuple(match); | ||
46 | value = MatcherUtils.getSingleValue(indexer.get(match)); | ||
47 | return true; | ||
48 | } | ||
49 | terminated = true; | ||
50 | return false; | ||
51 | } | ||
52 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/FunctionalViatraMatcher.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/FunctionalViatraMatcher.java new file mode 100644 index 00000000..db4740cd --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/FunctionalViatraMatcher.java | |||
@@ -0,0 +1,88 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.internal.matcher; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.matchers.tuple.TupleMask; | ||
9 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; | ||
10 | import org.eclipse.viatra.query.runtime.rete.index.IterableIndexer; | ||
11 | import org.eclipse.viatra.query.runtime.rete.matcher.RetePatternMatcher; | ||
12 | import tools.refinery.store.map.Cursor; | ||
13 | import tools.refinery.store.query.dnf.FunctionalQuery; | ||
14 | import tools.refinery.store.query.viatra.internal.ViatraModelQueryAdapterImpl; | ||
15 | import tools.refinery.store.tuple.Tuple; | ||
16 | |||
17 | /** | ||
18 | * Directly access the tuples inside a VIATRA pattern matcher.<p> | ||
19 | * This class neglects calling | ||
20 | * {@link org.eclipse.viatra.query.runtime.matchers.context.IQueryRuntimeContext#wrapTuple(org.eclipse.viatra.query.runtime.matchers.tuple.Tuple)} | ||
21 | * and | ||
22 | * {@link org.eclipse.viatra.query.runtime.matchers.context.IQueryRuntimeContext#unwrapTuple(org.eclipse.viatra.query.runtime.matchers.tuple.Tuple)}, | ||
23 | * because {@link tools.refinery.store.query.viatra.internal.context.RelationalRuntimeContext} provides a trivial | ||
24 | * implementation for these methods. | ||
25 | * Using this class with any other runtime context may lead to undefined behavior. | ||
26 | */ | ||
27 | public class FunctionalViatraMatcher<T> extends AbstractViatraMatcher<T> { | ||
28 | private final TupleMask emptyMask; | ||
29 | private final TupleMask omitOutputMask; | ||
30 | private final IterableIndexer omitOutputIndexer; | ||
31 | |||
32 | public FunctionalViatraMatcher(ViatraModelQueryAdapterImpl adapter, FunctionalQuery<T> query, | ||
33 | RawPatternMatcher rawPatternMatcher) { | ||
34 | super(adapter, query, rawPatternMatcher); | ||
35 | int arity = query.arity(); | ||
36 | int arityWithOutput = arity + 1; | ||
37 | emptyMask = TupleMask.empty(arityWithOutput); | ||
38 | omitOutputMask = TupleMask.omit(arity, arityWithOutput); | ||
39 | if (backend instanceof RetePatternMatcher reteBackend) { | ||
40 | var maybeIterableOmitOutputIndexer = IndexerUtils.getIndexer(reteBackend, omitOutputMask); | ||
41 | if (maybeIterableOmitOutputIndexer instanceof IterableIndexer iterableOmitOutputIndexer) { | ||
42 | omitOutputIndexer = iterableOmitOutputIndexer; | ||
43 | } else { | ||
44 | omitOutputIndexer = null; | ||
45 | } | ||
46 | } else { | ||
47 | omitOutputIndexer = null; | ||
48 | } | ||
49 | } | ||
50 | |||
51 | @Override | ||
52 | public T get(Tuple parameters) { | ||
53 | var tuple = MatcherUtils.toViatraTuple(parameters); | ||
54 | if (omitOutputIndexer == null) { | ||
55 | return MatcherUtils.getSingleValue(backend.getAllMatches(omitOutputMask, tuple).iterator()); | ||
56 | } else { | ||
57 | return MatcherUtils.getSingleValue(omitOutputIndexer.get(tuple)); | ||
58 | } | ||
59 | } | ||
60 | |||
61 | @Override | ||
62 | public Cursor<Tuple, T> getAll() { | ||
63 | if (omitOutputIndexer == null) { | ||
64 | var allMatches = backend.getAllMatches(emptyMask, Tuples.staticArityFlatTupleOf()); | ||
65 | return new UnsafeFunctionalCursor<>(allMatches.iterator()); | ||
66 | } | ||
67 | return new FunctionalCursor<>(omitOutputIndexer); | ||
68 | } | ||
69 | |||
70 | @Override | ||
71 | public int size() { | ||
72 | if (omitOutputIndexer == null) { | ||
73 | return backend.countMatches(emptyMask, Tuples.staticArityFlatTupleOf()); | ||
74 | } | ||
75 | return omitOutputIndexer.getBucketCount(); | ||
76 | } | ||
77 | |||
78 | @Override | ||
79 | public void update(org.eclipse.viatra.query.runtime.matchers.tuple.Tuple updateElement, boolean isInsertion) { | ||
80 | var key = MatcherUtils.keyToRefineryTuple(updateElement); | ||
81 | var value = MatcherUtils.<T>getValue(updateElement); | ||
82 | if (isInsertion) { | ||
83 | notifyChange(key, null, value); | ||
84 | } else { | ||
85 | notifyChange(key, value, null); | ||
86 | } | ||
87 | } | ||
88 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/IndexerUtils.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/IndexerUtils.java new file mode 100644 index 00000000..15f00b2d --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/IndexerUtils.java | |||
@@ -0,0 +1,53 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.internal.matcher; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.matchers.tuple.TupleMask; | ||
9 | import org.eclipse.viatra.query.runtime.rete.index.Indexer; | ||
10 | import org.eclipse.viatra.query.runtime.rete.matcher.ReteEngine; | ||
11 | import org.eclipse.viatra.query.runtime.rete.matcher.RetePatternMatcher; | ||
12 | import org.eclipse.viatra.query.runtime.rete.traceability.RecipeTraceInfo; | ||
13 | |||
14 | import java.lang.invoke.MethodHandle; | ||
15 | import java.lang.invoke.MethodHandles; | ||
16 | import java.lang.invoke.MethodType; | ||
17 | |||
18 | final class IndexerUtils { | ||
19 | private static final MethodHandle GET_ENGINE_HANDLE; | ||
20 | private static final MethodHandle GET_PRODUCTION_NODE_TRACE_HANDLE; | ||
21 | private static final MethodHandle ACCESS_PROJECTION_HANDLE; | ||
22 | |||
23 | static { | ||
24 | try { | ||
25 | var lookup = MethodHandles.privateLookupIn(RetePatternMatcher.class, MethodHandles.lookup()); | ||
26 | GET_ENGINE_HANDLE = lookup.findGetter(RetePatternMatcher.class, "engine", ReteEngine.class); | ||
27 | GET_PRODUCTION_NODE_TRACE_HANDLE = lookup.findGetter(RetePatternMatcher.class, "productionNodeTrace", | ||
28 | RecipeTraceInfo.class); | ||
29 | ACCESS_PROJECTION_HANDLE = lookup.findVirtual(ReteEngine.class, "accessProjection", | ||
30 | MethodType.methodType(Indexer.class, RecipeTraceInfo.class, TupleMask.class)); | ||
31 | } catch (IllegalAccessException | NoSuchFieldException | NoSuchMethodException e) { | ||
32 | throw new IllegalStateException("Cannot access private members of %s" | ||
33 | .formatted(RetePatternMatcher.class.getPackageName()), e); | ||
34 | } | ||
35 | } | ||
36 | |||
37 | private IndexerUtils() { | ||
38 | throw new IllegalStateException("This is a static utility class and should not be instantiated directly"); | ||
39 | } | ||
40 | |||
41 | public static Indexer getIndexer(RetePatternMatcher backend, TupleMask mask) { | ||
42 | try { | ||
43 | var engine = (ReteEngine) GET_ENGINE_HANDLE.invokeExact(backend); | ||
44 | var trace = (RecipeTraceInfo) GET_PRODUCTION_NODE_TRACE_HANDLE.invokeExact(backend); | ||
45 | return (Indexer) ACCESS_PROJECTION_HANDLE.invokeExact(engine, trace, mask); | ||
46 | } catch (Error e) { | ||
47 | // Fatal JVM errors should not be wrapped. | ||
48 | throw e; | ||
49 | } catch (Throwable e) { | ||
50 | throw new IllegalStateException("Cannot access matcher for mask " + mask, e); | ||
51 | } | ||
52 | } | ||
53 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/MatcherUtils.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/MatcherUtils.java new file mode 100644 index 00000000..6e24812a --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/MatcherUtils.java | |||
@@ -0,0 +1,115 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.internal.matcher; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.matchers.tuple.ITuple; | ||
9 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; | ||
10 | import org.jetbrains.annotations.Nullable; | ||
11 | import tools.refinery.store.tuple.*; | ||
12 | |||
13 | import java.util.Iterator; | ||
14 | |||
15 | final class MatcherUtils { | ||
16 | private MatcherUtils() { | ||
17 | throw new IllegalStateException("This is a static utility class and should not be instantiated directly"); | ||
18 | } | ||
19 | |||
20 | public static org.eclipse.viatra.query.runtime.matchers.tuple.Tuple toViatraTuple(Tuple refineryTuple) { | ||
21 | if (refineryTuple instanceof Tuple0) { | ||
22 | return Tuples.staticArityFlatTupleOf(); | ||
23 | } else if (refineryTuple instanceof Tuple1) { | ||
24 | return Tuples.staticArityFlatTupleOf(refineryTuple); | ||
25 | } else if (refineryTuple instanceof Tuple2 tuple2) { | ||
26 | return Tuples.staticArityFlatTupleOf(Tuple.of(tuple2.value0()), Tuple.of(tuple2.value1())); | ||
27 | } else if (refineryTuple instanceof Tuple3 tuple3) { | ||
28 | return Tuples.staticArityFlatTupleOf(Tuple.of(tuple3.value0()), Tuple.of(tuple3.value1()), | ||
29 | Tuple.of(tuple3.value2())); | ||
30 | } else if (refineryTuple instanceof Tuple4 tuple4) { | ||
31 | return Tuples.staticArityFlatTupleOf(Tuple.of(tuple4.value0()), Tuple.of(tuple4.value1()), | ||
32 | Tuple.of(tuple4.value2()), Tuple.of(tuple4.value3())); | ||
33 | } else { | ||
34 | int arity = refineryTuple.getSize(); | ||
35 | var values = new Object[arity]; | ||
36 | for (int i = 0; i < arity; i++) { | ||
37 | values[i] = Tuple.of(refineryTuple.get(i)); | ||
38 | } | ||
39 | return Tuples.flatTupleOf(values); | ||
40 | } | ||
41 | } | ||
42 | |||
43 | public static Tuple toRefineryTuple(ITuple viatraTuple) { | ||
44 | int arity = viatraTuple.getSize(); | ||
45 | if (arity == 1) { | ||
46 | return getWrapper(viatraTuple, 0); | ||
47 | } | ||
48 | return prefixToRefineryTuple(viatraTuple, viatraTuple.getSize()); | ||
49 | } | ||
50 | |||
51 | public static Tuple keyToRefineryTuple(ITuple viatraTuple) { | ||
52 | return prefixToRefineryTuple(viatraTuple, viatraTuple.getSize() - 1); | ||
53 | } | ||
54 | |||
55 | private static Tuple prefixToRefineryTuple(ITuple viatraTuple, int targetArity) { | ||
56 | if (targetArity < 0) { | ||
57 | throw new IllegalArgumentException("Requested negative prefix %d of %s" | ||
58 | .formatted(targetArity, viatraTuple)); | ||
59 | } | ||
60 | return switch (targetArity) { | ||
61 | case 0 -> Tuple.of(); | ||
62 | case 1 -> Tuple.of(unwrap(viatraTuple, 0)); | ||
63 | case 2 -> Tuple.of(unwrap(viatraTuple, 0), unwrap(viatraTuple, 1)); | ||
64 | case 3 -> Tuple.of(unwrap(viatraTuple, 0), unwrap(viatraTuple, 1), unwrap(viatraTuple, 2)); | ||
65 | case 4 -> Tuple.of(unwrap(viatraTuple, 0), unwrap(viatraTuple, 1), unwrap(viatraTuple, 2), | ||
66 | unwrap(viatraTuple, 3)); | ||
67 | default -> { | ||
68 | var entries = new int[targetArity]; | ||
69 | for (int i = 0; i < targetArity; i++) { | ||
70 | entries[i] = unwrap(viatraTuple, i); | ||
71 | } | ||
72 | yield Tuple.of(entries); | ||
73 | } | ||
74 | }; | ||
75 | } | ||
76 | |||
77 | private static Tuple1 getWrapper(ITuple viatraTuple, int index) { | ||
78 | if (!((viatraTuple.get(index)) instanceof Tuple1 wrappedObjectId)) { | ||
79 | throw new IllegalArgumentException("Element %d of tuple %s is not an object id" | ||
80 | .formatted(index, viatraTuple)); | ||
81 | } | ||
82 | return wrappedObjectId; | ||
83 | } | ||
84 | |||
85 | private static int unwrap(ITuple viatraTuple, int index) { | ||
86 | return getWrapper(viatraTuple, index).value0(); | ||
87 | } | ||
88 | |||
89 | public static <T> T getValue(ITuple match) { | ||
90 | // This is only safe if we know for sure that match came from a functional query of type {@code T}. | ||
91 | @SuppressWarnings("unchecked") | ||
92 | var result = (T) match.get(match.getSize() - 1); | ||
93 | return result; | ||
94 | } | ||
95 | |||
96 | public static <T> T getSingleValue(@Nullable Iterable<? extends ITuple> viatraTuples) { | ||
97 | if (viatraTuples == null) { | ||
98 | return null; | ||
99 | } | ||
100 | return getSingleValue(viatraTuples.iterator()); | ||
101 | } | ||
102 | |||
103 | public static <T> T getSingleValue(Iterator<? extends ITuple> iterator) { | ||
104 | if (!iterator.hasNext()) { | ||
105 | return null; | ||
106 | } | ||
107 | var match = iterator.next(); | ||
108 | var result = MatcherUtils.<T>getValue(match); | ||
109 | if (iterator.hasNext()) { | ||
110 | var input = keyToRefineryTuple(match); | ||
111 | throw new IllegalStateException("Query is not functional for input tuple: " + input); | ||
112 | } | ||
113 | return result; | ||
114 | } | ||
115 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/RawPatternMatcher.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/RawPatternMatcher.java new file mode 100644 index 00000000..5b82c4b7 --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/RawPatternMatcher.java | |||
@@ -0,0 +1,20 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.internal.matcher; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.api.GenericPatternMatcher; | ||
9 | import org.eclipse.viatra.query.runtime.api.GenericQuerySpecification; | ||
10 | import org.eclipse.viatra.query.runtime.matchers.backend.IQueryResultProvider; | ||
11 | |||
12 | public class RawPatternMatcher extends GenericPatternMatcher { | ||
13 | public RawPatternMatcher(GenericQuerySpecification<? extends GenericPatternMatcher> specification) { | ||
14 | super(specification); | ||
15 | } | ||
16 | |||
17 | IQueryResultProvider getBackend() { | ||
18 | return backend; | ||
19 | } | ||
20 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/RelationalCursor.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/RelationalCursor.java new file mode 100644 index 00000000..1dc8f5db --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/RelationalCursor.java | |||
@@ -0,0 +1,47 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.internal.matcher; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.matchers.tuple.ITuple; | ||
9 | import tools.refinery.store.map.Cursor; | ||
10 | import tools.refinery.store.tuple.Tuple; | ||
11 | |||
12 | import java.util.Iterator; | ||
13 | |||
14 | class RelationalCursor implements Cursor<Tuple, Boolean> { | ||
15 | private final Iterator<? extends ITuple> tuplesIterator; | ||
16 | private boolean terminated; | ||
17 | private Tuple key; | ||
18 | |||
19 | public RelationalCursor(Iterator<? extends ITuple> tuplesIterator) { | ||
20 | this.tuplesIterator = tuplesIterator; | ||
21 | } | ||
22 | |||
23 | @Override | ||
24 | public Tuple getKey() { | ||
25 | return key; | ||
26 | } | ||
27 | |||
28 | @Override | ||
29 | public Boolean getValue() { | ||
30 | return true; | ||
31 | } | ||
32 | |||
33 | @Override | ||
34 | public boolean isTerminated() { | ||
35 | return terminated; | ||
36 | } | ||
37 | |||
38 | @Override | ||
39 | public boolean move() { | ||
40 | if (!terminated && tuplesIterator.hasNext()) { | ||
41 | key = MatcherUtils.toRefineryTuple(tuplesIterator.next()); | ||
42 | return true; | ||
43 | } | ||
44 | terminated = true; | ||
45 | return false; | ||
46 | } | ||
47 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/RelationalViatraMatcher.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/RelationalViatraMatcher.java new file mode 100644 index 00000000..ac95dcc0 --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/RelationalViatraMatcher.java | |||
@@ -0,0 +1,80 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.internal.matcher; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.matchers.tuple.TupleMask; | ||
9 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; | ||
10 | import org.eclipse.viatra.query.runtime.rete.index.Indexer; | ||
11 | import org.eclipse.viatra.query.runtime.rete.matcher.RetePatternMatcher; | ||
12 | import tools.refinery.store.map.Cursor; | ||
13 | import tools.refinery.store.map.Cursors; | ||
14 | import tools.refinery.store.query.dnf.RelationalQuery; | ||
15 | import tools.refinery.store.query.viatra.internal.ViatraModelQueryAdapterImpl; | ||
16 | import tools.refinery.store.tuple.Tuple; | ||
17 | |||
18 | /** | ||
19 | * Directly access the tuples inside a VIATRA pattern matcher.<p> | ||
20 | * This class neglects calling | ||
21 | * {@link org.eclipse.viatra.query.runtime.matchers.context.IQueryRuntimeContext#wrapTuple(org.eclipse.viatra.query.runtime.matchers.tuple.Tuple)} | ||
22 | * and | ||
23 | * {@link org.eclipse.viatra.query.runtime.matchers.context.IQueryRuntimeContext#unwrapTuple(org.eclipse.viatra.query.runtime.matchers.tuple.Tuple)}, | ||
24 | * because {@link tools.refinery.store.query.viatra.internal.context.RelationalRuntimeContext} provides a trivial | ||
25 | * implementation for these methods. | ||
26 | * Using this class with any other runtime context may lead to undefined behavior. | ||
27 | */ | ||
28 | public class RelationalViatraMatcher extends AbstractViatraMatcher<Boolean> { | ||
29 | private final TupleMask emptyMask; | ||
30 | private final TupleMask identityMask; | ||
31 | private final Indexer emptyMaskIndexer; | ||
32 | |||
33 | public RelationalViatraMatcher(ViatraModelQueryAdapterImpl adapter, RelationalQuery query, | ||
34 | RawPatternMatcher rawPatternMatcher) { | ||
35 | super(adapter, query, rawPatternMatcher); | ||
36 | int arity = query.arity(); | ||
37 | emptyMask = TupleMask.empty(arity); | ||
38 | identityMask = TupleMask.identity(arity); | ||
39 | if (backend instanceof RetePatternMatcher reteBackend) { | ||
40 | emptyMaskIndexer = IndexerUtils.getIndexer(reteBackend, emptyMask); | ||
41 | } else { | ||
42 | emptyMaskIndexer = null; | ||
43 | } | ||
44 | } | ||
45 | |||
46 | @Override | ||
47 | public Boolean get(Tuple parameters) { | ||
48 | var tuple = MatcherUtils.toViatraTuple(parameters); | ||
49 | if (emptyMaskIndexer == null) { | ||
50 | return backend.hasMatch(identityMask, tuple); | ||
51 | } | ||
52 | var matches = emptyMaskIndexer.get(Tuples.staticArityFlatTupleOf()); | ||
53 | return matches != null && matches.contains(tuple); | ||
54 | } | ||
55 | |||
56 | @Override | ||
57 | public Cursor<Tuple, Boolean> getAll() { | ||
58 | if (emptyMaskIndexer == null) { | ||
59 | var allMatches = backend.getAllMatches(emptyMask, Tuples.staticArityFlatTupleOf()); | ||
60 | return new RelationalCursor(allMatches.iterator()); | ||
61 | } | ||
62 | var matches = emptyMaskIndexer.get(Tuples.staticArityFlatTupleOf()); | ||
63 | return matches == null ? Cursors.empty() : new RelationalCursor(matches.stream().iterator()); | ||
64 | } | ||
65 | |||
66 | @Override | ||
67 | public int size() { | ||
68 | if (emptyMaskIndexer == null) { | ||
69 | return backend.countMatches(emptyMask, Tuples.staticArityFlatTupleOf()); | ||
70 | } | ||
71 | var matches = emptyMaskIndexer.get(Tuples.staticArityFlatTupleOf()); | ||
72 | return matches == null ? 0 : matches.size(); | ||
73 | } | ||
74 | |||
75 | @Override | ||
76 | public void update(org.eclipse.viatra.query.runtime.matchers.tuple.Tuple updateElement, boolean isInsertion) { | ||
77 | var key = MatcherUtils.toRefineryTuple(updateElement); | ||
78 | notifyChange(key, !isInsertion, isInsertion); | ||
79 | } | ||
80 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/UnsafeFunctionalCursor.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/UnsafeFunctionalCursor.java new file mode 100644 index 00000000..b0b507fe --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/matcher/UnsafeFunctionalCursor.java | |||
@@ -0,0 +1,55 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.internal.matcher; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.matchers.tuple.ITuple; | ||
9 | import tools.refinery.store.map.Cursor; | ||
10 | import tools.refinery.store.tuple.Tuple; | ||
11 | |||
12 | import java.util.Iterator; | ||
13 | |||
14 | /** | ||
15 | * Cursor for a functional result set that iterates over a stream of raw matches and doesn't check whether the | ||
16 | * functional dependency of the output on the inputs is obeyed. | ||
17 | * @param <T> The output type. | ||
18 | */ | ||
19 | class UnsafeFunctionalCursor<T> implements Cursor<Tuple, T> { | ||
20 | private final Iterator<? extends ITuple> tuplesIterator; | ||
21 | private boolean terminated; | ||
22 | private Tuple key; | ||
23 | private T value; | ||
24 | |||
25 | public UnsafeFunctionalCursor(Iterator<? extends ITuple> tuplesIterator) { | ||
26 | this.tuplesIterator = tuplesIterator; | ||
27 | } | ||
28 | |||
29 | @Override | ||
30 | public Tuple getKey() { | ||
31 | return key; | ||
32 | } | ||
33 | |||
34 | @Override | ||
35 | public T getValue() { | ||
36 | return value; | ||
37 | } | ||
38 | |||
39 | @Override | ||
40 | public boolean isTerminated() { | ||
41 | return terminated; | ||
42 | } | ||
43 | |||
44 | @Override | ||
45 | public boolean move() { | ||
46 | if (!terminated && tuplesIterator.hasNext()) { | ||
47 | var match = tuplesIterator.next(); | ||
48 | key = MatcherUtils.keyToRefineryTuple(match); | ||
49 | value = MatcherUtils.getValue(match); | ||
50 | return true; | ||
51 | } | ||
52 | terminated = true; | ||
53 | return false; | ||
54 | } | ||
55 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/AssumptionEvaluator.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/AssumptionEvaluator.java new file mode 100644 index 00000000..cf127291 --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/AssumptionEvaluator.java | |||
@@ -0,0 +1,21 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.internal.pquery; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | class AssumptionEvaluator extends TermEvaluator<Boolean> { | ||
12 | public AssumptionEvaluator(Term<Boolean> term) { | ||
13 | super(term); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | public Object evaluateExpression(IValueProvider provider) { | ||
18 | var result = super.evaluateExpression(provider); | ||
19 | return result == null ? Boolean.FALSE : result; | ||
20 | } | ||
21 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/DNF2PQuery.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/DNF2PQuery.java deleted file mode 100644 index 60f1bcae..00000000 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/DNF2PQuery.java +++ /dev/null | |||
@@ -1,223 +0,0 @@ | |||
1 | package tools.refinery.store.query.viatra.internal.pquery; | ||
2 | |||
3 | import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; | ||
4 | import org.eclipse.viatra.query.runtime.matchers.context.IInputKey; | ||
5 | import org.eclipse.viatra.query.runtime.matchers.psystem.PBody; | ||
6 | import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable; | ||
7 | import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation; | ||
8 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Equality; | ||
9 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter; | ||
10 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.Inequality; | ||
11 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.NegativePatternCall; | ||
12 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.BinaryTransitiveClosure; | ||
13 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue; | ||
14 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.PositivePatternCall; | ||
15 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; | ||
16 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; | ||
17 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; | ||
18 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; | ||
19 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; | ||
20 | import tools.refinery.store.query.DNF; | ||
21 | import tools.refinery.store.query.DNFAnd; | ||
22 | import tools.refinery.store.query.DNFUtils; | ||
23 | import tools.refinery.store.query.Variable; | ||
24 | import tools.refinery.store.query.atom.*; | ||
25 | import tools.refinery.store.query.view.AnyRelationView; | ||
26 | |||
27 | import java.util.*; | ||
28 | import java.util.function.Function; | ||
29 | import java.util.stream.Collectors; | ||
30 | |||
31 | public class DNF2PQuery { | ||
32 | private static final Object P_CONSTRAINT_LOCK = new Object(); | ||
33 | |||
34 | private final Set<DNF> translating = new LinkedHashSet<>(); | ||
35 | |||
36 | private final Map<DNF, RawPQuery> dnf2PQueryMap = new HashMap<>(); | ||
37 | |||
38 | private final Map<AnyRelationView, RelationViewWrapper> view2WrapperMap = new LinkedHashMap<>(); | ||
39 | |||
40 | private final Map<AnyRelationView, RawPQuery> view2EmbeddedMap = new HashMap<>(); | ||
41 | |||
42 | private Function<DNF, QueryEvaluationHint> computeHint = dnf -> new QueryEvaluationHint(null, | ||
43 | QueryEvaluationHint.BackendRequirement.UNSPECIFIED); | ||
44 | |||
45 | public void setComputeHint(Function<DNF, QueryEvaluationHint> computeHint) { | ||
46 | this.computeHint = computeHint; | ||
47 | } | ||
48 | |||
49 | public RawPQuery translate(DNF dnfQuery) { | ||
50 | if (translating.contains(dnfQuery)) { | ||
51 | var path = translating.stream().map(DNF::name).collect(Collectors.joining(" -> ")); | ||
52 | throw new IllegalStateException("Circular reference %s -> %s detected".formatted(path, | ||
53 | dnfQuery.name())); | ||
54 | } | ||
55 | // We can't use computeIfAbsent here, because translating referenced queries calls this method in a reentrant | ||
56 | // way, which would cause a ConcurrentModificationException with computeIfAbsent. | ||
57 | var pQuery = dnf2PQueryMap.get(dnfQuery); | ||
58 | if (pQuery == null) { | ||
59 | translating.add(dnfQuery); | ||
60 | try { | ||
61 | pQuery = doTranslate(dnfQuery); | ||
62 | dnf2PQueryMap.put(dnfQuery, pQuery); | ||
63 | } finally { | ||
64 | translating.remove(dnfQuery); | ||
65 | } | ||
66 | } | ||
67 | return pQuery; | ||
68 | } | ||
69 | |||
70 | public Map<AnyRelationView, IInputKey> getRelationViews() { | ||
71 | return Collections.unmodifiableMap(view2WrapperMap); | ||
72 | } | ||
73 | |||
74 | public RawPQuery getAlreadyTranslated(DNF dnfQuery) { | ||
75 | return dnf2PQueryMap.get(dnfQuery); | ||
76 | } | ||
77 | |||
78 | private RawPQuery doTranslate(DNF dnfQuery) { | ||
79 | var pQuery = new RawPQuery(dnfQuery.getUniqueName()); | ||
80 | pQuery.setEvaluationHints(computeHint.apply(dnfQuery)); | ||
81 | |||
82 | Map<Variable, PParameter> parameters = new HashMap<>(); | ||
83 | for (Variable variable : dnfQuery.getParameters()) { | ||
84 | parameters.put(variable, new PParameter(variable.getUniqueName())); | ||
85 | } | ||
86 | |||
87 | List<PParameter> parameterList = new ArrayList<>(); | ||
88 | for (var param : dnfQuery.getParameters()) { | ||
89 | parameterList.add(parameters.get(param)); | ||
90 | } | ||
91 | pQuery.setParameters(parameterList); | ||
92 | |||
93 | for (var functionalDependency : dnfQuery.getFunctionalDependencies()) { | ||
94 | var functionalDependencyAnnotation = new PAnnotation("FunctionalDependency"); | ||
95 | for (var forEachVariable : functionalDependency.forEach()) { | ||
96 | functionalDependencyAnnotation.addAttribute("forEach", forEachVariable.getUniqueName()); | ||
97 | } | ||
98 | for (var uniqueVariable : functionalDependency.unique()) { | ||
99 | functionalDependencyAnnotation.addAttribute("unique", uniqueVariable.getUniqueName()); | ||
100 | } | ||
101 | pQuery.addAnnotation(functionalDependencyAnnotation); | ||
102 | } | ||
103 | |||
104 | // The constructor of {@link org.eclipse.viatra.query.runtime.matchers.psystem.BasePConstraint} mutates | ||
105 | // global static state (<code>nextID</code>) without locking. Therefore, we need to synchronize before creating | ||
106 | // any query constraints to avoid a data race. | ||
107 | synchronized (P_CONSTRAINT_LOCK) { | ||
108 | for (DNFAnd clause : dnfQuery.getClauses()) { | ||
109 | PBody body = new PBody(pQuery); | ||
110 | List<ExportedParameter> symbolicParameters = new ArrayList<>(); | ||
111 | for (var param : dnfQuery.getParameters()) { | ||
112 | PVariable pVar = body.getOrCreateVariableByName(param.getUniqueName()); | ||
113 | symbolicParameters.add(new ExportedParameter(body, pVar, parameters.get(param))); | ||
114 | } | ||
115 | body.setSymbolicParameters(symbolicParameters); | ||
116 | pQuery.addBody(body); | ||
117 | for (DNFAtom constraint : clause.constraints()) { | ||
118 | translateDNFAtom(constraint, body); | ||
119 | } | ||
120 | } | ||
121 | } | ||
122 | |||
123 | return pQuery; | ||
124 | } | ||
125 | |||
126 | private void translateDNFAtom(DNFAtom constraint, PBody body) { | ||
127 | if (constraint instanceof EquivalenceAtom equivalenceAtom) { | ||
128 | translateEquivalenceAtom(equivalenceAtom, body); | ||
129 | } else if (constraint instanceof RelationViewAtom relationViewAtom) { | ||
130 | translateRelationViewAtom(relationViewAtom, body); | ||
131 | } else if (constraint instanceof DNFCallAtom callAtom) { | ||
132 | translateCallAtom(callAtom, body); | ||
133 | } else if (constraint instanceof ConstantAtom constantAtom) { | ||
134 | translateConstantAtom(constantAtom, body); | ||
135 | } else { | ||
136 | throw new IllegalArgumentException("Unknown constraint: " + constraint.toString()); | ||
137 | } | ||
138 | } | ||
139 | |||
140 | private void translateEquivalenceAtom(EquivalenceAtom equivalence, PBody body) { | ||
141 | PVariable varSource = body.getOrCreateVariableByName(equivalence.left().getUniqueName()); | ||
142 | PVariable varTarget = body.getOrCreateVariableByName(equivalence.right().getUniqueName()); | ||
143 | if (equivalence.positive()) { | ||
144 | new Equality(body, varSource, varTarget); | ||
145 | } else { | ||
146 | new Inequality(body, varSource, varTarget); | ||
147 | } | ||
148 | } | ||
149 | |||
150 | private void translateRelationViewAtom(RelationViewAtom relationViewAtom, PBody body) { | ||
151 | var substitution = translateSubstitution(relationViewAtom.getSubstitution(), body); | ||
152 | var polarity = relationViewAtom.getPolarity(); | ||
153 | var relationView = relationViewAtom.getTarget(); | ||
154 | if (polarity == CallPolarity.POSITIVE) { | ||
155 | new TypeConstraint(body, substitution, wrapView(relationView)); | ||
156 | } else { | ||
157 | var embeddedPQuery = translateEmbeddedRelationViewPQuery(relationView); | ||
158 | switch (polarity) { | ||
159 | case TRANSITIVE -> new BinaryTransitiveClosure(body, substitution, embeddedPQuery); | ||
160 | case NEGATIVE -> new NegativePatternCall(body, substitution, embeddedPQuery); | ||
161 | default -> throw new IllegalArgumentException("Unknown polarity: " + polarity); | ||
162 | } | ||
163 | } | ||
164 | } | ||
165 | |||
166 | private static Tuple translateSubstitution(List<Variable> substitution, PBody body) { | ||
167 | int arity = substitution.size(); | ||
168 | Object[] variables = new Object[arity]; | ||
169 | for (int i = 0; i < arity; i++) { | ||
170 | var variable = substitution.get(i); | ||
171 | variables[i] = body.getOrCreateVariableByName(variable.getUniqueName()); | ||
172 | } | ||
173 | return Tuples.flatTupleOf(variables); | ||
174 | } | ||
175 | |||
176 | private RawPQuery translateEmbeddedRelationViewPQuery(AnyRelationView relationView) { | ||
177 | return view2EmbeddedMap.computeIfAbsent(relationView, this::doTranslateEmbeddedRelationViewPQuery); | ||
178 | } | ||
179 | |||
180 | private RawPQuery doTranslateEmbeddedRelationViewPQuery(AnyRelationView relationView) { | ||
181 | var embeddedPQuery = new RawPQuery(DNFUtils.generateUniqueName(relationView.name()), PVisibility.EMBEDDED); | ||
182 | var body = new PBody(embeddedPQuery); | ||
183 | int arity = relationView.arity(); | ||
184 | var parameters = new ArrayList<PParameter>(arity); | ||
185 | var arguments = new Object[arity]; | ||
186 | var symbolicParameters = new ArrayList<ExportedParameter>(arity); | ||
187 | for (int i = 0; i < arity; i++) { | ||
188 | var parameterName = "p" + i; | ||
189 | var parameter = new PParameter(parameterName); | ||
190 | parameters.add(parameter); | ||
191 | var variable = body.getOrCreateVariableByName(parameterName); | ||
192 | arguments[i] = variable; | ||
193 | symbolicParameters.add(new ExportedParameter(body, variable, parameter)); | ||
194 | } | ||
195 | embeddedPQuery.setParameters(parameters); | ||
196 | body.setSymbolicParameters(symbolicParameters); | ||
197 | var argumentTuple = Tuples.flatTupleOf(arguments); | ||
198 | new TypeConstraint(body, argumentTuple, wrapView(relationView)); | ||
199 | embeddedPQuery.addBody(body); | ||
200 | return embeddedPQuery; | ||
201 | } | ||
202 | |||
203 | private RelationViewWrapper wrapView(AnyRelationView relationView) { | ||
204 | return view2WrapperMap.computeIfAbsent(relationView, RelationViewWrapper::new); | ||
205 | } | ||
206 | |||
207 | private void translateCallAtom(DNFCallAtom callAtom, PBody body) { | ||
208 | var variablesTuple = translateSubstitution(callAtom.getSubstitution(), body); | ||
209 | var translatedReferred = translate(callAtom.getTarget()); | ||
210 | var polarity = callAtom.getPolarity(); | ||
211 | switch (polarity) { | ||
212 | case POSITIVE -> new PositivePatternCall(body, variablesTuple, translatedReferred); | ||
213 | case TRANSITIVE -> new BinaryTransitiveClosure(body, variablesTuple, translatedReferred); | ||
214 | case NEGATIVE -> new NegativePatternCall(body, variablesTuple, translatedReferred); | ||
215 | default -> throw new IllegalArgumentException("Unknown polarity: " + polarity); | ||
216 | } | ||
217 | } | ||
218 | |||
219 | private void translateConstantAtom(ConstantAtom constantAtom, PBody body) { | ||
220 | var variable = body.getOrCreateVariableByName(constantAtom.variable().getUniqueName()); | ||
221 | new ConstantValue(body, variable, constantAtom.nodeId()); | ||
222 | } | ||
223 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/Dnf2PQuery.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/Dnf2PQuery.java new file mode 100644 index 00000000..5b0ea61d --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/Dnf2PQuery.java | |||
@@ -0,0 +1,266 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.internal.pquery; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.matchers.backend.IQueryBackendFactory; | ||
9 | import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; | ||
10 | import org.eclipse.viatra.query.runtime.matchers.context.IInputKey; | ||
11 | import org.eclipse.viatra.query.runtime.matchers.psystem.PBody; | ||
12 | import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable; | ||
13 | import org.eclipse.viatra.query.runtime.matchers.psystem.aggregations.BoundAggregator; | ||
14 | import org.eclipse.viatra.query.runtime.matchers.psystem.aggregations.IMultisetAggregationOperator; | ||
15 | import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation; | ||
16 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.*; | ||
17 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.BinaryTransitiveClosure; | ||
18 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.ConstantValue; | ||
19 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.PositivePatternCall; | ||
20 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; | ||
21 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; | ||
22 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameterDirection; | ||
23 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery; | ||
24 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; | ||
25 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; | ||
26 | import tools.refinery.store.query.dnf.Dnf; | ||
27 | import tools.refinery.store.query.dnf.DnfClause; | ||
28 | import tools.refinery.store.query.dnf.SymbolicParameter; | ||
29 | import tools.refinery.store.query.literal.*; | ||
30 | import tools.refinery.store.query.term.ConstantTerm; | ||
31 | import tools.refinery.store.query.term.StatefulAggregator; | ||
32 | import tools.refinery.store.query.term.StatelessAggregator; | ||
33 | import tools.refinery.store.query.term.Variable; | ||
34 | import tools.refinery.store.query.view.AnySymbolView; | ||
35 | import tools.refinery.store.util.CycleDetectingMapper; | ||
36 | |||
37 | import java.util.*; | ||
38 | import java.util.function.Function; | ||
39 | import java.util.stream.Collectors; | ||
40 | |||
41 | public class Dnf2PQuery { | ||
42 | private static final Object P_CONSTRAINT_LOCK = new Object(); | ||
43 | private final CycleDetectingMapper<Dnf, RawPQuery> mapper = new CycleDetectingMapper<>(Dnf::name, | ||
44 | this::doTranslate); | ||
45 | private final QueryWrapperFactory wrapperFactory = new QueryWrapperFactory(this); | ||
46 | private final Map<Dnf, QueryEvaluationHint> hintOverrides = new LinkedHashMap<>(); | ||
47 | private Function<Dnf, QueryEvaluationHint> computeHint = dnf -> new QueryEvaluationHint(null, | ||
48 | (IQueryBackendFactory) null); | ||
49 | |||
50 | public void setComputeHint(Function<Dnf, QueryEvaluationHint> computeHint) { | ||
51 | this.computeHint = computeHint; | ||
52 | } | ||
53 | |||
54 | public RawPQuery translate(Dnf dnfQuery) { | ||
55 | return mapper.map(dnfQuery); | ||
56 | } | ||
57 | |||
58 | public Map<AnySymbolView, IInputKey> getSymbolViews() { | ||
59 | return wrapperFactory.getSymbolViews(); | ||
60 | } | ||
61 | |||
62 | public void hint(Dnf dnf, QueryEvaluationHint hint) { | ||
63 | hintOverrides.compute(dnf, (ignoredKey, existingHint) -> | ||
64 | existingHint == null ? hint : existingHint.overrideBy(hint)); | ||
65 | } | ||
66 | |||
67 | private QueryEvaluationHint consumeHint(Dnf dnf) { | ||
68 | var defaultHint = computeHint.apply(dnf); | ||
69 | var existingHint = hintOverrides.remove(dnf); | ||
70 | return defaultHint.overrideBy(existingHint); | ||
71 | } | ||
72 | |||
73 | public void assertNoUnusedHints() { | ||
74 | if (hintOverrides.isEmpty()) { | ||
75 | return; | ||
76 | } | ||
77 | var unusedHints = hintOverrides.keySet().stream().map(Dnf::name).collect(Collectors.joining(", ")); | ||
78 | throw new IllegalStateException( | ||
79 | "Unused query evaluation hints for %s. Hints must be set before a query is added to the engine" | ||
80 | .formatted(unusedHints)); | ||
81 | } | ||
82 | |||
83 | private RawPQuery doTranslate(Dnf dnfQuery) { | ||
84 | var pQuery = new RawPQuery(dnfQuery.getUniqueName()); | ||
85 | pQuery.setEvaluationHints(consumeHint(dnfQuery)); | ||
86 | |||
87 | Map<SymbolicParameter, PParameter> parameters = new HashMap<>(); | ||
88 | List<PParameter> parameterList = new ArrayList<>(); | ||
89 | for (var parameter : dnfQuery.getSymbolicParameters()) { | ||
90 | var direction = switch (parameter.getDirection()) { | ||
91 | case OUT -> parameter.isUnifiable() ? PParameterDirection.INOUT : PParameterDirection.OUT; | ||
92 | case IN -> throw new IllegalArgumentException("Query %s with input parameter %s is not supported" | ||
93 | .formatted(dnfQuery, parameter.getVariable())); | ||
94 | }; | ||
95 | var pParameter = new PParameter(parameter.getVariable().getUniqueName(), null, null, direction); | ||
96 | parameters.put(parameter, pParameter); | ||
97 | parameterList.add(pParameter); | ||
98 | } | ||
99 | |||
100 | pQuery.setParameters(parameterList); | ||
101 | |||
102 | for (var functionalDependency : dnfQuery.getFunctionalDependencies()) { | ||
103 | var functionalDependencyAnnotation = new PAnnotation("FunctionalDependency"); | ||
104 | for (var forEachVariable : functionalDependency.forEach()) { | ||
105 | functionalDependencyAnnotation.addAttribute("forEach", forEachVariable.getUniqueName()); | ||
106 | } | ||
107 | for (var uniqueVariable : functionalDependency.unique()) { | ||
108 | functionalDependencyAnnotation.addAttribute("unique", uniqueVariable.getUniqueName()); | ||
109 | } | ||
110 | pQuery.addAnnotation(functionalDependencyAnnotation); | ||
111 | } | ||
112 | |||
113 | // The constructor of {@link org.eclipse.viatra.query.runtime.matchers.psystem.BasePConstraint} mutates | ||
114 | // global static state (<code>nextID</code>) without locking. Therefore, we need to synchronize before creating | ||
115 | // any query literals to avoid a data race. | ||
116 | synchronized (P_CONSTRAINT_LOCK) { | ||
117 | for (DnfClause clause : dnfQuery.getClauses()) { | ||
118 | PBody body = new PBody(pQuery); | ||
119 | List<ExportedParameter> parameterExports = new ArrayList<>(); | ||
120 | for (var parameter : dnfQuery.getSymbolicParameters()) { | ||
121 | PVariable pVar = body.getOrCreateVariableByName(parameter.getVariable().getUniqueName()); | ||
122 | parameterExports.add(new ExportedParameter(body, pVar, parameters.get(parameter))); | ||
123 | } | ||
124 | body.setSymbolicParameters(parameterExports); | ||
125 | pQuery.addBody(body); | ||
126 | for (Literal literal : clause.literals()) { | ||
127 | translateLiteral(literal, body); | ||
128 | } | ||
129 | } | ||
130 | } | ||
131 | |||
132 | return pQuery; | ||
133 | } | ||
134 | |||
135 | private void translateLiteral(Literal literal, PBody body) { | ||
136 | if (literal instanceof EquivalenceLiteral equivalenceLiteral) { | ||
137 | translateEquivalenceLiteral(equivalenceLiteral, body); | ||
138 | } else if (literal instanceof CallLiteral callLiteral) { | ||
139 | translateCallLiteral(callLiteral, body); | ||
140 | } else if (literal instanceof ConstantLiteral constantLiteral) { | ||
141 | translateConstantLiteral(constantLiteral, body); | ||
142 | } else if (literal instanceof AssignLiteral<?> assignLiteral) { | ||
143 | translateAssignLiteral(assignLiteral, body); | ||
144 | } else if (literal instanceof AssumeLiteral assumeLiteral) { | ||
145 | translateAssumeLiteral(assumeLiteral, body); | ||
146 | } else if (literal instanceof CountLiteral countLiteral) { | ||
147 | translateCountLiteral(countLiteral, body); | ||
148 | } else if (literal instanceof AggregationLiteral<?, ?> aggregationLiteral) { | ||
149 | translateAggregationLiteral(aggregationLiteral, body); | ||
150 | } else { | ||
151 | throw new IllegalArgumentException("Unknown literal: " + literal.toString()); | ||
152 | } | ||
153 | } | ||
154 | |||
155 | private void translateEquivalenceLiteral(EquivalenceLiteral equivalenceLiteral, PBody body) { | ||
156 | PVariable varSource = body.getOrCreateVariableByName(equivalenceLiteral.left().getUniqueName()); | ||
157 | PVariable varTarget = body.getOrCreateVariableByName(equivalenceLiteral.right().getUniqueName()); | ||
158 | if (equivalenceLiteral.positive()) { | ||
159 | new Equality(body, varSource, varTarget); | ||
160 | } else { | ||
161 | new Inequality(body, varSource, varTarget); | ||
162 | } | ||
163 | } | ||
164 | |||
165 | private void translateCallLiteral(CallLiteral callLiteral, PBody body) { | ||
166 | var polarity = callLiteral.getPolarity(); | ||
167 | switch (polarity) { | ||
168 | case POSITIVE -> { | ||
169 | var substitution = translateSubstitution(callLiteral.getArguments(), body); | ||
170 | var constraint = callLiteral.getTarget(); | ||
171 | if (constraint instanceof Dnf dnf) { | ||
172 | var pattern = translate(dnf); | ||
173 | new PositivePatternCall(body, substitution, pattern); | ||
174 | } else if (constraint instanceof AnySymbolView symbolView) { | ||
175 | var inputKey = wrapperFactory.getInputKey(symbolView); | ||
176 | new TypeConstraint(body, substitution, inputKey); | ||
177 | } else { | ||
178 | throw new IllegalArgumentException("Unknown Constraint: " + constraint); | ||
179 | } | ||
180 | } | ||
181 | case TRANSITIVE -> { | ||
182 | var substitution = translateSubstitution(callLiteral.getArguments(), body); | ||
183 | var constraint = callLiteral.getTarget(); | ||
184 | PQuery pattern; | ||
185 | if (constraint instanceof Dnf dnf) { | ||
186 | pattern = translate(dnf); | ||
187 | } else if (constraint instanceof AnySymbolView symbolView) { | ||
188 | pattern = wrapperFactory.wrapSymbolViewIdentityArguments(symbolView); | ||
189 | } else { | ||
190 | throw new IllegalArgumentException("Unknown Constraint: " + constraint); | ||
191 | } | ||
192 | new BinaryTransitiveClosure(body, substitution, pattern); | ||
193 | } | ||
194 | case NEGATIVE -> { | ||
195 | var wrappedCall = wrapperFactory.maybeWrapConstraint(callLiteral); | ||
196 | var substitution = translateSubstitution(wrappedCall.remappedArguments(), body); | ||
197 | var pattern = wrappedCall.pattern(); | ||
198 | new NegativePatternCall(body, substitution, pattern); | ||
199 | } | ||
200 | default -> throw new IllegalArgumentException("Unknown polarity: " + polarity); | ||
201 | } | ||
202 | } | ||
203 | |||
204 | private static Tuple translateSubstitution(List<Variable> substitution, PBody body) { | ||
205 | int arity = substitution.size(); | ||
206 | Object[] variables = new Object[arity]; | ||
207 | for (int i = 0; i < arity; i++) { | ||
208 | var variable = substitution.get(i); | ||
209 | variables[i] = body.getOrCreateVariableByName(variable.getUniqueName()); | ||
210 | } | ||
211 | return Tuples.flatTupleOf(variables); | ||
212 | } | ||
213 | |||
214 | private void translateConstantLiteral(ConstantLiteral constantLiteral, PBody body) { | ||
215 | var variable = body.getOrCreateVariableByName(constantLiteral.variable().getUniqueName()); | ||
216 | new ConstantValue(body, variable, constantLiteral.nodeId()); | ||
217 | } | ||
218 | |||
219 | private <T> void translateAssignLiteral(AssignLiteral<T> assignLiteral, PBody body) { | ||
220 | var variable = body.getOrCreateVariableByName(assignLiteral.variable().getUniqueName()); | ||
221 | var term = assignLiteral.term(); | ||
222 | if (term instanceof ConstantTerm<T> constantTerm) { | ||
223 | new ConstantValue(body, variable, constantTerm.getValue()); | ||
224 | } else { | ||
225 | var evaluator = new TermEvaluator<>(term); | ||
226 | new ExpressionEvaluation(body, evaluator, variable); | ||
227 | } | ||
228 | } | ||
229 | |||
230 | private void translateAssumeLiteral(AssumeLiteral assumeLiteral, PBody body) { | ||
231 | var evaluator = new AssumptionEvaluator(assumeLiteral.term()); | ||
232 | new ExpressionEvaluation(body, evaluator, null); | ||
233 | } | ||
234 | |||
235 | private void translateCountLiteral(CountLiteral countLiteral, PBody body) { | ||
236 | var wrappedCall = wrapperFactory.maybeWrapConstraint(countLiteral); | ||
237 | var substitution = translateSubstitution(wrappedCall.remappedArguments(), body); | ||
238 | var resultVariable = body.getOrCreateVariableByName(countLiteral.getResultVariable().getUniqueName()); | ||
239 | new PatternMatchCounter(body, substitution, wrappedCall.pattern(), resultVariable); | ||
240 | } | ||
241 | |||
242 | private <R, T> void translateAggregationLiteral(AggregationLiteral<R, T> aggregationLiteral, PBody body) { | ||
243 | var aggregator = aggregationLiteral.getAggregator(); | ||
244 | IMultisetAggregationOperator<T, ?, R> aggregationOperator; | ||
245 | if (aggregator instanceof StatelessAggregator<R, T> statelessAggregator) { | ||
246 | aggregationOperator = new StatelessMultisetAggregator<>(statelessAggregator); | ||
247 | } else if (aggregator instanceof StatefulAggregator<R, T> statefulAggregator) { | ||
248 | aggregationOperator = new StatefulMultisetAggregator<>(statefulAggregator); | ||
249 | } else { | ||
250 | throw new IllegalArgumentException("Unknown aggregator: " + aggregator); | ||
251 | } | ||
252 | var wrappedCall = wrapperFactory.maybeWrapConstraint(aggregationLiteral); | ||
253 | var substitution = translateSubstitution(wrappedCall.remappedArguments(), body); | ||
254 | var inputVariable = body.getOrCreateVariableByName(aggregationLiteral.getInputVariable().getUniqueName()); | ||
255 | var aggregatedColumn = substitution.invertIndex().get(inputVariable); | ||
256 | if (aggregatedColumn == null) { | ||
257 | throw new IllegalStateException("Input variable %s not found in substitution %s".formatted(inputVariable, | ||
258 | substitution)); | ||
259 | } | ||
260 | var boundAggregator = new BoundAggregator(aggregationOperator, aggregator.getInputType(), | ||
261 | aggregator.getResultType()); | ||
262 | var resultVariable = body.getOrCreateVariableByName(aggregationLiteral.getResultVariable().getUniqueName()); | ||
263 | new AggregatorConstraint(boundAggregator, body, substitution, wrappedCall.pattern(), resultVariable, | ||
264 | aggregatedColumn); | ||
265 | } | ||
266 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/QueryWrapperFactory.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/QueryWrapperFactory.java new file mode 100644 index 00000000..2b7280f2 --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/QueryWrapperFactory.java | |||
@@ -0,0 +1,189 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.internal.pquery; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.matchers.context.IInputKey; | ||
9 | import org.eclipse.viatra.query.runtime.matchers.psystem.PBody; | ||
10 | import org.eclipse.viatra.query.runtime.matchers.psystem.PVariable; | ||
11 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.ExportedParameter; | ||
12 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.PositivePatternCall; | ||
13 | import org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint; | ||
14 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; | ||
15 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery; | ||
16 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; | ||
17 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; | ||
18 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; | ||
19 | import tools.refinery.store.query.Constraint; | ||
20 | import tools.refinery.store.query.dnf.Dnf; | ||
21 | import tools.refinery.store.query.dnf.DnfUtils; | ||
22 | import tools.refinery.store.query.literal.AbstractCallLiteral; | ||
23 | import tools.refinery.store.query.term.ParameterDirection; | ||
24 | import tools.refinery.store.query.term.Variable; | ||
25 | import tools.refinery.store.query.view.AnySymbolView; | ||
26 | import tools.refinery.store.query.view.SymbolView; | ||
27 | import tools.refinery.store.util.CycleDetectingMapper; | ||
28 | |||
29 | import java.util.*; | ||
30 | import java.util.function.ToIntFunction; | ||
31 | |||
32 | class QueryWrapperFactory { | ||
33 | private final Dnf2PQuery dnf2PQuery; | ||
34 | private final Map<AnySymbolView, SymbolViewWrapper> view2WrapperMap = new LinkedHashMap<>(); | ||
35 | private final CycleDetectingMapper<RemappedConstraint, RawPQuery> wrapConstraint = new CycleDetectingMapper<>( | ||
36 | RemappedConstraint::toString, this::doWrapConstraint); | ||
37 | |||
38 | QueryWrapperFactory(Dnf2PQuery dnf2PQuery) { | ||
39 | this.dnf2PQuery = dnf2PQuery; | ||
40 | } | ||
41 | |||
42 | public PQuery wrapSymbolViewIdentityArguments(AnySymbolView symbolView) { | ||
43 | var identity = new int[symbolView.arity()]; | ||
44 | for (int i = 0; i < identity.length; i++) { | ||
45 | identity[i] = i; | ||
46 | } | ||
47 | return maybeWrapConstraint(symbolView, identity); | ||
48 | } | ||
49 | |||
50 | public WrappedCall maybeWrapConstraint(AbstractCallLiteral callLiteral) { | ||
51 | var arguments = callLiteral.getArguments(); | ||
52 | int arity = arguments.size(); | ||
53 | var remappedParameters = new int[arity]; | ||
54 | var unboundVariableIndices = new HashMap<Variable, Integer>(); | ||
55 | var appendVariable = new VariableAppender(); | ||
56 | for (int i = 0; i < arity; i++) { | ||
57 | var variable = arguments.get(i); | ||
58 | // Unify all variables to avoid VIATRA bugs, even if they're bound in the containing clause. | ||
59 | remappedParameters[i] = unboundVariableIndices.computeIfAbsent(variable, appendVariable::applyAsInt); | ||
60 | } | ||
61 | var pattern = maybeWrapConstraint(callLiteral.getTarget(), remappedParameters); | ||
62 | return new WrappedCall(pattern, appendVariable.getRemappedArguments()); | ||
63 | } | ||
64 | |||
65 | private PQuery maybeWrapConstraint(Constraint constraint, int[] remappedParameters) { | ||
66 | if (remappedParameters.length != constraint.arity()) { | ||
67 | throw new IllegalArgumentException("Constraint %s expected %d parameters, but got %d parameters".formatted( | ||
68 | constraint, constraint.arity(), remappedParameters.length)); | ||
69 | } | ||
70 | if (constraint instanceof Dnf dnf && isIdentity(remappedParameters)) { | ||
71 | return dnf2PQuery.translate(dnf); | ||
72 | } | ||
73 | return wrapConstraint.map(new RemappedConstraint(constraint, remappedParameters)); | ||
74 | } | ||
75 | |||
76 | private static boolean isIdentity(int[] remappedParameters) { | ||
77 | for (int i = 0; i < remappedParameters.length; i++) { | ||
78 | if (remappedParameters[i] != i) { | ||
79 | return false; | ||
80 | } | ||
81 | } | ||
82 | return true; | ||
83 | } | ||
84 | |||
85 | private RawPQuery doWrapConstraint(RemappedConstraint remappedConstraint) { | ||
86 | var constraint = remappedConstraint.constraint(); | ||
87 | var remappedParameters = remappedConstraint.remappedParameters(); | ||
88 | |||
89 | checkNoInputParameters(constraint); | ||
90 | |||
91 | var embeddedPQuery = new RawPQuery(DnfUtils.generateUniqueName(constraint.name()), PVisibility.EMBEDDED); | ||
92 | var body = new PBody(embeddedPQuery); | ||
93 | int arity = Arrays.stream(remappedParameters).max().orElse(-1) + 1; | ||
94 | var parameters = new ArrayList<PParameter>(arity); | ||
95 | var parameterVariables = new PVariable[arity]; | ||
96 | var symbolicParameters = new ArrayList<ExportedParameter>(arity); | ||
97 | for (int i = 0; i < arity; i++) { | ||
98 | var parameterName = "p" + i; | ||
99 | var parameter = new PParameter(parameterName); | ||
100 | parameters.add(parameter); | ||
101 | var variable = body.getOrCreateVariableByName(parameterName); | ||
102 | parameterVariables[i] = variable; | ||
103 | symbolicParameters.add(new ExportedParameter(body, variable, parameter)); | ||
104 | } | ||
105 | embeddedPQuery.setParameters(parameters); | ||
106 | body.setSymbolicParameters(symbolicParameters); | ||
107 | |||
108 | var arguments = new Object[remappedParameters.length]; | ||
109 | for (int i = 0; i < remappedParameters.length; i++) { | ||
110 | arguments[i] = parameterVariables[remappedParameters[i]]; | ||
111 | } | ||
112 | var argumentTuple = Tuples.flatTupleOf(arguments); | ||
113 | |||
114 | addPositiveConstraint(constraint, body, argumentTuple); | ||
115 | embeddedPQuery.addBody(body); | ||
116 | return embeddedPQuery; | ||
117 | } | ||
118 | |||
119 | private static void checkNoInputParameters(Constraint constraint) { | ||
120 | for (var constraintParameter : constraint.getParameters()) { | ||
121 | if (constraintParameter.getDirection() == ParameterDirection.IN) { | ||
122 | throw new IllegalArgumentException("Input parameter %s of %s is not supported" | ||
123 | .formatted(constraintParameter, constraint)); | ||
124 | } | ||
125 | } | ||
126 | } | ||
127 | |||
128 | private void addPositiveConstraint(Constraint constraint, PBody body, Tuple argumentTuple) { | ||
129 | if (constraint instanceof SymbolView<?> view) { | ||
130 | new TypeConstraint(body, argumentTuple, getInputKey(view)); | ||
131 | } else if (constraint instanceof Dnf dnf) { | ||
132 | var calledPQuery = dnf2PQuery.translate(dnf); | ||
133 | new PositivePatternCall(body, argumentTuple, calledPQuery); | ||
134 | } else { | ||
135 | throw new IllegalArgumentException("Unknown Constraint: " + constraint); | ||
136 | } | ||
137 | } | ||
138 | |||
139 | public IInputKey getInputKey(AnySymbolView symbolView) { | ||
140 | return view2WrapperMap.computeIfAbsent(symbolView, SymbolViewWrapper::new); | ||
141 | } | ||
142 | |||
143 | public Map<AnySymbolView, IInputKey> getSymbolViews() { | ||
144 | return Collections.unmodifiableMap(view2WrapperMap); | ||
145 | } | ||
146 | |||
147 | public record WrappedCall(PQuery pattern, List<Variable> remappedArguments) { | ||
148 | } | ||
149 | |||
150 | private static class VariableAppender implements ToIntFunction<Variable> { | ||
151 | private final List<Variable> remappedArguments = new ArrayList<>(); | ||
152 | private int nextIndex = 0; | ||
153 | |||
154 | @Override | ||
155 | public int applyAsInt(Variable variable) { | ||
156 | remappedArguments.add(variable); | ||
157 | int index = nextIndex; | ||
158 | nextIndex++; | ||
159 | return index; | ||
160 | } | ||
161 | |||
162 | public List<Variable> getRemappedArguments() { | ||
163 | return remappedArguments; | ||
164 | } | ||
165 | } | ||
166 | |||
167 | private record RemappedConstraint(Constraint constraint, int[] remappedParameters) { | ||
168 | @Override | ||
169 | public boolean equals(Object o) { | ||
170 | if (this == o) return true; | ||
171 | if (o == null || getClass() != o.getClass()) return false; | ||
172 | RemappedConstraint that = (RemappedConstraint) o; | ||
173 | return constraint.equals(that.constraint) && Arrays.equals(remappedParameters, that.remappedParameters); | ||
174 | } | ||
175 | |||
176 | @Override | ||
177 | public int hashCode() { | ||
178 | int result = Objects.hash(constraint); | ||
179 | result = 31 * result + Arrays.hashCode(remappedParameters); | ||
180 | return result; | ||
181 | } | ||
182 | |||
183 | @Override | ||
184 | public String toString() { | ||
185 | return "RemappedConstraint{constraint=%s, remappedParameters=%s}".formatted(constraint, | ||
186 | Arrays.toString(remappedParameters)); | ||
187 | } | ||
188 | } | ||
189 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/RawPQuery.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/RawPQuery.java index 71b74396..255738c5 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/RawPQuery.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/RawPQuery.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.query.viatra.internal.pquery; | 6 | package tools.refinery.store.query.viatra.internal.pquery; |
2 | 7 | ||
3 | import org.eclipse.viatra.query.runtime.api.GenericQuerySpecification; | 8 | import org.eclipse.viatra.query.runtime.api.GenericQuerySpecification; |
@@ -9,6 +14,7 @@ import org.eclipse.viatra.query.runtime.matchers.psystem.queries.BasePQuery; | |||
9 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; | 14 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PParameter; |
10 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; | 15 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PVisibility; |
11 | import tools.refinery.store.query.viatra.internal.RelationalScope; | 16 | import tools.refinery.store.query.viatra.internal.RelationalScope; |
17 | import tools.refinery.store.query.viatra.internal.matcher.RawPatternMatcher; | ||
12 | 18 | ||
13 | import java.util.LinkedHashSet; | 19 | import java.util.LinkedHashSet; |
14 | import java.util.List; | 20 | import java.util.List; |
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/RawPatternMatcher.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/RawPatternMatcher.java deleted file mode 100644 index e944e873..00000000 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/RawPatternMatcher.java +++ /dev/null | |||
@@ -1,72 +0,0 @@ | |||
1 | package tools.refinery.store.query.viatra.internal.pquery; | ||
2 | |||
3 | import org.eclipse.viatra.query.runtime.api.GenericPatternMatcher; | ||
4 | import org.eclipse.viatra.query.runtime.api.GenericQuerySpecification; | ||
5 | import tools.refinery.store.query.ResultSet; | ||
6 | import tools.refinery.store.query.viatra.ViatraTupleLike; | ||
7 | import tools.refinery.store.tuple.Tuple; | ||
8 | import tools.refinery.store.tuple.TupleLike; | ||
9 | |||
10 | import java.util.Optional; | ||
11 | import java.util.stream.Stream; | ||
12 | |||
13 | public class RawPatternMatcher extends GenericPatternMatcher implements ResultSet { | ||
14 | protected final Object[] empty; | ||
15 | |||
16 | public RawPatternMatcher(GenericQuerySpecification<? extends GenericPatternMatcher> specification) { | ||
17 | super(specification); | ||
18 | empty = new Object[specification.getParameterNames().size()]; | ||
19 | } | ||
20 | |||
21 | @Override | ||
22 | public boolean hasResult() { | ||
23 | return backend.hasMatch(empty); | ||
24 | } | ||
25 | |||
26 | @Override | ||
27 | public boolean hasResult(Tuple parameters) { | ||
28 | return backend.hasMatch(toParametersArray(parameters)); | ||
29 | } | ||
30 | |||
31 | @Override | ||
32 | public Optional<TupleLike> oneResult() { | ||
33 | return backend.getOneArbitraryMatch(empty).map(ViatraTupleLike::new); | ||
34 | } | ||
35 | |||
36 | @Override | ||
37 | public Optional<TupleLike> oneResult(Tuple parameters) { | ||
38 | return backend.getOneArbitraryMatch(toParametersArray(parameters)).map(ViatraTupleLike::new); | ||
39 | } | ||
40 | |||
41 | @Override | ||
42 | public Stream<TupleLike> allResults() { | ||
43 | return backend.getAllMatches(empty).map(ViatraTupleLike::new); | ||
44 | } | ||
45 | |||
46 | @Override | ||
47 | public Stream<TupleLike> allResults(Tuple parameters) { | ||
48 | return backend.getAllMatches(toParametersArray(parameters)).map(ViatraTupleLike::new); | ||
49 | } | ||
50 | |||
51 | @Override | ||
52 | public int countResults() { | ||
53 | return backend.countMatches(empty); | ||
54 | } | ||
55 | |||
56 | @Override | ||
57 | public int countResults(Tuple parameters) { | ||
58 | return backend.countMatches(toParametersArray(parameters)); | ||
59 | } | ||
60 | |||
61 | private Object[] toParametersArray(Tuple tuple) { | ||
62 | int size = tuple.getSize(); | ||
63 | var array = new Object[tuple.getSize()]; | ||
64 | for (int i = 0; i < size; i++) { | ||
65 | var value = tuple.get(i); | ||
66 | if (value >= 0) { | ||
67 | array[i] = Tuple.of(value); | ||
68 | } | ||
69 | } | ||
70 | return array; | ||
71 | } | ||
72 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/StatefulMultisetAggregator.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/StatefulMultisetAggregator.java new file mode 100644 index 00000000..461416f7 --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/StatefulMultisetAggregator.java | |||
@@ -0,0 +1,65 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.internal.pquery; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.matchers.psystem.aggregations.IMultisetAggregationOperator; | ||
9 | import tools.refinery.store.query.term.StatefulAggregate; | ||
10 | import tools.refinery.store.query.term.StatefulAggregator; | ||
11 | |||
12 | import java.util.stream.Stream; | ||
13 | |||
14 | record StatefulMultisetAggregator<R, T>(StatefulAggregator<R, T> aggregator) | ||
15 | implements IMultisetAggregationOperator<T, StatefulAggregate<R, T>, R> { | ||
16 | @Override | ||
17 | public String getShortDescription() { | ||
18 | return getName(); | ||
19 | } | ||
20 | |||
21 | @Override | ||
22 | public String getName() { | ||
23 | return aggregator.toString(); | ||
24 | } | ||
25 | |||
26 | @Override | ||
27 | public StatefulAggregate<R, T> createNeutral() { | ||
28 | return aggregator.createEmptyAggregate(); | ||
29 | } | ||
30 | |||
31 | @Override | ||
32 | public boolean isNeutral(StatefulAggregate<R, T> result) { | ||
33 | return result.isEmpty(); | ||
34 | } | ||
35 | |||
36 | @Override | ||
37 | public StatefulAggregate<R, T> update(StatefulAggregate<R, T> oldResult, T updateValue, boolean isInsertion) { | ||
38 | if (isInsertion) { | ||
39 | oldResult.add(updateValue); | ||
40 | } else { | ||
41 | oldResult.remove(updateValue); | ||
42 | } | ||
43 | return oldResult; | ||
44 | } | ||
45 | |||
46 | @Override | ||
47 | public R getAggregate(StatefulAggregate<R, T> result) { | ||
48 | return result.getResult(); | ||
49 | } | ||
50 | |||
51 | @Override | ||
52 | public R aggregateStream(Stream<T> stream) { | ||
53 | return aggregator.aggregateStream(stream); | ||
54 | } | ||
55 | |||
56 | @Override | ||
57 | public StatefulAggregate<R, T> clone(StatefulAggregate<R, T> original) { | ||
58 | return original.deepCopy(); | ||
59 | } | ||
60 | |||
61 | @Override | ||
62 | public boolean contains(T value, StatefulAggregate<R, T> accumulator) { | ||
63 | return accumulator.contains(value); | ||
64 | } | ||
65 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/StatelessMultisetAggregator.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/StatelessMultisetAggregator.java new file mode 100644 index 00000000..49175d75 --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/StatelessMultisetAggregator.java | |||
@@ -0,0 +1,55 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.internal.pquery; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.matchers.psystem.aggregations.IMultisetAggregationOperator; | ||
9 | import tools.refinery.store.query.term.StatelessAggregator; | ||
10 | |||
11 | import java.util.stream.Stream; | ||
12 | |||
13 | record StatelessMultisetAggregator<R, T>(StatelessAggregator<R, T> aggregator) | ||
14 | implements IMultisetAggregationOperator<T, R, R> { | ||
15 | @Override | ||
16 | public String getShortDescription() { | ||
17 | return getName(); | ||
18 | } | ||
19 | |||
20 | @Override | ||
21 | public String getName() { | ||
22 | return aggregator.toString(); | ||
23 | } | ||
24 | |||
25 | @Override | ||
26 | public R createNeutral() { | ||
27 | return aggregator.getEmptyResult(); | ||
28 | } | ||
29 | |||
30 | @Override | ||
31 | public boolean isNeutral(R result) { | ||
32 | return createNeutral().equals(result); | ||
33 | } | ||
34 | |||
35 | @Override | ||
36 | public R update(R oldResult, T updateValue, boolean isInsertion) { | ||
37 | return isInsertion ? aggregator.add(oldResult, updateValue) : aggregator.remove(oldResult, updateValue); | ||
38 | } | ||
39 | |||
40 | @Override | ||
41 | public R getAggregate(R result) { | ||
42 | return result; | ||
43 | } | ||
44 | |||
45 | @Override | ||
46 | public R clone(R original) { | ||
47 | // Aggregate result is immutable. | ||
48 | return original; | ||
49 | } | ||
50 | |||
51 | @Override | ||
52 | public R aggregateStream(Stream<T> stream) { | ||
53 | return aggregator.aggregateStream(stream); | ||
54 | } | ||
55 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/RelationViewWrapper.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/SymbolViewWrapper.java index c442add8..a777613e 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/RelationViewWrapper.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/SymbolViewWrapper.java | |||
@@ -1,10 +1,15 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.query.viatra.internal.pquery; | 6 | package tools.refinery.store.query.viatra.internal.pquery; |
2 | 7 | ||
3 | import org.eclipse.viatra.query.runtime.matchers.context.common.BaseInputKeyWrapper; | 8 | import org.eclipse.viatra.query.runtime.matchers.context.common.BaseInputKeyWrapper; |
4 | import tools.refinery.store.query.view.AnyRelationView; | 9 | import tools.refinery.store.query.view.AnySymbolView; |
5 | 10 | ||
6 | public class RelationViewWrapper extends BaseInputKeyWrapper<AnyRelationView> { | 11 | public class SymbolViewWrapper extends BaseInputKeyWrapper<AnySymbolView> { |
7 | public RelationViewWrapper(AnyRelationView wrappedKey) { | 12 | public SymbolViewWrapper(AnySymbolView wrappedKey) { |
8 | super(wrappedKey); | 13 | super(wrappedKey); |
9 | } | 14 | } |
10 | 15 | ||
@@ -27,4 +32,9 @@ public class RelationViewWrapper extends BaseInputKeyWrapper<AnyRelationView> { | |||
27 | public boolean isEnumerable() { | 32 | public boolean isEnumerable() { |
28 | return true; | 33 | return true; |
29 | } | 34 | } |
35 | |||
36 | @Override | ||
37 | public String toString() { | ||
38 | return "RelationViewWrapper{wrappedKey=%s}".formatted(wrappedKey); | ||
39 | } | ||
30 | } | 40 | } |
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/TermEvaluator.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/TermEvaluator.java new file mode 100644 index 00000000..1187f57a --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/TermEvaluator.java | |||
@@ -0,0 +1,37 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.internal.pquery; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.matchers.psystem.IExpressionEvaluator; | ||
9 | import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider; | ||
10 | import tools.refinery.store.query.term.Term; | ||
11 | import tools.refinery.store.query.term.Variable; | ||
12 | |||
13 | import java.util.stream.Collectors; | ||
14 | |||
15 | class TermEvaluator<T> implements IExpressionEvaluator { | ||
16 | private final Term<T> term; | ||
17 | |||
18 | public TermEvaluator(Term<T> term) { | ||
19 | this.term = term; | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | public String getShortDescription() { | ||
24 | return term.toString(); | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public Iterable<String> getInputParameterNames() { | ||
29 | return term.getInputVariables().stream().map(Variable::getUniqueName).collect(Collectors.toUnmodifiableSet()); | ||
30 | } | ||
31 | |||
32 | @Override | ||
33 | public Object evaluateExpression(IValueProvider provider) { | ||
34 | var valuation = new ValueProviderBasedValuation(provider); | ||
35 | return term.evaluate(valuation); | ||
36 | } | ||
37 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/ValueProviderBasedValuation.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/ValueProviderBasedValuation.java new file mode 100644 index 00000000..62cb8b3a --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/pquery/ValueProviderBasedValuation.java | |||
@@ -0,0 +1,19 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.internal.pquery; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.matchers.psystem.IValueProvider; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | import tools.refinery.store.query.valuation.Valuation; | ||
11 | |||
12 | public record ValueProviderBasedValuation(IValueProvider valueProvider) implements Valuation { | ||
13 | @Override | ||
14 | public <T> T getValue(DataVariable<T> variable) { | ||
15 | @SuppressWarnings("unchecked") | ||
16 | var value = (T) valueProvider.getValue(variable.getUniqueName()); | ||
17 | return value; | ||
18 | } | ||
19 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/ModelUpdateListener.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/ModelUpdateListener.java index 8a467066..986bb0b1 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/ModelUpdateListener.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/ModelUpdateListener.java | |||
@@ -1,47 +1,51 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.query.viatra.internal.update; | 6 | package tools.refinery.store.query.viatra.internal.update; |
2 | 7 | ||
3 | import org.eclipse.viatra.query.runtime.matchers.context.IInputKey; | 8 | import org.eclipse.viatra.query.runtime.matchers.context.IInputKey; |
4 | import org.eclipse.viatra.query.runtime.matchers.context.IQueryRuntimeContextListener; | 9 | import org.eclipse.viatra.query.runtime.matchers.context.IQueryRuntimeContextListener; |
5 | import org.eclipse.viatra.query.runtime.matchers.tuple.ITuple; | 10 | import org.eclipse.viatra.query.runtime.matchers.tuple.ITuple; |
6 | import tools.refinery.store.query.viatra.internal.ViatraModelQueryAdapterImpl; | 11 | import tools.refinery.store.query.viatra.internal.ViatraModelQueryAdapterImpl; |
7 | import tools.refinery.store.query.view.AnyRelationView; | 12 | import tools.refinery.store.query.view.AnySymbolView; |
8 | import tools.refinery.store.query.view.RelationView; | 13 | import tools.refinery.store.query.view.SymbolView; |
9 | 14 | ||
10 | import java.util.HashMap; | 15 | import java.util.HashMap; |
11 | import java.util.Map; | 16 | import java.util.Map; |
12 | 17 | ||
13 | public class ModelUpdateListener { | 18 | public class ModelUpdateListener { |
14 | private final Map<AnyRelationView, RelationViewUpdateListener<?>> relationViewUpdateListeners; | 19 | private final Map<AnySymbolView, SymbolViewUpdateListener<?>> symbolViewUpdateListeners; |
15 | 20 | ||
16 | public ModelUpdateListener(ViatraModelQueryAdapterImpl adapter) { | 21 | public ModelUpdateListener(ViatraModelQueryAdapterImpl adapter) { |
17 | var relationViews = adapter.getStoreAdapter().getInputKeys().keySet(); | 22 | var symbolViews = adapter.getStoreAdapter().getInputKeys().keySet(); |
18 | relationViewUpdateListeners = new HashMap<>(relationViews.size()); | 23 | symbolViewUpdateListeners = new HashMap<>(symbolViews.size()); |
19 | for (var relationView : relationViews) { | 24 | for (var symbolView : symbolViews) { |
20 | registerView(adapter, (RelationView<?>) relationView); | 25 | registerView(adapter, (SymbolView<?>) symbolView); |
21 | } | 26 | } |
22 | } | 27 | } |
23 | 28 | ||
24 | private <T> void registerView(ViatraModelQueryAdapterImpl adapter, RelationView<T> relationView) { | 29 | private <T> void registerView(ViatraModelQueryAdapterImpl adapter, SymbolView<T> view) { |
25 | var listener = RelationViewUpdateListener.of(adapter, relationView); | ||
26 | var model = adapter.getModel(); | 30 | var model = adapter.getModel(); |
27 | var interpretation = model.getInterpretation(relationView.getSymbol()); | 31 | var interpretation = model.getInterpretation(view.getSymbol()); |
28 | interpretation.addListener(listener, true); | 32 | var listener = SymbolViewUpdateListener.of(adapter, view, interpretation); |
29 | relationViewUpdateListeners.put(relationView, listener); | 33 | symbolViewUpdateListeners.put(view, listener); |
30 | } | 34 | } |
31 | 35 | ||
32 | public boolean containsRelationView(AnyRelationView relationView) { | 36 | public boolean containsSymbolView(AnySymbolView relationView) { |
33 | return relationViewUpdateListeners.containsKey(relationView); | 37 | return symbolViewUpdateListeners.containsKey(relationView); |
34 | } | 38 | } |
35 | 39 | ||
36 | public void addListener(IInputKey key, AnyRelationView relationView, ITuple seed, | 40 | public void addListener(IInputKey key, AnySymbolView symbolView, ITuple seed, |
37 | IQueryRuntimeContextListener listener) { | 41 | IQueryRuntimeContextListener listener) { |
38 | var relationViewUpdateListener = relationViewUpdateListeners.get(relationView); | 42 | var symbolViewUpdateListener = symbolViewUpdateListeners.get(symbolView); |
39 | relationViewUpdateListener.addFilter(key, seed, listener); | 43 | symbolViewUpdateListener.addFilter(key, seed, listener); |
40 | } | 44 | } |
41 | 45 | ||
42 | public void removeListener(IInputKey key, AnyRelationView relationView, ITuple seed, | 46 | public void removeListener(IInputKey key, AnySymbolView symbolView, ITuple seed, |
43 | IQueryRuntimeContextListener listener) { | 47 | IQueryRuntimeContextListener listener) { |
44 | var relationViewUpdateListener = relationViewUpdateListeners.get(relationView); | 48 | var symbolViewUpdateListener = symbolViewUpdateListeners.get(symbolView); |
45 | relationViewUpdateListener.removeFilter(key, seed, listener); | 49 | symbolViewUpdateListener.removeFilter(key, seed, listener); |
46 | } | 50 | } |
47 | } | 51 | } |
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/RelationViewFilter.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/RelationViewFilter.java index 221f1b4a..efdbfcbe 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/RelationViewFilter.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/RelationViewFilter.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.query.viatra.internal.update; | 6 | package tools.refinery.store.query.viatra.internal.update; |
2 | 7 | ||
3 | import org.eclipse.viatra.query.runtime.matchers.context.IInputKey; | 8 | import org.eclipse.viatra.query.runtime.matchers.context.IInputKey; |
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/RelationViewUpdateListener.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/RelationViewUpdateListener.java deleted file mode 100644 index bf6b4197..00000000 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/RelationViewUpdateListener.java +++ /dev/null | |||
@@ -1,48 +0,0 @@ | |||
1 | package tools.refinery.store.query.viatra.internal.update; | ||
2 | |||
3 | import org.eclipse.viatra.query.runtime.matchers.context.IInputKey; | ||
4 | import org.eclipse.viatra.query.runtime.matchers.context.IQueryRuntimeContextListener; | ||
5 | import org.eclipse.viatra.query.runtime.matchers.tuple.ITuple; | ||
6 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; | ||
7 | import tools.refinery.store.model.InterpretationListener; | ||
8 | import tools.refinery.store.query.viatra.internal.ViatraModelQueryAdapterImpl; | ||
9 | import tools.refinery.store.query.view.RelationView; | ||
10 | import tools.refinery.store.query.view.TuplePreservingRelationView; | ||
11 | |||
12 | import java.util.ArrayList; | ||
13 | import java.util.List; | ||
14 | |||
15 | public abstract class RelationViewUpdateListener<T> implements InterpretationListener<T> { | ||
16 | private final ViatraModelQueryAdapterImpl adapter; | ||
17 | private final List<RelationViewFilter> filters = new ArrayList<>(); | ||
18 | |||
19 | protected RelationViewUpdateListener(ViatraModelQueryAdapterImpl adapter) { | ||
20 | this.adapter = adapter; | ||
21 | } | ||
22 | |||
23 | public void addFilter(IInputKey inputKey, ITuple seed, IQueryRuntimeContextListener listener) { | ||
24 | filters.add(new RelationViewFilter(inputKey, seed, listener)); | ||
25 | } | ||
26 | |||
27 | public void removeFilter(IInputKey inputKey, ITuple seed, IQueryRuntimeContextListener listener) { | ||
28 | filters.remove(new RelationViewFilter(inputKey, seed, listener)); | ||
29 | } | ||
30 | |||
31 | protected void processUpdate(Tuple tuple, boolean isInsertion) { | ||
32 | adapter.markAsPending(); | ||
33 | int size = filters.size(); | ||
34 | // Use a for loop instead of a for-each loop to avoid <code>Iterator</code> allocation overhead. | ||
35 | //noinspection ForLoopReplaceableByForEach | ||
36 | for (int i = 0; i < size; i++) { | ||
37 | filters.get(i).update(tuple, isInsertion); | ||
38 | } | ||
39 | } | ||
40 | |||
41 | public static <T> RelationViewUpdateListener<T> of(ViatraModelQueryAdapterImpl adapter, | ||
42 | RelationView<T> relationView) { | ||
43 | if (relationView instanceof TuplePreservingRelationView<T> tuplePreservingRelationView) { | ||
44 | return new TuplePreservingRelationViewUpdateListener<>(adapter, tuplePreservingRelationView); | ||
45 | } | ||
46 | return new TupleChangingRelationViewUpdateListener<>(adapter, relationView); | ||
47 | } | ||
48 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/SymbolViewUpdateListener.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/SymbolViewUpdateListener.java new file mode 100644 index 00000000..f1a2ac7c --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/SymbolViewUpdateListener.java | |||
@@ -0,0 +1,65 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.internal.update; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.matchers.context.IInputKey; | ||
9 | import org.eclipse.viatra.query.runtime.matchers.context.IQueryRuntimeContextListener; | ||
10 | import org.eclipse.viatra.query.runtime.matchers.tuple.ITuple; | ||
11 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuple; | ||
12 | import tools.refinery.store.model.Interpretation; | ||
13 | import tools.refinery.store.model.InterpretationListener; | ||
14 | import tools.refinery.store.query.viatra.internal.ViatraModelQueryAdapterImpl; | ||
15 | import tools.refinery.store.query.view.SymbolView; | ||
16 | import tools.refinery.store.query.view.TuplePreservingView; | ||
17 | |||
18 | import java.util.ArrayList; | ||
19 | import java.util.List; | ||
20 | |||
21 | public abstract class SymbolViewUpdateListener<T> implements InterpretationListener<T> { | ||
22 | private final ViatraModelQueryAdapterImpl adapter; | ||
23 | private final Interpretation<T> interpretation; | ||
24 | private final List<RelationViewFilter> filters = new ArrayList<>(); | ||
25 | |||
26 | protected SymbolViewUpdateListener(ViatraModelQueryAdapterImpl adapter, Interpretation<T> interpretation) { | ||
27 | this.adapter = adapter; | ||
28 | this.interpretation = interpretation; | ||
29 | } | ||
30 | |||
31 | public void addFilter(IInputKey inputKey, ITuple seed, IQueryRuntimeContextListener listener) { | ||
32 | if (filters.isEmpty()) { | ||
33 | // First filter to be added, from now on we have to subscribe to model updates. | ||
34 | interpretation.addListener(this, true); | ||
35 | } | ||
36 | filters.add(new RelationViewFilter(inputKey, seed, listener)); | ||
37 | } | ||
38 | |||
39 | public void removeFilter(IInputKey inputKey, ITuple seed, IQueryRuntimeContextListener listener) { | ||
40 | if (filters.remove(new RelationViewFilter(inputKey, seed, listener)) && filters.isEmpty()) { | ||
41 | // Last listener to be added, we don't have be subscribed to model updates anymore. | ||
42 | interpretation.removeListener(this); | ||
43 | } | ||
44 | } | ||
45 | |||
46 | protected void processUpdate(Tuple tuple, boolean isInsertion) { | ||
47 | adapter.markAsPending(); | ||
48 | int size = filters.size(); | ||
49 | // Use a for loop instead of a for-each loop to avoid <code>Iterator</code> allocation overhead. | ||
50 | //noinspection ForLoopReplaceableByForEach | ||
51 | for (int i = 0; i < size; i++) { | ||
52 | filters.get(i).update(tuple, isInsertion); | ||
53 | } | ||
54 | } | ||
55 | |||
56 | public static <T> SymbolViewUpdateListener<T> of(ViatraModelQueryAdapterImpl adapter, | ||
57 | SymbolView<T> view, | ||
58 | Interpretation<T> interpretation) { | ||
59 | if (view instanceof TuplePreservingView<T> tuplePreservingRelationView) { | ||
60 | return new TuplePreservingViewUpdateListener<>(adapter, tuplePreservingRelationView, | ||
61 | interpretation); | ||
62 | } | ||
63 | return new TupleChangingViewUpdateListener<>(adapter, view, interpretation); | ||
64 | } | ||
65 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/TupleChangingRelationViewUpdateListener.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/TupleChangingRelationViewUpdateListener.java deleted file mode 100644 index 14142884..00000000 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/TupleChangingRelationViewUpdateListener.java +++ /dev/null | |||
@@ -1,37 +0,0 @@ | |||
1 | package tools.refinery.store.query.viatra.internal.update; | ||
2 | |||
3 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; | ||
4 | import tools.refinery.store.query.viatra.internal.ViatraModelQueryAdapterImpl; | ||
5 | import tools.refinery.store.query.view.RelationView; | ||
6 | import tools.refinery.store.tuple.Tuple; | ||
7 | |||
8 | import java.util.Arrays; | ||
9 | |||
10 | public class TupleChangingRelationViewUpdateListener<T> extends RelationViewUpdateListener<T> { | ||
11 | private final RelationView<T> relationView; | ||
12 | |||
13 | TupleChangingRelationViewUpdateListener(ViatraModelQueryAdapterImpl adapter, RelationView<T> relationView) { | ||
14 | super(adapter); | ||
15 | this.relationView = relationView; | ||
16 | } | ||
17 | |||
18 | @Override | ||
19 | public void put(Tuple key, T fromValue, T toValue, boolean restoring) { | ||
20 | boolean fromPresent = relationView.filter(key, fromValue); | ||
21 | boolean toPresent = relationView.filter(key, toValue); | ||
22 | if (fromPresent) { | ||
23 | if (toPresent) { // value change | ||
24 | var fromArray = relationView.forwardMap(key, fromValue); | ||
25 | var toArray = relationView.forwardMap(key, toValue); | ||
26 | if (!Arrays.equals(fromArray, toArray)) { | ||
27 | processUpdate(Tuples.flatTupleOf(fromArray), false); | ||
28 | processUpdate(Tuples.flatTupleOf(toArray), true); | ||
29 | } | ||
30 | } else { // fromValue disappears | ||
31 | processUpdate(Tuples.flatTupleOf(relationView.forwardMap(key, fromValue)), false); | ||
32 | } | ||
33 | } else if (toPresent) { // toValue appears | ||
34 | processUpdate(Tuples.flatTupleOf(relationView.forwardMap(key, toValue)), true); | ||
35 | } | ||
36 | } | ||
37 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/TupleChangingViewUpdateListener.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/TupleChangingViewUpdateListener.java new file mode 100644 index 00000000..45d35571 --- /dev/null +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/TupleChangingViewUpdateListener.java | |||
@@ -0,0 +1,44 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.internal.update; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; | ||
9 | import tools.refinery.store.model.Interpretation; | ||
10 | import tools.refinery.store.query.viatra.internal.ViatraModelQueryAdapterImpl; | ||
11 | import tools.refinery.store.query.view.SymbolView; | ||
12 | import tools.refinery.store.tuple.Tuple; | ||
13 | |||
14 | import java.util.Arrays; | ||
15 | |||
16 | public class TupleChangingViewUpdateListener<T> extends SymbolViewUpdateListener<T> { | ||
17 | private final SymbolView<T> view; | ||
18 | |||
19 | TupleChangingViewUpdateListener(ViatraModelQueryAdapterImpl adapter, SymbolView<T> view, | ||
20 | Interpretation<T> interpretation) { | ||
21 | super(adapter, interpretation); | ||
22 | this.view = view; | ||
23 | } | ||
24 | |||
25 | @Override | ||
26 | public void put(Tuple key, T fromValue, T toValue, boolean restoring) { | ||
27 | boolean fromPresent = view.filter(key, fromValue); | ||
28 | boolean toPresent = view.filter(key, toValue); | ||
29 | if (fromPresent) { | ||
30 | if (toPresent) { // value change | ||
31 | var fromArray = view.forwardMap(key, fromValue); | ||
32 | var toArray = view.forwardMap(key, toValue); | ||
33 | if (!Arrays.equals(fromArray, toArray)) { | ||
34 | processUpdate(Tuples.flatTupleOf(fromArray), false); | ||
35 | processUpdate(Tuples.flatTupleOf(toArray), true); | ||
36 | } | ||
37 | } else { // fromValue disappears | ||
38 | processUpdate(Tuples.flatTupleOf(view.forwardMap(key, fromValue)), false); | ||
39 | } | ||
40 | } else if (toPresent) { // toValue appears | ||
41 | processUpdate(Tuples.flatTupleOf(view.forwardMap(key, toValue)), true); | ||
42 | } | ||
43 | } | ||
44 | } | ||
diff --git a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/TuplePreservingRelationViewUpdateListener.java b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/TuplePreservingViewUpdateListener.java index 288e018a..c18dbafb 100644 --- a/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/TuplePreservingRelationViewUpdateListener.java +++ b/subprojects/store-query-viatra/src/main/java/tools/refinery/store/query/viatra/internal/update/TuplePreservingViewUpdateListener.java | |||
@@ -1,16 +1,22 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.query.viatra.internal.update; | 6 | package tools.refinery.store.query.viatra.internal.update; |
2 | 7 | ||
3 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; | 8 | import org.eclipse.viatra.query.runtime.matchers.tuple.Tuples; |
9 | import tools.refinery.store.model.Interpretation; | ||
4 | import tools.refinery.store.query.viatra.internal.ViatraModelQueryAdapterImpl; | 10 | import tools.refinery.store.query.viatra.internal.ViatraModelQueryAdapterImpl; |
5 | import tools.refinery.store.query.view.TuplePreservingRelationView; | 11 | import tools.refinery.store.query.view.TuplePreservingView; |
6 | import tools.refinery.store.tuple.Tuple; | 12 | import tools.refinery.store.tuple.Tuple; |
7 | 13 | ||
8 | public class TuplePreservingRelationViewUpdateListener<T> extends RelationViewUpdateListener<T> { | 14 | public class TuplePreservingViewUpdateListener<T> extends SymbolViewUpdateListener<T> { |
9 | private final TuplePreservingRelationView<T> view; | 15 | private final TuplePreservingView<T> view; |
10 | 16 | ||
11 | TuplePreservingRelationViewUpdateListener(ViatraModelQueryAdapterImpl adapter, | 17 | TuplePreservingViewUpdateListener(ViatraModelQueryAdapterImpl adapter, TuplePreservingView<T> view, |
12 | TuplePreservingRelationView<T> view) { | 18 | Interpretation<T> interpretation) { |
13 | super(adapter); | 19 | super(adapter, interpretation); |
14 | this.view = view; | 20 | this.view = view; |
15 | } | 21 | } |
16 | 22 | ||
diff --git a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/DiagonalQueryTest.java b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/DiagonalQueryTest.java new file mode 100644 index 00000000..6aae2ebe --- /dev/null +++ b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/DiagonalQueryTest.java | |||
@@ -0,0 +1,390 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; | ||
9 | import tools.refinery.store.model.ModelStore; | ||
10 | import tools.refinery.store.query.ModelQueryAdapter; | ||
11 | import tools.refinery.store.query.dnf.Dnf; | ||
12 | import tools.refinery.store.query.dnf.Query; | ||
13 | import tools.refinery.store.query.viatra.tests.QueryEngineTest; | ||
14 | import tools.refinery.store.query.view.AnySymbolView; | ||
15 | import tools.refinery.store.query.view.FunctionView; | ||
16 | import tools.refinery.store.query.view.KeyOnlyView; | ||
17 | import tools.refinery.store.representation.Symbol; | ||
18 | import tools.refinery.store.tuple.Tuple; | ||
19 | |||
20 | import java.util.List; | ||
21 | import java.util.Map; | ||
22 | import java.util.Optional; | ||
23 | |||
24 | import static tools.refinery.store.query.literal.Literals.not; | ||
25 | import static tools.refinery.store.query.term.int_.IntTerms.INT_SUM; | ||
26 | import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertNullableResults; | ||
27 | import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertResults; | ||
28 | |||
29 | class DiagonalQueryTest { | ||
30 | private static final Symbol<Boolean> person = Symbol.of("Person", 1); | ||
31 | private static final Symbol<Boolean> friend = Symbol.of("friend", 2); | ||
32 | private static final Symbol<Boolean> symbol = Symbol.of("symbol", 4); | ||
33 | private static final Symbol<Integer> intSymbol = Symbol.of("intSymbol", 4, Integer.class); | ||
34 | private static final AnySymbolView personView = new KeyOnlyView<>(person); | ||
35 | private static final AnySymbolView friendView = new KeyOnlyView<>(friend); | ||
36 | private static final AnySymbolView symbolView = new KeyOnlyView<>(symbol); | ||
37 | private static final FunctionView<Integer> intSymbolView = new FunctionView<>(intSymbol); | ||
38 | |||
39 | @QueryEngineTest | ||
40 | void inputKeyNegationTest(QueryEvaluationHint hint) { | ||
41 | var query = Query.of("Diagonal", (builder, p1) -> builder.clause(p2 -> List.of( | ||
42 | personView.call(p1), | ||
43 | not(symbolView.call(p1, p1, p2, p2)) | ||
44 | ))); | ||
45 | |||
46 | var store = ModelStore.builder() | ||
47 | .symbols(person, symbol) | ||
48 | .with(ViatraModelQueryAdapter.builder() | ||
49 | .defaultHint(hint) | ||
50 | .queries(query)) | ||
51 | .build(); | ||
52 | |||
53 | var model = store.createEmptyModel(); | ||
54 | var personInterpretation = model.getInterpretation(person); | ||
55 | var symbolInterpretation = model.getInterpretation(symbol); | ||
56 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
57 | var queryResultSet = queryEngine.getResultSet(query); | ||
58 | |||
59 | personInterpretation.put(Tuple.of(0), true); | ||
60 | personInterpretation.put(Tuple.of(1), true); | ||
61 | personInterpretation.put(Tuple.of(2), true); | ||
62 | |||
63 | symbolInterpretation.put(Tuple.of(0, 0, 1, 1), true); | ||
64 | symbolInterpretation.put(Tuple.of(0, 0, 1, 2), true); | ||
65 | symbolInterpretation.put(Tuple.of(1, 1, 0, 1), true); | ||
66 | symbolInterpretation.put(Tuple.of(1, 2, 1, 1), true); | ||
67 | |||
68 | queryEngine.flushChanges(); | ||
69 | assertResults(Map.of( | ||
70 | Tuple.of(0), false, | ||
71 | Tuple.of(1), true, | ||
72 | Tuple.of(2), true, | ||
73 | Tuple.of(3), false | ||
74 | ), queryResultSet); | ||
75 | } | ||
76 | |||
77 | @QueryEngineTest | ||
78 | void subQueryNegationTest(QueryEvaluationHint hint) { | ||
79 | var subQuery = Query.of("SubQuery", (builder, p1, p2, p3, p4) -> builder | ||
80 | .clause( | ||
81 | personView.call(p1), | ||
82 | symbolView.call(p1, p2, p3, p4) | ||
83 | ) | ||
84 | .clause( | ||
85 | personView.call(p2), | ||
86 | symbolView.call(p1, p2, p3, p4) | ||
87 | )); | ||
88 | var query = Query.of("Diagonal", (builder, p1) -> builder.clause(p2 -> List.of( | ||
89 | personView.call(p1), | ||
90 | not(subQuery.call(p1, p1, p2, p2)) | ||
91 | ))); | ||
92 | |||
93 | var store = ModelStore.builder() | ||
94 | .symbols(person, symbol) | ||
95 | .with(ViatraModelQueryAdapter.builder() | ||
96 | .defaultHint(hint) | ||
97 | .queries(query)) | ||
98 | .build(); | ||
99 | |||
100 | var model = store.createEmptyModel(); | ||
101 | var personInterpretation = model.getInterpretation(person); | ||
102 | var symbolInterpretation = model.getInterpretation(symbol); | ||
103 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
104 | var queryResultSet = queryEngine.getResultSet(query); | ||
105 | |||
106 | personInterpretation.put(Tuple.of(0), true); | ||
107 | personInterpretation.put(Tuple.of(1), true); | ||
108 | personInterpretation.put(Tuple.of(2), true); | ||
109 | |||
110 | symbolInterpretation.put(Tuple.of(0, 0, 1, 1), true); | ||
111 | symbolInterpretation.put(Tuple.of(0, 0, 1, 2), true); | ||
112 | symbolInterpretation.put(Tuple.of(1, 1, 0, 1), true); | ||
113 | symbolInterpretation.put(Tuple.of(1, 2, 1, 1), true); | ||
114 | |||
115 | queryEngine.flushChanges(); | ||
116 | assertResults(Map.of( | ||
117 | Tuple.of(0), false, | ||
118 | Tuple.of(1), true, | ||
119 | Tuple.of(2), true, | ||
120 | Tuple.of(3), false | ||
121 | ), queryResultSet); | ||
122 | } | ||
123 | |||
124 | @QueryEngineTest | ||
125 | void inputKeyCountTest(QueryEvaluationHint hint) { | ||
126 | var query = Query.of("Diagonal", Integer.class, (builder, p1, output) -> builder.clause(p2 -> List.of( | ||
127 | personView.call(p1), | ||
128 | output.assign(symbolView.count(p1, p1, p2, p2)) | ||
129 | ))); | ||
130 | |||
131 | var store = ModelStore.builder() | ||
132 | .symbols(person, symbol) | ||
133 | .with(ViatraModelQueryAdapter.builder() | ||
134 | .defaultHint(hint) | ||
135 | .queries(query)) | ||
136 | .build(); | ||
137 | |||
138 | var model = store.createEmptyModel(); | ||
139 | var personInterpretation = model.getInterpretation(person); | ||
140 | var symbolInterpretation = model.getInterpretation(symbol); | ||
141 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
142 | var queryResultSet = queryEngine.getResultSet(query); | ||
143 | |||
144 | personInterpretation.put(Tuple.of(0), true); | ||
145 | personInterpretation.put(Tuple.of(1), true); | ||
146 | personInterpretation.put(Tuple.of(2), true); | ||
147 | |||
148 | symbolInterpretation.put(Tuple.of(0, 0, 1, 1), true); | ||
149 | symbolInterpretation.put(Tuple.of(0, 0, 2, 2), true); | ||
150 | symbolInterpretation.put(Tuple.of(0, 0, 1, 2), true); | ||
151 | symbolInterpretation.put(Tuple.of(1, 1, 0, 1), true); | ||
152 | symbolInterpretation.put(Tuple.of(1, 2, 1, 1), true); | ||
153 | |||
154 | queryEngine.flushChanges(); | ||
155 | assertNullableResults(Map.of( | ||
156 | Tuple.of(0), Optional.of(2), | ||
157 | Tuple.of(1), Optional.of(0), | ||
158 | Tuple.of(2), Optional.of(0), | ||
159 | Tuple.of(3), Optional.empty() | ||
160 | ), queryResultSet); | ||
161 | } | ||
162 | |||
163 | @QueryEngineTest | ||
164 | void subQueryCountTest(QueryEvaluationHint hint) { | ||
165 | var subQuery = Query.of("SubQuery", (builder, p1, p2, p3, p4) -> builder.clause( | ||
166 | personView.call(p1), | ||
167 | symbolView.call(p1, p2, p3, p4) | ||
168 | ) | ||
169 | .clause( | ||
170 | personView.call(p2), | ||
171 | symbolView.call(p1, p2, p3, p4) | ||
172 | )); | ||
173 | var query = Query.of("Diagonal", Integer.class, (builder, p1, output) -> builder.clause(p2 -> List.of( | ||
174 | personView.call(p1), | ||
175 | output.assign(subQuery.count(p1, p1, p2, p2)) | ||
176 | ))); | ||
177 | |||
178 | var store = ModelStore.builder() | ||
179 | .symbols(person, symbol) | ||
180 | .with(ViatraModelQueryAdapter.builder() | ||
181 | .defaultHint(hint) | ||
182 | .queries(query)) | ||
183 | .build(); | ||
184 | |||
185 | var model = store.createEmptyModel(); | ||
186 | var personInterpretation = model.getInterpretation(person); | ||
187 | var symbolInterpretation = model.getInterpretation(symbol); | ||
188 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
189 | var queryResultSet = queryEngine.getResultSet(query); | ||
190 | |||
191 | personInterpretation.put(Tuple.of(0), true); | ||
192 | personInterpretation.put(Tuple.of(1), true); | ||
193 | personInterpretation.put(Tuple.of(2), true); | ||
194 | |||
195 | symbolInterpretation.put(Tuple.of(0, 0, 1, 1), true); | ||
196 | symbolInterpretation.put(Tuple.of(0, 0, 2, 2), true); | ||
197 | symbolInterpretation.put(Tuple.of(0, 0, 1, 2), true); | ||
198 | symbolInterpretation.put(Tuple.of(1, 1, 0, 1), true); | ||
199 | symbolInterpretation.put(Tuple.of(1, 2, 1, 1), true); | ||
200 | |||
201 | queryEngine.flushChanges(); | ||
202 | assertNullableResults(Map.of( | ||
203 | Tuple.of(0), Optional.of(2), | ||
204 | Tuple.of(1), Optional.of(0), | ||
205 | Tuple.of(2), Optional.of(0), | ||
206 | Tuple.of(3), Optional.empty() | ||
207 | ), queryResultSet); | ||
208 | } | ||
209 | |||
210 | @QueryEngineTest | ||
211 | void inputKeyAggregationTest(QueryEvaluationHint hint) { | ||
212 | var query = Query.of("Diagonal", Integer.class, (builder, p1, output) -> builder | ||
213 | .clause((p2) -> List.of( | ||
214 | personView.call(p1), | ||
215 | output.assign(intSymbolView.aggregate(INT_SUM, p1, p1, p2, p2)) | ||
216 | ))); | ||
217 | |||
218 | var store = ModelStore.builder() | ||
219 | .symbols(person, intSymbol) | ||
220 | .with(ViatraModelQueryAdapter.builder() | ||
221 | .defaultHint(hint) | ||
222 | .queries(query)) | ||
223 | .build(); | ||
224 | |||
225 | var model = store.createEmptyModel(); | ||
226 | var personInterpretation = model.getInterpretation(person); | ||
227 | var intSymbolInterpretation = model.getInterpretation(intSymbol); | ||
228 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
229 | var queryResultSet = queryEngine.getResultSet(query); | ||
230 | |||
231 | personInterpretation.put(Tuple.of(0), true); | ||
232 | personInterpretation.put(Tuple.of(1), true); | ||
233 | personInterpretation.put(Tuple.of(2), true); | ||
234 | |||
235 | intSymbolInterpretation.put(Tuple.of(0, 0, 1, 1), 1); | ||
236 | intSymbolInterpretation.put(Tuple.of(0, 0, 2, 2), 2); | ||
237 | intSymbolInterpretation.put(Tuple.of(0, 0, 1, 2), 10); | ||
238 | intSymbolInterpretation.put(Tuple.of(1, 1, 0, 1), 11); | ||
239 | intSymbolInterpretation.put(Tuple.of(1, 2, 1, 1), 12); | ||
240 | |||
241 | queryEngine.flushChanges(); | ||
242 | assertNullableResults(Map.of( | ||
243 | Tuple.of(0), Optional.of(3), | ||
244 | Tuple.of(1), Optional.of(0), | ||
245 | Tuple.of(2), Optional.of(0), | ||
246 | Tuple.of(3), Optional.empty() | ||
247 | ), queryResultSet); | ||
248 | } | ||
249 | |||
250 | @QueryEngineTest | ||
251 | void subQueryAggregationTest(QueryEvaluationHint hint) { | ||
252 | var subQuery = Dnf.of("SubQuery", builder -> { | ||
253 | var p1 = builder.parameter("p1"); | ||
254 | var p2 = builder.parameter("p2"); | ||
255 | var p3 = builder.parameter("p3"); | ||
256 | var p4 = builder.parameter("p4"); | ||
257 | var x = builder.parameter("x", Integer.class); | ||
258 | var y = builder.parameter("y", Integer.class); | ||
259 | builder.clause( | ||
260 | personView.call(p1), | ||
261 | intSymbolView.call(p1, p2, p3, p4, x), | ||
262 | y.assign(x) | ||
263 | ); | ||
264 | builder.clause( | ||
265 | personView.call(p2), | ||
266 | intSymbolView.call(p1, p2, p3, p4, x), | ||
267 | y.assign(x) | ||
268 | ); | ||
269 | }); | ||
270 | var query = Query.of("Diagonal", Integer.class, (builder, p1, output) -> builder | ||
271 | .clause(Integer.class, Integer.class, (p2, y, z) -> List.of( | ||
272 | personView.call(p1), | ||
273 | output.assign(subQuery.aggregateBy(y, INT_SUM, p1, p1, p2, p2, y, z)) | ||
274 | ))); | ||
275 | |||
276 | var store = ModelStore.builder() | ||
277 | .symbols(person, intSymbol) | ||
278 | .with(ViatraModelQueryAdapter.builder() | ||
279 | .defaultHint(hint) | ||
280 | .queries(query)) | ||
281 | .build(); | ||
282 | |||
283 | var model = store.createEmptyModel(); | ||
284 | var personInterpretation = model.getInterpretation(person); | ||
285 | var intSymbolInterpretation = model.getInterpretation(intSymbol); | ||
286 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
287 | var queryResultSet = queryEngine.getResultSet(query); | ||
288 | |||
289 | personInterpretation.put(Tuple.of(0), true); | ||
290 | personInterpretation.put(Tuple.of(1), true); | ||
291 | personInterpretation.put(Tuple.of(2), true); | ||
292 | |||
293 | intSymbolInterpretation.put(Tuple.of(0, 0, 1, 1), 1); | ||
294 | intSymbolInterpretation.put(Tuple.of(0, 0, 2, 2), 2); | ||
295 | intSymbolInterpretation.put(Tuple.of(0, 0, 1, 2), 10); | ||
296 | intSymbolInterpretation.put(Tuple.of(1, 1, 0, 1), 11); | ||
297 | intSymbolInterpretation.put(Tuple.of(1, 2, 1, 1), 12); | ||
298 | |||
299 | queryEngine.flushChanges(); | ||
300 | assertNullableResults(Map.of( | ||
301 | Tuple.of(0), Optional.of(3), | ||
302 | Tuple.of(1), Optional.of(0), | ||
303 | Tuple.of(2), Optional.of(0), | ||
304 | Tuple.of(3), Optional.empty() | ||
305 | ), queryResultSet); | ||
306 | } | ||
307 | |||
308 | @QueryEngineTest | ||
309 | void inputKeyTransitiveTest(QueryEvaluationHint hint) { | ||
310 | var query = Query.of("Diagonal", (builder, p1) -> builder.clause( | ||
311 | personView.call(p1), | ||
312 | friendView.callTransitive(p1, p1) | ||
313 | )); | ||
314 | |||
315 | var store = ModelStore.builder() | ||
316 | .symbols(person, friend) | ||
317 | .with(ViatraModelQueryAdapter.builder() | ||
318 | .defaultHint(hint) | ||
319 | .queries(query)) | ||
320 | .build(); | ||
321 | |||
322 | var model = store.createEmptyModel(); | ||
323 | var personInterpretation = model.getInterpretation(person); | ||
324 | var friendInterpretation = model.getInterpretation(friend); | ||
325 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
326 | var queryResultSet = queryEngine.getResultSet(query); | ||
327 | |||
328 | personInterpretation.put(Tuple.of(0), true); | ||
329 | personInterpretation.put(Tuple.of(1), true); | ||
330 | personInterpretation.put(Tuple.of(2), true); | ||
331 | |||
332 | friendInterpretation.put(Tuple.of(0, 0), true); | ||
333 | friendInterpretation.put(Tuple.of(0, 1), true); | ||
334 | friendInterpretation.put(Tuple.of(1, 2), true); | ||
335 | |||
336 | queryEngine.flushChanges(); | ||
337 | assertResults(Map.of( | ||
338 | Tuple.of(0), true, | ||
339 | Tuple.of(1), false, | ||
340 | Tuple.of(2), false, | ||
341 | Tuple.of(3), false | ||
342 | ), queryResultSet); | ||
343 | } | ||
344 | |||
345 | @QueryEngineTest | ||
346 | void subQueryTransitiveTest(QueryEvaluationHint hint) { | ||
347 | var subQuery = Query.of("SubQuery", (builder, p1, p2) -> builder | ||
348 | .clause( | ||
349 | personView.call(p1), | ||
350 | friendView.call(p1, p2) | ||
351 | ) | ||
352 | .clause( | ||
353 | personView.call(p2), | ||
354 | friendView.call(p1, p2) | ||
355 | )); | ||
356 | var query = Query.of("Diagonal", (builder, p1) -> builder.clause( | ||
357 | personView.call(p1), | ||
358 | subQuery.callTransitive(p1, p1) | ||
359 | )); | ||
360 | |||
361 | var store = ModelStore.builder() | ||
362 | .symbols(person, friend) | ||
363 | .with(ViatraModelQueryAdapter.builder() | ||
364 | .defaultHint(hint) | ||
365 | .queries(query)) | ||
366 | .build(); | ||
367 | |||
368 | var model = store.createEmptyModel(); | ||
369 | var personInterpretation = model.getInterpretation(person); | ||
370 | var friendInterpretation = model.getInterpretation(friend); | ||
371 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
372 | var queryResultSet = queryEngine.getResultSet(query); | ||
373 | |||
374 | personInterpretation.put(Tuple.of(0), true); | ||
375 | personInterpretation.put(Tuple.of(1), true); | ||
376 | personInterpretation.put(Tuple.of(2), true); | ||
377 | |||
378 | friendInterpretation.put(Tuple.of(0, 0), true); | ||
379 | friendInterpretation.put(Tuple.of(0, 1), true); | ||
380 | friendInterpretation.put(Tuple.of(1, 2), true); | ||
381 | |||
382 | queryEngine.flushChanges(); | ||
383 | assertResults(Map.of( | ||
384 | Tuple.of(0), true, | ||
385 | Tuple.of(1), false, | ||
386 | Tuple.of(2), false, | ||
387 | Tuple.of(3), false | ||
388 | ), queryResultSet); | ||
389 | } | ||
390 | } | ||
diff --git a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/FunctionalQueryTest.java b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/FunctionalQueryTest.java new file mode 100644 index 00000000..258127e7 --- /dev/null +++ b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/FunctionalQueryTest.java | |||
@@ -0,0 +1,483 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; | ||
9 | import tools.refinery.store.map.Cursor; | ||
10 | import tools.refinery.store.model.ModelStore; | ||
11 | import tools.refinery.store.query.ModelQueryAdapter; | ||
12 | import tools.refinery.store.query.dnf.Query; | ||
13 | import tools.refinery.store.query.term.Variable; | ||
14 | import tools.refinery.store.query.viatra.tests.QueryEngineTest; | ||
15 | import tools.refinery.store.query.view.AnySymbolView; | ||
16 | import tools.refinery.store.query.view.FilteredView; | ||
17 | import tools.refinery.store.query.view.FunctionView; | ||
18 | import tools.refinery.store.query.view.KeyOnlyView; | ||
19 | import tools.refinery.store.representation.Symbol; | ||
20 | import tools.refinery.store.representation.TruthValue; | ||
21 | import tools.refinery.store.tuple.Tuple; | ||
22 | |||
23 | import java.util.List; | ||
24 | import java.util.Map; | ||
25 | import java.util.Optional; | ||
26 | |||
27 | import static org.hamcrest.MatcherAssert.assertThat; | ||
28 | import static org.hamcrest.Matchers.is; | ||
29 | import static org.hamcrest.Matchers.nullValue; | ||
30 | import static org.junit.jupiter.api.Assertions.assertAll; | ||
31 | import static org.junit.jupiter.api.Assertions.assertThrows; | ||
32 | import static tools.refinery.store.query.literal.Literals.assume; | ||
33 | import static tools.refinery.store.query.term.int_.IntTerms.*; | ||
34 | import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertNullableResults; | ||
35 | import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertResults; | ||
36 | |||
37 | class FunctionalQueryTest { | ||
38 | private static final Symbol<Boolean> person = Symbol.of("Person", 1); | ||
39 | private static final Symbol<Integer> age = Symbol.of("age", 1, Integer.class); | ||
40 | private static final Symbol<TruthValue> friend = Symbol.of("friend", 2, TruthValue.class, TruthValue.FALSE); | ||
41 | private static final AnySymbolView personView = new KeyOnlyView<>(person); | ||
42 | private static final FunctionView<Integer> ageView = new FunctionView<>(age); | ||
43 | private static final AnySymbolView friendMustView = new FilteredView<>(friend, "must", TruthValue::must); | ||
44 | |||
45 | @QueryEngineTest | ||
46 | void inputKeyTest(QueryEvaluationHint hint) { | ||
47 | var query = Query.of("InputKey", Integer.class, (builder, p1, output) -> builder.clause( | ||
48 | personView.call(p1), | ||
49 | ageView.call(p1, output) | ||
50 | )); | ||
51 | |||
52 | var store = ModelStore.builder() | ||
53 | .symbols(person, age) | ||
54 | .with(ViatraModelQueryAdapter.builder() | ||
55 | .defaultHint(hint) | ||
56 | .queries(query)) | ||
57 | .build(); | ||
58 | |||
59 | var model = store.createEmptyModel(); | ||
60 | var personInterpretation = model.getInterpretation(person); | ||
61 | var ageInterpretation = model.getInterpretation(age); | ||
62 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
63 | var queryResultSet = queryEngine.getResultSet(query); | ||
64 | |||
65 | personInterpretation.put(Tuple.of(0), true); | ||
66 | personInterpretation.put(Tuple.of(1), true); | ||
67 | |||
68 | ageInterpretation.put(Tuple.of(0), 12); | ||
69 | ageInterpretation.put(Tuple.of(1), 24); | ||
70 | ageInterpretation.put(Tuple.of(2), 36); | ||
71 | |||
72 | queryEngine.flushChanges(); | ||
73 | assertNullableResults(Map.of( | ||
74 | Tuple.of(0), Optional.of(12), | ||
75 | Tuple.of(1), Optional.of(24), | ||
76 | Tuple.of(2), Optional.empty() | ||
77 | ), queryResultSet); | ||
78 | } | ||
79 | |||
80 | @QueryEngineTest | ||
81 | void predicateTest(QueryEvaluationHint hint) { | ||
82 | var subQuery = Query.of("SubQuery", Integer.class, (builder, p1, x) -> builder.clause( | ||
83 | personView.call(p1), | ||
84 | ageView.call(p1, x) | ||
85 | )); | ||
86 | var query = Query.of("Predicate", Integer.class, (builder, p1, output) -> builder.clause( | ||
87 | personView.call(p1), | ||
88 | output.assign(subQuery.call(p1)) | ||
89 | )); | ||
90 | |||
91 | var store = ModelStore.builder() | ||
92 | .symbols(person, age) | ||
93 | .with(ViatraModelQueryAdapter.builder() | ||
94 | .defaultHint(hint) | ||
95 | .queries(query)) | ||
96 | .build(); | ||
97 | |||
98 | var model = store.createEmptyModel(); | ||
99 | var personInterpretation = model.getInterpretation(person); | ||
100 | var ageInterpretation = model.getInterpretation(age); | ||
101 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
102 | var queryResultSet = queryEngine.getResultSet(query); | ||
103 | |||
104 | personInterpretation.put(Tuple.of(0), true); | ||
105 | personInterpretation.put(Tuple.of(1), true); | ||
106 | |||
107 | ageInterpretation.put(Tuple.of(0), 12); | ||
108 | ageInterpretation.put(Tuple.of(1), 24); | ||
109 | ageInterpretation.put(Tuple.of(2), 36); | ||
110 | |||
111 | queryEngine.flushChanges(); | ||
112 | assertNullableResults(Map.of( | ||
113 | Tuple.of(0), Optional.of(12), | ||
114 | Tuple.of(1), Optional.of(24), | ||
115 | Tuple.of(2), Optional.empty() | ||
116 | ), queryResultSet); | ||
117 | } | ||
118 | |||
119 | @QueryEngineTest | ||
120 | void computationTest(QueryEvaluationHint hint) { | ||
121 | var query = Query.of("Computation", Integer.class, (builder, p1, output) -> builder.clause(() -> { | ||
122 | var x = Variable.of("x", Integer.class); | ||
123 | return List.of( | ||
124 | personView.call(p1), | ||
125 | ageView.call(p1, x), | ||
126 | output.assign(mul(x, constant(7))) | ||
127 | ); | ||
128 | })); | ||
129 | |||
130 | var store = ModelStore.builder() | ||
131 | .symbols(person, age) | ||
132 | .with(ViatraModelQueryAdapter.builder() | ||
133 | .defaultHint(hint) | ||
134 | .queries(query)) | ||
135 | .build(); | ||
136 | |||
137 | var model = store.createEmptyModel(); | ||
138 | var personInterpretation = model.getInterpretation(person); | ||
139 | var ageInterpretation = model.getInterpretation(age); | ||
140 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
141 | var queryResultSet = queryEngine.getResultSet(query); | ||
142 | |||
143 | personInterpretation.put(Tuple.of(0), true); | ||
144 | personInterpretation.put(Tuple.of(1), true); | ||
145 | |||
146 | ageInterpretation.put(Tuple.of(0), 12); | ||
147 | ageInterpretation.put(Tuple.of(1), 24); | ||
148 | |||
149 | queryEngine.flushChanges(); | ||
150 | assertNullableResults(Map.of( | ||
151 | Tuple.of(0), Optional.of(84), | ||
152 | Tuple.of(1), Optional.of(168), | ||
153 | Tuple.of(2), Optional.empty() | ||
154 | ), queryResultSet); | ||
155 | } | ||
156 | |||
157 | @QueryEngineTest | ||
158 | void inputKeyCountTest(QueryEvaluationHint hint) { | ||
159 | var query = Query.of("Count", Integer.class, (builder, p1, output) -> builder.clause( | ||
160 | personView.call(p1), | ||
161 | output.assign(friendMustView.count(p1, Variable.of())) | ||
162 | )); | ||
163 | |||
164 | var store = ModelStore.builder() | ||
165 | .symbols(person, friend) | ||
166 | .with(ViatraModelQueryAdapter.builder() | ||
167 | .defaultHint(hint) | ||
168 | .queries(query)) | ||
169 | .build(); | ||
170 | |||
171 | var model = store.createEmptyModel(); | ||
172 | var personInterpretation = model.getInterpretation(person); | ||
173 | var friendInterpretation = model.getInterpretation(friend); | ||
174 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
175 | var queryResultSet = queryEngine.getResultSet(query); | ||
176 | |||
177 | personInterpretation.put(Tuple.of(0), true); | ||
178 | personInterpretation.put(Tuple.of(1), true); | ||
179 | personInterpretation.put(Tuple.of(2), true); | ||
180 | |||
181 | friendInterpretation.put(Tuple.of(0, 1), TruthValue.TRUE); | ||
182 | friendInterpretation.put(Tuple.of(1, 0), TruthValue.TRUE); | ||
183 | friendInterpretation.put(Tuple.of(1, 2), TruthValue.TRUE); | ||
184 | |||
185 | queryEngine.flushChanges(); | ||
186 | assertNullableResults(Map.of( | ||
187 | Tuple.of(0), Optional.of(1), | ||
188 | Tuple.of(1), Optional.of(2), | ||
189 | Tuple.of(2), Optional.of(0), | ||
190 | Tuple.of(3), Optional.empty() | ||
191 | ), queryResultSet); | ||
192 | } | ||
193 | |||
194 | @QueryEngineTest | ||
195 | void predicateCountTest(QueryEvaluationHint hint) { | ||
196 | var subQuery = Query.of("SubQuery", (builder, p1, p2) -> builder.clause( | ||
197 | personView.call(p1), | ||
198 | personView.call(p2), | ||
199 | friendMustView.call(p1, p2) | ||
200 | )); | ||
201 | var query = Query.of("Count", Integer.class, (builder, p1, output) -> builder.clause( | ||
202 | personView.call(p1), | ||
203 | output.assign(subQuery.count(p1, Variable.of())) | ||
204 | )); | ||
205 | |||
206 | var store = ModelStore.builder() | ||
207 | .symbols(person, friend) | ||
208 | .with(ViatraModelQueryAdapter.builder() | ||
209 | .defaultHint(hint) | ||
210 | .queries(query)) | ||
211 | .build(); | ||
212 | |||
213 | var model = store.createEmptyModel(); | ||
214 | var personInterpretation = model.getInterpretation(person); | ||
215 | var friendInterpretation = model.getInterpretation(friend); | ||
216 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
217 | var queryResultSet = queryEngine.getResultSet(query); | ||
218 | |||
219 | personInterpretation.put(Tuple.of(0), true); | ||
220 | personInterpretation.put(Tuple.of(1), true); | ||
221 | personInterpretation.put(Tuple.of(2), true); | ||
222 | |||
223 | friendInterpretation.put(Tuple.of(0, 1), TruthValue.TRUE); | ||
224 | friendInterpretation.put(Tuple.of(1, 0), TruthValue.TRUE); | ||
225 | friendInterpretation.put(Tuple.of(1, 2), TruthValue.TRUE); | ||
226 | |||
227 | queryEngine.flushChanges(); | ||
228 | assertNullableResults(Map.of( | ||
229 | Tuple.of(0), Optional.of(1), | ||
230 | Tuple.of(1), Optional.of(2), | ||
231 | Tuple.of(2), Optional.of(0), | ||
232 | Tuple.of(3), Optional.empty() | ||
233 | ), queryResultSet); | ||
234 | } | ||
235 | |||
236 | @QueryEngineTest | ||
237 | void inputKeyAggregationTest(QueryEvaluationHint hint) { | ||
238 | var query = Query.of("Aggregate", Integer.class, (builder, output) -> builder.clause( | ||
239 | output.assign(ageView.aggregate(INT_SUM, Variable.of())) | ||
240 | )); | ||
241 | |||
242 | var store = ModelStore.builder() | ||
243 | .symbols(age) | ||
244 | .with(ViatraModelQueryAdapter.builder() | ||
245 | .defaultHint(hint) | ||
246 | .queries(query)) | ||
247 | .build(); | ||
248 | |||
249 | var model = store.createEmptyModel(); | ||
250 | var ageInterpretation = model.getInterpretation(age); | ||
251 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
252 | var queryResultSet = queryEngine.getResultSet(query); | ||
253 | |||
254 | ageInterpretation.put(Tuple.of(0), 12); | ||
255 | ageInterpretation.put(Tuple.of(1), 24); | ||
256 | |||
257 | queryEngine.flushChanges(); | ||
258 | assertResults(Map.of(Tuple.of(), 36), queryResultSet); | ||
259 | } | ||
260 | |||
261 | @QueryEngineTest | ||
262 | void predicateAggregationTest(QueryEvaluationHint hint) { | ||
263 | var subQuery = Query.of("SubQuery", Integer.class, (builder, p1, x) -> builder.clause( | ||
264 | personView.call(p1), | ||
265 | ageView.call(p1, x) | ||
266 | )); | ||
267 | var query = Query.of("Aggregate", Integer.class, (builder, output) -> builder.clause( | ||
268 | output.assign(subQuery.aggregate(INT_SUM, Variable.of())) | ||
269 | )); | ||
270 | |||
271 | var store = ModelStore.builder() | ||
272 | .symbols(person, age) | ||
273 | .with(ViatraModelQueryAdapter.builder() | ||
274 | .defaultHint(hint) | ||
275 | .queries(query)) | ||
276 | .build(); | ||
277 | |||
278 | var model = store.createEmptyModel(); | ||
279 | var personInterpretation = model.getInterpretation(person); | ||
280 | var ageInterpretation = model.getInterpretation(age); | ||
281 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
282 | var queryResultSet = queryEngine.getResultSet(query); | ||
283 | |||
284 | personInterpretation.put(Tuple.of(0), true); | ||
285 | personInterpretation.put(Tuple.of(1), true); | ||
286 | |||
287 | ageInterpretation.put(Tuple.of(0), 12); | ||
288 | ageInterpretation.put(Tuple.of(1), 24); | ||
289 | |||
290 | queryEngine.flushChanges(); | ||
291 | assertResults(Map.of(Tuple.of(), 36), queryResultSet); | ||
292 | } | ||
293 | |||
294 | @QueryEngineTest | ||
295 | void extremeValueTest(QueryEvaluationHint hint) { | ||
296 | var subQuery = Query.of("SubQuery", Integer.class, (builder, p1, x) -> builder.clause( | ||
297 | personView.call(p1), | ||
298 | x.assign(friendMustView.count(p1, Variable.of())) | ||
299 | )); | ||
300 | var minQuery = Query.of("Min", Integer.class, (builder, output) -> builder.clause( | ||
301 | output.assign(subQuery.aggregate(INT_MIN, Variable.of())) | ||
302 | )); | ||
303 | var maxQuery = Query.of("Max", Integer.class, (builder, output) -> builder.clause( | ||
304 | output.assign(subQuery.aggregate(INT_MAX, Variable.of())) | ||
305 | )); | ||
306 | |||
307 | var store = ModelStore.builder() | ||
308 | .symbols(person, friend) | ||
309 | .with(ViatraModelQueryAdapter.builder() | ||
310 | .defaultHint(hint) | ||
311 | .queries(minQuery, maxQuery)) | ||
312 | .build(); | ||
313 | |||
314 | var model = store.createEmptyModel(); | ||
315 | var personInterpretation = model.getInterpretation(person); | ||
316 | var friendInterpretation = model.getInterpretation(friend); | ||
317 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
318 | var minResultSet = queryEngine.getResultSet(minQuery); | ||
319 | var maxResultSet = queryEngine.getResultSet(maxQuery); | ||
320 | |||
321 | assertResults(Map.of(Tuple.of(), Integer.MAX_VALUE), minResultSet); | ||
322 | assertResults(Map.of(Tuple.of(), Integer.MIN_VALUE), maxResultSet); | ||
323 | |||
324 | personInterpretation.put(Tuple.of(0), true); | ||
325 | personInterpretation.put(Tuple.of(1), true); | ||
326 | personInterpretation.put(Tuple.of(2), true); | ||
327 | |||
328 | friendInterpretation.put(Tuple.of(0, 1), TruthValue.TRUE); | ||
329 | friendInterpretation.put(Tuple.of(1, 0), TruthValue.TRUE); | ||
330 | friendInterpretation.put(Tuple.of(1, 2), TruthValue.TRUE); | ||
331 | |||
332 | queryEngine.flushChanges(); | ||
333 | assertResults(Map.of(Tuple.of(), 0), minResultSet); | ||
334 | assertResults(Map.of(Tuple.of(), 2), maxResultSet); | ||
335 | |||
336 | friendInterpretation.put(Tuple.of(2, 0), TruthValue.TRUE); | ||
337 | friendInterpretation.put(Tuple.of(2, 1), TruthValue.TRUE); | ||
338 | |||
339 | queryEngine.flushChanges(); | ||
340 | assertResults(Map.of(Tuple.of(), 1), minResultSet); | ||
341 | assertResults(Map.of(Tuple.of(), 2), maxResultSet); | ||
342 | |||
343 | friendInterpretation.put(Tuple.of(0, 1), TruthValue.FALSE); | ||
344 | friendInterpretation.put(Tuple.of(1, 0), TruthValue.FALSE); | ||
345 | friendInterpretation.put(Tuple.of(2, 0), TruthValue.FALSE); | ||
346 | |||
347 | queryEngine.flushChanges(); | ||
348 | assertResults(Map.of(Tuple.of(), 0), minResultSet); | ||
349 | assertResults(Map.of(Tuple.of(), 1), maxResultSet); | ||
350 | } | ||
351 | |||
352 | @QueryEngineTest | ||
353 | void invalidComputationTest(QueryEvaluationHint hint) { | ||
354 | var query = Query.of("InvalidComputation", Integer.class, | ||
355 | (builder, p1, output) -> builder.clause(Integer.class, (x) -> List.of( | ||
356 | personView.call(p1), | ||
357 | ageView.call(p1, x), | ||
358 | output.assign(div(constant(120), x)) | ||
359 | ))); | ||
360 | |||
361 | var store = ModelStore.builder() | ||
362 | .symbols(person, age) | ||
363 | .with(ViatraModelQueryAdapter.builder() | ||
364 | .defaultHint(hint) | ||
365 | .queries(query)) | ||
366 | .build(); | ||
367 | |||
368 | var model = store.createEmptyModel(); | ||
369 | var personInterpretation = model.getInterpretation(person); | ||
370 | var ageInterpretation = model.getInterpretation(age); | ||
371 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
372 | var queryResultSet = queryEngine.getResultSet(query); | ||
373 | |||
374 | personInterpretation.put(Tuple.of(0), true); | ||
375 | personInterpretation.put(Tuple.of(1), true); | ||
376 | |||
377 | ageInterpretation.put(Tuple.of(0), 0); | ||
378 | ageInterpretation.put(Tuple.of(1), 30); | ||
379 | |||
380 | queryEngine.flushChanges(); | ||
381 | assertNullableResults(Map.of( | ||
382 | Tuple.of(0), Optional.empty(), | ||
383 | Tuple.of(1), Optional.of(4), | ||
384 | Tuple.of(2), Optional.empty() | ||
385 | ), queryResultSet); | ||
386 | } | ||
387 | |||
388 | @QueryEngineTest | ||
389 | void invalidAssumeTest(QueryEvaluationHint hint) { | ||
390 | var query = Query.of("InvalidAssume", (builder, p1) -> builder.clause(Integer.class, (x) -> List.of( | ||
391 | personView.call(p1), | ||
392 | ageView.call(p1, x), | ||
393 | assume(lessEq(div(constant(120), x), constant(5))) | ||
394 | ))); | ||
395 | |||
396 | var store = ModelStore.builder() | ||
397 | .symbols(person, age) | ||
398 | .with(ViatraModelQueryAdapter.builder() | ||
399 | .defaultHint(hint) | ||
400 | .queries(query)) | ||
401 | .build(); | ||
402 | |||
403 | var model = store.createEmptyModel(); | ||
404 | var personInterpretation = model.getInterpretation(person); | ||
405 | var ageInterpretation = model.getInterpretation(age); | ||
406 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
407 | var queryResultSet = queryEngine.getResultSet(query); | ||
408 | |||
409 | personInterpretation.put(Tuple.of(0), true); | ||
410 | personInterpretation.put(Tuple.of(1), true); | ||
411 | personInterpretation.put(Tuple.of(2), true); | ||
412 | |||
413 | ageInterpretation.put(Tuple.of(0), 0); | ||
414 | ageInterpretation.put(Tuple.of(1), 30); | ||
415 | ageInterpretation.put(Tuple.of(2), 20); | ||
416 | |||
417 | queryEngine.flushChanges(); | ||
418 | assertResults(Map.of( | ||
419 | Tuple.of(0), false, | ||
420 | Tuple.of(1), true, | ||
421 | Tuple.of(2), false, | ||
422 | Tuple.of(3), false | ||
423 | ), queryResultSet); | ||
424 | } | ||
425 | |||
426 | @QueryEngineTest | ||
427 | void notFunctionalTest(QueryEvaluationHint hint) { | ||
428 | var query = Query.of("NotFunctional", Integer.class, (builder, p1, output) -> builder.clause((p2) -> List.of( | ||
429 | personView.call(p1), | ||
430 | friendMustView.call(p1, p2), | ||
431 | ageView.call(p2, output) | ||
432 | ))); | ||
433 | |||
434 | var store = ModelStore.builder() | ||
435 | .symbols(person, age, friend) | ||
436 | .with(ViatraModelQueryAdapter.builder() | ||
437 | .defaultHint(hint) | ||
438 | .queries(query)) | ||
439 | .build(); | ||
440 | |||
441 | var model = store.createEmptyModel(); | ||
442 | var personInterpretation = model.getInterpretation(person); | ||
443 | var ageInterpretation = model.getInterpretation(age); | ||
444 | var friendInterpretation = model.getInterpretation(friend); | ||
445 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
446 | var queryResultSet = queryEngine.getResultSet(query); | ||
447 | |||
448 | personInterpretation.put(Tuple.of(0), true); | ||
449 | personInterpretation.put(Tuple.of(1), true); | ||
450 | personInterpretation.put(Tuple.of(2), true); | ||
451 | |||
452 | ageInterpretation.put(Tuple.of(0), 24); | ||
453 | ageInterpretation.put(Tuple.of(1), 30); | ||
454 | ageInterpretation.put(Tuple.of(2), 36); | ||
455 | |||
456 | friendInterpretation.put(Tuple.of(0, 1), TruthValue.TRUE); | ||
457 | friendInterpretation.put(Tuple.of(1, 0), TruthValue.TRUE); | ||
458 | friendInterpretation.put(Tuple.of(1, 2), TruthValue.TRUE); | ||
459 | |||
460 | queryEngine.flushChanges(); | ||
461 | var invalidTuple = Tuple.of(1); | ||
462 | var cursor = queryResultSet.getAll(); | ||
463 | assertAll( | ||
464 | () -> assertThat("value for key 0", queryResultSet.get(Tuple.of(0)), is(30)), | ||
465 | () -> assertThrows(IllegalStateException.class, () -> queryResultSet.get(invalidTuple), | ||
466 | "multiple values for key 1"), | ||
467 | () -> assertThat("value for key 2", queryResultSet.get(Tuple.of(2)), is(nullValue())), | ||
468 | () -> assertThat("value for key 3", queryResultSet.get(Tuple.of(3)), is(nullValue())) | ||
469 | ); | ||
470 | if (hint.getQueryBackendRequirementType() != QueryEvaluationHint.BackendRequirement.DEFAULT_SEARCH) { | ||
471 | // Local search doesn't support throwing an error on multiple function return values. | ||
472 | assertThat("results size", queryResultSet.size(), is(2)); | ||
473 | assertThrows(IllegalStateException.class, () -> enumerateValues(cursor), "move cursor"); | ||
474 | } | ||
475 | } | ||
476 | |||
477 | private static void enumerateValues(Cursor<?, ?> cursor) { | ||
478 | //noinspection StatementWithEmptyBody | ||
479 | while (cursor.move()) { | ||
480 | // Nothing do, just let the cursor move through the result set. | ||
481 | } | ||
482 | } | ||
483 | } | ||
diff --git a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/OrderedResultSetTest.java b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/OrderedResultSetTest.java new file mode 100644 index 00000000..8ede6c80 --- /dev/null +++ b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/OrderedResultSetTest.java | |||
@@ -0,0 +1,117 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra; | ||
7 | |||
8 | import org.junit.jupiter.api.Test; | ||
9 | import tools.refinery.store.model.ModelStore; | ||
10 | import tools.refinery.store.query.ModelQueryAdapter; | ||
11 | import tools.refinery.store.query.dnf.Query; | ||
12 | import tools.refinery.store.query.resultset.OrderedResultSet; | ||
13 | import tools.refinery.store.query.term.Variable; | ||
14 | import tools.refinery.store.query.view.AnySymbolView; | ||
15 | import tools.refinery.store.query.view.KeyOnlyView; | ||
16 | import tools.refinery.store.representation.Symbol; | ||
17 | import tools.refinery.store.tuple.Tuple; | ||
18 | |||
19 | import static org.hamcrest.MatcherAssert.assertThat; | ||
20 | import static org.hamcrest.Matchers.is; | ||
21 | |||
22 | class OrderedResultSetTest { | ||
23 | private static final Symbol<Boolean> friend = Symbol.of("friend", 2); | ||
24 | private static final AnySymbolView friendView = new KeyOnlyView<>(friend); | ||
25 | |||
26 | @Test | ||
27 | void relationalFlushTest() { | ||
28 | var query = Query.of("Relation", (builder, p1, p2) -> builder.clause( | ||
29 | friendView.call(p1, p2) | ||
30 | )); | ||
31 | |||
32 | var store = ModelStore.builder() | ||
33 | .symbols(friend) | ||
34 | .with(ViatraModelQueryAdapter.builder() | ||
35 | .queries(query)) | ||
36 | .build(); | ||
37 | |||
38 | var model = store.createEmptyModel(); | ||
39 | var friendInterpretation = model.getInterpretation(friend); | ||
40 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
41 | var resultSet = queryEngine.getResultSet(query); | ||
42 | |||
43 | friendInterpretation.put(Tuple.of(0, 1), true); | ||
44 | friendInterpretation.put(Tuple.of(1, 2), true); | ||
45 | friendInterpretation.put(Tuple.of(1, 1), true); | ||
46 | queryEngine.flushChanges(); | ||
47 | |||
48 | try (var orderedResultSet = new OrderedResultSet<>(resultSet)) { | ||
49 | assertThat(orderedResultSet.size(), is(3)); | ||
50 | assertThat(orderedResultSet.getKey(0), is(Tuple.of(0, 1))); | ||
51 | assertThat(orderedResultSet.getKey(1), is(Tuple.of(1, 1))); | ||
52 | assertThat(orderedResultSet.getKey(2), is(Tuple.of(1, 2))); | ||
53 | |||
54 | friendInterpretation.put(Tuple.of(1, 2), false); | ||
55 | friendInterpretation.put(Tuple.of(0, 2), true); | ||
56 | queryEngine.flushChanges(); | ||
57 | |||
58 | assertThat(orderedResultSet.size(), is(3)); | ||
59 | assertThat(orderedResultSet.getKey(0), is(Tuple.of(0, 1))); | ||
60 | assertThat(orderedResultSet.getKey(1), is(Tuple.of(0, 2))); | ||
61 | assertThat(orderedResultSet.getKey(2), is(Tuple.of(1, 1))); | ||
62 | } | ||
63 | } | ||
64 | |||
65 | @Test | ||
66 | void functionalFlushTest() { | ||
67 | var query = Query.of("Function", Integer.class, (builder, p1, output) -> builder.clause( | ||
68 | friendView.call(p1, Variable.of()), | ||
69 | output.assign(friendView.count(p1, Variable.of())) | ||
70 | )); | ||
71 | |||
72 | var store = ModelStore.builder() | ||
73 | .symbols(friend) | ||
74 | .with(ViatraModelQueryAdapter.builder() | ||
75 | .queries(query)) | ||
76 | .build(); | ||
77 | |||
78 | var model = store.createEmptyModel(); | ||
79 | var friendInterpretation = model.getInterpretation(friend); | ||
80 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
81 | var resultSet = queryEngine.getResultSet(query); | ||
82 | |||
83 | friendInterpretation.put(Tuple.of(0, 1), true); | ||
84 | friendInterpretation.put(Tuple.of(1, 2), true); | ||
85 | friendInterpretation.put(Tuple.of(1, 1), true); | ||
86 | queryEngine.flushChanges(); | ||
87 | |||
88 | try (var orderedResultSet = new OrderedResultSet<>(resultSet)) { | ||
89 | assertThat(orderedResultSet.size(), is(2)); | ||
90 | assertThat(orderedResultSet.getKey(0), is(Tuple.of(0))); | ||
91 | assertThat(orderedResultSet.getKey(1), is(Tuple.of(1))); | ||
92 | |||
93 | friendInterpretation.put(Tuple.of(0, 1), false); | ||
94 | friendInterpretation.put(Tuple.of(2, 1), true); | ||
95 | queryEngine.flushChanges(); | ||
96 | |||
97 | assertThat(orderedResultSet.size(), is(2)); | ||
98 | assertThat(orderedResultSet.getKey(0), is(Tuple.of(1))); | ||
99 | assertThat(orderedResultSet.getKey(1), is(Tuple.of(2))); | ||
100 | |||
101 | friendInterpretation.put(Tuple.of(1, 1), false); | ||
102 | queryEngine.flushChanges(); | ||
103 | |||
104 | assertThat(orderedResultSet.size(), is(2)); | ||
105 | assertThat(orderedResultSet.getKey(0), is(Tuple.of(1))); | ||
106 | assertThat(orderedResultSet.getKey(1), is(Tuple.of(2))); | ||
107 | |||
108 | friendInterpretation.put(Tuple.of(1, 2), false); | ||
109 | friendInterpretation.put(Tuple.of(1, 0), true); | ||
110 | queryEngine.flushChanges(); | ||
111 | |||
112 | assertThat(orderedResultSet.size(), is(2)); | ||
113 | assertThat(orderedResultSet.getKey(0), is(Tuple.of(1))); | ||
114 | assertThat(orderedResultSet.getKey(1), is(Tuple.of(2))); | ||
115 | } | ||
116 | } | ||
117 | } | ||
diff --git a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTest.java b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTest.java index 6a37b54a..25bcb0dc 100644 --- a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTest.java +++ b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTest.java | |||
@@ -1,47 +1,57 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.query.viatra; | 6 | package tools.refinery.store.query.viatra; |
2 | 7 | ||
8 | import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; | ||
3 | import org.junit.jupiter.api.Test; | 9 | import org.junit.jupiter.api.Test; |
4 | import tools.refinery.store.model.ModelStore; | 10 | import tools.refinery.store.model.ModelStore; |
5 | import tools.refinery.store.query.DNF; | 11 | import tools.refinery.store.query.ModelQueryAdapter; |
6 | import tools.refinery.store.query.ModelQuery; | 12 | import tools.refinery.store.query.dnf.Query; |
7 | import tools.refinery.store.query.Variable; | 13 | import tools.refinery.store.query.term.Variable; |
8 | import tools.refinery.store.query.atom.*; | 14 | import tools.refinery.store.query.viatra.tests.QueryEngineTest; |
9 | import tools.refinery.store.query.view.FilteredRelationView; | 15 | import tools.refinery.store.query.view.AnySymbolView; |
10 | import tools.refinery.store.query.view.KeyOnlyRelationView; | 16 | import tools.refinery.store.query.view.FilteredView; |
17 | import tools.refinery.store.query.view.FunctionView; | ||
18 | import tools.refinery.store.query.view.KeyOnlyView; | ||
11 | import tools.refinery.store.representation.Symbol; | 19 | import tools.refinery.store.representation.Symbol; |
12 | import tools.refinery.store.representation.TruthValue; | 20 | import tools.refinery.store.representation.TruthValue; |
13 | import tools.refinery.store.tuple.Tuple; | 21 | import tools.refinery.store.tuple.Tuple; |
14 | import tools.refinery.store.tuple.TupleLike; | ||
15 | 22 | ||
16 | import java.util.HashSet; | 23 | import java.util.List; |
17 | import java.util.Set; | 24 | import java.util.Map; |
18 | import java.util.stream.Stream; | ||
19 | 25 | ||
20 | import static org.junit.jupiter.api.Assertions.assertEquals; | 26 | import static tools.refinery.store.query.literal.Literals.assume; |
27 | import static tools.refinery.store.query.literal.Literals.not; | ||
28 | import static tools.refinery.store.query.term.int_.IntTerms.constant; | ||
29 | import static tools.refinery.store.query.term.int_.IntTerms.greaterEq; | ||
30 | import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertResults; | ||
21 | 31 | ||
22 | class QueryTest { | 32 | class QueryTest { |
23 | @Test | 33 | private static final Symbol<Boolean> person = Symbol.of("Person", 1); |
24 | void typeConstraintTest() { | 34 | private static final Symbol<TruthValue> friend = Symbol.of("friend", 2, TruthValue.class, TruthValue.FALSE); |
25 | var person = new Symbol<>("Person", 1, Boolean.class, false); | 35 | private static final AnySymbolView personView = new KeyOnlyView<>(person); |
26 | var asset = new Symbol<>("Asset", 1, Boolean.class, false); | 36 | private static final AnySymbolView friendMustView = new FilteredView<>(friend, "must", TruthValue::must); |
27 | var personView = new KeyOnlyRelationView<>(person); | 37 | |
28 | 38 | @QueryEngineTest | |
29 | var p1 = new Variable("p1"); | 39 | void typeConstraintTest(QueryEvaluationHint hint) { |
30 | var predicate = DNF.builder("TypeConstraint") | 40 | var asset = Symbol.of("Asset", 1); |
31 | .parameters(p1) | 41 | |
32 | .clause(new RelationViewAtom(personView, p1)) | 42 | var predicate = Query.of("TypeConstraint", (builder, p1) -> builder.clause(personView.call(p1))); |
33 | .build(); | ||
34 | 43 | ||
35 | var store = ModelStore.builder() | 44 | var store = ModelStore.builder() |
36 | .symbols(person, asset) | 45 | .symbols(person, asset) |
37 | .with(ViatraModelQuery.ADAPTER) | 46 | .with(ViatraModelQueryAdapter.builder() |
38 | .queries(predicate) | 47 | .defaultHint(hint) |
48 | .queries(predicate)) | ||
39 | .build(); | 49 | .build(); |
40 | 50 | ||
41 | var model = store.createEmptyModel(); | 51 | var model = store.createEmptyModel(); |
42 | var personInterpretation = model.getInterpretation(person); | 52 | var personInterpretation = model.getInterpretation(person); |
43 | var assetInterpretation = model.getInterpretation(asset); | 53 | var assetInterpretation = model.getInterpretation(asset); |
44 | var queryEngine = model.getAdapter(ModelQuery.ADAPTER); | 54 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); |
45 | var predicateResultSet = queryEngine.getResultSet(predicate); | 55 | var predicateResultSet = queryEngine.getResultSet(predicate); |
46 | 56 | ||
47 | personInterpretation.put(Tuple.of(0), true); | 57 | personInterpretation.put(Tuple.of(0), true); |
@@ -51,42 +61,34 @@ class QueryTest { | |||
51 | assetInterpretation.put(Tuple.of(2), true); | 61 | assetInterpretation.put(Tuple.of(2), true); |
52 | 62 | ||
53 | queryEngine.flushChanges(); | 63 | queryEngine.flushChanges(); |
54 | assertEquals(2, predicateResultSet.countResults()); | 64 | assertResults(Map.of( |
55 | compareMatchSets(predicateResultSet.allResults(), Set.of(Tuple.of(0), Tuple.of(1))); | 65 | Tuple.of(0), true, |
66 | Tuple.of(1), true, | ||
67 | Tuple.of(2), false | ||
68 | ), predicateResultSet); | ||
56 | } | 69 | } |
57 | 70 | ||
58 | @Test | 71 | @QueryEngineTest |
59 | void relationConstraintTest() { | 72 | void relationConstraintTest(QueryEvaluationHint hint) { |
60 | var person = new Symbol<>("Person", 1, Boolean.class, false); | 73 | var predicate = Query.of("RelationConstraint", (builder, p1, p2) -> builder.clause( |
61 | var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); | 74 | personView.call(p1), |
62 | var personView = new KeyOnlyRelationView<>(person); | 75 | personView.call(p2), |
63 | var friendMustView = new FilteredRelationView<>(friend, "must", TruthValue::must); | 76 | friendMustView.call(p1, p2) |
64 | 77 | )); | |
65 | var p1 = new Variable("p1"); | ||
66 | var p2 = new Variable("p2"); | ||
67 | var predicate = DNF.builder("RelationConstraint") | ||
68 | .parameters(p1, p2) | ||
69 | .clause( | ||
70 | new RelationViewAtom(personView, p1), | ||
71 | new RelationViewAtom(personView, p2), | ||
72 | new RelationViewAtom(friendMustView, p1, p2) | ||
73 | ) | ||
74 | .build(); | ||
75 | 78 | ||
76 | var store = ModelStore.builder() | 79 | var store = ModelStore.builder() |
77 | .symbols(person, friend) | 80 | .symbols(person, friend) |
78 | .with(ViatraModelQuery.ADAPTER) | 81 | .with(ViatraModelQueryAdapter.builder() |
79 | .queries(predicate) | 82 | .defaultHint(hint) |
83 | .queries(predicate)) | ||
80 | .build(); | 84 | .build(); |
81 | 85 | ||
82 | var model = store.createEmptyModel(); | 86 | var model = store.createEmptyModel(); |
83 | var personInterpretation = model.getInterpretation(person); | 87 | var personInterpretation = model.getInterpretation(person); |
84 | var friendInterpretation = model.getInterpretation(friend); | 88 | var friendInterpretation = model.getInterpretation(friend); |
85 | var queryEngine = model.getAdapter(ModelQuery.ADAPTER); | 89 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); |
86 | var predicateResultSet = queryEngine.getResultSet(predicate); | 90 | var predicateResultSet = queryEngine.getResultSet(predicate); |
87 | 91 | ||
88 | assertEquals(0, predicateResultSet.countResults()); | ||
89 | |||
90 | personInterpretation.put(Tuple.of(0), true); | 92 | personInterpretation.put(Tuple.of(0), true); |
91 | personInterpretation.put(Tuple.of(1), true); | 93 | personInterpretation.put(Tuple.of(1), true); |
92 | personInterpretation.put(Tuple.of(2), true); | 94 | personInterpretation.put(Tuple.of(2), true); |
@@ -94,97 +96,36 @@ class QueryTest { | |||
94 | friendInterpretation.put(Tuple.of(0, 1), TruthValue.TRUE); | 96 | friendInterpretation.put(Tuple.of(0, 1), TruthValue.TRUE); |
95 | friendInterpretation.put(Tuple.of(1, 0), TruthValue.TRUE); | 97 | friendInterpretation.put(Tuple.of(1, 0), TruthValue.TRUE); |
96 | friendInterpretation.put(Tuple.of(1, 2), TruthValue.TRUE); | 98 | friendInterpretation.put(Tuple.of(1, 2), TruthValue.TRUE); |
97 | 99 | friendInterpretation.put(Tuple.of(1, 3), TruthValue.TRUE); | |
98 | assertEquals(0, predicateResultSet.countResults()); | ||
99 | 100 | ||
100 | queryEngine.flushChanges(); | 101 | queryEngine.flushChanges(); |
101 | assertEquals(3, predicateResultSet.countResults()); | 102 | assertResults(Map.of( |
102 | compareMatchSets(predicateResultSet.allResults(), Set.of(Tuple.of(0, 1), Tuple.of(1, 0), Tuple.of(1, 2))); | 103 | Tuple.of(0, 1), true, |
104 | Tuple.of(1, 0), true, | ||
105 | Tuple.of(1, 2), true, | ||
106 | Tuple.of(2, 1), false | ||
107 | ), predicateResultSet); | ||
103 | } | 108 | } |
104 | 109 | ||
105 | @Test | 110 | @QueryEngineTest |
106 | void andTest() { | 111 | void existTest(QueryEvaluationHint hint) { |
107 | var person = new Symbol<>("Person", 1, Boolean.class, false); | 112 | var predicate = Query.of("Exists", (builder, p1) -> builder.clause((p2) -> List.of( |
108 | var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); | 113 | personView.call(p1), |
109 | var personView = new KeyOnlyRelationView<>(person); | 114 | personView.call(p2), |
110 | var friendMustView = new FilteredRelationView<>(friend, "must", TruthValue::must); | 115 | friendMustView.call(p1, p2) |
111 | 116 | ))); | |
112 | var p1 = new Variable("p1"); | ||
113 | var p2 = new Variable("p2"); | ||
114 | var predicate = DNF.builder("RelationConstraint") | ||
115 | .parameters(p1, p2) | ||
116 | .clause( | ||
117 | new RelationViewAtom(personView, p1), | ||
118 | new RelationViewAtom(personView, p2), | ||
119 | new RelationViewAtom(friendMustView, p1, p2), | ||
120 | new RelationViewAtom(friendMustView, p2, p1) | ||
121 | ) | ||
122 | .build(); | ||
123 | 117 | ||
124 | var store = ModelStore.builder() | 118 | var store = ModelStore.builder() |
125 | .symbols(person, friend) | 119 | .symbols(person, friend) |
126 | .with(ViatraModelQuery.ADAPTER) | 120 | .with(ViatraModelQueryAdapter.builder() |
127 | .queries(predicate) | 121 | .defaultHint(hint) |
122 | .queries(predicate)) | ||
128 | .build(); | 123 | .build(); |
129 | 124 | ||
130 | var model = store.createEmptyModel(); | 125 | var model = store.createEmptyModel(); |
131 | var personInterpretation = model.getInterpretation(person); | 126 | var personInterpretation = model.getInterpretation(person); |
132 | var friendInterpretation = model.getInterpretation(friend); | 127 | var friendInterpretation = model.getInterpretation(friend); |
133 | var queryEngine = model.getAdapter(ModelQuery.ADAPTER); | 128 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); |
134 | var predicateResultSet = queryEngine.getResultSet(predicate); | ||
135 | |||
136 | assertEquals(0, predicateResultSet.countResults()); | ||
137 | |||
138 | personInterpretation.put(Tuple.of(0), true); | ||
139 | personInterpretation.put(Tuple.of(1), true); | ||
140 | personInterpretation.put(Tuple.of(2), true); | ||
141 | |||
142 | friendInterpretation.put(Tuple.of(0, 1), TruthValue.TRUE); | ||
143 | friendInterpretation.put(Tuple.of(0, 2), TruthValue.TRUE); | ||
144 | |||
145 | queryEngine.flushChanges(); | ||
146 | assertEquals(0, predicateResultSet.countResults()); | ||
147 | |||
148 | friendInterpretation.put(Tuple.of(1, 0), TruthValue.TRUE); | ||
149 | queryEngine.flushChanges(); | ||
150 | assertEquals(2, predicateResultSet.countResults()); | ||
151 | compareMatchSets(predicateResultSet.allResults(), Set.of(Tuple.of(0, 1), Tuple.of(1, 0))); | ||
152 | |||
153 | friendInterpretation.put(Tuple.of(2, 0), TruthValue.TRUE); | ||
154 | queryEngine.flushChanges(); | ||
155 | assertEquals(4, predicateResultSet.countResults()); | ||
156 | compareMatchSets(predicateResultSet.allResults(), Set.of(Tuple.of(0, 1), Tuple.of(1, 0), Tuple.of(0, 2), | ||
157 | Tuple.of(2, 0))); | ||
158 | } | ||
159 | |||
160 | @Test | ||
161 | void existTest() { | ||
162 | var person = new Symbol<>("Person", 1, Boolean.class, false); | ||
163 | var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); | ||
164 | var personView = new KeyOnlyRelationView<>(person); | ||
165 | var friendMustView = new FilteredRelationView<>(friend, "must", TruthValue::must); | ||
166 | |||
167 | var p1 = new Variable("p1"); | ||
168 | var p2 = new Variable("p2"); | ||
169 | var predicate = DNF.builder("RelationConstraint") | ||
170 | .parameters(p1) | ||
171 | .clause( | ||
172 | new RelationViewAtom(personView, p1), | ||
173 | new RelationViewAtom(personView, p2), | ||
174 | new RelationViewAtom(friendMustView, p1, p2) | ||
175 | ) | ||
176 | .build(); | ||
177 | |||
178 | var store = ModelStore.builder() | ||
179 | .symbols(person, friend) | ||
180 | .with(ViatraModelQuery.ADAPTER) | ||
181 | .queries(predicate) | ||
182 | .build(); | ||
183 | |||
184 | var model = store.createEmptyModel(); | ||
185 | var personInterpretation = model.getInterpretation(person); | ||
186 | var friendInterpretation = model.getInterpretation(friend); | ||
187 | var queryEngine = model.getAdapter(ModelQuery.ADAPTER); | ||
188 | var predicateResultSet = queryEngine.getResultSet(predicate); | 129 | var predicateResultSet = queryEngine.getResultSet(predicate); |
189 | 130 | ||
190 | personInterpretation.put(Tuple.of(0), true); | 131 | personInterpretation.put(Tuple.of(0), true); |
@@ -194,50 +135,44 @@ class QueryTest { | |||
194 | friendInterpretation.put(Tuple.of(0, 1), TruthValue.TRUE); | 135 | friendInterpretation.put(Tuple.of(0, 1), TruthValue.TRUE); |
195 | friendInterpretation.put(Tuple.of(1, 0), TruthValue.TRUE); | 136 | friendInterpretation.put(Tuple.of(1, 0), TruthValue.TRUE); |
196 | friendInterpretation.put(Tuple.of(1, 2), TruthValue.TRUE); | 137 | friendInterpretation.put(Tuple.of(1, 2), TruthValue.TRUE); |
197 | 138 | friendInterpretation.put(Tuple.of(3, 2), TruthValue.TRUE); | |
198 | assertEquals(0, predicateResultSet.countResults()); | ||
199 | 139 | ||
200 | queryEngine.flushChanges(); | 140 | queryEngine.flushChanges(); |
201 | assertEquals(2, predicateResultSet.countResults()); | 141 | assertResults(Map.of( |
202 | compareMatchSets(predicateResultSet.allResults(), Set.of(Tuple.of(0), Tuple.of(1))); | 142 | Tuple.of(0), true, |
143 | Tuple.of(1), true, | ||
144 | Tuple.of(2), false, | ||
145 | Tuple.of(3), false | ||
146 | ), predicateResultSet); | ||
203 | } | 147 | } |
204 | 148 | ||
205 | @Test | 149 | @QueryEngineTest |
206 | void orTest() { | 150 | void orTest(QueryEvaluationHint hint) { |
207 | var person = new Symbol<>("Person", 1, Boolean.class, false); | 151 | var animal = Symbol.of("Animal", 1); |
208 | var animal = new Symbol<>("Animal", 1, Boolean.class, false); | 152 | var animalView = new KeyOnlyView<>(animal); |
209 | var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); | 153 | |
210 | var personView = new KeyOnlyRelationView<>(person); | 154 | var predicate = Query.of("Or", (builder, p1, p2) -> builder.clause( |
211 | var animalView = new KeyOnlyRelationView<>(animal); | 155 | personView.call(p1), |
212 | var friendMustView = new FilteredRelationView<>(friend, "must", TruthValue::must); | 156 | personView.call(p2), |
213 | 157 | friendMustView.call(p1, p2) | |
214 | var p1 = new Variable("p1"); | 158 | ).clause( |
215 | var p2 = new Variable("p2"); | 159 | animalView.call(p1), |
216 | var predicate = DNF.builder("Or") | 160 | animalView.call(p2), |
217 | .parameters(p1, p2) | 161 | friendMustView.call(p1, p2) |
218 | .clause( | 162 | )); |
219 | new RelationViewAtom(personView, p1), | ||
220 | new RelationViewAtom(personView, p2), | ||
221 | new RelationViewAtom(friendMustView, p1, p2) | ||
222 | ) | ||
223 | .clause( | ||
224 | new RelationViewAtom(animalView, p1), | ||
225 | new RelationViewAtom(animalView, p2), | ||
226 | new RelationViewAtom(friendMustView, p1, p2) | ||
227 | ) | ||
228 | .build(); | ||
229 | 163 | ||
230 | var store = ModelStore.builder() | 164 | var store = ModelStore.builder() |
231 | .symbols(person, animal, friend) | 165 | .symbols(person, animal, friend) |
232 | .with(ViatraModelQuery.ADAPTER) | 166 | .with(ViatraModelQueryAdapter.builder() |
233 | .queries(predicate) | 167 | .defaultHint(hint) |
168 | .queries(predicate)) | ||
234 | .build(); | 169 | .build(); |
235 | 170 | ||
236 | var model = store.createEmptyModel(); | 171 | var model = store.createEmptyModel(); |
237 | var personInterpretation = model.getInterpretation(person); | 172 | var personInterpretation = model.getInterpretation(person); |
238 | var animalInterpretation = model.getInterpretation(animal); | 173 | var animalInterpretation = model.getInterpretation(animal); |
239 | var friendInterpretation = model.getInterpretation(friend); | 174 | var friendInterpretation = model.getInterpretation(friend); |
240 | var queryEngine = model.getAdapter(ModelQuery.ADAPTER); | 175 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); |
241 | var predicateResultSet = queryEngine.getResultSet(predicate); | 176 | var predicateResultSet = queryEngine.getResultSet(predicate); |
242 | 177 | ||
243 | personInterpretation.put(Tuple.of(0), true); | 178 | personInterpretation.put(Tuple.of(0), true); |
@@ -252,35 +187,33 @@ class QueryTest { | |||
252 | friendInterpretation.put(Tuple.of(3, 0), TruthValue.TRUE); | 187 | friendInterpretation.put(Tuple.of(3, 0), TruthValue.TRUE); |
253 | 188 | ||
254 | queryEngine.flushChanges(); | 189 | queryEngine.flushChanges(); |
255 | assertEquals(2, predicateResultSet.countResults()); | 190 | assertResults(Map.of( |
256 | compareMatchSets(predicateResultSet.allResults(), Set.of(Tuple.of(0, 1), Tuple.of(2, 3))); | 191 | Tuple.of(0, 1), true, |
192 | Tuple.of(0, 2), false, | ||
193 | Tuple.of(2, 3), true, | ||
194 | Tuple.of(3, 0), false, | ||
195 | Tuple.of(3, 2), false | ||
196 | ), predicateResultSet); | ||
257 | } | 197 | } |
258 | 198 | ||
259 | @Test | 199 | @QueryEngineTest |
260 | void equalityTest() { | 200 | void equalityTest(QueryEvaluationHint hint) { |
261 | var person = new Symbol<>("Person", 1, Boolean.class, false); | 201 | var predicate = Query.of("Equality", (builder, p1, p2) -> builder.clause( |
262 | var personView = new KeyOnlyRelationView<>(person); | 202 | personView.call(p1), |
263 | 203 | personView.call(p2), | |
264 | var p1 = new Variable("p1"); | 204 | p1.isEquivalent(p2) |
265 | var p2 = new Variable("p2"); | 205 | )); |
266 | var predicate = DNF.builder("Equality") | ||
267 | .parameters(p1, p2) | ||
268 | .clause( | ||
269 | new RelationViewAtom(personView, p1), | ||
270 | new RelationViewAtom(personView, p2), | ||
271 | new EquivalenceAtom(p1, p2) | ||
272 | ) | ||
273 | .build(); | ||
274 | 206 | ||
275 | var store = ModelStore.builder() | 207 | var store = ModelStore.builder() |
276 | .symbols(person) | 208 | .symbols(person) |
277 | .with(ViatraModelQuery.ADAPTER) | 209 | .with(ViatraModelQueryAdapter.builder() |
278 | .queries(predicate) | 210 | .defaultHint(hint) |
211 | .queries(predicate)) | ||
279 | .build(); | 212 | .build(); |
280 | 213 | ||
281 | var model = store.createEmptyModel(); | 214 | var model = store.createEmptyModel(); |
282 | var personInterpretation = model.getInterpretation(person); | 215 | var personInterpretation = model.getInterpretation(person); |
283 | var queryEngine = model.getAdapter(ModelQuery.ADAPTER); | 216 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); |
284 | var predicateResultSet = queryEngine.getResultSet(predicate); | 217 | var predicateResultSet = queryEngine.getResultSet(predicate); |
285 | 218 | ||
286 | personInterpretation.put(Tuple.of(0), true); | 219 | personInterpretation.put(Tuple.of(0), true); |
@@ -288,41 +221,36 @@ class QueryTest { | |||
288 | personInterpretation.put(Tuple.of(2), true); | 221 | personInterpretation.put(Tuple.of(2), true); |
289 | 222 | ||
290 | queryEngine.flushChanges(); | 223 | queryEngine.flushChanges(); |
291 | assertEquals(3, predicateResultSet.countResults()); | 224 | assertResults(Map.of( |
292 | compareMatchSets(predicateResultSet.allResults(), Set.of(Tuple.of(0, 0), Tuple.of(1, 1), Tuple.of(2, 2))); | 225 | Tuple.of(0, 0), true, |
226 | Tuple.of(1, 1), true, | ||
227 | Tuple.of(2, 2), true, | ||
228 | Tuple.of(0, 1), false, | ||
229 | Tuple.of(3, 3), false | ||
230 | ), predicateResultSet); | ||
293 | } | 231 | } |
294 | 232 | ||
295 | @Test | 233 | @QueryEngineTest |
296 | void inequalityTest() { | 234 | void inequalityTest(QueryEvaluationHint hint) { |
297 | var person = new Symbol<>("Person", 1, Boolean.class, false); | 235 | var predicate = Query.of("Inequality", (builder, p1, p2, p3) -> builder.clause( |
298 | var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); | 236 | personView.call(p1), |
299 | var personView = new KeyOnlyRelationView<>(person); | 237 | personView.call(p2), |
300 | var friendMustView = new FilteredRelationView<>(friend, "must", TruthValue::must); | 238 | friendMustView.call(p1, p3), |
301 | 239 | friendMustView.call(p2, p3), | |
302 | var p1 = new Variable("p1"); | 240 | p1.notEquivalent(p2) |
303 | var p2 = new Variable("p2"); | 241 | )); |
304 | var p3 = new Variable("p3"); | ||
305 | var predicate = DNF.builder("Inequality") | ||
306 | .parameters(p1, p2, p3) | ||
307 | .clause( | ||
308 | new RelationViewAtom(personView, p1), | ||
309 | new RelationViewAtom(personView, p2), | ||
310 | new RelationViewAtom(friendMustView, p1, p3), | ||
311 | new RelationViewAtom(friendMustView, p2, p3), | ||
312 | new EquivalenceAtom(false, p1, p2) | ||
313 | ) | ||
314 | .build(); | ||
315 | 242 | ||
316 | var store = ModelStore.builder() | 243 | var store = ModelStore.builder() |
317 | .symbols(person, friend) | 244 | .symbols(person, friend) |
318 | .with(ViatraModelQuery.ADAPTER) | 245 | .with(ViatraModelQueryAdapter.builder() |
319 | .queries(predicate) | 246 | .defaultHint(hint) |
247 | .queries(predicate)) | ||
320 | .build(); | 248 | .build(); |
321 | 249 | ||
322 | var model = store.createEmptyModel(); | 250 | var model = store.createEmptyModel(); |
323 | var personInterpretation = model.getInterpretation(person); | 251 | var personInterpretation = model.getInterpretation(person); |
324 | var friendInterpretation = model.getInterpretation(friend); | 252 | var friendInterpretation = model.getInterpretation(friend); |
325 | var queryEngine = model.getAdapter(ModelQuery.ADAPTER); | 253 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); |
326 | var predicateResultSet = queryEngine.getResultSet(predicate); | 254 | var predicateResultSet = queryEngine.getResultSet(predicate); |
327 | 255 | ||
328 | personInterpretation.put(Tuple.of(0), true); | 256 | personInterpretation.put(Tuple.of(0), true); |
@@ -333,49 +261,37 @@ class QueryTest { | |||
333 | friendInterpretation.put(Tuple.of(1, 2), TruthValue.TRUE); | 261 | friendInterpretation.put(Tuple.of(1, 2), TruthValue.TRUE); |
334 | 262 | ||
335 | queryEngine.flushChanges(); | 263 | queryEngine.flushChanges(); |
336 | assertEquals(2, predicateResultSet.countResults()); | 264 | assertResults(Map.of( |
337 | compareMatchSets(predicateResultSet.allResults(), Set.of(Tuple.of(0, 1, 2), Tuple.of(1, 0, 2))); | 265 | Tuple.of(0, 1, 2), true, |
266 | Tuple.of(1, 0, 2), true, | ||
267 | Tuple.of(0, 0, 2), false | ||
268 | ), predicateResultSet); | ||
338 | } | 269 | } |
339 | 270 | ||
340 | @Test | 271 | @QueryEngineTest |
341 | void patternCallTest() { | 272 | void patternCallTest(QueryEvaluationHint hint) { |
342 | var person = new Symbol<>("Person", 1, Boolean.class, false); | 273 | var friendPredicate = Query.of("Friend", (builder, p1, p2) -> builder.clause( |
343 | var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); | 274 | personView.call(p1), |
344 | var personView = new KeyOnlyRelationView<>(person); | 275 | personView.call(p2), |
345 | var friendMustView = new FilteredRelationView<>(friend, "must", TruthValue::must); | 276 | friendMustView.call(p1, p2) |
346 | 277 | )); | |
347 | var p1 = new Variable("p1"); | 278 | var predicate = Query.of("PositivePatternCall", (builder, p3, p4) -> builder.clause( |
348 | var p2 = new Variable("p2"); | 279 | personView.call(p3), |
349 | var friendPredicate = DNF.builder("RelationConstraint") | 280 | personView.call(p4), |
350 | .parameters(p1, p2) | 281 | friendPredicate.call(p3, p4) |
351 | .clause( | 282 | )); |
352 | new RelationViewAtom(personView, p1), | ||
353 | new RelationViewAtom(personView, p2), | ||
354 | new RelationViewAtom(friendMustView, p1, p2) | ||
355 | ) | ||
356 | .build(); | ||
357 | |||
358 | var p3 = new Variable("p3"); | ||
359 | var p4 = new Variable("p4"); | ||
360 | var predicate = DNF.builder("PositivePatternCall") | ||
361 | .parameters(p3, p4) | ||
362 | .clause( | ||
363 | new RelationViewAtom(personView, p3), | ||
364 | new RelationViewAtom(personView, p4), | ||
365 | new DNFCallAtom(friendPredicate, p3, p4) | ||
366 | ) | ||
367 | .build(); | ||
368 | 283 | ||
369 | var store = ModelStore.builder() | 284 | var store = ModelStore.builder() |
370 | .symbols(person, friend) | 285 | .symbols(person, friend) |
371 | .with(ViatraModelQuery.ADAPTER) | 286 | .with(ViatraModelQueryAdapter.builder() |
372 | .queries(predicate) | 287 | .defaultHint(hint) |
288 | .queries(predicate)) | ||
373 | .build(); | 289 | .build(); |
374 | 290 | ||
375 | var model = store.createEmptyModel(); | 291 | var model = store.createEmptyModel(); |
376 | var personInterpretation = model.getInterpretation(person); | 292 | var personInterpretation = model.getInterpretation(person); |
377 | var friendInterpretation = model.getInterpretation(friend); | 293 | var friendInterpretation = model.getInterpretation(friend); |
378 | var queryEngine = model.getAdapter(ModelQuery.ADAPTER); | 294 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); |
379 | var predicateResultSet = queryEngine.getResultSet(predicate); | 295 | var predicateResultSet = queryEngine.getResultSet(predicate); |
380 | 296 | ||
381 | personInterpretation.put(Tuple.of(0), true); | 297 | personInterpretation.put(Tuple.of(0), true); |
@@ -387,37 +303,33 @@ class QueryTest { | |||
387 | friendInterpretation.put(Tuple.of(1, 2), TruthValue.TRUE); | 303 | friendInterpretation.put(Tuple.of(1, 2), TruthValue.TRUE); |
388 | 304 | ||
389 | queryEngine.flushChanges(); | 305 | queryEngine.flushChanges(); |
390 | assertEquals(3, predicateResultSet.countResults()); | 306 | assertResults(Map.of( |
307 | Tuple.of(0, 1), true, | ||
308 | Tuple.of(1, 0), true, | ||
309 | Tuple.of(1, 2), true, | ||
310 | Tuple.of(2, 1), false | ||
311 | ), predicateResultSet); | ||
391 | } | 312 | } |
392 | 313 | ||
393 | @Test | 314 | @QueryEngineTest |
394 | void negativeRelationViewTest() { | 315 | void negativeRelationViewTest(QueryEvaluationHint hint) { |
395 | var person = new Symbol<>("Person", 1, Boolean.class, false); | 316 | var predicate = Query.of("NegativePatternCall", (builder, p1, p2) -> builder.clause( |
396 | var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); | 317 | personView.call(p1), |
397 | var personView = new KeyOnlyRelationView<>(person); | 318 | personView.call(p2), |
398 | var friendMustView = new FilteredRelationView<>(friend, "must", TruthValue::must); | 319 | not(friendMustView.call(p1, p2)) |
399 | 320 | )); | |
400 | var p1 = new Variable("p1"); | ||
401 | var p2 = new Variable("p2"); | ||
402 | var predicate = DNF.builder("NegativePatternCall") | ||
403 | .parameters(p1, p2) | ||
404 | .clause( | ||
405 | new RelationViewAtom(personView, p1), | ||
406 | new RelationViewAtom(personView, p2), | ||
407 | new RelationViewAtom(false, friendMustView, p1, p2) | ||
408 | ) | ||
409 | .build(); | ||
410 | 321 | ||
411 | var store = ModelStore.builder() | 322 | var store = ModelStore.builder() |
412 | .symbols(person, friend) | 323 | .symbols(person, friend) |
413 | .with(ViatraModelQuery.ADAPTER) | 324 | .with(ViatraModelQueryAdapter.builder() |
414 | .queries(predicate) | 325 | .defaultHint(hint) |
326 | .queries(predicate)) | ||
415 | .build(); | 327 | .build(); |
416 | 328 | ||
417 | var model = store.createEmptyModel(); | 329 | var model = store.createEmptyModel(); |
418 | var personInterpretation = model.getInterpretation(person); | 330 | var personInterpretation = model.getInterpretation(person); |
419 | var friendInterpretation = model.getInterpretation(friend); | 331 | var friendInterpretation = model.getInterpretation(friend); |
420 | var queryEngine = model.getAdapter(ModelQuery.ADAPTER); | 332 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); |
421 | var predicateResultSet = queryEngine.getResultSet(predicate); | 333 | var predicateResultSet = queryEngine.getResultSet(predicate); |
422 | 334 | ||
423 | personInterpretation.put(Tuple.of(0), true); | 335 | personInterpretation.put(Tuple.of(0), true); |
@@ -429,48 +341,44 @@ class QueryTest { | |||
429 | friendInterpretation.put(Tuple.of(1, 2), TruthValue.TRUE); | 341 | friendInterpretation.put(Tuple.of(1, 2), TruthValue.TRUE); |
430 | 342 | ||
431 | queryEngine.flushChanges(); | 343 | queryEngine.flushChanges(); |
432 | assertEquals(6, predicateResultSet.countResults()); | 344 | assertResults(Map.of( |
345 | Tuple.of(0, 0), true, | ||
346 | Tuple.of(0, 2), true, | ||
347 | Tuple.of(1, 1), true, | ||
348 | Tuple.of(2, 0), true, | ||
349 | Tuple.of(2, 1), true, | ||
350 | Tuple.of(2, 2), true, | ||
351 | Tuple.of(0, 1), false, | ||
352 | Tuple.of(1, 0), false, | ||
353 | Tuple.of(1, 2), false, | ||
354 | Tuple.of(0, 3), false | ||
355 | ), predicateResultSet); | ||
433 | } | 356 | } |
434 | 357 | ||
435 | @Test | 358 | @QueryEngineTest |
436 | void negativePatternCallTest() { | 359 | void negativePatternCallTest(QueryEvaluationHint hint) { |
437 | var person = new Symbol<>("Person", 1, Boolean.class, false); | 360 | var friendPredicate = Query.of("Friend", (builder, p1, p2) -> builder.clause( |
438 | var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); | 361 | personView.call(p1), |
439 | var personView = new KeyOnlyRelationView<>(person); | 362 | personView.call(p2), |
440 | var friendMustView = new FilteredRelationView<>(friend, "must", TruthValue::must); | 363 | friendMustView.call(p1, p2) |
441 | 364 | )); | |
442 | var p1 = new Variable("p1"); | 365 | var predicate = Query.of("NegativePatternCall", (builder, p3, p4) -> builder.clause( |
443 | var p2 = new Variable("p2"); | 366 | personView.call(p3), |
444 | var friendPredicate = DNF.builder("RelationConstraint") | 367 | personView.call(p4), |
445 | .parameters(p1, p2) | 368 | not(friendPredicate.call(p3, p4)) |
446 | .clause( | 369 | )); |
447 | new RelationViewAtom(personView, p1), | ||
448 | new RelationViewAtom(personView, p2), | ||
449 | new RelationViewAtom(friendMustView, p1, p2) | ||
450 | ) | ||
451 | .build(); | ||
452 | |||
453 | var p3 = new Variable("p3"); | ||
454 | var p4 = new Variable("p4"); | ||
455 | var predicate = DNF.builder("NegativePatternCall") | ||
456 | .parameters(p3, p4) | ||
457 | .clause( | ||
458 | new RelationViewAtom(personView, p3), | ||
459 | new RelationViewAtom(personView, p4), | ||
460 | new DNFCallAtom(false, friendPredicate, p3, p4) | ||
461 | ) | ||
462 | .build(); | ||
463 | 370 | ||
464 | var store = ModelStore.builder() | 371 | var store = ModelStore.builder() |
465 | .symbols(person, friend) | 372 | .symbols(person, friend) |
466 | .with(ViatraModelQuery.ADAPTER) | 373 | .with(ViatraModelQueryAdapter.builder() |
467 | .queries(predicate) | 374 | .defaultHint(hint) |
375 | .queries(predicate)) | ||
468 | .build(); | 376 | .build(); |
469 | 377 | ||
470 | var model = store.createEmptyModel(); | 378 | var model = store.createEmptyModel(); |
471 | var personInterpretation = model.getInterpretation(person); | 379 | var personInterpretation = model.getInterpretation(person); |
472 | var friendInterpretation = model.getInterpretation(friend); | 380 | var friendInterpretation = model.getInterpretation(friend); |
473 | var queryEngine = model.getAdapter(ModelQuery.ADAPTER); | 381 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); |
474 | var predicateResultSet = queryEngine.getResultSet(predicate); | 382 | var predicateResultSet = queryEngine.getResultSet(predicate); |
475 | 383 | ||
476 | personInterpretation.put(Tuple.of(0), true); | 384 | personInterpretation.put(Tuple.of(0), true); |
@@ -482,37 +390,38 @@ class QueryTest { | |||
482 | friendInterpretation.put(Tuple.of(1, 2), TruthValue.TRUE); | 390 | friendInterpretation.put(Tuple.of(1, 2), TruthValue.TRUE); |
483 | 391 | ||
484 | queryEngine.flushChanges(); | 392 | queryEngine.flushChanges(); |
485 | assertEquals(6, predicateResultSet.countResults()); | 393 | assertResults(Map.of( |
394 | Tuple.of(0, 0), true, | ||
395 | Tuple.of(0, 2), true, | ||
396 | Tuple.of(1, 1), true, | ||
397 | Tuple.of(2, 0), true, | ||
398 | Tuple.of(2, 1), true, | ||
399 | Tuple.of(2, 2), true, | ||
400 | Tuple.of(0, 1), false, | ||
401 | Tuple.of(1, 0), false, | ||
402 | Tuple.of(1, 2), false, | ||
403 | Tuple.of(0, 3), false | ||
404 | ), predicateResultSet); | ||
486 | } | 405 | } |
487 | 406 | ||
488 | @Test | 407 | @QueryEngineTest |
489 | void negativeRelationViewWithQuantificationTest() { | 408 | void negativeRelationViewWithQuantificationTest(QueryEvaluationHint hint) { |
490 | var person = new Symbol<>("Person", 1, Boolean.class, false); | 409 | var predicate = Query.of("Negative", (builder, p1) -> builder.clause( |
491 | var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); | 410 | personView.call(p1), |
492 | var personView = new KeyOnlyRelationView<>(person); | 411 | not(friendMustView.call(p1, Variable.of())) |
493 | var friendMustView = new FilteredRelationView<>(friend, "must", TruthValue::must); | 412 | )); |
494 | |||
495 | var p1 = new Variable("p1"); | ||
496 | var p2 = new Variable("p2"); | ||
497 | |||
498 | var predicate = DNF.builder("Count") | ||
499 | .parameters(p1) | ||
500 | .clause( | ||
501 | new RelationViewAtom(personView, p1), | ||
502 | new RelationViewAtom(false, friendMustView, p1, p2) | ||
503 | ) | ||
504 | .build(); | ||
505 | 413 | ||
506 | var store = ModelStore.builder() | 414 | var store = ModelStore.builder() |
507 | .symbols(person, friend) | 415 | .symbols(person, friend) |
508 | .with(ViatraModelQuery.ADAPTER) | 416 | .with(ViatraModelQueryAdapter.builder() |
509 | .queries(predicate) | 417 | .defaultHint(hint) |
418 | .queries(predicate)) | ||
510 | .build(); | 419 | .build(); |
511 | 420 | ||
512 | var model = store.createEmptyModel(); | 421 | var model = store.createEmptyModel(); |
513 | var personInterpretation = model.getInterpretation(person); | 422 | var personInterpretation = model.getInterpretation(person); |
514 | var friendInterpretation = model.getInterpretation(friend); | 423 | var friendInterpretation = model.getInterpretation(friend); |
515 | var queryEngine = model.getAdapter(ModelQuery.ADAPTER); | 424 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); |
516 | var predicateResultSet = queryEngine.getResultSet(predicate); | 425 | var predicateResultSet = queryEngine.getResultSet(predicate); |
517 | 426 | ||
518 | personInterpretation.put(Tuple.of(0), true); | 427 | personInterpretation.put(Tuple.of(0), true); |
@@ -523,46 +432,37 @@ class QueryTest { | |||
523 | friendInterpretation.put(Tuple.of(0, 2), TruthValue.TRUE); | 432 | friendInterpretation.put(Tuple.of(0, 2), TruthValue.TRUE); |
524 | 433 | ||
525 | queryEngine.flushChanges(); | 434 | queryEngine.flushChanges(); |
526 | assertEquals(2, predicateResultSet.countResults()); | 435 | assertResults(Map.of( |
436 | Tuple.of(0), false, | ||
437 | Tuple.of(1), true, | ||
438 | Tuple.of(2), true, | ||
439 | Tuple.of(3), false | ||
440 | ), predicateResultSet); | ||
527 | } | 441 | } |
528 | 442 | ||
529 | @Test | 443 | @QueryEngineTest |
530 | void negativeWithQuantificationTest() { | 444 | void negativeWithQuantificationTest(QueryEvaluationHint hint) { |
531 | var person = new Symbol<>("Person", 1, Boolean.class, false); | 445 | var called = Query.of("Called", (builder, p1, p2) -> builder.clause( |
532 | var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); | 446 | personView.call(p1), |
533 | var personView = new KeyOnlyRelationView<>(person); | 447 | personView.call(p2), |
534 | var friendMustView = new FilteredRelationView<>(friend, "must", TruthValue::must); | 448 | friendMustView.call(p1, p2) |
535 | 449 | )); | |
536 | var p1 = new Variable("p1"); | 450 | var predicate = Query.of("Negative", (builder, p1) -> builder.clause( |
537 | var p2 = new Variable("p2"); | 451 | personView.call(p1), |
538 | 452 | not(called.call(p1, Variable.of())) | |
539 | var called = DNF.builder("Called") | 453 | )); |
540 | .parameters(p1, p2) | ||
541 | .clause( | ||
542 | new RelationViewAtom(personView, p1), | ||
543 | new RelationViewAtom(personView, p2), | ||
544 | new RelationViewAtom(friendMustView, p1, p2) | ||
545 | ) | ||
546 | .build(); | ||
547 | |||
548 | var predicate = DNF.builder("Count") | ||
549 | .parameters(p1) | ||
550 | .clause( | ||
551 | new RelationViewAtom(personView, p1), | ||
552 | new DNFCallAtom(false, called, p1, p2) | ||
553 | ) | ||
554 | .build(); | ||
555 | 454 | ||
556 | var store = ModelStore.builder() | 455 | var store = ModelStore.builder() |
557 | .symbols(person, friend) | 456 | .symbols(person, friend) |
558 | .with(ViatraModelQuery.ADAPTER) | 457 | .with(ViatraModelQueryAdapter.builder() |
559 | .queries(predicate) | 458 | .defaultHint(hint) |
459 | .queries(predicate)) | ||
560 | .build(); | 460 | .build(); |
561 | 461 | ||
562 | var model = store.createEmptyModel(); | 462 | var model = store.createEmptyModel(); |
563 | var personInterpretation = model.getInterpretation(person); | 463 | var personInterpretation = model.getInterpretation(person); |
564 | var friendInterpretation = model.getInterpretation(friend); | 464 | var friendInterpretation = model.getInterpretation(friend); |
565 | var queryEngine = model.getAdapter(ModelQuery.ADAPTER); | 465 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); |
566 | var predicateResultSet = queryEngine.getResultSet(predicate); | 466 | var predicateResultSet = queryEngine.getResultSet(predicate); |
567 | 467 | ||
568 | personInterpretation.put(Tuple.of(0), true); | 468 | personInterpretation.put(Tuple.of(0), true); |
@@ -573,37 +473,33 @@ class QueryTest { | |||
573 | friendInterpretation.put(Tuple.of(0, 2), TruthValue.TRUE); | 473 | friendInterpretation.put(Tuple.of(0, 2), TruthValue.TRUE); |
574 | 474 | ||
575 | queryEngine.flushChanges(); | 475 | queryEngine.flushChanges(); |
576 | assertEquals(2, predicateResultSet.countResults()); | 476 | assertResults(Map.of( |
477 | Tuple.of(0), false, | ||
478 | Tuple.of(1), true, | ||
479 | Tuple.of(2), true, | ||
480 | Tuple.of(3), false | ||
481 | ), predicateResultSet); | ||
577 | } | 482 | } |
578 | 483 | ||
579 | @Test | 484 | @QueryEngineTest |
580 | void transitiveRelationViewTest() { | 485 | void transitiveRelationViewTest(QueryEvaluationHint hint) { |
581 | var person = new Symbol<>("Person", 1, Boolean.class, false); | 486 | var predicate = Query.of("Transitive", (builder, p1, p2) -> builder.clause( |
582 | var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); | 487 | personView.call(p1), |
583 | var personView = new KeyOnlyRelationView<>(person); | 488 | personView.call(p2), |
584 | var friendMustView = new FilteredRelationView<>(friend, "must", TruthValue::must); | 489 | friendMustView.callTransitive(p1, p2) |
585 | 490 | )); | |
586 | var p1 = new Variable("p1"); | ||
587 | var p2 = new Variable("p2"); | ||
588 | var predicate = DNF.builder("TransitivePatternCall") | ||
589 | .parameters(p1, p2) | ||
590 | .clause( | ||
591 | new RelationViewAtom(personView, p1), | ||
592 | new RelationViewAtom(personView, p2), | ||
593 | new RelationViewAtom(CallPolarity.TRANSITIVE, friendMustView, p1, p2) | ||
594 | ) | ||
595 | .build(); | ||
596 | 491 | ||
597 | var store = ModelStore.builder() | 492 | var store = ModelStore.builder() |
598 | .symbols(person, friend) | 493 | .symbols(person, friend) |
599 | .with(ViatraModelQuery.ADAPTER) | 494 | .with(ViatraModelQueryAdapter.builder() |
600 | .queries(predicate) | 495 | .defaultHint(hint) |
496 | .queries(predicate)) | ||
601 | .build(); | 497 | .build(); |
602 | 498 | ||
603 | var model = store.createEmptyModel(); | 499 | var model = store.createEmptyModel(); |
604 | var personInterpretation = model.getInterpretation(person); | 500 | var personInterpretation = model.getInterpretation(person); |
605 | var friendInterpretation = model.getInterpretation(friend); | 501 | var friendInterpretation = model.getInterpretation(friend); |
606 | var queryEngine = model.getAdapter(ModelQuery.ADAPTER); | 502 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); |
607 | var predicateResultSet = queryEngine.getResultSet(predicate); | 503 | var predicateResultSet = queryEngine.getResultSet(predicate); |
608 | 504 | ||
609 | personInterpretation.put(Tuple.of(0), true); | 505 | personInterpretation.put(Tuple.of(0), true); |
@@ -614,48 +510,44 @@ class QueryTest { | |||
614 | friendInterpretation.put(Tuple.of(1, 2), TruthValue.TRUE); | 510 | friendInterpretation.put(Tuple.of(1, 2), TruthValue.TRUE); |
615 | 511 | ||
616 | queryEngine.flushChanges(); | 512 | queryEngine.flushChanges(); |
617 | assertEquals(3, predicateResultSet.countResults()); | 513 | assertResults(Map.of( |
514 | Tuple.of(0, 0), false, | ||
515 | Tuple.of(0, 1), true, | ||
516 | Tuple.of(0, 2), true, | ||
517 | Tuple.of(1, 0), false, | ||
518 | Tuple.of(1, 1), false, | ||
519 | Tuple.of(1, 2), true, | ||
520 | Tuple.of(2, 0), false, | ||
521 | Tuple.of(2, 1), false, | ||
522 | Tuple.of(2, 2), false, | ||
523 | Tuple.of(2, 3), false | ||
524 | ), predicateResultSet); | ||
618 | } | 525 | } |
619 | 526 | ||
620 | @Test | 527 | @QueryEngineTest |
621 | void transitivePatternCallTest() { | 528 | void transitivePatternCallTest(QueryEvaluationHint hint) { |
622 | var person = new Symbol<>("Person", 1, Boolean.class, false); | 529 | var called = Query.of("Called", (builder, p1, p2) -> builder.clause( |
623 | var friend = new Symbol<>("friend", 2, TruthValue.class, TruthValue.FALSE); | 530 | personView.call(p1), |
624 | var personView = new KeyOnlyRelationView<>(person); | 531 | personView.call(p2), |
625 | var friendMustView = new FilteredRelationView<>(friend, "must", TruthValue::must); | 532 | friendMustView.call(p1, p2) |
626 | 533 | )); | |
627 | var p1 = new Variable("p1"); | 534 | var predicate = Query.of("Transitive", (builder, p1, p2) -> builder.clause( |
628 | var p2 = new Variable("p2"); | 535 | personView.call(p1), |
629 | var friendPredicate = DNF.builder("RelationConstraint") | 536 | personView.call(p2), |
630 | .parameters(p1, p2) | 537 | called.callTransitive(p1, p2) |
631 | .clause( | 538 | )); |
632 | new RelationViewAtom(personView, p1), | ||
633 | new RelationViewAtom(personView, p2), | ||
634 | new RelationViewAtom(friendMustView, p1, p2) | ||
635 | ) | ||
636 | .build(); | ||
637 | |||
638 | var p3 = new Variable("p3"); | ||
639 | var p4 = new Variable("p4"); | ||
640 | var predicate = DNF.builder("TransitivePatternCall") | ||
641 | .parameters(p3, p4) | ||
642 | .clause( | ||
643 | new RelationViewAtom(personView, p3), | ||
644 | new RelationViewAtom(personView, p4), | ||
645 | new DNFCallAtom(CallPolarity.TRANSITIVE, friendPredicate, p3, p4) | ||
646 | ) | ||
647 | .build(); | ||
648 | 539 | ||
649 | var store = ModelStore.builder() | 540 | var store = ModelStore.builder() |
650 | .symbols(person, friend) | 541 | .symbols(person, friend) |
651 | .with(ViatraModelQuery.ADAPTER) | 542 | .with(ViatraModelQueryAdapter.builder() |
652 | .queries(predicate) | 543 | .defaultHint(hint) |
544 | .queries(predicate)) | ||
653 | .build(); | 545 | .build(); |
654 | 546 | ||
655 | var model = store.createEmptyModel(); | 547 | var model = store.createEmptyModel(); |
656 | var personInterpretation = model.getInterpretation(person); | 548 | var personInterpretation = model.getInterpretation(person); |
657 | var friendInterpretation = model.getInterpretation(friend); | 549 | var friendInterpretation = model.getInterpretation(friend); |
658 | var queryEngine = model.getAdapter(ModelQuery.ADAPTER); | 550 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); |
659 | var predicateResultSet = queryEngine.getResultSet(predicate); | 551 | var predicateResultSet = queryEngine.getResultSet(predicate); |
660 | 552 | ||
661 | personInterpretation.put(Tuple.of(0), true); | 553 | personInterpretation.put(Tuple.of(0), true); |
@@ -666,16 +558,150 @@ class QueryTest { | |||
666 | friendInterpretation.put(Tuple.of(1, 2), TruthValue.TRUE); | 558 | friendInterpretation.put(Tuple.of(1, 2), TruthValue.TRUE); |
667 | 559 | ||
668 | queryEngine.flushChanges(); | 560 | queryEngine.flushChanges(); |
669 | assertEquals(3, predicateResultSet.countResults()); | 561 | assertResults(Map.of( |
562 | Tuple.of(0, 0), false, | ||
563 | Tuple.of(0, 1), true, | ||
564 | Tuple.of(0, 2), true, | ||
565 | Tuple.of(1, 0), false, | ||
566 | Tuple.of(1, 1), false, | ||
567 | Tuple.of(1, 2), true, | ||
568 | Tuple.of(2, 0), false, | ||
569 | Tuple.of(2, 1), false, | ||
570 | Tuple.of(2, 2), false, | ||
571 | Tuple.of(2, 3), false | ||
572 | ), predicateResultSet); | ||
573 | } | ||
574 | |||
575 | @Test | ||
576 | void filteredIntegerViewTest() { | ||
577 | var distance = Symbol.of("distance", 2, Integer.class); | ||
578 | var nearView = new FilteredView<>(distance, value -> value < 2); | ||
579 | var farView = new FilteredView<>(distance, value -> value >= 5); | ||
580 | var dangerQuery = Query.of("danger", (builder, a1, a2) -> builder.clause((a3) -> List.of( | ||
581 | a1.notEquivalent(a2), | ||
582 | nearView.call(a1, a3), | ||
583 | nearView.call(a2, a3), | ||
584 | not(farView.call(a1, a2)) | ||
585 | ))); | ||
586 | var store = ModelStore.builder() | ||
587 | .symbols(distance) | ||
588 | .with(ViatraModelQueryAdapter.builder() | ||
589 | .queries(dangerQuery)) | ||
590 | .build(); | ||
591 | |||
592 | var model = store.createEmptyModel(); | ||
593 | var distanceInterpretation = model.getInterpretation(distance); | ||
594 | distanceInterpretation.put(Tuple.of(0, 1), 1); | ||
595 | distanceInterpretation.put(Tuple.of(1, 0), 1); | ||
596 | distanceInterpretation.put(Tuple.of(0, 2), 1); | ||
597 | distanceInterpretation.put(Tuple.of(2, 0), 1); | ||
598 | distanceInterpretation.put(Tuple.of(1, 2), 3); | ||
599 | distanceInterpretation.put(Tuple.of(2, 1), 3); | ||
600 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
601 | var dangerResultSet = queryEngine.getResultSet(dangerQuery); | ||
602 | queryEngine.flushChanges(); | ||
603 | assertResults(Map.of( | ||
604 | Tuple.of(0, 1), false, | ||
605 | Tuple.of(0, 2), false, | ||
606 | Tuple.of(1, 2), true, | ||
607 | Tuple.of(2, 1), true | ||
608 | ), dangerResultSet); | ||
609 | } | ||
610 | |||
611 | @Test | ||
612 | void filteredDoubleViewTest() { | ||
613 | var distance = Symbol.of("distance", 2, Double.class); | ||
614 | var nearView = new FilteredView<>(distance, value -> value < 2); | ||
615 | var farView = new FilteredView<>(distance, value -> value >= 5); | ||
616 | var dangerQuery = Query.of("danger", (builder, a1, a2) -> builder.clause((a3) -> List.of( | ||
617 | a1.notEquivalent(a2), | ||
618 | nearView.call(a1, a3), | ||
619 | nearView.call(a2, a3), | ||
620 | not(farView.call(a1, a2)) | ||
621 | ))); | ||
622 | var store = ModelStore.builder() | ||
623 | .symbols(distance) | ||
624 | .with(ViatraModelQueryAdapter.builder() | ||
625 | .queries(dangerQuery)) | ||
626 | .build(); | ||
627 | |||
628 | var model = store.createEmptyModel(); | ||
629 | var distanceInterpretation = model.getInterpretation(distance); | ||
630 | distanceInterpretation.put(Tuple.of(0, 1), 1.0); | ||
631 | distanceInterpretation.put(Tuple.of(1, 0), 1.0); | ||
632 | distanceInterpretation.put(Tuple.of(0, 2), 1.0); | ||
633 | distanceInterpretation.put(Tuple.of(2, 0), 1.0); | ||
634 | distanceInterpretation.put(Tuple.of(1, 2), 3.0); | ||
635 | distanceInterpretation.put(Tuple.of(2, 1), 3.0); | ||
636 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
637 | var dangerResultSet = queryEngine.getResultSet(dangerQuery); | ||
638 | queryEngine.flushChanges(); | ||
639 | assertResults(Map.of( | ||
640 | Tuple.of(0, 1), false, | ||
641 | Tuple.of(0, 2), false, | ||
642 | Tuple.of(1, 2), true, | ||
643 | Tuple.of(2, 1), true | ||
644 | ), dangerResultSet); | ||
645 | } | ||
646 | |||
647 | @QueryEngineTest | ||
648 | void assumeTest(QueryEvaluationHint hint) { | ||
649 | var age = Symbol.of("age", 1, Integer.class); | ||
650 | var ageView = new FunctionView<>(age); | ||
651 | |||
652 | var query = Query.of("Constraint", (builder, p1) -> builder.clause(Integer.class, (x) -> List.of( | ||
653 | personView.call(p1), | ||
654 | ageView.call(p1, x), | ||
655 | assume(greaterEq(x, constant(18))) | ||
656 | ))); | ||
657 | |||
658 | var store = ModelStore.builder() | ||
659 | .symbols(person, age) | ||
660 | .with(ViatraModelQueryAdapter.builder() | ||
661 | .defaultHint(hint) | ||
662 | .queries(query)) | ||
663 | .build(); | ||
664 | |||
665 | var model = store.createEmptyModel(); | ||
666 | var personInterpretation = model.getInterpretation(person); | ||
667 | var ageInterpretation = model.getInterpretation(age); | ||
668 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
669 | var queryResultSet = queryEngine.getResultSet(query); | ||
670 | |||
671 | personInterpretation.put(Tuple.of(0), true); | ||
672 | personInterpretation.put(Tuple.of(1), true); | ||
673 | |||
674 | ageInterpretation.put(Tuple.of(0), 12); | ||
675 | ageInterpretation.put(Tuple.of(1), 24); | ||
676 | |||
677 | queryEngine.flushChanges(); | ||
678 | assertResults(Map.of( | ||
679 | Tuple.of(0), false, | ||
680 | Tuple.of(1), true, | ||
681 | Tuple.of(2), false | ||
682 | ), queryResultSet); | ||
670 | } | 683 | } |
671 | 684 | ||
672 | static void compareMatchSets(Stream<TupleLike> matchSet, Set<Tuple> expected) { | 685 | @Test |
673 | Set<Tuple> translatedMatchSet = new HashSet<>(); | 686 | void alwaysFalseTest() { |
674 | var iterator = matchSet.iterator(); | 687 | var predicate = Query.of("AlwaysFalse", builder -> builder.parameter("p1")); |
675 | while (iterator.hasNext()) { | 688 | |
676 | var element = iterator.next(); | 689 | var store = ModelStore.builder() |
677 | translatedMatchSet.add(element.toTuple()); | 690 | .symbols(person) |
678 | } | 691 | .with(ViatraModelQueryAdapter.builder() |
679 | assertEquals(expected, translatedMatchSet); | 692 | .queries(predicate)) |
693 | .build(); | ||
694 | |||
695 | var model = store.createEmptyModel(); | ||
696 | var personInterpretation = model.getInterpretation(person); | ||
697 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
698 | var predicateResultSet = queryEngine.getResultSet(predicate); | ||
699 | |||
700 | personInterpretation.put(Tuple.of(0), true); | ||
701 | personInterpretation.put(Tuple.of(1), true); | ||
702 | personInterpretation.put(Tuple.of(2), true); | ||
703 | |||
704 | queryEngine.flushChanges(); | ||
705 | assertResults(Map.of(), predicateResultSet); | ||
680 | } | 706 | } |
681 | } | 707 | } |
diff --git a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTransactionTest.java b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTransactionTest.java index 98995339..66f043c6 100644 --- a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTransactionTest.java +++ b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/QueryTransactionTest.java | |||
@@ -1,43 +1,163 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.query.viatra; | 6 | package tools.refinery.store.query.viatra; |
2 | 7 | ||
8 | import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; | ||
9 | import org.junit.jupiter.api.Disabled; | ||
3 | import org.junit.jupiter.api.Test; | 10 | import org.junit.jupiter.api.Test; |
4 | import tools.refinery.store.model.ModelStore; | 11 | import tools.refinery.store.model.ModelStore; |
5 | import tools.refinery.store.query.DNF; | 12 | import tools.refinery.store.query.ModelQueryAdapter; |
6 | import tools.refinery.store.query.ModelQuery; | 13 | import tools.refinery.store.query.dnf.Query; |
7 | import tools.refinery.store.query.Variable; | 14 | import tools.refinery.store.query.dnf.RelationalQuery; |
8 | import tools.refinery.store.query.atom.RelationViewAtom; | 15 | import tools.refinery.store.query.view.AnySymbolView; |
9 | import tools.refinery.store.query.view.KeyOnlyRelationView; | 16 | import tools.refinery.store.query.view.FilteredView; |
17 | import tools.refinery.store.query.view.FunctionView; | ||
18 | import tools.refinery.store.query.view.KeyOnlyView; | ||
10 | import tools.refinery.store.representation.Symbol; | 19 | import tools.refinery.store.representation.Symbol; |
11 | import tools.refinery.store.tuple.Tuple; | 20 | import tools.refinery.store.tuple.Tuple; |
12 | 21 | ||
13 | import static org.junit.jupiter.api.Assertions.*; | 22 | import java.util.Map; |
23 | import java.util.Optional; | ||
24 | |||
25 | import static org.junit.jupiter.api.Assertions.assertFalse; | ||
26 | import static org.junit.jupiter.api.Assertions.assertTrue; | ||
27 | import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertNullableResults; | ||
28 | import static tools.refinery.store.query.viatra.tests.QueryAssertions.assertResults; | ||
14 | 29 | ||
15 | class QueryTransactionTest { | 30 | class QueryTransactionTest { |
31 | private static final Symbol<Boolean> person = Symbol.of("Person", 1); | ||
32 | private static final Symbol<Integer> age = Symbol.of("age", 1, Integer.class); | ||
33 | private static final AnySymbolView personView = new KeyOnlyView<>(person); | ||
34 | private static final AnySymbolView ageView = new FunctionView<>(age); | ||
35 | private static final RelationalQuery predicate = Query.of("TypeConstraint", (builder, p1) -> | ||
36 | builder.clause(personView.call(p1))); | ||
37 | |||
16 | @Test | 38 | @Test |
17 | void flushTest() { | 39 | void flushTest() { |
18 | var person = new Symbol<>("Person", 1, Boolean.class, false); | 40 | var store = ModelStore.builder() |
19 | var asset = new Symbol<>("Asset", 1, Boolean.class, false); | 41 | .symbols(person) |
20 | var personView = new KeyOnlyRelationView<>(person); | 42 | .with(ViatraModelQueryAdapter.builder() |
21 | 43 | .queries(predicate)) | |
22 | var p1 = new Variable("p1"); | ||
23 | var predicate = DNF.builder("TypeConstraint") | ||
24 | .parameters(p1) | ||
25 | .clause(new RelationViewAtom(personView, p1)) | ||
26 | .build(); | 44 | .build(); |
27 | 45 | ||
46 | var model = store.createEmptyModel(); | ||
47 | var personInterpretation = model.getInterpretation(person); | ||
48 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
49 | var predicateResultSet = queryEngine.getResultSet(predicate); | ||
50 | |||
51 | assertResults(Map.of( | ||
52 | Tuple.of(0), false, | ||
53 | Tuple.of(1), false, | ||
54 | Tuple.of(2), false, | ||
55 | Tuple.of(3), false | ||
56 | ), predicateResultSet); | ||
57 | assertFalse(queryEngine.hasPendingChanges()); | ||
58 | |||
59 | personInterpretation.put(Tuple.of(0), true); | ||
60 | personInterpretation.put(Tuple.of(1), true); | ||
61 | |||
62 | assertResults(Map.of( | ||
63 | Tuple.of(0), false, | ||
64 | Tuple.of(1), false, | ||
65 | Tuple.of(2), false, | ||
66 | Tuple.of(3), false | ||
67 | ), predicateResultSet); | ||
68 | assertTrue(queryEngine.hasPendingChanges()); | ||
69 | |||
70 | queryEngine.flushChanges(); | ||
71 | assertResults(Map.of( | ||
72 | Tuple.of(0), true, | ||
73 | Tuple.of(1), true, | ||
74 | Tuple.of(2), false, | ||
75 | Tuple.of(3), false | ||
76 | ), predicateResultSet); | ||
77 | assertFalse(queryEngine.hasPendingChanges()); | ||
78 | |||
79 | personInterpretation.put(Tuple.of(1), false); | ||
80 | personInterpretation.put(Tuple.of(2), true); | ||
81 | |||
82 | assertResults(Map.of( | ||
83 | Tuple.of(0), true, | ||
84 | Tuple.of(1), true, | ||
85 | Tuple.of(2), false, | ||
86 | Tuple.of(3), false | ||
87 | ), predicateResultSet); | ||
88 | assertTrue(queryEngine.hasPendingChanges()); | ||
89 | |||
90 | queryEngine.flushChanges(); | ||
91 | assertResults(Map.of( | ||
92 | Tuple.of(0), true, | ||
93 | Tuple.of(1), false, | ||
94 | Tuple.of(2), true, | ||
95 | Tuple.of(3), false | ||
96 | ), predicateResultSet); | ||
97 | assertFalse(queryEngine.hasPendingChanges()); | ||
98 | } | ||
99 | |||
100 | @Test | ||
101 | void localSearchTest() { | ||
102 | var store = ModelStore.builder() | ||
103 | .symbols(person) | ||
104 | .with(ViatraModelQueryAdapter.builder() | ||
105 | .defaultHint(new QueryEvaluationHint(null, QueryEvaluationHint.BackendRequirement.DEFAULT_SEARCH)) | ||
106 | .queries(predicate)) | ||
107 | .build(); | ||
108 | |||
109 | var model = store.createEmptyModel(); | ||
110 | var personInterpretation = model.getInterpretation(person); | ||
111 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
112 | var predicateResultSet = queryEngine.getResultSet(predicate); | ||
113 | |||
114 | assertResults(Map.of( | ||
115 | Tuple.of(0), false, | ||
116 | Tuple.of(1), false, | ||
117 | Tuple.of(2), false, | ||
118 | Tuple.of(3), false | ||
119 | ), predicateResultSet); | ||
120 | assertFalse(queryEngine.hasPendingChanges()); | ||
121 | |||
122 | personInterpretation.put(Tuple.of(0), true); | ||
123 | personInterpretation.put(Tuple.of(1), true); | ||
124 | |||
125 | assertResults(Map.of( | ||
126 | Tuple.of(0), true, | ||
127 | Tuple.of(1), true, | ||
128 | Tuple.of(2), false, | ||
129 | Tuple.of(3), false | ||
130 | ), predicateResultSet); | ||
131 | assertFalse(queryEngine.hasPendingChanges()); | ||
132 | |||
133 | personInterpretation.put(Tuple.of(1), false); | ||
134 | personInterpretation.put(Tuple.of(2), true); | ||
135 | |||
136 | assertResults(Map.of( | ||
137 | Tuple.of(0), true, | ||
138 | Tuple.of(1), false, | ||
139 | Tuple.of(2), true, | ||
140 | Tuple.of(3), false | ||
141 | ), predicateResultSet); | ||
142 | assertFalse(queryEngine.hasPendingChanges()); | ||
143 | } | ||
144 | |||
145 | @Test | ||
146 | void unrelatedChangesTest() { | ||
147 | var asset = Symbol.of("Asset", 1); | ||
148 | |||
28 | var store = ModelStore.builder() | 149 | var store = ModelStore.builder() |
29 | .symbols(person, asset) | 150 | .symbols(person, asset) |
30 | .with(ViatraModelQuery.ADAPTER) | 151 | .with(ViatraModelQueryAdapter.builder() |
31 | .queries(predicate) | 152 | .queries(predicate)) |
32 | .build(); | 153 | .build(); |
33 | 154 | ||
34 | var model = store.createEmptyModel(); | 155 | var model = store.createEmptyModel(); |
35 | var personInterpretation = model.getInterpretation(person); | 156 | var personInterpretation = model.getInterpretation(person); |
36 | var assetInterpretation = model.getInterpretation(asset); | 157 | var assetInterpretation = model.getInterpretation(asset); |
37 | var queryEngine = model.getAdapter(ModelQuery.ADAPTER); | 158 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); |
38 | var predicateResultSet = queryEngine.getResultSet(predicate); | 159 | var predicateResultSet = queryEngine.getResultSet(predicate); |
39 | 160 | ||
40 | assertEquals(0, predicateResultSet.countResults()); | ||
41 | assertFalse(queryEngine.hasPendingChanges()); | 161 | assertFalse(queryEngine.hasPendingChanges()); |
42 | 162 | ||
43 | personInterpretation.put(Tuple.of(0), true); | 163 | personInterpretation.put(Tuple.of(0), true); |
@@ -46,19 +166,208 @@ class QueryTransactionTest { | |||
46 | assetInterpretation.put(Tuple.of(1), true); | 166 | assetInterpretation.put(Tuple.of(1), true); |
47 | assetInterpretation.put(Tuple.of(2), true); | 167 | assetInterpretation.put(Tuple.of(2), true); |
48 | 168 | ||
49 | assertEquals(0, predicateResultSet.countResults()); | 169 | assertResults(Map.of( |
170 | Tuple.of(0), false, | ||
171 | Tuple.of(1), false, | ||
172 | Tuple.of(2), false, | ||
173 | Tuple.of(3), false, | ||
174 | Tuple.of(4), false | ||
175 | ), predicateResultSet); | ||
50 | assertTrue(queryEngine.hasPendingChanges()); | 176 | assertTrue(queryEngine.hasPendingChanges()); |
51 | 177 | ||
52 | queryEngine.flushChanges(); | 178 | queryEngine.flushChanges(); |
53 | assertEquals(2, predicateResultSet.countResults()); | 179 | assertResults(Map.of( |
180 | Tuple.of(0), true, | ||
181 | Tuple.of(1), true, | ||
182 | Tuple.of(2), false, | ||
183 | Tuple.of(3), false, | ||
184 | Tuple.of(4), false | ||
185 | ), predicateResultSet); | ||
54 | assertFalse(queryEngine.hasPendingChanges()); | 186 | assertFalse(queryEngine.hasPendingChanges()); |
55 | 187 | ||
56 | personInterpretation.put(Tuple.of(4), true); | 188 | assetInterpretation.put(Tuple.of(3), true); |
57 | assertEquals(2, predicateResultSet.countResults()); | 189 | assertFalse(queryEngine.hasPendingChanges()); |
58 | assertTrue(queryEngine.hasPendingChanges()); | 190 | |
191 | assertResults(Map.of( | ||
192 | Tuple.of(0), true, | ||
193 | Tuple.of(1), true, | ||
194 | Tuple.of(2), false, | ||
195 | Tuple.of(3), false, | ||
196 | Tuple.of(4), false | ||
197 | ), predicateResultSet); | ||
198 | |||
199 | queryEngine.flushChanges(); | ||
200 | assertResults(Map.of( | ||
201 | Tuple.of(0), true, | ||
202 | Tuple.of(1), true, | ||
203 | Tuple.of(2), false, | ||
204 | Tuple.of(3), false, | ||
205 | Tuple.of(4), false | ||
206 | ), predicateResultSet); | ||
207 | assertFalse(queryEngine.hasPendingChanges()); | ||
208 | } | ||
209 | |||
210 | @Test | ||
211 | void tupleChangingChangeTest() { | ||
212 | var query = Query.of("TypeConstraint", Integer.class, (builder, p1, output) -> builder.clause( | ||
213 | personView.call(p1), | ||
214 | ageView.call(p1, output) | ||
215 | )); | ||
216 | |||
217 | var store = ModelStore.builder() | ||
218 | .symbols(person, age) | ||
219 | .with(ViatraModelQueryAdapter.builder() | ||
220 | .queries(query)) | ||
221 | .build(); | ||
222 | |||
223 | var model = store.createEmptyModel(); | ||
224 | var personInterpretation = model.getInterpretation(person); | ||
225 | var ageInterpretation = model.getInterpretation(age); | ||
226 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
227 | var queryResultSet = queryEngine.getResultSet(query); | ||
228 | |||
229 | personInterpretation.put(Tuple.of(0), true); | ||
230 | |||
231 | ageInterpretation.put(Tuple.of(0), 24); | ||
232 | |||
233 | queryEngine.flushChanges(); | ||
234 | assertResults(Map.of(Tuple.of(0), 24), queryResultSet); | ||
235 | |||
236 | ageInterpretation.put(Tuple.of(0), 25); | ||
59 | 237 | ||
60 | queryEngine.flushChanges(); | 238 | queryEngine.flushChanges(); |
61 | assertEquals(3, predicateResultSet.countResults()); | 239 | assertResults(Map.of(Tuple.of(0), 25), queryResultSet); |
240 | |||
241 | ageInterpretation.put(Tuple.of(0), null); | ||
242 | |||
243 | queryEngine.flushChanges(); | ||
244 | assertNullableResults(Map.of(Tuple.of(0), Optional.empty()), queryResultSet); | ||
245 | } | ||
246 | |||
247 | @Test | ||
248 | void tuplePreservingUnchangedTest() { | ||
249 | var adultView = new FilteredView<>(age, "adult", n -> n != null && n >= 18); | ||
250 | |||
251 | var query = Query.of("TypeConstraint", (builder, p1) -> builder.clause( | ||
252 | personView.call(p1), | ||
253 | adultView.call(p1) | ||
254 | )); | ||
255 | |||
256 | var store = ModelStore.builder() | ||
257 | .symbols(person, age) | ||
258 | .with(ViatraModelQueryAdapter.builder() | ||
259 | .queries(query)) | ||
260 | .build(); | ||
261 | |||
262 | var model = store.createEmptyModel(); | ||
263 | var personInterpretation = model.getInterpretation(person); | ||
264 | var ageInterpretation = model.getInterpretation(age); | ||
265 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
266 | var queryResultSet = queryEngine.getResultSet(query); | ||
267 | |||
268 | personInterpretation.put(Tuple.of(0), true); | ||
269 | |||
270 | ageInterpretation.put(Tuple.of(0), 24); | ||
271 | |||
272 | queryEngine.flushChanges(); | ||
273 | assertResults(Map.of(Tuple.of(0), true), queryResultSet); | ||
274 | |||
275 | ageInterpretation.put(Tuple.of(0), 25); | ||
276 | |||
277 | queryEngine.flushChanges(); | ||
278 | assertResults(Map.of(Tuple.of(0), true), queryResultSet); | ||
279 | |||
280 | ageInterpretation.put(Tuple.of(0), 17); | ||
281 | |||
282 | queryEngine.flushChanges(); | ||
283 | assertResults(Map.of(Tuple.of(0), false), queryResultSet); | ||
284 | } | ||
285 | |||
286 | @Disabled("TODO Fix DiffCursor") | ||
287 | @Test | ||
288 | void commitAfterFlushTest() { | ||
289 | var store = ModelStore.builder() | ||
290 | .symbols(person) | ||
291 | .with(ViatraModelQueryAdapter.builder() | ||
292 | .queries(predicate)) | ||
293 | .build(); | ||
294 | |||
295 | var model = store.createEmptyModel(); | ||
296 | var personInterpretation = model.getInterpretation(person); | ||
297 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
298 | var predicateResultSet = queryEngine.getResultSet(predicate); | ||
299 | |||
300 | personInterpretation.put(Tuple.of(0), true); | ||
301 | personInterpretation.put(Tuple.of(1), true); | ||
302 | |||
303 | queryEngine.flushChanges(); | ||
304 | assertResults(Map.of( | ||
305 | Tuple.of(0), true, | ||
306 | Tuple.of(1), true, | ||
307 | Tuple.of(2), false, | ||
308 | Tuple.of(3), false | ||
309 | ), predicateResultSet); | ||
310 | |||
311 | var state1 = model.commit(); | ||
312 | |||
313 | personInterpretation.put(Tuple.of(1), false); | ||
314 | personInterpretation.put(Tuple.of(2), true); | ||
315 | |||
316 | queryEngine.flushChanges(); | ||
317 | assertResults(Map.of( | ||
318 | Tuple.of(0), true, | ||
319 | Tuple.of(1), false, | ||
320 | Tuple.of(2), true, | ||
321 | Tuple.of(3), false | ||
322 | ), predicateResultSet); | ||
323 | |||
324 | model.restore(state1); | ||
325 | |||
326 | assertFalse(queryEngine.hasPendingChanges()); | ||
327 | assertResults(Map.of( | ||
328 | Tuple.of(0), true, | ||
329 | Tuple.of(1), true, | ||
330 | Tuple.of(2), false, | ||
331 | Tuple.of(3), false | ||
332 | ), predicateResultSet); | ||
333 | } | ||
334 | |||
335 | @Disabled("TODO Fix DiffCursor") | ||
336 | @Test | ||
337 | void commitWithoutFlushTest() { | ||
338 | var store = ModelStore.builder() | ||
339 | .symbols(person) | ||
340 | .with(ViatraModelQueryAdapter.builder() | ||
341 | .queries(predicate)) | ||
342 | .build(); | ||
343 | |||
344 | var model = store.createEmptyModel(); | ||
345 | var personInterpretation = model.getInterpretation(person); | ||
346 | var queryEngine = model.getAdapter(ModelQueryAdapter.class); | ||
347 | var predicateResultSet = queryEngine.getResultSet(predicate); | ||
348 | |||
349 | personInterpretation.put(Tuple.of(0), true); | ||
350 | personInterpretation.put(Tuple.of(1), true); | ||
351 | |||
352 | assertResults(Map.of(), predicateResultSet); | ||
353 | assertTrue(queryEngine.hasPendingChanges()); | ||
354 | |||
355 | var state1 = model.commit(); | ||
356 | |||
357 | personInterpretation.put(Tuple.of(1), false); | ||
358 | personInterpretation.put(Tuple.of(2), true); | ||
359 | |||
360 | assertResults(Map.of(), predicateResultSet); | ||
361 | assertTrue(queryEngine.hasPendingChanges()); | ||
362 | |||
363 | model.restore(state1); | ||
364 | |||
365 | assertResults(Map.of( | ||
366 | Tuple.of(0), true, | ||
367 | Tuple.of(1), true, | ||
368 | Tuple.of(2), false, | ||
369 | Tuple.of(3), false | ||
370 | ), predicateResultSet); | ||
62 | assertFalse(queryEngine.hasPendingChanges()); | 371 | assertFalse(queryEngine.hasPendingChanges()); |
63 | } | 372 | } |
64 | } | 373 | } |
diff --git a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/internal/cardinality/UpperCardinalitySumAggregationOperatorTest.java b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/internal/cardinality/UpperCardinalitySumAggregationOperatorTest.java deleted file mode 100644 index 20dad543..00000000 --- a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/internal/cardinality/UpperCardinalitySumAggregationOperatorTest.java +++ /dev/null | |||
@@ -1,87 +0,0 @@ | |||
1 | package tools.refinery.store.query.viatra.internal.cardinality; | ||
2 | |||
3 | import org.junit.jupiter.api.BeforeEach; | ||
4 | import org.junit.jupiter.api.Test; | ||
5 | import tools.refinery.store.representation.cardinality.UpperCardinalities; | ||
6 | import tools.refinery.store.representation.cardinality.UpperCardinality; | ||
7 | |||
8 | import static org.hamcrest.MatcherAssert.assertThat; | ||
9 | import static org.hamcrest.Matchers.equalTo; | ||
10 | |||
11 | class UpperCardinalitySumAggregationOperatorTest { | ||
12 | private UpperCardinalitySumAggregationOperator.Accumulator accumulator; | ||
13 | |||
14 | @BeforeEach | ||
15 | void beforeEach() { | ||
16 | accumulator = UpperCardinalitySumAggregationOperator.INSTANCE.createNeutral(); | ||
17 | } | ||
18 | |||
19 | @Test | ||
20 | void emptyAggregationTest() { | ||
21 | assertResult(UpperCardinality.of(0)); | ||
22 | } | ||
23 | |||
24 | @Test | ||
25 | void singleBoundedTest() { | ||
26 | insert(UpperCardinality.of(3)); | ||
27 | assertResult(UpperCardinality.of(3)); | ||
28 | } | ||
29 | |||
30 | @Test | ||
31 | void multipleBoundedTest() { | ||
32 | insert(UpperCardinality.of(2)); | ||
33 | insert(UpperCardinality.of(3)); | ||
34 | assertResult(UpperCardinality.of(5)); | ||
35 | } | ||
36 | |||
37 | @Test | ||
38 | void singleUnboundedTest() { | ||
39 | insert(UpperCardinalities.UNBOUNDED); | ||
40 | assertResult(UpperCardinalities.UNBOUNDED); | ||
41 | } | ||
42 | |||
43 | @Test | ||
44 | void multipleUnboundedTest() { | ||
45 | insert(UpperCardinalities.UNBOUNDED); | ||
46 | insert(UpperCardinalities.UNBOUNDED); | ||
47 | assertResult(UpperCardinalities.UNBOUNDED); | ||
48 | } | ||
49 | |||
50 | @Test | ||
51 | void removeBoundedTest() { | ||
52 | insert(UpperCardinality.of(2)); | ||
53 | insert(UpperCardinality.of(3)); | ||
54 | remove(UpperCardinality.of(2)); | ||
55 | assertResult(UpperCardinality.of(3)); | ||
56 | } | ||
57 | |||
58 | @Test | ||
59 | void removeAllUnboundedTest() { | ||
60 | insert(UpperCardinalities.UNBOUNDED); | ||
61 | insert(UpperCardinality.of(3)); | ||
62 | remove(UpperCardinalities.UNBOUNDED); | ||
63 | assertResult(UpperCardinality.of(3)); | ||
64 | } | ||
65 | |||
66 | @Test | ||
67 | void removeSomeUnboundedTest() { | ||
68 | insert(UpperCardinalities.UNBOUNDED); | ||
69 | insert(UpperCardinalities.UNBOUNDED); | ||
70 | insert(UpperCardinality.of(3)); | ||
71 | remove(UpperCardinalities.UNBOUNDED); | ||
72 | assertResult(UpperCardinalities.UNBOUNDED); | ||
73 | } | ||
74 | |||
75 | private void insert(UpperCardinality value) { | ||
76 | accumulator = UpperCardinalitySumAggregationOperator.INSTANCE.update(accumulator, value, true); | ||
77 | } | ||
78 | |||
79 | private void remove(UpperCardinality value) { | ||
80 | accumulator = UpperCardinalitySumAggregationOperator.INSTANCE.update(accumulator, value, false); | ||
81 | } | ||
82 | |||
83 | private void assertResult(UpperCardinality expected) { | ||
84 | var result = UpperCardinalitySumAggregationOperator.INSTANCE.getAggregate(accumulator); | ||
85 | assertThat(result, equalTo(expected)); | ||
86 | } | ||
87 | } | ||
diff --git a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/internal/matcher/MatcherUtilsTest.java b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/internal/matcher/MatcherUtilsTest.java new file mode 100644 index 00000000..968c6c5e --- /dev/null +++ b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/internal/matcher/MatcherUtilsTest.java | |||
@@ -0,0 +1,239 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.internal.matcher; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.matchers.tuple.*; | ||
9 | import org.junit.jupiter.api.Test; | ||
10 | import tools.refinery.store.tuple.Tuple; | ||
11 | import tools.refinery.store.tuple.*; | ||
12 | |||
13 | import java.util.List; | ||
14 | |||
15 | import static org.hamcrest.MatcherAssert.assertThat; | ||
16 | import static org.hamcrest.Matchers.*; | ||
17 | import static org.junit.jupiter.api.Assertions.assertThrows; | ||
18 | |||
19 | class MatcherUtilsTest { | ||
20 | @Test | ||
21 | void toViatra0Test() { | ||
22 | var viatraTuple = MatcherUtils.toViatraTuple(Tuple.of()); | ||
23 | assertThat(viatraTuple.getSize(), is(0)); | ||
24 | assertThat(viatraTuple, instanceOf(FlatTuple0.class)); | ||
25 | } | ||
26 | |||
27 | @Test | ||
28 | void toViatra1Test() { | ||
29 | var viatraTuple = MatcherUtils.toViatraTuple(Tuple.of(2)); | ||
30 | assertThat(viatraTuple.getSize(), is(1)); | ||
31 | assertThat(viatraTuple.get(0), is(Tuple.of(2))); | ||
32 | assertThat(viatraTuple, instanceOf(FlatTuple1.class)); | ||
33 | } | ||
34 | |||
35 | @Test | ||
36 | void toViatra2Test() { | ||
37 | var viatraTuple = MatcherUtils.toViatraTuple(Tuple.of(2, 3)); | ||
38 | assertThat(viatraTuple.getSize(), is(2)); | ||
39 | assertThat(viatraTuple.get(0), is(Tuple.of(2))); | ||
40 | assertThat(viatraTuple.get(1), is(Tuple.of(3))); | ||
41 | assertThat(viatraTuple, instanceOf(FlatTuple2.class)); | ||
42 | } | ||
43 | |||
44 | @Test | ||
45 | void toViatra3Test() { | ||
46 | var viatraTuple = MatcherUtils.toViatraTuple(Tuple.of(2, 3, 5)); | ||
47 | assertThat(viatraTuple.getSize(), is(3)); | ||
48 | assertThat(viatraTuple.get(0), is(Tuple.of(2))); | ||
49 | assertThat(viatraTuple.get(1), is(Tuple.of(3))); | ||
50 | assertThat(viatraTuple.get(2), is(Tuple.of(5))); | ||
51 | assertThat(viatraTuple, instanceOf(FlatTuple3.class)); | ||
52 | } | ||
53 | |||
54 | @Test | ||
55 | void toViatra4Test() { | ||
56 | var viatraTuple = MatcherUtils.toViatraTuple(Tuple.of(2, 3, 5, 8)); | ||
57 | assertThat(viatraTuple.getSize(), is(4)); | ||
58 | assertThat(viatraTuple.get(0), is(Tuple.of(2))); | ||
59 | assertThat(viatraTuple.get(1), is(Tuple.of(3))); | ||
60 | assertThat(viatraTuple.get(2), is(Tuple.of(5))); | ||
61 | assertThat(viatraTuple.get(3), is(Tuple.of(8))); | ||
62 | assertThat(viatraTuple, instanceOf(FlatTuple4.class)); | ||
63 | } | ||
64 | |||
65 | @Test | ||
66 | void toViatra5Test() { | ||
67 | var viatraTuple = MatcherUtils.toViatraTuple(Tuple.of(2, 3, 5, 8, 13)); | ||
68 | assertThat(viatraTuple.getSize(), is(5)); | ||
69 | assertThat(viatraTuple.get(0), is(Tuple.of(2))); | ||
70 | assertThat(viatraTuple.get(1), is(Tuple.of(3))); | ||
71 | assertThat(viatraTuple.get(2), is(Tuple.of(5))); | ||
72 | assertThat(viatraTuple.get(3), is(Tuple.of(8))); | ||
73 | assertThat(viatraTuple.get(4), is(Tuple.of(13))); | ||
74 | assertThat(viatraTuple, instanceOf(FlatTuple.class)); | ||
75 | } | ||
76 | |||
77 | @Test | ||
78 | void toRefinery0Test() { | ||
79 | var refineryTuple = MatcherUtils.toRefineryTuple(Tuples.flatTupleOf()); | ||
80 | assertThat(refineryTuple.getSize(), is(0)); | ||
81 | assertThat(refineryTuple, instanceOf(Tuple0.class)); | ||
82 | } | ||
83 | |||
84 | @Test | ||
85 | void toRefinery1Test() { | ||
86 | var refineryTuple = MatcherUtils.toRefineryTuple(Tuples.flatTupleOf(Tuple.of(2))); | ||
87 | assertThat(refineryTuple.getSize(), is(1)); | ||
88 | assertThat(refineryTuple.get(0), is(2)); | ||
89 | assertThat(refineryTuple, instanceOf(Tuple1.class)); | ||
90 | } | ||
91 | |||
92 | @Test | ||
93 | void toRefinery2Test() { | ||
94 | var refineryTuple = MatcherUtils.toRefineryTuple(Tuples.flatTupleOf(Tuple.of(2), Tuple.of(3))); | ||
95 | assertThat(refineryTuple.getSize(), is(2)); | ||
96 | assertThat(refineryTuple.get(0), is(2)); | ||
97 | assertThat(refineryTuple.get(1), is(3)); | ||
98 | assertThat(refineryTuple, instanceOf(Tuple2.class)); | ||
99 | } | ||
100 | |||
101 | @Test | ||
102 | void toRefinery3Test() { | ||
103 | var refineryTuple = MatcherUtils.toRefineryTuple(Tuples.flatTupleOf(Tuple.of(2), Tuple.of(3), Tuple.of(5))); | ||
104 | assertThat(refineryTuple.getSize(), is(3)); | ||
105 | assertThat(refineryTuple.get(0), is(2)); | ||
106 | assertThat(refineryTuple.get(1), is(3)); | ||
107 | assertThat(refineryTuple.get(2), is(5)); | ||
108 | assertThat(refineryTuple, instanceOf(Tuple3.class)); | ||
109 | } | ||
110 | |||
111 | @Test | ||
112 | void toRefinery4Test() { | ||
113 | var refineryTuple = MatcherUtils.toRefineryTuple(Tuples.flatTupleOf(Tuple.of(2), Tuple.of(3), Tuple.of(5), | ||
114 | Tuple.of(8))); | ||
115 | assertThat(refineryTuple.getSize(), is(4)); | ||
116 | assertThat(refineryTuple.get(0), is(2)); | ||
117 | assertThat(refineryTuple.get(1), is(3)); | ||
118 | assertThat(refineryTuple.get(2), is(5)); | ||
119 | assertThat(refineryTuple.get(3), is(8)); | ||
120 | assertThat(refineryTuple, instanceOf(Tuple4.class)); | ||
121 | } | ||
122 | |||
123 | @Test | ||
124 | void toRefinery5Test() { | ||
125 | var refineryTuple = MatcherUtils.toRefineryTuple(Tuples.flatTupleOf(Tuple.of(2), Tuple.of(3), Tuple.of(5), | ||
126 | Tuple.of(8), Tuple.of(13))); | ||
127 | assertThat(refineryTuple.getSize(), is(5)); | ||
128 | assertThat(refineryTuple.get(0), is(2)); | ||
129 | assertThat(refineryTuple.get(1), is(3)); | ||
130 | assertThat(refineryTuple.get(2), is(5)); | ||
131 | assertThat(refineryTuple.get(3), is(8)); | ||
132 | assertThat(refineryTuple.get(4), is(13)); | ||
133 | assertThat(refineryTuple, instanceOf(TupleN.class)); | ||
134 | } | ||
135 | |||
136 | @Test | ||
137 | void toRefineryInvalidValueTest() { | ||
138 | var viatraTuple = Tuples.flatTupleOf(Tuple.of(2), -98); | ||
139 | assertThrows(IllegalArgumentException.class, () -> MatcherUtils.toRefineryTuple(viatraTuple)); | ||
140 | } | ||
141 | |||
142 | @Test | ||
143 | void keyToRefinery0Test() { | ||
144 | var refineryTuple = MatcherUtils.keyToRefineryTuple(Tuples.flatTupleOf(-99)); | ||
145 | assertThat(refineryTuple.getSize(), is(0)); | ||
146 | assertThat(refineryTuple, instanceOf(Tuple0.class)); | ||
147 | } | ||
148 | |||
149 | @Test | ||
150 | void keyToRefinery1Test() { | ||
151 | var refineryTuple = MatcherUtils.keyToRefineryTuple(Tuples.flatTupleOf(Tuple.of(2), -99)); | ||
152 | assertThat(refineryTuple.getSize(), is(1)); | ||
153 | assertThat(refineryTuple.get(0), is(2)); | ||
154 | assertThat(refineryTuple, instanceOf(Tuple1.class)); | ||
155 | } | ||
156 | |||
157 | @Test | ||
158 | void keyToRefinery2Test() { | ||
159 | var refineryTuple = MatcherUtils.keyToRefineryTuple(Tuples.flatTupleOf(Tuple.of(2), Tuple.of(3), -99)); | ||
160 | assertThat(refineryTuple.getSize(), is(2)); | ||
161 | assertThat(refineryTuple.get(0), is(2)); | ||
162 | assertThat(refineryTuple.get(1), is(3)); | ||
163 | assertThat(refineryTuple, instanceOf(Tuple2.class)); | ||
164 | } | ||
165 | |||
166 | @Test | ||
167 | void keyToRefinery3Test() { | ||
168 | var refineryTuple = MatcherUtils.keyToRefineryTuple(Tuples.flatTupleOf(Tuple.of(2), Tuple.of(3), Tuple.of(5), | ||
169 | -99)); | ||
170 | assertThat(refineryTuple.getSize(), is(3)); | ||
171 | assertThat(refineryTuple.get(0), is(2)); | ||
172 | assertThat(refineryTuple.get(1), is(3)); | ||
173 | assertThat(refineryTuple.get(2), is(5)); | ||
174 | assertThat(refineryTuple, instanceOf(Tuple3.class)); | ||
175 | } | ||
176 | |||
177 | @Test | ||
178 | void keyToRefinery4Test() { | ||
179 | var refineryTuple = MatcherUtils.keyToRefineryTuple(Tuples.flatTupleOf(Tuple.of(2), Tuple.of(3), Tuple.of(5), | ||
180 | Tuple.of(8), -99)); | ||
181 | assertThat(refineryTuple.getSize(), is(4)); | ||
182 | assertThat(refineryTuple.get(0), is(2)); | ||
183 | assertThat(refineryTuple.get(1), is(3)); | ||
184 | assertThat(refineryTuple.get(2), is(5)); | ||
185 | assertThat(refineryTuple.get(3), is(8)); | ||
186 | assertThat(refineryTuple, instanceOf(Tuple4.class)); | ||
187 | } | ||
188 | |||
189 | @Test | ||
190 | void keyToRefinery5Test() { | ||
191 | var refineryTuple = MatcherUtils.keyToRefineryTuple(Tuples.flatTupleOf(Tuple.of(2), Tuple.of(3), Tuple.of(5), | ||
192 | Tuple.of(8), Tuple.of(13), -99)); | ||
193 | assertThat(refineryTuple.getSize(), is(5)); | ||
194 | assertThat(refineryTuple.get(0), is(2)); | ||
195 | assertThat(refineryTuple.get(1), is(3)); | ||
196 | assertThat(refineryTuple.get(2), is(5)); | ||
197 | assertThat(refineryTuple.get(3), is(8)); | ||
198 | assertThat(refineryTuple.get(4), is(13)); | ||
199 | assertThat(refineryTuple, instanceOf(TupleN.class)); | ||
200 | } | ||
201 | |||
202 | @Test | ||
203 | void keyToRefineryTooShortTest() { | ||
204 | var viatraTuple = Tuples.flatTupleOf(); | ||
205 | assertThrows(IllegalArgumentException.class, () -> MatcherUtils.keyToRefineryTuple(viatraTuple)); | ||
206 | } | ||
207 | |||
208 | @Test | ||
209 | void keyToRefineryInvalidValueTest() { | ||
210 | var viatraTuple = Tuples.flatTupleOf(Tuple.of(2), -98, -99); | ||
211 | assertThrows(IllegalArgumentException.class, () -> MatcherUtils.keyToRefineryTuple(viatraTuple)); | ||
212 | } | ||
213 | |||
214 | @Test | ||
215 | void getSingleValueTest() { | ||
216 | var value = MatcherUtils.getSingleValue(List.of(Tuples.flatTupleOf(Tuple.of(2), -99))); | ||
217 | assertThat(value, is(-99)); | ||
218 | } | ||
219 | |||
220 | // Static analysis accurately determines that the result is always {@code null}, but we check anyways. | ||
221 | @SuppressWarnings("ConstantValue") | ||
222 | @Test | ||
223 | void getSingleValueNullTest() { | ||
224 | var value = MatcherUtils.getSingleValue((Iterable<? extends ITuple>) null); | ||
225 | assertThat(value, nullValue()); | ||
226 | } | ||
227 | |||
228 | @Test | ||
229 | void getSingleValueEmptyTest() { | ||
230 | var value = MatcherUtils.getSingleValue(List.of()); | ||
231 | assertThat(value, nullValue()); | ||
232 | } | ||
233 | |||
234 | @Test | ||
235 | void getSingleValueMultipleTest() { | ||
236 | var viatraTuples = List.of(Tuples.flatTupleOf(Tuple.of(2), -98), Tuples.flatTupleOf(Tuple.of(2), -99)); | ||
237 | assertThrows(IllegalStateException.class, () -> MatcherUtils.getSingleValue(viatraTuples)); | ||
238 | } | ||
239 | } | ||
diff --git a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/tests/QueryAssertions.java b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/tests/QueryAssertions.java new file mode 100644 index 00000000..ca089a9d --- /dev/null +++ b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/tests/QueryAssertions.java | |||
@@ -0,0 +1,57 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.tests; | ||
7 | |||
8 | import org.junit.jupiter.api.function.Executable; | ||
9 | import tools.refinery.store.query.resultset.ResultSet; | ||
10 | import tools.refinery.store.tuple.Tuple; | ||
11 | |||
12 | import java.util.*; | ||
13 | |||
14 | import static org.hamcrest.MatcherAssert.assertThat; | ||
15 | import static org.hamcrest.Matchers.is; | ||
16 | import static org.hamcrest.Matchers.nullValue; | ||
17 | import static org.junit.jupiter.api.Assertions.assertAll; | ||
18 | |||
19 | public final class QueryAssertions { | ||
20 | private QueryAssertions() { | ||
21 | throw new IllegalStateException("This is a static utility class and should not be instantiated directly"); | ||
22 | } | ||
23 | |||
24 | public static <T> void assertNullableResults(Map<Tuple, Optional<T>> expected, ResultSet<T> resultSet) { | ||
25 | var nullableValuesMap = new LinkedHashMap<Tuple, T>(expected.size()); | ||
26 | for (var entry : expected.entrySet()) { | ||
27 | nullableValuesMap.put(entry.getKey(), entry.getValue().orElse(null)); | ||
28 | } | ||
29 | assertResults(nullableValuesMap, resultSet); | ||
30 | } | ||
31 | |||
32 | public static <T> void assertResults(Map<Tuple, T> expected, ResultSet<T> resultSet) { | ||
33 | var defaultValue = resultSet.getQuery().defaultValue(); | ||
34 | var filteredExpected = new LinkedHashMap<Tuple, T>(); | ||
35 | var executables = new ArrayList<Executable>(); | ||
36 | for (var entry : expected.entrySet()) { | ||
37 | var key = entry.getKey(); | ||
38 | var value = entry.getValue(); | ||
39 | if (!Objects.equals(value, defaultValue)) { | ||
40 | filteredExpected.put(key, value); | ||
41 | } | ||
42 | executables.add(() -> assertThat("value for key " + key,resultSet.get(key), is(value))); | ||
43 | } | ||
44 | executables.add(() -> assertThat("results size", resultSet.size(), is(filteredExpected.size()))); | ||
45 | |||
46 | var actual = new LinkedHashMap<Tuple, T>(); | ||
47 | var cursor = resultSet.getAll(); | ||
48 | while (cursor.move()) { | ||
49 | var key = cursor.getKey(); | ||
50 | var previous = actual.put(key, cursor.getValue()); | ||
51 | assertThat("duplicate value for key " + key, previous, nullValue()); | ||
52 | } | ||
53 | executables.add(() -> assertThat("results cursor", actual, is(filteredExpected))); | ||
54 | |||
55 | assertAll(executables); | ||
56 | } | ||
57 | } | ||
diff --git a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/tests/QueryBackendHint.java b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/tests/QueryBackendHint.java new file mode 100644 index 00000000..dc0e92c8 --- /dev/null +++ b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/tests/QueryBackendHint.java | |||
@@ -0,0 +1,27 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.tests; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; | ||
9 | |||
10 | /** | ||
11 | * Overrides {@link QueryEvaluationHint#toString()} for pretty names in parametric test names. | ||
12 | */ | ||
13 | class QueryBackendHint extends QueryEvaluationHint { | ||
14 | public QueryBackendHint(BackendRequirement backendRequirementType) { | ||
15 | super(null, backendRequirementType); | ||
16 | } | ||
17 | |||
18 | @Override | ||
19 | public String toString() { | ||
20 | return switch (getQueryBackendRequirementType()) { | ||
21 | case UNSPECIFIED -> "default"; | ||
22 | case DEFAULT_CACHING -> "incremental"; | ||
23 | case DEFAULT_SEARCH -> "localSearch"; | ||
24 | default -> throw new IllegalStateException("Unknown BackendRequirement"); | ||
25 | }; | ||
26 | } | ||
27 | } | ||
diff --git a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/tests/QueryEngineTest.java b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/tests/QueryEngineTest.java new file mode 100644 index 00000000..d4f16da7 --- /dev/null +++ b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/tests/QueryEngineTest.java | |||
@@ -0,0 +1,21 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.tests; | ||
7 | |||
8 | import org.junit.jupiter.params.ParameterizedTest; | ||
9 | import org.junit.jupiter.params.provider.ArgumentsSource; | ||
10 | |||
11 | import java.lang.annotation.ElementType; | ||
12 | import java.lang.annotation.Retention; | ||
13 | import java.lang.annotation.RetentionPolicy; | ||
14 | import java.lang.annotation.Target; | ||
15 | |||
16 | @ParameterizedTest(name = "backend = {0}") | ||
17 | @ArgumentsSource(QueryEvaluationHintSource.class) | ||
18 | @Target(ElementType.METHOD) | ||
19 | @Retention(RetentionPolicy.RUNTIME) | ||
20 | public @interface QueryEngineTest { | ||
21 | } | ||
diff --git a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/tests/QueryEvaluationHintSource.java b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/tests/QueryEvaluationHintSource.java new file mode 100644 index 00000000..9e75d5f3 --- /dev/null +++ b/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/tests/QueryEvaluationHintSource.java | |||
@@ -0,0 +1,24 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.viatra.tests; | ||
7 | |||
8 | import org.eclipse.viatra.query.runtime.matchers.backend.QueryEvaluationHint; | ||
9 | import org.junit.jupiter.api.extension.ExtensionContext; | ||
10 | import org.junit.jupiter.params.provider.Arguments; | ||
11 | import org.junit.jupiter.params.provider.ArgumentsProvider; | ||
12 | |||
13 | import java.util.stream.Stream; | ||
14 | |||
15 | public class QueryEvaluationHintSource implements ArgumentsProvider { | ||
16 | @Override | ||
17 | public Stream<? extends Arguments> provideArguments(ExtensionContext context) { | ||
18 | return Stream.of( | ||
19 | Arguments.of(new QueryBackendHint(QueryEvaluationHint.BackendRequirement.UNSPECIFIED)), | ||
20 | Arguments.of(new QueryBackendHint(QueryEvaluationHint.BackendRequirement.DEFAULT_CACHING)), | ||
21 | Arguments.of(new QueryBackendHint(QueryEvaluationHint.BackendRequirement.DEFAULT_SEARCH)) | ||
22 | ); | ||
23 | } | ||
24 | } | ||
diff --git a/subprojects/store-query/build.gradle.kts b/subprojects/store-query/build.gradle.kts new file mode 100644 index 00000000..4d8e2605 --- /dev/null +++ b/subprojects/store-query/build.gradle.kts | |||
@@ -0,0 +1,15 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | plugins { | ||
8 | id("tools.refinery.gradle.java-library") | ||
9 | id("tools.refinery.gradle.java-test-fixtures") | ||
10 | } | ||
11 | |||
12 | dependencies { | ||
13 | api(project(":refinery-store")) | ||
14 | testFixturesApi(libs.hamcrest) | ||
15 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/Constraint.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/Constraint.java new file mode 100644 index 00000000..916fb35c --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/Constraint.java | |||
@@ -0,0 +1,72 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query; | ||
7 | |||
8 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | ||
9 | import tools.refinery.store.query.literal.*; | ||
10 | import tools.refinery.store.query.term.*; | ||
11 | |||
12 | import java.util.List; | ||
13 | |||
14 | public interface Constraint { | ||
15 | String name(); | ||
16 | |||
17 | List<Parameter> getParameters(); | ||
18 | |||
19 | default int arity() { | ||
20 | return getParameters().size(); | ||
21 | } | ||
22 | |||
23 | default boolean invalidIndex(int i) { | ||
24 | return i < 0 || i >= arity(); | ||
25 | } | ||
26 | |||
27 | default Reduction getReduction() { | ||
28 | return Reduction.NOT_REDUCIBLE; | ||
29 | } | ||
30 | |||
31 | default boolean equals(LiteralEqualityHelper helper, Constraint other) { | ||
32 | return equals(other); | ||
33 | } | ||
34 | |||
35 | default String toReferenceString() { | ||
36 | return name(); | ||
37 | } | ||
38 | |||
39 | default CallLiteral call(CallPolarity polarity, List<Variable> arguments) { | ||
40 | return new CallLiteral(polarity, this, arguments); | ||
41 | } | ||
42 | |||
43 | default CallLiteral call(CallPolarity polarity, Variable... arguments) { | ||
44 | return call(polarity, List.of(arguments)); | ||
45 | } | ||
46 | |||
47 | default CallLiteral call(Variable... arguments) { | ||
48 | return call(CallPolarity.POSITIVE, arguments); | ||
49 | } | ||
50 | |||
51 | default CallLiteral callTransitive(NodeVariable left, NodeVariable right) { | ||
52 | return call(CallPolarity.TRANSITIVE, List.of(left, right)); | ||
53 | } | ||
54 | |||
55 | default AssignedValue<Integer> count(List<Variable> arguments) { | ||
56 | return targetVariable -> new CountLiteral(targetVariable, this, arguments); | ||
57 | } | ||
58 | |||
59 | default AssignedValue<Integer> count(Variable... arguments) { | ||
60 | return count(List.of(arguments)); | ||
61 | } | ||
62 | |||
63 | default <R, T> AssignedValue<R> aggregateBy(DataVariable<T> inputVariable, Aggregator<R, T> aggregator, | ||
64 | List<Variable> arguments) { | ||
65 | return targetVariable -> new AggregationLiteral<>(targetVariable, aggregator, inputVariable, this, arguments); | ||
66 | } | ||
67 | |||
68 | default <R, T> AssignedValue<R> aggregateBy(DataVariable<T> inputVariable, Aggregator<R, T> aggregator, | ||
69 | Variable... arguments) { | ||
70 | return aggregateBy(inputVariable, aggregator, List.of(arguments)); | ||
71 | } | ||
72 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/ModelQueryAdapter.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/ModelQueryAdapter.java new file mode 100644 index 00000000..1fa96a07 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/ModelQueryAdapter.java | |||
@@ -0,0 +1,26 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query; | ||
7 | |||
8 | import tools.refinery.store.adapter.ModelAdapter; | ||
9 | import tools.refinery.store.query.dnf.AnyQuery; | ||
10 | import tools.refinery.store.query.dnf.Query; | ||
11 | import tools.refinery.store.query.resultset.AnyResultSet; | ||
12 | import tools.refinery.store.query.resultset.ResultSet; | ||
13 | |||
14 | public interface ModelQueryAdapter extends ModelAdapter { | ||
15 | ModelQueryStoreAdapter getStoreAdapter(); | ||
16 | |||
17 | default AnyResultSet getResultSet(AnyQuery query) { | ||
18 | return getResultSet((Query<?>) query); | ||
19 | } | ||
20 | |||
21 | <T> ResultSet<T> getResultSet(Query<T> query); | ||
22 | |||
23 | boolean hasPendingChanges(); | ||
24 | |||
25 | void flushChanges(); | ||
26 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/ModelQueryBuilder.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/ModelQueryBuilder.java new file mode 100644 index 00000000..c62a95b5 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/ModelQueryBuilder.java | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query; | ||
7 | |||
8 | import tools.refinery.store.adapter.ModelAdapterBuilder; | ||
9 | import tools.refinery.store.model.ModelStore; | ||
10 | import tools.refinery.store.query.dnf.AnyQuery; | ||
11 | |||
12 | import java.util.Collection; | ||
13 | import java.util.List; | ||
14 | |||
15 | @SuppressWarnings("UnusedReturnValue") | ||
16 | public interface ModelQueryBuilder extends ModelAdapterBuilder { | ||
17 | default ModelQueryBuilder queries(AnyQuery... queries) { | ||
18 | return queries(List.of(queries)); | ||
19 | } | ||
20 | |||
21 | default ModelQueryBuilder queries(Collection<? extends AnyQuery> queries) { | ||
22 | queries.forEach(this::query); | ||
23 | return this; | ||
24 | } | ||
25 | |||
26 | ModelQueryBuilder query(AnyQuery query); | ||
27 | |||
28 | @Override | ||
29 | ModelQueryStoreAdapter build(ModelStore store); | ||
30 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/ModelQueryStoreAdapter.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/ModelQueryStoreAdapter.java new file mode 100644 index 00000000..f0a950a6 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/ModelQueryStoreAdapter.java | |||
@@ -0,0 +1,22 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query; | ||
7 | |||
8 | import tools.refinery.store.adapter.ModelStoreAdapter; | ||
9 | import tools.refinery.store.model.Model; | ||
10 | import tools.refinery.store.query.dnf.AnyQuery; | ||
11 | import tools.refinery.store.query.view.AnySymbolView; | ||
12 | |||
13 | import java.util.Collection; | ||
14 | |||
15 | public interface ModelQueryStoreAdapter extends ModelStoreAdapter { | ||
16 | Collection<AnySymbolView> getSymbolViews(); | ||
17 | |||
18 | Collection<AnyQuery> getQueries(); | ||
19 | |||
20 | @Override | ||
21 | ModelQueryAdapter createModelAdapter(Model model); | ||
22 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/AbstractQueryBuilder.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/AbstractQueryBuilder.java new file mode 100644 index 00000000..2a3e3ce0 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/AbstractQueryBuilder.java | |||
@@ -0,0 +1,175 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.callback.*; | ||
9 | import tools.refinery.store.query.literal.Literal; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | import tools.refinery.store.query.term.ParameterDirection; | ||
12 | import tools.refinery.store.query.term.Variable; | ||
13 | |||
14 | import java.util.Collection; | ||
15 | import java.util.List; | ||
16 | import java.util.Set; | ||
17 | |||
18 | public abstract class AbstractQueryBuilder<T extends AbstractQueryBuilder<T>> { | ||
19 | protected final DnfBuilder dnfBuilder; | ||
20 | |||
21 | protected AbstractQueryBuilder(DnfBuilder dnfBuilder) { | ||
22 | this.dnfBuilder = dnfBuilder; | ||
23 | } | ||
24 | |||
25 | protected abstract T self(); | ||
26 | |||
27 | public NodeVariable parameter() { | ||
28 | return dnfBuilder.parameter(); | ||
29 | } | ||
30 | |||
31 | public NodeVariable parameter(String name) { | ||
32 | return dnfBuilder.parameter(name); | ||
33 | } | ||
34 | |||
35 | public NodeVariable parameter(ParameterDirection direction) { | ||
36 | return dnfBuilder.parameter(direction); | ||
37 | } | ||
38 | |||
39 | public NodeVariable parameter(String name, ParameterDirection direction) { | ||
40 | return dnfBuilder.parameter(name, direction); | ||
41 | } | ||
42 | |||
43 | public T parameter(NodeVariable variable) { | ||
44 | dnfBuilder.parameter(variable); | ||
45 | return self(); | ||
46 | } | ||
47 | |||
48 | public T parameter(NodeVariable variable, ParameterDirection direction) { | ||
49 | dnfBuilder.parameter(variable, direction); | ||
50 | return self(); | ||
51 | } | ||
52 | |||
53 | public T parameters(NodeVariable... variables) { | ||
54 | dnfBuilder.parameters(variables); | ||
55 | return self(); | ||
56 | } | ||
57 | |||
58 | public T parameters(List<NodeVariable> variables) { | ||
59 | dnfBuilder.parameters(variables); | ||
60 | return self(); | ||
61 | } | ||
62 | |||
63 | public T parameters(List<NodeVariable> variables, ParameterDirection direction) { | ||
64 | dnfBuilder.parameters(variables, direction); | ||
65 | return self(); | ||
66 | } | ||
67 | |||
68 | public T symbolicParameters(List<SymbolicParameter> parameters) { | ||
69 | dnfBuilder.symbolicParameters(parameters); | ||
70 | return self(); | ||
71 | } | ||
72 | |||
73 | public T functionalDependencies(Collection<FunctionalDependency<Variable>> functionalDependencies) { | ||
74 | dnfBuilder.functionalDependencies(functionalDependencies); | ||
75 | return self(); | ||
76 | } | ||
77 | |||
78 | public T functionalDependency(FunctionalDependency<Variable> functionalDependency) { | ||
79 | dnfBuilder.functionalDependency(functionalDependency); | ||
80 | return self(); | ||
81 | } | ||
82 | |||
83 | public T functionalDependency(Set<? extends Variable> forEach, Set<? extends Variable> unique) { | ||
84 | dnfBuilder.functionalDependency(forEach, unique); | ||
85 | return self(); | ||
86 | } | ||
87 | |||
88 | public T clause(ClauseCallback0 callback) { | ||
89 | dnfBuilder.clause(callback); | ||
90 | return self(); | ||
91 | } | ||
92 | |||
93 | public T clause(ClauseCallback1Data0 callback) { | ||
94 | dnfBuilder.clause(callback); | ||
95 | return self(); | ||
96 | } | ||
97 | |||
98 | public <U1> T clause(Class<U1> type1, ClauseCallback1Data1<U1> callback) { | ||
99 | dnfBuilder.clause(type1, callback); | ||
100 | return self(); | ||
101 | } | ||
102 | |||
103 | public T clause(ClauseCallback2Data0 callback) { | ||
104 | dnfBuilder.clause(callback); | ||
105 | return self(); | ||
106 | } | ||
107 | |||
108 | public <U1> T clause(Class<U1> type1, ClauseCallback2Data1<U1> callback) { | ||
109 | dnfBuilder.clause(type1, callback); | ||
110 | return self(); | ||
111 | } | ||
112 | |||
113 | public <U1, U2> T clause(Class<U1> type1, Class<U2> type2, ClauseCallback2Data2<U1, U2> callback) { | ||
114 | dnfBuilder.clause(type1, type2, callback); | ||
115 | return self(); | ||
116 | } | ||
117 | |||
118 | public T clause(ClauseCallback3Data0 callback) { | ||
119 | dnfBuilder.clause(callback); | ||
120 | return self(); | ||
121 | } | ||
122 | |||
123 | public <U1> T clause(Class<U1> type1, ClauseCallback3Data1<U1> callback) { | ||
124 | dnfBuilder.clause(type1, callback); | ||
125 | return self(); | ||
126 | } | ||
127 | |||
128 | public <U1, U2> T clause(Class<U1> type1, Class<U2> type2, ClauseCallback3Data2<U1, U2> callback) { | ||
129 | dnfBuilder.clause(type1, type2, callback); | ||
130 | return self(); | ||
131 | } | ||
132 | |||
133 | public <U1, U2, U3> T clause(Class<U1> type1, Class<U2> type2, Class<U3> type3, | ||
134 | ClauseCallback3Data3<U1, U2, U3> callback) { | ||
135 | dnfBuilder.clause(type1, type2, type3, callback); | ||
136 | return self(); | ||
137 | } | ||
138 | |||
139 | public T clause(ClauseCallback4Data0 callback) { | ||
140 | dnfBuilder.clause(callback); | ||
141 | return self(); | ||
142 | } | ||
143 | |||
144 | public <U1> T clause(Class<U1> type1, ClauseCallback4Data1<U1> callback) { | ||
145 | dnfBuilder.clause(type1, callback); | ||
146 | return self(); | ||
147 | } | ||
148 | |||
149 | public <U1, U2> T clause(Class<U1> type1, Class<U2> type2, ClauseCallback4Data2<U1, U2> callback) { | ||
150 | dnfBuilder.clause(type1, type2, callback); | ||
151 | return self(); | ||
152 | } | ||
153 | |||
154 | public <U1, U2, U3> T clause(Class<U1> type1, Class<U2> type2, Class<U3> type3, | ||
155 | ClauseCallback4Data3<U1, U2, U3> callback) { | ||
156 | dnfBuilder.clause(type1, type2, type3, callback); | ||
157 | return self(); | ||
158 | } | ||
159 | |||
160 | public <U1, U2, U3, U4> T clause(Class<U1> type1, Class<U2> type2, Class<U3> type3, Class<U4> type4, | ||
161 | ClauseCallback4Data4<U1, U2, U3, U4> callback) { | ||
162 | dnfBuilder.clause(type1, type2, type3, type4, callback); | ||
163 | return self(); | ||
164 | } | ||
165 | |||
166 | public T clause(Literal... literals) { | ||
167 | dnfBuilder.clause(literals); | ||
168 | return self(); | ||
169 | } | ||
170 | |||
171 | public T clause(Collection<? extends Literal> literals) { | ||
172 | dnfBuilder.clause(literals); | ||
173 | return self(); | ||
174 | } | ||
175 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/AnyQuery.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/AnyQuery.java new file mode 100644 index 00000000..5e28af68 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/AnyQuery.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf; | ||
7 | |||
8 | public sealed interface AnyQuery permits Query { | ||
9 | String name(); | ||
10 | |||
11 | int arity(); | ||
12 | |||
13 | Class<?> valueType(); | ||
14 | |||
15 | Dnf getDnf(); | ||
16 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/ClausePostProcessor.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/ClausePostProcessor.java new file mode 100644 index 00000000..b5e7092b --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/ClausePostProcessor.java | |||
@@ -0,0 +1,324 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf; | ||
7 | |||
8 | import org.jetbrains.annotations.NotNull; | ||
9 | import tools.refinery.store.query.literal.BooleanLiteral; | ||
10 | import tools.refinery.store.query.literal.EquivalenceLiteral; | ||
11 | import tools.refinery.store.query.literal.Literal; | ||
12 | import tools.refinery.store.query.substitution.MapBasedSubstitution; | ||
13 | import tools.refinery.store.query.substitution.StatelessSubstitution; | ||
14 | import tools.refinery.store.query.substitution.Substitution; | ||
15 | import tools.refinery.store.query.term.NodeVariable; | ||
16 | import tools.refinery.store.query.term.ParameterDirection; | ||
17 | import tools.refinery.store.query.term.Variable; | ||
18 | |||
19 | import java.util.*; | ||
20 | import java.util.function.Function; | ||
21 | |||
22 | class ClausePostProcessor { | ||
23 | private final Map<Variable, ParameterInfo> parameters; | ||
24 | private final List<Literal> literals; | ||
25 | private final Map<NodeVariable, NodeVariable> representatives = new LinkedHashMap<>(); | ||
26 | private final Map<NodeVariable, Set<NodeVariable>> equivalencePartition = new HashMap<>(); | ||
27 | private List<Literal> substitutedLiterals; | ||
28 | private final Set<Variable> existentiallyQuantifiedVariables = new LinkedHashSet<>(); | ||
29 | private Set<Variable> positiveVariables; | ||
30 | private Map<Variable, Set<SortableLiteral>> variableToLiteralInputMap; | ||
31 | private PriorityQueue<SortableLiteral> literalsWithAllInputsBound; | ||
32 | private LinkedHashSet<Literal> topologicallySortedLiterals; | ||
33 | |||
34 | public ClausePostProcessor(Map<Variable, ParameterInfo> parameters, List<Literal> literals) { | ||
35 | this.parameters = parameters; | ||
36 | this.literals = literals; | ||
37 | } | ||
38 | |||
39 | public Result postProcessClause() { | ||
40 | mergeEquivalentNodeVariables(); | ||
41 | substitutedLiterals = new ArrayList<>(literals.size()); | ||
42 | keepParameterEquivalences(); | ||
43 | substituteLiterals(); | ||
44 | computeExistentiallyQuantifiedVariables(); | ||
45 | computePositiveVariables(); | ||
46 | validatePositiveRepresentatives(); | ||
47 | validatePrivateVariables(); | ||
48 | topologicallySortLiterals(); | ||
49 | var filteredLiterals = new ArrayList<Literal>(topologicallySortedLiterals.size()); | ||
50 | for (var literal : topologicallySortedLiterals) { | ||
51 | var reducedLiteral = literal.reduce(); | ||
52 | if (BooleanLiteral.FALSE.equals(reducedLiteral)) { | ||
53 | return ConstantResult.ALWAYS_FALSE; | ||
54 | } else if (!BooleanLiteral.TRUE.equals(reducedLiteral)) { | ||
55 | filteredLiterals.add(reducedLiteral); | ||
56 | } | ||
57 | } | ||
58 | if (filteredLiterals.isEmpty()) { | ||
59 | return ConstantResult.ALWAYS_TRUE; | ||
60 | } | ||
61 | var clause = new DnfClause(Collections.unmodifiableSet(positiveVariables), | ||
62 | Collections.unmodifiableList(filteredLiterals)); | ||
63 | return new ClauseResult(clause); | ||
64 | } | ||
65 | |||
66 | private void mergeEquivalentNodeVariables() { | ||
67 | for (var literal : literals) { | ||
68 | if (isPositiveEquivalence(literal)) { | ||
69 | var equivalenceLiteral = (EquivalenceLiteral) literal; | ||
70 | mergeVariables(equivalenceLiteral.left(), equivalenceLiteral.right()); | ||
71 | } | ||
72 | } | ||
73 | } | ||
74 | |||
75 | private static boolean isPositiveEquivalence(Literal literal) { | ||
76 | return literal instanceof EquivalenceLiteral equivalenceLiteral && equivalenceLiteral.positive(); | ||
77 | } | ||
78 | |||
79 | private void mergeVariables(NodeVariable left, NodeVariable right) { | ||
80 | var leftRepresentative = getRepresentative(left); | ||
81 | var rightRepresentative = getRepresentative(right); | ||
82 | var leftInfo = parameters.get(leftRepresentative); | ||
83 | var rightInfo = parameters.get(rightRepresentative); | ||
84 | if (leftInfo != null && (rightInfo == null || leftInfo.index() <= rightInfo.index())) { | ||
85 | // Prefer the variable occurring earlier in the parameter list as a representative. | ||
86 | doMergeVariables(leftRepresentative, rightRepresentative); | ||
87 | } else { | ||
88 | doMergeVariables(rightRepresentative, leftRepresentative); | ||
89 | } | ||
90 | } | ||
91 | |||
92 | private void doMergeVariables(NodeVariable parentRepresentative, NodeVariable newChildRepresentative) { | ||
93 | var parentSet = getEquivalentVariables(parentRepresentative); | ||
94 | var childSet = getEquivalentVariables(newChildRepresentative); | ||
95 | parentSet.addAll(childSet); | ||
96 | equivalencePartition.remove(newChildRepresentative); | ||
97 | for (var childEquivalentNodeVariable : childSet) { | ||
98 | representatives.put(childEquivalentNodeVariable, parentRepresentative); | ||
99 | } | ||
100 | } | ||
101 | |||
102 | private NodeVariable getRepresentative(NodeVariable variable) { | ||
103 | return representatives.computeIfAbsent(variable, Function.identity()); | ||
104 | } | ||
105 | |||
106 | private Set<NodeVariable> getEquivalentVariables(NodeVariable variable) { | ||
107 | var representative = getRepresentative(variable); | ||
108 | if (!representative.equals(variable)) { | ||
109 | throw new AssertionError("NodeVariable %s already has a representative %s" | ||
110 | .formatted(variable, representative)); | ||
111 | } | ||
112 | return equivalencePartition.computeIfAbsent(variable, key -> { | ||
113 | var set = new HashSet<NodeVariable>(1); | ||
114 | set.add(key); | ||
115 | return set; | ||
116 | }); | ||
117 | } | ||
118 | |||
119 | private void keepParameterEquivalences() { | ||
120 | for (var pair : representatives.entrySet()) { | ||
121 | var left = pair.getKey(); | ||
122 | var right = pair.getValue(); | ||
123 | if (!left.equals(right) && parameters.containsKey(left) && parameters.containsKey(right)) { | ||
124 | substitutedLiterals.add(left.isEquivalent(right)); | ||
125 | } | ||
126 | } | ||
127 | } | ||
128 | |||
129 | private void substituteLiterals() { | ||
130 | Substitution substitution; | ||
131 | if (representatives.isEmpty()) { | ||
132 | substitution = null; | ||
133 | } else { | ||
134 | substitution = new MapBasedSubstitution(Collections.unmodifiableMap(representatives), | ||
135 | StatelessSubstitution.IDENTITY); | ||
136 | } | ||
137 | for (var literal : literals) { | ||
138 | if (isPositiveEquivalence(literal)) { | ||
139 | // We already retained all equivalences that cannot be replaced with substitutions in | ||
140 | // {@link#keepParameterEquivalences()}. | ||
141 | continue; | ||
142 | } | ||
143 | var substitutedLiteral = substitution == null ? literal : literal.substitute(substitution); | ||
144 | substitutedLiterals.add(substitutedLiteral); | ||
145 | } | ||
146 | } | ||
147 | |||
148 | private void computeExistentiallyQuantifiedVariables() { | ||
149 | for (var literal : substitutedLiterals) { | ||
150 | for (var variable : literal.getOutputVariables()) { | ||
151 | boolean added = existentiallyQuantifiedVariables.add(variable); | ||
152 | if (!variable.isUnifiable()) { | ||
153 | var parameterInfo = parameters.get(variable); | ||
154 | if (parameterInfo != null && parameterInfo.direction() == ParameterDirection.IN) { | ||
155 | throw new IllegalArgumentException("Trying to bind %s parameter %s" | ||
156 | .formatted(ParameterDirection.IN, variable)); | ||
157 | } | ||
158 | if (!added) { | ||
159 | throw new IllegalArgumentException("Variable %s has multiple assigned values" | ||
160 | .formatted(variable)); | ||
161 | } | ||
162 | } | ||
163 | } | ||
164 | } | ||
165 | } | ||
166 | |||
167 | private void computePositiveVariables() { | ||
168 | positiveVariables = new LinkedHashSet<>(); | ||
169 | for (var pair : parameters.entrySet()) { | ||
170 | var variable = pair.getKey(); | ||
171 | if (pair.getValue().direction() == ParameterDirection.IN) { | ||
172 | // Inputs count as positive, because they are already bound when we evaluate literals. | ||
173 | positiveVariables.add(variable); | ||
174 | } else if (!existentiallyQuantifiedVariables.contains(variable)) { | ||
175 | throw new IllegalArgumentException("Unbound %s parameter %s" | ||
176 | .formatted(ParameterDirection.OUT, variable)); | ||
177 | } | ||
178 | } | ||
179 | positiveVariables.addAll(existentiallyQuantifiedVariables); | ||
180 | } | ||
181 | |||
182 | private void validatePositiveRepresentatives() { | ||
183 | for (var pair : equivalencePartition.entrySet()) { | ||
184 | var representative = pair.getKey(); | ||
185 | if (!positiveVariables.contains(representative)) { | ||
186 | var variableSet = pair.getValue(); | ||
187 | throw new IllegalArgumentException("Variables %s were merged by equivalence but are not bound" | ||
188 | .formatted(variableSet)); | ||
189 | } | ||
190 | } | ||
191 | } | ||
192 | |||
193 | private void validatePrivateVariables() { | ||
194 | var negativeVariablesMap = new HashMap<Variable, Literal>(); | ||
195 | for (var literal : substitutedLiterals) { | ||
196 | for (var variable : literal.getPrivateVariables(positiveVariables)) { | ||
197 | var oldLiteral = negativeVariablesMap.put(variable, literal); | ||
198 | if (oldLiteral != null) { | ||
199 | throw new IllegalArgumentException("Unbound variable %s appears in multiple literals %s and %s" | ||
200 | .formatted(variable, oldLiteral, literal)); | ||
201 | } | ||
202 | } | ||
203 | } | ||
204 | } | ||
205 | |||
206 | private void topologicallySortLiterals() { | ||
207 | topologicallySortedLiterals = new LinkedHashSet<>(substitutedLiterals.size()); | ||
208 | variableToLiteralInputMap = new HashMap<>(); | ||
209 | literalsWithAllInputsBound = new PriorityQueue<>(); | ||
210 | int size = substitutedLiterals.size(); | ||
211 | for (int i = 0; i < size; i++) { | ||
212 | var literal = substitutedLiterals.get(i); | ||
213 | var sortableLiteral = new SortableLiteral(i, literal); | ||
214 | sortableLiteral.enqueue(); | ||
215 | } | ||
216 | while (!literalsWithAllInputsBound.isEmpty()) { | ||
217 | var variable = literalsWithAllInputsBound.remove(); | ||
218 | variable.addToSortedLiterals(); | ||
219 | } | ||
220 | if (!variableToLiteralInputMap.isEmpty()) { | ||
221 | throw new IllegalArgumentException("Unbound input variables %s" | ||
222 | .formatted(variableToLiteralInputMap.keySet())); | ||
223 | } | ||
224 | } | ||
225 | |||
226 | private class SortableLiteral implements Comparable<SortableLiteral> { | ||
227 | private final int index; | ||
228 | private final Literal literal; | ||
229 | private final Set<Variable> remainingInputs; | ||
230 | |||
231 | private SortableLiteral(int index, Literal literal) { | ||
232 | this.index = index; | ||
233 | this.literal = literal; | ||
234 | remainingInputs = new HashSet<>(literal.getInputVariables(positiveVariables)); | ||
235 | for (var pair : parameters.entrySet()) { | ||
236 | if (pair.getValue().direction() == ParameterDirection.IN) { | ||
237 | remainingInputs.remove(pair.getKey()); | ||
238 | } | ||
239 | } | ||
240 | } | ||
241 | |||
242 | public void enqueue() { | ||
243 | if (allInputsBound()) { | ||
244 | addToAllInputsBoundQueue(); | ||
245 | } else { | ||
246 | addToVariableToLiteralInputMap(); | ||
247 | } | ||
248 | } | ||
249 | |||
250 | private void bindVariable(Variable input) { | ||
251 | if (!remainingInputs.remove(input)) { | ||
252 | throw new AssertionError("Already processed input %s of literal %s".formatted(input, literal)); | ||
253 | } | ||
254 | if (allInputsBound()) { | ||
255 | addToAllInputsBoundQueue(); | ||
256 | } | ||
257 | } | ||
258 | |||
259 | private boolean allInputsBound() { | ||
260 | return remainingInputs.isEmpty(); | ||
261 | } | ||
262 | |||
263 | private void addToVariableToLiteralInputMap() { | ||
264 | for (var inputVariable : remainingInputs) { | ||
265 | var literalSetForInput = variableToLiteralInputMap.computeIfAbsent( | ||
266 | inputVariable, key -> new HashSet<>()); | ||
267 | literalSetForInput.add(this); | ||
268 | } | ||
269 | } | ||
270 | |||
271 | private void addToAllInputsBoundQueue() { | ||
272 | literalsWithAllInputsBound.add(this); | ||
273 | } | ||
274 | |||
275 | public void addToSortedLiterals() { | ||
276 | if (!allInputsBound()) { | ||
277 | throw new AssertionError("Inputs %s of %s are not yet bound".formatted(remainingInputs, literal)); | ||
278 | } | ||
279 | // Add literal if we haven't yet added a duplicate of this literal. | ||
280 | topologicallySortedLiterals.add(literal); | ||
281 | for (var variable : literal.getOutputVariables()) { | ||
282 | var literalSetForInput = variableToLiteralInputMap.remove(variable); | ||
283 | if (literalSetForInput == null) { | ||
284 | continue; | ||
285 | } | ||
286 | for (var targetSortableLiteral : literalSetForInput) { | ||
287 | targetSortableLiteral.bindVariable(variable); | ||
288 | } | ||
289 | } | ||
290 | } | ||
291 | |||
292 | @Override | ||
293 | public int compareTo(@NotNull ClausePostProcessor.SortableLiteral other) { | ||
294 | return Integer.compare(index, other.index); | ||
295 | } | ||
296 | |||
297 | @Override | ||
298 | public boolean equals(Object o) { | ||
299 | if (this == o) return true; | ||
300 | if (o == null || getClass() != o.getClass()) return false; | ||
301 | SortableLiteral that = (SortableLiteral) o; | ||
302 | return index == that.index && Objects.equals(literal, that.literal); | ||
303 | } | ||
304 | |||
305 | @Override | ||
306 | public int hashCode() { | ||
307 | return Objects.hash(index, literal); | ||
308 | } | ||
309 | } | ||
310 | |||
311 | public sealed interface Result permits ClauseResult, ConstantResult { | ||
312 | } | ||
313 | |||
314 | public record ClauseResult(DnfClause clause) implements Result { | ||
315 | } | ||
316 | |||
317 | public enum ConstantResult implements Result { | ||
318 | ALWAYS_TRUE, | ||
319 | ALWAYS_FALSE | ||
320 | } | ||
321 | |||
322 | public record ParameterInfo(ParameterDirection direction, int index) { | ||
323 | } | ||
324 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/Dnf.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/Dnf.java new file mode 100644 index 00000000..50b245f7 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/Dnf.java | |||
@@ -0,0 +1,213 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf; | ||
7 | |||
8 | import tools.refinery.store.query.Constraint; | ||
9 | import tools.refinery.store.query.literal.Reduction; | ||
10 | import tools.refinery.store.query.equality.DnfEqualityChecker; | ||
11 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | ||
12 | import tools.refinery.store.query.term.Parameter; | ||
13 | import tools.refinery.store.query.term.Variable; | ||
14 | |||
15 | import java.util.Collection; | ||
16 | import java.util.Collections; | ||
17 | import java.util.List; | ||
18 | import java.util.Set; | ||
19 | import java.util.function.Consumer; | ||
20 | import java.util.stream.Collectors; | ||
21 | |||
22 | public final class Dnf implements Constraint { | ||
23 | private static final String INDENTATION = " "; | ||
24 | |||
25 | private final String name; | ||
26 | private final String uniqueName; | ||
27 | private final List<SymbolicParameter> symbolicParameters; | ||
28 | private final List<FunctionalDependency<Variable>> functionalDependencies; | ||
29 | private final List<DnfClause> clauses; | ||
30 | |||
31 | Dnf(String name, List<SymbolicParameter> symbolicParameters, | ||
32 | List<FunctionalDependency<Variable>> functionalDependencies, List<DnfClause> clauses) { | ||
33 | validateFunctionalDependencies(symbolicParameters, functionalDependencies); | ||
34 | this.name = name; | ||
35 | this.uniqueName = DnfUtils.generateUniqueName(name); | ||
36 | this.symbolicParameters = symbolicParameters; | ||
37 | this.functionalDependencies = functionalDependencies; | ||
38 | this.clauses = clauses; | ||
39 | } | ||
40 | |||
41 | private static void validateFunctionalDependencies( | ||
42 | Collection<SymbolicParameter> symbolicParameters, | ||
43 | Collection<FunctionalDependency<Variable>> functionalDependencies) { | ||
44 | var parameterSet = symbolicParameters.stream().map(SymbolicParameter::getVariable).collect(Collectors.toSet()); | ||
45 | for (var functionalDependency : functionalDependencies) { | ||
46 | validateParameters(symbolicParameters, parameterSet, functionalDependency.forEach(), functionalDependency); | ||
47 | validateParameters(symbolicParameters, parameterSet, functionalDependency.unique(), functionalDependency); | ||
48 | } | ||
49 | } | ||
50 | |||
51 | private static void validateParameters(Collection<SymbolicParameter> symbolicParameters, | ||
52 | Set<Variable> parameterSet, Collection<Variable> toValidate, | ||
53 | FunctionalDependency<Variable> functionalDependency) { | ||
54 | for (var variable : toValidate) { | ||
55 | if (!parameterSet.contains(variable)) { | ||
56 | throw new IllegalArgumentException( | ||
57 | "Variable %s of functional dependency %s does not appear in the parameter list %s" | ||
58 | .formatted(variable, functionalDependency, symbolicParameters)); | ||
59 | } | ||
60 | } | ||
61 | } | ||
62 | |||
63 | @Override | ||
64 | public String name() { | ||
65 | return name == null ? uniqueName : name; | ||
66 | } | ||
67 | |||
68 | public boolean isExplicitlyNamed() { | ||
69 | return name == null; | ||
70 | } | ||
71 | |||
72 | public String getUniqueName() { | ||
73 | return uniqueName; | ||
74 | } | ||
75 | |||
76 | public List<SymbolicParameter> getSymbolicParameters() { | ||
77 | return symbolicParameters; | ||
78 | } | ||
79 | |||
80 | public List<Parameter> getParameters() { | ||
81 | return Collections.unmodifiableList(symbolicParameters); | ||
82 | } | ||
83 | |||
84 | public List<FunctionalDependency<Variable>> getFunctionalDependencies() { | ||
85 | return functionalDependencies; | ||
86 | } | ||
87 | |||
88 | @Override | ||
89 | public int arity() { | ||
90 | return symbolicParameters.size(); | ||
91 | } | ||
92 | |||
93 | public List<DnfClause> getClauses() { | ||
94 | return clauses; | ||
95 | } | ||
96 | |||
97 | public RelationalQuery asRelation() { | ||
98 | return new RelationalQuery(this); | ||
99 | } | ||
100 | |||
101 | public <T> FunctionalQuery<T> asFunction(Class<T> type) { | ||
102 | return new FunctionalQuery<>(this, type); | ||
103 | } | ||
104 | |||
105 | @Override | ||
106 | public Reduction getReduction() { | ||
107 | if (clauses.isEmpty()) { | ||
108 | return Reduction.ALWAYS_FALSE; | ||
109 | } | ||
110 | for (var clause : clauses) { | ||
111 | if (clause.literals().isEmpty()) { | ||
112 | return Reduction.ALWAYS_TRUE; | ||
113 | } | ||
114 | } | ||
115 | return Reduction.NOT_REDUCIBLE; | ||
116 | } | ||
117 | |||
118 | public boolean equalsWithSubstitution(DnfEqualityChecker callEqualityChecker, Dnf other) { | ||
119 | if (arity() != other.arity()) { | ||
120 | return false; | ||
121 | } | ||
122 | for (int i = 0; i < arity(); i++) { | ||
123 | if (!symbolicParameters.get(i).getDirection().equals(other.getSymbolicParameters().get(i).getDirection())) { | ||
124 | return false; | ||
125 | } | ||
126 | } | ||
127 | int numClauses = clauses.size(); | ||
128 | if (numClauses != other.clauses.size()) { | ||
129 | return false; | ||
130 | } | ||
131 | for (int i = 0; i < numClauses; i++) { | ||
132 | var literalEqualityHelper = new LiteralEqualityHelper(callEqualityChecker, symbolicParameters, | ||
133 | other.symbolicParameters); | ||
134 | if (!clauses.get(i).equalsWithSubstitution(literalEqualityHelper, other.clauses.get(i))) { | ||
135 | return false; | ||
136 | } | ||
137 | } | ||
138 | return true; | ||
139 | } | ||
140 | |||
141 | @Override | ||
142 | public boolean equals(LiteralEqualityHelper helper, Constraint other) { | ||
143 | if (other instanceof Dnf otherDnf) { | ||
144 | return helper.dnfEqual(this, otherDnf); | ||
145 | } | ||
146 | return false; | ||
147 | } | ||
148 | |||
149 | @Override | ||
150 | public String toString() { | ||
151 | return "%s/%d".formatted(name(), arity()); | ||
152 | } | ||
153 | |||
154 | @Override | ||
155 | public String toReferenceString() { | ||
156 | return "@Dnf " + name(); | ||
157 | } | ||
158 | |||
159 | public String toDefinitionString() { | ||
160 | var builder = new StringBuilder(); | ||
161 | builder.append("pred ").append(name()).append("("); | ||
162 | var parameterIterator = symbolicParameters.iterator(); | ||
163 | if (parameterIterator.hasNext()) { | ||
164 | builder.append(parameterIterator.next()); | ||
165 | while (parameterIterator.hasNext()) { | ||
166 | builder.append(", ").append(parameterIterator.next()); | ||
167 | } | ||
168 | } | ||
169 | builder.append(") <->"); | ||
170 | var clauseIterator = clauses.iterator(); | ||
171 | if (clauseIterator.hasNext()) { | ||
172 | appendClause(clauseIterator.next(), builder); | ||
173 | while (clauseIterator.hasNext()) { | ||
174 | builder.append("\n;"); | ||
175 | appendClause(clauseIterator.next(), builder); | ||
176 | } | ||
177 | } else { | ||
178 | builder.append("\n").append(INDENTATION).append("<no clauses>"); | ||
179 | } | ||
180 | builder.append(".\n"); | ||
181 | return builder.toString(); | ||
182 | } | ||
183 | |||
184 | private static void appendClause(DnfClause clause, StringBuilder builder) { | ||
185 | var iterator = clause.literals().iterator(); | ||
186 | if (!iterator.hasNext()) { | ||
187 | builder.append("\n").append(INDENTATION).append("<empty>"); | ||
188 | return; | ||
189 | } | ||
190 | builder.append("\n").append(INDENTATION).append(iterator.next()); | ||
191 | while (iterator.hasNext()) { | ||
192 | builder.append(",\n").append(INDENTATION).append(iterator.next()); | ||
193 | } | ||
194 | } | ||
195 | |||
196 | public static DnfBuilder builder() { | ||
197 | return builder(null); | ||
198 | } | ||
199 | |||
200 | public static DnfBuilder builder(String name) { | ||
201 | return new DnfBuilder(name); | ||
202 | } | ||
203 | |||
204 | public static Dnf of(Consumer<DnfBuilder> callback) { | ||
205 | return of(null, callback); | ||
206 | } | ||
207 | |||
208 | public static Dnf of(String name, Consumer<DnfBuilder> callback) { | ||
209 | var builder = builder(name); | ||
210 | callback.accept(builder); | ||
211 | return builder.build(); | ||
212 | } | ||
213 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/DnfBuilder.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/DnfBuilder.java new file mode 100644 index 00000000..8e38ca6b --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/DnfBuilder.java | |||
@@ -0,0 +1,262 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.callback.*; | ||
9 | import tools.refinery.store.query.literal.Literal; | ||
10 | import tools.refinery.store.query.term.DataVariable; | ||
11 | import tools.refinery.store.query.term.NodeVariable; | ||
12 | import tools.refinery.store.query.term.ParameterDirection; | ||
13 | import tools.refinery.store.query.term.Variable; | ||
14 | |||
15 | import java.util.*; | ||
16 | |||
17 | @SuppressWarnings("UnusedReturnValue") | ||
18 | public final class DnfBuilder { | ||
19 | private final String name; | ||
20 | private final Set<Variable> parameterVariables = new LinkedHashSet<>(); | ||
21 | private final List<SymbolicParameter> parameters = new ArrayList<>(); | ||
22 | private final List<FunctionalDependency<Variable>> functionalDependencies = new ArrayList<>(); | ||
23 | private final List<List<Literal>> clauses = new ArrayList<>(); | ||
24 | |||
25 | DnfBuilder(String name) { | ||
26 | this.name = name; | ||
27 | } | ||
28 | |||
29 | public NodeVariable parameter() { | ||
30 | return parameter((String) null); | ||
31 | } | ||
32 | |||
33 | public NodeVariable parameter(String name) { | ||
34 | return parameter(name, ParameterDirection.OUT); | ||
35 | } | ||
36 | |||
37 | public NodeVariable parameter(ParameterDirection direction) { | ||
38 | return parameter((String) null, direction); | ||
39 | } | ||
40 | |||
41 | public NodeVariable parameter(String name, ParameterDirection direction) { | ||
42 | var variable = Variable.of(name); | ||
43 | parameter(variable, direction); | ||
44 | return variable; | ||
45 | } | ||
46 | |||
47 | public <T> DataVariable<T> parameter(Class<T> type) { | ||
48 | return parameter(null, type); | ||
49 | } | ||
50 | |||
51 | public <T> DataVariable<T> parameter(String name, Class<T> type) { | ||
52 | return parameter(name, type, ParameterDirection.OUT); | ||
53 | } | ||
54 | |||
55 | public <T> DataVariable<T> parameter(Class<T> type, ParameterDirection direction) { | ||
56 | return parameter(null, type, direction); | ||
57 | } | ||
58 | |||
59 | public <T> DataVariable<T> parameter(String name, Class<T> type, ParameterDirection direction) { | ||
60 | var variable = Variable.of(name, type); | ||
61 | parameter(variable, direction); | ||
62 | return variable; | ||
63 | } | ||
64 | |||
65 | public DnfBuilder parameter(Variable variable) { | ||
66 | return parameter(variable, ParameterDirection.OUT); | ||
67 | } | ||
68 | |||
69 | public DnfBuilder parameter(Variable variable, ParameterDirection direction) { | ||
70 | return symbolicParameter(new SymbolicParameter(variable, direction)); | ||
71 | } | ||
72 | |||
73 | public DnfBuilder parameters(Variable... variables) { | ||
74 | return parameters(List.of(variables)); | ||
75 | } | ||
76 | |||
77 | public DnfBuilder parameters(Collection<? extends Variable> variables) { | ||
78 | return parameters(variables, ParameterDirection.OUT); | ||
79 | } | ||
80 | |||
81 | public DnfBuilder parameters(Collection<? extends Variable> variables, ParameterDirection direction) { | ||
82 | for (var variable : variables) { | ||
83 | parameter(variable, direction); | ||
84 | } | ||
85 | return this; | ||
86 | } | ||
87 | |||
88 | public DnfBuilder symbolicParameter(SymbolicParameter symbolicParameter) { | ||
89 | var variable = symbolicParameter.getVariable(); | ||
90 | if (!parameterVariables.add(variable)) { | ||
91 | throw new IllegalArgumentException("Variable %s is already on the parameter list %s" | ||
92 | .formatted(variable, parameters)); | ||
93 | } | ||
94 | parameters.add(symbolicParameter); | ||
95 | return this; | ||
96 | } | ||
97 | |||
98 | public DnfBuilder symbolicParameters(SymbolicParameter... symbolicParameters) { | ||
99 | return symbolicParameters(List.of(symbolicParameters)); | ||
100 | } | ||
101 | |||
102 | public DnfBuilder symbolicParameters(Collection<SymbolicParameter> symbolicParameters) { | ||
103 | for (var symbolicParameter : symbolicParameters) { | ||
104 | symbolicParameter(symbolicParameter); | ||
105 | } | ||
106 | return this; | ||
107 | } | ||
108 | |||
109 | public DnfBuilder functionalDependencies(Collection<FunctionalDependency<Variable>> functionalDependencies) { | ||
110 | this.functionalDependencies.addAll(functionalDependencies); | ||
111 | return this; | ||
112 | } | ||
113 | |||
114 | public DnfBuilder functionalDependency(FunctionalDependency<Variable> functionalDependency) { | ||
115 | functionalDependencies.add(functionalDependency); | ||
116 | return this; | ||
117 | } | ||
118 | |||
119 | public DnfBuilder functionalDependency(Set<? extends Variable> forEach, Set<? extends Variable> unique) { | ||
120 | return functionalDependency(new FunctionalDependency<>(Set.copyOf(forEach), Set.copyOf(unique))); | ||
121 | } | ||
122 | |||
123 | public DnfBuilder clause(ClauseCallback0 callback) { | ||
124 | return clause(callback.toLiterals()); | ||
125 | } | ||
126 | |||
127 | public DnfBuilder clause(ClauseCallback1Data0 callback) { | ||
128 | return clause(callback.toLiterals(Variable.of("v1"))); | ||
129 | } | ||
130 | |||
131 | public <T> DnfBuilder clause(Class<T> type1, ClauseCallback1Data1<T> callback) { | ||
132 | return clause(callback.toLiterals(Variable.of("v1", type1))); | ||
133 | } | ||
134 | |||
135 | public DnfBuilder clause(ClauseCallback2Data0 callback) { | ||
136 | return clause(callback.toLiterals(Variable.of("v1"), Variable.of("v2"))); | ||
137 | } | ||
138 | |||
139 | public <T> DnfBuilder clause(Class<T> type1, ClauseCallback2Data1<T> callback) { | ||
140 | return clause(callback.toLiterals(Variable.of("v1"), Variable.of("d1", type1))); | ||
141 | } | ||
142 | |||
143 | public <T1, T2> DnfBuilder clause(Class<T1> type1, Class<T2> type2, ClauseCallback2Data2<T1, T2> callback) { | ||
144 | return clause(callback.toLiterals(Variable.of("d1", type1), Variable.of("d2", type2))); | ||
145 | } | ||
146 | |||
147 | public DnfBuilder clause(ClauseCallback3Data0 callback) { | ||
148 | return clause(callback.toLiterals(Variable.of("v1"), Variable.of("v2"), Variable.of("v3"))); | ||
149 | } | ||
150 | |||
151 | public <T> DnfBuilder clause(Class<T> type1, ClauseCallback3Data1<T> callback) { | ||
152 | return clause(callback.toLiterals(Variable.of("v1"), Variable.of("v2"), Variable.of("d1", type1))); | ||
153 | } | ||
154 | |||
155 | public <T1, T2> DnfBuilder clause(Class<T1> type1, Class<T2> type2, ClauseCallback3Data2<T1, T2> callback) { | ||
156 | return clause(callback.toLiterals(Variable.of("v1"), Variable.of("d1", type1), Variable.of("d2", type2))); | ||
157 | } | ||
158 | |||
159 | public <T1, T2, T3> DnfBuilder clause(Class<T1> type1, Class<T2> type2, Class<T3> type3, | ||
160 | ClauseCallback3Data3<T1, T2, T3> callback) { | ||
161 | return clause(callback.toLiterals(Variable.of("d1", type1), Variable.of("d2", type2), | ||
162 | Variable.of("d3", type3))); | ||
163 | } | ||
164 | |||
165 | public DnfBuilder clause(ClauseCallback4Data0 callback) { | ||
166 | return clause(callback.toLiterals(Variable.of("v1"), Variable.of("v2"), Variable.of("v3"), Variable.of("v4"))); | ||
167 | } | ||
168 | |||
169 | public <T> DnfBuilder clause(Class<T> type1, ClauseCallback4Data1<T> callback) { | ||
170 | return clause(callback.toLiterals(Variable.of("v1"), Variable.of("v2"), Variable.of("v3"), Variable.of("d1", | ||
171 | type1))); | ||
172 | } | ||
173 | |||
174 | public <T1, T2> DnfBuilder clause(Class<T1> type1, Class<T2> type2, ClauseCallback4Data2<T1, T2> callback) { | ||
175 | return clause(callback.toLiterals(Variable.of("v1"), Variable.of("v2"), Variable.of("d1", type1), | ||
176 | Variable.of("d2", type2))); | ||
177 | } | ||
178 | |||
179 | public <T1, T2, T3> DnfBuilder clause(Class<T1> type1, Class<T2> type2, Class<T3> type3, | ||
180 | ClauseCallback4Data3<T1, T2, T3> callback) { | ||
181 | return clause(callback.toLiterals(Variable.of("v1"), Variable.of("d1", type1), Variable.of("d2", type2), | ||
182 | Variable.of("d3", type3))); | ||
183 | } | ||
184 | |||
185 | public <T1, T2, T3, T4> DnfBuilder clause(Class<T1> type1, Class<T2> type2, Class<T3> type3, Class<T4> type4, | ||
186 | ClauseCallback4Data4<T1, T2, T3, T4> callback) { | ||
187 | return clause(callback.toLiterals(Variable.of("d1", type1), Variable.of("d2", type2), | ||
188 | Variable.of("d3", type3), Variable.of("d4", type4))); | ||
189 | } | ||
190 | |||
191 | public DnfBuilder clause(Literal... literals) { | ||
192 | clause(List.of(literals)); | ||
193 | return this; | ||
194 | } | ||
195 | |||
196 | public DnfBuilder clause(Collection<? extends Literal> literals) { | ||
197 | clauses.add(List.copyOf(literals)); | ||
198 | return this; | ||
199 | } | ||
200 | |||
201 | <T> void output(DataVariable<T> outputVariable) { | ||
202 | // Copy parameter variables to exclude the newly added {@code outputVariable}. | ||
203 | var fromParameters = Set.copyOf(parameterVariables); | ||
204 | parameter(outputVariable, ParameterDirection.OUT); | ||
205 | functionalDependency(fromParameters, Set.of(outputVariable)); | ||
206 | } | ||
207 | |||
208 | public Dnf build() { | ||
209 | var postProcessedClauses = postProcessClauses(); | ||
210 | return new Dnf(name, Collections.unmodifiableList(parameters), | ||
211 | Collections.unmodifiableList(functionalDependencies), | ||
212 | Collections.unmodifiableList(postProcessedClauses)); | ||
213 | } | ||
214 | |||
215 | private List<DnfClause> postProcessClauses() { | ||
216 | var parameterInfoMap = getParameterInfoMap(); | ||
217 | var postProcessedClauses = new ArrayList<DnfClause>(clauses.size()); | ||
218 | for (var literals : clauses) { | ||
219 | var postProcessor = new ClausePostProcessor(parameterInfoMap, literals); | ||
220 | var result = postProcessor.postProcessClause(); | ||
221 | if (result instanceof ClausePostProcessor.ClauseResult clauseResult) { | ||
222 | postProcessedClauses.add(clauseResult.clause()); | ||
223 | } else if (result instanceof ClausePostProcessor.ConstantResult constantResult) { | ||
224 | switch (constantResult) { | ||
225 | case ALWAYS_TRUE -> { | ||
226 | var inputVariables = getInputVariables(); | ||
227 | return List.of(new DnfClause(inputVariables, List.of())); | ||
228 | } | ||
229 | case ALWAYS_FALSE -> { | ||
230 | // Skip this clause because it can never match. | ||
231 | } | ||
232 | default -> throw new IllegalStateException("Unexpected ClausePostProcessor.ConstantResult: " + | ||
233 | constantResult); | ||
234 | } | ||
235 | } else { | ||
236 | throw new IllegalStateException("Unexpected ClausePostProcessor.Result: " + result); | ||
237 | } | ||
238 | } | ||
239 | return postProcessedClauses; | ||
240 | } | ||
241 | |||
242 | private Map<Variable, ClausePostProcessor.ParameterInfo> getParameterInfoMap() { | ||
243 | var mutableParameterInfoMap = new LinkedHashMap<Variable, ClausePostProcessor.ParameterInfo>(); | ||
244 | int arity = parameters.size(); | ||
245 | for (int i = 0; i < arity; i++) { | ||
246 | var parameter = parameters.get(i); | ||
247 | mutableParameterInfoMap.put(parameter.getVariable(), | ||
248 | new ClausePostProcessor.ParameterInfo(parameter.getDirection(), i)); | ||
249 | } | ||
250 | return Collections.unmodifiableMap(mutableParameterInfoMap); | ||
251 | } | ||
252 | |||
253 | private Set<Variable> getInputVariables() { | ||
254 | var inputParameters = new LinkedHashSet<Variable>(); | ||
255 | for (var parameter : parameters) { | ||
256 | if (parameter.getDirection() == ParameterDirection.IN) { | ||
257 | inputParameters.add(parameter.getVariable()); | ||
258 | } | ||
259 | } | ||
260 | return Collections.unmodifiableSet(inputParameters); | ||
261 | } | ||
262 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/DnfClause.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/DnfClause.java new file mode 100644 index 00000000..fdd0d47c --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/DnfClause.java | |||
@@ -0,0 +1,28 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf; | ||
7 | |||
8 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | ||
9 | import tools.refinery.store.query.literal.Literal; | ||
10 | import tools.refinery.store.query.term.Variable; | ||
11 | |||
12 | import java.util.List; | ||
13 | import java.util.Set; | ||
14 | |||
15 | public record DnfClause(Set<Variable> positiveVariables, List<Literal> literals) { | ||
16 | public boolean equalsWithSubstitution(LiteralEqualityHelper helper, DnfClause other) { | ||
17 | int size = literals.size(); | ||
18 | if (size != other.literals.size()) { | ||
19 | return false; | ||
20 | } | ||
21 | for (int i = 0; i < size; i++) { | ||
22 | if (!literals.get(i).equalsWithSubstitution(helper, other.literals.get(i))) { | ||
23 | return false; | ||
24 | } | ||
25 | } | ||
26 | return true; | ||
27 | } | ||
28 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/DNFUtils.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/DnfUtils.java index 0ef77d49..65ab3634 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/query/DNFUtils.java +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/DnfUtils.java | |||
@@ -1,9 +1,14 @@ | |||
1 | package tools.refinery.store.query; | 1 | /* |
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf; | ||
2 | 7 | ||
3 | import java.util.UUID; | 8 | import java.util.UUID; |
4 | 9 | ||
5 | public final class DNFUtils { | 10 | public final class DnfUtils { |
6 | private DNFUtils() { | 11 | private DnfUtils() { |
7 | throw new IllegalStateException("This is a static utility class and should not be instantiated directly"); | 12 | throw new IllegalStateException("This is a static utility class and should not be instantiated directly"); |
8 | } | 13 | } |
9 | 14 | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/FunctionalDependency.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/FunctionalDependency.java index 63a81713..b00b2cb7 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/query/FunctionalDependency.java +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/FunctionalDependency.java | |||
@@ -1,4 +1,9 @@ | |||
1 | package tools.refinery.store.query; | 1 | /* |
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf; | ||
2 | 7 | ||
3 | import java.util.HashSet; | 8 | import java.util.HashSet; |
4 | import java.util.Set; | 9 | import java.util.Set; |
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/FunctionalQuery.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/FunctionalQuery.java new file mode 100644 index 00000000..5a32b1ba --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/FunctionalQuery.java | |||
@@ -0,0 +1,99 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf; | ||
7 | |||
8 | import tools.refinery.store.query.literal.CallPolarity; | ||
9 | import tools.refinery.store.query.term.Aggregator; | ||
10 | import tools.refinery.store.query.term.AssignedValue; | ||
11 | import tools.refinery.store.query.term.NodeVariable; | ||
12 | import tools.refinery.store.query.term.Variable; | ||
13 | |||
14 | import java.util.ArrayList; | ||
15 | import java.util.List; | ||
16 | import java.util.Objects; | ||
17 | |||
18 | public final class FunctionalQuery<T> extends Query<T> { | ||
19 | private final Class<T> type; | ||
20 | |||
21 | FunctionalQuery(Dnf dnf, Class<T> type) { | ||
22 | super(dnf); | ||
23 | var parameters = dnf.getSymbolicParameters(); | ||
24 | int outputIndex = dnf.arity() - 1; | ||
25 | for (int i = 0; i < outputIndex; i++) { | ||
26 | var parameter = parameters.get(i); | ||
27 | var parameterType = parameter.tryGetType(); | ||
28 | if (parameterType.isPresent()) { | ||
29 | throw new IllegalArgumentException("Expected parameter %s of %s to be a node variable, got %s instead" | ||
30 | .formatted(parameter, dnf, parameterType.get().getName())); | ||
31 | } | ||
32 | } | ||
33 | var outputParameter = parameters.get(outputIndex); | ||
34 | var outputParameterType = outputParameter.tryGetType(); | ||
35 | if (outputParameterType.isEmpty() || !outputParameterType.get().equals(type)) { | ||
36 | throw new IllegalArgumentException("Expected parameter %s of %s to be %s, but got %s instead".formatted( | ||
37 | outputParameter, dnf, type, outputParameterType.map(Class::getName).orElse("node"))); | ||
38 | } | ||
39 | this.type = type; | ||
40 | } | ||
41 | |||
42 | @Override | ||
43 | public int arity() { | ||
44 | return getDnf().arity() - 1; | ||
45 | } | ||
46 | |||
47 | @Override | ||
48 | public Class<T> valueType() { | ||
49 | return type; | ||
50 | } | ||
51 | |||
52 | @Override | ||
53 | public T defaultValue() { | ||
54 | return null; | ||
55 | } | ||
56 | |||
57 | public AssignedValue<T> call(List<NodeVariable> arguments) { | ||
58 | return targetVariable -> { | ||
59 | var argumentsWithTarget = new ArrayList<Variable>(arguments.size() + 1); | ||
60 | argumentsWithTarget.addAll(arguments); | ||
61 | argumentsWithTarget.add(targetVariable); | ||
62 | return getDnf().call(CallPolarity.POSITIVE, argumentsWithTarget); | ||
63 | }; | ||
64 | } | ||
65 | |||
66 | public AssignedValue<T> call(NodeVariable... arguments) { | ||
67 | return call(List.of(arguments)); | ||
68 | } | ||
69 | |||
70 | public <R> AssignedValue<R> aggregate(Aggregator<R, T> aggregator, List<NodeVariable> arguments) { | ||
71 | return targetVariable -> { | ||
72 | var placeholderVariable = Variable.of(type); | ||
73 | var argumentsWithPlaceholder = new ArrayList<Variable>(arguments.size() + 1); | ||
74 | argumentsWithPlaceholder.addAll(arguments); | ||
75 | argumentsWithPlaceholder.add(placeholderVariable); | ||
76 | return getDnf() | ||
77 | .aggregateBy(placeholderVariable, aggregator, argumentsWithPlaceholder) | ||
78 | .toLiteral(targetVariable); | ||
79 | }; | ||
80 | } | ||
81 | |||
82 | public <R> AssignedValue<R> aggregate(Aggregator<R, T> aggregator, NodeVariable... arguments) { | ||
83 | return aggregate(aggregator, List.of(arguments)); | ||
84 | } | ||
85 | |||
86 | @Override | ||
87 | public boolean equals(Object o) { | ||
88 | if (this == o) return true; | ||
89 | if (o == null || getClass() != o.getClass()) return false; | ||
90 | if (!super.equals(o)) return false; | ||
91 | FunctionalQuery<?> that = (FunctionalQuery<?>) o; | ||
92 | return Objects.equals(type, that.type); | ||
93 | } | ||
94 | |||
95 | @Override | ||
96 | public int hashCode() { | ||
97 | return Objects.hash(super.hashCode(), type); | ||
98 | } | ||
99 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/FunctionalQueryBuilder.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/FunctionalQueryBuilder.java new file mode 100644 index 00000000..d1cd7ba8 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/FunctionalQueryBuilder.java | |||
@@ -0,0 +1,29 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf; | ||
7 | |||
8 | import tools.refinery.store.query.term.DataVariable; | ||
9 | |||
10 | public final class FunctionalQueryBuilder<T> extends AbstractQueryBuilder<FunctionalQueryBuilder<T>> { | ||
11 | private final DataVariable<T> outputVariable; | ||
12 | private final Class<T> type; | ||
13 | |||
14 | FunctionalQueryBuilder(DataVariable<T> outputVariable, DnfBuilder dnfBuilder, Class<T> type) { | ||
15 | super(dnfBuilder); | ||
16 | this.outputVariable = outputVariable; | ||
17 | this.type = type; | ||
18 | } | ||
19 | |||
20 | @Override | ||
21 | protected FunctionalQueryBuilder<T> self() { | ||
22 | return this; | ||
23 | } | ||
24 | |||
25 | public FunctionalQuery<T> build() { | ||
26 | dnfBuilder.output(outputVariable); | ||
27 | return dnfBuilder.build().asFunction(type); | ||
28 | } | ||
29 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/Query.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/Query.java new file mode 100644 index 00000000..aaa52ce6 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/Query.java | |||
@@ -0,0 +1,179 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.callback.*; | ||
9 | import tools.refinery.store.query.term.ParameterDirection; | ||
10 | import tools.refinery.store.query.term.Variable; | ||
11 | |||
12 | import java.util.Objects; | ||
13 | |||
14 | public abstract sealed class Query<T> implements AnyQuery permits FunctionalQuery, RelationalQuery { | ||
15 | private static final String OUTPUT_VARIABLE_NAME = "output"; | ||
16 | |||
17 | private final Dnf dnf; | ||
18 | |||
19 | protected Query(Dnf dnf) { | ||
20 | for (var parameter : dnf.getSymbolicParameters()) { | ||
21 | if (parameter.getDirection() != ParameterDirection.OUT) { | ||
22 | throw new IllegalArgumentException("Query parameter %s with direction %s is not allowed" | ||
23 | .formatted(parameter.getVariable(), parameter.getDirection())); | ||
24 | } | ||
25 | } | ||
26 | this.dnf = dnf; | ||
27 | } | ||
28 | |||
29 | @Override | ||
30 | public String name() { | ||
31 | return dnf.name(); | ||
32 | } | ||
33 | |||
34 | @Override | ||
35 | public Dnf getDnf() { | ||
36 | return dnf; | ||
37 | } | ||
38 | |||
39 | // Allow redeclaration of the method with refined return type. | ||
40 | @SuppressWarnings("squid:S3038") | ||
41 | @Override | ||
42 | public abstract Class<T> valueType(); | ||
43 | |||
44 | public abstract T defaultValue(); | ||
45 | |||
46 | @Override | ||
47 | public boolean equals(Object o) { | ||
48 | if (this == o) return true; | ||
49 | if (o == null || getClass() != o.getClass()) return false; | ||
50 | Query<?> that = (Query<?>) o; | ||
51 | return Objects.equals(dnf, that.dnf); | ||
52 | } | ||
53 | |||
54 | @Override | ||
55 | public int hashCode() { | ||
56 | return Objects.hash(dnf); | ||
57 | } | ||
58 | |||
59 | @Override | ||
60 | public String toString() { | ||
61 | return dnf.toString(); | ||
62 | } | ||
63 | |||
64 | public static QueryBuilder builder() { | ||
65 | return builder(null); | ||
66 | } | ||
67 | |||
68 | public static QueryBuilder builder(String name) { | ||
69 | return new QueryBuilder(name); | ||
70 | } | ||
71 | |||
72 | public static RelationalQuery of(QueryCallback0 callback) { | ||
73 | return of(null, callback); | ||
74 | } | ||
75 | |||
76 | public static RelationalQuery of(String name, QueryCallback0 callback) { | ||
77 | var builder = builder(name); | ||
78 | callback.accept(builder); | ||
79 | return builder.build(); | ||
80 | } | ||
81 | |||
82 | public static RelationalQuery of(QueryCallback1 callback) { | ||
83 | return of(null, callback); | ||
84 | } | ||
85 | |||
86 | public static RelationalQuery of(String name, QueryCallback1 callback) { | ||
87 | var builder = builder(name); | ||
88 | callback.accept(builder, builder.parameter("p1")); | ||
89 | return builder.build(); | ||
90 | } | ||
91 | |||
92 | public static RelationalQuery of(QueryCallback2 callback) { | ||
93 | return of(null, callback); | ||
94 | } | ||
95 | |||
96 | public static RelationalQuery of(String name, QueryCallback2 callback) { | ||
97 | var builder = builder(name); | ||
98 | callback.accept(builder, builder.parameter("p1"), builder.parameter("p2")); | ||
99 | return builder.build(); | ||
100 | } | ||
101 | |||
102 | public static RelationalQuery of(QueryCallback3 callback) { | ||
103 | return of(null, callback); | ||
104 | } | ||
105 | |||
106 | public static RelationalQuery of(String name, QueryCallback3 callback) { | ||
107 | var builder = builder(name); | ||
108 | callback.accept(builder, builder.parameter("p1"), builder.parameter("p2"), builder.parameter("p3")); | ||
109 | return builder.build(); | ||
110 | } | ||
111 | |||
112 | public static RelationalQuery of(QueryCallback4 callback) { | ||
113 | return of(null, callback); | ||
114 | } | ||
115 | |||
116 | public static RelationalQuery of(String name, QueryCallback4 callback) { | ||
117 | var builder = builder(name); | ||
118 | callback.accept(builder, builder.parameter("p1"), builder.parameter("p2"), builder.parameter("p3"), | ||
119 | builder.parameter("p4")); | ||
120 | return builder.build(); | ||
121 | } | ||
122 | |||
123 | public static <T> FunctionalQuery<T> of(Class<T> type, FunctionalQueryCallback0<T> callback) { | ||
124 | return of(null, type, callback); | ||
125 | } | ||
126 | |||
127 | public static <T> FunctionalQuery<T> of(String name, Class<T> type, FunctionalQueryCallback0<T> callback) { | ||
128 | var outputVariable = Variable.of(OUTPUT_VARIABLE_NAME, type); | ||
129 | var builder = builder(name).output(outputVariable); | ||
130 | callback.accept(builder, outputVariable); | ||
131 | return builder.build(); | ||
132 | } | ||
133 | |||
134 | public static <T> FunctionalQuery<T> of(Class<T> type, FunctionalQueryCallback1<T> callback) { | ||
135 | return of(null, type, callback); | ||
136 | } | ||
137 | |||
138 | public static <T> FunctionalQuery<T> of(String name, Class<T> type, FunctionalQueryCallback1<T> callback) { | ||
139 | var outputVariable = Variable.of(OUTPUT_VARIABLE_NAME, type); | ||
140 | var builder = builder(name).output(outputVariable); | ||
141 | callback.accept(builder, builder.parameter("p1"), outputVariable); | ||
142 | return builder.build(); | ||
143 | } | ||
144 | |||
145 | public static <T> FunctionalQuery<T> of(Class<T> type, FunctionalQueryCallback2<T> callback) { | ||
146 | return of(null, type, callback); | ||
147 | } | ||
148 | |||
149 | public static <T> FunctionalQuery<T> of(String name, Class<T> type, FunctionalQueryCallback2<T> callback) { | ||
150 | var outputVariable = Variable.of(OUTPUT_VARIABLE_NAME, type); | ||
151 | var builder = builder(name).output(outputVariable); | ||
152 | callback.accept(builder, builder.parameter("p1"), builder.parameter("p2"), outputVariable); | ||
153 | return builder.build(); | ||
154 | } | ||
155 | |||
156 | public static <T> FunctionalQuery<T> of(Class<T> type, FunctionalQueryCallback3<T> callback) { | ||
157 | return of(null, type, callback); | ||
158 | } | ||
159 | |||
160 | public static <T> FunctionalQuery<T> of(String name, Class<T> type, FunctionalQueryCallback3<T> callback) { | ||
161 | var outputVariable = Variable.of(OUTPUT_VARIABLE_NAME, type); | ||
162 | var builder = builder(name).output(outputVariable); | ||
163 | callback.accept(builder, builder.parameter("p1"), builder.parameter("p2"), builder.parameter("p3"), | ||
164 | outputVariable); | ||
165 | return builder.build(); | ||
166 | } | ||
167 | |||
168 | public static <T> FunctionalQuery<T> of(Class<T> type, FunctionalQueryCallback4<T> callback) { | ||
169 | return of(null, type, callback); | ||
170 | } | ||
171 | |||
172 | public static <T> FunctionalQuery<T> of(String name, Class<T> type, FunctionalQueryCallback4<T> callback) { | ||
173 | var outputVariable = Variable.of(OUTPUT_VARIABLE_NAME, type); | ||
174 | var builder = builder(name).output(outputVariable); | ||
175 | callback.accept(builder, builder.parameter("p1"), builder.parameter("p2"), builder.parameter("p3"), | ||
176 | builder.parameter("p4"), outputVariable); | ||
177 | return builder.build(); | ||
178 | } | ||
179 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/QueryBuilder.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/QueryBuilder.java new file mode 100644 index 00000000..138911bc --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/QueryBuilder.java | |||
@@ -0,0 +1,27 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf; | ||
7 | |||
8 | import tools.refinery.store.query.term.DataVariable; | ||
9 | |||
10 | public final class QueryBuilder extends AbstractQueryBuilder<QueryBuilder> { | ||
11 | QueryBuilder(String name) { | ||
12 | super(Dnf.builder(name)); | ||
13 | } | ||
14 | |||
15 | @Override | ||
16 | protected QueryBuilder self() { | ||
17 | return this; | ||
18 | } | ||
19 | |||
20 | public <T> FunctionalQueryBuilder<T> output(DataVariable<T> outputVariable) { | ||
21 | return new FunctionalQueryBuilder<>(outputVariable, dnfBuilder, outputVariable.getType()); | ||
22 | } | ||
23 | |||
24 | public RelationalQuery build() { | ||
25 | return dnfBuilder.build().asRelation(); | ||
26 | } | ||
27 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/RelationalQuery.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/RelationalQuery.java new file mode 100644 index 00000000..d34a7ace --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/RelationalQuery.java | |||
@@ -0,0 +1,66 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf; | ||
7 | |||
8 | import tools.refinery.store.query.literal.CallLiteral; | ||
9 | import tools.refinery.store.query.literal.CallPolarity; | ||
10 | import tools.refinery.store.query.term.AssignedValue; | ||
11 | import tools.refinery.store.query.term.NodeVariable; | ||
12 | |||
13 | import java.util.Collections; | ||
14 | import java.util.List; | ||
15 | |||
16 | public final class RelationalQuery extends Query<Boolean> { | ||
17 | RelationalQuery(Dnf dnf) { | ||
18 | super(dnf); | ||
19 | for (var parameter : dnf.getSymbolicParameters()) { | ||
20 | var parameterType = parameter.tryGetType(); | ||
21 | if (parameterType.isPresent()) { | ||
22 | throw new IllegalArgumentException("Expected parameter %s of %s to be a node variable, got %s instead" | ||
23 | .formatted(parameter, dnf, parameterType.get().getName())); | ||
24 | } | ||
25 | } | ||
26 | } | ||
27 | |||
28 | @Override | ||
29 | public int arity() { | ||
30 | return getDnf().arity(); | ||
31 | } | ||
32 | |||
33 | @Override | ||
34 | public Class<Boolean> valueType() { | ||
35 | return Boolean.class; | ||
36 | } | ||
37 | |||
38 | @Override | ||
39 | public Boolean defaultValue() { | ||
40 | return false; | ||
41 | } | ||
42 | |||
43 | public CallLiteral call(CallPolarity polarity, List<NodeVariable> arguments) { | ||
44 | return getDnf().call(polarity, Collections.unmodifiableList(arguments)); | ||
45 | } | ||
46 | |||
47 | public CallLiteral call(CallPolarity polarity, NodeVariable... arguments) { | ||
48 | return getDnf().call(polarity, arguments); | ||
49 | } | ||
50 | |||
51 | public CallLiteral call(NodeVariable... arguments) { | ||
52 | return getDnf().call(arguments); | ||
53 | } | ||
54 | |||
55 | public CallLiteral callTransitive(NodeVariable left, NodeVariable right) { | ||
56 | return getDnf().callTransitive(left, right); | ||
57 | } | ||
58 | |||
59 | public AssignedValue<Integer> count(List<NodeVariable> arguments) { | ||
60 | return getDnf().count(Collections.unmodifiableList(arguments)); | ||
61 | } | ||
62 | |||
63 | public AssignedValue<Integer> count(NodeVariable... arguments) { | ||
64 | return getDnf().count(arguments); | ||
65 | } | ||
66 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/SymbolicParameter.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/SymbolicParameter.java new file mode 100644 index 00000000..e0d3ba1f --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/SymbolicParameter.java | |||
@@ -0,0 +1,52 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf; | ||
7 | |||
8 | import tools.refinery.store.query.term.Parameter; | ||
9 | import tools.refinery.store.query.term.ParameterDirection; | ||
10 | import tools.refinery.store.query.term.Variable; | ||
11 | |||
12 | import java.util.Objects; | ||
13 | |||
14 | public final class SymbolicParameter extends Parameter { | ||
15 | private final Variable variable; | ||
16 | |||
17 | public SymbolicParameter(Variable variable, ParameterDirection direction) { | ||
18 | super(variable.tryGetType().orElse(null), direction); | ||
19 | this.variable = variable; | ||
20 | } | ||
21 | |||
22 | public Variable getVariable() { | ||
23 | return variable; | ||
24 | } | ||
25 | |||
26 | public boolean isUnifiable() { | ||
27 | return variable.isUnifiable(); | ||
28 | } | ||
29 | |||
30 | @Override | ||
31 | public String toString() { | ||
32 | var direction = getDirection(); | ||
33 | if (direction == ParameterDirection.OUT) { | ||
34 | return variable.toString(); | ||
35 | } | ||
36 | return "%s %s".formatted(getDirection(), variable); | ||
37 | } | ||
38 | |||
39 | @Override | ||
40 | public boolean equals(Object o) { | ||
41 | if (this == o) return true; | ||
42 | if (o == null || getClass() != o.getClass()) return false; | ||
43 | if (!super.equals(o)) return false; | ||
44 | SymbolicParameter that = (SymbolicParameter) o; | ||
45 | return Objects.equals(variable, that.variable); | ||
46 | } | ||
47 | |||
48 | @Override | ||
49 | public int hashCode() { | ||
50 | return Objects.hash(super.hashCode(), variable); | ||
51 | } | ||
52 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback0.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback0.java new file mode 100644 index 00000000..d98dda2e --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback0.java | |||
@@ -0,0 +1,15 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | |||
10 | import java.util.Collection; | ||
11 | |||
12 | @FunctionalInterface | ||
13 | public interface ClauseCallback0 { | ||
14 | Collection<Literal> toLiterals(); | ||
15 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback1Data0.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback1Data0.java new file mode 100644 index 00000000..4c01a527 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback1Data0.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.NodeVariable; | ||
10 | |||
11 | import java.util.Collection; | ||
12 | |||
13 | @FunctionalInterface | ||
14 | public interface ClauseCallback1Data0 { | ||
15 | Collection<Literal> toLiterals(NodeVariable v1); | ||
16 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback1Data1.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback1Data1.java new file mode 100644 index 00000000..2c0cb6eb --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback1Data1.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | |||
11 | import java.util.Collection; | ||
12 | |||
13 | @FunctionalInterface | ||
14 | public interface ClauseCallback1Data1<T> { | ||
15 | Collection<Literal> toLiterals(DataVariable<T> d1); | ||
16 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback2Data0.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback2Data0.java new file mode 100644 index 00000000..d764bdba --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback2Data0.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.NodeVariable; | ||
10 | |||
11 | import java.util.Collection; | ||
12 | |||
13 | @FunctionalInterface | ||
14 | public interface ClauseCallback2Data0 { | ||
15 | Collection<Literal> toLiterals(NodeVariable v1, NodeVariable v2); | ||
16 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback2Data1.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback2Data1.java new file mode 100644 index 00000000..140af03a --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback2Data1.java | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | |||
12 | import java.util.Collection; | ||
13 | |||
14 | @FunctionalInterface | ||
15 | public interface ClauseCallback2Data1<T> { | ||
16 | Collection<Literal> toLiterals(NodeVariable v1, DataVariable<T> x1); | ||
17 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback2Data2.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback2Data2.java new file mode 100644 index 00000000..bfc8637c --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback2Data2.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | |||
11 | import java.util.Collection; | ||
12 | |||
13 | @FunctionalInterface | ||
14 | public interface ClauseCallback2Data2<T1, T2> { | ||
15 | Collection<Literal> toLiterals(DataVariable<T1> x1, DataVariable<T2> x2); | ||
16 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data0.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data0.java new file mode 100644 index 00000000..074df65b --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data0.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.NodeVariable; | ||
10 | |||
11 | import java.util.Collection; | ||
12 | |||
13 | @FunctionalInterface | ||
14 | public interface ClauseCallback3Data0 { | ||
15 | Collection<Literal> toLiterals(NodeVariable v1, NodeVariable v2, NodeVariable v3); | ||
16 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data1.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data1.java new file mode 100644 index 00000000..24ba5187 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data1.java | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | |||
12 | import java.util.Collection; | ||
13 | |||
14 | @FunctionalInterface | ||
15 | public interface ClauseCallback3Data1<T> { | ||
16 | Collection<Literal> toLiterals(NodeVariable v1, NodeVariable v2, DataVariable<T> d1); | ||
17 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data2.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data2.java new file mode 100644 index 00000000..2a2e837a --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data2.java | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | |||
12 | import java.util.Collection; | ||
13 | |||
14 | @FunctionalInterface | ||
15 | public interface ClauseCallback3Data2<T1, T2> { | ||
16 | Collection<Literal> toLiterals(NodeVariable v1, DataVariable<T1> d1, DataVariable<T2> d2); | ||
17 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data3.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data3.java new file mode 100644 index 00000000..8f4bdd01 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback3Data3.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | |||
11 | import java.util.Collection; | ||
12 | |||
13 | @FunctionalInterface | ||
14 | public interface ClauseCallback3Data3<T1, T2, T3> { | ||
15 | Collection<Literal> toLiterals(DataVariable<T1> d1, DataVariable<T2> d2, DataVariable<T3> d3); | ||
16 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data0.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data0.java new file mode 100644 index 00000000..ed0f87b2 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data0.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.NodeVariable; | ||
10 | |||
11 | import java.util.Collection; | ||
12 | |||
13 | @FunctionalInterface | ||
14 | public interface ClauseCallback4Data0 { | ||
15 | Collection<Literal> toLiterals(NodeVariable v1, NodeVariable v2, NodeVariable v3, NodeVariable v4); | ||
16 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data1.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data1.java new file mode 100644 index 00000000..9b27e2e1 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data1.java | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | |||
12 | import java.util.Collection; | ||
13 | |||
14 | @FunctionalInterface | ||
15 | public interface ClauseCallback4Data1<T> { | ||
16 | Collection<Literal> toLiterals(NodeVariable v1, NodeVariable v2, NodeVariable v3, DataVariable<T> d1); | ||
17 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data2.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data2.java new file mode 100644 index 00000000..cbc4808e --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data2.java | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | |||
12 | import java.util.Collection; | ||
13 | |||
14 | @FunctionalInterface | ||
15 | public interface ClauseCallback4Data2<T1, T2> { | ||
16 | Collection<Literal> toLiterals(NodeVariable v1, NodeVariable v2, DataVariable<T1> d1, DataVariable<T2> d2); | ||
17 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data3.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data3.java new file mode 100644 index 00000000..a6258f36 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data3.java | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | |||
12 | import java.util.Collection; | ||
13 | |||
14 | @FunctionalInterface | ||
15 | public interface ClauseCallback4Data3<T1, T2, T3> { | ||
16 | Collection<Literal> toLiterals(NodeVariable v1, DataVariable<T1> d1, DataVariable<T2> d2, DataVariable<T3> d3); | ||
17 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data4.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data4.java new file mode 100644 index 00000000..b52a911a --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/ClauseCallback4Data4.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | |||
11 | import java.util.Collection; | ||
12 | |||
13 | @FunctionalInterface | ||
14 | public interface ClauseCallback4Data4<T1, T2, T3, T4> { | ||
15 | Collection<Literal> toLiterals(DataVariable<T1> d1, DataVariable<T2> d2, DataVariable<T3> d3, DataVariable<T4> d4); | ||
16 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback0.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback0.java new file mode 100644 index 00000000..63b3eee6 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback0.java | |||
@@ -0,0 +1,14 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.FunctionalQueryBuilder; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | |||
11 | @FunctionalInterface | ||
12 | public interface FunctionalQueryCallback0<T> { | ||
13 | void accept(FunctionalQueryBuilder<T> builder, DataVariable<T> output); | ||
14 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback1.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback1.java new file mode 100644 index 00000000..1295a118 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback1.java | |||
@@ -0,0 +1,15 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.FunctionalQueryBuilder; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | |||
12 | @FunctionalInterface | ||
13 | public interface FunctionalQueryCallback1<T> { | ||
14 | void accept(FunctionalQueryBuilder<T> builder, NodeVariable p1, DataVariable<T> output); | ||
15 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback2.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback2.java new file mode 100644 index 00000000..d5b7f9ff --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback2.java | |||
@@ -0,0 +1,15 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.FunctionalQueryBuilder; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | |||
12 | @FunctionalInterface | ||
13 | public interface FunctionalQueryCallback2<T> { | ||
14 | void accept(FunctionalQueryBuilder<T> builder, NodeVariable p1, NodeVariable p2, DataVariable<T> output); | ||
15 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback3.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback3.java new file mode 100644 index 00000000..dc8404a0 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback3.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.FunctionalQueryBuilder; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | |||
12 | @FunctionalInterface | ||
13 | public interface FunctionalQueryCallback3<T> { | ||
14 | void accept(FunctionalQueryBuilder<T> builder, NodeVariable p1, NodeVariable p2, NodeVariable p3, | ||
15 | DataVariable<T> output); | ||
16 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback4.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback4.java new file mode 100644 index 00000000..b6d3ddb0 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/FunctionalQueryCallback4.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.FunctionalQueryBuilder; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | |||
12 | @FunctionalInterface | ||
13 | public interface FunctionalQueryCallback4<T> { | ||
14 | void accept(FunctionalQueryBuilder<T> builder, NodeVariable p1, NodeVariable p2, NodeVariable p3, NodeVariable p4, | ||
15 | DataVariable<T> output); | ||
16 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback0.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback0.java new file mode 100644 index 00000000..3cf1de48 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback0.java | |||
@@ -0,0 +1,13 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.QueryBuilder; | ||
9 | |||
10 | @FunctionalInterface | ||
11 | public interface QueryCallback0 { | ||
12 | void accept(QueryBuilder builder); | ||
13 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback1.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback1.java new file mode 100644 index 00000000..0a150955 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback1.java | |||
@@ -0,0 +1,14 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.QueryBuilder; | ||
9 | import tools.refinery.store.query.term.NodeVariable; | ||
10 | |||
11 | @FunctionalInterface | ||
12 | public interface QueryCallback1 { | ||
13 | void accept(QueryBuilder builder, NodeVariable p1); | ||
14 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback2.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback2.java new file mode 100644 index 00000000..9493a7b4 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback2.java | |||
@@ -0,0 +1,14 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.QueryBuilder; | ||
9 | import tools.refinery.store.query.term.NodeVariable; | ||
10 | |||
11 | @FunctionalInterface | ||
12 | public interface QueryCallback2 { | ||
13 | void accept(QueryBuilder builder, NodeVariable p1, NodeVariable p2); | ||
14 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback3.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback3.java new file mode 100644 index 00000000..358c7da7 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback3.java | |||
@@ -0,0 +1,14 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.QueryBuilder; | ||
9 | import tools.refinery.store.query.term.NodeVariable; | ||
10 | |||
11 | @FunctionalInterface | ||
12 | public interface QueryCallback3 { | ||
13 | void accept(QueryBuilder builder, NodeVariable p1, NodeVariable p2, NodeVariable p3); | ||
14 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback4.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback4.java new file mode 100644 index 00000000..890dda16 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/dnf/callback/QueryCallback4.java | |||
@@ -0,0 +1,14 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf.callback; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.QueryBuilder; | ||
9 | import tools.refinery.store.query.term.NodeVariable; | ||
10 | |||
11 | @FunctionalInterface | ||
12 | public interface QueryCallback4 { | ||
13 | void accept(QueryBuilder builder, NodeVariable p1, NodeVariable p2, NodeVariable p3, NodeVariable p4); | ||
14 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/equality/DeepDnfEqualityChecker.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/equality/DeepDnfEqualityChecker.java new file mode 100644 index 00000000..1eeb5723 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/equality/DeepDnfEqualityChecker.java | |||
@@ -0,0 +1,78 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.equality; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.Dnf; | ||
9 | import tools.refinery.store.query.dnf.DnfClause; | ||
10 | import tools.refinery.store.query.dnf.SymbolicParameter; | ||
11 | import tools.refinery.store.query.literal.Literal; | ||
12 | import tools.refinery.store.util.CycleDetectingMapper; | ||
13 | |||
14 | import java.util.List; | ||
15 | |||
16 | public class DeepDnfEqualityChecker implements DnfEqualityChecker { | ||
17 | private final CycleDetectingMapper<Pair, Boolean> mapper = new CycleDetectingMapper<>(Pair::toString, | ||
18 | this::doCheckEqual); | ||
19 | |||
20 | @Override | ||
21 | public boolean dnfEqual(Dnf left, Dnf right) { | ||
22 | return mapper.map(new Pair(left, right)); | ||
23 | } | ||
24 | |||
25 | public boolean dnfEqualRaw(List<SymbolicParameter> symbolicParameters, | ||
26 | List<? extends List<? extends Literal>> clauses, Dnf other) { | ||
27 | int arity = symbolicParameters.size(); | ||
28 | if (arity != other.arity()) { | ||
29 | return false; | ||
30 | } | ||
31 | for (int i = 0; i < arity; i++) { | ||
32 | if (!symbolicParameters.get(i).getDirection().equals(other.getSymbolicParameters().get(i).getDirection())) { | ||
33 | return false; | ||
34 | } | ||
35 | } | ||
36 | int numClauses = clauses.size(); | ||
37 | if (numClauses != other.getClauses().size()) { | ||
38 | return false; | ||
39 | } | ||
40 | for (int i = 0; i < numClauses; i++) { | ||
41 | var literalEqualityHelper = new LiteralEqualityHelper(this, symbolicParameters, | ||
42 | other.getSymbolicParameters()); | ||
43 | if (!equalsWithSubstitutionRaw(literalEqualityHelper, clauses.get(i), other.getClauses().get(i))) { | ||
44 | return false; | ||
45 | } | ||
46 | } | ||
47 | return true; | ||
48 | } | ||
49 | |||
50 | private boolean equalsWithSubstitutionRaw(LiteralEqualityHelper helper, List<? extends Literal> literals, | ||
51 | DnfClause other) { | ||
52 | int size = literals.size(); | ||
53 | if (size != other.literals().size()) { | ||
54 | return false; | ||
55 | } | ||
56 | for (int i = 0; i < size; i++) { | ||
57 | if (!literals.get(i).equalsWithSubstitution(helper, other.literals().get(i))) { | ||
58 | return false; | ||
59 | } | ||
60 | } | ||
61 | return true; | ||
62 | } | ||
63 | |||
64 | protected boolean doCheckEqual(Pair pair) { | ||
65 | return pair.left.equalsWithSubstitution(this, pair.right); | ||
66 | } | ||
67 | |||
68 | protected List<Pair> getInProgress() { | ||
69 | return mapper.getInProgress(); | ||
70 | } | ||
71 | |||
72 | protected record Pair(Dnf left, Dnf right) { | ||
73 | @Override | ||
74 | public String toString() { | ||
75 | return "(%s, %s)".formatted(left.name(), right.name()); | ||
76 | } | ||
77 | } | ||
78 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/equality/DnfEqualityChecker.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/equality/DnfEqualityChecker.java new file mode 100644 index 00000000..4a8bee3b --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/equality/DnfEqualityChecker.java | |||
@@ -0,0 +1,13 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.equality; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.Dnf; | ||
9 | |||
10 | @FunctionalInterface | ||
11 | public interface DnfEqualityChecker { | ||
12 | boolean dnfEqual(Dnf left, Dnf right); | ||
13 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/equality/LiteralEqualityHelper.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/equality/LiteralEqualityHelper.java new file mode 100644 index 00000000..9315fb30 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/equality/LiteralEqualityHelper.java | |||
@@ -0,0 +1,54 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.equality; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.Dnf; | ||
9 | import tools.refinery.store.query.dnf.SymbolicParameter; | ||
10 | import tools.refinery.store.query.term.Variable; | ||
11 | |||
12 | import java.util.HashMap; | ||
13 | import java.util.List; | ||
14 | import java.util.Map; | ||
15 | |||
16 | public class LiteralEqualityHelper { | ||
17 | private final DnfEqualityChecker dnfEqualityChecker; | ||
18 | private final Map<Variable, Variable> leftToRight; | ||
19 | private final Map<Variable, Variable> rightToLeft; | ||
20 | |||
21 | public LiteralEqualityHelper(DnfEqualityChecker dnfEqualityChecker, List<SymbolicParameter> leftParameters, | ||
22 | List<SymbolicParameter> rightParameters) { | ||
23 | this.dnfEqualityChecker = dnfEqualityChecker; | ||
24 | var arity = leftParameters.size(); | ||
25 | if (arity != rightParameters.size()) { | ||
26 | throw new IllegalArgumentException("Parameter lists have unequal length"); | ||
27 | } | ||
28 | leftToRight = new HashMap<>(arity); | ||
29 | rightToLeft = new HashMap<>(arity); | ||
30 | for (int i = 0; i < arity; i++) { | ||
31 | if (!variableEqual(leftParameters.get(i).getVariable(), rightParameters.get(i).getVariable())) { | ||
32 | throw new IllegalArgumentException("Parameter lists cannot be unified: duplicate parameter " + i); | ||
33 | } | ||
34 | } | ||
35 | } | ||
36 | |||
37 | public boolean dnfEqual(Dnf left, Dnf right) { | ||
38 | return dnfEqualityChecker.dnfEqual(left, right); | ||
39 | } | ||
40 | |||
41 | public boolean variableEqual(Variable left, Variable right) { | ||
42 | if (checkMapping(leftToRight, left, right) && checkMapping(rightToLeft, right, left)) { | ||
43 | leftToRight.put(left, right); | ||
44 | rightToLeft.put(right, left); | ||
45 | return true; | ||
46 | } | ||
47 | return false; | ||
48 | } | ||
49 | |||
50 | private static boolean checkMapping(Map<Variable, Variable> map, Variable key, Variable expectedValue) { | ||
51 | var currentValue = map.get(key); | ||
52 | return currentValue == null || currentValue.equals(expectedValue); | ||
53 | } | ||
54 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/AbstractCallLiteral.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/AbstractCallLiteral.java new file mode 100644 index 00000000..8ef8e8b4 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/AbstractCallLiteral.java | |||
@@ -0,0 +1,143 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.literal; | ||
7 | |||
8 | import tools.refinery.store.query.Constraint; | ||
9 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | ||
10 | import tools.refinery.store.query.substitution.Substitution; | ||
11 | import tools.refinery.store.query.term.ParameterDirection; | ||
12 | import tools.refinery.store.query.term.Variable; | ||
13 | |||
14 | import java.util.*; | ||
15 | |||
16 | public abstract class AbstractCallLiteral implements Literal { | ||
17 | private final Constraint target; | ||
18 | private final List<Variable> arguments; | ||
19 | private final Set<Variable> inArguments; | ||
20 | private final Set<Variable> outArguments; | ||
21 | |||
22 | // Use exhaustive switch over enums. | ||
23 | @SuppressWarnings("squid:S1301") | ||
24 | protected AbstractCallLiteral(Constraint target, List<Variable> arguments) { | ||
25 | int arity = target.arity(); | ||
26 | if (arguments.size() != arity) { | ||
27 | throw new IllegalArgumentException("%s needs %d arguments, but got %s".formatted(target.name(), | ||
28 | target.arity(), arguments.size())); | ||
29 | } | ||
30 | this.target = target; | ||
31 | this.arguments = arguments; | ||
32 | var mutableInArguments = new LinkedHashSet<Variable>(); | ||
33 | var mutableOutArguments = new LinkedHashSet<Variable>(); | ||
34 | var parameters = target.getParameters(); | ||
35 | for (int i = 0; i < arity; i++) { | ||
36 | var argument = arguments.get(i); | ||
37 | var parameter = parameters.get(i); | ||
38 | if (!parameter.isAssignable(argument)) { | ||
39 | throw new IllegalArgumentException("Argument %d of %s is not assignable to parameter %s" | ||
40 | .formatted(i, target, parameter)); | ||
41 | } | ||
42 | switch (parameter.getDirection()) { | ||
43 | case IN -> { | ||
44 | if (mutableOutArguments.remove(argument)) { | ||
45 | checkInOutUnifiable(argument); | ||
46 | } | ||
47 | mutableInArguments.add(argument); | ||
48 | } | ||
49 | case OUT -> { | ||
50 | if (mutableInArguments.contains(argument)) { | ||
51 | checkInOutUnifiable(argument); | ||
52 | } else if (!mutableOutArguments.add(argument)) { | ||
53 | checkDuplicateOutUnifiable(argument); | ||
54 | } | ||
55 | } | ||
56 | } | ||
57 | } | ||
58 | inArguments = Collections.unmodifiableSet(mutableInArguments); | ||
59 | outArguments = Collections.unmodifiableSet(mutableOutArguments); | ||
60 | } | ||
61 | |||
62 | private static void checkInOutUnifiable(Variable argument) { | ||
63 | if (!argument.isUnifiable()) { | ||
64 | throw new IllegalArgumentException("Argument %s cannot appear with both %s and %s direction" | ||
65 | .formatted(argument, ParameterDirection.IN, ParameterDirection.OUT)); | ||
66 | } | ||
67 | } | ||
68 | |||
69 | private static void checkDuplicateOutUnifiable(Variable argument) { | ||
70 | if (!argument.isUnifiable()) { | ||
71 | throw new IllegalArgumentException("Argument %s cannot be bound multiple times".formatted(argument)); | ||
72 | } | ||
73 | } | ||
74 | |||
75 | public Constraint getTarget() { | ||
76 | return target; | ||
77 | } | ||
78 | |||
79 | public List<Variable> getArguments() { | ||
80 | return arguments; | ||
81 | } | ||
82 | |||
83 | protected Set<Variable> getArgumentsOfDirection(ParameterDirection direction) { | ||
84 | return switch (direction) { | ||
85 | case IN -> inArguments; | ||
86 | case OUT -> outArguments; | ||
87 | }; | ||
88 | } | ||
89 | |||
90 | @Override | ||
91 | public Set<Variable> getInputVariables(Set<? extends Variable> positiveVariablesInClause) { | ||
92 | var inputVariables = new LinkedHashSet<>(getArgumentsOfDirection(ParameterDirection.OUT)); | ||
93 | inputVariables.retainAll(positiveVariablesInClause); | ||
94 | inputVariables.addAll(getArgumentsOfDirection(ParameterDirection.IN)); | ||
95 | return Collections.unmodifiableSet(inputVariables); | ||
96 | } | ||
97 | |||
98 | @Override | ||
99 | public Set<Variable> getPrivateVariables(Set<? extends Variable> positiveVariablesInClause) { | ||
100 | var privateVariables = new LinkedHashSet<>(getArgumentsOfDirection(ParameterDirection.OUT)); | ||
101 | privateVariables.removeAll(positiveVariablesInClause); | ||
102 | return Collections.unmodifiableSet(privateVariables); | ||
103 | } | ||
104 | |||
105 | @Override | ||
106 | public Literal substitute(Substitution substitution) { | ||
107 | var substitutedArguments = arguments.stream().map(substitution::getSubstitute).toList(); | ||
108 | return doSubstitute(substitution, substitutedArguments); | ||
109 | } | ||
110 | |||
111 | protected abstract Literal doSubstitute(Substitution substitution, List<Variable> substitutedArguments); | ||
112 | |||
113 | @Override | ||
114 | public boolean equalsWithSubstitution(LiteralEqualityHelper helper, Literal other) { | ||
115 | if (other == null || getClass() != other.getClass()) { | ||
116 | return false; | ||
117 | } | ||
118 | var otherCallLiteral = (AbstractCallLiteral) other; | ||
119 | var arity = arguments.size(); | ||
120 | if (arity != otherCallLiteral.arguments.size()) { | ||
121 | return false; | ||
122 | } | ||
123 | for (int i = 0; i < arity; i++) { | ||
124 | if (!helper.variableEqual(arguments.get(i), otherCallLiteral.arguments.get(i))) { | ||
125 | return false; | ||
126 | } | ||
127 | } | ||
128 | return target.equals(helper, otherCallLiteral.target); | ||
129 | } | ||
130 | |||
131 | @Override | ||
132 | public boolean equals(Object o) { | ||
133 | if (this == o) return true; | ||
134 | if (o == null || getClass() != o.getClass()) return false; | ||
135 | AbstractCallLiteral that = (AbstractCallLiteral) o; | ||
136 | return target.equals(that.target) && arguments.equals(that.arguments); | ||
137 | } | ||
138 | |||
139 | @Override | ||
140 | public int hashCode() { | ||
141 | return Objects.hash(getClass(), target, arguments); | ||
142 | } | ||
143 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/AggregationLiteral.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/AggregationLiteral.java new file mode 100644 index 00000000..3a5eb5c7 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/AggregationLiteral.java | |||
@@ -0,0 +1,138 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.literal; | ||
7 | |||
8 | import tools.refinery.store.query.Constraint; | ||
9 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | ||
10 | import tools.refinery.store.query.substitution.Substitution; | ||
11 | import tools.refinery.store.query.term.*; | ||
12 | |||
13 | import java.util.List; | ||
14 | import java.util.Objects; | ||
15 | import java.util.Set; | ||
16 | |||
17 | public class AggregationLiteral<R, T> extends AbstractCallLiteral { | ||
18 | private final DataVariable<R> resultVariable; | ||
19 | private final DataVariable<T> inputVariable; | ||
20 | private final Aggregator<R, T> aggregator; | ||
21 | |||
22 | public AggregationLiteral(DataVariable<R> resultVariable, Aggregator<R, T> aggregator, | ||
23 | DataVariable<T> inputVariable, Constraint target, List<Variable> arguments) { | ||
24 | super(target, arguments); | ||
25 | if (!inputVariable.getType().equals(aggregator.getInputType())) { | ||
26 | throw new IllegalArgumentException("Input variable %s must of type %s, got %s instead".formatted( | ||
27 | inputVariable, aggregator.getInputType().getName(), inputVariable.getType().getName())); | ||
28 | } | ||
29 | if (!getArgumentsOfDirection(ParameterDirection.OUT).contains(inputVariable)) { | ||
30 | throw new IllegalArgumentException("Input variable %s must be bound with direction %s in the argument list" | ||
31 | .formatted(inputVariable, ParameterDirection.OUT)); | ||
32 | } | ||
33 | if (!resultVariable.getType().equals(aggregator.getResultType())) { | ||
34 | throw new IllegalArgumentException("Result variable %s must of type %s, got %s instead".formatted( | ||
35 | resultVariable, aggregator.getResultType().getName(), resultVariable.getType().getName())); | ||
36 | } | ||
37 | if (arguments.contains(resultVariable)) { | ||
38 | throw new IllegalArgumentException("Result variable %s must not appear in the argument list".formatted( | ||
39 | resultVariable)); | ||
40 | } | ||
41 | this.resultVariable = resultVariable; | ||
42 | this.inputVariable = inputVariable; | ||
43 | this.aggregator = aggregator; | ||
44 | } | ||
45 | |||
46 | public DataVariable<R> getResultVariable() { | ||
47 | return resultVariable; | ||
48 | } | ||
49 | |||
50 | public DataVariable<T> getInputVariable() { | ||
51 | return inputVariable; | ||
52 | } | ||
53 | |||
54 | public Aggregator<R, T> getAggregator() { | ||
55 | return aggregator; | ||
56 | } | ||
57 | |||
58 | @Override | ||
59 | public Set<Variable> getOutputVariables() { | ||
60 | return Set.of(resultVariable); | ||
61 | } | ||
62 | |||
63 | @Override | ||
64 | public Set<Variable> getInputVariables(Set<? extends Variable> positiveVariablesInClause) { | ||
65 | if (positiveVariablesInClause.contains(inputVariable)) { | ||
66 | throw new IllegalArgumentException("Aggregation variable %s must not be bound".formatted(inputVariable)); | ||
67 | } | ||
68 | return super.getInputVariables(positiveVariablesInClause); | ||
69 | } | ||
70 | |||
71 | @Override | ||
72 | public Literal reduce() { | ||
73 | var reduction = getTarget().getReduction(); | ||
74 | return switch (reduction) { | ||
75 | case ALWAYS_FALSE -> { | ||
76 | var emptyValue = aggregator.getEmptyResult(); | ||
77 | yield emptyValue == null ? BooleanLiteral.FALSE : | ||
78 | resultVariable.assign(new ConstantTerm<>(resultVariable.getType(), emptyValue)); | ||
79 | } | ||
80 | case ALWAYS_TRUE -> throw new IllegalArgumentException("Trying to aggregate over an infinite set"); | ||
81 | case NOT_REDUCIBLE -> this; | ||
82 | }; | ||
83 | } | ||
84 | |||
85 | @Override | ||
86 | protected Literal doSubstitute(Substitution substitution, List<Variable> substitutedArguments) { | ||
87 | return new AggregationLiteral<>(substitution.getTypeSafeSubstitute(resultVariable), aggregator, | ||
88 | substitution.getTypeSafeSubstitute(inputVariable), getTarget(), substitutedArguments); | ||
89 | } | ||
90 | |||
91 | @Override | ||
92 | public boolean equalsWithSubstitution(LiteralEqualityHelper helper, Literal other) { | ||
93 | if (!super.equalsWithSubstitution(helper, other)) { | ||
94 | return false; | ||
95 | } | ||
96 | var otherAggregationLiteral = (AggregationLiteral<?, ?>) other; | ||
97 | return helper.variableEqual(resultVariable, otherAggregationLiteral.resultVariable) && | ||
98 | aggregator.equals(otherAggregationLiteral.aggregator) && | ||
99 | helper.variableEqual(inputVariable, otherAggregationLiteral.inputVariable); | ||
100 | } | ||
101 | |||
102 | @Override | ||
103 | public boolean equals(Object o) { | ||
104 | if (this == o) return true; | ||
105 | if (o == null || getClass() != o.getClass()) return false; | ||
106 | if (!super.equals(o)) return false; | ||
107 | AggregationLiteral<?, ?> that = (AggregationLiteral<?, ?>) o; | ||
108 | return resultVariable.equals(that.resultVariable) && inputVariable.equals(that.inputVariable) && | ||
109 | aggregator.equals(that.aggregator); | ||
110 | } | ||
111 | |||
112 | @Override | ||
113 | public int hashCode() { | ||
114 | return Objects.hash(super.hashCode(), resultVariable, inputVariable, aggregator); | ||
115 | } | ||
116 | |||
117 | @Override | ||
118 | public String toString() { | ||
119 | var builder = new StringBuilder(); | ||
120 | builder.append(resultVariable); | ||
121 | builder.append(" is "); | ||
122 | builder.append(getTarget().toReferenceString()); | ||
123 | builder.append("("); | ||
124 | var argumentIterator = getArguments().iterator(); | ||
125 | if (argumentIterator.hasNext()) { | ||
126 | var argument = argumentIterator.next(); | ||
127 | if (inputVariable.equals(argument)) { | ||
128 | builder.append("@Aggregate(\"").append(aggregator).append("\") "); | ||
129 | } | ||
130 | builder.append(argument); | ||
131 | while (argumentIterator.hasNext()) { | ||
132 | builder.append(", ").append(argumentIterator.next()); | ||
133 | } | ||
134 | } | ||
135 | builder.append(")"); | ||
136 | return builder.toString(); | ||
137 | } | ||
138 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/AssignLiteral.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/AssignLiteral.java new file mode 100644 index 00000000..dbf999a2 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/AssignLiteral.java | |||
@@ -0,0 +1,79 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.literal; | ||
7 | |||
8 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | ||
9 | import tools.refinery.store.query.substitution.Substitution; | ||
10 | import tools.refinery.store.query.term.DataVariable; | ||
11 | import tools.refinery.store.query.term.Term; | ||
12 | import tools.refinery.store.query.term.Variable; | ||
13 | |||
14 | import java.util.Collections; | ||
15 | import java.util.Objects; | ||
16 | import java.util.Set; | ||
17 | |||
18 | public record AssignLiteral<T>(DataVariable<T> variable, Term<T> term) implements Literal { | ||
19 | public AssignLiteral { | ||
20 | if (!term.getType().equals(variable.getType())) { | ||
21 | throw new IllegalArgumentException("Term %s must be of type %s, got %s instead".formatted( | ||
22 | term, variable.getType().getName(), term.getType().getName())); | ||
23 | } | ||
24 | var inputVariables = term.getInputVariables(); | ||
25 | if (inputVariables.contains(variable)) { | ||
26 | throw new IllegalArgumentException("Result variable %s must not appear in the term %s".formatted( | ||
27 | variable, term)); | ||
28 | } | ||
29 | } | ||
30 | |||
31 | @Override | ||
32 | public Set<Variable> getOutputVariables() { | ||
33 | return Set.of(variable); | ||
34 | } | ||
35 | |||
36 | @Override | ||
37 | public Set<Variable> getInputVariables(Set<? extends Variable> positiveVariablesInClause) { | ||
38 | return Collections.unmodifiableSet(term.getInputVariables()); | ||
39 | } | ||
40 | |||
41 | @Override | ||
42 | public Set<Variable> getPrivateVariables(Set<? extends Variable> positiveVariablesInClause) { | ||
43 | return Set.of(); | ||
44 | } | ||
45 | |||
46 | @Override | ||
47 | public Literal substitute(Substitution substitution) { | ||
48 | return new AssignLiteral<>(substitution.getTypeSafeSubstitute(variable), term.substitute(substitution)); | ||
49 | } | ||
50 | |||
51 | @Override | ||
52 | public boolean equalsWithSubstitution(LiteralEqualityHelper helper, Literal other) { | ||
53 | if (other == null || getClass() != other.getClass()) { | ||
54 | return false; | ||
55 | } | ||
56 | var otherLetLiteral = (AssignLiteral<?>) other; | ||
57 | return helper.variableEqual(variable, otherLetLiteral.variable) && term.equalsWithSubstitution(helper, | ||
58 | otherLetLiteral.term); | ||
59 | } | ||
60 | |||
61 | @Override | ||
62 | public String toString() { | ||
63 | return "%s is (%s)".formatted(variable, term); | ||
64 | } | ||
65 | |||
66 | @Override | ||
67 | public boolean equals(Object obj) { | ||
68 | if (obj == this) return true; | ||
69 | if (obj == null || obj.getClass() != this.getClass()) return false; | ||
70 | var that = (AssignLiteral<?>) obj; | ||
71 | return Objects.equals(this.variable, that.variable) && | ||
72 | Objects.equals(this.term, that.term); | ||
73 | } | ||
74 | |||
75 | @Override | ||
76 | public int hashCode() { | ||
77 | return Objects.hash(getClass(), variable, term); | ||
78 | } | ||
79 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/AssumeLiteral.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/AssumeLiteral.java new file mode 100644 index 00000000..1ca04c77 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/AssumeLiteral.java | |||
@@ -0,0 +1,83 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.literal; | ||
7 | |||
8 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | ||
9 | import tools.refinery.store.query.substitution.Substitution; | ||
10 | import tools.refinery.store.query.term.ConstantTerm; | ||
11 | import tools.refinery.store.query.term.Term; | ||
12 | import tools.refinery.store.query.term.Variable; | ||
13 | |||
14 | import java.util.Collections; | ||
15 | import java.util.Objects; | ||
16 | import java.util.Set; | ||
17 | |||
18 | public record AssumeLiteral(Term<Boolean> term) implements Literal { | ||
19 | public AssumeLiteral { | ||
20 | if (!term.getType().equals(Boolean.class)) { | ||
21 | throw new IllegalArgumentException("Term %s must be of type %s, got %s instead".formatted( | ||
22 | term, Boolean.class.getName(), term.getType().getName())); | ||
23 | } | ||
24 | } | ||
25 | |||
26 | @Override | ||
27 | public Set<Variable> getOutputVariables() { | ||
28 | return Set.of(); | ||
29 | } | ||
30 | |||
31 | @Override | ||
32 | public Set<Variable> getInputVariables(Set<? extends Variable> positiveVariablesInClause) { | ||
33 | return Collections.unmodifiableSet(term.getInputVariables()); | ||
34 | } | ||
35 | |||
36 | @Override | ||
37 | public Set<Variable> getPrivateVariables(Set<? extends Variable> positiveVariablesInClause) { | ||
38 | return Set.of(); | ||
39 | } | ||
40 | |||
41 | |||
42 | @Override | ||
43 | public Literal substitute(Substitution substitution) { | ||
44 | return new AssumeLiteral(term.substitute(substitution)); | ||
45 | } | ||
46 | |||
47 | @Override | ||
48 | public boolean equalsWithSubstitution(LiteralEqualityHelper helper, Literal other) { | ||
49 | if (other == null || getClass() != other.getClass()) { | ||
50 | return false; | ||
51 | } | ||
52 | var otherAssumeLiteral = (AssumeLiteral) other; | ||
53 | return term.equalsWithSubstitution(helper, otherAssumeLiteral.term); | ||
54 | } | ||
55 | |||
56 | @Override | ||
57 | public Literal reduce() { | ||
58 | if (term instanceof ConstantTerm<Boolean> constantTerm) { | ||
59 | // Return {@link BooleanLiteral#FALSE} for {@code false} or {@code null} literals. | ||
60 | return Boolean.TRUE.equals(constantTerm.getValue()) ? BooleanLiteral.TRUE : | ||
61 | BooleanLiteral.FALSE; | ||
62 | } | ||
63 | return this; | ||
64 | } | ||
65 | |||
66 | @Override | ||
67 | public String toString() { | ||
68 | return "(%s)".formatted(term); | ||
69 | } | ||
70 | |||
71 | @Override | ||
72 | public boolean equals(Object obj) { | ||
73 | if (obj == this) return true; | ||
74 | if (obj == null || obj.getClass() != this.getClass()) return false; | ||
75 | var that = (AssumeLiteral) obj; | ||
76 | return Objects.equals(this.term, that.term); | ||
77 | } | ||
78 | |||
79 | @Override | ||
80 | public int hashCode() { | ||
81 | return Objects.hash(getClass(), term); | ||
82 | } | ||
83 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/BooleanLiteral.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/BooleanLiteral.java new file mode 100644 index 00000000..f312d202 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/BooleanLiteral.java | |||
@@ -0,0 +1,63 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.literal; | ||
7 | |||
8 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | ||
9 | import tools.refinery.store.query.substitution.Substitution; | ||
10 | import tools.refinery.store.query.term.Variable; | ||
11 | |||
12 | import java.util.Set; | ||
13 | |||
14 | public enum BooleanLiteral implements CanNegate<BooleanLiteral> { | ||
15 | TRUE(true), | ||
16 | FALSE(false); | ||
17 | |||
18 | private final boolean value; | ||
19 | |||
20 | BooleanLiteral(boolean value) { | ||
21 | this.value = value; | ||
22 | } | ||
23 | |||
24 | @Override | ||
25 | public Set<Variable> getOutputVariables() { | ||
26 | return Set.of(); | ||
27 | } | ||
28 | |||
29 | @Override | ||
30 | public Set<Variable> getInputVariables(Set<? extends Variable> positiveVariablesInClause) { | ||
31 | return Set.of(); | ||
32 | } | ||
33 | |||
34 | @Override | ||
35 | public Set<Variable> getPrivateVariables(Set<? extends Variable> positiveVariablesInClause) { | ||
36 | return Set.of(); | ||
37 | } | ||
38 | |||
39 | @Override | ||
40 | public Literal substitute(Substitution substitution) { | ||
41 | // No variables to substitute. | ||
42 | return this; | ||
43 | } | ||
44 | |||
45 | @Override | ||
46 | public BooleanLiteral negate() { | ||
47 | return fromBoolean(!value); | ||
48 | } | ||
49 | |||
50 | @Override | ||
51 | public boolean equalsWithSubstitution(LiteralEqualityHelper helper, Literal other) { | ||
52 | return equals(other); | ||
53 | } | ||
54 | |||
55 | @Override | ||
56 | public String toString() { | ||
57 | return Boolean.toString(value); | ||
58 | } | ||
59 | |||
60 | public static BooleanLiteral fromBoolean(boolean value) { | ||
61 | return value ? TRUE : FALSE; | ||
62 | } | ||
63 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/CallLiteral.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/CallLiteral.java new file mode 100644 index 00000000..29772aee --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/CallLiteral.java | |||
@@ -0,0 +1,130 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.literal; | ||
7 | |||
8 | import tools.refinery.store.query.Constraint; | ||
9 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | ||
10 | import tools.refinery.store.query.substitution.Substitution; | ||
11 | import tools.refinery.store.query.term.ParameterDirection; | ||
12 | import tools.refinery.store.query.term.Variable; | ||
13 | |||
14 | import java.util.*; | ||
15 | |||
16 | public final class CallLiteral extends AbstractCallLiteral implements CanNegate<CallLiteral> { | ||
17 | private final CallPolarity polarity; | ||
18 | |||
19 | public CallLiteral(CallPolarity polarity, Constraint target, List<Variable> arguments) { | ||
20 | super(target, arguments); | ||
21 | var parameters = target.getParameters(); | ||
22 | int arity = target.arity(); | ||
23 | if (polarity.isTransitive()) { | ||
24 | if (arity != 2) { | ||
25 | throw new IllegalArgumentException("Transitive closures can only take binary relations"); | ||
26 | } | ||
27 | if (parameters.get(0).isDataVariable() || parameters.get(1).isDataVariable()) { | ||
28 | throw new IllegalArgumentException("Transitive closures can only be computed over nodes"); | ||
29 | } | ||
30 | } | ||
31 | this.polarity = polarity; | ||
32 | } | ||
33 | |||
34 | public CallPolarity getPolarity() { | ||
35 | return polarity; | ||
36 | } | ||
37 | |||
38 | @Override | ||
39 | protected Literal doSubstitute(Substitution substitution, List<Variable> substitutedArguments) { | ||
40 | return new CallLiteral(polarity, getTarget(), substitutedArguments); | ||
41 | } | ||
42 | |||
43 | @Override | ||
44 | public Set<Variable> getOutputVariables() { | ||
45 | if (polarity.isPositive()) { | ||
46 | return getArgumentsOfDirection(ParameterDirection.OUT); | ||
47 | } | ||
48 | return Set.of(); | ||
49 | } | ||
50 | |||
51 | @Override | ||
52 | public Set<Variable> getInputVariables(Set<? extends Variable> positiveVariablesInClause) { | ||
53 | if (polarity.isPositive()) { | ||
54 | return getArgumentsOfDirection(ParameterDirection.IN); | ||
55 | } | ||
56 | return super.getInputVariables(positiveVariablesInClause); | ||
57 | } | ||
58 | |||
59 | @Override | ||
60 | public Set<Variable> getPrivateVariables(Set<? extends Variable> positiveVariablesInClause) { | ||
61 | if (polarity.isPositive()) { | ||
62 | return Set.of(); | ||
63 | } | ||
64 | return super.getPrivateVariables(positiveVariablesInClause); | ||
65 | } | ||
66 | |||
67 | @Override | ||
68 | public Literal reduce() { | ||
69 | var reduction = getTarget().getReduction(); | ||
70 | var negatedReduction = polarity.isPositive() ? reduction : reduction.negate(); | ||
71 | return switch (negatedReduction) { | ||
72 | case ALWAYS_TRUE -> BooleanLiteral.TRUE; | ||
73 | case ALWAYS_FALSE -> BooleanLiteral.FALSE; | ||
74 | default -> this; | ||
75 | }; | ||
76 | } | ||
77 | |||
78 | @Override | ||
79 | public boolean equalsWithSubstitution(LiteralEqualityHelper helper, Literal other) { | ||
80 | if (!super.equalsWithSubstitution(helper, other)) { | ||
81 | return false; | ||
82 | } | ||
83 | var otherCallLiteral = (CallLiteral) other; | ||
84 | return polarity.equals(otherCallLiteral.polarity); | ||
85 | } | ||
86 | |||
87 | @Override | ||
88 | public CallLiteral negate() { | ||
89 | return new CallLiteral(polarity.negate(), getTarget(), getArguments()); | ||
90 | } | ||
91 | |||
92 | @Override | ||
93 | public boolean equals(Object o) { | ||
94 | if (this == o) return true; | ||
95 | if (o == null || getClass() != o.getClass()) return false; | ||
96 | if (!super.equals(o)) return false; | ||
97 | CallLiteral that = (CallLiteral) o; | ||
98 | return polarity == that.polarity; | ||
99 | } | ||
100 | |||
101 | @Override | ||
102 | public int hashCode() { | ||
103 | return Objects.hash(super.hashCode(), polarity); | ||
104 | } | ||
105 | |||
106 | @Override | ||
107 | public String toString() { | ||
108 | var builder = new StringBuilder(); | ||
109 | if (!polarity.isPositive()) { | ||
110 | builder.append("!("); | ||
111 | } | ||
112 | builder.append(getTarget().toReferenceString()); | ||
113 | if (polarity.isTransitive()) { | ||
114 | builder.append("+"); | ||
115 | } | ||
116 | builder.append("("); | ||
117 | var argumentIterator = getArguments().iterator(); | ||
118 | if (argumentIterator.hasNext()) { | ||
119 | builder.append(argumentIterator.next()); | ||
120 | while (argumentIterator.hasNext()) { | ||
121 | builder.append(", ").append(argumentIterator.next()); | ||
122 | } | ||
123 | } | ||
124 | builder.append(")"); | ||
125 | if (!polarity.isPositive()) { | ||
126 | builder.append(")"); | ||
127 | } | ||
128 | return builder.toString(); | ||
129 | } | ||
130 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/atom/CallPolarity.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/CallPolarity.java index 957e9b7b..ca70b0fd 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/query/atom/CallPolarity.java +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/CallPolarity.java | |||
@@ -1,4 +1,9 @@ | |||
1 | package tools.refinery.store.query.atom; | 1 | /* |
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.literal; | ||
2 | 7 | ||
3 | public enum CallPolarity { | 8 | public enum CallPolarity { |
4 | POSITIVE(true, false), | 9 | POSITIVE(true, false), |
@@ -22,7 +27,11 @@ public enum CallPolarity { | |||
22 | return transitive; | 27 | return transitive; |
23 | } | 28 | } |
24 | 29 | ||
25 | public static CallPolarity fromBoolean(boolean positive) { | 30 | public CallPolarity negate() { |
26 | return positive ? POSITIVE : NEGATIVE; | 31 | return switch (this) { |
32 | case POSITIVE -> NEGATIVE; | ||
33 | case NEGATIVE -> POSITIVE; | ||
34 | case TRANSITIVE -> throw new IllegalArgumentException("Transitive polarity cannot be negated"); | ||
35 | }; | ||
27 | } | 36 | } |
28 | } | 37 | } |
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/CanNegate.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/CanNegate.java new file mode 100644 index 00000000..35dcb3fb --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/CanNegate.java | |||
@@ -0,0 +1,10 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.literal; | ||
7 | |||
8 | public interface CanNegate<T extends CanNegate<T>> extends Literal { | ||
9 | T negate(); | ||
10 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/ConstantLiteral.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/ConstantLiteral.java new file mode 100644 index 00000000..73545620 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/ConstantLiteral.java | |||
@@ -0,0 +1,65 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.literal; | ||
7 | |||
8 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | ||
9 | import tools.refinery.store.query.substitution.Substitution; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | import tools.refinery.store.query.term.Variable; | ||
12 | |||
13 | import java.util.Objects; | ||
14 | import java.util.Set; | ||
15 | |||
16 | public record ConstantLiteral(NodeVariable variable, int nodeId) implements Literal { | ||
17 | @Override | ||
18 | public Set<Variable> getOutputVariables() { | ||
19 | return Set.of(variable); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | public Set<Variable> getInputVariables(Set<? extends Variable> positiveVariablesInClause) { | ||
24 | return Set.of(); | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public Set<Variable> getPrivateVariables(Set<? extends Variable> positiveVariablesInClause) { | ||
29 | return Set.of(); | ||
30 | } | ||
31 | |||
32 | @Override | ||
33 | public ConstantLiteral substitute(Substitution substitution) { | ||
34 | return new ConstantLiteral(substitution.getTypeSafeSubstitute(variable), nodeId); | ||
35 | } | ||
36 | |||
37 | @Override | ||
38 | public boolean equalsWithSubstitution(LiteralEqualityHelper helper, Literal other) { | ||
39 | if (other.getClass() != getClass()) { | ||
40 | return false; | ||
41 | } | ||
42 | var otherConstantLiteral = (ConstantLiteral) other; | ||
43 | return helper.variableEqual(variable, otherConstantLiteral.variable) && nodeId == otherConstantLiteral.nodeId; | ||
44 | } | ||
45 | |||
46 | |||
47 | @Override | ||
48 | public String toString() { | ||
49 | return "%s === @Constant %d".formatted(variable, nodeId); | ||
50 | } | ||
51 | |||
52 | @Override | ||
53 | public boolean equals(Object obj) { | ||
54 | if (obj == this) return true; | ||
55 | if (obj == null || obj.getClass() != this.getClass()) return false; | ||
56 | var that = (ConstantLiteral) obj; | ||
57 | return Objects.equals(this.variable, that.variable) && | ||
58 | this.nodeId == that.nodeId; | ||
59 | } | ||
60 | |||
61 | @Override | ||
62 | public int hashCode() { | ||
63 | return Objects.hash(getClass(), variable, nodeId); | ||
64 | } | ||
65 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/CountLiteral.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/CountLiteral.java new file mode 100644 index 00000000..4d4749c8 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/CountLiteral.java | |||
@@ -0,0 +1,101 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.literal; | ||
7 | |||
8 | import tools.refinery.store.query.Constraint; | ||
9 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | ||
10 | import tools.refinery.store.query.substitution.Substitution; | ||
11 | import tools.refinery.store.query.term.DataVariable; | ||
12 | import tools.refinery.store.query.term.Variable; | ||
13 | import tools.refinery.store.query.term.int_.IntTerms; | ||
14 | |||
15 | import java.util.List; | ||
16 | import java.util.Objects; | ||
17 | import java.util.Set; | ||
18 | |||
19 | public class CountLiteral extends AbstractCallLiteral { | ||
20 | private final DataVariable<Integer> resultVariable; | ||
21 | |||
22 | public CountLiteral(DataVariable<Integer> resultVariable, Constraint target, List<Variable> arguments) { | ||
23 | super(target, arguments); | ||
24 | if (!resultVariable.getType().equals(Integer.class)) { | ||
25 | throw new IllegalArgumentException("Count result variable %s must be of type %s, got %s instead".formatted( | ||
26 | resultVariable, Integer.class.getName(), resultVariable.getType().getName())); | ||
27 | } | ||
28 | if (arguments.contains(resultVariable)) { | ||
29 | throw new IllegalArgumentException("Count result variable %s must not appear in the argument list" | ||
30 | .formatted(resultVariable)); | ||
31 | } | ||
32 | this.resultVariable = resultVariable; | ||
33 | } | ||
34 | |||
35 | public DataVariable<Integer> getResultVariable() { | ||
36 | return resultVariable; | ||
37 | } | ||
38 | |||
39 | @Override | ||
40 | public Set<Variable> getOutputVariables() { | ||
41 | return Set.of(resultVariable); | ||
42 | } | ||
43 | |||
44 | @Override | ||
45 | public Literal reduce() { | ||
46 | var reduction = getTarget().getReduction(); | ||
47 | return switch (reduction) { | ||
48 | case ALWAYS_FALSE -> getResultVariable().assign(IntTerms.constant(0)); | ||
49 | // The only way a constant {@code true} predicate can be called in a negative position is to have all of | ||
50 | // its arguments bound as input variables. Thus, there will only be a single match. | ||
51 | case ALWAYS_TRUE -> getResultVariable().assign(IntTerms.constant(1)); | ||
52 | case NOT_REDUCIBLE -> this; | ||
53 | }; | ||
54 | } | ||
55 | |||
56 | @Override | ||
57 | protected Literal doSubstitute(Substitution substitution, List<Variable> substitutedArguments) { | ||
58 | return new CountLiteral(substitution.getTypeSafeSubstitute(resultVariable), getTarget(), substitutedArguments); | ||
59 | } | ||
60 | |||
61 | @Override | ||
62 | public boolean equalsWithSubstitution(LiteralEqualityHelper helper, Literal other) { | ||
63 | if (!super.equalsWithSubstitution(helper, other)) { | ||
64 | return false; | ||
65 | } | ||
66 | var otherCountLiteral = (CountLiteral) other; | ||
67 | return helper.variableEqual(resultVariable, otherCountLiteral.resultVariable); | ||
68 | } | ||
69 | |||
70 | @Override | ||
71 | public boolean equals(Object o) { | ||
72 | if (this == o) return true; | ||
73 | if (o == null || getClass() != o.getClass()) return false; | ||
74 | if (!super.equals(o)) return false; | ||
75 | CountLiteral that = (CountLiteral) o; | ||
76 | return resultVariable.equals(that.resultVariable); | ||
77 | } | ||
78 | |||
79 | @Override | ||
80 | public int hashCode() { | ||
81 | return Objects.hash(super.hashCode(), resultVariable); | ||
82 | } | ||
83 | |||
84 | @Override | ||
85 | public String toString() { | ||
86 | var builder = new StringBuilder(); | ||
87 | builder.append(resultVariable); | ||
88 | builder.append(" is count "); | ||
89 | builder.append(getTarget().toReferenceString()); | ||
90 | builder.append("("); | ||
91 | var argumentIterator = getArguments().iterator(); | ||
92 | if (argumentIterator.hasNext()) { | ||
93 | builder.append(argumentIterator.next()); | ||
94 | while (argumentIterator.hasNext()) { | ||
95 | builder.append(", ").append(argumentIterator.next()); | ||
96 | } | ||
97 | } | ||
98 | builder.append(")"); | ||
99 | return builder.toString(); | ||
100 | } | ||
101 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/EquivalenceLiteral.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/EquivalenceLiteral.java new file mode 100644 index 00000000..28ba7625 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/EquivalenceLiteral.java | |||
@@ -0,0 +1,81 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.literal; | ||
7 | |||
8 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | ||
9 | import tools.refinery.store.query.substitution.Substitution; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | import tools.refinery.store.query.term.Variable; | ||
12 | |||
13 | import java.util.Objects; | ||
14 | import java.util.Set; | ||
15 | |||
16 | public record EquivalenceLiteral(boolean positive, NodeVariable left, NodeVariable right) | ||
17 | implements CanNegate<EquivalenceLiteral> { | ||
18 | @Override | ||
19 | public Set<Variable> getOutputVariables() { | ||
20 | return Set.of(left); | ||
21 | } | ||
22 | |||
23 | @Override | ||
24 | public Set<Variable> getInputVariables(Set<? extends Variable> positiveVariablesInClause) { | ||
25 | return Set.of(right); | ||
26 | } | ||
27 | |||
28 | @Override | ||
29 | public Set<Variable> getPrivateVariables(Set<? extends Variable> positiveVariablesInClause) { | ||
30 | return Set.of(); | ||
31 | } | ||
32 | |||
33 | @Override | ||
34 | public EquivalenceLiteral negate() { | ||
35 | return new EquivalenceLiteral(!positive, left, right); | ||
36 | } | ||
37 | |||
38 | @Override | ||
39 | public EquivalenceLiteral substitute(Substitution substitution) { | ||
40 | return new EquivalenceLiteral(positive, substitution.getTypeSafeSubstitute(left), | ||
41 | substitution.getTypeSafeSubstitute(right)); | ||
42 | } | ||
43 | |||
44 | @Override | ||
45 | public Literal reduce() { | ||
46 | if (left.equals(right)) { | ||
47 | return positive ? BooleanLiteral.TRUE : BooleanLiteral.FALSE; | ||
48 | } | ||
49 | return this; | ||
50 | } | ||
51 | |||
52 | @Override | ||
53 | public boolean equalsWithSubstitution(LiteralEqualityHelper helper, Literal other) { | ||
54 | if (other.getClass() != getClass()) { | ||
55 | return false; | ||
56 | } | ||
57 | var otherEquivalenceLiteral = (EquivalenceLiteral) other; | ||
58 | return helper.variableEqual(left, otherEquivalenceLiteral.left) && helper.variableEqual(right, | ||
59 | otherEquivalenceLiteral.right); | ||
60 | } | ||
61 | |||
62 | @Override | ||
63 | public String toString() { | ||
64 | return "%s %s %s".formatted(left, positive ? "===" : "!==", right); | ||
65 | } | ||
66 | |||
67 | @Override | ||
68 | public boolean equals(Object obj) { | ||
69 | if (obj == this) return true; | ||
70 | if (obj == null || obj.getClass() != this.getClass()) return false; | ||
71 | var that = (EquivalenceLiteral) obj; | ||
72 | return this.positive == that.positive && | ||
73 | Objects.equals(this.left, that.left) && | ||
74 | Objects.equals(this.right, that.right); | ||
75 | } | ||
76 | |||
77 | @Override | ||
78 | public int hashCode() { | ||
79 | return Objects.hash(getClass(), positive, left, right); | ||
80 | } | ||
81 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/Literal.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/Literal.java new file mode 100644 index 00000000..ce6c11fe --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/Literal.java | |||
@@ -0,0 +1,29 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.literal; | ||
7 | |||
8 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | ||
9 | import tools.refinery.store.query.substitution.Substitution; | ||
10 | import tools.refinery.store.query.term.Variable; | ||
11 | |||
12 | import java.util.Set; | ||
13 | |||
14 | public interface Literal { | ||
15 | Set<Variable> getOutputVariables(); | ||
16 | |||
17 | Set<Variable> getInputVariables(Set<? extends Variable> positiveVariablesInClause); | ||
18 | |||
19 | Set<Variable> getPrivateVariables(Set<? extends Variable> positiveVariablesInClause); | ||
20 | |||
21 | Literal substitute(Substitution substitution); | ||
22 | |||
23 | default Literal reduce() { | ||
24 | return this; | ||
25 | } | ||
26 | |||
27 | @SuppressWarnings("BooleanMethodIsAlwaysInverted") | ||
28 | boolean equalsWithSubstitution(LiteralEqualityHelper helper, Literal other); | ||
29 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/Literals.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/Literals.java new file mode 100644 index 00000000..b3a87811 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/Literals.java | |||
@@ -0,0 +1,22 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.literal; | ||
7 | |||
8 | import tools.refinery.store.query.term.Term; | ||
9 | |||
10 | public final class Literals { | ||
11 | private Literals() { | ||
12 | throw new IllegalStateException("This is a static utility class and should not be instantiated directly"); | ||
13 | } | ||
14 | |||
15 | public static <T extends CanNegate<T>> T not(CanNegate<T> literal) { | ||
16 | return literal.negate(); | ||
17 | } | ||
18 | |||
19 | public static AssumeLiteral assume(Term<Boolean> term) { | ||
20 | return new AssumeLiteral(term); | ||
21 | } | ||
22 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/Reduction.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/Reduction.java new file mode 100644 index 00000000..ee155a9a --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/literal/Reduction.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.literal; | ||
7 | |||
8 | public enum Reduction { | ||
9 | /** | ||
10 | * Signifies that a literal should be preserved in the clause. | ||
11 | */ | ||
12 | NOT_REDUCIBLE, | ||
13 | |||
14 | /** | ||
15 | * Signifies that the literal may be omitted from the cause (if the model being queried is nonempty). | ||
16 | */ | ||
17 | ALWAYS_TRUE, | ||
18 | |||
19 | /** | ||
20 | * Signifies that the clause with the literal may be omitted entirely. | ||
21 | */ | ||
22 | ALWAYS_FALSE; | ||
23 | |||
24 | public Reduction negate() { | ||
25 | return switch (this) { | ||
26 | case NOT_REDUCIBLE -> NOT_REDUCIBLE; | ||
27 | case ALWAYS_TRUE -> ALWAYS_FALSE; | ||
28 | case ALWAYS_FALSE -> ALWAYS_TRUE; | ||
29 | }; | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/resultset/AbstractResultSet.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/resultset/AbstractResultSet.java new file mode 100644 index 00000000..a710c64d --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/resultset/AbstractResultSet.java | |||
@@ -0,0 +1,63 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.resultset; | ||
7 | |||
8 | import tools.refinery.store.query.ModelQueryAdapter; | ||
9 | import tools.refinery.store.query.dnf.Query; | ||
10 | import tools.refinery.store.tuple.Tuple; | ||
11 | |||
12 | import java.util.ArrayList; | ||
13 | import java.util.List; | ||
14 | |||
15 | public abstract class AbstractResultSet<T> implements ResultSet<T> { | ||
16 | private final ModelQueryAdapter adapter; | ||
17 | private final Query<T> query; | ||
18 | private final List<ResultSetListener<T>> listeners = new ArrayList<>(); | ||
19 | |||
20 | protected AbstractResultSet(ModelQueryAdapter adapter, Query<T> query) { | ||
21 | this.adapter = adapter; | ||
22 | this.query = query; | ||
23 | } | ||
24 | |||
25 | @Override | ||
26 | public ModelQueryAdapter getAdapter() { | ||
27 | return adapter; | ||
28 | } | ||
29 | |||
30 | @Override | ||
31 | public Query<T> getQuery() { | ||
32 | return query; | ||
33 | } | ||
34 | |||
35 | @Override | ||
36 | public void addListener(ResultSetListener<T> listener) { | ||
37 | if (listeners.isEmpty()) { | ||
38 | startListeningForChanges(); | ||
39 | } | ||
40 | listeners.add(listener); | ||
41 | } | ||
42 | |||
43 | @Override | ||
44 | public void removeListener(ResultSetListener<T> listener) { | ||
45 | listeners.remove(listener); | ||
46 | if (listeners.isEmpty()) { | ||
47 | stopListeningForChanges(); | ||
48 | } | ||
49 | } | ||
50 | |||
51 | protected abstract void startListeningForChanges(); | ||
52 | |||
53 | protected abstract void stopListeningForChanges(); | ||
54 | |||
55 | protected void notifyChange(Tuple key, T oldValue, T newValue) { | ||
56 | int listenerCount = listeners.size(); | ||
57 | // Use a for loop instead of a for-each loop to avoid {@code Iterator} allocation overhead. | ||
58 | //noinspection ForLoopReplaceableByForEach | ||
59 | for (int i = 0; i < listenerCount; i++) { | ||
60 | listeners.get(i).put(key, oldValue, newValue); | ||
61 | } | ||
62 | } | ||
63 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/resultset/AnyResultSet.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/resultset/AnyResultSet.java new file mode 100644 index 00000000..02809477 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/resultset/AnyResultSet.java | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.resultset; | ||
7 | |||
8 | import tools.refinery.store.query.ModelQueryAdapter; | ||
9 | import tools.refinery.store.query.dnf.AnyQuery; | ||
10 | |||
11 | public sealed interface AnyResultSet permits ResultSet { | ||
12 | ModelQueryAdapter getAdapter(); | ||
13 | |||
14 | AnyQuery getQuery(); | ||
15 | |||
16 | int size(); | ||
17 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/resultset/EmptyResultSet.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/resultset/EmptyResultSet.java new file mode 100644 index 00000000..2795a44b --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/resultset/EmptyResultSet.java | |||
@@ -0,0 +1,49 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.resultset; | ||
7 | |||
8 | import tools.refinery.store.map.Cursor; | ||
9 | import tools.refinery.store.map.Cursors; | ||
10 | import tools.refinery.store.query.ModelQueryAdapter; | ||
11 | import tools.refinery.store.query.dnf.Query; | ||
12 | import tools.refinery.store.tuple.Tuple; | ||
13 | |||
14 | public record EmptyResultSet<T>(ModelQueryAdapter adapter, Query<T> query) implements ResultSet<T> { | ||
15 | @Override | ||
16 | public ModelQueryAdapter getAdapter() { | ||
17 | return adapter; | ||
18 | } | ||
19 | |||
20 | @Override | ||
21 | public Query<T> getQuery() { | ||
22 | return query; | ||
23 | } | ||
24 | |||
25 | @Override | ||
26 | public T get(Tuple parameters) { | ||
27 | return query.defaultValue(); | ||
28 | } | ||
29 | |||
30 | @Override | ||
31 | public Cursor<Tuple, T> getAll() { | ||
32 | return Cursors.empty(); | ||
33 | } | ||
34 | |||
35 | @Override | ||
36 | public int size() { | ||
37 | return 0; | ||
38 | } | ||
39 | |||
40 | @Override | ||
41 | public void addListener(ResultSetListener<T> listener) { | ||
42 | // No need to store the listener, because the empty result set will never change. | ||
43 | } | ||
44 | |||
45 | @Override | ||
46 | public void removeListener(ResultSetListener<T> listener) { | ||
47 | // No need to remove the listener, because we never stored it. | ||
48 | } | ||
49 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/resultset/OrderedResultSet.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/resultset/OrderedResultSet.java new file mode 100644 index 00000000..39006d65 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/resultset/OrderedResultSet.java | |||
@@ -0,0 +1,80 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.resultset; | ||
7 | |||
8 | import tools.refinery.store.map.Cursor; | ||
9 | import tools.refinery.store.query.ModelQueryAdapter; | ||
10 | import tools.refinery.store.query.dnf.Query; | ||
11 | import tools.refinery.store.query.utils.OrderStatisticTree; | ||
12 | import tools.refinery.store.tuple.Tuple; | ||
13 | |||
14 | import java.util.Objects; | ||
15 | |||
16 | public class OrderedResultSet<T> implements AutoCloseable, ResultSet<T> { | ||
17 | private final ResultSet<T> resultSet; | ||
18 | private final OrderStatisticTree<Tuple> tree = new OrderStatisticTree<>(); | ||
19 | private final ResultSetListener<T> listener = (key, fromValue, toValue) -> { | ||
20 | var defaultValue = getQuery().defaultValue(); | ||
21 | if (Objects.equals(defaultValue, toValue)) { | ||
22 | tree.remove(key); | ||
23 | } else { | ||
24 | tree.add(key); | ||
25 | } | ||
26 | }; | ||
27 | |||
28 | public OrderedResultSet(ResultSet<T> resultSet) { | ||
29 | this.resultSet = resultSet; | ||
30 | resultSet.addListener(listener); | ||
31 | var cursor = resultSet.getAll(); | ||
32 | while (cursor.move()) { | ||
33 | tree.add(cursor.getKey()); | ||
34 | } | ||
35 | } | ||
36 | |||
37 | @Override | ||
38 | public ModelQueryAdapter getAdapter() { | ||
39 | return resultSet.getAdapter(); | ||
40 | } | ||
41 | |||
42 | @Override | ||
43 | public int size() { | ||
44 | return resultSet.size(); | ||
45 | } | ||
46 | |||
47 | @Override | ||
48 | public Query<T> getQuery() { | ||
49 | return resultSet.getQuery(); | ||
50 | } | ||
51 | |||
52 | @Override | ||
53 | public T get(Tuple parameters) { | ||
54 | return resultSet.get(parameters); | ||
55 | } | ||
56 | |||
57 | public Tuple getKey(int index) { | ||
58 | return tree.get(index); | ||
59 | } | ||
60 | |||
61 | @Override | ||
62 | public Cursor<Tuple, T> getAll() { | ||
63 | return resultSet.getAll(); | ||
64 | } | ||
65 | |||
66 | @Override | ||
67 | public void addListener(ResultSetListener<T> listener) { | ||
68 | resultSet.addListener(listener); | ||
69 | } | ||
70 | |||
71 | @Override | ||
72 | public void removeListener(ResultSetListener<T> listener) { | ||
73 | resultSet.removeListener(listener); | ||
74 | } | ||
75 | |||
76 | @Override | ||
77 | public void close() { | ||
78 | resultSet.removeListener(listener); | ||
79 | } | ||
80 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/resultset/ResultSet.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/resultset/ResultSet.java new file mode 100644 index 00000000..33d1ea95 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/resultset/ResultSet.java | |||
@@ -0,0 +1,22 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.resultset; | ||
7 | |||
8 | import tools.refinery.store.map.Cursor; | ||
9 | import tools.refinery.store.query.dnf.Query; | ||
10 | import tools.refinery.store.tuple.Tuple; | ||
11 | |||
12 | public non-sealed interface ResultSet<T> extends AnyResultSet { | ||
13 | Query<T> getQuery(); | ||
14 | |||
15 | T get(Tuple parameters); | ||
16 | |||
17 | Cursor<Tuple, T> getAll(); | ||
18 | |||
19 | void addListener(ResultSetListener<T> listener); | ||
20 | |||
21 | void removeListener(ResultSetListener<T> listener); | ||
22 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/resultset/ResultSetListener.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/resultset/ResultSetListener.java new file mode 100644 index 00000000..fd8a503e --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/resultset/ResultSetListener.java | |||
@@ -0,0 +1,13 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.resultset; | ||
7 | |||
8 | import tools.refinery.store.tuple.Tuple; | ||
9 | |||
10 | @FunctionalInterface | ||
11 | public interface ResultSetListener<T> { | ||
12 | void put(Tuple key, T fromValue, T toValue); | ||
13 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/substitution/MapBasedSubstitution.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/substitution/MapBasedSubstitution.java new file mode 100644 index 00000000..a8201eef --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/substitution/MapBasedSubstitution.java | |||
@@ -0,0 +1,18 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.substitution; | ||
7 | |||
8 | import tools.refinery.store.query.term.Variable; | ||
9 | |||
10 | import java.util.Map; | ||
11 | |||
12 | public record MapBasedSubstitution(Map<Variable, Variable> map, Substitution fallback) implements Substitution { | ||
13 | @Override | ||
14 | public Variable getSubstitute(Variable variable) { | ||
15 | var value = map.get(variable); | ||
16 | return value == null ? fallback.getSubstitute(variable) : value; | ||
17 | } | ||
18 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/substitution/RenewingSubstitution.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/substitution/RenewingSubstitution.java new file mode 100644 index 00000000..9b737ceb --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/substitution/RenewingSubstitution.java | |||
@@ -0,0 +1,20 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.substitution; | ||
7 | |||
8 | import tools.refinery.store.query.term.Variable; | ||
9 | |||
10 | import java.util.HashMap; | ||
11 | import java.util.Map; | ||
12 | |||
13 | public class RenewingSubstitution implements Substitution { | ||
14 | private final Map<Variable, Variable> alreadyRenewed = new HashMap<>(); | ||
15 | |||
16 | @Override | ||
17 | public Variable getSubstitute(Variable variable) { | ||
18 | return alreadyRenewed.computeIfAbsent(variable, Variable::renew); | ||
19 | } | ||
20 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/substitution/StatelessSubstitution.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/substitution/StatelessSubstitution.java new file mode 100644 index 00000000..bb3803d3 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/substitution/StatelessSubstitution.java | |||
@@ -0,0 +1,23 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.substitution; | ||
7 | |||
8 | import tools.refinery.store.query.term.Variable; | ||
9 | |||
10 | public enum StatelessSubstitution implements Substitution { | ||
11 | FAILING { | ||
12 | @Override | ||
13 | public Variable getSubstitute(Variable variable) { | ||
14 | throw new IllegalArgumentException("No substitute for " + variable); | ||
15 | } | ||
16 | }, | ||
17 | IDENTITY { | ||
18 | @Override | ||
19 | public Variable getSubstitute(Variable variable) { | ||
20 | return variable; | ||
21 | } | ||
22 | } | ||
23 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/substitution/Substitution.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/substitution/Substitution.java new file mode 100644 index 00000000..834fce12 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/substitution/Substitution.java | |||
@@ -0,0 +1,29 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.substitution; | ||
7 | |||
8 | import tools.refinery.store.query.term.DataVariable; | ||
9 | import tools.refinery.store.query.term.NodeVariable; | ||
10 | import tools.refinery.store.query.term.Variable; | ||
11 | |||
12 | @FunctionalInterface | ||
13 | public interface Substitution { | ||
14 | Variable getSubstitute(Variable variable); | ||
15 | |||
16 | default NodeVariable getTypeSafeSubstitute(NodeVariable variable) { | ||
17 | var substitute = getSubstitute(variable); | ||
18 | return substitute.asNodeVariable(); | ||
19 | } | ||
20 | |||
21 | default <T> DataVariable<T> getTypeSafeSubstitute(DataVariable<T> variable) { | ||
22 | var substitute = getSubstitute(variable); | ||
23 | return substitute.asDataVariable(variable.getType()); | ||
24 | } | ||
25 | |||
26 | static SubstitutionBuilder builder() { | ||
27 | return new SubstitutionBuilder(); | ||
28 | } | ||
29 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/substitution/SubstitutionBuilder.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/substitution/SubstitutionBuilder.java new file mode 100644 index 00000000..37fb6908 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/substitution/SubstitutionBuilder.java | |||
@@ -0,0 +1,79 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.substitution; | ||
7 | |||
8 | import tools.refinery.store.query.term.DataVariable; | ||
9 | import tools.refinery.store.query.term.NodeVariable; | ||
10 | import tools.refinery.store.query.term.Variable; | ||
11 | |||
12 | import java.util.Collections; | ||
13 | import java.util.HashMap; | ||
14 | import java.util.List; | ||
15 | import java.util.Map; | ||
16 | |||
17 | @SuppressWarnings("UnusedReturnValue") | ||
18 | public class SubstitutionBuilder { | ||
19 | private final Map<Variable, Variable> map = new HashMap<>(); | ||
20 | private Substitution fallback; | ||
21 | |||
22 | SubstitutionBuilder() { | ||
23 | total(); | ||
24 | } | ||
25 | |||
26 | public SubstitutionBuilder put(NodeVariable original, NodeVariable substitute) { | ||
27 | return putChecked(original, substitute); | ||
28 | } | ||
29 | |||
30 | public <T> SubstitutionBuilder put(DataVariable<T> original, DataVariable<T> substitute) { | ||
31 | return putChecked(original, substitute); | ||
32 | } | ||
33 | |||
34 | public SubstitutionBuilder putChecked(Variable original, Variable substitute) { | ||
35 | if (!original.tryGetType().equals(substitute.tryGetType())) { | ||
36 | throw new IllegalArgumentException("Cannot substitute variable %s of sort %s with variable %s of sort %s" | ||
37 | .formatted(original, original.tryGetType().map(Class::getName).orElse("node"), substitute, | ||
38 | substitute.tryGetType().map(Class::getName).orElse("node"))); | ||
39 | } | ||
40 | if (map.containsKey(original)) { | ||
41 | throw new IllegalArgumentException("Already has substitution for variable %s".formatted(original)); | ||
42 | } | ||
43 | map.put(original, substitute); | ||
44 | return this; | ||
45 | } | ||
46 | |||
47 | public SubstitutionBuilder putManyChecked(List<Variable> originals, List<Variable> substitutes) { | ||
48 | int size = originals.size(); | ||
49 | if (size != substitutes.size()) { | ||
50 | throw new IllegalArgumentException("Cannot substitute %d variables %s with %d variables %s" | ||
51 | .formatted(size, originals, substitutes.size(), substitutes)); | ||
52 | } | ||
53 | for (int i = 0; i < size; i++) { | ||
54 | putChecked(originals.get(i), substitutes.get(i)); | ||
55 | } | ||
56 | return this; | ||
57 | } | ||
58 | |||
59 | public SubstitutionBuilder fallback(Substitution newFallback) { | ||
60 | fallback = newFallback; | ||
61 | return this; | ||
62 | } | ||
63 | |||
64 | public SubstitutionBuilder total() { | ||
65 | return fallback(StatelessSubstitution.FAILING); | ||
66 | } | ||
67 | |||
68 | public SubstitutionBuilder partial() { | ||
69 | return fallback(StatelessSubstitution.IDENTITY); | ||
70 | } | ||
71 | |||
72 | public SubstitutionBuilder renewing() { | ||
73 | return fallback(new RenewingSubstitution()); | ||
74 | } | ||
75 | |||
76 | public Substitution build() { | ||
77 | return map.isEmpty() ? fallback : new MapBasedSubstitution(Collections.unmodifiableMap(map), fallback); | ||
78 | } | ||
79 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/AbstractTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/AbstractTerm.java new file mode 100644 index 00000000..d0ae3c12 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/AbstractTerm.java | |||
@@ -0,0 +1,41 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term; | ||
7 | |||
8 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | ||
9 | |||
10 | import java.util.Objects; | ||
11 | |||
12 | public abstract class AbstractTerm<T> implements Term<T> { | ||
13 | private final Class<T> type; | ||
14 | |||
15 | protected AbstractTerm(Class<T> type) { | ||
16 | this.type = type; | ||
17 | } | ||
18 | |||
19 | @Override | ||
20 | public boolean equalsWithSubstitution(LiteralEqualityHelper helper, AnyTerm other) { | ||
21 | return getClass().equals(other.getClass()) && type.equals(other.getType()); | ||
22 | } | ||
23 | |||
24 | @Override | ||
25 | public Class<T> getType() { | ||
26 | return type; | ||
27 | } | ||
28 | |||
29 | @Override | ||
30 | public boolean equals(Object o) { | ||
31 | if (this == o) return true; | ||
32 | if (o == null || getClass() != o.getClass()) return false; | ||
33 | AbstractTerm<?> that = (AbstractTerm<?>) o; | ||
34 | return type.equals(that.type); | ||
35 | } | ||
36 | |||
37 | @Override | ||
38 | public int hashCode() { | ||
39 | return Objects.hash(getClass(), type); | ||
40 | } | ||
41 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/Aggregator.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/Aggregator.java new file mode 100644 index 00000000..0684a9d9 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/Aggregator.java | |||
@@ -0,0 +1,18 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term; | ||
7 | |||
8 | import java.util.stream.Stream; | ||
9 | |||
10 | public interface Aggregator<R, T> { | ||
11 | Class<R> getResultType(); | ||
12 | |||
13 | Class<T> getInputType(); | ||
14 | |||
15 | R aggregateStream(Stream<T> stream); | ||
16 | |||
17 | R getEmptyResult(); | ||
18 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/AnyDataVariable.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/AnyDataVariable.java new file mode 100644 index 00000000..192c39c5 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/AnyDataVariable.java | |||
@@ -0,0 +1,49 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term; | ||
7 | |||
8 | import org.jetbrains.annotations.Nullable; | ||
9 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | ||
10 | |||
11 | import java.util.Optional; | ||
12 | import java.util.Set; | ||
13 | |||
14 | public abstract sealed class AnyDataVariable extends Variable implements AnyTerm permits DataVariable { | ||
15 | protected AnyDataVariable(String name) { | ||
16 | super(name); | ||
17 | } | ||
18 | |||
19 | @Override | ||
20 | public Optional<Class<?>> tryGetType() { | ||
21 | return Optional.of(getType()); | ||
22 | } | ||
23 | |||
24 | @Override | ||
25 | public NodeVariable asNodeVariable() { | ||
26 | throw new IllegalStateException("%s is a data variable".formatted(this)); | ||
27 | } | ||
28 | |||
29 | @Override | ||
30 | public boolean equalsWithSubstitution(LiteralEqualityHelper helper, AnyTerm other) { | ||
31 | return other instanceof AnyDataVariable dataVariable && helper.variableEqual(this, dataVariable); | ||
32 | } | ||
33 | |||
34 | @Override | ||
35 | public Set<AnyDataVariable> getInputVariables() { | ||
36 | return Set.of(this); | ||
37 | } | ||
38 | |||
39 | @Override | ||
40 | public boolean isUnifiable() { | ||
41 | return false; | ||
42 | } | ||
43 | |||
44 | @Override | ||
45 | public abstract AnyDataVariable renew(@Nullable String name); | ||
46 | |||
47 | @Override | ||
48 | public abstract AnyDataVariable renew(); | ||
49 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/AnyTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/AnyTerm.java new file mode 100644 index 00000000..c12c0166 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/AnyTerm.java | |||
@@ -0,0 +1,21 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term; | ||
7 | |||
8 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | ||
9 | import tools.refinery.store.query.substitution.Substitution; | ||
10 | |||
11 | import java.util.Set; | ||
12 | |||
13 | public sealed interface AnyTerm permits AnyDataVariable, Term { | ||
14 | Class<?> getType(); | ||
15 | |||
16 | AnyTerm substitute(Substitution substitution); | ||
17 | |||
18 | boolean equalsWithSubstitution(LiteralEqualityHelper helper, AnyTerm other); | ||
19 | |||
20 | Set<AnyDataVariable> getInputVariables(); | ||
21 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/AssignedValue.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/AssignedValue.java new file mode 100644 index 00000000..0cf30aa6 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/AssignedValue.java | |||
@@ -0,0 +1,13 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term; | ||
7 | |||
8 | import tools.refinery.store.query.literal.Literal; | ||
9 | |||
10 | @FunctionalInterface | ||
11 | public interface AssignedValue<T> { | ||
12 | Literal toLiteral(DataVariable<T> targetVariable); | ||
13 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/BinaryTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/BinaryTerm.java new file mode 100644 index 00000000..8ad17839 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/BinaryTerm.java | |||
@@ -0,0 +1,113 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term; | ||
7 | |||
8 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | ||
9 | import tools.refinery.store.query.substitution.Substitution; | ||
10 | import tools.refinery.store.query.valuation.Valuation; | ||
11 | |||
12 | import java.util.Collections; | ||
13 | import java.util.HashSet; | ||
14 | import java.util.Objects; | ||
15 | import java.util.Set; | ||
16 | |||
17 | public abstract class BinaryTerm<R, T1, T2> extends AbstractTerm<R> { | ||
18 | private final Class<T1> leftType; | ||
19 | private final Class<T2> rightType; | ||
20 | private final Term<T1> left; | ||
21 | private final Term<T2> right; | ||
22 | |||
23 | protected BinaryTerm(Class<R> type, Class<T1> leftType, Class<T2> rightType, Term<T1> left, Term<T2> right) { | ||
24 | super(type); | ||
25 | if (!left.getType().equals(leftType)) { | ||
26 | throw new IllegalArgumentException("Expected left %s to be of type %s, got %s instead".formatted( | ||
27 | left, leftType.getName(), left.getType().getName())); | ||
28 | } | ||
29 | if (!right.getType().equals(rightType)) { | ||
30 | throw new IllegalArgumentException("Expected right %s to be of type %s, got %s instead".formatted( | ||
31 | right, rightType.getName(), right.getType().getName())); | ||
32 | } | ||
33 | this.leftType = leftType; | ||
34 | this.rightType = rightType; | ||
35 | this.left = left; | ||
36 | this.right = right; | ||
37 | } | ||
38 | |||
39 | public Class<T1> getLeftType() { | ||
40 | return leftType; | ||
41 | } | ||
42 | |||
43 | public Class<T2> getRightType() { | ||
44 | return rightType; | ||
45 | } | ||
46 | |||
47 | public Term<T1> getLeft() { | ||
48 | return left; | ||
49 | } | ||
50 | |||
51 | public Term<T2> getRight() { | ||
52 | return right; | ||
53 | } | ||
54 | |||
55 | @Override | ||
56 | public R evaluate(Valuation valuation) { | ||
57 | var leftValue = left.evaluate(valuation); | ||
58 | if (leftValue == null) { | ||
59 | return null; | ||
60 | } | ||
61 | var rightValue = right.evaluate(valuation); | ||
62 | if (rightValue == null) { | ||
63 | return null; | ||
64 | } | ||
65 | return doEvaluate(leftValue, rightValue); | ||
66 | } | ||
67 | |||
68 | protected abstract R doEvaluate(T1 leftValue, T2 rightValue); | ||
69 | |||
70 | @Override | ||
71 | public boolean equalsWithSubstitution(LiteralEqualityHelper helper, AnyTerm other) { | ||
72 | if (!super.equalsWithSubstitution(helper, other)) { | ||
73 | return false; | ||
74 | } | ||
75 | var otherBinaryTerm = (BinaryTerm<?, ?, ?>) other; | ||
76 | return leftType.equals(otherBinaryTerm.leftType) && | ||
77 | rightType.equals(otherBinaryTerm.rightType) && | ||
78 | left.equalsWithSubstitution(helper, otherBinaryTerm.left) && | ||
79 | right.equalsWithSubstitution(helper, otherBinaryTerm.right); | ||
80 | } | ||
81 | |||
82 | @Override | ||
83 | public Term<R> substitute(Substitution substitution) { | ||
84 | return doSubstitute(substitution, left.substitute(substitution), right.substitute(substitution)); | ||
85 | } | ||
86 | |||
87 | public abstract Term<R> doSubstitute(Substitution substitution, Term<T1> substitutedLeft, | ||
88 | Term<T2> substitutedRight); | ||
89 | |||
90 | @Override | ||
91 | public Set<AnyDataVariable> getInputVariables() { | ||
92 | var inputVariables = new HashSet<>(left.getInputVariables()); | ||
93 | inputVariables.addAll(right.getInputVariables()); | ||
94 | return Collections.unmodifiableSet(inputVariables); | ||
95 | } | ||
96 | |||
97 | @Override | ||
98 | public boolean equals(Object o) { | ||
99 | if (this == o) return true; | ||
100 | if (o == null || getClass() != o.getClass()) return false; | ||
101 | if (!super.equals(o)) return false; | ||
102 | BinaryTerm<?, ?, ?> that = (BinaryTerm<?, ?, ?>) o; | ||
103 | return Objects.equals(leftType, that.leftType) && | ||
104 | Objects.equals(rightType, that.rightType) && | ||
105 | Objects.equals(left, that.left) && | ||
106 | Objects.equals(right, that.right); | ||
107 | } | ||
108 | |||
109 | @Override | ||
110 | public int hashCode() { | ||
111 | return Objects.hash(super.hashCode(), leftType, rightType, left, right); | ||
112 | } | ||
113 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/ConstantTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/ConstantTerm.java new file mode 100644 index 00000000..2f6c56d1 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/ConstantTerm.java | |||
@@ -0,0 +1,71 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term; | ||
7 | |||
8 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | ||
9 | import tools.refinery.store.query.substitution.Substitution; | ||
10 | import tools.refinery.store.query.valuation.Valuation; | ||
11 | |||
12 | import java.util.Objects; | ||
13 | import java.util.Set; | ||
14 | |||
15 | public final class ConstantTerm<T> extends AbstractTerm<T> { | ||
16 | private final T value; | ||
17 | |||
18 | public ConstantTerm(Class<T> type, T value) { | ||
19 | super(type); | ||
20 | if (value != null && !type.isInstance(value)) { | ||
21 | throw new IllegalArgumentException("Value %s is not an instance of %s".formatted(value, type.getName())); | ||
22 | } | ||
23 | this.value = value; | ||
24 | } | ||
25 | |||
26 | public T getValue() { | ||
27 | return value; | ||
28 | } | ||
29 | |||
30 | @Override | ||
31 | public T evaluate(Valuation valuation) { | ||
32 | return getValue(); | ||
33 | } | ||
34 | |||
35 | @Override | ||
36 | public Term<T> substitute(Substitution substitution) { | ||
37 | return this; | ||
38 | } | ||
39 | |||
40 | @Override | ||
41 | public boolean equalsWithSubstitution(LiteralEqualityHelper helper, AnyTerm other) { | ||
42 | if (!super.equalsWithSubstitution(helper, other)) { | ||
43 | return false; | ||
44 | } | ||
45 | var otherConstantTerm = (ConstantTerm<?>) other; | ||
46 | return Objects.equals(value, otherConstantTerm.value); | ||
47 | } | ||
48 | |||
49 | @Override | ||
50 | public Set<AnyDataVariable> getInputVariables() { | ||
51 | return Set.of(); | ||
52 | } | ||
53 | |||
54 | @Override | ||
55 | public String toString() { | ||
56 | return value.toString(); | ||
57 | } | ||
58 | |||
59 | @Override | ||
60 | public boolean equals(Object o) { | ||
61 | if (this == o) return true; | ||
62 | if (o == null || getClass() != o.getClass()) return false; | ||
63 | ConstantTerm<?> that = (ConstantTerm<?>) o; | ||
64 | return Objects.equals(value, that.value); | ||
65 | } | ||
66 | |||
67 | @Override | ||
68 | public int hashCode() { | ||
69 | return Objects.hash(value); | ||
70 | } | ||
71 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/DataVariable.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/DataVariable.java new file mode 100644 index 00000000..00950360 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/DataVariable.java | |||
@@ -0,0 +1,82 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term; | ||
7 | |||
8 | import org.jetbrains.annotations.Nullable; | ||
9 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | ||
10 | import tools.refinery.store.query.literal.Literal; | ||
11 | import tools.refinery.store.query.substitution.Substitution; | ||
12 | import tools.refinery.store.query.valuation.Valuation; | ||
13 | |||
14 | import java.util.Objects; | ||
15 | |||
16 | public final class DataVariable<T> extends AnyDataVariable implements Term<T> { | ||
17 | private final Class<T> type; | ||
18 | |||
19 | DataVariable(String name, Class<T> type) { | ||
20 | super(name); | ||
21 | this.type = type; | ||
22 | } | ||
23 | |||
24 | @Override | ||
25 | public Class<T> getType() { | ||
26 | return type; | ||
27 | } | ||
28 | |||
29 | @Override | ||
30 | public DataVariable<T> renew(@Nullable String name) { | ||
31 | return new DataVariable<>(name, type); | ||
32 | } | ||
33 | |||
34 | @Override | ||
35 | public DataVariable<T> renew() { | ||
36 | return renew(getExplicitName()); | ||
37 | } | ||
38 | |||
39 | @Override | ||
40 | public <U> DataVariable<U> asDataVariable(Class<U> newType) { | ||
41 | if (!getType().equals(newType)) { | ||
42 | throw new IllegalStateException("%s is not of type %s but of type %s".formatted(this, newType.getName(), | ||
43 | getType().getName())); | ||
44 | } | ||
45 | @SuppressWarnings("unchecked") | ||
46 | var result = (DataVariable<U>) this; | ||
47 | return result; | ||
48 | } | ||
49 | |||
50 | @Override | ||
51 | public T evaluate(Valuation valuation) { | ||
52 | return valuation.getValue(this); | ||
53 | } | ||
54 | |||
55 | @Override | ||
56 | public Term<T> substitute(Substitution substitution) { | ||
57 | return substitution.getTypeSafeSubstitute(this); | ||
58 | } | ||
59 | |||
60 | @Override | ||
61 | public boolean equalsWithSubstitution(LiteralEqualityHelper helper, AnyTerm other) { | ||
62 | return other instanceof DataVariable<?> dataVariable && helper.variableEqual(this, dataVariable); | ||
63 | } | ||
64 | |||
65 | public Literal assign(AssignedValue<T> value) { | ||
66 | return value.toLiteral(this); | ||
67 | } | ||
68 | |||
69 | @Override | ||
70 | public boolean equals(Object o) { | ||
71 | if (this == o) return true; | ||
72 | if (o == null || getClass() != o.getClass()) return false; | ||
73 | if (!super.equals(o)) return false; | ||
74 | DataVariable<?> that = (DataVariable<?>) o; | ||
75 | return type.equals(that.type); | ||
76 | } | ||
77 | |||
78 | @Override | ||
79 | public int hashCode() { | ||
80 | return Objects.hash(super.hashCode(), type); | ||
81 | } | ||
82 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/ExtremeValueAggregator.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/ExtremeValueAggregator.java new file mode 100644 index 00000000..657cb631 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/ExtremeValueAggregator.java | |||
@@ -0,0 +1,108 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term; | ||
7 | |||
8 | import java.util.Comparator; | ||
9 | import java.util.Objects; | ||
10 | import java.util.SortedMap; | ||
11 | import java.util.TreeMap; | ||
12 | |||
13 | public class ExtremeValueAggregator<T> implements StatefulAggregator<T, T> { | ||
14 | private final Class<T> type; | ||
15 | private final T emptyResult; | ||
16 | private final Comparator<T> comparator; | ||
17 | |||
18 | public ExtremeValueAggregator(Class<T> type, T emptyResult) { | ||
19 | this(type, emptyResult, null); | ||
20 | } | ||
21 | |||
22 | public ExtremeValueAggregator(Class<T> type, T emptyResult, Comparator<T> comparator) { | ||
23 | this.type = type; | ||
24 | this.emptyResult = emptyResult; | ||
25 | this.comparator = comparator; | ||
26 | } | ||
27 | |||
28 | @Override | ||
29 | public Class<T> getResultType() { | ||
30 | return getInputType(); | ||
31 | } | ||
32 | |||
33 | @Override | ||
34 | public Class<T> getInputType() { | ||
35 | return type; | ||
36 | } | ||
37 | |||
38 | @Override | ||
39 | public StatefulAggregate<T, T> createEmptyAggregate() { | ||
40 | return new Aggregate(); | ||
41 | } | ||
42 | |||
43 | @Override | ||
44 | public T getEmptyResult() { | ||
45 | return emptyResult; | ||
46 | } | ||
47 | |||
48 | @Override | ||
49 | public boolean equals(Object o) { | ||
50 | if (this == o) return true; | ||
51 | if (o == null || getClass() != o.getClass()) return false; | ||
52 | ExtremeValueAggregator<?> that = (ExtremeValueAggregator<?>) o; | ||
53 | return type.equals(that.type) && Objects.equals(emptyResult, that.emptyResult) && Objects.equals(comparator, | ||
54 | that.comparator); | ||
55 | } | ||
56 | |||
57 | @Override | ||
58 | public int hashCode() { | ||
59 | return Objects.hash(type, emptyResult, comparator); | ||
60 | } | ||
61 | |||
62 | private class Aggregate implements StatefulAggregate<T, T> { | ||
63 | private final SortedMap<T, Integer> values; | ||
64 | |||
65 | private Aggregate() { | ||
66 | values = new TreeMap<>(comparator); | ||
67 | } | ||
68 | |||
69 | private Aggregate(Aggregate other) { | ||
70 | values = new TreeMap<>(other.values); | ||
71 | } | ||
72 | |||
73 | @Override | ||
74 | public void add(T value) { | ||
75 | values.compute(value, (ignoredValue, currentCount) -> currentCount == null ? 1 : currentCount + 1); | ||
76 | } | ||
77 | |||
78 | @Override | ||
79 | public void remove(T value) { | ||
80 | values.compute(value, (theValue, currentCount) -> { | ||
81 | if (currentCount == null || currentCount <= 0) { | ||
82 | throw new IllegalStateException("Invalid count %d for value %s".formatted(currentCount, theValue)); | ||
83 | } | ||
84 | return currentCount.equals(1) ? null : currentCount - 1; | ||
85 | }); | ||
86 | } | ||
87 | |||
88 | @Override | ||
89 | public T getResult() { | ||
90 | return isEmpty() ? emptyResult : values.firstKey(); | ||
91 | } | ||
92 | |||
93 | @Override | ||
94 | public boolean isEmpty() { | ||
95 | return values.isEmpty(); | ||
96 | } | ||
97 | |||
98 | @Override | ||
99 | public StatefulAggregate<T, T> deepCopy() { | ||
100 | return new Aggregate(this); | ||
101 | } | ||
102 | |||
103 | @Override | ||
104 | public boolean contains(T value) { | ||
105 | return StatefulAggregate.super.contains(value); | ||
106 | } | ||
107 | } | ||
108 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/NodeVariable.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/NodeVariable.java new file mode 100644 index 00000000..a2f3261f --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/NodeVariable.java | |||
@@ -0,0 +1,60 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term; | ||
7 | |||
8 | import org.jetbrains.annotations.Nullable; | ||
9 | import tools.refinery.store.query.literal.ConstantLiteral; | ||
10 | import tools.refinery.store.query.literal.EquivalenceLiteral; | ||
11 | |||
12 | import java.util.Optional; | ||
13 | |||
14 | public final class NodeVariable extends Variable { | ||
15 | NodeVariable(@Nullable String name) { | ||
16 | super(name); | ||
17 | } | ||
18 | |||
19 | @Override | ||
20 | public Optional<Class<?>> tryGetType() { | ||
21 | return Optional.empty(); | ||
22 | } | ||
23 | |||
24 | @Override | ||
25 | public boolean isUnifiable() { | ||
26 | return true; | ||
27 | } | ||
28 | |||
29 | @Override | ||
30 | public NodeVariable renew(@Nullable String name) { | ||
31 | return Variable.of(name); | ||
32 | } | ||
33 | |||
34 | @Override | ||
35 | public NodeVariable renew() { | ||
36 | return renew(getExplicitName()); | ||
37 | } | ||
38 | |||
39 | @Override | ||
40 | public NodeVariable asNodeVariable() { | ||
41 | return this; | ||
42 | } | ||
43 | |||
44 | @Override | ||
45 | public <T> DataVariable<T> asDataVariable(Class<T> type) { | ||
46 | throw new IllegalStateException("%s is a node variable".formatted(this)); | ||
47 | } | ||
48 | |||
49 | public ConstantLiteral isConstant(int value) { | ||
50 | return new ConstantLiteral(this, value); | ||
51 | } | ||
52 | |||
53 | public EquivalenceLiteral isEquivalent(NodeVariable other) { | ||
54 | return new EquivalenceLiteral(true, this, other); | ||
55 | } | ||
56 | |||
57 | public EquivalenceLiteral notEquivalent(NodeVariable other) { | ||
58 | return new EquivalenceLiteral(false, this, other); | ||
59 | } | ||
60 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/Parameter.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/Parameter.java new file mode 100644 index 00000000..e5a0cdf1 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/Parameter.java | |||
@@ -0,0 +1,60 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term; | ||
7 | |||
8 | import java.util.Objects; | ||
9 | import java.util.Optional; | ||
10 | |||
11 | public class Parameter { | ||
12 | public static final Parameter NODE_OUT = new Parameter(null, ParameterDirection.OUT); | ||
13 | |||
14 | private final Class<?> dataType; | ||
15 | private final ParameterDirection direction; | ||
16 | |||
17 | public Parameter(Class<?> dataType, ParameterDirection direction) { | ||
18 | this.dataType = dataType; | ||
19 | this.direction = direction; | ||
20 | } | ||
21 | |||
22 | public boolean isNodeVariable() { | ||
23 | return dataType == null; | ||
24 | } | ||
25 | |||
26 | public boolean isDataVariable() { | ||
27 | return !isNodeVariable(); | ||
28 | } | ||
29 | |||
30 | public Optional<Class<?>> tryGetType() { | ||
31 | return Optional.ofNullable(dataType); | ||
32 | } | ||
33 | |||
34 | public ParameterDirection getDirection() { | ||
35 | return direction; | ||
36 | } | ||
37 | |||
38 | public boolean isAssignable(Variable variable) { | ||
39 | if (variable instanceof AnyDataVariable dataVariable) { | ||
40 | return dataVariable.getType().equals(dataType); | ||
41 | } else if (variable instanceof NodeVariable) { | ||
42 | return !isDataVariable(); | ||
43 | } else { | ||
44 | throw new IllegalArgumentException("Unknown variable " + variable); | ||
45 | } | ||
46 | } | ||
47 | |||
48 | @Override | ||
49 | public boolean equals(Object o) { | ||
50 | if (this == o) return true; | ||
51 | if (o == null || getClass() != o.getClass()) return false; | ||
52 | Parameter parameter = (Parameter) o; | ||
53 | return Objects.equals(dataType, parameter.dataType) && direction == parameter.direction; | ||
54 | } | ||
55 | |||
56 | @Override | ||
57 | public int hashCode() { | ||
58 | return Objects.hash(dataType, direction); | ||
59 | } | ||
60 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/ParameterDirection.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/ParameterDirection.java new file mode 100644 index 00000000..cd0739be --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/ParameterDirection.java | |||
@@ -0,0 +1,22 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term; | ||
7 | |||
8 | public enum ParameterDirection { | ||
9 | OUT("@Out"), | ||
10 | IN("@In"); | ||
11 | |||
12 | private final String name; | ||
13 | |||
14 | ParameterDirection(String name) { | ||
15 | this.name = name; | ||
16 | } | ||
17 | |||
18 | @Override | ||
19 | public String toString() { | ||
20 | return name; | ||
21 | } | ||
22 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/StatefulAggregate.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/StatefulAggregate.java new file mode 100644 index 00000000..ab310556 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/StatefulAggregate.java | |||
@@ -0,0 +1,22 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term; | ||
7 | |||
8 | public interface StatefulAggregate<R, T> { | ||
9 | void add(T value); | ||
10 | |||
11 | void remove(T value); | ||
12 | |||
13 | R getResult(); | ||
14 | |||
15 | boolean isEmpty(); | ||
16 | |||
17 | StatefulAggregate<R, T> deepCopy(); | ||
18 | |||
19 | default boolean contains(T value) { | ||
20 | throw new UnsupportedOperationException(); | ||
21 | } | ||
22 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/StatefulAggregator.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/StatefulAggregator.java new file mode 100644 index 00000000..df746a90 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/StatefulAggregator.java | |||
@@ -0,0 +1,28 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term; | ||
7 | |||
8 | import java.util.stream.Stream; | ||
9 | |||
10 | public interface StatefulAggregator<R, T> extends Aggregator<R, T> { | ||
11 | StatefulAggregate<R, T> createEmptyAggregate(); | ||
12 | |||
13 | @Override | ||
14 | default R aggregateStream(Stream<T> stream) { | ||
15 | var accumulator = createEmptyAggregate(); | ||
16 | var iterator = stream.iterator(); | ||
17 | while (iterator.hasNext()) { | ||
18 | var value = iterator.next(); | ||
19 | accumulator.add(value); | ||
20 | } | ||
21 | return accumulator.getResult(); | ||
22 | } | ||
23 | |||
24 | @Override | ||
25 | default R getEmptyResult() { | ||
26 | return createEmptyAggregate().getResult(); | ||
27 | } | ||
28 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/StatelessAggregator.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/StatelessAggregator.java new file mode 100644 index 00000000..a094919e --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/StatelessAggregator.java | |||
@@ -0,0 +1,25 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term; | ||
7 | |||
8 | import java.util.stream.Stream; | ||
9 | |||
10 | public interface StatelessAggregator<R, T> extends Aggregator<R, T> { | ||
11 | R add(R current, T value); | ||
12 | |||
13 | R remove(R current, T value); | ||
14 | |||
15 | @Override | ||
16 | default R aggregateStream(Stream<T> stream) { | ||
17 | var accumulator = getEmptyResult(); | ||
18 | var iterator = stream.iterator(); | ||
19 | while (iterator.hasNext()) { | ||
20 | var value = iterator.next(); | ||
21 | accumulator = add(accumulator, value); | ||
22 | } | ||
23 | return accumulator; | ||
24 | } | ||
25 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/Term.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/Term.java new file mode 100644 index 00000000..e6818b88 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/Term.java | |||
@@ -0,0 +1,26 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term; | ||
7 | |||
8 | import tools.refinery.store.query.literal.AssignLiteral; | ||
9 | import tools.refinery.store.query.literal.Literal; | ||
10 | import tools.refinery.store.query.substitution.Substitution; | ||
11 | import tools.refinery.store.query.valuation.Valuation; | ||
12 | |||
13 | public non-sealed interface Term<T> extends AnyTerm, AssignedValue<T> { | ||
14 | @Override | ||
15 | Class<T> getType(); | ||
16 | |||
17 | T evaluate(Valuation valuation); | ||
18 | |||
19 | @Override | ||
20 | Term<T> substitute(Substitution substitution); | ||
21 | |||
22 | @Override | ||
23 | default Literal toLiteral(DataVariable<T> targetVariable) { | ||
24 | return new AssignLiteral<>(targetVariable, this); | ||
25 | } | ||
26 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/UnaryTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/UnaryTerm.java new file mode 100644 index 00000000..a46ebe31 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/UnaryTerm.java | |||
@@ -0,0 +1,79 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term; | ||
7 | |||
8 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | ||
9 | import tools.refinery.store.query.substitution.Substitution; | ||
10 | import tools.refinery.store.query.valuation.Valuation; | ||
11 | |||
12 | import java.util.Objects; | ||
13 | import java.util.Set; | ||
14 | |||
15 | public abstract class UnaryTerm<R, T> extends AbstractTerm<R> { | ||
16 | private final Class<T> bodyType; | ||
17 | private final Term<T> body; | ||
18 | |||
19 | protected UnaryTerm(Class<R> type, Class<T> bodyType, Term<T> body) { | ||
20 | super(type); | ||
21 | if (!body.getType().equals(bodyType)) { | ||
22 | throw new IllegalArgumentException("Expected body %s to be of type %s, got %s instead".formatted(body, | ||
23 | bodyType.getName(), body.getType().getName())); | ||
24 | } | ||
25 | this.bodyType = bodyType; | ||
26 | this.body = body; | ||
27 | } | ||
28 | |||
29 | public Class<T> getBodyType() { | ||
30 | return bodyType; | ||
31 | } | ||
32 | |||
33 | public Term<T> getBody() { | ||
34 | return body; | ||
35 | } | ||
36 | |||
37 | @Override | ||
38 | public R evaluate(Valuation valuation) { | ||
39 | var bodyValue = body.evaluate(valuation); | ||
40 | return bodyValue == null ? null : doEvaluate(bodyValue); | ||
41 | } | ||
42 | |||
43 | protected abstract R doEvaluate(T bodyValue); | ||
44 | |||
45 | @Override | ||
46 | public boolean equalsWithSubstitution(LiteralEqualityHelper helper, AnyTerm other) { | ||
47 | if (!super.equalsWithSubstitution(helper, other)) { | ||
48 | return false; | ||
49 | } | ||
50 | var otherUnaryTerm = (UnaryTerm<?, ?>) other; | ||
51 | return bodyType.equals(otherUnaryTerm.bodyType) && body.equalsWithSubstitution(helper, otherUnaryTerm.body); | ||
52 | } | ||
53 | |||
54 | @Override | ||
55 | public Term<R> substitute(Substitution substitution) { | ||
56 | return doSubstitute(substitution, body.substitute(substitution)); | ||
57 | } | ||
58 | |||
59 | protected abstract Term<R> doSubstitute(Substitution substitution, Term<T> substitutedBody); | ||
60 | |||
61 | @Override | ||
62 | public Set<AnyDataVariable> getInputVariables() { | ||
63 | return body.getInputVariables(); | ||
64 | } | ||
65 | |||
66 | @Override | ||
67 | public boolean equals(Object o) { | ||
68 | if (this == o) return true; | ||
69 | if (o == null || getClass() != o.getClass()) return false; | ||
70 | if (!super.equals(o)) return false; | ||
71 | UnaryTerm<?, ?> unaryTerm = (UnaryTerm<?, ?>) o; | ||
72 | return Objects.equals(bodyType, unaryTerm.bodyType) && Objects.equals(body, unaryTerm.body); | ||
73 | } | ||
74 | |||
75 | @Override | ||
76 | public int hashCode() { | ||
77 | return Objects.hash(super.hashCode(), bodyType, body); | ||
78 | } | ||
79 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/Variable.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/Variable.java new file mode 100644 index 00000000..a0268c8e --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/Variable.java | |||
@@ -0,0 +1,84 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term; | ||
7 | |||
8 | import org.jetbrains.annotations.Nullable; | ||
9 | import tools.refinery.store.query.dnf.DnfUtils; | ||
10 | |||
11 | import java.util.Objects; | ||
12 | import java.util.Optional; | ||
13 | |||
14 | public abstract sealed class Variable permits AnyDataVariable, NodeVariable { | ||
15 | private final String explicitName; | ||
16 | private final String uniqueName; | ||
17 | |||
18 | protected Variable(String name) { | ||
19 | this.explicitName = name; | ||
20 | uniqueName = DnfUtils.generateUniqueName(name); | ||
21 | } | ||
22 | |||
23 | public abstract Optional<Class<?>> tryGetType(); | ||
24 | |||
25 | public String getName() { | ||
26 | return explicitName == null ? uniqueName : explicitName; | ||
27 | } | ||
28 | |||
29 | protected String getExplicitName() { | ||
30 | return explicitName; | ||
31 | } | ||
32 | |||
33 | public boolean isExplicitlyNamed() { | ||
34 | return explicitName != null; | ||
35 | } | ||
36 | |||
37 | public String getUniqueName() { | ||
38 | return uniqueName; | ||
39 | } | ||
40 | |||
41 | public abstract boolean isUnifiable(); | ||
42 | |||
43 | public abstract Variable renew(@Nullable String name); | ||
44 | |||
45 | public abstract Variable renew(); | ||
46 | |||
47 | public abstract NodeVariable asNodeVariable(); | ||
48 | |||
49 | public abstract <T> DataVariable<T> asDataVariable(Class<T> type); | ||
50 | |||
51 | @Override | ||
52 | public String toString() { | ||
53 | return getName(); | ||
54 | } | ||
55 | |||
56 | @Override | ||
57 | public boolean equals(Object o) { | ||
58 | if (this == o) return true; | ||
59 | if (o == null || getClass() != o.getClass()) return false; | ||
60 | Variable variable = (Variable) o; | ||
61 | return Objects.equals(uniqueName, variable.uniqueName); | ||
62 | } | ||
63 | |||
64 | @Override | ||
65 | public int hashCode() { | ||
66 | return Objects.hash(uniqueName); | ||
67 | } | ||
68 | |||
69 | public static NodeVariable of(@Nullable String name) { | ||
70 | return new NodeVariable(name); | ||
71 | } | ||
72 | |||
73 | public static NodeVariable of() { | ||
74 | return of((String) null); | ||
75 | } | ||
76 | |||
77 | public static <T> DataVariable<T> of(@Nullable String name, Class<T> type) { | ||
78 | return new DataVariable<>(name, type); | ||
79 | } | ||
80 | |||
81 | public static <T> DataVariable<T> of(Class<T> type) { | ||
82 | return of(null, type); | ||
83 | } | ||
84 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/bool/BoolAndTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/bool/BoolAndTerm.java new file mode 100644 index 00000000..f9e1c06f --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/bool/BoolAndTerm.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.bool; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class BoolAndTerm extends BoolBinaryTerm { | ||
12 | public BoolAndTerm(Term<Boolean> left, Term<Boolean> right) { | ||
13 | super(left, right); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | public Term<Boolean> doSubstitute(Substitution substitution, Term<Boolean> substitutedLeft, | ||
18 | Term<Boolean> substitutedRight) { | ||
19 | return new BoolAndTerm(substitutedLeft, substitutedRight); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | protected Boolean doEvaluate(Boolean leftValue, Boolean rightValue) { | ||
24 | return leftValue && rightValue; | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public String toString() { | ||
29 | return "(%s && %s)".formatted(getLeft(), getRight()); | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/bool/BoolBinaryTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/bool/BoolBinaryTerm.java new file mode 100644 index 00000000..a85aa63a --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/bool/BoolBinaryTerm.java | |||
@@ -0,0 +1,15 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.bool; | ||
7 | |||
8 | import tools.refinery.store.query.term.BinaryTerm; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public abstract class BoolBinaryTerm extends BinaryTerm<Boolean, Boolean, Boolean> { | ||
12 | protected BoolBinaryTerm(Term<Boolean> left, Term<Boolean> right) { | ||
13 | super(Boolean.class, Boolean.class, Boolean.class, left, right); | ||
14 | } | ||
15 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/bool/BoolNotTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/bool/BoolNotTerm.java new file mode 100644 index 00000000..8d3382b3 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/bool/BoolNotTerm.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.bool; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | import tools.refinery.store.query.term.UnaryTerm; | ||
11 | |||
12 | public class BoolNotTerm extends UnaryTerm<Boolean, Boolean> { | ||
13 | protected BoolNotTerm(Term<Boolean> body) { | ||
14 | super(Boolean.class, Boolean.class, body); | ||
15 | } | ||
16 | |||
17 | @Override | ||
18 | protected Term<Boolean> doSubstitute(Substitution substitution, Term<Boolean> substitutedBody) { | ||
19 | return new BoolNotTerm(substitutedBody); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | protected Boolean doEvaluate(Boolean bodyValue) { | ||
24 | return !bodyValue; | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public String toString() { | ||
29 | return "(!%s)".formatted(getBody()); | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/bool/BoolOrTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/bool/BoolOrTerm.java new file mode 100644 index 00000000..b5195d52 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/bool/BoolOrTerm.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.bool; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class BoolOrTerm extends BoolBinaryTerm { | ||
12 | public BoolOrTerm(Term<Boolean> left, Term<Boolean> right) { | ||
13 | super(left, right); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | public Term<Boolean> doSubstitute(Substitution substitution, Term<Boolean> substitutedLeft, | ||
18 | Term<Boolean> substitutedRight) { | ||
19 | return new BoolOrTerm(substitutedLeft, substitutedRight); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | protected Boolean doEvaluate(Boolean leftValue, Boolean rightValue) { | ||
24 | return leftValue || rightValue; | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public String toString() { | ||
29 | return "(%s || %s)".formatted(getLeft(), getRight()); | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/bool/BoolTerms.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/bool/BoolTerms.java new file mode 100644 index 00000000..fa54f686 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/bool/BoolTerms.java | |||
@@ -0,0 +1,35 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.bool; | ||
7 | |||
8 | import tools.refinery.store.query.term.ConstantTerm; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public final class BoolTerms { | ||
12 | private BoolTerms() { | ||
13 | throw new IllegalArgumentException("This is a static utility class and should not be instantiated directly"); | ||
14 | } | ||
15 | |||
16 | public static Term<Boolean> constant(Boolean value) { | ||
17 | return new ConstantTerm<>(Boolean.class, value); | ||
18 | } | ||
19 | |||
20 | public static Term<Boolean> not(Term<Boolean> body) { | ||
21 | return new BoolNotTerm(body); | ||
22 | } | ||
23 | |||
24 | public static Term<Boolean> and(Term<Boolean> left, Term<Boolean> right) { | ||
25 | return new BoolAndTerm(left, right); | ||
26 | } | ||
27 | |||
28 | public static Term<Boolean> or(Term<Boolean> left, Term<Boolean> right) { | ||
29 | return new BoolOrTerm(left, right); | ||
30 | } | ||
31 | |||
32 | public static Term<Boolean> xor(Term<Boolean> left, Term<Boolean> right) { | ||
33 | return new BoolXorTerm(left, right); | ||
34 | } | ||
35 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/bool/BoolXorTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/bool/BoolXorTerm.java new file mode 100644 index 00000000..7478b8a5 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/bool/BoolXorTerm.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.bool; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class BoolXorTerm extends BoolBinaryTerm { | ||
12 | public BoolXorTerm(Term<Boolean> left, Term<Boolean> right) { | ||
13 | super(left, right); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | public Term<Boolean> doSubstitute(Substitution substitution, Term<Boolean> substitutedLeft, | ||
18 | Term<Boolean> substitutedRight) { | ||
19 | return new BoolXorTerm(substitutedLeft, substitutedRight); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | protected Boolean doEvaluate(Boolean leftValue, Boolean rightValue) { | ||
24 | return leftValue ^ rightValue; | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public String toString() { | ||
29 | return "(%s ^^ %s)".formatted(getLeft(), getRight()); | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/comparable/ComparisonTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/comparable/ComparisonTerm.java new file mode 100644 index 00000000..5ca5a0a1 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/comparable/ComparisonTerm.java | |||
@@ -0,0 +1,19 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.comparable; | ||
7 | |||
8 | import tools.refinery.store.query.term.BinaryTerm; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public abstract class ComparisonTerm<T> extends BinaryTerm<Boolean, T, T> { | ||
12 | protected ComparisonTerm(Class<T> argumentType, Term<T> left, Term<T> right) { | ||
13 | super(Boolean.class, argumentType, argumentType, left, right); | ||
14 | } | ||
15 | |||
16 | public Class<T> getArgumentType() { | ||
17 | return getLeftType(); | ||
18 | } | ||
19 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/comparable/EqTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/comparable/EqTerm.java new file mode 100644 index 00000000..b8cf36f8 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/comparable/EqTerm.java | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.comparable; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class EqTerm<T> extends ComparisonTerm<T> { | ||
12 | public EqTerm(Class<T> argumentType, Term<T> left, Term<T> right) { | ||
13 | super(argumentType, left, right); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | protected Boolean doEvaluate(T leftValue, T rightValue) { | ||
18 | return leftValue.equals(rightValue); | ||
19 | } | ||
20 | |||
21 | @Override | ||
22 | public Term<Boolean> doSubstitute(Substitution substitution, Term<T> substitutedLeft, Term<T> substitutedRight) { | ||
23 | return new EqTerm<>(getArgumentType(), substitutedLeft, substitutedRight); | ||
24 | } | ||
25 | |||
26 | @Override | ||
27 | public String toString() { | ||
28 | return "(%s == %s)".formatted(getLeft(), getRight()); | ||
29 | } | ||
30 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/comparable/GreaterEqTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/comparable/GreaterEqTerm.java new file mode 100644 index 00000000..b109eb1a --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/comparable/GreaterEqTerm.java | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.comparable; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class GreaterEqTerm<T extends Comparable<T>> extends ComparisonTerm<T> { | ||
12 | public GreaterEqTerm(Class<T> argumentType, Term<T> left, Term<T> right) { | ||
13 | super(argumentType, left, right); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | protected Boolean doEvaluate(T leftValue, T rightValue) { | ||
18 | return leftValue.compareTo(rightValue) >= 0; | ||
19 | } | ||
20 | |||
21 | @Override | ||
22 | public Term<Boolean> doSubstitute(Substitution substitution, Term<T> substitutedLeft, Term<T> substitutedRight) { | ||
23 | return new GreaterEqTerm<>(getArgumentType(), substitutedLeft, substitutedRight); | ||
24 | } | ||
25 | |||
26 | @Override | ||
27 | public String toString() { | ||
28 | return "(%s >= %s)".formatted(getLeft(), getRight()); | ||
29 | } | ||
30 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/comparable/GreaterTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/comparable/GreaterTerm.java new file mode 100644 index 00000000..1b67f8b5 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/comparable/GreaterTerm.java | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.comparable; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class GreaterTerm<T extends Comparable<T>> extends ComparisonTerm<T> { | ||
12 | public GreaterTerm(Class<T> argumentType, Term<T> left, Term<T> right) { | ||
13 | super(argumentType, left, right); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | protected Boolean doEvaluate(T leftValue, T rightValue) { | ||
18 | return leftValue.compareTo(rightValue) > 0; | ||
19 | } | ||
20 | |||
21 | @Override | ||
22 | public Term<Boolean> doSubstitute(Substitution substitution, Term<T> substitutedLeft, Term<T> substitutedRight) { | ||
23 | return new GreaterTerm<>(getArgumentType(), substitutedLeft, substitutedRight); | ||
24 | } | ||
25 | |||
26 | @Override | ||
27 | public String toString() { | ||
28 | return "(%s > %s)".formatted(getLeft(), getRight()); | ||
29 | } | ||
30 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/comparable/LessEqTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/comparable/LessEqTerm.java new file mode 100644 index 00000000..1b34535f --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/comparable/LessEqTerm.java | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.comparable; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class LessEqTerm<T extends Comparable<T>> extends ComparisonTerm<T> { | ||
12 | public LessEqTerm(Class<T> argumentType, Term<T> left, Term<T> right) { | ||
13 | super(argumentType, left, right); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | protected Boolean doEvaluate(T leftValue, T rightValue) { | ||
18 | return leftValue.compareTo(rightValue) <= 0; | ||
19 | } | ||
20 | |||
21 | @Override | ||
22 | public Term<Boolean> doSubstitute(Substitution substitution, Term<T> substitutedLeft, Term<T> substitutedRight) { | ||
23 | return new LessEqTerm<>(getArgumentType(), substitutedLeft, substitutedRight); | ||
24 | } | ||
25 | |||
26 | @Override | ||
27 | public String toString() { | ||
28 | return "(%s <= %s)".formatted(getLeft(), getRight()); | ||
29 | } | ||
30 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/comparable/LessTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/comparable/LessTerm.java new file mode 100644 index 00000000..44e70902 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/comparable/LessTerm.java | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.comparable; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class LessTerm<T extends Comparable<T>> extends ComparisonTerm<T> { | ||
12 | public LessTerm(Class<T> argumentType, Term<T> left, Term<T> right) { | ||
13 | super(argumentType, left, right); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | protected Boolean doEvaluate(T leftValue, T rightValue) { | ||
18 | return leftValue.compareTo(rightValue) < 0; | ||
19 | } | ||
20 | |||
21 | @Override | ||
22 | public Term<Boolean> doSubstitute(Substitution substitution, Term<T> substitutedLeft, Term<T> substitutedRight) { | ||
23 | return new LessTerm<>(getArgumentType(), substitutedLeft, substitutedRight); | ||
24 | } | ||
25 | |||
26 | @Override | ||
27 | public String toString() { | ||
28 | return "(%s < %s)".formatted(getLeft(), getRight()); | ||
29 | } | ||
30 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/comparable/NotEqTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/comparable/NotEqTerm.java new file mode 100644 index 00000000..1f9734c4 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/comparable/NotEqTerm.java | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.comparable; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class NotEqTerm<T> extends ComparisonTerm<T> { | ||
12 | public NotEqTerm(Class<T> argumentType, Term<T> left, Term<T> right) { | ||
13 | super(argumentType, left, right); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | protected Boolean doEvaluate(T leftValue, T rightValue) { | ||
18 | return !leftValue.equals(rightValue); | ||
19 | } | ||
20 | |||
21 | @Override | ||
22 | public Term<Boolean> doSubstitute(Substitution substitution, Term<T> substitutedLeft, Term<T> substitutedRight) { | ||
23 | return new NotEqTerm<>(getArgumentType(), substitutedLeft, substitutedRight); | ||
24 | } | ||
25 | |||
26 | @Override | ||
27 | public String toString() { | ||
28 | return "(%s != %s)".formatted(getLeft(), getRight()); | ||
29 | } | ||
30 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntAddTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntAddTerm.java new file mode 100644 index 00000000..dbea3efc --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntAddTerm.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.int_; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class IntAddTerm extends IntBinaryTerm { | ||
12 | public IntAddTerm(Term<Integer> left, Term<Integer> right) { | ||
13 | super(left, right); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | public Term<Integer> doSubstitute(Substitution substitution, Term<Integer> substitutedLeft, | ||
18 | Term<Integer> substitutedRight) { | ||
19 | return new IntAddTerm(substitutedLeft, substitutedRight); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | protected Integer doEvaluate(Integer leftValue, Integer rightValue) { | ||
24 | return leftValue + rightValue; | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public String toString() { | ||
29 | return "(%s + %s)".formatted(getLeft(), getRight()); | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntBinaryTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntBinaryTerm.java new file mode 100644 index 00000000..27ced4e4 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntBinaryTerm.java | |||
@@ -0,0 +1,15 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.int_; | ||
7 | |||
8 | import tools.refinery.store.query.term.BinaryTerm; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public abstract class IntBinaryTerm extends BinaryTerm<Integer, Integer, Integer> { | ||
12 | protected IntBinaryTerm(Term<Integer> left, Term<Integer> right) { | ||
13 | super(Integer.class, Integer.class, Integer.class, left, right); | ||
14 | } | ||
15 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntDivTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntDivTerm.java new file mode 100644 index 00000000..2a35058c --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntDivTerm.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.int_; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class IntDivTerm extends IntBinaryTerm { | ||
12 | public IntDivTerm(Term<Integer> left, Term<Integer> right) { | ||
13 | super(left, right); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | public Term<Integer> doSubstitute(Substitution substitution, Term<Integer> substitutedLeft, | ||
18 | Term<Integer> substitutedRight) { | ||
19 | return new IntDivTerm(substitutedLeft, substitutedRight); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | protected Integer doEvaluate(Integer leftValue, Integer rightValue) { | ||
24 | return rightValue == 0 ? null : leftValue / rightValue; | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public String toString() { | ||
29 | return "(%s / %s)".formatted(getLeft(), getRight()); | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntMaxTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntMaxTerm.java new file mode 100644 index 00000000..f81fc509 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntMaxTerm.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.int_; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class IntMaxTerm extends IntBinaryTerm { | ||
12 | public IntMaxTerm(Term<Integer> left, Term<Integer> right) { | ||
13 | super(left, right); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | public Term<Integer> doSubstitute(Substitution substitution, Term<Integer> substitutedLeft, | ||
18 | Term<Integer> substitutedRight) { | ||
19 | return new IntMaxTerm(substitutedLeft, substitutedRight); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | protected Integer doEvaluate(Integer leftValue, Integer rightValue) { | ||
24 | return Math.max(rightValue, leftValue); | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public String toString() { | ||
29 | return "max(%s, %s)".formatted(getLeft(), getRight()); | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntMinTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntMinTerm.java new file mode 100644 index 00000000..89182e26 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntMinTerm.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.int_; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class IntMinTerm extends IntBinaryTerm { | ||
12 | public IntMinTerm(Term<Integer> left, Term<Integer> right) { | ||
13 | super(left, right); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | public Term<Integer> doSubstitute(Substitution substitution, Term<Integer> substitutedLeft, | ||
18 | Term<Integer> substitutedRight) { | ||
19 | return new IntMinTerm(substitutedLeft, substitutedRight); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | protected Integer doEvaluate(Integer leftValue, Integer rightValue) { | ||
24 | return Math.min(rightValue, leftValue); | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public String toString() { | ||
29 | return "min(%s, %s)".formatted(getLeft(), getRight()); | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntMinusTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntMinusTerm.java new file mode 100644 index 00000000..709aa5ba --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntMinusTerm.java | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.int_; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class IntMinusTerm extends IntUnaryTerm { | ||
12 | public IntMinusTerm(Term<Integer> body) { | ||
13 | super(body); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | protected Term<Integer> doSubstitute(Substitution substitution, Term<Integer> substitutedBody) { | ||
18 | return new IntMinusTerm(substitutedBody); | ||
19 | } | ||
20 | |||
21 | @Override | ||
22 | protected Integer doEvaluate(Integer bodyValue) { | ||
23 | return -bodyValue; | ||
24 | } | ||
25 | |||
26 | @Override | ||
27 | public String toString() { | ||
28 | return "(-%s)".formatted(getBody()); | ||
29 | } | ||
30 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntMulTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntMulTerm.java new file mode 100644 index 00000000..89d4c5f4 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntMulTerm.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.int_; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class IntMulTerm extends IntBinaryTerm { | ||
12 | public IntMulTerm(Term<Integer> left, Term<Integer> right) { | ||
13 | super(left, right); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | public Term<Integer> doSubstitute(Substitution substitution, Term<Integer> substitutedLeft, | ||
18 | Term<Integer> substitutedRight) { | ||
19 | return new IntMulTerm(substitutedLeft, substitutedRight); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | protected Integer doEvaluate(Integer leftValue, Integer rightValue) { | ||
24 | return leftValue * rightValue; | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public String toString() { | ||
29 | return "(%s * %s)".formatted(getLeft(), getRight()); | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntPlusTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntPlusTerm.java new file mode 100644 index 00000000..aef83bb4 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntPlusTerm.java | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.int_; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class IntPlusTerm extends IntUnaryTerm { | ||
12 | public IntPlusTerm(Term<Integer> body) { | ||
13 | super(body); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | protected Term<Integer> doSubstitute(Substitution substitution, Term<Integer> substitutedBody) { | ||
18 | return new IntPlusTerm(substitutedBody); | ||
19 | } | ||
20 | |||
21 | @Override | ||
22 | protected Integer doEvaluate(Integer bodyValue) { | ||
23 | return bodyValue; | ||
24 | } | ||
25 | |||
26 | @Override | ||
27 | public String toString() { | ||
28 | return "(+%s)".formatted(getBody()); | ||
29 | } | ||
30 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntPowTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntPowTerm.java new file mode 100644 index 00000000..d5af97a1 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntPowTerm.java | |||
@@ -0,0 +1,43 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.int_; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class IntPowTerm extends IntBinaryTerm { | ||
12 | public IntPowTerm(Term<Integer> left, Term<Integer> right) { | ||
13 | super(left, right); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | public Term<Integer> doSubstitute(Substitution substitution, Term<Integer> substitutedLeft, | ||
18 | Term<Integer> substitutedRight) { | ||
19 | return new IntPowTerm(substitutedLeft, substitutedRight); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | protected Integer doEvaluate(Integer leftValue, Integer rightValue) { | ||
24 | return rightValue < 0 ? null : power(leftValue, rightValue); | ||
25 | } | ||
26 | |||
27 | private static int power(int base, int exponent) { | ||
28 | int accum = 1; | ||
29 | while (exponent > 0) { | ||
30 | if (exponent % 2 == 1) { | ||
31 | accum = accum * base; | ||
32 | } | ||
33 | base = base * base; | ||
34 | exponent = exponent / 2; | ||
35 | } | ||
36 | return accum; | ||
37 | } | ||
38 | |||
39 | @Override | ||
40 | public String toString() { | ||
41 | return "(%s ** %s)".formatted(getLeft(), getRight()); | ||
42 | } | ||
43 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntSubTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntSubTerm.java new file mode 100644 index 00000000..2c27afb1 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntSubTerm.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.int_; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class IntSubTerm extends IntBinaryTerm { | ||
12 | public IntSubTerm(Term<Integer> left, Term<Integer> right) { | ||
13 | super(left, right); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | public Term<Integer> doSubstitute(Substitution substitution, Term<Integer> substitutedLeft, | ||
18 | Term<Integer> substitutedRight) { | ||
19 | return new IntSubTerm(substitutedLeft, substitutedRight); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | protected Integer doEvaluate(Integer leftValue, Integer rightValue) { | ||
24 | return leftValue - rightValue; | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public String toString() { | ||
29 | return "(%s - %s)".formatted(getLeft(), getRight()); | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntSumAggregator.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntSumAggregator.java new file mode 100644 index 00000000..cd718c53 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntSumAggregator.java | |||
@@ -0,0 +1,40 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.int_; | ||
7 | |||
8 | import tools.refinery.store.query.term.StatelessAggregator; | ||
9 | |||
10 | public final class IntSumAggregator implements StatelessAggregator<Integer, Integer> { | ||
11 | public static final IntSumAggregator INSTANCE = new IntSumAggregator(); | ||
12 | |||
13 | private IntSumAggregator() { | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | public Class<Integer> getResultType() { | ||
18 | return Integer.class; | ||
19 | } | ||
20 | |||
21 | @Override | ||
22 | public Class<Integer> getInputType() { | ||
23 | return Integer.class; | ||
24 | } | ||
25 | |||
26 | @Override | ||
27 | public Integer getEmptyResult() { | ||
28 | return 0; | ||
29 | } | ||
30 | |||
31 | @Override | ||
32 | public Integer add(Integer current, Integer value) { | ||
33 | return current + value; | ||
34 | } | ||
35 | |||
36 | @Override | ||
37 | public Integer remove(Integer current, Integer value) { | ||
38 | return current - value; | ||
39 | } | ||
40 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntTerms.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntTerms.java new file mode 100644 index 00000000..acb98b94 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntTerms.java | |||
@@ -0,0 +1,94 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.int_; | ||
7 | |||
8 | import tools.refinery.store.query.term.Aggregator; | ||
9 | import tools.refinery.store.query.term.ConstantTerm; | ||
10 | import tools.refinery.store.query.term.ExtremeValueAggregator; | ||
11 | import tools.refinery.store.query.term.Term; | ||
12 | import tools.refinery.store.query.term.comparable.*; | ||
13 | |||
14 | import java.util.Comparator; | ||
15 | |||
16 | public final class IntTerms { | ||
17 | public static final Aggregator<Integer, Integer> INT_SUM = IntSumAggregator.INSTANCE; | ||
18 | public static final Aggregator<Integer, Integer> INT_MIN = new ExtremeValueAggregator<>(Integer.class, | ||
19 | Integer.MAX_VALUE); | ||
20 | public static final Aggregator<Integer, Integer> INT_MAX = new ExtremeValueAggregator<>(Integer.class, | ||
21 | Integer.MIN_VALUE, Comparator.reverseOrder()); | ||
22 | |||
23 | private IntTerms() { | ||
24 | throw new IllegalArgumentException("This is a static utility class and should not be instantiated directly"); | ||
25 | } | ||
26 | |||
27 | public static Term<Integer> constant(Integer value) { | ||
28 | return new ConstantTerm<>(Integer.class, value); | ||
29 | } | ||
30 | |||
31 | public static Term<Integer> plus(Term<Integer> body) { | ||
32 | return new IntPlusTerm(body); | ||
33 | } | ||
34 | |||
35 | public static Term<Integer> minus(Term<Integer> body) { | ||
36 | return new IntMinusTerm(body); | ||
37 | } | ||
38 | |||
39 | public static Term<Integer> add(Term<Integer> left, Term<Integer> right) { | ||
40 | return new IntAddTerm(left, right); | ||
41 | } | ||
42 | |||
43 | public static Term<Integer> sub(Term<Integer> left, Term<Integer> right) { | ||
44 | return new IntSubTerm(left, right); | ||
45 | } | ||
46 | |||
47 | public static Term<Integer> mul(Term<Integer> left, Term<Integer> right) { | ||
48 | return new IntMulTerm(left, right); | ||
49 | } | ||
50 | |||
51 | public static Term<Integer> div(Term<Integer> left, Term<Integer> right) { | ||
52 | return new IntDivTerm(left, right); | ||
53 | } | ||
54 | |||
55 | public static Term<Integer> pow(Term<Integer> left, Term<Integer> right) { | ||
56 | return new IntPowTerm(left, right); | ||
57 | } | ||
58 | |||
59 | public static Term<Integer> min(Term<Integer> left, Term<Integer> right) { | ||
60 | return new IntMinTerm(left, right); | ||
61 | } | ||
62 | |||
63 | public static Term<Integer> max(Term<Integer> left, Term<Integer> right) { | ||
64 | return new IntMaxTerm(left, right); | ||
65 | } | ||
66 | |||
67 | public static Term<Boolean> eq(Term<Integer> left, Term<Integer> right) { | ||
68 | return new EqTerm<>(Integer.class, left, right); | ||
69 | } | ||
70 | |||
71 | public static Term<Boolean> notEq(Term<Integer> left, Term<Integer> right) { | ||
72 | return new NotEqTerm<>(Integer.class, left, right); | ||
73 | } | ||
74 | |||
75 | public static Term<Boolean> less(Term<Integer> left, Term<Integer> right) { | ||
76 | return new LessTerm<>(Integer.class, left, right); | ||
77 | } | ||
78 | |||
79 | public static Term<Boolean> lessEq(Term<Integer> left, Term<Integer> right) { | ||
80 | return new LessEqTerm<>(Integer.class, left, right); | ||
81 | } | ||
82 | |||
83 | public static Term<Boolean> greater(Term<Integer> left, Term<Integer> right) { | ||
84 | return new GreaterTerm<>(Integer.class, left, right); | ||
85 | } | ||
86 | |||
87 | public static Term<Boolean> greaterEq(Term<Integer> left, Term<Integer> right) { | ||
88 | return new GreaterEqTerm<>(Integer.class, left, right); | ||
89 | } | ||
90 | |||
91 | public static Term<Integer> asInt(Term<Double> body) { | ||
92 | return new RealToIntTerm(body); | ||
93 | } | ||
94 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntUnaryTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntUnaryTerm.java new file mode 100644 index 00000000..49b4c647 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/IntUnaryTerm.java | |||
@@ -0,0 +1,15 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.int_; | ||
7 | |||
8 | import tools.refinery.store.query.term.Term; | ||
9 | import tools.refinery.store.query.term.UnaryTerm; | ||
10 | |||
11 | public abstract class IntUnaryTerm extends UnaryTerm<Integer, Integer> { | ||
12 | protected IntUnaryTerm(Term<Integer> body) { | ||
13 | super(Integer.class, Integer.class, body); | ||
14 | } | ||
15 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/RealToIntTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/RealToIntTerm.java new file mode 100644 index 00000000..7d383562 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/int_/RealToIntTerm.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.int_; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | import tools.refinery.store.query.term.UnaryTerm; | ||
11 | |||
12 | public class RealToIntTerm extends UnaryTerm<Integer, Double> { | ||
13 | protected RealToIntTerm(Term<Double> body) { | ||
14 | super(Integer.class, Double.class, body); | ||
15 | } | ||
16 | |||
17 | @Override | ||
18 | protected Integer doEvaluate(Double bodyValue) { | ||
19 | return bodyValue.isNaN() ? null : bodyValue.intValue(); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | protected Term<Integer> doSubstitute(Substitution substitution, Term<Double> substitutedBody) { | ||
24 | return new RealToIntTerm(substitutedBody); | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public String toString() { | ||
29 | return "(%s as int)".formatted(getBody()); | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/IntToRealTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/IntToRealTerm.java new file mode 100644 index 00000000..2f53117a --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/IntToRealTerm.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.real; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | import tools.refinery.store.query.term.UnaryTerm; | ||
11 | |||
12 | public class IntToRealTerm extends UnaryTerm<Double, Integer> { | ||
13 | protected IntToRealTerm(Term<Integer> body) { | ||
14 | super(Double.class, Integer.class, body); | ||
15 | } | ||
16 | |||
17 | @Override | ||
18 | protected Term<Double> doSubstitute(Substitution substitution, Term<Integer> substitutedBody) { | ||
19 | return new IntToRealTerm(substitutedBody); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | protected Double doEvaluate(Integer bodyValue) { | ||
24 | return bodyValue.doubleValue(); | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public String toString() { | ||
29 | return "(%s as real)".formatted(getBody()); | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealAddTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealAddTerm.java new file mode 100644 index 00000000..33fc9e41 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealAddTerm.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.real; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class RealAddTerm extends RealBinaryTerm { | ||
12 | public RealAddTerm(Term<Double> left, Term<Double> right) { | ||
13 | super(left, right); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | public Term<Double> doSubstitute(Substitution substitution, Term<Double> substitutedLeft, | ||
18 | Term<Double> substitutedRight) { | ||
19 | return new RealAddTerm(substitutedLeft, substitutedRight); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | protected Double doEvaluate(Double leftValue, Double rightValue) { | ||
24 | return leftValue + rightValue; | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public String toString() { | ||
29 | return "(%s + %s)".formatted(getLeft(), getRight()); | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealBinaryTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealBinaryTerm.java new file mode 100644 index 00000000..000f3623 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealBinaryTerm.java | |||
@@ -0,0 +1,15 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.real; | ||
7 | |||
8 | import tools.refinery.store.query.term.BinaryTerm; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public abstract class RealBinaryTerm extends BinaryTerm<Double, Double, Double> { | ||
12 | protected RealBinaryTerm(Term<Double> left, Term<Double> right) { | ||
13 | super(Double.class, Double.class, Double.class, left, right); | ||
14 | } | ||
15 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealDivTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealDivTerm.java new file mode 100644 index 00000000..1e55bf42 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealDivTerm.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.real; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class RealDivTerm extends RealBinaryTerm { | ||
12 | public RealDivTerm(Term<Double> left, Term<Double> right) { | ||
13 | super(left, right); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | public Term<Double> doSubstitute(Substitution substitution, Term<Double> substitutedLeft, | ||
18 | Term<Double> substitutedRight) { | ||
19 | return new RealDivTerm(substitutedLeft, substitutedRight); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | protected Double doEvaluate(Double leftValue, Double rightValue) { | ||
24 | return leftValue / rightValue; | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public String toString() { | ||
29 | return "(%s / %s)".formatted(getLeft(), getRight()); | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealMaxTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealMaxTerm.java new file mode 100644 index 00000000..2a249496 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealMaxTerm.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.real; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class RealMaxTerm extends RealBinaryTerm { | ||
12 | public RealMaxTerm(Term<Double> left, Term<Double> right) { | ||
13 | super(left, right); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | public Term<Double> doSubstitute(Substitution substitution, Term<Double> substitutedLeft, | ||
18 | Term<Double> substitutedRight) { | ||
19 | return new RealMaxTerm(substitutedLeft, substitutedRight); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | protected Double doEvaluate(Double leftValue, Double rightValue) { | ||
24 | return Math.max(leftValue, rightValue); | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public String toString() { | ||
29 | return "max(%s, %s)".formatted(getLeft(), getRight()); | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealMinTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealMinTerm.java new file mode 100644 index 00000000..2eb4cc1e --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealMinTerm.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.real; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class RealMinTerm extends RealBinaryTerm { | ||
12 | public RealMinTerm(Term<Double> left, Term<Double> right) { | ||
13 | super(left, right); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | public Term<Double> doSubstitute(Substitution substitution, Term<Double> substitutedLeft, | ||
18 | Term<Double> substitutedRight) { | ||
19 | return new RealMinTerm(substitutedLeft, substitutedRight); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | protected Double doEvaluate(Double leftValue, Double rightValue) { | ||
24 | return Math.min(leftValue, rightValue); | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public String toString() { | ||
29 | return "min(%s, %s)".formatted(getLeft(), getRight()); | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealMinusTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealMinusTerm.java new file mode 100644 index 00000000..4afec7a1 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealMinusTerm.java | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.real; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class RealMinusTerm extends RealUnaryTerm { | ||
12 | public RealMinusTerm(Term<Double> body) { | ||
13 | super(body); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | protected Term<Double> doSubstitute(Substitution substitution, Term<Double> substitutedBody) { | ||
18 | return new RealMinusTerm(substitutedBody); | ||
19 | } | ||
20 | |||
21 | @Override | ||
22 | protected Double doEvaluate(Double bodyValue) { | ||
23 | return -bodyValue; | ||
24 | } | ||
25 | |||
26 | @Override | ||
27 | public String toString() { | ||
28 | return "(-%s)".formatted(getBody()); | ||
29 | } | ||
30 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealMulTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealMulTerm.java new file mode 100644 index 00000000..ec95ac6f --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealMulTerm.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.real; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class RealMulTerm extends RealBinaryTerm { | ||
12 | public RealMulTerm(Term<Double> left, Term<Double> right) { | ||
13 | super(left, right); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | public Term<Double> doSubstitute(Substitution substitution, Term<Double> substitutedLeft, | ||
18 | Term<Double> substitutedRight) { | ||
19 | return new RealMulTerm(substitutedLeft, substitutedRight); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | protected Double doEvaluate(Double leftValue, Double rightValue) { | ||
24 | return leftValue * rightValue; | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public String toString() { | ||
29 | return "(%s * %s)".formatted(getLeft(), getRight()); | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealPlusTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealPlusTerm.java new file mode 100644 index 00000000..64dd2e70 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealPlusTerm.java | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.real; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class RealPlusTerm extends RealUnaryTerm { | ||
12 | public RealPlusTerm(Term<Double> body) { | ||
13 | super(body); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | protected Term<Double> doSubstitute(Substitution substitution, Term<Double> substitutedBody) { | ||
18 | return new RealPlusTerm(substitutedBody); | ||
19 | } | ||
20 | |||
21 | @Override | ||
22 | protected Double doEvaluate(Double bodyValue) { | ||
23 | return bodyValue; | ||
24 | } | ||
25 | |||
26 | @Override | ||
27 | public String toString() { | ||
28 | return "(+%s)".formatted(getBody()); | ||
29 | } | ||
30 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealPowTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealPowTerm.java new file mode 100644 index 00000000..11c952ea --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealPowTerm.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.real; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class RealPowTerm extends RealBinaryTerm { | ||
12 | public RealPowTerm(Term<Double> left, Term<Double> right) { | ||
13 | super(left, right); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | public Term<Double> doSubstitute(Substitution substitution, Term<Double> substitutedLeft, | ||
18 | Term<Double> substitutedRight) { | ||
19 | return new RealPowTerm(substitutedLeft, substitutedRight); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | protected Double doEvaluate(Double leftValue, Double rightValue) { | ||
24 | return Math.pow(leftValue, rightValue); | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public String toString() { | ||
29 | return "(%s ** %s)".formatted(getLeft(), getRight()); | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealSubTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealSubTerm.java new file mode 100644 index 00000000..8cc701ed --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealSubTerm.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.real; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | |||
11 | public class RealSubTerm extends RealBinaryTerm { | ||
12 | public RealSubTerm(Term<Double> left, Term<Double> right) { | ||
13 | super(left, right); | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | public Term<Double> doSubstitute(Substitution substitution, Term<Double> substitutedLeft, | ||
18 | Term<Double> substitutedRight) { | ||
19 | return new RealSubTerm(substitutedLeft, substitutedRight); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | protected Double doEvaluate(Double leftValue, Double rightValue) { | ||
24 | return leftValue - rightValue; | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public String toString() { | ||
29 | return "(%s - %s)".formatted(getLeft(), getRight()); | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealSumAggregator.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealSumAggregator.java new file mode 100644 index 00000000..d21048e9 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealSumAggregator.java | |||
@@ -0,0 +1,90 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.real; | ||
7 | |||
8 | import tools.refinery.store.query.term.StatefulAggregate; | ||
9 | import tools.refinery.store.query.term.StatefulAggregator; | ||
10 | |||
11 | import java.util.Map; | ||
12 | import java.util.TreeMap; | ||
13 | |||
14 | public final class RealSumAggregator implements StatefulAggregator<Double, Double> { | ||
15 | public static final RealSumAggregator INSTANCE = new RealSumAggregator(); | ||
16 | |||
17 | private RealSumAggregator() { | ||
18 | } | ||
19 | |||
20 | @Override | ||
21 | public Class<Double> getResultType() { | ||
22 | return Double.class; | ||
23 | } | ||
24 | |||
25 | @Override | ||
26 | public Class<Double> getInputType() { | ||
27 | return Double.class; | ||
28 | } | ||
29 | |||
30 | @Override | ||
31 | public StatefulAggregate<Double, Double> createEmptyAggregate() { | ||
32 | return new Aggregate(); | ||
33 | } | ||
34 | |||
35 | @Override | ||
36 | public Double getEmptyResult() { | ||
37 | return 0d; | ||
38 | } | ||
39 | |||
40 | private static class Aggregate implements StatefulAggregate<Double, Double> { | ||
41 | private final Map<Double, Integer> values; | ||
42 | |||
43 | public Aggregate() { | ||
44 | values = new TreeMap<>(); | ||
45 | } | ||
46 | |||
47 | private Aggregate(Aggregate other) { | ||
48 | values = new TreeMap<>(other.values); | ||
49 | } | ||
50 | |||
51 | @Override | ||
52 | public void add(Double value) { | ||
53 | values.compute(value, (ignoredValue, currentCount) -> currentCount == null ? 1 : currentCount + 1); | ||
54 | } | ||
55 | |||
56 | @Override | ||
57 | public void remove(Double value) { | ||
58 | values.compute(value, (theValue, currentCount) -> { | ||
59 | if (currentCount == null || currentCount <= 0) { | ||
60 | throw new IllegalStateException("Invalid count %d for value %f".formatted(currentCount, theValue)); | ||
61 | } | ||
62 | return currentCount.equals(1) ? null : currentCount - 1; | ||
63 | }); | ||
64 | } | ||
65 | |||
66 | @Override | ||
67 | public Double getResult() { | ||
68 | return values.entrySet() | ||
69 | .stream() | ||
70 | .mapToDouble(entry -> entry.getKey() * entry.getValue()) | ||
71 | .reduce(Double::sum) | ||
72 | .orElse(0d); | ||
73 | } | ||
74 | |||
75 | @Override | ||
76 | public boolean isEmpty() { | ||
77 | return values.isEmpty(); | ||
78 | } | ||
79 | |||
80 | @Override | ||
81 | public StatefulAggregate<Double, Double> deepCopy() { | ||
82 | return new Aggregate(this); | ||
83 | } | ||
84 | |||
85 | @Override | ||
86 | public boolean contains(Double value) { | ||
87 | return values.containsKey(value); | ||
88 | } | ||
89 | } | ||
90 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealTerms.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealTerms.java new file mode 100644 index 00000000..79220358 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealTerms.java | |||
@@ -0,0 +1,94 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.real; | ||
7 | |||
8 | import tools.refinery.store.query.term.Aggregator; | ||
9 | import tools.refinery.store.query.term.ConstantTerm; | ||
10 | import tools.refinery.store.query.term.ExtremeValueAggregator; | ||
11 | import tools.refinery.store.query.term.Term; | ||
12 | import tools.refinery.store.query.term.comparable.*; | ||
13 | |||
14 | import java.util.Comparator; | ||
15 | |||
16 | public final class RealTerms { | ||
17 | public static final Aggregator<Double, Double> REAL_SUM = RealSumAggregator.INSTANCE; | ||
18 | public static final Aggregator<Double, Double> REAL_MIN = new ExtremeValueAggregator<>(Double.class, | ||
19 | Double.POSITIVE_INFINITY); | ||
20 | public static final Aggregator<Double, Double> REAL_MAX = new ExtremeValueAggregator<>(Double.class, | ||
21 | Double.NEGATIVE_INFINITY, Comparator.reverseOrder()); | ||
22 | |||
23 | private RealTerms() { | ||
24 | throw new IllegalArgumentException("This is a static utility class and should not be instantiated directly"); | ||
25 | } | ||
26 | |||
27 | public static Term<Double> constant(Double value) { | ||
28 | return new ConstantTerm<>(Double.class, value); | ||
29 | } | ||
30 | |||
31 | public static Term<Double> plus(Term<Double> body) { | ||
32 | return new RealPlusTerm(body); | ||
33 | } | ||
34 | |||
35 | public static Term<Double> minus(Term<Double> body) { | ||
36 | return new RealMinusTerm(body); | ||
37 | } | ||
38 | |||
39 | public static Term<Double> add(Term<Double> left, Term<Double> right) { | ||
40 | return new RealAddTerm(left, right); | ||
41 | } | ||
42 | |||
43 | public static Term<Double> sub(Term<Double> left, Term<Double> right) { | ||
44 | return new RealSubTerm(left, right); | ||
45 | } | ||
46 | |||
47 | public static Term<Double> mul(Term<Double> left, Term<Double> right) { | ||
48 | return new RealMulTerm(left, right); | ||
49 | } | ||
50 | |||
51 | public static Term<Double> div(Term<Double> left, Term<Double> right) { | ||
52 | return new RealDivTerm(left, right); | ||
53 | } | ||
54 | |||
55 | public static Term<Double> pow(Term<Double> left, Term<Double> right) { | ||
56 | return new RealPowTerm(left, right); | ||
57 | } | ||
58 | |||
59 | public static Term<Double> min(Term<Double> left, Term<Double> right) { | ||
60 | return new RealMinTerm(left, right); | ||
61 | } | ||
62 | |||
63 | public static Term<Double> max(Term<Double> left, Term<Double> right) { | ||
64 | return new RealMaxTerm(left, right); | ||
65 | } | ||
66 | |||
67 | public static Term<Boolean> eq(Term<Double> left, Term<Double> right) { | ||
68 | return new EqTerm<>(Double.class, left, right); | ||
69 | } | ||
70 | |||
71 | public static Term<Boolean> notEq(Term<Double> left, Term<Double> right) { | ||
72 | return new NotEqTerm<>(Double.class, left, right); | ||
73 | } | ||
74 | |||
75 | public static Term<Boolean> less(Term<Double> left, Term<Double> right) { | ||
76 | return new LessTerm<>(Double.class, left, right); | ||
77 | } | ||
78 | |||
79 | public static Term<Boolean> lessEq(Term<Double> left, Term<Double> right) { | ||
80 | return new LessEqTerm<>(Double.class, left, right); | ||
81 | } | ||
82 | |||
83 | public static Term<Boolean> greater(Term<Double> left, Term<Double> right) { | ||
84 | return new GreaterTerm<>(Double.class, left, right); | ||
85 | } | ||
86 | |||
87 | public static Term<Boolean> greaterEq(Term<Double> left, Term<Double> right) { | ||
88 | return new GreaterEqTerm<>(Double.class, left, right); | ||
89 | } | ||
90 | |||
91 | public static Term<Double> asReal(Term<Integer> body) { | ||
92 | return new IntToRealTerm(body); | ||
93 | } | ||
94 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealUnaryTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealUnaryTerm.java new file mode 100644 index 00000000..d41c4ed9 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/real/RealUnaryTerm.java | |||
@@ -0,0 +1,15 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.real; | ||
7 | |||
8 | import tools.refinery.store.query.term.Term; | ||
9 | import tools.refinery.store.query.term.UnaryTerm; | ||
10 | |||
11 | public abstract class RealUnaryTerm extends UnaryTerm<Double, Double> { | ||
12 | protected RealUnaryTerm(Term<Double> body) { | ||
13 | super(Double.class, Double.class, body); | ||
14 | } | ||
15 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalityAddTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalityAddTerm.java new file mode 100644 index 00000000..68905f51 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalityAddTerm.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.uppercardinality; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | import tools.refinery.store.representation.cardinality.UpperCardinality; | ||
11 | |||
12 | public class UpperCardinalityAddTerm extends UpperCardinalityBinaryTerm { | ||
13 | protected UpperCardinalityAddTerm(Term<UpperCardinality> left, Term<UpperCardinality> right) { | ||
14 | super(left, right); | ||
15 | } | ||
16 | |||
17 | @Override | ||
18 | protected UpperCardinality doEvaluate(UpperCardinality leftValue, UpperCardinality rightValue) { | ||
19 | return leftValue.add(rightValue); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | public Term<UpperCardinality> doSubstitute(Substitution substitution, Term<UpperCardinality> substitutedLeft, Term<UpperCardinality> substitutedRight) { | ||
24 | return new UpperCardinalityAddTerm(substitutedLeft, substitutedRight); | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public String toString() { | ||
29 | return "(%s + %s)".formatted(getLeft(), getRight()); | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalityBinaryTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalityBinaryTerm.java new file mode 100644 index 00000000..0cf8fe44 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalityBinaryTerm.java | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.uppercardinality; | ||
7 | |||
8 | import tools.refinery.store.query.term.BinaryTerm; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | import tools.refinery.store.representation.cardinality.UpperCardinality; | ||
11 | |||
12 | public abstract class UpperCardinalityBinaryTerm extends BinaryTerm<UpperCardinality, UpperCardinality, | ||
13 | UpperCardinality> { | ||
14 | protected UpperCardinalityBinaryTerm(Term<UpperCardinality> left, Term<UpperCardinality> right) { | ||
15 | super(UpperCardinality.class, UpperCardinality.class, UpperCardinality.class, left, right); | ||
16 | } | ||
17 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalityMaxTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalityMaxTerm.java new file mode 100644 index 00000000..ff75f64e --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalityMaxTerm.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.uppercardinality; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | import tools.refinery.store.representation.cardinality.UpperCardinality; | ||
11 | |||
12 | public class UpperCardinalityMaxTerm extends UpperCardinalityBinaryTerm { | ||
13 | protected UpperCardinalityMaxTerm(Term<UpperCardinality> left, Term<UpperCardinality> right) { | ||
14 | super(left, right); | ||
15 | } | ||
16 | |||
17 | @Override | ||
18 | protected UpperCardinality doEvaluate(UpperCardinality leftValue, UpperCardinality rightValue) { | ||
19 | return leftValue.max(rightValue); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | public Term<UpperCardinality> doSubstitute(Substitution substitution, Term<UpperCardinality> substitutedLeft, Term<UpperCardinality> substitutedRight) { | ||
24 | return new UpperCardinalityMaxTerm(substitutedLeft, substitutedRight); | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public String toString() { | ||
29 | return "max(%s, %s)".formatted(getLeft(), getRight()); | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalityMinTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalityMinTerm.java new file mode 100644 index 00000000..1e89e9f4 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalityMinTerm.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.uppercardinality; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | import tools.refinery.store.representation.cardinality.UpperCardinality; | ||
11 | |||
12 | public class UpperCardinalityMinTerm extends UpperCardinalityBinaryTerm { | ||
13 | protected UpperCardinalityMinTerm(Term<UpperCardinality> left, Term<UpperCardinality> right) { | ||
14 | super(left, right); | ||
15 | } | ||
16 | |||
17 | @Override | ||
18 | protected UpperCardinality doEvaluate(UpperCardinality leftValue, UpperCardinality rightValue) { | ||
19 | return leftValue.min(rightValue); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | public Term<UpperCardinality> doSubstitute(Substitution substitution, Term<UpperCardinality> substitutedLeft, Term<UpperCardinality> substitutedRight) { | ||
24 | return new UpperCardinalityMinTerm(substitutedLeft, substitutedRight); | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public String toString() { | ||
29 | return "min(%s, %s)".formatted(getLeft(), getRight()); | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalityMulTerm.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalityMulTerm.java new file mode 100644 index 00000000..3b4970f4 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalityMulTerm.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.uppercardinality; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.Term; | ||
10 | import tools.refinery.store.representation.cardinality.UpperCardinality; | ||
11 | |||
12 | public class UpperCardinalityMulTerm extends UpperCardinalityBinaryTerm { | ||
13 | protected UpperCardinalityMulTerm(Term<UpperCardinality> left, Term<UpperCardinality> right) { | ||
14 | super(left, right); | ||
15 | } | ||
16 | |||
17 | @Override | ||
18 | protected UpperCardinality doEvaluate(UpperCardinality leftValue, UpperCardinality rightValue) { | ||
19 | return leftValue.multiply(rightValue); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | public Term<UpperCardinality> doSubstitute(Substitution substitution, Term<UpperCardinality> substitutedLeft, Term<UpperCardinality> substitutedRight) { | ||
24 | return new UpperCardinalityMulTerm(substitutedLeft, substitutedRight); | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public String toString() { | ||
29 | return "(%s * %s)".formatted(getLeft(), getRight()); | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalitySumAggregator.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalitySumAggregator.java new file mode 100644 index 00000000..5bbd3081 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalitySumAggregator.java | |||
@@ -0,0 +1,86 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.uppercardinality; | ||
7 | |||
8 | import tools.refinery.store.query.term.StatefulAggregate; | ||
9 | import tools.refinery.store.query.term.StatefulAggregator; | ||
10 | import tools.refinery.store.representation.cardinality.FiniteUpperCardinality; | ||
11 | import tools.refinery.store.representation.cardinality.UnboundedUpperCardinality; | ||
12 | import tools.refinery.store.representation.cardinality.UpperCardinalities; | ||
13 | import tools.refinery.store.representation.cardinality.UpperCardinality; | ||
14 | |||
15 | public class UpperCardinalitySumAggregator implements StatefulAggregator<UpperCardinality, UpperCardinality> { | ||
16 | public static final UpperCardinalitySumAggregator INSTANCE = new UpperCardinalitySumAggregator(); | ||
17 | |||
18 | private UpperCardinalitySumAggregator() { | ||
19 | } | ||
20 | |||
21 | @Override | ||
22 | public Class<UpperCardinality> getResultType() { | ||
23 | return UpperCardinality.class; | ||
24 | } | ||
25 | |||
26 | @Override | ||
27 | public Class<UpperCardinality> getInputType() { | ||
28 | return UpperCardinality.class; | ||
29 | } | ||
30 | |||
31 | @Override | ||
32 | public StatefulAggregate<UpperCardinality, UpperCardinality> createEmptyAggregate() { | ||
33 | return new Aggregate(); | ||
34 | } | ||
35 | |||
36 | private static class Aggregate implements StatefulAggregate<UpperCardinality, UpperCardinality> { | ||
37 | private int sumFiniteUpperBounds; | ||
38 | private int countUnbounded; | ||
39 | |||
40 | public Aggregate() { | ||
41 | this(0, 0); | ||
42 | } | ||
43 | |||
44 | private Aggregate(int sumFiniteUpperBounds, int countUnbounded) { | ||
45 | this.sumFiniteUpperBounds = sumFiniteUpperBounds; | ||
46 | this.countUnbounded = countUnbounded; | ||
47 | } | ||
48 | |||
49 | @Override | ||
50 | public void add(UpperCardinality value) { | ||
51 | if (value instanceof FiniteUpperCardinality finiteUpperCardinality) { | ||
52 | sumFiniteUpperBounds += finiteUpperCardinality.finiteUpperBound(); | ||
53 | } else if (value instanceof UnboundedUpperCardinality) { | ||
54 | countUnbounded += 1; | ||
55 | } else { | ||
56 | throw new IllegalArgumentException("Unknown UpperCardinality: " + value); | ||
57 | } | ||
58 | } | ||
59 | |||
60 | @Override | ||
61 | public void remove(UpperCardinality value) { | ||
62 | if (value instanceof FiniteUpperCardinality finiteUpperCardinality) { | ||
63 | sumFiniteUpperBounds -= finiteUpperCardinality.finiteUpperBound(); | ||
64 | } else if (value instanceof UnboundedUpperCardinality) { | ||
65 | countUnbounded -= 1; | ||
66 | } else { | ||
67 | throw new IllegalArgumentException("Unknown UpperCardinality: " + value); | ||
68 | } | ||
69 | } | ||
70 | |||
71 | @Override | ||
72 | public UpperCardinality getResult() { | ||
73 | return countUnbounded > 0 ? UpperCardinalities.UNBOUNDED : UpperCardinalities.valueOf(sumFiniteUpperBounds); | ||
74 | } | ||
75 | |||
76 | @Override | ||
77 | public boolean isEmpty() { | ||
78 | return sumFiniteUpperBounds == 0 && countUnbounded == 0; | ||
79 | } | ||
80 | |||
81 | @Override | ||
82 | public StatefulAggregate<UpperCardinality, UpperCardinality> deepCopy() { | ||
83 | return new Aggregate(sumFiniteUpperBounds, countUnbounded); | ||
84 | } | ||
85 | } | ||
86 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalityTerms.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalityTerms.java new file mode 100644 index 00000000..13914f2d --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalityTerms.java | |||
@@ -0,0 +1,73 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.uppercardinality; | ||
7 | |||
8 | import tools.refinery.store.query.term.Aggregator; | ||
9 | import tools.refinery.store.query.term.ConstantTerm; | ||
10 | import tools.refinery.store.query.term.ExtremeValueAggregator; | ||
11 | import tools.refinery.store.query.term.Term; | ||
12 | import tools.refinery.store.query.term.comparable.*; | ||
13 | import tools.refinery.store.representation.cardinality.UpperCardinalities; | ||
14 | import tools.refinery.store.representation.cardinality.UpperCardinality; | ||
15 | |||
16 | import java.util.Comparator; | ||
17 | |||
18 | public final class UpperCardinalityTerms { | ||
19 | public static final Aggregator<UpperCardinality, UpperCardinality> UPPER_CARDINALITY_SUM = | ||
20 | UpperCardinalitySumAggregator.INSTANCE; | ||
21 | public static final Aggregator<UpperCardinality, UpperCardinality> UPPER_CARDINALITY_MIN = | ||
22 | new ExtremeValueAggregator<>(UpperCardinality.class, UpperCardinalities.UNBOUNDED); | ||
23 | public static final Aggregator<UpperCardinality, UpperCardinality> UPPER_CARDINALITY_MAX = | ||
24 | new ExtremeValueAggregator<>(UpperCardinality.class, UpperCardinalities.ZERO, Comparator.reverseOrder()); | ||
25 | |||
26 | private UpperCardinalityTerms() { | ||
27 | throw new IllegalStateException("This is a static utility class and should not be instantiated directly"); | ||
28 | } | ||
29 | |||
30 | public static Term<UpperCardinality> constant(UpperCardinality value) { | ||
31 | return new ConstantTerm<>(UpperCardinality.class, value); | ||
32 | } | ||
33 | |||
34 | public static Term<UpperCardinality> add(Term<UpperCardinality> left, Term<UpperCardinality> right) { | ||
35 | return new UpperCardinalityAddTerm(left, right); | ||
36 | } | ||
37 | |||
38 | public static Term<UpperCardinality> mul(Term<UpperCardinality> left, Term<UpperCardinality> right) { | ||
39 | return new UpperCardinalityMulTerm(left, right); | ||
40 | } | ||
41 | |||
42 | public static Term<UpperCardinality> min(Term<UpperCardinality> left, Term<UpperCardinality> right) { | ||
43 | return new UpperCardinalityMinTerm(left, right); | ||
44 | } | ||
45 | |||
46 | public static Term<UpperCardinality> max(Term<UpperCardinality> left, Term<UpperCardinality> right) { | ||
47 | return new UpperCardinalityMaxTerm(left, right); | ||
48 | } | ||
49 | |||
50 | public static Term<Boolean> eq(Term<UpperCardinality> left, Term<UpperCardinality> right) { | ||
51 | return new EqTerm<>(UpperCardinality.class, left, right); | ||
52 | } | ||
53 | |||
54 | public static Term<Boolean> notEq(Term<UpperCardinality> left, Term<UpperCardinality> right) { | ||
55 | return new NotEqTerm<>(UpperCardinality.class, left, right); | ||
56 | } | ||
57 | |||
58 | public static Term<Boolean> less(Term<UpperCardinality> left, Term<UpperCardinality> right) { | ||
59 | return new LessTerm<>(UpperCardinality.class, left, right); | ||
60 | } | ||
61 | |||
62 | public static Term<Boolean> lessEq(Term<UpperCardinality> left, Term<UpperCardinality> right) { | ||
63 | return new LessEqTerm<>(UpperCardinality.class, left, right); | ||
64 | } | ||
65 | |||
66 | public static Term<Boolean> greater(Term<UpperCardinality> left, Term<UpperCardinality> right) { | ||
67 | return new GreaterTerm<>(UpperCardinality.class, left, right); | ||
68 | } | ||
69 | |||
70 | public static Term<Boolean> greaterEq(Term<UpperCardinality> left, Term<UpperCardinality> right) { | ||
71 | return new GreaterEqTerm<>(UpperCardinality.class, left, right); | ||
72 | } | ||
73 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/utils/OrderStatisticTree.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/utils/OrderStatisticTree.java new file mode 100644 index 00000000..b568b99d --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/utils/OrderStatisticTree.java | |||
@@ -0,0 +1,754 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2021 Rodion Efremov | ||
3 | * Copyright (c) 2023 The Refinery Authors <https://refinery.tools/> | ||
4 | * | ||
5 | * SPDX-License-Identifier: MIT OR EPL-2.0 | ||
6 | */ | ||
7 | package tools.refinery.store.query.utils; | ||
8 | |||
9 | import java.util.*; | ||
10 | |||
11 | /** | ||
12 | * This class implements an order statistic tree which is based on AVL-trees. | ||
13 | * <p> | ||
14 | * This class was copied into <i>Refinery</i> from | ||
15 | * <a href="https://github.com/coderodde/OrderStatisticTree/tree/546c343b9f5d868e394a079ff32691c9dbfd83e3">https://github.com/coderodde/OrderStatisticTree</a> | ||
16 | * and is available under the | ||
17 | * <a href="https://github.com/coderodde/OrderStatisticTree/blob/master/LICENSE">MIT License</a>. | ||
18 | * We also incorporated changes by <a href="https://github.com/coderodde/OrderStatisticTree/issues/3">Eugene Schava</a> | ||
19 | * and cleaned up some linter warnings. | ||
20 | * | ||
21 | * @param <T> the actual element type. | ||
22 | * @author Rodion "rodde" Efremov | ||
23 | * @version based on 1.6 (Feb 11, 2016) | ||
24 | */ | ||
25 | public class OrderStatisticTree<T extends Comparable<? super T>> implements Set<T> { | ||
26 | |||
27 | @Override | ||
28 | public Iterator<T> iterator() { | ||
29 | return new TreeIterator(); | ||
30 | } | ||
31 | |||
32 | private final class TreeIterator implements Iterator<T> { | ||
33 | |||
34 | private Node<T> previousNode; | ||
35 | private Node<T> nextNode; | ||
36 | private int expectedModCount = modCount; | ||
37 | |||
38 | TreeIterator() { | ||
39 | if (root == null) { | ||
40 | nextNode = null; | ||
41 | } else { | ||
42 | nextNode = minimumNode(root); | ||
43 | } | ||
44 | } | ||
45 | |||
46 | @Override | ||
47 | public boolean hasNext() { | ||
48 | return nextNode != null; | ||
49 | } | ||
50 | |||
51 | @Override | ||
52 | public T next() { | ||
53 | if (nextNode == null) { | ||
54 | throw new NoSuchElementException("Iteration exceeded."); | ||
55 | } | ||
56 | |||
57 | checkConcurrentModification(); | ||
58 | T datum = nextNode.key; | ||
59 | previousNode = nextNode; | ||
60 | nextNode = successorOf(nextNode); | ||
61 | return datum; | ||
62 | } | ||
63 | |||
64 | @Override | ||
65 | public void remove() { | ||
66 | if (previousNode == null) { | ||
67 | throw new IllegalStateException( | ||
68 | nextNode == null ? | ||
69 | "Not a single call to next(); nothing to remove." : | ||
70 | "Removing the same element twice." | ||
71 | ); | ||
72 | } | ||
73 | |||
74 | checkConcurrentModification(); | ||
75 | |||
76 | Node<T> x = deleteNode(previousNode); | ||
77 | fixAfterModification(x, false); | ||
78 | |||
79 | if (x == nextNode) { | ||
80 | nextNode = previousNode; | ||
81 | } | ||
82 | |||
83 | expectedModCount = ++modCount; | ||
84 | size--; | ||
85 | previousNode = null; | ||
86 | } | ||
87 | |||
88 | private void checkConcurrentModification() { | ||
89 | if (expectedModCount != modCount) { | ||
90 | throw new ConcurrentModificationException( | ||
91 | "The set was modified while iterating."); | ||
92 | } | ||
93 | } | ||
94 | |||
95 | private Node<T> successorOf(Node<T> node) { | ||
96 | if (node.right != null) { | ||
97 | node = node.right; | ||
98 | |||
99 | while (node.left != null) { | ||
100 | node = node.left; | ||
101 | } | ||
102 | |||
103 | return node; | ||
104 | } | ||
105 | |||
106 | Node<T> parent = node.parent; | ||
107 | |||
108 | while (parent != null && parent.right == node) { | ||
109 | node = parent; | ||
110 | parent = parent.parent; | ||
111 | } | ||
112 | |||
113 | return parent; | ||
114 | } | ||
115 | } | ||
116 | |||
117 | @Override | ||
118 | public Object[] toArray() { | ||
119 | Object[] array = new Object[size]; | ||
120 | Iterator<T> iterator = iterator(); | ||
121 | int index = 0; | ||
122 | |||
123 | while (iterator.hasNext()) { | ||
124 | array[index++] = iterator.next(); | ||
125 | } | ||
126 | |||
127 | return array; | ||
128 | } | ||
129 | |||
130 | @Override | ||
131 | public <U> U[] toArray(U[] a) { | ||
132 | Iterator<T> iterator = iterator(); | ||
133 | |||
134 | if (size > a.length) { | ||
135 | a = Arrays.copyOf(a, size); | ||
136 | } | ||
137 | |||
138 | int index = 0; | ||
139 | |||
140 | for (; index < size; ++index) { | ||
141 | @SuppressWarnings("unchecked") | ||
142 | var convertedValue = (U) iterator.next(); | ||
143 | a[index] = convertedValue; | ||
144 | } | ||
145 | |||
146 | if (index < a.length) { | ||
147 | a[index] = null; | ||
148 | } | ||
149 | |||
150 | return a; | ||
151 | } | ||
152 | |||
153 | @Override | ||
154 | public boolean containsAll(Collection<?> c) { | ||
155 | for (Object element : c) { | ||
156 | if (!contains(element)) { | ||
157 | return false; | ||
158 | } | ||
159 | } | ||
160 | |||
161 | return true; | ||
162 | } | ||
163 | |||
164 | @Override | ||
165 | public boolean addAll(Collection<? extends T> c) { | ||
166 | boolean modified = false; | ||
167 | |||
168 | for (T element : c) { | ||
169 | if (add(element)) { | ||
170 | modified = true; | ||
171 | } | ||
172 | } | ||
173 | |||
174 | return modified; | ||
175 | } | ||
176 | |||
177 | @Override | ||
178 | public boolean retainAll(Collection<?> c) { | ||
179 | if (!c.getClass().equals(HashSet.class)) { | ||
180 | c = new HashSet<>(c); | ||
181 | } | ||
182 | |||
183 | Iterator<T> iterator = iterator(); | ||
184 | boolean modified = false; | ||
185 | |||
186 | while (iterator.hasNext()) { | ||
187 | T element = iterator.next(); | ||
188 | |||
189 | if (!c.contains(element)) { | ||
190 | iterator.remove(); | ||
191 | modified = true; | ||
192 | } | ||
193 | } | ||
194 | |||
195 | return modified; | ||
196 | } | ||
197 | |||
198 | @Override | ||
199 | public boolean removeAll(Collection<?> c) { | ||
200 | boolean modified = false; | ||
201 | |||
202 | for (Object element : c) { | ||
203 | if (remove(element)) { | ||
204 | modified = true; | ||
205 | } | ||
206 | } | ||
207 | |||
208 | return modified; | ||
209 | } | ||
210 | |||
211 | private static final class Node<T> { | ||
212 | T key; | ||
213 | |||
214 | Node<T> parent; | ||
215 | Node<T> left; | ||
216 | Node<T> right; | ||
217 | |||
218 | int height; | ||
219 | int count; | ||
220 | |||
221 | Node(T key) { | ||
222 | this.key = key; | ||
223 | } | ||
224 | } | ||
225 | |||
226 | private Node<T> root; | ||
227 | private int size; | ||
228 | private int modCount; | ||
229 | |||
230 | @Override | ||
231 | public boolean add(T element) { | ||
232 | Objects.requireNonNull(element, "The input element is null."); | ||
233 | |||
234 | if (root == null) { | ||
235 | root = new Node<>(element); | ||
236 | size = 1; | ||
237 | modCount++; | ||
238 | return true; | ||
239 | } | ||
240 | |||
241 | Node<T> parent = null; | ||
242 | Node<T> node = root; | ||
243 | int cmp; | ||
244 | |||
245 | while (node != null) { | ||
246 | cmp = element.compareTo(node.key); | ||
247 | |||
248 | if (cmp == 0) { | ||
249 | // The element is already in this tree. | ||
250 | return false; | ||
251 | } | ||
252 | |||
253 | parent = node; | ||
254 | |||
255 | if (cmp < 0) { | ||
256 | node = node.left; | ||
257 | } else { | ||
258 | node = node.right; | ||
259 | } | ||
260 | } | ||
261 | |||
262 | Node<T> newnode = new Node<>(element); | ||
263 | |||
264 | if (element.compareTo(parent.key) < 0) { | ||
265 | parent.left = newnode; | ||
266 | } else { | ||
267 | parent.right = newnode; | ||
268 | } | ||
269 | |||
270 | newnode.parent = parent; | ||
271 | size++; | ||
272 | modCount++; | ||
273 | Node<T> hi = parent; | ||
274 | Node<T> lo = newnode; | ||
275 | |||
276 | while (hi != null) { | ||
277 | if (hi.left == lo) { | ||
278 | hi.count++; | ||
279 | } | ||
280 | |||
281 | lo = hi; | ||
282 | hi = hi.parent; | ||
283 | } | ||
284 | |||
285 | fixAfterModification(newnode, true); | ||
286 | return true; | ||
287 | } | ||
288 | |||
289 | @Override | ||
290 | public boolean contains(Object o) { | ||
291 | @SuppressWarnings("unchecked") | ||
292 | T element = (T) o; | ||
293 | Node<T> x = root; | ||
294 | int cmp; | ||
295 | |||
296 | while (x != null && (cmp = element.compareTo(x.key)) != 0) { | ||
297 | if (cmp < 0) { | ||
298 | x = x.left; | ||
299 | } else { | ||
300 | x = x.right; | ||
301 | } | ||
302 | } | ||
303 | |||
304 | return x != null; | ||
305 | } | ||
306 | |||
307 | @Override | ||
308 | public boolean remove(Object o) { | ||
309 | @SuppressWarnings("unchecked") | ||
310 | T element = (T) o; | ||
311 | Node<T> x = root; | ||
312 | int cmp; | ||
313 | |||
314 | while (x != null && (cmp = element.compareTo(x.key)) != 0) { | ||
315 | if (cmp < 0) { | ||
316 | x = x.left; | ||
317 | } else { | ||
318 | x = x.right; | ||
319 | } | ||
320 | } | ||
321 | |||
322 | if (x == null) { | ||
323 | return false; | ||
324 | } | ||
325 | |||
326 | x = deleteNode(x); | ||
327 | fixAfterModification(x, false); | ||
328 | size--; | ||
329 | modCount++; | ||
330 | return true; | ||
331 | } | ||
332 | |||
333 | public T get(int index) { | ||
334 | checkIndex(index); | ||
335 | Node<T> node = root; | ||
336 | |||
337 | while (true) { | ||
338 | if (index > node.count) { | ||
339 | index -= node.count + 1; | ||
340 | node = node.right; | ||
341 | } else if (index < node.count) { | ||
342 | node = node.left; | ||
343 | } else { | ||
344 | return node.key; | ||
345 | } | ||
346 | } | ||
347 | } | ||
348 | |||
349 | public int indexOf(T element) { | ||
350 | Node<T> node = root; | ||
351 | |||
352 | if (root == null) { | ||
353 | return -1; | ||
354 | } | ||
355 | |||
356 | int rank = root.count; | ||
357 | int cmp; | ||
358 | |||
359 | while (true) { | ||
360 | if ((cmp = element.compareTo(node.key)) < 0) { | ||
361 | if (node.left == null) { | ||
362 | return -1; | ||
363 | } | ||
364 | |||
365 | rank -= (node.count - node.left.count); | ||
366 | node = node.left; | ||
367 | } else if (cmp > 0) { | ||
368 | if (node.right == null) { | ||
369 | return -1; | ||
370 | } | ||
371 | |||
372 | rank += 1 + node.right.count; | ||
373 | node = node.right; | ||
374 | } else { | ||
375 | return rank; | ||
376 | } | ||
377 | } | ||
378 | } | ||
379 | |||
380 | @Override | ||
381 | public int size() { | ||
382 | return size; | ||
383 | } | ||
384 | |||
385 | @Override | ||
386 | public boolean isEmpty() { | ||
387 | return size == 0; | ||
388 | } | ||
389 | |||
390 | @Override | ||
391 | public void clear() { | ||
392 | modCount += size; | ||
393 | root = null; | ||
394 | size = 0; | ||
395 | } | ||
396 | |||
397 | |||
398 | private void checkIndex(int index) { | ||
399 | if (index < 0) { | ||
400 | throw new IndexOutOfBoundsException( | ||
401 | "The input index is negative: " + index); | ||
402 | } | ||
403 | |||
404 | if (index >= size) { | ||
405 | throw new IndexOutOfBoundsException( | ||
406 | "The input index is too large: " + index + | ||
407 | ", the size of this tree is " + size); | ||
408 | } | ||
409 | } | ||
410 | |||
411 | @SuppressWarnings("squid:S3776") | ||
412 | private Node<T> deleteNode(Node<T> node) { | ||
413 | if (node.left == null && node.right == null) { | ||
414 | // 'node' has no children. | ||
415 | Node<T> parent = node.parent; | ||
416 | |||
417 | if (parent == null) { | ||
418 | // 'node' is the root node of this tree. | ||
419 | root = null; | ||
420 | ++modCount; | ||
421 | return node; | ||
422 | } | ||
423 | |||
424 | Node<T> lo = node; | ||
425 | Node<T> hi = parent; | ||
426 | |||
427 | while (hi != null) { | ||
428 | if (hi.left == lo) { | ||
429 | hi.count--; | ||
430 | } | ||
431 | |||
432 | lo = hi; | ||
433 | hi = hi.parent; | ||
434 | } | ||
435 | |||
436 | if (node == parent.left) { | ||
437 | parent.left = null; | ||
438 | } else { | ||
439 | parent.right = null; | ||
440 | } | ||
441 | |||
442 | return node; | ||
443 | } | ||
444 | |||
445 | if (node.left != null && node.right != null) { | ||
446 | // 'node' has both children. | ||
447 | Node<T> successor = minimumNode(node.right); | ||
448 | node.key = successor.key; | ||
449 | Node<T> child = successor.right; | ||
450 | Node<T> parent = successor.parent; | ||
451 | |||
452 | if (parent.left == successor) { | ||
453 | parent.left = child; | ||
454 | } else { | ||
455 | parent.right = child; | ||
456 | } | ||
457 | |||
458 | if (child != null) { | ||
459 | child.parent = parent; | ||
460 | } | ||
461 | |||
462 | Node<T> lo = child; | ||
463 | Node<T> hi = parent; | ||
464 | |||
465 | while (hi != null) { | ||
466 | if (hi.left == lo) { | ||
467 | hi.count--; | ||
468 | } | ||
469 | |||
470 | lo = hi; | ||
471 | hi = hi.parent; | ||
472 | } | ||
473 | |||
474 | return successor; | ||
475 | } | ||
476 | |||
477 | Node<T> child; | ||
478 | |||
479 | // 'node' has only one child. | ||
480 | if (node.left != null) { | ||
481 | child = node.left; | ||
482 | } else { | ||
483 | child = node.right; | ||
484 | } | ||
485 | |||
486 | Node<T> parent = node.parent; | ||
487 | child.parent = parent; | ||
488 | |||
489 | if (parent == null) { | ||
490 | root = child; | ||
491 | return node; | ||
492 | } | ||
493 | |||
494 | if (node == parent.left) { | ||
495 | parent.left = child; | ||
496 | } else { | ||
497 | parent.right = child; | ||
498 | } | ||
499 | |||
500 | Node<T> hi = parent; | ||
501 | Node<T> lo = child; | ||
502 | |||
503 | while (hi != null) { | ||
504 | if (hi.left == lo) { | ||
505 | hi.count--; | ||
506 | } | ||
507 | |||
508 | lo = hi; | ||
509 | hi = hi.parent; | ||
510 | } | ||
511 | |||
512 | return node; | ||
513 | |||
514 | } | ||
515 | |||
516 | private Node<T> minimumNode(Node<T> node) { | ||
517 | while (node.left != null) { | ||
518 | node = node.left; | ||
519 | } | ||
520 | |||
521 | return node; | ||
522 | } | ||
523 | |||
524 | private int height(Node<T> node) { | ||
525 | return node == null ? -1 : node.height; | ||
526 | } | ||
527 | |||
528 | private Node<T> leftRotate(Node<T> node1) { | ||
529 | Node<T> node2 = node1.right; | ||
530 | node2.parent = node1.parent; | ||
531 | node1.parent = node2; | ||
532 | node1.right = node2.left; | ||
533 | node2.left = node1; | ||
534 | |||
535 | if (node1.right != null) { | ||
536 | node1.right.parent = node1; | ||
537 | } | ||
538 | |||
539 | node1.height = Math.max(height(node1.left), height(node1.right)) + 1; | ||
540 | node2.height = Math.max(height(node2.left), height(node2.right)) + 1; | ||
541 | node2.count += node1.count + 1; | ||
542 | return node2; | ||
543 | } | ||
544 | |||
545 | private Node<T> rightRotate(Node<T> node1) { | ||
546 | Node<T> node2 = node1.left; | ||
547 | node2.parent = node1.parent; | ||
548 | node1.parent = node2; | ||
549 | node1.left = node2.right; | ||
550 | node2.right = node1; | ||
551 | |||
552 | if (node1.left != null) { | ||
553 | node1.left.parent = node1; | ||
554 | } | ||
555 | |||
556 | node1.height = Math.max(height(node1.left), height(node1.right)) + 1; | ||
557 | node2.height = Math.max(height(node2.left), height(node2.right)) + 1; | ||
558 | node1.count -= node2.count + 1; | ||
559 | return node2; | ||
560 | } | ||
561 | |||
562 | private Node<T> rightLeftRotate(Node<T> node1) { | ||
563 | Node<T> node2 = node1.right; | ||
564 | node1.right = rightRotate(node2); | ||
565 | return leftRotate(node1); | ||
566 | } | ||
567 | |||
568 | private Node<T> leftRightRotate(Node<T> node1) { | ||
569 | Node<T> node2 = node1.left; | ||
570 | node1.left = leftRotate(node2); | ||
571 | return rightRotate(node1); | ||
572 | } | ||
573 | |||
574 | // Fixing an insertion: use insertionMode = true. | ||
575 | // Fixing a deletion: use insertionMode = false. | ||
576 | @SuppressWarnings("squid:S3776") | ||
577 | private void fixAfterModification(Node<T> node, boolean insertionMode) { | ||
578 | Node<T> parent = node.parent; | ||
579 | Node<T> grandParent; | ||
580 | Node<T> subTree; | ||
581 | |||
582 | while (parent != null) { | ||
583 | if (height(parent.left) == height(parent.right) + 2) { | ||
584 | grandParent = parent.parent; | ||
585 | |||
586 | if (height(parent.left.left) >= height(parent.left.right)) { | ||
587 | subTree = rightRotate(parent); | ||
588 | } else { | ||
589 | subTree = leftRightRotate(parent); | ||
590 | } | ||
591 | |||
592 | if (grandParent == null) { | ||
593 | root = subTree; | ||
594 | } else if (grandParent.left == parent) { | ||
595 | grandParent.left = subTree; | ||
596 | } else { | ||
597 | grandParent.right = subTree; | ||
598 | } | ||
599 | |||
600 | if (grandParent != null) { | ||
601 | grandParent.height = Math.max( | ||
602 | height(grandParent.left), | ||
603 | height(grandParent.right)) + 1; | ||
604 | } | ||
605 | |||
606 | if (insertionMode) { | ||
607 | // Whenever fixing after insertion, at most one rotation is | ||
608 | // required in order to maintain the balance. | ||
609 | return; | ||
610 | } | ||
611 | } else if (height(parent.right) == height(parent.left) + 2) { | ||
612 | grandParent = parent.parent; | ||
613 | |||
614 | if (height(parent.right.right) >= height(parent.right.left)) { | ||
615 | subTree = leftRotate(parent); | ||
616 | } else { | ||
617 | subTree = rightLeftRotate(parent); | ||
618 | } | ||
619 | |||
620 | if (grandParent == null) { | ||
621 | root = subTree; | ||
622 | } else if (grandParent.left == parent) { | ||
623 | grandParent.left = subTree; | ||
624 | } else { | ||
625 | grandParent.right = subTree; | ||
626 | } | ||
627 | |||
628 | if (grandParent != null) { | ||
629 | grandParent.height = | ||
630 | Math.max(height(grandParent.left), | ||
631 | height(grandParent.right)) + 1; | ||
632 | } | ||
633 | |||
634 | if (insertionMode) { | ||
635 | return; | ||
636 | } | ||
637 | } | ||
638 | |||
639 | parent.height = Math.max(height(parent.left), | ||
640 | height(parent.right)) + 1; | ||
641 | parent = parent.parent; | ||
642 | } | ||
643 | } | ||
644 | |||
645 | boolean isHealthy() { | ||
646 | if (root == null) { | ||
647 | return true; | ||
648 | } | ||
649 | |||
650 | return !containsCycles() | ||
651 | && heightsAreCorrect() | ||
652 | && isBalanced() | ||
653 | && isWellIndexed(); | ||
654 | } | ||
655 | |||
656 | private boolean containsCycles() { | ||
657 | Set<Node<T>> visitedNodes = new HashSet<>(); | ||
658 | return containsCycles(root, visitedNodes); | ||
659 | } | ||
660 | |||
661 | private boolean containsCycles(Node<T> current, Set<Node<T>> visitedNodes) { | ||
662 | if (current == null) { | ||
663 | return false; | ||
664 | } | ||
665 | |||
666 | if (visitedNodes.contains(current)) { | ||
667 | return true; | ||
668 | } | ||
669 | |||
670 | visitedNodes.add(current); | ||
671 | |||
672 | return containsCycles(current.left, visitedNodes) | ||
673 | || containsCycles(current.right, visitedNodes); | ||
674 | } | ||
675 | |||
676 | private boolean heightsAreCorrect() { | ||
677 | return getHeight(root) == root.height; | ||
678 | } | ||
679 | |||
680 | private int getHeight(Node<T> node) { | ||
681 | if (node == null) { | ||
682 | return -1; | ||
683 | } | ||
684 | |||
685 | int leftTreeHeight = getHeight(node.left); | ||
686 | |||
687 | if (leftTreeHeight == Integer.MIN_VALUE) { | ||
688 | return Integer.MIN_VALUE; | ||
689 | } | ||
690 | |||
691 | int rightTreeHeight = getHeight(node.right); | ||
692 | |||
693 | if (rightTreeHeight == Integer.MIN_VALUE) { | ||
694 | return Integer.MIN_VALUE; | ||
695 | } | ||
696 | |||
697 | if (node.height == Math.max(leftTreeHeight, rightTreeHeight) + 1) { | ||
698 | return node.height; | ||
699 | } | ||
700 | |||
701 | return Integer.MIN_VALUE; | ||
702 | } | ||
703 | |||
704 | private boolean isBalanced() { | ||
705 | return isBalanced(root); | ||
706 | } | ||
707 | |||
708 | private boolean isBalanced(Node<T> node) { | ||
709 | if (node == null) { | ||
710 | return true; | ||
711 | } | ||
712 | |||
713 | if (!isBalanced(node.left)) { | ||
714 | return false; | ||
715 | } | ||
716 | |||
717 | if (!isBalanced(node.right)) { | ||
718 | return false; | ||
719 | } | ||
720 | |||
721 | int leftHeight = height(node.left); | ||
722 | int rightHeight = height(node.right); | ||
723 | |||
724 | return Math.abs(leftHeight - rightHeight) < 2; | ||
725 | } | ||
726 | |||
727 | private boolean isWellIndexed() { | ||
728 | return size == count(root); | ||
729 | } | ||
730 | |||
731 | private int count(Node<T> node) { | ||
732 | if (node == null) { | ||
733 | return 0; | ||
734 | } | ||
735 | |||
736 | int leftTreeSize = count(node.left); | ||
737 | |||
738 | if (leftTreeSize == Integer.MIN_VALUE) { | ||
739 | return Integer.MIN_VALUE; | ||
740 | } | ||
741 | |||
742 | if (node.count != leftTreeSize) { | ||
743 | return Integer.MIN_VALUE; | ||
744 | } | ||
745 | |||
746 | int rightTreeSize = count(node.right); | ||
747 | |||
748 | if (rightTreeSize == Integer.MIN_VALUE) { | ||
749 | return Integer.MIN_VALUE; | ||
750 | } | ||
751 | |||
752 | return leftTreeSize + 1 + rightTreeSize; | ||
753 | } | ||
754 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/valuation/MapBasedValuation.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/valuation/MapBasedValuation.java new file mode 100644 index 00000000..261ceaa5 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/valuation/MapBasedValuation.java | |||
@@ -0,0 +1,22 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.valuation; | ||
7 | |||
8 | import tools.refinery.store.query.term.AnyDataVariable; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | |||
11 | import java.util.Map; | ||
12 | |||
13 | record MapBasedValuation(Map<AnyDataVariable, Object> values) implements Valuation { | ||
14 | @Override | ||
15 | public <T> T getValue(DataVariable<T> variable) { | ||
16 | if (!values.containsKey(variable)) { | ||
17 | throw new IllegalArgumentException("No value for variable %s".formatted(variable)); | ||
18 | } | ||
19 | var value = values.get(variable); | ||
20 | return variable.getType().cast(value); | ||
21 | } | ||
22 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/valuation/RestrictedValuation.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/valuation/RestrictedValuation.java new file mode 100644 index 00000000..fc8406aa --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/valuation/RestrictedValuation.java | |||
@@ -0,0 +1,21 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.valuation; | ||
7 | |||
8 | import tools.refinery.store.query.term.AnyDataVariable; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | |||
11 | import java.util.Set; | ||
12 | |||
13 | public record RestrictedValuation(Valuation valuation, Set<AnyDataVariable> allowedVariables) implements Valuation { | ||
14 | @Override | ||
15 | public <T> T getValue(DataVariable<T> variable) { | ||
16 | if (!allowedVariables.contains(variable)) { | ||
17 | throw new IllegalArgumentException("Variable %s is not in scope".formatted(variable)); | ||
18 | } | ||
19 | return valuation.getValue(variable); | ||
20 | } | ||
21 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/valuation/SubstitutedValuation.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/valuation/SubstitutedValuation.java new file mode 100644 index 00000000..1c14112c --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/valuation/SubstitutedValuation.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.valuation; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | |||
11 | public record SubstitutedValuation(Valuation originalValuation, Substitution substitution) implements Valuation { | ||
12 | @Override | ||
13 | public <T> T getValue(DataVariable<T> variable) { | ||
14 | return originalValuation.getValue(substitution.getTypeSafeSubstitute(variable)); | ||
15 | } | ||
16 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/valuation/Valuation.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/valuation/Valuation.java new file mode 100644 index 00000000..1588e957 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/valuation/Valuation.java | |||
@@ -0,0 +1,37 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.valuation; | ||
7 | |||
8 | import org.jetbrains.annotations.Nullable; | ||
9 | import tools.refinery.store.query.substitution.Substitution; | ||
10 | import tools.refinery.store.query.term.AnyDataVariable; | ||
11 | import tools.refinery.store.query.term.DataVariable; | ||
12 | |||
13 | import java.util.Map; | ||
14 | import java.util.Set; | ||
15 | |||
16 | public interface Valuation { | ||
17 | <T> T getValue(DataVariable<T> variable); | ||
18 | |||
19 | default Valuation substitute(@Nullable Substitution substitution) { | ||
20 | if (substitution == null) { | ||
21 | return this; | ||
22 | } | ||
23 | return new SubstitutedValuation(this, substitution); | ||
24 | } | ||
25 | |||
26 | default Valuation restrict(Set<? extends AnyDataVariable> allowedVariables) { | ||
27 | return new RestrictedValuation(this, Set.copyOf(allowedVariables)); | ||
28 | } | ||
29 | |||
30 | static ValuationBuilder builder() { | ||
31 | return new ValuationBuilder(); | ||
32 | } | ||
33 | |||
34 | static Valuation empty() { | ||
35 | return new MapBasedValuation(Map.of()); | ||
36 | } | ||
37 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/valuation/ValuationBuilder.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/valuation/ValuationBuilder.java new file mode 100644 index 00000000..7337dbc3 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/valuation/ValuationBuilder.java | |||
@@ -0,0 +1,40 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.valuation; | ||
7 | |||
8 | import tools.refinery.store.query.term.AnyDataVariable; | ||
9 | import tools.refinery.store.query.term.DataVariable; | ||
10 | |||
11 | import java.util.Collections; | ||
12 | import java.util.HashMap; | ||
13 | import java.util.Map; | ||
14 | |||
15 | public class ValuationBuilder { | ||
16 | private final Map<AnyDataVariable, Object> values = new HashMap<>(); | ||
17 | |||
18 | ValuationBuilder() { | ||
19 | } | ||
20 | |||
21 | public <T> ValuationBuilder put(DataVariable<T> variable, T value) { | ||
22 | return putChecked(variable, value); | ||
23 | } | ||
24 | |||
25 | public ValuationBuilder putChecked(AnyDataVariable variable, Object value) { | ||
26 | if (value != null && !variable.getType().isInstance(value)) { | ||
27 | throw new IllegalArgumentException("Value %s is not an instance of %s" | ||
28 | .formatted(value, variable.getType().getName())); | ||
29 | } | ||
30 | if (values.containsKey(variable)) { | ||
31 | throw new IllegalArgumentException("Already has value for variable %s".formatted(variable)); | ||
32 | } | ||
33 | values.put(variable, value); | ||
34 | return this; | ||
35 | } | ||
36 | |||
37 | public Valuation build() { | ||
38 | return new MapBasedValuation(Collections.unmodifiableMap(values)); | ||
39 | } | ||
40 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/view/AbstractFunctionView.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/AbstractFunctionView.java new file mode 100644 index 00000000..fd37604e --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/AbstractFunctionView.java | |||
@@ -0,0 +1,110 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.view; | ||
7 | |||
8 | import tools.refinery.store.model.Model; | ||
9 | import tools.refinery.store.query.dnf.FunctionalDependency; | ||
10 | import tools.refinery.store.query.term.Parameter; | ||
11 | import tools.refinery.store.representation.Symbol; | ||
12 | import tools.refinery.store.tuple.Tuple; | ||
13 | import tools.refinery.store.tuple.Tuple1; | ||
14 | |||
15 | import java.util.Arrays; | ||
16 | import java.util.List; | ||
17 | import java.util.Objects; | ||
18 | import java.util.Set; | ||
19 | import java.util.stream.Collectors; | ||
20 | import java.util.stream.IntStream; | ||
21 | |||
22 | public abstract class AbstractFunctionView<T> extends SymbolView<T> { | ||
23 | private final List<Parameter> parameters; | ||
24 | |||
25 | protected AbstractFunctionView(Symbol<T> symbol, String name, Parameter outParameter) { | ||
26 | super(symbol, name); | ||
27 | parameters = createParameters(symbol.arity(), outParameter); | ||
28 | } | ||
29 | |||
30 | @Override | ||
31 | public Set<FunctionalDependency<Integer>> getFunctionalDependencies() { | ||
32 | var arity = getSymbol().arity(); | ||
33 | var forEach = IntStream.range(0, arity).boxed().collect(Collectors.toUnmodifiableSet()); | ||
34 | var unique = Set.of(arity); | ||
35 | return Set.of(new FunctionalDependency<>(forEach, unique)); | ||
36 | } | ||
37 | |||
38 | @Override | ||
39 | public Set<ViewImplication> getImpliedRelationViews() { | ||
40 | var symbol = getSymbol(); | ||
41 | var impliedIndices = IntStream.range(0, symbol.arity()).boxed().toList(); | ||
42 | var keysView = new KeyOnlyView<>(symbol); | ||
43 | return Set.of(new ViewImplication(this, keysView, impliedIndices)); | ||
44 | } | ||
45 | |||
46 | @Override | ||
47 | protected boolean doFilter(Tuple key, T value) { | ||
48 | return true; | ||
49 | } | ||
50 | |||
51 | protected Object forwardMapValue(T value) { | ||
52 | return value; | ||
53 | } | ||
54 | |||
55 | protected boolean valueEquals(T value, Object otherForwardMappedValue) { | ||
56 | return Objects.equals(otherForwardMappedValue, forwardMapValue(value)); | ||
57 | } | ||
58 | |||
59 | @Override | ||
60 | public Object[] forwardMap(Tuple key, T value) { | ||
61 | int size = key.getSize(); | ||
62 | Object[] result = new Object[size + 1]; | ||
63 | for (int i = 0; i < size; i++) { | ||
64 | result[i] = Tuple.of(key.get(i)); | ||
65 | } | ||
66 | result[key.getSize()] = forwardMapValue(value); | ||
67 | return result; | ||
68 | } | ||
69 | |||
70 | @Override | ||
71 | public boolean get(Model model, Object[] tuple) { | ||
72 | int[] content = new int[tuple.length - 1]; | ||
73 | for (int i = 0; i < tuple.length - 1; i++) { | ||
74 | if (!(tuple[i] instanceof Tuple1 wrapper)) { | ||
75 | return false; | ||
76 | } | ||
77 | content[i] = wrapper.value0(); | ||
78 | } | ||
79 | Tuple key = Tuple.of(content); | ||
80 | var valueInTuple = tuple[tuple.length - 1]; | ||
81 | T valueInMap = model.getInterpretation(getSymbol()).get(key); | ||
82 | return valueEquals(valueInMap, valueInTuple); | ||
83 | } | ||
84 | |||
85 | @Override | ||
86 | public List<Parameter> getParameters() { | ||
87 | return parameters; | ||
88 | } | ||
89 | |||
90 | @Override | ||
91 | public boolean equals(Object o) { | ||
92 | if (this == o) return true; | ||
93 | if (o == null || getClass() != o.getClass()) return false; | ||
94 | if (!super.equals(o)) return false; | ||
95 | AbstractFunctionView<?> that = (AbstractFunctionView<?>) o; | ||
96 | return Objects.equals(parameters, that.parameters); | ||
97 | } | ||
98 | |||
99 | @Override | ||
100 | public int hashCode() { | ||
101 | return Objects.hash(super.hashCode(), parameters); | ||
102 | } | ||
103 | |||
104 | private static List<Parameter> createParameters(int symbolArity, Parameter outParameter) { | ||
105 | var parameters = new Parameter[symbolArity + 1]; | ||
106 | Arrays.fill(parameters, Parameter.NODE_OUT); | ||
107 | parameters[symbolArity] = outParameter; | ||
108 | return List.of(parameters); | ||
109 | } | ||
110 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/view/AnySymbolView.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/AnySymbolView.java new file mode 100644 index 00000000..90b27ebb --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/AnySymbolView.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.view; | ||
7 | |||
8 | import tools.refinery.store.model.Model; | ||
9 | import tools.refinery.store.query.dnf.FunctionalDependency; | ||
10 | import tools.refinery.store.representation.AnySymbol; | ||
11 | import tools.refinery.store.query.Constraint; | ||
12 | |||
13 | import java.util.Set; | ||
14 | |||
15 | public sealed interface AnySymbolView extends Constraint permits SymbolView { | ||
16 | AnySymbol getSymbol(); | ||
17 | |||
18 | String getViewName(); | ||
19 | |||
20 | default Set<FunctionalDependency<Integer>> getFunctionalDependencies() { | ||
21 | return Set.of(); | ||
22 | } | ||
23 | |||
24 | default Set<ViewImplication> getImpliedRelationViews() { | ||
25 | return Set.of(); | ||
26 | } | ||
27 | |||
28 | boolean get(Model model, Object[] tuple); | ||
29 | |||
30 | Iterable<Object[]> getAll(Model model); | ||
31 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/view/FilteredView.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/FilteredView.java new file mode 100644 index 00000000..abae6e5c --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/FilteredView.java | |||
@@ -0,0 +1,73 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.view; | ||
7 | |||
8 | import tools.refinery.store.tuple.Tuple; | ||
9 | import tools.refinery.store.representation.Symbol; | ||
10 | |||
11 | import java.util.Objects; | ||
12 | import java.util.function.BiPredicate; | ||
13 | import java.util.function.Predicate; | ||
14 | |||
15 | public class FilteredView<T> extends TuplePreservingView<T> { | ||
16 | private final BiPredicate<Tuple, T> predicate; | ||
17 | |||
18 | public FilteredView(Symbol<T> symbol, String name, BiPredicate<Tuple, T> predicate) { | ||
19 | super(symbol, name); | ||
20 | this.predicate = predicate; | ||
21 | } | ||
22 | |||
23 | public FilteredView(Symbol<T> symbol, BiPredicate<Tuple, T> predicate) { | ||
24 | super(symbol); | ||
25 | this.predicate = predicate; | ||
26 | } | ||
27 | |||
28 | public FilteredView(Symbol<T> symbol, String name, Predicate<T> predicate) { | ||
29 | this(symbol, name, (k, v) -> predicate.test(v)); | ||
30 | validateDefaultValue(predicate); | ||
31 | } | ||
32 | |||
33 | public FilteredView(Symbol<T> symbol, Predicate<T> predicate) { | ||
34 | this(symbol, (k, v) -> predicate.test(v)); | ||
35 | validateDefaultValue(predicate); | ||
36 | } | ||
37 | |||
38 | @Override | ||
39 | protected boolean doFilter(Tuple key, T value) { | ||
40 | return this.predicate.test(key, value); | ||
41 | } | ||
42 | |||
43 | @Override | ||
44 | public boolean equals(Object o) { | ||
45 | if (this == o) return true; | ||
46 | if (o == null || getClass() != o.getClass()) return false; | ||
47 | if (!super.equals(o)) return false; | ||
48 | FilteredView<?> that = (FilteredView<?>) o; | ||
49 | return Objects.equals(predicate, that.predicate); | ||
50 | } | ||
51 | |||
52 | @Override | ||
53 | public int hashCode() { | ||
54 | return Objects.hash(super.hashCode(), predicate); | ||
55 | } | ||
56 | |||
57 | private void validateDefaultValue(Predicate<T> predicate) { | ||
58 | var defaultValue = getSymbol().defaultValue(); | ||
59 | boolean matchesDefaultValue = false; | ||
60 | try { | ||
61 | matchesDefaultValue = predicate.test(defaultValue); | ||
62 | } catch (NullPointerException e) { | ||
63 | if (defaultValue != null) { | ||
64 | throw e; | ||
65 | } | ||
66 | // The predicate doesn't need to handle the default value if it is null. | ||
67 | } | ||
68 | if (matchesDefaultValue) { | ||
69 | throw new IllegalArgumentException("Tuples with default value %s cannot be enumerated in %s" | ||
70 | .formatted(defaultValue, getSymbol())); | ||
71 | } | ||
72 | } | ||
73 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/view/ForbiddenView.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/ForbiddenView.java new file mode 100644 index 00000000..c312330e --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/ForbiddenView.java | |||
@@ -0,0 +1,21 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.view; | ||
7 | |||
8 | import tools.refinery.store.representation.Symbol; | ||
9 | import tools.refinery.store.representation.TruthValue; | ||
10 | import tools.refinery.store.tuple.Tuple; | ||
11 | |||
12 | public class ForbiddenView extends TuplePreservingView<TruthValue> { | ||
13 | public ForbiddenView(Symbol<TruthValue> symbol) { | ||
14 | super(symbol, "forbidden"); | ||
15 | } | ||
16 | |||
17 | @Override | ||
18 | protected boolean doFilter(Tuple key, TruthValue value) { | ||
19 | return !value.may(); | ||
20 | } | ||
21 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/view/FunctionView.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/FunctionView.java new file mode 100644 index 00000000..74a5be07 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/FunctionView.java | |||
@@ -0,0 +1,36 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.view; | ||
7 | |||
8 | import tools.refinery.store.query.term.*; | ||
9 | import tools.refinery.store.representation.Symbol; | ||
10 | |||
11 | import java.util.ArrayList; | ||
12 | import java.util.List; | ||
13 | |||
14 | public final class FunctionView<T> extends AbstractFunctionView<T> { | ||
15 | public FunctionView(Symbol<T> symbol, String name) { | ||
16 | super(symbol, name, new Parameter(symbol.valueType(), ParameterDirection.OUT)); | ||
17 | } | ||
18 | |||
19 | public FunctionView(Symbol<T> symbol) { | ||
20 | this(symbol, "function"); | ||
21 | } | ||
22 | |||
23 | public <R> AssignedValue<R> aggregate(Aggregator<R, T> aggregator, List<NodeVariable> arguments) { | ||
24 | return targetVariable -> { | ||
25 | var placeholderVariable = Variable.of(getSymbol().valueType()); | ||
26 | var argumentsWithPlaceholder = new ArrayList<Variable>(arguments.size() + 1); | ||
27 | argumentsWithPlaceholder.addAll(arguments); | ||
28 | argumentsWithPlaceholder.add(placeholderVariable); | ||
29 | return aggregateBy(placeholderVariable, aggregator, argumentsWithPlaceholder).toLiteral(targetVariable); | ||
30 | }; | ||
31 | } | ||
32 | |||
33 | public <R> AssignedValue<R> aggregate(Aggregator<R, T> aggregator, NodeVariable... arguments) { | ||
34 | return aggregate(aggregator, List.of(arguments)); | ||
35 | } | ||
36 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/view/KeyOnlyRelationView.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/KeyOnlyView.java index e1b2e45b..f0e4a61e 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/query/view/KeyOnlyRelationView.java +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/KeyOnlyView.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.query.view; | 6 | package tools.refinery.store.query.view; |
2 | 7 | ||
3 | import tools.refinery.store.representation.Symbol; | 8 | import tools.refinery.store.representation.Symbol; |
@@ -5,19 +10,19 @@ import tools.refinery.store.tuple.Tuple; | |||
5 | 10 | ||
6 | import java.util.Objects; | 11 | import java.util.Objects; |
7 | 12 | ||
8 | public final class KeyOnlyRelationView<T> extends TuplePreservingRelationView<T> { | 13 | public final class KeyOnlyView<T> extends TuplePreservingView<T> { |
9 | public static final String VIEW_NAME = "key"; | 14 | public static final String VIEW_NAME = "key"; |
10 | 15 | ||
11 | private final T defaultValue; | 16 | private final T defaultValue; |
12 | 17 | ||
13 | public KeyOnlyRelationView(Symbol<T> symbol) { | 18 | public KeyOnlyView(Symbol<T> symbol) { |
14 | super(symbol, VIEW_NAME); | 19 | super(symbol, VIEW_NAME); |
15 | defaultValue = symbol.defaultValue(); | 20 | defaultValue = symbol.defaultValue(); |
16 | } | 21 | } |
17 | 22 | ||
18 | @Override | 23 | @Override |
19 | public boolean filter(Tuple key, T value) { | 24 | protected boolean doFilter(Tuple key, T value) { |
20 | return !Objects.equals(value, defaultValue); | 25 | return true; |
21 | } | 26 | } |
22 | 27 | ||
23 | @Override | 28 | @Override |
@@ -25,7 +30,7 @@ public final class KeyOnlyRelationView<T> extends TuplePreservingRelationView<T> | |||
25 | if (this == o) return true; | 30 | if (this == o) return true; |
26 | if (o == null || getClass() != o.getClass()) return false; | 31 | if (o == null || getClass() != o.getClass()) return false; |
27 | if (!super.equals(o)) return false; | 32 | if (!super.equals(o)) return false; |
28 | KeyOnlyRelationView<?> that = (KeyOnlyRelationView<?>) o; | 33 | KeyOnlyView<?> that = (KeyOnlyView<?>) o; |
29 | return Objects.equals(defaultValue, that.defaultValue); | 34 | return Objects.equals(defaultValue, that.defaultValue); |
30 | } | 35 | } |
31 | 36 | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/view/MayView.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/MayView.java new file mode 100644 index 00000000..c322e220 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/MayView.java | |||
@@ -0,0 +1,21 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.view; | ||
7 | |||
8 | import tools.refinery.store.representation.Symbol; | ||
9 | import tools.refinery.store.representation.TruthValue; | ||
10 | import tools.refinery.store.tuple.Tuple; | ||
11 | |||
12 | public class MayView extends TuplePreservingView<TruthValue> { | ||
13 | public MayView(Symbol<TruthValue> symbol) { | ||
14 | super(symbol, "may"); | ||
15 | } | ||
16 | |||
17 | @Override | ||
18 | protected boolean doFilter(Tuple key, TruthValue value) { | ||
19 | return value.may(); | ||
20 | } | ||
21 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/view/MustView.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/MustView.java new file mode 100644 index 00000000..65bb4e4c --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/MustView.java | |||
@@ -0,0 +1,21 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.view; | ||
7 | |||
8 | import tools.refinery.store.representation.Symbol; | ||
9 | import tools.refinery.store.representation.TruthValue; | ||
10 | import tools.refinery.store.tuple.Tuple; | ||
11 | |||
12 | public class MustView extends TuplePreservingView<TruthValue> { | ||
13 | public MustView(Symbol<TruthValue> symbol) { | ||
14 | super(symbol, "must"); | ||
15 | } | ||
16 | |||
17 | @Override | ||
18 | protected boolean doFilter(Tuple key, TruthValue value) { | ||
19 | return value.must(); | ||
20 | } | ||
21 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/view/NodeFunctionView.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/NodeFunctionView.java new file mode 100644 index 00000000..fcf11506 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/NodeFunctionView.java | |||
@@ -0,0 +1,20 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.view; | ||
7 | |||
8 | import tools.refinery.store.query.term.Parameter; | ||
9 | import tools.refinery.store.representation.Symbol; | ||
10 | import tools.refinery.store.tuple.Tuple1; | ||
11 | |||
12 | public final class NodeFunctionView extends AbstractFunctionView<Tuple1> { | ||
13 | public NodeFunctionView(Symbol<Tuple1> symbol, String name) { | ||
14 | super(symbol, name, Parameter.NODE_OUT); | ||
15 | } | ||
16 | |||
17 | public NodeFunctionView(Symbol<Tuple1> symbol) { | ||
18 | this(symbol, "function"); | ||
19 | } | ||
20 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/view/SymbolView.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/SymbolView.java new file mode 100644 index 00000000..cd8bd56b --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/SymbolView.java | |||
@@ -0,0 +1,85 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.view; | ||
7 | |||
8 | import tools.refinery.store.map.CursorAsIterator; | ||
9 | import tools.refinery.store.model.Model; | ||
10 | import tools.refinery.store.representation.Symbol; | ||
11 | import tools.refinery.store.tuple.Tuple; | ||
12 | |||
13 | import java.util.Objects; | ||
14 | import java.util.UUID; | ||
15 | |||
16 | /** | ||
17 | * Represents a view of a {@link Symbol} that can be queried. | ||
18 | * | ||
19 | * @param <T> | ||
20 | * @author Oszkar Semerath | ||
21 | */ | ||
22 | public abstract non-sealed class SymbolView<T> implements AnySymbolView { | ||
23 | private final Symbol<T> symbol; | ||
24 | private final String viewName; | ||
25 | |||
26 | protected SymbolView(Symbol<T> symbol, String viewName) { | ||
27 | this.symbol = symbol; | ||
28 | this.viewName = viewName; | ||
29 | } | ||
30 | |||
31 | protected SymbolView(Symbol<T> representation) { | ||
32 | this(representation, UUID.randomUUID().toString()); | ||
33 | } | ||
34 | |||
35 | @Override | ||
36 | public Symbol<T> getSymbol() { | ||
37 | return symbol; | ||
38 | } | ||
39 | |||
40 | @Override | ||
41 | public String getViewName() { | ||
42 | return viewName; | ||
43 | } | ||
44 | |||
45 | @Override | ||
46 | public String name() { | ||
47 | return symbol.name() + "#" + viewName; | ||
48 | } | ||
49 | |||
50 | public final boolean filter(Tuple key, T value) { | ||
51 | return !Objects.equals(symbol.defaultValue(), value) && doFilter(key, value); | ||
52 | } | ||
53 | |||
54 | protected abstract boolean doFilter(Tuple key, T value); | ||
55 | |||
56 | public abstract Object[] forwardMap(Tuple key, T value); | ||
57 | |||
58 | @Override | ||
59 | public Iterable<Object[]> getAll(Model model) { | ||
60 | return (() -> new CursorAsIterator<>(model.getInterpretation(symbol).getAll(), this::forwardMap, this::filter)); | ||
61 | } | ||
62 | |||
63 | @Override | ||
64 | public String toString() { | ||
65 | return name(); | ||
66 | } | ||
67 | |||
68 | @Override | ||
69 | public String toReferenceString() { | ||
70 | return "@RelationView(\"%s\") %s".formatted(viewName, symbol.name()); | ||
71 | } | ||
72 | |||
73 | @Override | ||
74 | public boolean equals(Object o) { | ||
75 | if (this == o) return true; | ||
76 | if (o == null || getClass() != o.getClass()) return false; | ||
77 | SymbolView<?> that = (SymbolView<?>) o; | ||
78 | return Objects.equals(symbol, that.symbol) && Objects.equals(viewName, that.viewName); | ||
79 | } | ||
80 | |||
81 | @Override | ||
82 | public int hashCode() { | ||
83 | return Objects.hash(getClass(), symbol, viewName); | ||
84 | } | ||
85 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/view/TuplePreservingView.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/TuplePreservingView.java new file mode 100644 index 00000000..6bc5a708 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/TuplePreservingView.java | |||
@@ -0,0 +1,82 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.view; | ||
7 | |||
8 | import tools.refinery.store.model.Model; | ||
9 | import tools.refinery.store.query.term.Parameter; | ||
10 | import tools.refinery.store.representation.Symbol; | ||
11 | import tools.refinery.store.tuple.Tuple; | ||
12 | import tools.refinery.store.tuple.Tuple1; | ||
13 | |||
14 | import java.util.Arrays; | ||
15 | import java.util.List; | ||
16 | import java.util.Objects; | ||
17 | |||
18 | public abstract class TuplePreservingView<T> extends SymbolView<T> { | ||
19 | private final List<Parameter> parameters; | ||
20 | |||
21 | protected TuplePreservingView(Symbol<T> symbol, String name) { | ||
22 | super(symbol, name); | ||
23 | this.parameters = createParameters(symbol.arity()); | ||
24 | } | ||
25 | |||
26 | protected TuplePreservingView(Symbol<T> symbol) { | ||
27 | super(symbol); | ||
28 | this.parameters = createParameters(symbol.arity()); | ||
29 | } | ||
30 | |||
31 | public Object[] forwardMap(Tuple key) { | ||
32 | Object[] result = new Object[key.getSize()]; | ||
33 | for (int i = 0; i < key.getSize(); i++) { | ||
34 | result[i] = Tuple.of(key.get(i)); | ||
35 | } | ||
36 | return result; | ||
37 | } | ||
38 | |||
39 | @Override | ||
40 | public Object[] forwardMap(Tuple key, T value) { | ||
41 | return forwardMap(key); | ||
42 | } | ||
43 | |||
44 | @Override | ||
45 | public boolean get(Model model, Object[] tuple) { | ||
46 | int[] content = new int[tuple.length]; | ||
47 | for (int i = 0; i < tuple.length; i++) { | ||
48 | if (!(tuple[i] instanceof Tuple1 wrapper)) { | ||
49 | return false; | ||
50 | } | ||
51 | content[i] = wrapper.value0(); | ||
52 | } | ||
53 | Tuple key = Tuple.of(content); | ||
54 | T value = model.getInterpretation(getSymbol()).get(key); | ||
55 | return filter(key, value); | ||
56 | } | ||
57 | |||
58 | @Override | ||
59 | public List<Parameter> getParameters() { | ||
60 | return parameters; | ||
61 | } | ||
62 | |||
63 | @Override | ||
64 | public boolean equals(Object o) { | ||
65 | if (this == o) return true; | ||
66 | if (o == null || getClass() != o.getClass()) return false; | ||
67 | if (!super.equals(o)) return false; | ||
68 | TuplePreservingView<?> that = (TuplePreservingView<?>) o; | ||
69 | return Objects.equals(parameters, that.parameters); | ||
70 | } | ||
71 | |||
72 | @Override | ||
73 | public int hashCode() { | ||
74 | return Objects.hash(super.hashCode(), parameters); | ||
75 | } | ||
76 | |||
77 | private static List<Parameter> createParameters(int arity) { | ||
78 | var parameters = new Parameter[arity]; | ||
79 | Arrays.fill(parameters, Parameter.NODE_OUT); | ||
80 | return List.of(parameters); | ||
81 | } | ||
82 | } | ||
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/view/ViewImplication.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/ViewImplication.java new file mode 100644 index 00000000..fc2db9f2 --- /dev/null +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/ViewImplication.java | |||
@@ -0,0 +1,23 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.view; | ||
7 | |||
8 | import java.util.List; | ||
9 | |||
10 | public record ViewImplication(AnySymbolView implyingView, AnySymbolView impliedView, List<Integer> impliedIndices) { | ||
11 | public ViewImplication { | ||
12 | if (impliedIndices.size() != impliedView.arity()) { | ||
13 | throw new IllegalArgumentException("Expected %d implied indices for %s, but %d are provided" | ||
14 | .formatted(impliedView.arity(), impliedView, impliedIndices.size())); | ||
15 | } | ||
16 | for (var index : impliedIndices) { | ||
17 | if (impliedView.invalidIndex(index)) { | ||
18 | throw new IllegalArgumentException("%d is not a valid index for %s".formatted(index, | ||
19 | implyingView)); | ||
20 | } | ||
21 | } | ||
22 | } | ||
23 | } | ||
diff --git a/subprojects/store-query/src/test/java/tools/refinery/store/query/dnf/DnfBuilderLiteralEliminationTest.java b/subprojects/store-query/src/test/java/tools/refinery/store/query/dnf/DnfBuilderLiteralEliminationTest.java new file mode 100644 index 00000000..e17496e3 --- /dev/null +++ b/subprojects/store-query/src/test/java/tools/refinery/store/query/dnf/DnfBuilderLiteralEliminationTest.java | |||
@@ -0,0 +1,210 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf; | ||
7 | |||
8 | import org.junit.jupiter.api.Test; | ||
9 | import org.junit.jupiter.params.ParameterizedTest; | ||
10 | import org.junit.jupiter.params.provider.CsvSource; | ||
11 | import tools.refinery.store.query.literal.BooleanLiteral; | ||
12 | import tools.refinery.store.query.term.NodeVariable; | ||
13 | import tools.refinery.store.query.term.ParameterDirection; | ||
14 | import tools.refinery.store.query.term.Variable; | ||
15 | import tools.refinery.store.query.term.bool.BoolTerms; | ||
16 | import tools.refinery.store.query.view.KeyOnlyView; | ||
17 | import tools.refinery.store.query.view.SymbolView; | ||
18 | import tools.refinery.store.representation.Symbol; | ||
19 | |||
20 | import java.util.List; | ||
21 | |||
22 | import static org.hamcrest.MatcherAssert.assertThat; | ||
23 | import static tools.refinery.store.query.literal.Literals.assume; | ||
24 | import static tools.refinery.store.query.literal.Literals.not; | ||
25 | import static tools.refinery.store.query.tests.QueryMatchers.structurallyEqualTo; | ||
26 | |||
27 | class DnfBuilderLiteralEliminationTest { | ||
28 | private final Symbol<Boolean> friend = Symbol.of("friend", 2); | ||
29 | private final SymbolView<Boolean> friendView = new KeyOnlyView<>(friend); | ||
30 | private final NodeVariable p = Variable.of("p"); | ||
31 | private final NodeVariable q = Variable.of("q"); | ||
32 | private final Dnf trueDnf = Dnf.builder().parameter(p, ParameterDirection.IN).clause().build(); | ||
33 | private final Dnf falseDnf = Dnf.builder().parameter(p).build(); | ||
34 | |||
35 | @Test | ||
36 | void eliminateTrueTest() { | ||
37 | var actual = Dnf.builder() | ||
38 | .parameters(p, q) | ||
39 | .clause(BooleanLiteral.TRUE, friendView.call(p, q)) | ||
40 | .build(); | ||
41 | var expected = Dnf.builder().parameters(p, q).clause(friendView.call(p, q)).build(); | ||
42 | |||
43 | assertThat(actual, structurallyEqualTo(expected)); | ||
44 | } | ||
45 | |||
46 | @Test | ||
47 | void eliminateTrueAssumptionTest() { | ||
48 | var actual = Dnf.builder() | ||
49 | .parameters(p, q) | ||
50 | .clause(assume(BoolTerms.constant(true)), friendView.call(p, q)) | ||
51 | .build(); | ||
52 | var expected = Dnf.builder().parameters(p, q).clause(friendView.call(p, q)).build(); | ||
53 | |||
54 | assertThat(actual, structurallyEqualTo(expected)); | ||
55 | } | ||
56 | |||
57 | @Test | ||
58 | void eliminateFalseTest() { | ||
59 | var actual = Dnf.builder() | ||
60 | .parameters(p, q) | ||
61 | .clause(friendView.call(p, q)) | ||
62 | .clause(friendView.call(q, p), BooleanLiteral.FALSE) | ||
63 | .build(); | ||
64 | var expected = Dnf.builder().parameters(p, q).clause(friendView.call(p, q)).build(); | ||
65 | |||
66 | assertThat(actual, structurallyEqualTo(expected)); | ||
67 | } | ||
68 | |||
69 | @ParameterizedTest | ||
70 | @CsvSource(value = { | ||
71 | "false", | ||
72 | "null" | ||
73 | }, nullValues = "null") | ||
74 | void eliminateFalseAssumptionTest(Boolean value) { | ||
75 | var actual = Dnf.builder() | ||
76 | .parameters(p, q) | ||
77 | .clause(friendView.call(p, q)) | ||
78 | .clause(friendView.call(q, p), assume(BoolTerms.constant(value))) | ||
79 | .build(); | ||
80 | var expected = Dnf.builder().parameters(p, q).clause(friendView.call(p, q)).build(); | ||
81 | |||
82 | assertThat(actual, structurallyEqualTo(expected)); | ||
83 | } | ||
84 | |||
85 | @Test | ||
86 | void alwaysTrueTest() { | ||
87 | var actual = Dnf.builder() | ||
88 | .parameters(List.of(p, q), ParameterDirection.IN) | ||
89 | .clause(friendView.call(p, q)) | ||
90 | .clause(BooleanLiteral.TRUE) | ||
91 | .build(); | ||
92 | var expected = Dnf.builder().parameters(List.of(p, q), ParameterDirection.IN).clause().build(); | ||
93 | |||
94 | assertThat(actual, structurallyEqualTo(expected)); | ||
95 | } | ||
96 | |||
97 | @Test | ||
98 | void alwaysFalseTest() { | ||
99 | var actual = Dnf.builder() | ||
100 | .parameters(p, q) | ||
101 | .clause(friendView.call(p, q), BooleanLiteral.FALSE) | ||
102 | .build(); | ||
103 | var expected = Dnf.builder().parameters(p, q).build(); | ||
104 | |||
105 | assertThat(actual, structurallyEqualTo(expected)); | ||
106 | } | ||
107 | |||
108 | @Test | ||
109 | void eliminateTrueDnfTest() { | ||
110 | var actual = Dnf.builder() | ||
111 | .parameters(p, q) | ||
112 | .clause(trueDnf.call(q), friendView.call(p, q)) | ||
113 | .build(); | ||
114 | var expected = Dnf.builder().parameters(p, q).clause(friendView.call(p, q)).build(); | ||
115 | |||
116 | assertThat(actual, structurallyEqualTo(expected)); | ||
117 | } | ||
118 | |||
119 | @Test | ||
120 | void eliminateFalseDnfTest() { | ||
121 | var actual = Dnf.builder() | ||
122 | .parameters(p, q) | ||
123 | .clause(friendView.call(p, q)) | ||
124 | .clause(friendView.call(q, p), falseDnf.call(q)) | ||
125 | .build(); | ||
126 | var expected = Dnf.builder().parameters(p, q).clause(friendView.call(p, q)).build(); | ||
127 | |||
128 | assertThat(actual, structurallyEqualTo(expected)); | ||
129 | } | ||
130 | |||
131 | @Test | ||
132 | void alwaysTrueDnfTest() { | ||
133 | var actual = Dnf.builder() | ||
134 | .parameters(List.of(p, q), ParameterDirection.IN) | ||
135 | .clause(friendView.call(p, q)) | ||
136 | .clause(trueDnf.call(q)) | ||
137 | .build(); | ||
138 | var expected = Dnf.builder().parameters(List.of(p, q), ParameterDirection.IN).clause().build(); | ||
139 | |||
140 | assertThat(actual, structurallyEqualTo(expected)); | ||
141 | } | ||
142 | |||
143 | @Test | ||
144 | void alwaysFalseDnfTest() { | ||
145 | var actual = Dnf.builder() | ||
146 | .parameters(p, q) | ||
147 | .clause(friendView.call(p, q), falseDnf.call(q)) | ||
148 | .build(); | ||
149 | var expected = Dnf.builder().parameters(p, q).build(); | ||
150 | |||
151 | assertThat(actual, structurallyEqualTo(expected)); | ||
152 | } | ||
153 | |||
154 | @Test | ||
155 | void eliminateNotFalseDnfTest() { | ||
156 | var actual = Dnf.builder() | ||
157 | .parameters(p, q) | ||
158 | .clause(not(falseDnf.call(q)), friendView.call(p, q)) | ||
159 | .build(); | ||
160 | var expected = Dnf.builder().parameters(p, q).clause(friendView.call(p, q)).build(); | ||
161 | |||
162 | assertThat(actual, structurallyEqualTo(expected)); | ||
163 | } | ||
164 | |||
165 | @Test | ||
166 | void eliminateNotTrueDnfTest() { | ||
167 | var actual = Dnf.builder() | ||
168 | .parameters(p, q) | ||
169 | .clause(friendView.call(p, q)) | ||
170 | .clause(friendView.call(q, p), not(trueDnf.call(q))) | ||
171 | .build(); | ||
172 | var expected = Dnf.builder().parameters(p, q).clause(friendView.call(p, q)).build(); | ||
173 | |||
174 | assertThat(actual, structurallyEqualTo(expected)); | ||
175 | } | ||
176 | |||
177 | @Test | ||
178 | void alwaysNotFalseDnfTest() { | ||
179 | var actual = Dnf.builder() | ||
180 | .parameters(List.of(p, q), ParameterDirection.IN) | ||
181 | .clause(friendView.call(p, q)) | ||
182 | .clause(not(falseDnf.call(q))) | ||
183 | .build(); | ||
184 | var expected = Dnf.builder().parameters(List.of(p, q), ParameterDirection.IN).clause().build(); | ||
185 | |||
186 | assertThat(actual, structurallyEqualTo(expected)); | ||
187 | } | ||
188 | |||
189 | @Test | ||
190 | void alwaysNotTrueDnfTest() { | ||
191 | var actual = Dnf.builder() | ||
192 | .parameters(p, q) | ||
193 | .clause(friendView.call(p, q), not(trueDnf.call(q))) | ||
194 | .build(); | ||
195 | var expected = Dnf.builder().parameters(p, q).build(); | ||
196 | |||
197 | assertThat(actual, structurallyEqualTo(expected)); | ||
198 | } | ||
199 | |||
200 | @Test | ||
201 | void removeDuplicateTest() { | ||
202 | var actual = Dnf.of(builder -> builder.clause((p, q) -> List.of( | ||
203 | friendView.call(p, q), | ||
204 | friendView.call(p, q) | ||
205 | ))); | ||
206 | var expected = Dnf.of(builder -> builder.clause((p, q) -> List.of(friendView.call(p, q)))); | ||
207 | |||
208 | assertThat(actual, structurallyEqualTo(expected)); | ||
209 | } | ||
210 | } | ||
diff --git a/subprojects/store-query/src/test/java/tools/refinery/store/query/dnf/DnfBuilderVariableUnificationTest.java b/subprojects/store-query/src/test/java/tools/refinery/store/query/dnf/DnfBuilderVariableUnificationTest.java new file mode 100644 index 00000000..fc40c7b3 --- /dev/null +++ b/subprojects/store-query/src/test/java/tools/refinery/store/query/dnf/DnfBuilderVariableUnificationTest.java | |||
@@ -0,0 +1,325 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf; | ||
7 | |||
8 | import org.junit.jupiter.api.Test; | ||
9 | import tools.refinery.store.query.term.ParameterDirection; | ||
10 | import tools.refinery.store.query.term.Variable; | ||
11 | import tools.refinery.store.query.view.KeyOnlyView; | ||
12 | import tools.refinery.store.query.view.SymbolView; | ||
13 | import tools.refinery.store.representation.Symbol; | ||
14 | |||
15 | import java.util.List; | ||
16 | |||
17 | import static org.hamcrest.MatcherAssert.assertThat; | ||
18 | import static tools.refinery.store.query.tests.QueryMatchers.structurallyEqualTo; | ||
19 | |||
20 | class DnfBuilderVariableUnificationTest { | ||
21 | private final Symbol<Boolean> friend = Symbol.of("friend", 2); | ||
22 | private final Symbol<Boolean> children = Symbol.of("children", 2); | ||
23 | private final SymbolView<Boolean> friendView = new KeyOnlyView<>(friend); | ||
24 | private final SymbolView<Boolean> childrenView = new KeyOnlyView<>(children); | ||
25 | |||
26 | @Test | ||
27 | void equalToParameterTest() { | ||
28 | var actual = Dnf.of(builder -> { | ||
29 | var p = builder.parameter("p"); | ||
30 | builder.clause(q -> List.of( | ||
31 | friendView.call(p, q), | ||
32 | p.isEquivalent(q) | ||
33 | )); | ||
34 | }); | ||
35 | |||
36 | var expectedP = Variable.of("p"); | ||
37 | assertThat(actual, structurallyEqualTo( | ||
38 | List.of(new SymbolicParameter(expectedP, ParameterDirection.OUT)), | ||
39 | List.of( | ||
40 | List.of(friendView.call(expectedP, expectedP)) | ||
41 | ) | ||
42 | )); | ||
43 | } | ||
44 | |||
45 | @Test | ||
46 | void equalToParameterReverseTest() { | ||
47 | var actual = Dnf.of(builder -> { | ||
48 | var p = builder.parameter("p"); | ||
49 | builder.clause(q -> List.of( | ||
50 | friendView.call(p, q), | ||
51 | q.isEquivalent(p) | ||
52 | )); | ||
53 | }); | ||
54 | |||
55 | var expectedP = Variable.of("p"); | ||
56 | assertThat(actual, structurallyEqualTo( | ||
57 | List.of(new SymbolicParameter(expectedP, ParameterDirection.OUT)), | ||
58 | List.of( | ||
59 | List.of(friendView.call(expectedP, expectedP)) | ||
60 | ) | ||
61 | )); | ||
62 | } | ||
63 | |||
64 | @Test | ||
65 | void equalQuantifiedTest() { | ||
66 | var actual = Dnf.of(builder -> builder.clause((p, q) -> List.of( | ||
67 | friendView.call(p, q), | ||
68 | p.isEquivalent(q) | ||
69 | ))); | ||
70 | |||
71 | var expectedP = Variable.of("p"); | ||
72 | assertThat(actual, structurallyEqualTo( | ||
73 | List.of(), | ||
74 | List.of( | ||
75 | List.of(friendView.call(expectedP, expectedP)) | ||
76 | ) | ||
77 | )); | ||
78 | } | ||
79 | |||
80 | @Test | ||
81 | void equalQuantifiedTransitiveTest() { | ||
82 | var actual = Dnf.of(builder -> builder.clause((p, q, r) -> List.of( | ||
83 | friendView.call(p, q), | ||
84 | p.isEquivalent(q), | ||
85 | childrenView.call(p, r), | ||
86 | q.isEquivalent(r) | ||
87 | ))); | ||
88 | |||
89 | var expectedP = Variable.of("p"); | ||
90 | assertThat(actual, structurallyEqualTo( | ||
91 | List.of(), | ||
92 | List.of( | ||
93 | List.of(friendView.call(expectedP, expectedP), childrenView.call(expectedP, expectedP)) | ||
94 | ) | ||
95 | )); | ||
96 | } | ||
97 | |||
98 | @Test | ||
99 | void equalQuantifiedTransitiveRemoveDuplicateTest() { | ||
100 | var actual = Dnf.of(builder -> builder.clause((p, q, r) -> List.of( | ||
101 | friendView.call(p, q), | ||
102 | p.isEquivalent(q), | ||
103 | friendView.call(p, r), | ||
104 | q.isEquivalent(r) | ||
105 | ))); | ||
106 | |||
107 | var expectedP = Variable.of("p"); | ||
108 | assertThat(actual, structurallyEqualTo( | ||
109 | List.of(), | ||
110 | List.of( | ||
111 | List.of(friendView.call(expectedP, expectedP)) | ||
112 | ) | ||
113 | )); | ||
114 | } | ||
115 | |||
116 | @Test | ||
117 | void parametersEqualTest() { | ||
118 | var actual = Dnf.of(builder -> { | ||
119 | var p = builder.parameter("p"); | ||
120 | var q = builder.parameter("q"); | ||
121 | builder.clause( | ||
122 | friendView.call(p, q), | ||
123 | p.isEquivalent(q) | ||
124 | ); | ||
125 | }); | ||
126 | |||
127 | var expectedP = Variable.of("p"); | ||
128 | var expectedQ = Variable.of("q"); | ||
129 | assertThat(actual, structurallyEqualTo( | ||
130 | List.of( | ||
131 | new SymbolicParameter(expectedP, ParameterDirection.OUT), | ||
132 | new SymbolicParameter(expectedQ, ParameterDirection.OUT) | ||
133 | ), | ||
134 | List.of( | ||
135 | List.of(friendView.call(expectedP, expectedP), expectedQ.isEquivalent(expectedP)) | ||
136 | ) | ||
137 | )); | ||
138 | } | ||
139 | |||
140 | @Test | ||
141 | void parametersEqualTransitiveTest() { | ||
142 | var actual = Dnf.of(builder -> { | ||
143 | var p = builder.parameter("p"); | ||
144 | var q = builder.parameter("q"); | ||
145 | var r = builder.parameter("r"); | ||
146 | builder.clause( | ||
147 | friendView.call(p, q), | ||
148 | childrenView.call(p, r), | ||
149 | p.isEquivalent(q), | ||
150 | r.isEquivalent(q) | ||
151 | ); | ||
152 | }); | ||
153 | |||
154 | var expectedP = Variable.of("p"); | ||
155 | var expectedQ = Variable.of("q"); | ||
156 | var expectedR = Variable.of("r"); | ||
157 | assertThat(actual, structurallyEqualTo( | ||
158 | List.of( | ||
159 | new SymbolicParameter(expectedP, ParameterDirection.OUT), | ||
160 | new SymbolicParameter(expectedQ, ParameterDirection.OUT), | ||
161 | new SymbolicParameter(expectedR, ParameterDirection.OUT) | ||
162 | ), | ||
163 | List.of( | ||
164 | List.of( | ||
165 | friendView.call(expectedP, expectedP), | ||
166 | expectedQ.isEquivalent(expectedP), | ||
167 | expectedR.isEquivalent(expectedP), | ||
168 | childrenView.call(expectedP, expectedP) | ||
169 | ) | ||
170 | ) | ||
171 | )); | ||
172 | } | ||
173 | |||
174 | @Test | ||
175 | void parameterAndQuantifiedEqualsTest() { | ||
176 | var actual = Dnf.of(builder -> { | ||
177 | var p = builder.parameter("p"); | ||
178 | var q = builder.parameter("q"); | ||
179 | builder.clause((r) -> List.of( | ||
180 | friendView.call(p, r), | ||
181 | p.isEquivalent(r), | ||
182 | childrenView.call(q, r), | ||
183 | q.isEquivalent(r) | ||
184 | )); | ||
185 | }); | ||
186 | |||
187 | |||
188 | var expectedP = Variable.of("p"); | ||
189 | var expectedQ = Variable.of("q"); | ||
190 | assertThat(actual, structurallyEqualTo( | ||
191 | List.of( | ||
192 | new SymbolicParameter(expectedP, ParameterDirection.OUT), | ||
193 | new SymbolicParameter(expectedQ, ParameterDirection.OUT) | ||
194 | ), | ||
195 | List.of( | ||
196 | List.of( | ||
197 | friendView.call(expectedP, expectedP), | ||
198 | expectedQ.isEquivalent(expectedP), | ||
199 | childrenView.call(expectedP, expectedP) | ||
200 | ) | ||
201 | ) | ||
202 | )); | ||
203 | } | ||
204 | |||
205 | @Test | ||
206 | void parameterAndQuantifiedEqualsReverseFirstTest() { | ||
207 | var actual = Dnf.of(builder -> { | ||
208 | var p = builder.parameter("p"); | ||
209 | var q = builder.parameter("q"); | ||
210 | builder.clause((r) -> List.of( | ||
211 | friendView.call(p, r), | ||
212 | r.isEquivalent(p), | ||
213 | childrenView.call(q, r), | ||
214 | q.isEquivalent(r) | ||
215 | )); | ||
216 | }); | ||
217 | |||
218 | var expectedP = Variable.of("p"); | ||
219 | var expectedQ = Variable.of("q"); | ||
220 | assertThat(actual, structurallyEqualTo( | ||
221 | List.of( | ||
222 | new SymbolicParameter(expectedP, ParameterDirection.OUT), | ||
223 | new SymbolicParameter(expectedQ, ParameterDirection.OUT) | ||
224 | ), | ||
225 | List.of( | ||
226 | List.of( | ||
227 | friendView.call(expectedP, expectedP), | ||
228 | expectedQ.isEquivalent(expectedP), | ||
229 | childrenView.call(expectedP, expectedP) | ||
230 | ) | ||
231 | ) | ||
232 | )); | ||
233 | } | ||
234 | |||
235 | @Test | ||
236 | void parameterAndQuantifiedEqualsReverseSecondTest() { | ||
237 | var actual = Dnf.of(builder -> { | ||
238 | var p = builder.parameter("p"); | ||
239 | var q = builder.parameter("q"); | ||
240 | builder.clause((r) -> List.of( | ||
241 | friendView.call(p, r), | ||
242 | p.isEquivalent(r), | ||
243 | childrenView.call(q, r), | ||
244 | r.isEquivalent(q) | ||
245 | )); | ||
246 | }); | ||
247 | |||
248 | var expectedP = Variable.of("p"); | ||
249 | var expectedQ = Variable.of("q"); | ||
250 | assertThat(actual, structurallyEqualTo( | ||
251 | List.of( | ||
252 | new SymbolicParameter(expectedP, ParameterDirection.OUT), | ||
253 | new SymbolicParameter(expectedQ, ParameterDirection.OUT) | ||
254 | ), | ||
255 | List.of( | ||
256 | List.of( | ||
257 | friendView.call(expectedP, expectedP), | ||
258 | expectedQ.isEquivalent(expectedP), | ||
259 | childrenView.call(expectedP, expectedP) | ||
260 | ) | ||
261 | ) | ||
262 | )); | ||
263 | } | ||
264 | |||
265 | @Test | ||
266 | void parameterAndQuantifiedEqualsReverseBoth() { | ||
267 | var actual = Dnf.of(builder -> { | ||
268 | var p = builder.parameter("p"); | ||
269 | var q = builder.parameter("q"); | ||
270 | builder.clause((r) -> List.of( | ||
271 | friendView.call(p, r), | ||
272 | p.isEquivalent(r), | ||
273 | childrenView.call(q, r), | ||
274 | r.isEquivalent(q) | ||
275 | )); | ||
276 | }); | ||
277 | |||
278 | var expectedP = Variable.of("p"); | ||
279 | var expectedQ = Variable.of("q"); | ||
280 | assertThat(actual, structurallyEqualTo( | ||
281 | List.of( | ||
282 | new SymbolicParameter(expectedP, ParameterDirection.OUT), | ||
283 | new SymbolicParameter(expectedQ, ParameterDirection.OUT) | ||
284 | ), | ||
285 | List.of( | ||
286 | List.of( | ||
287 | friendView.call(expectedP, expectedP), | ||
288 | expectedQ.isEquivalent(expectedP), | ||
289 | childrenView.call(expectedP, expectedP) | ||
290 | ) | ||
291 | ) | ||
292 | )); | ||
293 | } | ||
294 | |||
295 | @Test | ||
296 | void parameterAndTwoQuantifiedEqualsTest() { | ||
297 | var actual = Dnf.of(builder -> { | ||
298 | var p = builder.parameter("p"); | ||
299 | var q = builder.parameter("q"); | ||
300 | builder.clause((r, s) -> List.of( | ||
301 | r.isEquivalent(s), | ||
302 | friendView.call(p, r), | ||
303 | p.isEquivalent(r), | ||
304 | childrenView.call(q, s), | ||
305 | q.isEquivalent(s) | ||
306 | )); | ||
307 | }); | ||
308 | |||
309 | var expectedP = Variable.of("p"); | ||
310 | var expectedQ = Variable.of("q"); | ||
311 | assertThat(actual, structurallyEqualTo( | ||
312 | List.of( | ||
313 | new SymbolicParameter(expectedP, ParameterDirection.OUT), | ||
314 | new SymbolicParameter(expectedQ, ParameterDirection.OUT) | ||
315 | ), | ||
316 | List.of( | ||
317 | List.of( | ||
318 | friendView.call(expectedP, expectedP), | ||
319 | expectedQ.isEquivalent(expectedP), | ||
320 | childrenView.call(expectedP, expectedP) | ||
321 | ) | ||
322 | ) | ||
323 | )); | ||
324 | } | ||
325 | } | ||
diff --git a/subprojects/store-query/src/test/java/tools/refinery/store/query/dnf/DnfToDefinitionStringTest.java b/subprojects/store-query/src/test/java/tools/refinery/store/query/dnf/DnfToDefinitionStringTest.java new file mode 100644 index 00000000..d75d7f17 --- /dev/null +++ b/subprojects/store-query/src/test/java/tools/refinery/store/query/dnf/DnfToDefinitionStringTest.java | |||
@@ -0,0 +1,157 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf; | ||
7 | |||
8 | import org.junit.jupiter.api.Test; | ||
9 | import tools.refinery.store.query.term.NodeVariable; | ||
10 | import tools.refinery.store.query.term.ParameterDirection; | ||
11 | import tools.refinery.store.query.term.Variable; | ||
12 | import tools.refinery.store.query.view.AnySymbolView; | ||
13 | import tools.refinery.store.query.view.KeyOnlyView; | ||
14 | import tools.refinery.store.representation.Symbol; | ||
15 | |||
16 | import static org.hamcrest.MatcherAssert.assertThat; | ||
17 | import static org.hamcrest.Matchers.is; | ||
18 | import static tools.refinery.store.query.literal.Literals.not; | ||
19 | |||
20 | class DnfToDefinitionStringTest { | ||
21 | private static final Symbol<Boolean> person = Symbol.of("person", 1); | ||
22 | private static final Symbol<Boolean> friend = Symbol.of("friend", 2); | ||
23 | private static final AnySymbolView personView = new KeyOnlyView<>(person); | ||
24 | private static final AnySymbolView friendView = new KeyOnlyView<>(friend); | ||
25 | private static final NodeVariable p = Variable.of("p"); | ||
26 | private static final NodeVariable q = Variable.of("q"); | ||
27 | |||
28 | @Test | ||
29 | void noClausesTest() { | ||
30 | var dnf = Dnf.builder("Example").parameter(p).build(); | ||
31 | |||
32 | assertThat(dnf.toDefinitionString(), is(""" | ||
33 | pred Example(p) <-> | ||
34 | <no clauses>. | ||
35 | """)); | ||
36 | } | ||
37 | |||
38 | @Test | ||
39 | void noParametersTest() { | ||
40 | var dnf = Dnf.builder("Example").build(); | ||
41 | |||
42 | assertThat(dnf.toDefinitionString(), is(""" | ||
43 | pred Example() <-> | ||
44 | <no clauses>. | ||
45 | """)); | ||
46 | } | ||
47 | |||
48 | @Test | ||
49 | void emptyClauseTest() { | ||
50 | var dnf = Dnf.builder("Example").parameter(p, ParameterDirection.IN).clause().build(); | ||
51 | |||
52 | assertThat(dnf.toDefinitionString(), is(""" | ||
53 | pred Example(@In p) <-> | ||
54 | <empty>. | ||
55 | """)); | ||
56 | } | ||
57 | |||
58 | @Test | ||
59 | void relationViewPositiveTest() { | ||
60 | var dnf = Dnf.builder("Example").parameter(p).clause(friendView.call(p, q)).build(); | ||
61 | |||
62 | assertThat(dnf.toDefinitionString(), is(""" | ||
63 | pred Example(p) <-> | ||
64 | @RelationView("key") friend(p, q). | ||
65 | """)); | ||
66 | } | ||
67 | |||
68 | @Test | ||
69 | void relationViewNegativeTest() { | ||
70 | var dnf = Dnf.builder("Example") | ||
71 | .parameter(p, ParameterDirection.IN) | ||
72 | .clause(not(friendView.call(p, q))) | ||
73 | .build(); | ||
74 | |||
75 | assertThat(dnf.toDefinitionString(), is(""" | ||
76 | pred Example(@In p) <-> | ||
77 | !(@RelationView("key") friend(p, q)). | ||
78 | """)); | ||
79 | } | ||
80 | |||
81 | @Test | ||
82 | void relationViewTransitiveTest() { | ||
83 | var dnf = Dnf.builder("Example").parameter(p).clause(friendView.callTransitive(p, q)).build(); | ||
84 | |||
85 | assertThat(dnf.toDefinitionString(), is(""" | ||
86 | pred Example(p) <-> | ||
87 | @RelationView("key") friend+(p, q). | ||
88 | """)); | ||
89 | } | ||
90 | |||
91 | @Test | ||
92 | void multipleParametersTest() { | ||
93 | var dnf = Dnf.builder("Example").parameters(p, q).clause(friendView.call(p, q)).build(); | ||
94 | |||
95 | assertThat(dnf.toDefinitionString(), is(""" | ||
96 | pred Example(p, q) <-> | ||
97 | @RelationView("key") friend(p, q). | ||
98 | """)); | ||
99 | } | ||
100 | |||
101 | @Test | ||
102 | void multipleLiteralsTest() { | ||
103 | var dnf = Dnf.builder("Example") | ||
104 | .parameter(p) | ||
105 | .clause( | ||
106 | personView.call(p), | ||
107 | personView.call(q), | ||
108 | friendView.call(p, q) | ||
109 | ) | ||
110 | .build(); | ||
111 | |||
112 | assertThat(dnf.toDefinitionString(), is(""" | ||
113 | pred Example(p) <-> | ||
114 | @RelationView("key") person(p), | ||
115 | @RelationView("key") person(q), | ||
116 | @RelationView("key") friend(p, q). | ||
117 | """)); | ||
118 | } | ||
119 | |||
120 | @Test | ||
121 | void multipleClausesTest() { | ||
122 | var dnf = Dnf.builder("Example") | ||
123 | .parameter(p) | ||
124 | .clause(friendView.call(p, q)) | ||
125 | .clause(friendView.call(q, p)) | ||
126 | .build(); | ||
127 | |||
128 | assertThat(dnf.toDefinitionString(), is(""" | ||
129 | pred Example(p) <-> | ||
130 | @RelationView("key") friend(p, q) | ||
131 | ; | ||
132 | @RelationView("key") friend(q, p). | ||
133 | """)); | ||
134 | } | ||
135 | |||
136 | @Test | ||
137 | void dnfTest() { | ||
138 | var r = Variable.of("r"); | ||
139 | var s = Variable.of("s"); | ||
140 | var called = Dnf.builder("Called").parameters(r, s).clause(friendView.call(r, s)).build(); | ||
141 | var dnf = Dnf.builder("Example") | ||
142 | .parameter(p) | ||
143 | .clause( | ||
144 | personView.call(p), | ||
145 | personView.call(q), | ||
146 | not(called.call(p, q)) | ||
147 | ) | ||
148 | .build(); | ||
149 | |||
150 | assertThat(dnf.toDefinitionString(), is(""" | ||
151 | pred Example(p) <-> | ||
152 | @RelationView("key") person(p), | ||
153 | @RelationView("key") person(q), | ||
154 | !(@Dnf Called(p, q)). | ||
155 | """)); | ||
156 | } | ||
157 | } | ||
diff --git a/subprojects/store-query/src/test/java/tools/refinery/store/query/dnf/TopologicalSortTest.java b/subprojects/store-query/src/test/java/tools/refinery/store/query/dnf/TopologicalSortTest.java new file mode 100644 index 00000000..e22dbb21 --- /dev/null +++ b/subprojects/store-query/src/test/java/tools/refinery/store/query/dnf/TopologicalSortTest.java | |||
@@ -0,0 +1,112 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf; | ||
7 | |||
8 | import org.junit.jupiter.api.Test; | ||
9 | import tools.refinery.store.query.term.NodeVariable; | ||
10 | import tools.refinery.store.query.term.ParameterDirection; | ||
11 | import tools.refinery.store.query.term.Variable; | ||
12 | import tools.refinery.store.query.view.AnySymbolView; | ||
13 | import tools.refinery.store.query.view.KeyOnlyView; | ||
14 | import tools.refinery.store.representation.Symbol; | ||
15 | |||
16 | import java.util.List; | ||
17 | |||
18 | import static org.hamcrest.MatcherAssert.assertThat; | ||
19 | import static org.junit.jupiter.api.Assertions.assertThrows; | ||
20 | import static tools.refinery.store.query.literal.Literals.not; | ||
21 | import static tools.refinery.store.query.tests.QueryMatchers.structurallyEqualTo; | ||
22 | |||
23 | class TopologicalSortTest { | ||
24 | private static final Symbol<Boolean> friend = Symbol.of("friend", 2); | ||
25 | private static final AnySymbolView friendView = new KeyOnlyView<>(friend); | ||
26 | private static final Dnf example = Dnf.of("example", builder -> { | ||
27 | var a = builder.parameter("a", ParameterDirection.IN); | ||
28 | var b = builder.parameter("b", ParameterDirection.IN); | ||
29 | var c = builder.parameter("c", ParameterDirection.OUT); | ||
30 | var d = builder.parameter("d", ParameterDirection.OUT); | ||
31 | builder.clause( | ||
32 | friendView.call(a, b), | ||
33 | friendView.call(b, c), | ||
34 | friendView.call(c, d) | ||
35 | ); | ||
36 | }); | ||
37 | private static final NodeVariable p = Variable.of("p"); | ||
38 | private static final NodeVariable q = Variable.of("q"); | ||
39 | private static final NodeVariable r = Variable.of("r"); | ||
40 | private static final NodeVariable s = Variable.of("s"); | ||
41 | private static final NodeVariable t = Variable.of("t"); | ||
42 | |||
43 | @Test | ||
44 | void topologicalSortTest() { | ||
45 | var actual = Dnf.builder("Actual") | ||
46 | .parameter(p, ParameterDirection.IN) | ||
47 | .parameter(q, ParameterDirection.OUT) | ||
48 | .clause( | ||
49 | not(friendView.call(p, q)), | ||
50 | example.call(p, q, r, s), | ||
51 | example.call(r, t, q, s), | ||
52 | friendView.call(r, t) | ||
53 | ) | ||
54 | .build(); | ||
55 | |||
56 | assertThat(actual, structurallyEqualTo( | ||
57 | List.of( | ||
58 | new SymbolicParameter(p, ParameterDirection.IN), | ||
59 | new SymbolicParameter(q, ParameterDirection.OUT) | ||
60 | ), | ||
61 | List.of( | ||
62 | List.of( | ||
63 | friendView.call(r, t), | ||
64 | example.call(r, t, q, s), | ||
65 | not(friendView.call(p, q)), | ||
66 | example.call(p, q, r, s) | ||
67 | ) | ||
68 | ) | ||
69 | )); | ||
70 | } | ||
71 | |||
72 | @Test | ||
73 | void missingInputTest() { | ||
74 | var builder = Dnf.builder("Actual") | ||
75 | .parameter(p, ParameterDirection.OUT) | ||
76 | .parameter(q, ParameterDirection.OUT) | ||
77 | .clause( | ||
78 | not(friendView.call(p, q)), | ||
79 | example.call(p, q, r, s), | ||
80 | example.call(r, t, q, s), | ||
81 | friendView.call(r, t) | ||
82 | ); | ||
83 | assertThrows(IllegalArgumentException.class, builder::build); | ||
84 | } | ||
85 | |||
86 | @Test | ||
87 | void missingVariableTest() { | ||
88 | var builder = Dnf.builder("Actual") | ||
89 | .parameter(p, ParameterDirection.IN) | ||
90 | .parameter(q, ParameterDirection.OUT) | ||
91 | .clause( | ||
92 | not(friendView.call(p, q)), | ||
93 | example.call(p, q, r, s), | ||
94 | example.call(r, t, q, s) | ||
95 | ); | ||
96 | assertThrows(IllegalArgumentException.class, builder::build); | ||
97 | } | ||
98 | |||
99 | @Test | ||
100 | void circularDependencyTest() { | ||
101 | var builder = Dnf.builder("Actual") | ||
102 | .parameter(p, ParameterDirection.IN) | ||
103 | .parameter(q, ParameterDirection.OUT) | ||
104 | .clause( | ||
105 | not(friendView.call(p, q)), | ||
106 | example.call(p, q, r, s), | ||
107 | example.call(r, t, q, s), | ||
108 | example.call(p, q, r, t) | ||
109 | ); | ||
110 | assertThrows(IllegalArgumentException.class, builder::build); | ||
111 | } | ||
112 | } | ||
diff --git a/subprojects/store-query/src/test/java/tools/refinery/store/query/dnf/VariableDirectionTest.java b/subprojects/store-query/src/test/java/tools/refinery/store/query/dnf/VariableDirectionTest.java new file mode 100644 index 00000000..c52d26b2 --- /dev/null +++ b/subprojects/store-query/src/test/java/tools/refinery/store/query/dnf/VariableDirectionTest.java | |||
@@ -0,0 +1,428 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.dnf; | ||
7 | |||
8 | import org.junit.jupiter.params.ParameterizedTest; | ||
9 | import org.junit.jupiter.params.provider.Arguments; | ||
10 | import org.junit.jupiter.params.provider.MethodSource; | ||
11 | import tools.refinery.store.query.literal.BooleanLiteral; | ||
12 | import tools.refinery.store.query.literal.Literal; | ||
13 | import tools.refinery.store.query.term.DataVariable; | ||
14 | import tools.refinery.store.query.term.NodeVariable; | ||
15 | import tools.refinery.store.query.term.ParameterDirection; | ||
16 | import tools.refinery.store.query.term.Variable; | ||
17 | import tools.refinery.store.query.view.AnySymbolView; | ||
18 | import tools.refinery.store.query.view.FunctionView; | ||
19 | import tools.refinery.store.query.view.KeyOnlyView; | ||
20 | import tools.refinery.store.representation.Symbol; | ||
21 | |||
22 | import java.util.ArrayList; | ||
23 | import java.util.List; | ||
24 | import java.util.stream.Stream; | ||
25 | |||
26 | import static org.hamcrest.MatcherAssert.assertThat; | ||
27 | import static org.hamcrest.Matchers.hasItem; | ||
28 | import static org.hamcrest.Matchers.not; | ||
29 | import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; | ||
30 | import static org.junit.jupiter.api.Assertions.assertThrows; | ||
31 | import static tools.refinery.store.query.literal.Literals.assume; | ||
32 | import static tools.refinery.store.query.literal.Literals.not; | ||
33 | import static tools.refinery.store.query.term.int_.IntTerms.*; | ||
34 | |||
35 | class VariableDirectionTest { | ||
36 | private static final Symbol<Boolean> person = Symbol.of("Person", 1); | ||
37 | private static final Symbol<Boolean> friend = Symbol.of("friend", 2); | ||
38 | private static final Symbol<Integer> age = Symbol.of("age", 1, Integer.class); | ||
39 | private static final AnySymbolView personView = new KeyOnlyView<>(person); | ||
40 | private static final AnySymbolView friendView = new KeyOnlyView<>(friend); | ||
41 | private static final FunctionView<Integer> ageView = new FunctionView<>(age); | ||
42 | private static final NodeVariable p = Variable.of("p"); | ||
43 | private static final NodeVariable q = Variable.of("q"); | ||
44 | private static final DataVariable<Integer> x = Variable.of("x", Integer.class); | ||
45 | private static final DataVariable<Integer> y = Variable.of("y", Integer.class); | ||
46 | private static final DataVariable<Integer> z = Variable.of("z", Integer.class); | ||
47 | |||
48 | @ParameterizedTest | ||
49 | @MethodSource("clausesWithVariableInput") | ||
50 | void unboundOutVariableTest(List<? extends Literal> clause) { | ||
51 | var builder = Dnf.builder().parameter(p, ParameterDirection.OUT).clause(clause); | ||
52 | assertThrows(IllegalArgumentException.class, builder::build); | ||
53 | } | ||
54 | |||
55 | @ParameterizedTest | ||
56 | @MethodSource("clausesWithVariableInput") | ||
57 | void unboundInVariableTest(List<? extends Literal> clause) { | ||
58 | var builder = Dnf.builder().parameter(p, ParameterDirection.IN).clause(clause); | ||
59 | var dnf = assertDoesNotThrow(builder::build); | ||
60 | var clauses = dnf.getClauses(); | ||
61 | if (clauses.size() > 0) { | ||
62 | assertThat(clauses.get(0).positiveVariables(), hasItem(p)); | ||
63 | } | ||
64 | } | ||
65 | |||
66 | @ParameterizedTest | ||
67 | @MethodSource("clausesWithVariableInput") | ||
68 | void boundPrivateVariableTest(List<? extends Literal> clause) { | ||
69 | var clauseWithBinding = new ArrayList<Literal>(clause); | ||
70 | clauseWithBinding.add(personView.call(p)); | ||
71 | var builder = Dnf.builder().clause(clauseWithBinding); | ||
72 | var dnf = assertDoesNotThrow(builder::build); | ||
73 | var clauses = dnf.getClauses(); | ||
74 | if (clauses.size() > 0) { | ||
75 | assertThat(clauses.get(0).positiveVariables(), hasItem(p)); | ||
76 | } | ||
77 | } | ||
78 | |||
79 | static Stream<Arguments> clausesWithVariableInput() { | ||
80 | return Stream.concat( | ||
81 | clausesNotBindingVariable(), | ||
82 | literalToClauseArgumentStream(literalsWithRequiredVariableInput()) | ||
83 | ); | ||
84 | } | ||
85 | |||
86 | @ParameterizedTest | ||
87 | @MethodSource("clausesNotBindingVariable") | ||
88 | void unboundPrivateVariableTest(List<? extends Literal> clause) { | ||
89 | var builder = Dnf.builder().clause(clause); | ||
90 | var dnf = assertDoesNotThrow(builder::build); | ||
91 | var clauses = dnf.getClauses(); | ||
92 | if (clauses.size() > 0) { | ||
93 | assertThat(clauses.get(0).positiveVariables(), not(hasItem(p))); | ||
94 | } | ||
95 | } | ||
96 | |||
97 | @ParameterizedTest | ||
98 | @MethodSource("clausesNotBindingVariable") | ||
99 | void unboundByEquivalencePrivateVariableTest(List<? extends Literal> clause) { | ||
100 | var r = Variable.of("r"); | ||
101 | var clauseWithEquivalence = new ArrayList<Literal>(clause); | ||
102 | clauseWithEquivalence.add(r.isEquivalent(p)); | ||
103 | var builder = Dnf.builder().clause(clauseWithEquivalence); | ||
104 | assertThrows(IllegalArgumentException.class, builder::build); | ||
105 | } | ||
106 | |||
107 | static Stream<Arguments> clausesNotBindingVariable() { | ||
108 | return Stream.concat( | ||
109 | Stream.of( | ||
110 | Arguments.of(List.of()), | ||
111 | Arguments.of(List.of(BooleanLiteral.TRUE)), | ||
112 | Arguments.of(List.of(BooleanLiteral.FALSE)) | ||
113 | ), | ||
114 | literalToClauseArgumentStream(literalsWithPrivateVariable()) | ||
115 | ); | ||
116 | } | ||
117 | |||
118 | @ParameterizedTest | ||
119 | @MethodSource("literalsWithPrivateVariable") | ||
120 | void unboundTwicePrivateVariableTest(Literal literal) { | ||
121 | var builder = Dnf.builder().clause(not(personView.call(p)), literal); | ||
122 | assertThrows(IllegalArgumentException.class, builder::build); | ||
123 | } | ||
124 | |||
125 | @ParameterizedTest | ||
126 | @MethodSource("literalsWithPrivateVariable") | ||
127 | void unboundTwiceByEquivalencePrivateVariableTest(Literal literal) { | ||
128 | var r = Variable.of("r"); | ||
129 | var builder = Dnf.builder().clause(not(personView.call(r)), r.isEquivalent(p), literal); | ||
130 | assertThrows(IllegalArgumentException.class, builder::build); | ||
131 | } | ||
132 | |||
133 | static Stream<Arguments> literalsWithPrivateVariable() { | ||
134 | var dnfWithOutput = Dnf.builder("WithOutput") | ||
135 | .parameter(p, ParameterDirection.OUT) | ||
136 | .parameter(q, ParameterDirection.OUT) | ||
137 | .clause(friendView.call(p, q)) | ||
138 | .build(); | ||
139 | var dnfWithOutputToAggregate = Dnf.builder("WithOutputToAggregate") | ||
140 | .parameter(p, ParameterDirection.OUT) | ||
141 | .parameter(q, ParameterDirection.OUT) | ||
142 | .parameter(x, ParameterDirection.OUT) | ||
143 | .clause( | ||
144 | friendView.call(p, q), | ||
145 | ageView.call(q, x) | ||
146 | ) | ||
147 | .build(); | ||
148 | |||
149 | return Stream.of( | ||
150 | Arguments.of(not(friendView.call(p, q))), | ||
151 | Arguments.of(y.assign(friendView.count(p, q))), | ||
152 | Arguments.of(y.assign(ageView.aggregate(INT_SUM, p))), | ||
153 | Arguments.of(not(dnfWithOutput.call(p, q))), | ||
154 | Arguments.of(y.assign(dnfWithOutput.count(p, q))), | ||
155 | Arguments.of(y.assign(dnfWithOutputToAggregate.aggregateBy(z, INT_SUM, p, q, z))) | ||
156 | ); | ||
157 | } | ||
158 | |||
159 | @ParameterizedTest | ||
160 | @MethodSource("literalsWithRequiredVariableInput") | ||
161 | void unboundPrivateVariableTest(Literal literal) { | ||
162 | var builder = Dnf.builder().clause(literal); | ||
163 | assertThrows(IllegalArgumentException.class, builder::build); | ||
164 | } | ||
165 | |||
166 | @ParameterizedTest | ||
167 | @MethodSource("literalsWithRequiredVariableInput") | ||
168 | void boundPrivateVariableInputTest(Literal literal) { | ||
169 | var builder = Dnf.builder().clause(personView.call(p), literal); | ||
170 | var dnf = assertDoesNotThrow(builder::build); | ||
171 | assertThat(dnf.getClauses().get(0).positiveVariables(), hasItem(p)); | ||
172 | } | ||
173 | |||
174 | static Stream<Arguments> literalsWithRequiredVariableInput() { | ||
175 | var dnfWithInput = Dnf.builder("WithInput") | ||
176 | .parameter(p, ParameterDirection.IN) | ||
177 | .parameter(q, ParameterDirection.OUT) | ||
178 | .clause(friendView.call(p, q)).build(); | ||
179 | var dnfWithInputToAggregate = Dnf.builder("WithInputToAggregate") | ||
180 | .parameter(p, ParameterDirection.IN) | ||
181 | .parameter(q, ParameterDirection.OUT) | ||
182 | .parameter(x, ParameterDirection.OUT) | ||
183 | .clause( | ||
184 | friendView.call(p, q), | ||
185 | ageView.call(q, x) | ||
186 | ).build(); | ||
187 | |||
188 | return Stream.of( | ||
189 | Arguments.of(dnfWithInput.call(p, q)), | ||
190 | Arguments.of(dnfWithInput.call(p, p)), | ||
191 | Arguments.of(not(dnfWithInput.call(p, q))), | ||
192 | Arguments.of(not(dnfWithInput.call(p, p))), | ||
193 | Arguments.of(y.assign(dnfWithInput.count(p, q))), | ||
194 | Arguments.of(y.assign(dnfWithInput.count(p, p))), | ||
195 | Arguments.of(y.assign(dnfWithInputToAggregate.aggregateBy(z, INT_SUM, p, q, z))), | ||
196 | Arguments.of(y.assign(dnfWithInputToAggregate.aggregateBy(z, INT_SUM, p, p, z))) | ||
197 | ); | ||
198 | } | ||
199 | |||
200 | @ParameterizedTest | ||
201 | @MethodSource("literalsWithVariableOutput") | ||
202 | void boundParameterTest(Literal literal) { | ||
203 | var builder = Dnf.builder().parameter(p, ParameterDirection.OUT).clause(literal); | ||
204 | var dnf = assertDoesNotThrow(builder::build); | ||
205 | assertThat(dnf.getClauses().get(0).positiveVariables(), hasItem(p)); | ||
206 | } | ||
207 | |||
208 | @ParameterizedTest | ||
209 | @MethodSource("literalsWithVariableOutput") | ||
210 | void boundTwiceParameterTest(Literal literal) { | ||
211 | var builder = Dnf.builder().parameter(p, ParameterDirection.IN).clause(literal); | ||
212 | var dnf = assertDoesNotThrow(builder::build); | ||
213 | assertThat(dnf.getClauses().get(0).positiveVariables(), hasItem(p)); | ||
214 | } | ||
215 | |||
216 | @ParameterizedTest | ||
217 | @MethodSource("literalsWithVariableOutput") | ||
218 | void boundPrivateVariableOutputTest(Literal literal) { | ||
219 | var dnfWithInput = Dnf.builder("WithInput") | ||
220 | .parameter(p, ParameterDirection.IN) | ||
221 | .clause(personView.call(p)) | ||
222 | .build(); | ||
223 | var builder = Dnf.builder().clause(dnfWithInput.call(p), literal); | ||
224 | var dnf = assertDoesNotThrow(builder::build); | ||
225 | assertThat(dnf.getClauses().get(0).positiveVariables(), hasItem(p)); | ||
226 | } | ||
227 | |||
228 | @ParameterizedTest | ||
229 | @MethodSource("literalsWithVariableOutput") | ||
230 | void boundTwicePrivateVariableOutputTest(Literal literal) { | ||
231 | var builder = Dnf.builder().clause(personView.call(p), literal); | ||
232 | var dnf = assertDoesNotThrow(builder::build); | ||
233 | assertThat(dnf.getClauses().get(0).positiveVariables(), hasItem(p)); | ||
234 | } | ||
235 | |||
236 | static Stream<Arguments> literalsWithVariableOutput() { | ||
237 | var dnfWithOutput = Dnf.builder("WithOutput") | ||
238 | .parameter(p, ParameterDirection.OUT) | ||
239 | .parameter(q, ParameterDirection.OUT) | ||
240 | .clause(friendView.call(p, q)) | ||
241 | .build(); | ||
242 | |||
243 | return Stream.of( | ||
244 | Arguments.of(friendView.call(p, q)), | ||
245 | Arguments.of(dnfWithOutput.call(p, q)) | ||
246 | ); | ||
247 | } | ||
248 | |||
249 | @ParameterizedTest | ||
250 | @MethodSource("clausesWithDataVariableInput") | ||
251 | void unboundOutDataVariableTest(List<? extends Literal> clause) { | ||
252 | var builder = Dnf.builder().parameter(x, ParameterDirection.OUT).clause(clause); | ||
253 | assertThrows(IllegalArgumentException.class, builder::build); | ||
254 | } | ||
255 | |||
256 | @ParameterizedTest | ||
257 | @MethodSource("clausesWithDataVariableInput") | ||
258 | void unboundInDataVariableTest(List<? extends Literal> clause) { | ||
259 | var builder = Dnf.builder().parameter(x, ParameterDirection.IN).clause(clause); | ||
260 | var dnf = assertDoesNotThrow(builder::build); | ||
261 | var clauses = dnf.getClauses(); | ||
262 | if (clauses.size() > 0) { | ||
263 | assertThat(clauses.get(0).positiveVariables(), hasItem(x)); | ||
264 | } | ||
265 | } | ||
266 | |||
267 | @ParameterizedTest | ||
268 | @MethodSource("clausesWithDataVariableInput") | ||
269 | void boundPrivateDataVariableTest(List<? extends Literal> clause) { | ||
270 | var clauseWithBinding = new ArrayList<Literal>(clause); | ||
271 | clauseWithBinding.add(x.assign(constant(27))); | ||
272 | var builder = Dnf.builder().clause(clauseWithBinding); | ||
273 | var dnf = assertDoesNotThrow(builder::build); | ||
274 | var clauses = dnf.getClauses(); | ||
275 | if (clauses.size() > 0) { | ||
276 | assertThat(clauses.get(0).positiveVariables(), hasItem(x)); | ||
277 | } | ||
278 | } | ||
279 | |||
280 | static Stream<Arguments> clausesWithDataVariableInput() { | ||
281 | return Stream.concat( | ||
282 | clausesNotBindingDataVariable(), | ||
283 | literalToClauseArgumentStream(literalsWithRequiredDataVariableInput()) | ||
284 | ); | ||
285 | } | ||
286 | |||
287 | @ParameterizedTest | ||
288 | @MethodSource("clausesNotBindingDataVariable") | ||
289 | void unboundPrivateDataVariableTest(List<? extends Literal> clause) { | ||
290 | var builder = Dnf.builder().clause(clause); | ||
291 | var dnf = assertDoesNotThrow(builder::build); | ||
292 | var clauses = dnf.getClauses(); | ||
293 | if (clauses.size() > 0) { | ||
294 | assertThat(clauses.get(0).positiveVariables(), not(hasItem(x))); | ||
295 | } | ||
296 | } | ||
297 | |||
298 | static Stream<Arguments> clausesNotBindingDataVariable() { | ||
299 | return Stream.concat( | ||
300 | Stream.of( | ||
301 | Arguments.of(List.of()), | ||
302 | Arguments.of(List.of(BooleanLiteral.TRUE)), | ||
303 | Arguments.of(List.of(BooleanLiteral.FALSE)) | ||
304 | ), | ||
305 | literalToClauseArgumentStream(literalsWithPrivateDataVariable()) | ||
306 | ); | ||
307 | } | ||
308 | |||
309 | @ParameterizedTest | ||
310 | @MethodSource("literalsWithPrivateDataVariable") | ||
311 | void unboundTwicePrivateDataVariableTest(Literal literal) { | ||
312 | var builder = Dnf.builder().clause(not(ageView.call(p, x)), literal); | ||
313 | assertThrows(IllegalArgumentException.class, builder::build); | ||
314 | } | ||
315 | |||
316 | static Stream<Arguments> literalsWithPrivateDataVariable() { | ||
317 | var dnfWithOutput = Dnf.builder("WithDataOutput") | ||
318 | .parameter(y, ParameterDirection.OUT) | ||
319 | .parameter(q, ParameterDirection.OUT) | ||
320 | .clause(ageView.call(q, y)) | ||
321 | .build(); | ||
322 | |||
323 | return Stream.of( | ||
324 | Arguments.of(not(ageView.call(q, x))), | ||
325 | Arguments.of(y.assign(ageView.count(q, x))), | ||
326 | Arguments.of(not(dnfWithOutput.call(x, q))) | ||
327 | ); | ||
328 | } | ||
329 | |||
330 | @ParameterizedTest | ||
331 | @MethodSource("literalsWithRequiredDataVariableInput") | ||
332 | void unboundPrivateDataVariableTest(Literal literal) { | ||
333 | var builder = Dnf.builder().clause(literal); | ||
334 | assertThrows(IllegalArgumentException.class, builder::build); | ||
335 | } | ||
336 | |||
337 | static Stream<Arguments> literalsWithRequiredDataVariableInput() { | ||
338 | var dnfWithInput = Dnf.builder("WithDataInput") | ||
339 | .parameter(y, ParameterDirection.IN) | ||
340 | .parameter(q, ParameterDirection.OUT) | ||
341 | .clause(ageView.call(q, x)) | ||
342 | .build(); | ||
343 | // We are passing {@code y} to the parameter named {@code right} of {@code greaterEq}. | ||
344 | @SuppressWarnings("SuspiciousNameCombination") | ||
345 | var dnfWithInputToAggregate = Dnf.builder("WithDataInputToAggregate") | ||
346 | .parameter(y, ParameterDirection.IN) | ||
347 | .parameter(q, ParameterDirection.OUT) | ||
348 | .parameter(x, ParameterDirection.OUT) | ||
349 | .clause( | ||
350 | friendView.call(p, q), | ||
351 | ageView.call(q, x), | ||
352 | assume(greaterEq(x, y)) | ||
353 | ) | ||
354 | .build(); | ||
355 | |||
356 | return Stream.of( | ||
357 | Arguments.of(dnfWithInput.call(x, q)), | ||
358 | Arguments.of(not(dnfWithInput.call(x, q))), | ||
359 | Arguments.of(y.assign(dnfWithInput.count(x, q))), | ||
360 | Arguments.of(y.assign(dnfWithInputToAggregate.aggregateBy(z, INT_SUM, x, q, z))) | ||
361 | ); | ||
362 | } | ||
363 | |||
364 | @ParameterizedTest | ||
365 | @MethodSource("literalsWithDataVariableOutput") | ||
366 | void boundDataParameterTest(Literal literal) { | ||
367 | var builder = Dnf.builder().parameter(x, ParameterDirection.OUT).clause(literal); | ||
368 | var dnf = assertDoesNotThrow(builder::build); | ||
369 | assertThat(dnf.getClauses().get(0).positiveVariables(), hasItem(x)); | ||
370 | } | ||
371 | |||
372 | @ParameterizedTest | ||
373 | @MethodSource("literalsWithDataVariableOutput") | ||
374 | void boundTwiceDataParameterTest(Literal literal) { | ||
375 | var builder = Dnf.builder().parameter(x, ParameterDirection.IN).clause(literal); | ||
376 | assertThrows(IllegalArgumentException.class, builder::build); | ||
377 | } | ||
378 | |||
379 | @ParameterizedTest | ||
380 | @MethodSource("literalsWithDataVariableOutput") | ||
381 | void boundPrivateDataVariableOutputTest(Literal literal) { | ||
382 | var dnfWithInput = Dnf.builder("WithInput") | ||
383 | .parameter(x, ParameterDirection.IN) | ||
384 | .clause(assume(greaterEq(x, constant(24)))) | ||
385 | .build(); | ||
386 | var builder = Dnf.builder().clause(dnfWithInput.call(x), literal); | ||
387 | var dnf = assertDoesNotThrow(builder::build); | ||
388 | assertThat(dnf.getClauses().get(0).positiveVariables(), hasItem(x)); | ||
389 | } | ||
390 | |||
391 | @ParameterizedTest | ||
392 | @MethodSource("literalsWithDataVariableOutput") | ||
393 | void boundTwicePrivateDataVariableOutputTest(Literal literal) { | ||
394 | var builder = Dnf.builder().clause(x.assign(constant(27)), literal); | ||
395 | assertThrows(IllegalArgumentException.class, builder::build); | ||
396 | } | ||
397 | |||
398 | static Stream<Arguments> literalsWithDataVariableOutput() { | ||
399 | var dnfWithOutput = Dnf.builder("WithOutput") | ||
400 | .parameter(q, ParameterDirection.OUT) | ||
401 | .clause(personView.call(q)) | ||
402 | .build(); | ||
403 | var dnfWithDataOutput = Dnf.builder("WithDataOutput") | ||
404 | .parameter(y, ParameterDirection.OUT) | ||
405 | .parameter(q, ParameterDirection.OUT) | ||
406 | .clause(ageView.call(q, y)) | ||
407 | .build(); | ||
408 | var dnfWithOutputToAggregate = Dnf.builder("WithDataOutputToAggregate") | ||
409 | .parameter(q, ParameterDirection.OUT) | ||
410 | .parameter(y, ParameterDirection.OUT) | ||
411 | .clause(ageView.call(q, y)) | ||
412 | .build(); | ||
413 | |||
414 | return Stream.of( | ||
415 | Arguments.of(x.assign(constant(24))), | ||
416 | Arguments.of(ageView.call(q, x)), | ||
417 | Arguments.of(x.assign(personView.count(q))), | ||
418 | Arguments.of(x.assign(ageView.aggregate(INT_SUM, q))), | ||
419 | Arguments.of(dnfWithDataOutput.call(x, q)), | ||
420 | Arguments.of(x.assign(dnfWithOutput.count(q))), | ||
421 | Arguments.of(x.assign(dnfWithOutputToAggregate.aggregateBy(z, INT_SUM, q, z))) | ||
422 | ); | ||
423 | } | ||
424 | |||
425 | private static Stream<Arguments> literalToClauseArgumentStream(Stream<Arguments> literalArgumentsStream) { | ||
426 | return literalArgumentsStream.map(arguments -> Arguments.of(List.of(arguments.get()[0]))); | ||
427 | } | ||
428 | } | ||
diff --git a/subprojects/store-query/src/test/java/tools/refinery/store/query/literal/AggregationLiteralTest.java b/subprojects/store-query/src/test/java/tools/refinery/store/query/literal/AggregationLiteralTest.java new file mode 100644 index 00000000..35910e08 --- /dev/null +++ b/subprojects/store-query/src/test/java/tools/refinery/store/query/literal/AggregationLiteralTest.java | |||
@@ -0,0 +1,88 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.literal; | ||
7 | |||
8 | import org.junit.jupiter.api.Test; | ||
9 | import tools.refinery.store.query.Constraint; | ||
10 | import tools.refinery.store.query.dnf.Dnf; | ||
11 | import tools.refinery.store.query.term.*; | ||
12 | |||
13 | import java.util.List; | ||
14 | import java.util.Set; | ||
15 | |||
16 | import static org.hamcrest.MatcherAssert.assertThat; | ||
17 | import static org.hamcrest.Matchers.containsInAnyOrder; | ||
18 | import static org.hamcrest.Matchers.empty; | ||
19 | import static org.junit.jupiter.api.Assertions.assertAll; | ||
20 | import static org.junit.jupiter.api.Assertions.assertThrows; | ||
21 | import static tools.refinery.store.query.literal.Literals.not; | ||
22 | import static tools.refinery.store.query.term.int_.IntTerms.INT_SUM; | ||
23 | import static tools.refinery.store.query.term.int_.IntTerms.constant; | ||
24 | |||
25 | class AggregationLiteralTest { | ||
26 | private static final NodeVariable p = Variable.of("p"); | ||
27 | private static final DataVariable<Integer> x = Variable.of("x", Integer.class); | ||
28 | private static final DataVariable<Integer> y = Variable.of("y", Integer.class); | ||
29 | private static final DataVariable<Integer> z = Variable.of("z", Integer.class); | ||
30 | private static final Constraint fakeConstraint = new Constraint() { | ||
31 | @Override | ||
32 | public String name() { | ||
33 | return getClass().getName(); | ||
34 | } | ||
35 | |||
36 | @Override | ||
37 | public List<Parameter> getParameters() { | ||
38 | return List.of( | ||
39 | new Parameter(null, ParameterDirection.OUT), | ||
40 | new Parameter(Integer.class, ParameterDirection.OUT) | ||
41 | ); | ||
42 | } | ||
43 | }; | ||
44 | |||
45 | @Test | ||
46 | void parameterDirectionTest() { | ||
47 | var literal = x.assign(fakeConstraint.aggregateBy(y, INT_SUM, p, y)); | ||
48 | assertAll( | ||
49 | () -> assertThat(literal.getOutputVariables(), containsInAnyOrder(x)), | ||
50 | () -> assertThat(literal.getInputVariables(Set.of()), empty()), | ||
51 | () -> assertThat(literal.getInputVariables(Set.of(p)), containsInAnyOrder(p)), | ||
52 | () -> assertThat(literal.getPrivateVariables(Set.of()), containsInAnyOrder(p, y)), | ||
53 | () -> assertThat(literal.getPrivateVariables(Set.of(p)), containsInAnyOrder(y)) | ||
54 | ); | ||
55 | } | ||
56 | |||
57 | @Test | ||
58 | void missingAggregationVariableTest() { | ||
59 | var aggregation = fakeConstraint.aggregateBy(y, INT_SUM, p, z); | ||
60 | assertThrows(IllegalArgumentException.class, () -> x.assign(aggregation)); | ||
61 | } | ||
62 | |||
63 | @Test | ||
64 | void circularAggregationVariableTest() { | ||
65 | var aggregation = fakeConstraint.aggregateBy(x, INT_SUM, p, x); | ||
66 | assertThrows(IllegalArgumentException.class, () -> x.assign(aggregation)); | ||
67 | } | ||
68 | |||
69 | @Test | ||
70 | void unboundTwiceVariableTest() { | ||
71 | var builder = Dnf.builder() | ||
72 | .clause( | ||
73 | not(fakeConstraint.call(p, y)), | ||
74 | x.assign(fakeConstraint.aggregateBy(y, INT_SUM, p, y)) | ||
75 | ); | ||
76 | assertThrows(IllegalArgumentException.class, builder::build); | ||
77 | } | ||
78 | |||
79 | @Test | ||
80 | void unboundBoundVariableTest() { | ||
81 | var builder = Dnf.builder() | ||
82 | .clause( | ||
83 | y.assign(constant(27)), | ||
84 | x.assign(fakeConstraint.aggregateBy(y, INT_SUM, p, y)) | ||
85 | ); | ||
86 | assertThrows(IllegalArgumentException.class, builder::build); | ||
87 | } | ||
88 | } | ||
diff --git a/subprojects/store-query/src/test/java/tools/refinery/store/query/literal/CallLiteralTest.java b/subprojects/store-query/src/test/java/tools/refinery/store/query/literal/CallLiteralTest.java new file mode 100644 index 00000000..a01c6586 --- /dev/null +++ b/subprojects/store-query/src/test/java/tools/refinery/store/query/literal/CallLiteralTest.java | |||
@@ -0,0 +1,94 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.literal; | ||
7 | |||
8 | import org.junit.jupiter.api.Test; | ||
9 | import tools.refinery.store.query.Constraint; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | import tools.refinery.store.query.term.Parameter; | ||
12 | import tools.refinery.store.query.term.ParameterDirection; | ||
13 | import tools.refinery.store.query.term.Variable; | ||
14 | |||
15 | import java.util.List; | ||
16 | import java.util.Set; | ||
17 | |||
18 | import static org.hamcrest.MatcherAssert.assertThat; | ||
19 | import static org.hamcrest.Matchers.containsInAnyOrder; | ||
20 | import static org.hamcrest.Matchers.empty; | ||
21 | import static org.junit.jupiter.api.Assertions.assertAll; | ||
22 | import static tools.refinery.store.query.literal.Literals.not; | ||
23 | |||
24 | class CallLiteralTest { | ||
25 | private static final NodeVariable p = Variable.of("p"); | ||
26 | private static final NodeVariable q = Variable.of("q"); | ||
27 | private static final NodeVariable r = Variable.of("r"); | ||
28 | private static final NodeVariable s = Variable.of("s"); | ||
29 | |||
30 | private static final Constraint fakeConstraint = new Constraint() { | ||
31 | @Override | ||
32 | public String name() { | ||
33 | return getClass().getName(); | ||
34 | } | ||
35 | |||
36 | @Override | ||
37 | public List<Parameter> getParameters() { | ||
38 | return List.of( | ||
39 | new Parameter(null, ParameterDirection.IN), | ||
40 | new Parameter(null, ParameterDirection.IN), | ||
41 | new Parameter(null, ParameterDirection.OUT), | ||
42 | new Parameter(null, ParameterDirection.OUT) | ||
43 | ); | ||
44 | } | ||
45 | }; | ||
46 | |||
47 | @Test | ||
48 | void notRepeatedPositiveDirectionTest() { | ||
49 | var literal = fakeConstraint.call(p, q, r, s); | ||
50 | assertAll( | ||
51 | () -> assertThat(literal.getOutputVariables(), containsInAnyOrder(r, s)), | ||
52 | () -> assertThat(literal.getInputVariables(Set.of()), containsInAnyOrder(p, q)), | ||
53 | () -> assertThat(literal.getInputVariables(Set.of(p, q, r)), containsInAnyOrder(p, q)), | ||
54 | () -> assertThat(literal.getPrivateVariables(Set.of()), empty()), | ||
55 | () -> assertThat(literal.getPrivateVariables(Set.of(p, q, r)), empty()) | ||
56 | ); | ||
57 | } | ||
58 | |||
59 | @Test | ||
60 | void notRepeatedNegativeDirectionTest() { | ||
61 | var literal = not(fakeConstraint.call(p, q, r, s)); | ||
62 | assertAll( | ||
63 | () -> assertThat(literal.getOutputVariables(), empty()), | ||
64 | () -> assertThat(literal.getInputVariables(Set.of()), containsInAnyOrder(p, q)), | ||
65 | () -> assertThat(literal.getInputVariables(Set.of(p, q, r)), containsInAnyOrder(p, q, r)), | ||
66 | () -> assertThat(literal.getPrivateVariables(Set.of()), containsInAnyOrder(r, s)), | ||
67 | () -> assertThat(literal.getPrivateVariables(Set.of(p, q, r)), containsInAnyOrder(s)) | ||
68 | ); | ||
69 | } | ||
70 | |||
71 | @Test | ||
72 | void repeatedPositiveDirectionTest() { | ||
73 | var literal = fakeConstraint.call(p, p, q, q); | ||
74 | assertAll( | ||
75 | () -> assertThat(literal.getOutputVariables(), containsInAnyOrder(q)), | ||
76 | () -> assertThat(literal.getInputVariables(Set.of()), containsInAnyOrder(p)), | ||
77 | () -> assertThat(literal.getInputVariables(Set.of(p, q)), containsInAnyOrder(p)), | ||
78 | () -> assertThat(literal.getPrivateVariables(Set.of()), empty()), | ||
79 | () -> assertThat(literal.getPrivateVariables(Set.of(p, q)), empty()) | ||
80 | ); | ||
81 | } | ||
82 | |||
83 | @Test | ||
84 | void repeatedNegativeDirectionTest() { | ||
85 | var literal = not(fakeConstraint.call(p, p, q, q)); | ||
86 | assertAll( | ||
87 | () -> assertThat(literal.getOutputVariables(), empty()), | ||
88 | () -> assertThat(literal.getInputVariables(Set.of()), containsInAnyOrder(p)), | ||
89 | () -> assertThat(literal.getInputVariables(Set.of(p, q)), containsInAnyOrder(p, q)), | ||
90 | () -> assertThat(literal.getPrivateVariables(Set.of()), containsInAnyOrder(q)), | ||
91 | () -> assertThat(literal.getPrivateVariables(Set.of(p, q)), empty()) | ||
92 | ); | ||
93 | } | ||
94 | } | ||
diff --git a/subprojects/store-query/src/test/java/tools/refinery/store/query/term/TermSubstitutionTest.java b/subprojects/store-query/src/test/java/tools/refinery/store/query/term/TermSubstitutionTest.java new file mode 100644 index 00000000..1cbc101a --- /dev/null +++ b/subprojects/store-query/src/test/java/tools/refinery/store/query/term/TermSubstitutionTest.java | |||
@@ -0,0 +1,97 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term; | ||
7 | |||
8 | import org.junit.jupiter.api.Assertions; | ||
9 | import org.junit.jupiter.params.ParameterizedTest; | ||
10 | import org.junit.jupiter.params.provider.Arguments; | ||
11 | import org.junit.jupiter.params.provider.MethodSource; | ||
12 | import tools.refinery.store.query.dnf.Dnf; | ||
13 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | ||
14 | import tools.refinery.store.query.substitution.Substitution; | ||
15 | import tools.refinery.store.query.term.bool.BoolTerms; | ||
16 | import tools.refinery.store.query.term.int_.IntTerms; | ||
17 | import tools.refinery.store.query.term.real.RealTerms; | ||
18 | import tools.refinery.store.query.term.uppercardinality.UpperCardinalityTerms; | ||
19 | import tools.refinery.store.representation.cardinality.UpperCardinality; | ||
20 | |||
21 | import java.util.List; | ||
22 | import java.util.stream.Stream; | ||
23 | |||
24 | class TermSubstitutionTest { | ||
25 | private final static DataVariable<Integer> intA = Variable.of("intA", Integer.class); | ||
26 | private final static DataVariable<Integer> intB = Variable.of("intB", Integer.class); | ||
27 | private final static DataVariable<Double> realA = Variable.of("realA", Double.class); | ||
28 | private final static DataVariable<Double> realB = Variable.of("realB", Double.class); | ||
29 | private final static DataVariable<Boolean> boolA = Variable.of("boolA", Boolean.class); | ||
30 | private final static DataVariable<Boolean> boolB = Variable.of("boolB", Boolean.class); | ||
31 | private final static DataVariable<UpperCardinality> upperCardinalityA = Variable.of("upperCardinalityA", | ||
32 | UpperCardinality.class); | ||
33 | private final static DataVariable<UpperCardinality> upperCardinalityB = Variable.of("upperCardinalityB", | ||
34 | UpperCardinality.class); | ||
35 | private final static Substitution substitution = Substitution.builder() | ||
36 | .put(intA, intB) | ||
37 | .put(intB, intA) | ||
38 | .put(realA, realB) | ||
39 | .put(realB, realA) | ||
40 | .put(boolA, boolB) | ||
41 | .put(boolB, boolA) | ||
42 | .put(upperCardinalityA, upperCardinalityB) | ||
43 | .put(upperCardinalityB, upperCardinalityA) | ||
44 | .build(); | ||
45 | |||
46 | @ParameterizedTest | ||
47 | @MethodSource | ||
48 | void substitutionTest(AnyTerm term) { | ||
49 | var substitutedTerm1 = term.substitute(substitution); | ||
50 | Assertions.assertNotEquals(term, substitutedTerm1, "Original term is not equal to substituted term"); | ||
51 | var helper = new LiteralEqualityHelper(Dnf::equals, List.of(), List.of()); | ||
52 | Assertions.assertTrue(term.equalsWithSubstitution(helper, substitutedTerm1), "Terms are equal by helper"); | ||
53 | // The {@link #substitution} is its own inverse. | ||
54 | var substitutedTerm2 = substitutedTerm1.substitute(substitution); | ||
55 | Assertions.assertEquals(term, substitutedTerm2, "Original term is not equal to back-substituted term"); | ||
56 | } | ||
57 | |||
58 | static Stream<Arguments> substitutionTest() { | ||
59 | return Stream.of( | ||
60 | Arguments.of(IntTerms.plus(intA)), | ||
61 | Arguments.of(IntTerms.minus(intA)), | ||
62 | Arguments.of(IntTerms.add(intA, intB)), | ||
63 | Arguments.of(IntTerms.sub(intA, intB)), | ||
64 | Arguments.of(IntTerms.mul(intA, intB)), | ||
65 | Arguments.of(IntTerms.div(intA, intB)), | ||
66 | Arguments.of(IntTerms.pow(intA, intB)), | ||
67 | Arguments.of(IntTerms.min(intA, intB)), | ||
68 | Arguments.of(IntTerms.max(intA, intB)), | ||
69 | Arguments.of(IntTerms.eq(intA, intB)), | ||
70 | Arguments.of(IntTerms.notEq(intA, intB)), | ||
71 | Arguments.of(IntTerms.less(intA, intB)), | ||
72 | Arguments.of(IntTerms.lessEq(intA, intB)), | ||
73 | Arguments.of(IntTerms.greater(intA, intB)), | ||
74 | Arguments.of(IntTerms.greaterEq(intA, intB)), | ||
75 | Arguments.of(IntTerms.asInt(realA)), | ||
76 | Arguments.of(RealTerms.plus(realA)), | ||
77 | Arguments.of(RealTerms.minus(realA)), | ||
78 | Arguments.of(RealTerms.add(realA, realB)), | ||
79 | Arguments.of(RealTerms.sub(realA, realB)), | ||
80 | Arguments.of(RealTerms.mul(realA, realB)), | ||
81 | Arguments.of(RealTerms.div(realA, realB)), | ||
82 | Arguments.of(RealTerms.pow(realA, realB)), | ||
83 | Arguments.of(RealTerms.min(realA, realB)), | ||
84 | Arguments.of(RealTerms.max(realA, realB)), | ||
85 | Arguments.of(RealTerms.asReal(intA)), | ||
86 | Arguments.of(BoolTerms.not(boolA)), | ||
87 | Arguments.of(BoolTerms.and(boolA, boolB)), | ||
88 | Arguments.of(BoolTerms.or(boolA, boolB)), | ||
89 | Arguments.of(BoolTerms.xor(boolA, boolB)), | ||
90 | Arguments.of(RealTerms.eq(realA, realB)), | ||
91 | Arguments.of(UpperCardinalityTerms.add(upperCardinalityA, upperCardinalityB)), | ||
92 | Arguments.of(UpperCardinalityTerms.mul(upperCardinalityA, upperCardinalityB)), | ||
93 | Arguments.of(UpperCardinalityTerms.min(upperCardinalityA, upperCardinalityB)), | ||
94 | Arguments.of(UpperCardinalityTerms.max(upperCardinalityA, upperCardinalityB)) | ||
95 | ); | ||
96 | } | ||
97 | } | ||
diff --git a/subprojects/store-query/src/test/java/tools/refinery/store/query/term/bool/BoolTermsEvaluateTest.java b/subprojects/store-query/src/test/java/tools/refinery/store/query/term/bool/BoolTermsEvaluateTest.java new file mode 100644 index 00000000..beff705e --- /dev/null +++ b/subprojects/store-query/src/test/java/tools/refinery/store/query/term/bool/BoolTermsEvaluateTest.java | |||
@@ -0,0 +1,75 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.bool; | ||
7 | |||
8 | import org.junit.jupiter.params.ParameterizedTest; | ||
9 | import org.junit.jupiter.params.provider.CsvSource; | ||
10 | import tools.refinery.store.query.valuation.Valuation; | ||
11 | |||
12 | import static org.hamcrest.MatcherAssert.assertThat; | ||
13 | import static org.hamcrest.Matchers.is; | ||
14 | |||
15 | class BoolTermsEvaluateTest { | ||
16 | @ParameterizedTest(name = "!{0} == {1}") | ||
17 | @CsvSource(value = { | ||
18 | "false, true", | ||
19 | "true, false", | ||
20 | "null, null" | ||
21 | }, nullValues = "null") | ||
22 | void notTest(Boolean a, Boolean result) { | ||
23 | var term = BoolTerms.not(BoolTerms.constant(a)); | ||
24 | assertThat(term.getType(), is(Boolean.class)); | ||
25 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
26 | } | ||
27 | |||
28 | @ParameterizedTest(name = "{0} && {1} == {2}") | ||
29 | @CsvSource(value = { | ||
30 | "false, false, false", | ||
31 | "false, true, false", | ||
32 | "true, false, false", | ||
33 | "true, true, true", | ||
34 | "false, null, null", | ||
35 | "null, false, null", | ||
36 | "null, null, null" | ||
37 | }, nullValues = "null") | ||
38 | void andTest(Boolean a, Boolean b, Boolean result) { | ||
39 | var term = BoolTerms.and(BoolTerms.constant(a), BoolTerms.constant(b)); | ||
40 | assertThat(term.getType(), is(Boolean.class)); | ||
41 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
42 | } | ||
43 | |||
44 | @ParameterizedTest(name = "{0} || {1} == {2}") | ||
45 | @CsvSource(value = { | ||
46 | "false, false, false", | ||
47 | "false, true, true", | ||
48 | "true, false, true", | ||
49 | "true, true, true", | ||
50 | "true, null, null", | ||
51 | "null, true, null", | ||
52 | "null, null, null" | ||
53 | }, nullValues = "null") | ||
54 | void orTest(Boolean a, Boolean b, Boolean result) { | ||
55 | var term = BoolTerms.or(BoolTerms.constant(a), BoolTerms.constant(b)); | ||
56 | assertThat(term.getType(), is(Boolean.class)); | ||
57 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
58 | } | ||
59 | |||
60 | @ParameterizedTest(name = "{0} ^^ {1} == {2}") | ||
61 | @CsvSource(value = { | ||
62 | "false, false, false", | ||
63 | "false, true, true", | ||
64 | "true, false, true", | ||
65 | "true, true, false", | ||
66 | "false, null, null", | ||
67 | "null, false, null", | ||
68 | "null, null, null" | ||
69 | }, nullValues = "null") | ||
70 | void xorTest(Boolean a, Boolean b, Boolean result) { | ||
71 | var term = BoolTerms.xor(BoolTerms.constant(a), BoolTerms.constant(b)); | ||
72 | assertThat(term.getType(), is(Boolean.class)); | ||
73 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
74 | } | ||
75 | } | ||
diff --git a/subprojects/store-query/src/test/java/tools/refinery/store/query/term/int_/IntTermsEvaluateTest.java b/subprojects/store-query/src/test/java/tools/refinery/store/query/term/int_/IntTermsEvaluateTest.java new file mode 100644 index 00000000..abe50d75 --- /dev/null +++ b/subprojects/store-query/src/test/java/tools/refinery/store/query/term/int_/IntTermsEvaluateTest.java | |||
@@ -0,0 +1,259 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.int_; | ||
7 | |||
8 | import org.junit.jupiter.params.ParameterizedTest; | ||
9 | import org.junit.jupiter.params.provider.Arguments; | ||
10 | import org.junit.jupiter.params.provider.CsvSource; | ||
11 | import org.junit.jupiter.params.provider.MethodSource; | ||
12 | import tools.refinery.store.query.term.real.RealTerms; | ||
13 | import tools.refinery.store.query.valuation.Valuation; | ||
14 | |||
15 | import java.util.stream.Stream; | ||
16 | |||
17 | import static org.hamcrest.Matchers.is; | ||
18 | import static org.hamcrest.MatcherAssert.assertThat; | ||
19 | |||
20 | class IntTermsEvaluateTest { | ||
21 | @ParameterizedTest(name = "+{0} == {1}") | ||
22 | @CsvSource(value = { | ||
23 | "2, 2", | ||
24 | "null, null" | ||
25 | }, nullValues = "null") | ||
26 | void plusTest(Integer a, Integer result) { | ||
27 | var term = IntTerms.plus(IntTerms.constant(a)); | ||
28 | assertThat(term.getType(), is(Integer.class)); | ||
29 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
30 | } | ||
31 | |||
32 | @ParameterizedTest(name = "-{0} == {1}") | ||
33 | @CsvSource(value = { | ||
34 | "2, -2", | ||
35 | "null, null" | ||
36 | }, nullValues = "null") | ||
37 | void minusTest(Integer a, Integer result) { | ||
38 | var term = IntTerms.minus(IntTerms.constant(a)); | ||
39 | assertThat(term.getType(), is(Integer.class)); | ||
40 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
41 | } | ||
42 | |||
43 | @ParameterizedTest(name = "{0} + {1} == {2}") | ||
44 | @CsvSource(value = { | ||
45 | "1, 2, 3", | ||
46 | "null, 2, null", | ||
47 | "1, null, null", | ||
48 | "null, null, null" | ||
49 | }, nullValues = "null") | ||
50 | void addTest(Integer a, Integer b, Integer result) { | ||
51 | var term = IntTerms.add(IntTerms.constant(a), IntTerms.constant(b)); | ||
52 | assertThat(term.getType(), is(Integer.class)); | ||
53 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
54 | } | ||
55 | |||
56 | @ParameterizedTest(name = "{0} - {1} == {2}") | ||
57 | @CsvSource(value = { | ||
58 | "1, 3, -2", | ||
59 | "null, 3, null", | ||
60 | "1, null, null", | ||
61 | "null, null, null" | ||
62 | }, nullValues = "null") | ||
63 | void subTest(Integer a, Integer b, Integer result) { | ||
64 | var term = IntTerms.sub(IntTerms.constant(a), IntTerms.constant(b)); | ||
65 | assertThat(term.getType(), is(Integer.class)); | ||
66 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
67 | } | ||
68 | |||
69 | @ParameterizedTest(name = "{0} * {1} == {2}") | ||
70 | @CsvSource(value = { | ||
71 | "2, 3, 6", | ||
72 | "null, 3, null", | ||
73 | "2, null, null", | ||
74 | "null, null, null" | ||
75 | }, nullValues = "null") | ||
76 | void mulTest(Integer a, Integer b, Integer result) { | ||
77 | var term = IntTerms.mul(IntTerms.constant(a), IntTerms.constant(b)); | ||
78 | assertThat(term.getType(), is(Integer.class)); | ||
79 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
80 | } | ||
81 | |||
82 | @ParameterizedTest(name = "{0} * {1} == {2}") | ||
83 | @CsvSource(value = { | ||
84 | "6, 3, 2", | ||
85 | "7, 3, 2", | ||
86 | "6, 0, null", | ||
87 | "null, 3, null", | ||
88 | "6, null, null", | ||
89 | "null, null, null" | ||
90 | }, nullValues = "null") | ||
91 | void divTest(Integer a, Integer b, Integer result) { | ||
92 | var term = IntTerms.div(IntTerms.constant(a), IntTerms.constant(b)); | ||
93 | assertThat(term.getType(), is(Integer.class)); | ||
94 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
95 | } | ||
96 | |||
97 | @ParameterizedTest(name = "{0} ** {1} == {2}") | ||
98 | @CsvSource(value = { | ||
99 | "1, 0, 1", | ||
100 | "1, 3, 1", | ||
101 | "1, -3, null", | ||
102 | "2, 0, 1", | ||
103 | "2, 2, 4", | ||
104 | "2, 3, 8", | ||
105 | "2, 4, 16", | ||
106 | "2, 5, 32", | ||
107 | "2, 6, 64", | ||
108 | "2, -3, null", | ||
109 | "null, 3, null", | ||
110 | "2, null, null", | ||
111 | "null, null, null" | ||
112 | }, nullValues = "null") | ||
113 | void powTest(Integer a, Integer b, Integer result) { | ||
114 | var term = IntTerms.pow(IntTerms.constant(a), IntTerms.constant(b)); | ||
115 | assertThat(term.getType(), is(Integer.class)); | ||
116 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
117 | } | ||
118 | |||
119 | @ParameterizedTest(name = "min({0}, {1}) == {2}") | ||
120 | @CsvSource(value = { | ||
121 | "1, 2, 1", | ||
122 | "2, 1, 1", | ||
123 | "null, 2, null", | ||
124 | "1, null, null", | ||
125 | "null, null, null" | ||
126 | }, nullValues = "null") | ||
127 | void minTest(Integer a, Integer b, Integer result) { | ||
128 | var term = IntTerms.min(IntTerms.constant(a), IntTerms.constant(b)); | ||
129 | assertThat(term.getType(), is(Integer.class)); | ||
130 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
131 | } | ||
132 | |||
133 | @ParameterizedTest(name = "max({0}, {1}) == {2}") | ||
134 | @CsvSource(value = { | ||
135 | "1, 2, 2", | ||
136 | "2, 1, 2", | ||
137 | "null, 2, null", | ||
138 | "1, null, null", | ||
139 | "null, null, null" | ||
140 | }, nullValues = "null") | ||
141 | void maxTest(Integer a, Integer b, Integer result) { | ||
142 | var term = IntTerms.max(IntTerms.constant(a), IntTerms.constant(b)); | ||
143 | assertThat(term.getType(), is(Integer.class)); | ||
144 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
145 | } | ||
146 | |||
147 | @ParameterizedTest(name = "({0} == {1}) == {2}") | ||
148 | @CsvSource(value = { | ||
149 | "1, 1, true", | ||
150 | "1, 2, false", | ||
151 | "null, 1, null", | ||
152 | "1, null, null", | ||
153 | "null, null, null" | ||
154 | }, nullValues = "null") | ||
155 | void eqTest(Integer a, Integer b, Boolean result) { | ||
156 | var term = IntTerms.eq(IntTerms.constant(a), IntTerms.constant(b)); | ||
157 | assertThat(term.getType(), is(Boolean.class)); | ||
158 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
159 | } | ||
160 | |||
161 | @ParameterizedTest(name = "({0} != {1}) == {2}") | ||
162 | @CsvSource(value = { | ||
163 | "1, 1, false", | ||
164 | "1, 2, true", | ||
165 | "null, 1, null", | ||
166 | "1, null, null", | ||
167 | "null, null, null" | ||
168 | }, nullValues = "null") | ||
169 | void notEqTest(Integer a, Integer b, Boolean result) { | ||
170 | var term = IntTerms.notEq(IntTerms.constant(a), IntTerms.constant(b)); | ||
171 | assertThat(term.getType(), is(Boolean.class)); | ||
172 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
173 | } | ||
174 | |||
175 | @ParameterizedTest(name = "({0} < {1}) == {2}") | ||
176 | @CsvSource(value = { | ||
177 | "1, -2, false", | ||
178 | "1, 1, false", | ||
179 | "1, 2, true", | ||
180 | "null, 1, null", | ||
181 | "1, null, null", | ||
182 | "null, null, null" | ||
183 | }, nullValues = "null") | ||
184 | void lessTest(Integer a, Integer b, Boolean result) { | ||
185 | var term = IntTerms.less(IntTerms.constant(a), IntTerms.constant(b)); | ||
186 | assertThat(term.getType(), is(Boolean.class)); | ||
187 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
188 | } | ||
189 | |||
190 | @ParameterizedTest(name = "({0} <= {1}) == {2}") | ||
191 | @CsvSource(value = { | ||
192 | "1, -2, false", | ||
193 | "1, 1, true", | ||
194 | "1, 2, true", | ||
195 | "null, 1, null", | ||
196 | "1, null, null", | ||
197 | "null, null, null" | ||
198 | }, nullValues = "null") | ||
199 | void lessEqTest(Integer a, Integer b, Boolean result) { | ||
200 | var term = IntTerms.lessEq(IntTerms.constant(a), IntTerms.constant(b)); | ||
201 | assertThat(term.getType(), is(Boolean.class)); | ||
202 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
203 | } | ||
204 | |||
205 | @ParameterizedTest(name = "({0} > {1}) == {2}") | ||
206 | @CsvSource(value = { | ||
207 | "1, -2, true", | ||
208 | "1, 1, false", | ||
209 | "1, 2, false", | ||
210 | "null, 1, null", | ||
211 | "1, null, null", | ||
212 | "null, null, null" | ||
213 | }, nullValues = "null") | ||
214 | void greaterTest(Integer a, Integer b, Boolean result) { | ||
215 | var term = IntTerms.greater(IntTerms.constant(a), IntTerms.constant(b)); | ||
216 | assertThat(term.getType(), is(Boolean.class)); | ||
217 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
218 | } | ||
219 | |||
220 | @ParameterizedTest(name = "({0} >= {1}) == {2}") | ||
221 | @CsvSource(value = { | ||
222 | "1, -2, true", | ||
223 | "1, 1, true", | ||
224 | "1, 2, false", | ||
225 | "null, 1, null", | ||
226 | "1, null, null", | ||
227 | "null, null, null" | ||
228 | }, nullValues = "null") | ||
229 | void greaterEqTest(Integer a, Integer b, Boolean result) { | ||
230 | var term = IntTerms.greaterEq(IntTerms.constant(a), IntTerms.constant(b)); | ||
231 | assertThat(term.getType(), is(Boolean.class)); | ||
232 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
233 | } | ||
234 | |||
235 | @ParameterizedTest(name = "{0} as int == {1}") | ||
236 | @MethodSource | ||
237 | void asIntTest(Double a, Integer result) { | ||
238 | var term = IntTerms.asInt(RealTerms.constant(a)); | ||
239 | assertThat(term.getType(), is(Integer.class)); | ||
240 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
241 | } | ||
242 | |||
243 | static Stream<Arguments> asIntTest() { | ||
244 | return Stream.of( | ||
245 | Arguments.of(2.0, 2), | ||
246 | Arguments.of(2.1, 2), | ||
247 | Arguments.of(2.9, 2), | ||
248 | Arguments.of(-2.0, -2), | ||
249 | Arguments.of(-2.1, -2), | ||
250 | Arguments.of(-2.9, -2), | ||
251 | Arguments.of(0.0, 0), | ||
252 | Arguments.of(-0.0, 0), | ||
253 | Arguments.of(Double.POSITIVE_INFINITY, Integer.MAX_VALUE), | ||
254 | Arguments.of(Double.NEGATIVE_INFINITY, Integer.MIN_VALUE), | ||
255 | Arguments.of(Double.NaN, null), | ||
256 | Arguments.of(null, null) | ||
257 | ); | ||
258 | } | ||
259 | } | ||
diff --git a/subprojects/store-query/src/test/java/tools/refinery/store/query/term/real/RealTermEvaluateTest.java b/subprojects/store-query/src/test/java/tools/refinery/store/query/term/real/RealTermEvaluateTest.java new file mode 100644 index 00000000..6a8eebf1 --- /dev/null +++ b/subprojects/store-query/src/test/java/tools/refinery/store/query/term/real/RealTermEvaluateTest.java | |||
@@ -0,0 +1,238 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.real; | ||
7 | |||
8 | import org.hamcrest.Matcher; | ||
9 | import org.junit.jupiter.params.ParameterizedTest; | ||
10 | import org.junit.jupiter.params.provider.CsvSource; | ||
11 | import tools.refinery.store.query.term.int_.IntTerms; | ||
12 | import tools.refinery.store.query.valuation.Valuation; | ||
13 | |||
14 | import static org.hamcrest.MatcherAssert.assertThat; | ||
15 | import static org.hamcrest.Matchers.*; | ||
16 | |||
17 | class RealTermEvaluateTest { | ||
18 | public static final double TOLERANCE = 1e-6; | ||
19 | |||
20 | private static Matcher<Double> closeToOrNull(Double expected) { | ||
21 | return expected == null ? nullValue(Double.class) : closeTo(expected, TOLERANCE); | ||
22 | } | ||
23 | |||
24 | @ParameterizedTest(name = "+{0} == {1}") | ||
25 | @CsvSource(value = { | ||
26 | "2.5, 2.5", | ||
27 | "null, null" | ||
28 | }, nullValues = "null") | ||
29 | void plusTest(Double a, Double result) { | ||
30 | var term = RealTerms.plus(RealTerms.constant(a)); | ||
31 | assertThat(term.getType(), is(Double.class)); | ||
32 | assertThat(term.evaluate(Valuation.empty()), closeToOrNull(result)); | ||
33 | } | ||
34 | |||
35 | @ParameterizedTest(name = "-{0} == {1}") | ||
36 | @CsvSource(value = { | ||
37 | "2.5, -2.5", | ||
38 | "null, null" | ||
39 | }, nullValues = "null") | ||
40 | void minusTest(Double a, Double result) { | ||
41 | var term = RealTerms.minus(RealTerms.constant(a)); | ||
42 | assertThat(term.getType(), is(Double.class)); | ||
43 | assertThat(term.evaluate(Valuation.empty()), closeToOrNull(result)); | ||
44 | } | ||
45 | |||
46 | @ParameterizedTest(name = "{0} + {1} == {2}") | ||
47 | @CsvSource(value = { | ||
48 | "1.2, 2.3, 3.5", | ||
49 | "null, 2.3, null", | ||
50 | "1.2, null, null", | ||
51 | "null, null, null" | ||
52 | }, nullValues = "null") | ||
53 | void addTest(Double a, Double b, Double result) { | ||
54 | var term = RealTerms.add(RealTerms.constant(a), RealTerms.constant(b)); | ||
55 | assertThat(term.getType(), is(Double.class)); | ||
56 | assertThat(term.evaluate(Valuation.empty()), closeToOrNull(result)); | ||
57 | } | ||
58 | |||
59 | @ParameterizedTest(name = "{0} - {1} == {2}") | ||
60 | @CsvSource(value = { | ||
61 | "1.2, 3.4, -2.2", | ||
62 | "null, 3.4, null", | ||
63 | "1.2, null, null", | ||
64 | "null, null, null" | ||
65 | }, nullValues = "null") | ||
66 | void subTest(Double a, Double b, Double result) { | ||
67 | var term = RealTerms.sub(RealTerms.constant(a), RealTerms.constant(b)); | ||
68 | assertThat(term.getType(), is(Double.class)); | ||
69 | assertThat(term.evaluate(Valuation.empty()), closeToOrNull(result)); | ||
70 | } | ||
71 | |||
72 | @ParameterizedTest(name = "{0} * {1} == {2}") | ||
73 | @CsvSource(value = { | ||
74 | "2.3, 3.4, 7.82", | ||
75 | "null, 3.4, null", | ||
76 | "2.3, null, null", | ||
77 | "null, null, null" | ||
78 | }, nullValues = "null") | ||
79 | void mulTest(Double a, Double b, Double result) { | ||
80 | var term = RealTerms.mul(RealTerms.constant(a), RealTerms.constant(b)); | ||
81 | assertThat(term.getType(), is(Double.class)); | ||
82 | assertThat(term.evaluate(Valuation.empty()), closeToOrNull(result)); | ||
83 | } | ||
84 | |||
85 | @ParameterizedTest(name = "{0} * {1} == {2}") | ||
86 | @CsvSource(value = { | ||
87 | "7.82, 3.4, 2.3", | ||
88 | "null, 3.4, null", | ||
89 | "7.82, null, null", | ||
90 | "null, null, null" | ||
91 | }, nullValues = "null") | ||
92 | void divTest(Double a, Double b, Double result) { | ||
93 | var term = RealTerms.div(RealTerms.constant(a), RealTerms.constant(b)); | ||
94 | assertThat(term.getType(), is(Double.class)); | ||
95 | assertThat(term.evaluate(Valuation.empty()), closeToOrNull(result)); | ||
96 | } | ||
97 | |||
98 | @ParameterizedTest(name = "{0} ** {1} == {2}") | ||
99 | @CsvSource(value = { | ||
100 | "2.0, 6.0, 64.0", | ||
101 | "null, 6.0, null", | ||
102 | "2.0, null, null", | ||
103 | "null, null, null" | ||
104 | }, nullValues = "null") | ||
105 | void powTest(Double a, Double b, Double result) { | ||
106 | var term = RealTerms.pow(RealTerms.constant(a), RealTerms.constant(b)); | ||
107 | assertThat(term.getType(), is(Double.class)); | ||
108 | assertThat(term.evaluate(Valuation.empty()), closeToOrNull(result)); | ||
109 | } | ||
110 | |||
111 | @ParameterizedTest(name = "min({0}, {1}) == {2}") | ||
112 | @CsvSource(value = { | ||
113 | "1.5, 2.7, 1.5", | ||
114 | "2.7, 1.5, 1.5", | ||
115 | "null, 2.7, null", | ||
116 | "1.5, null, null", | ||
117 | "null, null, null" | ||
118 | }, nullValues = "null") | ||
119 | void minTest(Double a, Double b, Double result) { | ||
120 | var term = RealTerms.min(RealTerms.constant(a), RealTerms.constant(b)); | ||
121 | assertThat(term.getType(), is(Double.class)); | ||
122 | assertThat(term.evaluate(Valuation.empty()), closeToOrNull(result)); | ||
123 | } | ||
124 | |||
125 | @ParameterizedTest(name = "max({0}, {1}) == {2}") | ||
126 | @CsvSource(value = { | ||
127 | "1.5, 2.7, 2.7", | ||
128 | "2.7, 1.7, 2.7", | ||
129 | "null, 2.7, null", | ||
130 | "1.5, null, null", | ||
131 | "null, null, null" | ||
132 | }, nullValues = "null") | ||
133 | void maxTest(Double a, Double b, Double result) { | ||
134 | var term = RealTerms.max(RealTerms.constant(a), RealTerms.constant(b)); | ||
135 | assertThat(term.getType(), is(Double.class)); | ||
136 | assertThat(term.evaluate(Valuation.empty()), closeToOrNull(result)); | ||
137 | } | ||
138 | |||
139 | @ParameterizedTest(name = "({0} == {1}) == {2}") | ||
140 | @CsvSource(value = { | ||
141 | "1.5, 1.5, true", | ||
142 | "1.5, 2.7, false", | ||
143 | "null, 1.5, null", | ||
144 | "1.5, null, null", | ||
145 | "null, null, null" | ||
146 | }, nullValues = "null") | ||
147 | void eqTest(Double a, Double b, Boolean result) { | ||
148 | var term = RealTerms.eq(RealTerms.constant(a), RealTerms.constant(b)); | ||
149 | assertThat(term.getType(), is(Boolean.class)); | ||
150 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
151 | } | ||
152 | |||
153 | @ParameterizedTest(name = "({0} != {1}) == {2}") | ||
154 | @CsvSource(value = { | ||
155 | "1.5, 1.5, false", | ||
156 | "1.5, 2.7, true", | ||
157 | "null, 1.5, null", | ||
158 | "1.5, null, null", | ||
159 | "null, null, null" | ||
160 | }, nullValues = "null") | ||
161 | void notEqTest(Double a, Double b, Boolean result) { | ||
162 | var term = RealTerms.notEq(RealTerms.constant(a), RealTerms.constant(b)); | ||
163 | assertThat(term.getType(), is(Boolean.class)); | ||
164 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
165 | } | ||
166 | |||
167 | @ParameterizedTest(name = "({0} < {1}) == {2}") | ||
168 | @CsvSource(value = { | ||
169 | "1.5, -2.7, false", | ||
170 | "1.5, 1.5, false", | ||
171 | "1.5, 2.7, true", | ||
172 | "null, 1.5, null", | ||
173 | "1.5, null, null", | ||
174 | "null, null, null" | ||
175 | }, nullValues = "null") | ||
176 | void lessTest(Double a, Double b, Boolean result) { | ||
177 | var term = RealTerms.less(RealTerms.constant(a), RealTerms.constant(b)); | ||
178 | assertThat(term.getType(), is(Boolean.class)); | ||
179 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
180 | } | ||
181 | |||
182 | @ParameterizedTest(name = "({0} <= {1}) == {2}") | ||
183 | @CsvSource(value = { | ||
184 | "1.5, -2.7, false", | ||
185 | "1.5, 1.5, true", | ||
186 | "1.5, 2.7, true", | ||
187 | "null, 1.5, null", | ||
188 | "1.5, null, null", | ||
189 | "null, null, null" | ||
190 | }, nullValues = "null") | ||
191 | void lessEqTest(Double a, Double b, Boolean result) { | ||
192 | var term = RealTerms.lessEq(RealTerms.constant(a), RealTerms.constant(b)); | ||
193 | assertThat(term.getType(), is(Boolean.class)); | ||
194 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
195 | } | ||
196 | |||
197 | @ParameterizedTest(name = "({0} > {1}) == {2}") | ||
198 | @CsvSource(value = { | ||
199 | "1.5, -2.7, true", | ||
200 | "1.5, 1.5, false", | ||
201 | "1.5, 2.7, false", | ||
202 | "null, 1.5, null", | ||
203 | "1.5, null, null", | ||
204 | "null, null, null" | ||
205 | }, nullValues = "null") | ||
206 | void greaterTest(Double a, Double b, Boolean result) { | ||
207 | var term = RealTerms.greater(RealTerms.constant(a), RealTerms.constant(b)); | ||
208 | assertThat(term.getType(), is(Boolean.class)); | ||
209 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
210 | } | ||
211 | |||
212 | @ParameterizedTest(name = "({0} >= {1}) == {2}") | ||
213 | @CsvSource(value = { | ||
214 | "1.5, -2.7, true", | ||
215 | "1.5, 1.5, true", | ||
216 | "1.5, 2.7, false", | ||
217 | "null, 1.5, null", | ||
218 | "1.5, null, null", | ||
219 | "null, null, null" | ||
220 | }, nullValues = "null") | ||
221 | void greaterEqTest(Double a, Double b, Boolean result) { | ||
222 | var term = RealTerms.greaterEq(RealTerms.constant(a), RealTerms.constant(b)); | ||
223 | assertThat(term.getType(), is(Boolean.class)); | ||
224 | assertThat(term.evaluate(Valuation.empty()), is(result)); | ||
225 | } | ||
226 | |||
227 | @ParameterizedTest(name = "{0} as real == {1}") | ||
228 | @CsvSource(value = { | ||
229 | "0, 0.0", | ||
230 | "5, 5.0", | ||
231 | "null, null" | ||
232 | }, nullValues = "null") | ||
233 | void asRealTest(Integer a, Double result) { | ||
234 | var term = RealTerms.asReal(IntTerms.constant(a)); | ||
235 | assertThat(term.getType(), is(Double.class)); | ||
236 | assertThat(term.evaluate(Valuation.empty()), closeToOrNull(result)); | ||
237 | } | ||
238 | } | ||
diff --git a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/internal/cardinality/UpperCardinalitySumAggregationOperatorStreamTest.java b/subprojects/store-query/src/test/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalitySumAggregatorStreamTest.java index c529117e..31baf36e 100644 --- a/subprojects/store-query-viatra/src/test/java/tools/refinery/store/query/viatra/internal/cardinality/UpperCardinalitySumAggregationOperatorStreamTest.java +++ b/subprojects/store-query/src/test/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalitySumAggregatorStreamTest.java | |||
@@ -1,4 +1,9 @@ | |||
1 | package tools.refinery.store.query.viatra.internal.cardinality; | 1 | /* |
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.uppercardinality; | ||
2 | 7 | ||
3 | import org.junit.jupiter.params.ParameterizedTest; | 8 | import org.junit.jupiter.params.ParameterizedTest; |
4 | import org.junit.jupiter.params.provider.Arguments; | 9 | import org.junit.jupiter.params.provider.Arguments; |
@@ -10,14 +15,14 @@ import java.util.List; | |||
10 | import java.util.stream.Stream; | 15 | import java.util.stream.Stream; |
11 | 16 | ||
12 | import static org.hamcrest.MatcherAssert.assertThat; | 17 | import static org.hamcrest.MatcherAssert.assertThat; |
13 | import static org.hamcrest.Matchers.equalTo; | 18 | import static org.hamcrest.Matchers.is; |
14 | 19 | ||
15 | class UpperCardinalitySumAggregationOperatorStreamTest { | 20 | class UpperCardinalitySumAggregatorStreamTest { |
16 | @ParameterizedTest | 21 | @ParameterizedTest |
17 | @MethodSource | 22 | @MethodSource |
18 | void testStream(List<UpperCardinality> list, UpperCardinality expected) { | 23 | void testStream(List<UpperCardinality> list, UpperCardinality expected) { |
19 | var result = UpperCardinalitySumAggregationOperator.INSTANCE.aggregateStream(list.stream()); | 24 | var result = UpperCardinalitySumAggregator.INSTANCE.aggregateStream(list.stream()); |
20 | assertThat(result, equalTo(expected)); | 25 | assertThat(result, is(expected)); |
21 | } | 26 | } |
22 | 27 | ||
23 | static Stream<Arguments> testStream() { | 28 | static Stream<Arguments> testStream() { |
diff --git a/subprojects/store-query/src/test/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalitySumAggregatorTest.java b/subprojects/store-query/src/test/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalitySumAggregatorTest.java new file mode 100644 index 00000000..780cd0ab --- /dev/null +++ b/subprojects/store-query/src/test/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalitySumAggregatorTest.java | |||
@@ -0,0 +1,80 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.uppercardinality; | ||
7 | |||
8 | import org.junit.jupiter.api.BeforeEach; | ||
9 | import org.junit.jupiter.api.Test; | ||
10 | import tools.refinery.store.query.term.StatefulAggregate; | ||
11 | import tools.refinery.store.representation.cardinality.UpperCardinalities; | ||
12 | import tools.refinery.store.representation.cardinality.UpperCardinality; | ||
13 | |||
14 | import static org.hamcrest.MatcherAssert.assertThat; | ||
15 | import static org.hamcrest.Matchers.is; | ||
16 | |||
17 | class UpperCardinalitySumAggregatorTest { | ||
18 | private StatefulAggregate<UpperCardinality, UpperCardinality> accumulator; | ||
19 | |||
20 | @BeforeEach | ||
21 | void beforeEach() { | ||
22 | accumulator = UpperCardinalitySumAggregator.INSTANCE.createEmptyAggregate(); | ||
23 | } | ||
24 | |||
25 | @Test | ||
26 | void emptyAggregationTest() { | ||
27 | assertThat(accumulator.getResult(), is(UpperCardinality.of(0))); | ||
28 | } | ||
29 | |||
30 | @Test | ||
31 | void singleBoundedTest() { | ||
32 | accumulator.add(UpperCardinality.of(3)); | ||
33 | assertThat(accumulator.getResult(), is(UpperCardinality.of(3))); | ||
34 | } | ||
35 | |||
36 | @Test | ||
37 | void multipleBoundedTest() { | ||
38 | accumulator.add(UpperCardinality.of(2)); | ||
39 | accumulator.add(UpperCardinality.of(3)); | ||
40 | assertThat(accumulator.getResult(), is(UpperCardinality.of(5))); | ||
41 | } | ||
42 | |||
43 | @Test | ||
44 | void singleUnboundedTest() { | ||
45 | accumulator.add(UpperCardinalities.UNBOUNDED); | ||
46 | assertThat(accumulator.getResult(), is(UpperCardinalities.UNBOUNDED)); | ||
47 | } | ||
48 | |||
49 | @Test | ||
50 | void multipleUnboundedTest() { | ||
51 | accumulator.add(UpperCardinalities.UNBOUNDED); | ||
52 | accumulator.add(UpperCardinalities.UNBOUNDED); | ||
53 | assertThat(accumulator.getResult(), is(UpperCardinalities.UNBOUNDED)); | ||
54 | } | ||
55 | |||
56 | @Test | ||
57 | void removeBoundedTest() { | ||
58 | accumulator.add(UpperCardinality.of(2)); | ||
59 | accumulator.add(UpperCardinality.of(3)); | ||
60 | accumulator.remove(UpperCardinality.of(2)); | ||
61 | assertThat(accumulator.getResult(), is(UpperCardinality.of(3))); | ||
62 | } | ||
63 | |||
64 | @Test | ||
65 | void removeAllUnboundedTest() { | ||
66 | accumulator.add(UpperCardinalities.UNBOUNDED); | ||
67 | accumulator.add(UpperCardinality.of(3)); | ||
68 | accumulator.remove(UpperCardinalities.UNBOUNDED); | ||
69 | assertThat(accumulator.getResult(), is(UpperCardinality.of(3))); | ||
70 | } | ||
71 | |||
72 | @Test | ||
73 | void removeSomeUnboundedTest() { | ||
74 | accumulator.add(UpperCardinalities.UNBOUNDED); | ||
75 | accumulator.add(UpperCardinalities.UNBOUNDED); | ||
76 | accumulator.add(UpperCardinality.of(3)); | ||
77 | accumulator.remove(UpperCardinalities.UNBOUNDED); | ||
78 | assertThat(accumulator.getResult(), is(UpperCardinalities.UNBOUNDED)); | ||
79 | } | ||
80 | } | ||
diff --git a/subprojects/store-query/src/test/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalityTermsEvaluateTest.java b/subprojects/store-query/src/test/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalityTermsEvaluateTest.java new file mode 100644 index 00000000..9d0f3bde --- /dev/null +++ b/subprojects/store-query/src/test/java/tools/refinery/store/query/term/uppercardinality/UpperCardinalityTermsEvaluateTest.java | |||
@@ -0,0 +1,104 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.term.uppercardinality; | ||
7 | |||
8 | import org.junit.jupiter.params.ParameterizedTest; | ||
9 | import org.junit.jupiter.params.provider.Arguments; | ||
10 | import org.junit.jupiter.params.provider.MethodSource; | ||
11 | import tools.refinery.store.query.valuation.Valuation; | ||
12 | import tools.refinery.store.representation.cardinality.UpperCardinalities; | ||
13 | import tools.refinery.store.representation.cardinality.UpperCardinality; | ||
14 | |||
15 | import java.util.stream.Stream; | ||
16 | |||
17 | import static org.hamcrest.MatcherAssert.assertThat; | ||
18 | import static org.hamcrest.Matchers.is; | ||
19 | |||
20 | class UpperCardinalityTermsEvaluateTest { | ||
21 | @ParameterizedTest(name = "min({0}, {1}) == {2}") | ||
22 | @MethodSource | ||
23 | void minTest(UpperCardinality a, UpperCardinality b, UpperCardinality expected) { | ||
24 | var term = UpperCardinalityTerms.min(UpperCardinalityTerms.constant(a), UpperCardinalityTerms.constant(b)); | ||
25 | assertThat(term.getType(), is(UpperCardinality.class)); | ||
26 | assertThat(term.evaluate(Valuation.empty()), is(expected)); | ||
27 | } | ||
28 | |||
29 | static Stream<Arguments> minTest() { | ||
30 | return Stream.of( | ||
31 | Arguments.of(UpperCardinality.of(0), UpperCardinality.of(0), UpperCardinality.of(0)), | ||
32 | Arguments.of(UpperCardinality.of(0), UpperCardinality.of(1), UpperCardinality.of(0)), | ||
33 | Arguments.of(UpperCardinality.of(1), UpperCardinality.of(0), UpperCardinality.of(0)), | ||
34 | Arguments.of(UpperCardinality.of(0), UpperCardinalities.UNBOUNDED, UpperCardinality.of(0)), | ||
35 | Arguments.of(UpperCardinalities.UNBOUNDED, UpperCardinality.of(0), UpperCardinality.of(0)), | ||
36 | Arguments.of(UpperCardinalities.UNBOUNDED, UpperCardinalities.UNBOUNDED, UpperCardinalities.UNBOUNDED), | ||
37 | Arguments.of(UpperCardinality.of(1), null, null), | ||
38 | Arguments.of(null, UpperCardinality.of(1), null), | ||
39 | Arguments.of(null, null, null) | ||
40 | ); | ||
41 | } | ||
42 | |||
43 | @ParameterizedTest(name = "max({0}, {1}) == {2}") | ||
44 | @MethodSource | ||
45 | void maxTest(UpperCardinality a, UpperCardinality b, UpperCardinality expected) { | ||
46 | var term = UpperCardinalityTerms.max(UpperCardinalityTerms.constant(a), UpperCardinalityTerms.constant(b)); | ||
47 | assertThat(term.getType(), is(UpperCardinality.class)); | ||
48 | assertThat(term.evaluate(Valuation.empty()), is(expected)); | ||
49 | } | ||
50 | |||
51 | static Stream<Arguments> maxTest() { | ||
52 | return Stream.of( | ||
53 | Arguments.of(UpperCardinality.of(0), UpperCardinality.of(0), UpperCardinality.of(0)), | ||
54 | Arguments.of(UpperCardinality.of(0), UpperCardinality.of(1), UpperCardinality.of(1)), | ||
55 | Arguments.of(UpperCardinality.of(1), UpperCardinality.of(0), UpperCardinality.of(1)), | ||
56 | Arguments.of(UpperCardinality.of(0), UpperCardinalities.UNBOUNDED, UpperCardinalities.UNBOUNDED), | ||
57 | Arguments.of(UpperCardinalities.UNBOUNDED, UpperCardinality.of(0), UpperCardinalities.UNBOUNDED), | ||
58 | Arguments.of(UpperCardinalities.UNBOUNDED, UpperCardinalities.UNBOUNDED, UpperCardinalities.UNBOUNDED), | ||
59 | Arguments.of(UpperCardinality.of(1), null, null), | ||
60 | Arguments.of(null, UpperCardinality.of(1), null), | ||
61 | Arguments.of(null, null, null) | ||
62 | ); | ||
63 | } | ||
64 | |||
65 | @ParameterizedTest(name = "{0} + {1} == {2}") | ||
66 | @MethodSource | ||
67 | void addTest(UpperCardinality a, UpperCardinality b, UpperCardinality expected) { | ||
68 | var term = UpperCardinalityTerms.add(UpperCardinalityTerms.constant(a), UpperCardinalityTerms.constant(b)); | ||
69 | assertThat(term.getType(), is(UpperCardinality.class)); | ||
70 | assertThat(term.evaluate(Valuation.empty()), is(expected)); | ||
71 | } | ||
72 | |||
73 | static Stream<Arguments> addTest() { | ||
74 | return Stream.of( | ||
75 | Arguments.of(UpperCardinality.of(2), UpperCardinality.of(3), UpperCardinality.of(5)), | ||
76 | Arguments.of(UpperCardinality.of(2), UpperCardinalities.UNBOUNDED, UpperCardinalities.UNBOUNDED), | ||
77 | Arguments.of(UpperCardinalities.UNBOUNDED, UpperCardinality.of(2), UpperCardinalities.UNBOUNDED), | ||
78 | Arguments.of(UpperCardinalities.UNBOUNDED, UpperCardinalities.UNBOUNDED, UpperCardinalities.UNBOUNDED), | ||
79 | Arguments.of(UpperCardinality.of(1), null, null), | ||
80 | Arguments.of(null, UpperCardinality.of(1), null), | ||
81 | Arguments.of(null, null, null) | ||
82 | ); | ||
83 | } | ||
84 | |||
85 | @ParameterizedTest(name = "{0} * {1} == {2}") | ||
86 | @MethodSource | ||
87 | void mulTest(UpperCardinality a, UpperCardinality b, UpperCardinality expected) { | ||
88 | var term = UpperCardinalityTerms.mul(UpperCardinalityTerms.constant(a), UpperCardinalityTerms.constant(b)); | ||
89 | assertThat(term.getType(), is(UpperCardinality.class)); | ||
90 | assertThat(term.evaluate(Valuation.empty()), is(expected)); | ||
91 | } | ||
92 | |||
93 | static Stream<Arguments> mulTest() { | ||
94 | return Stream.of( | ||
95 | Arguments.of(UpperCardinality.of(2), UpperCardinality.of(3), UpperCardinality.of(6)), | ||
96 | Arguments.of(UpperCardinality.of(2), UpperCardinalities.UNBOUNDED, UpperCardinalities.UNBOUNDED), | ||
97 | Arguments.of(UpperCardinalities.UNBOUNDED, UpperCardinality.of(2), UpperCardinalities.UNBOUNDED), | ||
98 | Arguments.of(UpperCardinalities.UNBOUNDED, UpperCardinalities.UNBOUNDED, UpperCardinalities.UNBOUNDED), | ||
99 | Arguments.of(UpperCardinality.of(1), null, null), | ||
100 | Arguments.of(null, UpperCardinality.of(1), null), | ||
101 | Arguments.of(null, null, null) | ||
102 | ); | ||
103 | } | ||
104 | } | ||
diff --git a/subprojects/store-query/src/test/java/tools/refinery/store/query/tests/StructurallyEqualToRawTest.java b/subprojects/store-query/src/test/java/tools/refinery/store/query/tests/StructurallyEqualToRawTest.java new file mode 100644 index 00000000..d447e99c --- /dev/null +++ b/subprojects/store-query/src/test/java/tools/refinery/store/query/tests/StructurallyEqualToRawTest.java | |||
@@ -0,0 +1,159 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.tests; | ||
7 | |||
8 | import org.junit.jupiter.api.Test; | ||
9 | import tools.refinery.store.query.dnf.Dnf; | ||
10 | import tools.refinery.store.query.dnf.SymbolicParameter; | ||
11 | import tools.refinery.store.query.term.NodeVariable; | ||
12 | import tools.refinery.store.query.term.ParameterDirection; | ||
13 | import tools.refinery.store.query.term.Variable; | ||
14 | import tools.refinery.store.query.view.AnySymbolView; | ||
15 | import tools.refinery.store.query.view.KeyOnlyView; | ||
16 | import tools.refinery.store.representation.Symbol; | ||
17 | |||
18 | import java.util.List; | ||
19 | |||
20 | import static org.hamcrest.CoreMatchers.containsString; | ||
21 | import static org.hamcrest.MatcherAssert.assertThat; | ||
22 | import static org.hamcrest.Matchers.allOf; | ||
23 | import static org.junit.jupiter.api.Assertions.assertThrows; | ||
24 | import static tools.refinery.store.query.tests.QueryMatchers.structurallyEqualTo; | ||
25 | |||
26 | class StructurallyEqualToRawTest { | ||
27 | private static final Symbol<Boolean> person = Symbol.of("Person", 1); | ||
28 | private static final Symbol<Boolean> friend = Symbol.of("friend", 2); | ||
29 | private static final AnySymbolView personView = new KeyOnlyView<>(person); | ||
30 | private static final AnySymbolView friendView = new KeyOnlyView<>(friend); | ||
31 | private static final NodeVariable p = Variable.of("p"); | ||
32 | private static final NodeVariable q = Variable.of("q"); | ||
33 | |||
34 | @Test | ||
35 | void flatEqualsTest() { | ||
36 | var actual = Dnf.builder("Actual").parameters(p).clause(personView.call(p)).build(); | ||
37 | |||
38 | assertThat(actual, structurallyEqualTo( | ||
39 | List.of(new SymbolicParameter(q, ParameterDirection.OUT)), | ||
40 | List.of(List.of(personView.call(q))) | ||
41 | )); | ||
42 | } | ||
43 | |||
44 | @Test | ||
45 | void flatNotEqualsTest() { | ||
46 | var actual = Dnf.builder("Actual").parameters(p).clause(friendView.call(p, q)).build(); | ||
47 | |||
48 | var assertion = structurallyEqualTo( | ||
49 | List.of(new SymbolicParameter(q, ParameterDirection.OUT)), | ||
50 | List.of(List.of(friendView.call(q, q))) | ||
51 | ); | ||
52 | assertThrows(AssertionError.class, () -> assertThat(actual, assertion)); | ||
53 | } | ||
54 | |||
55 | @Test | ||
56 | void deepEqualsTest() { | ||
57 | var actual = Dnf.builder("Actual").parameters(q).clause( | ||
58 | Dnf.builder("Actual2").parameters(p).clause(personView.call(p)).build().call(q) | ||
59 | ).build(); | ||
60 | |||
61 | assertThat(actual, structurallyEqualTo( | ||
62 | List.of(new SymbolicParameter(q, ParameterDirection.OUT)), | ||
63 | List.of( | ||
64 | List.of( | ||
65 | Dnf.builder("Expected2").parameters(p).clause(personView.call(p)).build().call(q) | ||
66 | ) | ||
67 | ) | ||
68 | )); | ||
69 | } | ||
70 | |||
71 | @Test | ||
72 | void deepNotEqualsTest() { | ||
73 | var actual = Dnf.builder("Actual").parameter(q).clause( | ||
74 | Dnf.builder("Actual2").parameters(p).clause(friendView.call(p, q)).build().call(q) | ||
75 | ).build(); | ||
76 | |||
77 | var assertion = structurallyEqualTo( | ||
78 | List.of(new SymbolicParameter(q, ParameterDirection.OUT)), | ||
79 | List.of( | ||
80 | List.of( | ||
81 | Dnf.builder("Expected2") | ||
82 | .parameters(p) | ||
83 | .clause(friendView.call(p, p)) | ||
84 | .build() | ||
85 | .call(q) | ||
86 | ) | ||
87 | ) | ||
88 | ); | ||
89 | var error = assertThrows(AssertionError.class, () -> assertThat(actual, assertion)); | ||
90 | assertThat(error.getMessage(), allOf(containsString("Expected2"), containsString("Actual2"))); | ||
91 | } | ||
92 | |||
93 | @Test | ||
94 | void parameterListLengthMismatchTest() { | ||
95 | var actual = Dnf.builder("Actual").parameters(p, q).clause( | ||
96 | friendView.call(p, q) | ||
97 | ).build(); | ||
98 | |||
99 | var assertion = structurallyEqualTo( | ||
100 | List.of(new SymbolicParameter(p, ParameterDirection.OUT)), | ||
101 | List.of(List.of(friendView.call(p, p))) | ||
102 | ); | ||
103 | |||
104 | assertThrows(AssertionError.class, () -> assertThat(actual, assertion)); | ||
105 | } | ||
106 | |||
107 | @Test | ||
108 | void parameterDirectionMismatchTest() { | ||
109 | var actual = Dnf.builder("Actual").parameter(p, ParameterDirection.IN).clause( | ||
110 | personView.call(p) | ||
111 | ).build(); | ||
112 | |||
113 | var assertion = structurallyEqualTo( | ||
114 | List.of(new SymbolicParameter(p, ParameterDirection.OUT)), | ||
115 | List.of(List.of(personView.call(p))) | ||
116 | ); | ||
117 | |||
118 | assertThrows(AssertionError.class, () -> assertThat(actual, assertion)); | ||
119 | } | ||
120 | |||
121 | @Test | ||
122 | void clauseCountMismatchTest() { | ||
123 | var actual = Dnf.builder("Actual").parameters(p, q).clause( | ||
124 | friendView.call(p, q) | ||
125 | ).build(); | ||
126 | |||
127 | var assertion = structurallyEqualTo( | ||
128 | List.of( | ||
129 | new SymbolicParameter(p, ParameterDirection.OUT), | ||
130 | new SymbolicParameter(q, ParameterDirection.OUT) | ||
131 | ), | ||
132 | List.of( | ||
133 | List.of(friendView.call(p, q)), | ||
134 | List.of(friendView.call(q, p)) | ||
135 | ) | ||
136 | ); | ||
137 | |||
138 | assertThrows(AssertionError.class, () -> assertThat(actual, assertion)); | ||
139 | } | ||
140 | |||
141 | @Test | ||
142 | void literalCountMismatchTest() { | ||
143 | var actual = Dnf.builder("Actual").parameters(p, q).clause( | ||
144 | friendView.call(p, q) | ||
145 | ).build(); | ||
146 | |||
147 | var assertion = structurallyEqualTo( | ||
148 | List.of( | ||
149 | new SymbolicParameter(p, ParameterDirection.OUT), | ||
150 | new SymbolicParameter(q, ParameterDirection.OUT) | ||
151 | ), | ||
152 | List.of( | ||
153 | List.of(friendView.call(p, q), friendView.call(q, p)) | ||
154 | ) | ||
155 | ); | ||
156 | |||
157 | assertThrows(AssertionError.class, () -> assertThat(actual, assertion)); | ||
158 | } | ||
159 | } | ||
diff --git a/subprojects/store-query/src/test/java/tools/refinery/store/query/tests/StructurallyEqualToTest.java b/subprojects/store-query/src/test/java/tools/refinery/store/query/tests/StructurallyEqualToTest.java new file mode 100644 index 00000000..f716b805 --- /dev/null +++ b/subprojects/store-query/src/test/java/tools/refinery/store/query/tests/StructurallyEqualToTest.java | |||
@@ -0,0 +1,127 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.tests; | ||
7 | |||
8 | import org.junit.jupiter.api.Test; | ||
9 | import tools.refinery.store.query.dnf.Dnf; | ||
10 | import tools.refinery.store.query.term.NodeVariable; | ||
11 | import tools.refinery.store.query.term.ParameterDirection; | ||
12 | import tools.refinery.store.query.term.Variable; | ||
13 | import tools.refinery.store.query.view.AnySymbolView; | ||
14 | import tools.refinery.store.query.view.KeyOnlyView; | ||
15 | import tools.refinery.store.representation.Symbol; | ||
16 | |||
17 | import static org.hamcrest.CoreMatchers.containsString; | ||
18 | import static org.hamcrest.MatcherAssert.assertThat; | ||
19 | import static org.junit.jupiter.api.Assertions.assertThrows; | ||
20 | import static tools.refinery.store.query.tests.QueryMatchers.structurallyEqualTo; | ||
21 | |||
22 | class StructurallyEqualToTest { | ||
23 | private static final Symbol<Boolean> person = Symbol.of("Person", 1); | ||
24 | private static final Symbol<Boolean> friend = Symbol.of("friend", 2); | ||
25 | private static final AnySymbolView personView = new KeyOnlyView<>(person); | ||
26 | private static final AnySymbolView friendView = new KeyOnlyView<>(friend); | ||
27 | private static final NodeVariable p = Variable.of("p"); | ||
28 | private static final NodeVariable q = Variable.of("q"); | ||
29 | |||
30 | @Test | ||
31 | void flatEqualsTest() { | ||
32 | var expected = Dnf.builder("Expected").parameters(q).clause(personView.call(q)).build(); | ||
33 | var actual = Dnf.builder("Actual").parameters(p).clause(personView.call(p)).build(); | ||
34 | |||
35 | assertThat(actual, structurallyEqualTo(expected)); | ||
36 | } | ||
37 | |||
38 | @Test | ||
39 | void flatNotEqualsTest() { | ||
40 | var expected = Dnf.builder("Expected").parameters(q).clause(friendView.call(q, q)).build(); | ||
41 | var actual = Dnf.builder("Actual").parameters(p).clause(friendView.call(p, q)).build(); | ||
42 | |||
43 | var assertion = structurallyEqualTo(expected); | ||
44 | assertThrows(AssertionError.class, () -> assertThat(actual, assertion)); | ||
45 | } | ||
46 | |||
47 | @Test | ||
48 | void deepEqualsTest() { | ||
49 | var expected = Dnf.builder("Expected").parameters(q).clause( | ||
50 | Dnf.builder("Expected2").parameters(p).clause(personView.call(p)).build().call(q) | ||
51 | ).build(); | ||
52 | var actual = Dnf.builder("Actual").parameters(q).clause( | ||
53 | Dnf.builder("Actual2").parameters(p).clause(personView.call(p)).build().call(q) | ||
54 | ).build(); | ||
55 | |||
56 | assertThat(actual, structurallyEqualTo(expected)); | ||
57 | } | ||
58 | |||
59 | @Test | ||
60 | void deepNotEqualsTest() { | ||
61 | var expected = Dnf.builder("Expected").parameters(q).clause( | ||
62 | Dnf.builder("Expected2").parameters(p).clause(friendView.call(p, p)).build().call(q) | ||
63 | ).build(); | ||
64 | var actual = Dnf.builder("Actual").parameter(q).clause( | ||
65 | Dnf.builder("Actual2").parameters(p).clause(friendView.call(p, q)).build().call(q) | ||
66 | ).build(); | ||
67 | |||
68 | var assertion = structurallyEqualTo(expected); | ||
69 | var error = assertThrows(AssertionError.class, () -> assertThat(actual, assertion)); | ||
70 | assertThat(error.getMessage(), containsString(" called from Expected/1 ")); | ||
71 | } | ||
72 | |||
73 | @Test | ||
74 | void parameterListLengthMismatchTest() { | ||
75 | var expected = Dnf.builder("Expected").parameter(p).clause( | ||
76 | friendView.call(p, p) | ||
77 | ).build(); | ||
78 | var actual = Dnf.builder("Actual").parameters(p, q).clause( | ||
79 | friendView.call(p, q) | ||
80 | ).build(); | ||
81 | |||
82 | var assertion = structurallyEqualTo(expected); | ||
83 | assertThrows(AssertionError.class, () -> assertThat(actual, assertion)); | ||
84 | } | ||
85 | |||
86 | @Test | ||
87 | void parameterDirectionMismatchTest() { | ||
88 | var expected = Dnf.builder("Expected").parameter(p, ParameterDirection.OUT).clause( | ||
89 | personView.call(p) | ||
90 | ).build(); | ||
91 | var actual = Dnf.builder("Actual").parameter(p, ParameterDirection.IN).clause( | ||
92 | personView.call(p) | ||
93 | ).build(); | ||
94 | |||
95 | var assertion = structurallyEqualTo(expected); | ||
96 | assertThrows(AssertionError.class, () -> assertThat(actual, assertion)); | ||
97 | } | ||
98 | |||
99 | @Test | ||
100 | void clauseCountMismatchTest() { | ||
101 | var expected = Dnf.builder("Expected") | ||
102 | .parameters(p, q) | ||
103 | .clause(friendView.call(p, q)) | ||
104 | .clause(friendView.call(q, p)) | ||
105 | .build(); | ||
106 | var actual = Dnf.builder("Actual").parameters(p, q).clause( | ||
107 | friendView.call(p, q) | ||
108 | ).build(); | ||
109 | |||
110 | var assertion = structurallyEqualTo(expected); | ||
111 | assertThrows(AssertionError.class, () -> assertThat(actual, assertion)); | ||
112 | } | ||
113 | |||
114 | @Test | ||
115 | void literalCountMismatchTest() { | ||
116 | var expected = Dnf.builder("Expected").parameters(p, q).clause( | ||
117 | friendView.call(p, q), | ||
118 | friendView.call(q, p) | ||
119 | ).build(); | ||
120 | var actual = Dnf.builder("Actual").parameters(p, q).clause( | ||
121 | friendView.call(p, q) | ||
122 | ).build(); | ||
123 | |||
124 | var assertion = structurallyEqualTo(expected); | ||
125 | assertThrows(AssertionError.class, () -> assertThat(actual, assertion)); | ||
126 | } | ||
127 | } | ||
diff --git a/subprojects/store-query/src/test/java/tools/refinery/store/query/utils/OrderStatisticTreeTest.java b/subprojects/store-query/src/test/java/tools/refinery/store/query/utils/OrderStatisticTreeTest.java new file mode 100644 index 00000000..cbb48603 --- /dev/null +++ b/subprojects/store-query/src/test/java/tools/refinery/store/query/utils/OrderStatisticTreeTest.java | |||
@@ -0,0 +1,634 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2021 Rodion Efremov | ||
3 | * Copyright (c) 2023 The Refinery Authors <https://refinery.tools/> | ||
4 | * | ||
5 | * SPDX-License-Identifier: MIT OR EPL-2.0 | ||
6 | */ | ||
7 | package tools.refinery.store.query.utils; | ||
8 | |||
9 | import org.junit.jupiter.api.BeforeEach; | ||
10 | import org.junit.jupiter.api.Test; | ||
11 | import org.junit.jupiter.params.ParameterizedTest; | ||
12 | import org.junit.jupiter.params.provider.Arguments; | ||
13 | import org.junit.jupiter.params.provider.MethodSource; | ||
14 | |||
15 | import java.util.*; | ||
16 | import java.util.stream.Stream; | ||
17 | |||
18 | import static org.junit.jupiter.api.Assertions.*; | ||
19 | |||
20 | /** | ||
21 | * Tests for an order statistic tree which is based on AVL-trees. | ||
22 | * <p> | ||
23 | * This class was copied into <i>Refinery</i> from | ||
24 | * <a href="https://github.com/coderodde/OrderStatisticTree/tree/546c343b9f5d868e394a079ff32691c9dbfd83e3">https://github.com/coderodde/OrderStatisticTree</a> | ||
25 | * and is available under the | ||
26 | * <a href="https://github.com/coderodde/OrderStatisticTree/blob/master/LICENSE">MIT License</a>. | ||
27 | * We also migrated the code to Junit 5, cleaned up some linter warnings, and made the tests deterministic by fixing | ||
28 | * the random seeds. | ||
29 | * | ||
30 | * @author Rodion "rodde" Efremov | ||
31 | * @version based on 1.6 (Feb 11, 2016) | ||
32 | */ | ||
33 | class OrderStatisticTreeTest { | ||
34 | private final OrderStatisticTree<Integer> tree = new OrderStatisticTree<>(); | ||
35 | |||
36 | private final TreeSet<Integer> set = new TreeSet<>(); | ||
37 | |||
38 | @BeforeEach | ||
39 | void before() { | ||
40 | tree.clear(); | ||
41 | set.clear(); | ||
42 | } | ||
43 | |||
44 | @Test | ||
45 | void testAdd() { | ||
46 | assertEquals(set.isEmpty(), tree.isEmpty()); | ||
47 | |||
48 | for (int i = 10; i < 30; i += 2) { | ||
49 | assertTrue(tree.isHealthy()); | ||
50 | assertEquals(set.contains(i), tree.contains(i)); | ||
51 | assertEquals(set.add(i), tree.add(i)); | ||
52 | assertEquals(set.add(i), tree.add(i)); | ||
53 | assertEquals(set.contains(i), tree.contains(i)); | ||
54 | assertTrue(tree.isHealthy()); | ||
55 | } | ||
56 | |||
57 | assertEquals(set.isEmpty(), tree.isEmpty()); | ||
58 | } | ||
59 | |||
60 | @Test | ||
61 | void testAddAll() { | ||
62 | for (int i = 0; i < 10; ++i) { | ||
63 | assertEquals(set.add(i), tree.add(i)); | ||
64 | } | ||
65 | |||
66 | Collection<Integer> coll = Arrays.asList(10, 9, 7, 11, 12); | ||
67 | |||
68 | assertEquals(set.addAll(coll), tree.addAll(coll)); | ||
69 | assertEquals(set.size(), tree.size()); | ||
70 | |||
71 | for (int i = -10; i < 20; ++i) { | ||
72 | assertEquals(set.contains(i), tree.contains(i)); | ||
73 | } | ||
74 | } | ||
75 | |||
76 | @Test | ||
77 | void testClear() { | ||
78 | for (int i = 0; i < 2000; ++i) { | ||
79 | set.add(i); | ||
80 | tree.add(i); | ||
81 | } | ||
82 | |||
83 | assertEquals(set.size(), tree.size()); | ||
84 | set.clear(); | ||
85 | tree.clear(); | ||
86 | // We expect {@code tree.size()} to always be 0, but we also test for it. | ||
87 | //noinspection ConstantValue | ||
88 | assertEquals(0, tree.size()); | ||
89 | } | ||
90 | |||
91 | @Test | ||
92 | void testContains() { | ||
93 | for (int i = 100; i < 200; i += 3) { | ||
94 | assertTrue(tree.isHealthy()); | ||
95 | assertEquals(set.add(i), tree.add(i)); | ||
96 | assertTrue(tree.isHealthy()); | ||
97 | } | ||
98 | |||
99 | assertEquals(set.size(), tree.size()); | ||
100 | |||
101 | for (int i = 0; i < 300; ++i) { | ||
102 | assertEquals(set.contains(i), tree.contains(i)); | ||
103 | } | ||
104 | } | ||
105 | |||
106 | @Test | ||
107 | void testContainsAll() { | ||
108 | for (int i = 0; i < 50; ++i) { | ||
109 | set.add(i); | ||
110 | tree.add(i); | ||
111 | } | ||
112 | |||
113 | Collection<Integer> coll = new HashSet<>(); | ||
114 | |||
115 | for (int i = 10; i < 20; ++i) { | ||
116 | coll.add(i); | ||
117 | } | ||
118 | |||
119 | assertEquals(set.containsAll(coll), tree.containsAll(coll)); | ||
120 | coll.add(100); | ||
121 | assertEquals(set.containsAll(coll), tree.containsAll(coll)); | ||
122 | } | ||
123 | |||
124 | @Test | ||
125 | void testRemove() { | ||
126 | for (int i = 0; i < 200; ++i) { | ||
127 | assertEquals(set.add(i), tree.add(i)); | ||
128 | } | ||
129 | |||
130 | for (int i = 50; i < 150; i += 2) { | ||
131 | assertEquals(set.remove(i), tree.remove(i)); | ||
132 | assertTrue(tree.isHealthy()); | ||
133 | } | ||
134 | |||
135 | for (int i = -100; i < 300; ++i) { | ||
136 | assertEquals(set.contains(i), tree.contains(i)); | ||
137 | } | ||
138 | } | ||
139 | |||
140 | @Test | ||
141 | void testRemoveLast() { | ||
142 | tree.add(1); | ||
143 | tree.remove(1); | ||
144 | assertEquals(0, tree.size()); | ||
145 | } | ||
146 | |||
147 | @Test | ||
148 | void testRemoveAll() { | ||
149 | for (int i = 0; i < 40; ++i) { | ||
150 | set.add(i); | ||
151 | tree.add(i); | ||
152 | } | ||
153 | |||
154 | Collection<Integer> coll = new HashSet<>(); | ||
155 | |||
156 | for (int i = 10; i < 20; ++i) { | ||
157 | coll.add(i); | ||
158 | } | ||
159 | |||
160 | assertEquals(set.removeAll(coll), tree.removeAll(coll)); | ||
161 | |||
162 | for (int i = -10; i < 50; ++i) { | ||
163 | assertEquals(set.contains(i), tree.contains(i)); | ||
164 | } | ||
165 | |||
166 | assertEquals(set.removeAll(coll), tree.removeAll(coll)); | ||
167 | |||
168 | for (int i = -10; i < 50; ++i) { | ||
169 | assertEquals(set.contains(i), tree.contains(i)); | ||
170 | } | ||
171 | } | ||
172 | |||
173 | @Test | ||
174 | void testSize() { | ||
175 | for (int i = 0; i < 200; ++i) { | ||
176 | assertEquals(set.size(), tree.size()); | ||
177 | assertEquals(set.add(i), tree.add(i)); | ||
178 | assertEquals(set.size(), tree.size()); | ||
179 | } | ||
180 | } | ||
181 | |||
182 | @Test | ||
183 | void testIndexOf() { | ||
184 | for (int i = 0; i < 100; ++i) { | ||
185 | assertTrue(tree.add(i * 2)); | ||
186 | } | ||
187 | |||
188 | for (int i = 0; i < 100; ++i) { | ||
189 | assertEquals(i, tree.indexOf(2 * i)); | ||
190 | } | ||
191 | |||
192 | for (int i = 100; i < 150; ++i) { | ||
193 | assertEquals(-1, tree.indexOf(2 * i)); | ||
194 | } | ||
195 | } | ||
196 | |||
197 | @Test | ||
198 | void testEmpty() { | ||
199 | assertEquals(set.isEmpty(), tree.isEmpty()); | ||
200 | set.add(0); | ||
201 | tree.add(0); | ||
202 | assertEquals(set.isEmpty(), tree.isEmpty()); | ||
203 | } | ||
204 | |||
205 | @Test | ||
206 | void testEmptyTreeGetThrowsOnNegativeIndex() { | ||
207 | assertThrows(IndexOutOfBoundsException.class, () -> tree.get(-1)); | ||
208 | } | ||
209 | |||
210 | @Test | ||
211 | void testEmptyTreeSelectThrowsOnTooLargeIndex() { | ||
212 | assertThrows(IndexOutOfBoundsException.class, () -> tree.get(0)); | ||
213 | } | ||
214 | |||
215 | @Test | ||
216 | void testSelectThrowsOnNegativeIndex() { | ||
217 | for (int i = 0; i < 5; ++i) { | ||
218 | tree.add(i); | ||
219 | } | ||
220 | |||
221 | assertThrows(IndexOutOfBoundsException.class, () -> tree.get(-1)); | ||
222 | } | ||
223 | |||
224 | @Test | ||
225 | void testSelectThrowsOnTooLargeIndex() { | ||
226 | for (int i = 0; i < 5; ++i) { | ||
227 | tree.add(i); | ||
228 | } | ||
229 | |||
230 | assertThrows(IndexOutOfBoundsException.class, () -> tree.get(5)); | ||
231 | } | ||
232 | |||
233 | @Test | ||
234 | void testGet() { | ||
235 | for (int i = 0; i < 100; i += 3) { | ||
236 | tree.add(i); | ||
237 | } | ||
238 | |||
239 | for (int i = 0; i < tree.size(); ++i) { | ||
240 | assertEquals(Integer.valueOf(3 * i), tree.get(i)); | ||
241 | } | ||
242 | } | ||
243 | |||
244 | @Test | ||
245 | void findBug() { | ||
246 | tree.add(0); | ||
247 | assertTrue(tree.isHealthy()); | ||
248 | |||
249 | tree.add(-1); | ||
250 | tree.remove(-1); | ||
251 | assertTrue(tree.isHealthy()); | ||
252 | |||
253 | tree.add(1); | ||
254 | tree.remove(1); | ||
255 | assertTrue(tree.isHealthy()); | ||
256 | |||
257 | tree.add(-1); | ||
258 | tree.add(1); | ||
259 | tree.remove(0); | ||
260 | assertTrue(tree.isHealthy()); | ||
261 | |||
262 | tree.clear(); | ||
263 | tree.add(0); | ||
264 | tree.add(-1); | ||
265 | tree.add(10); | ||
266 | tree.add(5); | ||
267 | tree.add(15); | ||
268 | tree.add(11); | ||
269 | tree.add(30); | ||
270 | tree.add(7); | ||
271 | |||
272 | tree.remove(-1); | ||
273 | |||
274 | assertTrue(tree.isHealthy()); | ||
275 | } | ||
276 | |||
277 | @ParameterizedTest(name = "seed = {0}") | ||
278 | @MethodSource("seedSource") | ||
279 | void tryReproduceTheCounterBug(long seed) { | ||
280 | Random random = new Random(seed); | ||
281 | List<Integer> list = new ArrayList<>(); | ||
282 | |||
283 | for (int i = 0; i < 10; ++i) { | ||
284 | int number = random.nextInt(1000); | ||
285 | list.add(number); | ||
286 | tree.add(number); | ||
287 | assertTrue(tree.isHealthy()); | ||
288 | } | ||
289 | |||
290 | for (Integer i : list) { | ||
291 | tree.remove(i); | ||
292 | boolean healthy = tree.isHealthy(); | ||
293 | assertTrue(healthy); | ||
294 | } | ||
295 | } | ||
296 | |||
297 | @Test | ||
298 | void testEmptyIterator() { | ||
299 | var iterator = tree.iterator(); | ||
300 | assertThrows(NoSuchElementException.class, iterator::next); | ||
301 | } | ||
302 | |||
303 | @Test | ||
304 | void testIteratorThrowsOnDoubleRemove() { | ||
305 | for (int i = 10; i < 20; ++i) { | ||
306 | set.add(i); | ||
307 | tree.add(i); | ||
308 | } | ||
309 | |||
310 | Iterator<Integer> iterator1 = set.iterator(); | ||
311 | Iterator<Integer> iterator2 = tree.iterator(); | ||
312 | |||
313 | for (int i = 0; i < 3; ++i) { | ||
314 | assertEquals(iterator1.next(), iterator2.next()); | ||
315 | } | ||
316 | |||
317 | iterator1.remove(); | ||
318 | iterator2.remove(); | ||
319 | |||
320 | assertThrows(IllegalStateException.class, iterator1::remove); | ||
321 | assertThrows(IllegalStateException.class, iterator2::remove); | ||
322 | } | ||
323 | |||
324 | @Test | ||
325 | void testIterator() { | ||
326 | for (int i = 0; i < 5; ++i) { | ||
327 | tree.add(i); | ||
328 | set.add(i); | ||
329 | } | ||
330 | |||
331 | Iterator<Integer> iterator1 = set.iterator(); | ||
332 | Iterator<Integer> iterator2 = tree.iterator(); | ||
333 | |||
334 | for (int i = 0; i < 5; ++i) { | ||
335 | assertEquals(iterator1.hasNext(), iterator2.hasNext()); | ||
336 | assertEquals(iterator1.next(), iterator2.next()); | ||
337 | } | ||
338 | |||
339 | assertEquals(iterator1.hasNext(), iterator2.hasNext()); | ||
340 | |||
341 | assertThrows(NoSuchElementException.class, iterator1::next); | ||
342 | assertThrows(NoSuchElementException.class, iterator2::next); | ||
343 | } | ||
344 | |||
345 | @Test | ||
346 | void testRemoveBeforeNextThrowsEmpty() { | ||
347 | var setIterator = set.iterator(); | ||
348 | assertThrows(IllegalStateException.class, setIterator::remove); | ||
349 | |||
350 | var treeIterator = tree.iterator(); | ||
351 | assertThrows(IllegalStateException.class, treeIterator::remove); | ||
352 | } | ||
353 | |||
354 | @Test | ||
355 | void testRemoveThrowsWithoutNext() { | ||
356 | for (int i = 0; i < 10; ++i) { | ||
357 | tree.add(i); | ||
358 | set.add(i); | ||
359 | } | ||
360 | |||
361 | Iterator<Integer> iterator1 = set.iterator(); | ||
362 | Iterator<Integer> iterator2 = tree.iterator(); | ||
363 | |||
364 | for (int i = 0; i < 4; ++i) { | ||
365 | assertEquals(iterator1.hasNext(), iterator2.hasNext()); | ||
366 | assertEquals(iterator1.next(), iterator2.next()); | ||
367 | } | ||
368 | |||
369 | iterator1.remove(); | ||
370 | iterator2.remove(); | ||
371 | |||
372 | assertThrows(IllegalStateException.class, iterator1::remove); | ||
373 | assertThrows(IllegalStateException.class, iterator2::remove); | ||
374 | } | ||
375 | |||
376 | @Test | ||
377 | void testRetainAll() { | ||
378 | for (int i = 0; i < 100; ++i) { | ||
379 | set.add(i); | ||
380 | tree.add(i); | ||
381 | } | ||
382 | |||
383 | Collection<Integer> coll = Arrays.asList(26, 29, 25); | ||
384 | |||
385 | assertEquals(set.retainAll(coll), tree.retainAll(coll)); | ||
386 | assertEquals(set.size(), tree.size()); | ||
387 | |||
388 | assertTrue(set.containsAll(tree)); | ||
389 | assertTrue(tree.containsAll(set)); | ||
390 | } | ||
391 | |||
392 | @Test | ||
393 | void testIteratorRemove() { | ||
394 | for (int i = 10; i < 16; ++i) { | ||
395 | assertEquals(set.add(i), tree.add(i)); | ||
396 | } | ||
397 | |||
398 | Iterator<Integer> iterator1 = set.iterator(); | ||
399 | Iterator<Integer> iterator2 = tree.iterator(); | ||
400 | |||
401 | assertEquals(iterator1.hasNext(), iterator2.hasNext()); | ||
402 | assertEquals(iterator1.next(), iterator2.next()); | ||
403 | |||
404 | assertEquals(iterator1.hasNext(), iterator2.hasNext()); | ||
405 | assertEquals(iterator1.next(), iterator2.next()); | ||
406 | |||
407 | iterator1.remove(); // remove 11 | ||
408 | iterator2.remove(); | ||
409 | |||
410 | assertEquals(iterator1.hasNext(), iterator2.hasNext()); | ||
411 | assertEquals(iterator1.next(), iterator2.next()); | ||
412 | |||
413 | assertEquals(iterator1.hasNext(), iterator2.hasNext()); | ||
414 | assertEquals(iterator1.next(), iterator2.next()); | ||
415 | |||
416 | iterator1.remove(); // remove 13 | ||
417 | iterator2.remove(); | ||
418 | |||
419 | assertEquals(set.size(), tree.size()); | ||
420 | |||
421 | for (int i = 10; i < 16; ++i) { | ||
422 | assertEquals(set.contains(i), tree.contains(i)); | ||
423 | } | ||
424 | } | ||
425 | |||
426 | @ParameterizedTest(name = "seed = {0}") | ||
427 | @MethodSource("seedSource") | ||
428 | void testIteratorBruteForce(long seed) { | ||
429 | for (int i = 0; i < 1000; ++i) { | ||
430 | assertEquals(set.add(i), tree.add(i)); | ||
431 | } | ||
432 | |||
433 | Iterator<Integer> iterator1 = set.iterator(); | ||
434 | Iterator<Integer> iterator2 = tree.iterator(); | ||
435 | |||
436 | Random random = new Random(seed); | ||
437 | |||
438 | while (true) { | ||
439 | if (!iterator1.hasNext()) { | ||
440 | assertFalse(iterator2.hasNext()); | ||
441 | break; | ||
442 | } | ||
443 | |||
444 | boolean toRemove = random.nextBoolean(); | ||
445 | |||
446 | if (toRemove) { | ||
447 | boolean thrown = false; | ||
448 | |||
449 | try { | ||
450 | iterator1.remove(); | ||
451 | } catch (IllegalStateException ex) { | ||
452 | thrown = true; | ||
453 | } | ||
454 | |||
455 | if (thrown) { | ||
456 | assertThrows(IllegalStateException.class, iterator2::remove); | ||
457 | } else { | ||
458 | iterator2.remove(); | ||
459 | } | ||
460 | } else { | ||
461 | assertEquals(iterator1.hasNext(), iterator2.hasNext()); | ||
462 | |||
463 | if (iterator1.hasNext()) { | ||
464 | assertEquals(iterator1.next(), iterator2.next()); | ||
465 | } else { | ||
466 | break; | ||
467 | } | ||
468 | } | ||
469 | } | ||
470 | |||
471 | assertEquals(set.size(), tree.size()); | ||
472 | assertTrue(tree.isHealthy()); | ||
473 | assertTrue(set.containsAll(tree)); | ||
474 | assertTrue(tree.containsAll(set)); | ||
475 | } | ||
476 | |||
477 | @Test | ||
478 | void testIteratorConcurrentModification() { | ||
479 | for (int i = 0; i < 100; ++i) { | ||
480 | set.add(i); | ||
481 | tree.add(i); | ||
482 | } | ||
483 | |||
484 | Iterator<Integer> iterator1 = set.iterator(); | ||
485 | Iterator<Integer> iterator2 = tree.iterator(); | ||
486 | |||
487 | set.remove(10); | ||
488 | tree.remove(10); | ||
489 | |||
490 | assertEquals(iterator1.hasNext(), iterator2.hasNext()); | ||
491 | |||
492 | boolean thrown = false; | ||
493 | |||
494 | try { | ||
495 | iterator1.next(); | ||
496 | } catch (ConcurrentModificationException ex) { | ||
497 | thrown = true; | ||
498 | } | ||
499 | |||
500 | if (thrown) { | ||
501 | assertThrows(ConcurrentModificationException.class, iterator2::next); | ||
502 | } else { | ||
503 | iterator2.next(); | ||
504 | } | ||
505 | } | ||
506 | |||
507 | @Test | ||
508 | void testIteratorConcurrentRemove() { | ||
509 | for (int i = 10; i < 20; ++i) { | ||
510 | set.add(i); | ||
511 | tree.add(i); | ||
512 | } | ||
513 | |||
514 | Iterator<Integer> iterator1 = set.iterator(); | ||
515 | Iterator<Integer> iterator2 = tree.iterator(); | ||
516 | |||
517 | for (int i = 0; i < 4; ++i) { | ||
518 | iterator1.next(); | ||
519 | iterator2.next(); | ||
520 | } | ||
521 | |||
522 | // None of them contains 2, should not change the modification count. | ||
523 | set.remove(2); | ||
524 | tree.remove(2); | ||
525 | |||
526 | iterator1.remove(); | ||
527 | iterator2.remove(); | ||
528 | |||
529 | iterator1.next(); | ||
530 | iterator2.next(); | ||
531 | |||
532 | set.remove(12); | ||
533 | tree.remove(12); | ||
534 | |||
535 | // Both of them should throw. | ||
536 | assertThrows(ConcurrentModificationException.class, iterator1::remove); | ||
537 | assertThrows(ConcurrentModificationException.class, iterator2::remove); | ||
538 | } | ||
539 | |||
540 | @Test | ||
541 | void testConcurrentOrIllegalStateOnRemove() { | ||
542 | for (int i = 0; i < 10; ++i) { | ||
543 | set.add(i); | ||
544 | tree.add(i); | ||
545 | } | ||
546 | |||
547 | Iterator<Integer> iterator1 = set.iterator(); | ||
548 | Iterator<Integer> iterator2 = tree.iterator(); | ||
549 | |||
550 | set.add(100); | ||
551 | tree.add(100); | ||
552 | |||
553 | assertThrows(IllegalStateException.class, iterator1::remove); | ||
554 | assertThrows(IllegalStateException.class, iterator2::remove); | ||
555 | } | ||
556 | |||
557 | @Test | ||
558 | void testConcurrentIterators() { | ||
559 | for (int i = 0; i < 10; ++i) { | ||
560 | set.add(i); | ||
561 | tree.add(i); | ||
562 | } | ||
563 | |||
564 | Iterator<Integer> iterator1a = set.iterator(); | ||
565 | Iterator<Integer> iterator1b = set.iterator(); | ||
566 | Iterator<Integer> iterator2a = tree.iterator(); | ||
567 | Iterator<Integer> iterator2b = tree.iterator(); | ||
568 | |||
569 | for (int i = 0; i < 3; ++i) { | ||
570 | iterator1a.next(); | ||
571 | iterator2a.next(); | ||
572 | } | ||
573 | |||
574 | iterator1a.remove(); | ||
575 | iterator2a.remove(); | ||
576 | |||
577 | assertEquals(iterator1b.hasNext(), iterator2b.hasNext()); | ||
578 | |||
579 | assertThrows(ConcurrentModificationException.class, iterator1b::next); | ||
580 | assertThrows(ConcurrentModificationException.class, iterator2b::next); | ||
581 | } | ||
582 | |||
583 | @ParameterizedTest(name = "seed = {0}") | ||
584 | @MethodSource("seedSource") | ||
585 | void testToArray(long seed) { | ||
586 | Random r = new Random(seed); | ||
587 | |||
588 | for (int i = 0; i < 50; ++i) { | ||
589 | int num = r.nextInt(); | ||
590 | set.add(num); | ||
591 | tree.add(num); | ||
592 | } | ||
593 | |||
594 | assertArrayEquals(set.toArray(), tree.toArray()); | ||
595 | } | ||
596 | |||
597 | @Test | ||
598 | void testToArrayGeneric() { | ||
599 | for (int i = 0; i < 100; ++i) { | ||
600 | set.add(i); | ||
601 | tree.add(i); | ||
602 | } | ||
603 | |||
604 | Integer[] array1before = new Integer[99]; | ||
605 | Integer[] array2before = new Integer[99]; | ||
606 | |||
607 | Integer[] array1after = set.toArray(array1before); | ||
608 | Integer[] array2after = tree.toArray(array2before); | ||
609 | |||
610 | assertNotSame(array1before, array1after); | ||
611 | assertNotSame(array2before, array2after); | ||
612 | assertArrayEquals(array1after, array2after); | ||
613 | |||
614 | set.remove(1); | ||
615 | tree.remove(1); | ||
616 | |||
617 | array1after = set.toArray(array1before); | ||
618 | array2after = tree.toArray(array2before); | ||
619 | |||
620 | assertSame(array1before, array1after); | ||
621 | assertSame(array2before, array2after); | ||
622 | assertArrayEquals(array1after, array2after); | ||
623 | } | ||
624 | |||
625 | static Stream<Arguments> seedSource() { | ||
626 | return Stream.of( | ||
627 | Arguments.of(0L), | ||
628 | Arguments.of(1L), | ||
629 | Arguments.of(2L), | ||
630 | Arguments.of(3L), | ||
631 | Arguments.of(4L) | ||
632 | ); | ||
633 | } | ||
634 | } | ||
diff --git a/subprojects/store-query/src/testFixtures/java/tools/refinery/store/query/tests/MismatchDescribingDnfEqualityChecker.java b/subprojects/store-query/src/testFixtures/java/tools/refinery/store/query/tests/MismatchDescribingDnfEqualityChecker.java new file mode 100644 index 00000000..6a3301b3 --- /dev/null +++ b/subprojects/store-query/src/testFixtures/java/tools/refinery/store/query/tests/MismatchDescribingDnfEqualityChecker.java | |||
@@ -0,0 +1,68 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.tests; | ||
7 | |||
8 | import org.hamcrest.Description; | ||
9 | import tools.refinery.store.query.dnf.Dnf; | ||
10 | import tools.refinery.store.query.dnf.SymbolicParameter; | ||
11 | import tools.refinery.store.query.equality.DeepDnfEqualityChecker; | ||
12 | import tools.refinery.store.query.literal.Literal; | ||
13 | |||
14 | import java.util.List; | ||
15 | |||
16 | class MismatchDescribingDnfEqualityChecker extends DeepDnfEqualityChecker { | ||
17 | private final Description description; | ||
18 | private boolean raw; | ||
19 | private boolean needsDescription = true; | ||
20 | |||
21 | MismatchDescribingDnfEqualityChecker(Description description) { | ||
22 | this.description = description; | ||
23 | } | ||
24 | |||
25 | public boolean needsDescription() { | ||
26 | return needsDescription; | ||
27 | } | ||
28 | |||
29 | @Override | ||
30 | public boolean dnfEqualRaw(List<SymbolicParameter> symbolicParameters, List<? extends List<? extends Literal>> clauses, Dnf other) { | ||
31 | try { | ||
32 | raw = true; | ||
33 | boolean result = super.dnfEqualRaw(symbolicParameters, clauses, other); | ||
34 | if (!result && needsDescription) { | ||
35 | description.appendText("was ").appendText(other.toDefinitionString()); | ||
36 | } | ||
37 | return false; | ||
38 | } finally { | ||
39 | raw = false; | ||
40 | } | ||
41 | } | ||
42 | |||
43 | @Override | ||
44 | protected boolean doCheckEqual(Pair pair) { | ||
45 | boolean result = super.doCheckEqual(pair); | ||
46 | if (!result && needsDescription) { | ||
47 | describeMismatch(pair); | ||
48 | // Only describe the first found (innermost) mismatch. | ||
49 | needsDescription = false; | ||
50 | } | ||
51 | return result; | ||
52 | } | ||
53 | |||
54 | private void describeMismatch(Pair pair) { | ||
55 | var inProgress = getInProgress(); | ||
56 | int size = inProgress.size(); | ||
57 | if (size <= 1 && !raw) { | ||
58 | description.appendText("was ").appendText(pair.right().toDefinitionString()); | ||
59 | return; | ||
60 | } | ||
61 | var last = inProgress.get(size - 1); | ||
62 | description.appendText("expected ").appendText(last.left().toDefinitionString()); | ||
63 | for (int i = size - 2; i >= 0; i--) { | ||
64 | description.appendText(" called from ").appendText(inProgress.get(i).left().toString()); | ||
65 | } | ||
66 | description.appendText(" was not structurally equal to ").appendText(last.right().toDefinitionString()); | ||
67 | } | ||
68 | } | ||
diff --git a/subprojects/store-query/src/testFixtures/java/tools/refinery/store/query/tests/QueryMatchers.java b/subprojects/store-query/src/testFixtures/java/tools/refinery/store/query/tests/QueryMatchers.java new file mode 100644 index 00000000..cd449a6a --- /dev/null +++ b/subprojects/store-query/src/testFixtures/java/tools/refinery/store/query/tests/QueryMatchers.java | |||
@@ -0,0 +1,46 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.tests; | ||
7 | |||
8 | import org.hamcrest.Matcher; | ||
9 | import tools.refinery.store.query.dnf.Dnf; | ||
10 | import tools.refinery.store.query.dnf.SymbolicParameter; | ||
11 | import tools.refinery.store.query.literal.Literal; | ||
12 | |||
13 | import java.util.List; | ||
14 | |||
15 | public final class QueryMatchers { | ||
16 | private QueryMatchers() { | ||
17 | throw new IllegalStateException("This is a static utility class and should not be instantiated directly"); | ||
18 | } | ||
19 | |||
20 | /** | ||
21 | * Compare two {@link Dnf} instances up to renaming of variables. | ||
22 | * | ||
23 | * @param expected The expected {@link Dnf} instance. | ||
24 | * @return A Hamcrest matcher for equality up to renaming of variables. | ||
25 | */ | ||
26 | public static Matcher<Dnf> structurallyEqualTo(Dnf expected) { | ||
27 | return new StructurallyEqualTo(expected); | ||
28 | } | ||
29 | |||
30 | /** | ||
31 | * Compare a {@link Dnf} instance to another predicate in DNF form without constructing it. | ||
32 | * <p> | ||
33 | * This matcher should be used instead of {@link #structurallyEqualTo(Dnf)} when the validation and | ||
34 | * pre-processing associated with the {@link Dnf} constructor, i.e., validation of parameter directions, | ||
35 | * topological sorting of literals, and the reduction of trivial predicates is not desired. In particular, this | ||
36 | * matcher can be used to test for exact order of literal after pre-processing. | ||
37 | * | ||
38 | * @param expectedSymbolicParameters The expected list of symbolic parameters. | ||
39 | * @param expectedLiterals The expected clauses. Each clause is represented by a list of literals. | ||
40 | * @return A Hamcrest matcher for equality up to renaming of variables. | ||
41 | */ | ||
42 | public static Matcher<Dnf> structurallyEqualTo(List<SymbolicParameter> expectedSymbolicParameters, | ||
43 | List<? extends List<? extends Literal>> expectedLiterals) { | ||
44 | return new StructurallyEqualToRaw(expectedSymbolicParameters, expectedLiterals); | ||
45 | } | ||
46 | } | ||
diff --git a/subprojects/store-query/src/testFixtures/java/tools/refinery/store/query/tests/StructurallyEqualTo.java b/subprojects/store-query/src/testFixtures/java/tools/refinery/store/query/tests/StructurallyEqualTo.java new file mode 100644 index 00000000..86149141 --- /dev/null +++ b/subprojects/store-query/src/testFixtures/java/tools/refinery/store/query/tests/StructurallyEqualTo.java | |||
@@ -0,0 +1,41 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.tests; | ||
7 | |||
8 | import org.hamcrest.Description; | ||
9 | import org.hamcrest.TypeSafeMatcher; | ||
10 | import tools.refinery.store.query.dnf.Dnf; | ||
11 | import tools.refinery.store.query.equality.DeepDnfEqualityChecker; | ||
12 | |||
13 | public class StructurallyEqualTo extends TypeSafeMatcher<Dnf> { | ||
14 | private final Dnf expected; | ||
15 | |||
16 | public StructurallyEqualTo(Dnf expected) { | ||
17 | this.expected = expected; | ||
18 | } | ||
19 | |||
20 | @Override | ||
21 | protected boolean matchesSafely(Dnf item) { | ||
22 | var checker = new DeepDnfEqualityChecker(); | ||
23 | return checker.dnfEqual(expected, item); | ||
24 | } | ||
25 | |||
26 | @Override | ||
27 | protected void describeMismatchSafely(Dnf item, Description mismatchDescription) { | ||
28 | var describingChecker = new MismatchDescribingDnfEqualityChecker(mismatchDescription); | ||
29 | if (describingChecker.dnfEqual(expected, item)) { | ||
30 | throw new IllegalStateException("Mismatched Dnf was matching on repeated comparison"); | ||
31 | } | ||
32 | if (describingChecker.needsDescription()) { | ||
33 | super.describeMismatchSafely(item, mismatchDescription); | ||
34 | } | ||
35 | } | ||
36 | |||
37 | @Override | ||
38 | public void describeTo(Description description) { | ||
39 | description.appendText("structurally equal to ").appendText(expected.toDefinitionString()); | ||
40 | } | ||
41 | } | ||
diff --git a/subprojects/store-query/src/testFixtures/java/tools/refinery/store/query/tests/StructurallyEqualToRaw.java b/subprojects/store-query/src/testFixtures/java/tools/refinery/store/query/tests/StructurallyEqualToRaw.java new file mode 100644 index 00000000..2f8c2944 --- /dev/null +++ b/subprojects/store-query/src/testFixtures/java/tools/refinery/store/query/tests/StructurallyEqualToRaw.java | |||
@@ -0,0 +1,51 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.query.tests; | ||
7 | |||
8 | import org.hamcrest.Description; | ||
9 | import org.hamcrest.TypeSafeMatcher; | ||
10 | import tools.refinery.store.query.dnf.Dnf; | ||
11 | import tools.refinery.store.query.dnf.SymbolicParameter; | ||
12 | import tools.refinery.store.query.equality.DeepDnfEqualityChecker; | ||
13 | import tools.refinery.store.query.literal.Literal; | ||
14 | |||
15 | import java.util.List; | ||
16 | |||
17 | public class StructurallyEqualToRaw extends TypeSafeMatcher<Dnf> { | ||
18 | private final List<SymbolicParameter> expectedSymbolicParameters; | ||
19 | private final List<? extends List<? extends Literal>> expectedClauses; | ||
20 | |||
21 | public StructurallyEqualToRaw(List<SymbolicParameter> expectedSymbolicParameters, | ||
22 | List<? extends List<? extends Literal>> expectedClauses) { | ||
23 | this.expectedSymbolicParameters = expectedSymbolicParameters; | ||
24 | this.expectedClauses = expectedClauses; | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | protected boolean matchesSafely(Dnf item) { | ||
29 | var checker = new DeepDnfEqualityChecker(); | ||
30 | return checker.dnfEqualRaw(expectedSymbolicParameters, expectedClauses, item); | ||
31 | } | ||
32 | |||
33 | @Override | ||
34 | protected void describeMismatchSafely(Dnf item, Description mismatchDescription) { | ||
35 | var describingChecker = new MismatchDescribingDnfEqualityChecker(mismatchDescription); | ||
36 | if (describingChecker.dnfEqualRaw(expectedSymbolicParameters, expectedClauses, item)) { | ||
37 | throw new IllegalStateException("Mismatched Dnf was matching on repeated comparison"); | ||
38 | } | ||
39 | if (describingChecker.needsDescription()) { | ||
40 | super.describeMismatchSafely(item, mismatchDescription); | ||
41 | } | ||
42 | } | ||
43 | |||
44 | @Override | ||
45 | public void describeTo(Description description) { | ||
46 | description.appendText("structurally equal to ") | ||
47 | .appendValueList("(", ", ", ")", expectedSymbolicParameters) | ||
48 | .appendText(" <-> ") | ||
49 | .appendValueList("", ", ", ".", expectedClauses); | ||
50 | } | ||
51 | } | ||
diff --git a/subprojects/store-reasoning/build.gradle.kts b/subprojects/store-reasoning/build.gradle.kts new file mode 100644 index 00000000..abad0491 --- /dev/null +++ b/subprojects/store-reasoning/build.gradle.kts | |||
@@ -0,0 +1,13 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | plugins { | ||
8 | id("tools.refinery.gradle.java-library") | ||
9 | } | ||
10 | |||
11 | dependencies { | ||
12 | api(project(":refinery-store-query")) | ||
13 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/AnyPartialInterpretation.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/AnyPartialInterpretation.java new file mode 100644 index 00000000..000171a1 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/AnyPartialInterpretation.java | |||
@@ -0,0 +1,18 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning; | ||
7 | |||
8 | import tools.refinery.store.reasoning.representation.AnyPartialSymbol; | ||
9 | |||
10 | public sealed interface AnyPartialInterpretation permits PartialInterpretation { | ||
11 | ReasoningAdapter getAdapter(); | ||
12 | |||
13 | AnyPartialSymbol getPartialSymbol(); | ||
14 | |||
15 | int countUnfinished(); | ||
16 | |||
17 | int countErrors(); | ||
18 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/MergeResult.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/MergeResult.java new file mode 100644 index 00000000..d3a216d8 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/MergeResult.java | |||
@@ -0,0 +1,20 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning; | ||
7 | |||
8 | public enum MergeResult { | ||
9 | UNCHANGED, | ||
10 | REFINED, | ||
11 | REJECTED; | ||
12 | |||
13 | public MergeResult andAlso(MergeResult other) { | ||
14 | return switch (this) { | ||
15 | case UNCHANGED -> other; | ||
16 | case REFINED -> other == REJECTED ? REJECTED : REFINED; | ||
17 | case REJECTED -> REJECTED; | ||
18 | }; | ||
19 | } | ||
20 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/PartialInterpretation.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/PartialInterpretation.java new file mode 100644 index 00000000..4140d640 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/PartialInterpretation.java | |||
@@ -0,0 +1,25 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning; | ||
7 | |||
8 | import tools.refinery.store.reasoning.representation.PartialSymbol; | ||
9 | import tools.refinery.store.map.Cursor; | ||
10 | import tools.refinery.store.tuple.Tuple; | ||
11 | |||
12 | public non-sealed interface PartialInterpretation<A, C> extends AnyPartialInterpretation { | ||
13 | @Override | ||
14 | PartialSymbol<A, C> getPartialSymbol(); | ||
15 | |||
16 | A get(Tuple key); | ||
17 | |||
18 | Cursor<Tuple, A> getAll(); | ||
19 | |||
20 | MergeResult merge(Tuple key, A value); | ||
21 | |||
22 | C getConcrete(Tuple key); | ||
23 | |||
24 | Cursor<Tuple, C> getAllConcrete(); | ||
25 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningAdapter.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningAdapter.java new file mode 100644 index 00000000..6d5d6f89 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningAdapter.java | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning; | ||
7 | |||
8 | import tools.refinery.store.adapter.ModelAdapter; | ||
9 | import tools.refinery.store.query.resultset.ResultSet; | ||
10 | import tools.refinery.store.query.dnf.Dnf; | ||
11 | import tools.refinery.store.reasoning.representation.AnyPartialSymbol; | ||
12 | import tools.refinery.store.reasoning.representation.PartialRelation; | ||
13 | import tools.refinery.store.reasoning.representation.PartialSymbol; | ||
14 | |||
15 | public interface ReasoningAdapter extends ModelAdapter { | ||
16 | PartialRelation EXISTS = new PartialRelation("exists", 1); | ||
17 | |||
18 | @Override | ||
19 | ReasoningStoreAdapter getStoreAdapter(); | ||
20 | |||
21 | default AnyPartialInterpretation getPartialInterpretation(AnyPartialSymbol partialSymbol) { | ||
22 | // Cast to disambiguate overloads. | ||
23 | var typedPartialSymbol = (PartialSymbol<?, ?>) partialSymbol; | ||
24 | return getPartialInterpretation(typedPartialSymbol); | ||
25 | } | ||
26 | |||
27 | <A, C> PartialInterpretation<A, C> getPartialInterpretation(PartialSymbol<A, C> partialSymbol); | ||
28 | |||
29 | ResultSet<Boolean> getLiftedResultSet(Dnf query); | ||
30 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningBuilder.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningBuilder.java new file mode 100644 index 00000000..d3a337e8 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningBuilder.java | |||
@@ -0,0 +1,33 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning; | ||
7 | |||
8 | import tools.refinery.store.adapter.ModelAdapterBuilder; | ||
9 | import tools.refinery.store.model.ModelStore; | ||
10 | import tools.refinery.store.reasoning.literal.Modality; | ||
11 | import tools.refinery.store.query.dnf.Dnf; | ||
12 | |||
13 | import java.util.Collection; | ||
14 | import java.util.List; | ||
15 | |||
16 | @SuppressWarnings("UnusedReturnValue") | ||
17 | public interface ReasoningBuilder extends ModelAdapterBuilder { | ||
18 | default ReasoningBuilder liftedQueries(Dnf... liftedQueries) { | ||
19 | return liftedQueries(List.of(liftedQueries)); | ||
20 | } | ||
21 | |||
22 | default ReasoningBuilder liftedQueries(Collection<Dnf> liftedQueries) { | ||
23 | liftedQueries.forEach(this::liftedQuery); | ||
24 | return this; | ||
25 | } | ||
26 | |||
27 | ReasoningBuilder liftedQuery(Dnf liftedQuery); | ||
28 | |||
29 | Dnf lift(Modality modality, Dnf query); | ||
30 | |||
31 | @Override | ||
32 | ReasoningStoreAdapter build(ModelStore store); | ||
33 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningStoreAdapter.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningStoreAdapter.java new file mode 100644 index 00000000..c9795255 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/ReasoningStoreAdapter.java | |||
@@ -0,0 +1,22 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning; | ||
7 | |||
8 | import tools.refinery.store.adapter.ModelStoreAdapter; | ||
9 | import tools.refinery.store.model.Model; | ||
10 | import tools.refinery.store.reasoning.representation.AnyPartialSymbol; | ||
11 | import tools.refinery.store.query.dnf.Dnf; | ||
12 | |||
13 | import java.util.Collection; | ||
14 | |||
15 | public interface ReasoningStoreAdapter extends ModelStoreAdapter { | ||
16 | Collection<AnyPartialSymbol> getPartialSymbols(); | ||
17 | |||
18 | Collection<Dnf> getLiftedQueries(); | ||
19 | |||
20 | @Override | ||
21 | ReasoningAdapter createModelAdapter(Model model); | ||
22 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningAdapterImpl.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningAdapterImpl.java new file mode 100644 index 00000000..1bd3ad2e --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningAdapterImpl.java | |||
@@ -0,0 +1,43 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.internal; | ||
7 | |||
8 | import tools.refinery.store.model.Model; | ||
9 | import tools.refinery.store.reasoning.ReasoningAdapter; | ||
10 | import tools.refinery.store.reasoning.PartialInterpretation; | ||
11 | import tools.refinery.store.reasoning.representation.PartialSymbol; | ||
12 | import tools.refinery.store.query.dnf.Dnf; | ||
13 | import tools.refinery.store.query.resultset.ResultSet; | ||
14 | |||
15 | public class ReasoningAdapterImpl implements ReasoningAdapter { | ||
16 | private final Model model; | ||
17 | private final ReasoningStoreAdapterImpl storeAdapter; | ||
18 | |||
19 | ReasoningAdapterImpl(Model model, ReasoningStoreAdapterImpl storeAdapter) { | ||
20 | this.model = model; | ||
21 | this.storeAdapter = storeAdapter; | ||
22 | } | ||
23 | |||
24 | @Override | ||
25 | public Model getModel() { | ||
26 | return model; | ||
27 | } | ||
28 | |||
29 | @Override | ||
30 | public ReasoningStoreAdapterImpl getStoreAdapter() { | ||
31 | return storeAdapter; | ||
32 | } | ||
33 | |||
34 | @Override | ||
35 | public <A, C> PartialInterpretation<A, C> getPartialInterpretation(PartialSymbol<A, C> partialSymbol) { | ||
36 | return null; | ||
37 | } | ||
38 | |||
39 | @Override | ||
40 | public ResultSet<Boolean> getLiftedResultSet(Dnf query) { | ||
41 | return null; | ||
42 | } | ||
43 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningBuilderImpl.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningBuilderImpl.java new file mode 100644 index 00000000..aa71496c --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningBuilderImpl.java | |||
@@ -0,0 +1,31 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.internal; | ||
7 | |||
8 | import tools.refinery.store.adapter.AbstractModelAdapterBuilder; | ||
9 | import tools.refinery.store.model.ModelStore; | ||
10 | import tools.refinery.store.query.dnf.Dnf; | ||
11 | import tools.refinery.store.reasoning.ReasoningBuilder; | ||
12 | import tools.refinery.store.reasoning.literal.Modality; | ||
13 | |||
14 | public class ReasoningBuilderImpl extends AbstractModelAdapterBuilder<ReasoningStoreAdapterImpl> | ||
15 | implements ReasoningBuilder { | ||
16 | @Override | ||
17 | public ReasoningBuilder liftedQuery(Dnf liftedQuery) { | ||
18 | return null; | ||
19 | } | ||
20 | |||
21 | @Override | ||
22 | public Dnf lift(Modality modality, Dnf query) { | ||
23 | checkNotConfigured(); | ||
24 | return null; | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public ReasoningStoreAdapterImpl doBuild(ModelStore store) { | ||
29 | return null; | ||
30 | } | ||
31 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningStoreAdapterImpl.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningStoreAdapterImpl.java new file mode 100644 index 00000000..cdddd8d6 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/internal/ReasoningStoreAdapterImpl.java | |||
@@ -0,0 +1,42 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.internal; | ||
7 | |||
8 | import tools.refinery.store.reasoning.ReasoningStoreAdapter; | ||
9 | import tools.refinery.store.model.Model; | ||
10 | import tools.refinery.store.model.ModelStore; | ||
11 | import tools.refinery.store.reasoning.representation.AnyPartialSymbol; | ||
12 | import tools.refinery.store.query.dnf.Dnf; | ||
13 | |||
14 | import java.util.Collection; | ||
15 | |||
16 | public class ReasoningStoreAdapterImpl implements ReasoningStoreAdapter { | ||
17 | private final ModelStore store; | ||
18 | |||
19 | ReasoningStoreAdapterImpl(ModelStore store) { | ||
20 | this.store = store; | ||
21 | } | ||
22 | |||
23 | @Override | ||
24 | public ModelStore getStore() { | ||
25 | return store; | ||
26 | } | ||
27 | |||
28 | @Override | ||
29 | public Collection<AnyPartialSymbol> getPartialSymbols() { | ||
30 | return null; | ||
31 | } | ||
32 | |||
33 | @Override | ||
34 | public Collection<Dnf> getLiftedQueries() { | ||
35 | return null; | ||
36 | } | ||
37 | |||
38 | @Override | ||
39 | public ReasoningAdapterImpl createModelAdapter(Model model) { | ||
40 | return new ReasoningAdapterImpl(model, this); | ||
41 | } | ||
42 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/DnfLifter.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/DnfLifter.java new file mode 100644 index 00000000..ac41d170 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/DnfLifter.java | |||
@@ -0,0 +1,128 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.lifting; | ||
7 | |||
8 | import org.jetbrains.annotations.Nullable; | ||
9 | import tools.refinery.store.query.dnf.Dnf; | ||
10 | import tools.refinery.store.query.dnf.DnfBuilder; | ||
11 | import tools.refinery.store.query.dnf.DnfClause; | ||
12 | import tools.refinery.store.query.literal.CallLiteral; | ||
13 | import tools.refinery.store.query.literal.CallPolarity; | ||
14 | import tools.refinery.store.query.literal.Literal; | ||
15 | import tools.refinery.store.query.term.NodeVariable; | ||
16 | import tools.refinery.store.query.term.Variable; | ||
17 | import tools.refinery.store.reasoning.ReasoningAdapter; | ||
18 | import tools.refinery.store.reasoning.literal.ModalConstraint; | ||
19 | import tools.refinery.store.reasoning.literal.Modality; | ||
20 | import tools.refinery.store.reasoning.literal.PartialLiterals; | ||
21 | import tools.refinery.store.util.CycleDetectingMapper; | ||
22 | |||
23 | import java.util.ArrayList; | ||
24 | import java.util.LinkedHashSet; | ||
25 | import java.util.List; | ||
26 | |||
27 | public class DnfLifter { | ||
28 | private final CycleDetectingMapper<ModalDnf, Dnf> mapper = new CycleDetectingMapper<>(ModalDnf::toString, | ||
29 | this::doLift); | ||
30 | |||
31 | public Dnf lift(Modality modality, Dnf query) { | ||
32 | return mapper.map(new ModalDnf(modality, query)); | ||
33 | } | ||
34 | |||
35 | private Dnf doLift(ModalDnf modalDnf) { | ||
36 | var modality = modalDnf.modality(); | ||
37 | var dnf = modalDnf.dnf(); | ||
38 | var builder = Dnf.builder(); | ||
39 | builder.symbolicParameters(dnf.getSymbolicParameters()); | ||
40 | boolean changed = false; | ||
41 | for (var clause : dnf.getClauses()) { | ||
42 | if (liftClause(modality, dnf, clause, builder)) { | ||
43 | changed = true; | ||
44 | } | ||
45 | } | ||
46 | if (changed) { | ||
47 | return builder.build(); | ||
48 | } | ||
49 | return dnf; | ||
50 | } | ||
51 | |||
52 | private boolean liftClause(Modality modality, Dnf originalDnf, DnfClause clause, DnfBuilder builder) { | ||
53 | boolean changed = false; | ||
54 | var quantifiedVariables = getQuantifiedDataVariables(originalDnf, clause); | ||
55 | var literals = clause.literals(); | ||
56 | var liftedLiterals = new ArrayList<Literal>(literals.size()); | ||
57 | for (var literal : literals) { | ||
58 | Literal liftedLiteral = liftLiteral(modality, literal); | ||
59 | if (liftedLiteral == null) { | ||
60 | liftedLiteral = literal; | ||
61 | } else { | ||
62 | changed = true; | ||
63 | } | ||
64 | liftedLiterals.add(liftedLiteral); | ||
65 | var variable = isExistsLiteralForVariable(modality, liftedLiteral); | ||
66 | if (variable != null) { | ||
67 | // If we already quantify over the existence of the variable with the expected modality, | ||
68 | // we don't need to insert quantification manually. | ||
69 | quantifiedVariables.remove(variable); | ||
70 | } | ||
71 | } | ||
72 | for (var quantifiedVariable : quantifiedVariables) { | ||
73 | // Quantify over data variables that are not already quantified with the expected modality. | ||
74 | liftedLiterals.add(new CallLiteral(CallPolarity.POSITIVE, | ||
75 | new ModalConstraint(modality, ReasoningAdapter.EXISTS), List.of(quantifiedVariable))); | ||
76 | } | ||
77 | builder.clause(liftedLiterals); | ||
78 | return changed || !quantifiedVariables.isEmpty(); | ||
79 | } | ||
80 | |||
81 | private static LinkedHashSet<Variable> getQuantifiedDataVariables(Dnf originalDnf, DnfClause clause) { | ||
82 | var quantifiedVariables = new LinkedHashSet<>(clause.positiveVariables()); | ||
83 | for (var symbolicParameter : originalDnf.getSymbolicParameters()) { | ||
84 | // The existence of parameters will be checked outside this DNF. | ||
85 | quantifiedVariables.remove(symbolicParameter.getVariable()); | ||
86 | } | ||
87 | quantifiedVariables.removeIf(variable -> !(variable instanceof NodeVariable)); | ||
88 | return quantifiedVariables; | ||
89 | } | ||
90 | |||
91 | @Nullable | ||
92 | private Variable isExistsLiteralForVariable(Modality modality, Literal literal) { | ||
93 | if (literal instanceof CallLiteral callLiteral && | ||
94 | callLiteral.getPolarity() == CallPolarity.POSITIVE && | ||
95 | callLiteral.getTarget() instanceof ModalConstraint modalConstraint && | ||
96 | modalConstraint.modality() == modality && | ||
97 | modalConstraint.constraint().equals(ReasoningAdapter.EXISTS)) { | ||
98 | return callLiteral.getArguments().get(0); | ||
99 | } | ||
100 | return null; | ||
101 | } | ||
102 | |||
103 | @Nullable | ||
104 | private Literal liftLiteral(Modality modality, Literal literal) { | ||
105 | if (!(literal instanceof CallLiteral callLiteral)) { | ||
106 | return null; | ||
107 | } | ||
108 | var target = callLiteral.getTarget(); | ||
109 | if (target instanceof ModalConstraint modalTarget) { | ||
110 | var actualTarget = modalTarget.constraint(); | ||
111 | if (actualTarget instanceof Dnf dnf) { | ||
112 | var targetModality = modalTarget.modality(); | ||
113 | var liftedTarget = lift(targetModality, dnf); | ||
114 | return new CallLiteral(callLiteral.getPolarity(), liftedTarget, callLiteral.getArguments()); | ||
115 | } | ||
116 | // No more lifting to be done, pass any modal call to a partial symbol through. | ||
117 | return null; | ||
118 | } else if (target instanceof Dnf dnf) { | ||
119 | var polarity = callLiteral.getPolarity(); | ||
120 | var liftedTarget = lift(modality.commute(polarity), dnf); | ||
121 | // Use == instead of equals(), because lift will return the same object by reference is there are no | ||
122 | // changes made during lifting. | ||
123 | return liftedTarget == target ? null : new CallLiteral(polarity, liftedTarget, callLiteral.getArguments()); | ||
124 | } else { | ||
125 | return PartialLiterals.addModality(callLiteral, modality); | ||
126 | } | ||
127 | } | ||
128 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/ModalDnf.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/ModalDnf.java new file mode 100644 index 00000000..16fb8fbf --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/lifting/ModalDnf.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.lifting; | ||
7 | |||
8 | import tools.refinery.store.query.dnf.Dnf; | ||
9 | import tools.refinery.store.reasoning.literal.Modality; | ||
10 | |||
11 | record ModalDnf(Modality modality, Dnf dnf) { | ||
12 | @Override | ||
13 | public String toString() { | ||
14 | return "%s %s".formatted(modality, dnf.name()); | ||
15 | } | ||
16 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/ModalConstraint.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/ModalConstraint.java new file mode 100644 index 00000000..4e5a6099 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/ModalConstraint.java | |||
@@ -0,0 +1,51 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.literal; | ||
7 | |||
8 | import tools.refinery.store.query.Constraint; | ||
9 | import tools.refinery.store.query.equality.LiteralEqualityHelper; | ||
10 | import tools.refinery.store.query.literal.Reduction; | ||
11 | import tools.refinery.store.query.term.Parameter; | ||
12 | |||
13 | import java.util.List; | ||
14 | |||
15 | public record ModalConstraint(Modality modality, Constraint constraint) implements Constraint { | ||
16 | private static final String FORMAT = "%s %s"; | ||
17 | |||
18 | @Override | ||
19 | public String name() { | ||
20 | return FORMAT.formatted(modality, constraint.name()); | ||
21 | } | ||
22 | |||
23 | @Override | ||
24 | public List<Parameter> getParameters() { | ||
25 | return constraint.getParameters(); | ||
26 | } | ||
27 | |||
28 | @Override | ||
29 | public Reduction getReduction() { | ||
30 | return constraint.getReduction(); | ||
31 | } | ||
32 | |||
33 | @Override | ||
34 | public boolean equals(LiteralEqualityHelper helper, Constraint other) { | ||
35 | if (getClass() != other.getClass()) { | ||
36 | return false; | ||
37 | } | ||
38 | var otherModalConstraint = (ModalConstraint) other; | ||
39 | return modality == otherModalConstraint.modality && constraint.equals(helper, otherModalConstraint.constraint); | ||
40 | } | ||
41 | |||
42 | @Override | ||
43 | public String toReferenceString() { | ||
44 | return FORMAT.formatted(modality, constraint.toReferenceString()); | ||
45 | } | ||
46 | |||
47 | @Override | ||
48 | public String toString() { | ||
49 | return FORMAT.formatted(modality, constraint); | ||
50 | } | ||
51 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/Modality.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/Modality.java new file mode 100644 index 00000000..96466d5c --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/Modality.java | |||
@@ -0,0 +1,36 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.literal; | ||
7 | |||
8 | import tools.refinery.store.query.literal.CallPolarity; | ||
9 | |||
10 | import java.util.Locale; | ||
11 | |||
12 | public enum Modality { | ||
13 | MUST, | ||
14 | MAY, | ||
15 | CURRENT; | ||
16 | |||
17 | public Modality negate() { | ||
18 | return switch(this) { | ||
19 | case MUST -> MAY; | ||
20 | case MAY -> MUST; | ||
21 | case CURRENT -> CURRENT; | ||
22 | }; | ||
23 | } | ||
24 | |||
25 | public Modality commute(CallPolarity polarity) { | ||
26 | if (polarity.isPositive()) { | ||
27 | return this; | ||
28 | } | ||
29 | return this.negate(); | ||
30 | } | ||
31 | |||
32 | @Override | ||
33 | public String toString() { | ||
34 | return name().toLowerCase(Locale.ROOT); | ||
35 | } | ||
36 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/PartialLiterals.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/PartialLiterals.java new file mode 100644 index 00000000..0e46a795 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/literal/PartialLiterals.java | |||
@@ -0,0 +1,36 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.literal; | ||
7 | |||
8 | import tools.refinery.store.query.literal.CallLiteral; | ||
9 | |||
10 | public final class PartialLiterals { | ||
11 | private PartialLiterals() { | ||
12 | throw new IllegalStateException("This is a static utility class and should not be instantiated directly"); | ||
13 | } | ||
14 | |||
15 | public static CallLiteral may(CallLiteral literal) { | ||
16 | return addModality(literal, Modality.MAY); | ||
17 | } | ||
18 | |||
19 | public static CallLiteral must(CallLiteral literal) { | ||
20 | return addModality(literal, Modality.MUST); | ||
21 | } | ||
22 | |||
23 | public static CallLiteral current(CallLiteral literal) { | ||
24 | return addModality(literal, Modality.CURRENT); | ||
25 | } | ||
26 | |||
27 | public static CallLiteral addModality(CallLiteral literal, Modality modality) { | ||
28 | var target = literal.getTarget(); | ||
29 | if (target instanceof ModalConstraint) { | ||
30 | throw new IllegalArgumentException("Literal %s already has modality".formatted(literal)); | ||
31 | } | ||
32 | var polarity = literal.getPolarity(); | ||
33 | var modalTarget = new ModalConstraint(modality.commute(polarity), target); | ||
34 | return new CallLiteral(polarity, modalTarget, literal.getArguments()); | ||
35 | } | ||
36 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/AnyPartialFunction.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/AnyPartialFunction.java new file mode 100644 index 00000000..8d2cb5cf --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/AnyPartialFunction.java | |||
@@ -0,0 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.representation; | ||
7 | |||
8 | public sealed interface AnyPartialFunction extends AnyPartialSymbol permits PartialFunction { | ||
9 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/AnyPartialSymbol.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/AnyPartialSymbol.java new file mode 100644 index 00000000..788eef73 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/AnyPartialSymbol.java | |||
@@ -0,0 +1,16 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.representation; | ||
7 | |||
8 | import tools.refinery.store.representation.AnyAbstractDomain; | ||
9 | |||
10 | public sealed interface AnyPartialSymbol permits AnyPartialFunction, PartialSymbol { | ||
11 | String name(); | ||
12 | |||
13 | int arity(); | ||
14 | |||
15 | AnyAbstractDomain abstractDomain(); | ||
16 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialFunction.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialFunction.java new file mode 100644 index 00000000..d58d026f --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialFunction.java | |||
@@ -0,0 +1,37 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.representation; | ||
7 | |||
8 | import tools.refinery.store.representation.AbstractDomain; | ||
9 | |||
10 | public record PartialFunction<A, C>(String name, int arity, AbstractDomain<A, C> abstractDomain) | ||
11 | implements AnyPartialFunction, PartialSymbol<A, C> { | ||
12 | @Override | ||
13 | public A defaultValue() { | ||
14 | return null; | ||
15 | } | ||
16 | |||
17 | @Override | ||
18 | public C defaultConcreteValue() { | ||
19 | return null; | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | public boolean equals(Object o) { | ||
24 | return this == o; | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public int hashCode() { | ||
29 | // Compare by identity to make hash table lookups more efficient. | ||
30 | return System.identityHashCode(this); | ||
31 | } | ||
32 | |||
33 | @Override | ||
34 | public String toString() { | ||
35 | return "%s/%d".formatted(name, arity); | ||
36 | } | ||
37 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialRelation.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialRelation.java new file mode 100644 index 00000000..6b2f050b --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialRelation.java | |||
@@ -0,0 +1,60 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.representation; | ||
7 | |||
8 | import tools.refinery.store.query.Constraint; | ||
9 | import tools.refinery.store.query.term.Parameter; | ||
10 | import tools.refinery.store.representation.AbstractDomain; | ||
11 | import tools.refinery.store.representation.TruthValue; | ||
12 | import tools.refinery.store.representation.TruthValueDomain; | ||
13 | |||
14 | import java.util.Arrays; | ||
15 | import java.util.List; | ||
16 | |||
17 | public record PartialRelation(String name, int arity) implements PartialSymbol<TruthValue, Boolean>, Constraint { | ||
18 | @Override | ||
19 | public AbstractDomain<TruthValue, Boolean> abstractDomain() { | ||
20 | return TruthValueDomain.INSTANCE; | ||
21 | } | ||
22 | |||
23 | @Override | ||
24 | public TruthValue defaultValue() { | ||
25 | return TruthValue.FALSE; | ||
26 | } | ||
27 | |||
28 | @Override | ||
29 | public Boolean defaultConcreteValue() { | ||
30 | return false; | ||
31 | } | ||
32 | |||
33 | @Override | ||
34 | public List<Parameter> getParameters() { | ||
35 | var parameters = new Parameter[arity]; | ||
36 | Arrays.fill(parameters, Parameter.NODE_OUT); | ||
37 | return List.of(parameters); | ||
38 | } | ||
39 | |||
40 | @Override | ||
41 | public String toReferenceString() { | ||
42 | return name; | ||
43 | } | ||
44 | |||
45 | @Override | ||
46 | public boolean equals(Object o) { | ||
47 | return this == o; | ||
48 | } | ||
49 | |||
50 | @Override | ||
51 | public int hashCode() { | ||
52 | // Compare by identity to make hash table lookups more efficient. | ||
53 | return System.identityHashCode(this); | ||
54 | } | ||
55 | |||
56 | @Override | ||
57 | public String toString() { | ||
58 | return "%s/%d".formatted(name, arity); | ||
59 | } | ||
60 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialSymbol.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialSymbol.java new file mode 100644 index 00000000..3a08bdd8 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/representation/PartialSymbol.java | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.representation; | ||
7 | |||
8 | import tools.refinery.store.representation.AbstractDomain; | ||
9 | |||
10 | public sealed interface PartialSymbol<A, C> extends AnyPartialSymbol permits PartialFunction, PartialRelation { | ||
11 | @Override | ||
12 | AbstractDomain<A, C> abstractDomain(); | ||
13 | |||
14 | A defaultValue(); | ||
15 | |||
16 | C defaultConcreteValue(); | ||
17 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/Seed.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/Seed.java new file mode 100644 index 00000000..08079f12 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/Seed.java | |||
@@ -0,0 +1,19 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.seed; | ||
7 | |||
8 | import tools.refinery.store.map.Cursor; | ||
9 | import tools.refinery.store.tuple.Tuple; | ||
10 | |||
11 | public interface Seed<T> { | ||
12 | int arity(); | ||
13 | |||
14 | T reducedValue(); | ||
15 | |||
16 | T get(Tuple key); | ||
17 | |||
18 | Cursor<Tuple, T> getCursor(T defaultValue, int nodeCount); | ||
19 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/UniformSeed.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/UniformSeed.java new file mode 100644 index 00000000..451d1513 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/seed/UniformSeed.java | |||
@@ -0,0 +1,27 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.seed; | ||
7 | |||
8 | import tools.refinery.store.map.Cursor; | ||
9 | import tools.refinery.store.tuple.Tuple; | ||
10 | |||
11 | public record UniformSeed<T>(int arity, T reducedValue) implements Seed<T> { | ||
12 | public UniformSeed { | ||
13 | if (arity < 0) { | ||
14 | throw new IllegalArgumentException("Arity must not be negative"); | ||
15 | } | ||
16 | } | ||
17 | |||
18 | @Override | ||
19 | public T get(Tuple key) { | ||
20 | return reducedValue; | ||
21 | } | ||
22 | |||
23 | @Override | ||
24 | public Cursor<Tuple, T> getCursor(T defaultValue, int nodeCount) { | ||
25 | return null; | ||
26 | } | ||
27 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/Advice.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/Advice.java new file mode 100644 index 00000000..d6a9e02c --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/Advice.java | |||
@@ -0,0 +1,159 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.translator; | ||
7 | |||
8 | import tools.refinery.store.query.substitution.Substitution; | ||
9 | import tools.refinery.store.reasoning.representation.AnyPartialSymbol; | ||
10 | import tools.refinery.store.reasoning.representation.PartialRelation; | ||
11 | import tools.refinery.store.query.term.Variable; | ||
12 | import tools.refinery.store.query.literal.Literal; | ||
13 | |||
14 | import java.util.*; | ||
15 | |||
16 | public final class Advice { | ||
17 | private final AnyPartialSymbol source; | ||
18 | private final PartialRelation target; | ||
19 | private final AdviceSlot slot; | ||
20 | private final boolean mandatory; | ||
21 | private final List<Variable> parameters; | ||
22 | private final List<Literal> literals; | ||
23 | private boolean processed; | ||
24 | |||
25 | public Advice(AnyPartialSymbol source, PartialRelation target, AdviceSlot slot, boolean mandatory, List<Variable> parameters, List<Literal> literals) { | ||
26 | if (mandatory && !slot.isMonotonic()) { | ||
27 | throw new IllegalArgumentException("Only monotonic advice can be mandatory"); | ||
28 | } | ||
29 | this.source = source; | ||
30 | this.target = target; | ||
31 | this.slot = slot; | ||
32 | this.mandatory = mandatory; | ||
33 | checkArity(parameters); | ||
34 | this.parameters = parameters; | ||
35 | this.literals = literals; | ||
36 | } | ||
37 | |||
38 | public AnyPartialSymbol source() { | ||
39 | return source; | ||
40 | } | ||
41 | |||
42 | public PartialRelation target() { | ||
43 | return target; | ||
44 | } | ||
45 | |||
46 | public AdviceSlot slot() { | ||
47 | return slot; | ||
48 | } | ||
49 | |||
50 | public boolean mandatory() { | ||
51 | return mandatory; | ||
52 | } | ||
53 | |||
54 | public List<Variable> parameters() { | ||
55 | return parameters; | ||
56 | } | ||
57 | |||
58 | public List<Literal> literals() { | ||
59 | return literals; | ||
60 | } | ||
61 | |||
62 | public boolean processed() { | ||
63 | return processed; | ||
64 | } | ||
65 | |||
66 | public List<Literal> substitute(List<Variable> substituteParameters) { | ||
67 | checkArity(substituteParameters); | ||
68 | markProcessed(); | ||
69 | // Use a renewing substitution to remove any non-parameter variables and avoid clashed between variables | ||
70 | // coming from different advice in the same clause. | ||
71 | var substitution = Substitution.builder().putManyChecked(parameters, substituteParameters).renewing().build(); | ||
72 | return literals.stream().map(literal -> literal.substitute(substitution)).toList(); | ||
73 | } | ||
74 | |||
75 | private void markProcessed() { | ||
76 | processed = true; | ||
77 | } | ||
78 | |||
79 | public void checkProcessed() { | ||
80 | if (mandatory && !processed) { | ||
81 | throw new IllegalStateException("Mandatory advice %s was not processed".formatted(this)); | ||
82 | } | ||
83 | } | ||
84 | |||
85 | private void checkArity(List<Variable> toCheck) { | ||
86 | if (toCheck.size() != target.arity()) { | ||
87 | throw new IllegalArgumentException("%s needs %d parameters, but got %s".formatted(target.name(), | ||
88 | target.arity(), parameters.size())); | ||
89 | } | ||
90 | } | ||
91 | |||
92 | public static Builder builderFor(AnyPartialSymbol source, PartialRelation target, AdviceSlot slot) { | ||
93 | return new Builder(source, target, slot); | ||
94 | } | ||
95 | |||
96 | |||
97 | @Override | ||
98 | public String toString() { | ||
99 | return "Advice[source=%s, target=%s, slot=%s, mandatory=%s, parameters=%s, literals=%s]".formatted(source, | ||
100 | target, slot, mandatory, parameters, literals); | ||
101 | } | ||
102 | |||
103 | public static class Builder { | ||
104 | private final AnyPartialSymbol source; | ||
105 | private final PartialRelation target; | ||
106 | private final AdviceSlot slot; | ||
107 | private boolean mandatory; | ||
108 | private final List<Variable> parameters = new ArrayList<>(); | ||
109 | private final List<Literal> literals = new ArrayList<>(); | ||
110 | |||
111 | private Builder(AnyPartialSymbol source, PartialRelation target, AdviceSlot slot) { | ||
112 | this.source = source; | ||
113 | this.target = target; | ||
114 | this.slot = slot; | ||
115 | } | ||
116 | |||
117 | public Builder mandatory(boolean mandatory) { | ||
118 | this.mandatory = mandatory; | ||
119 | return this; | ||
120 | } | ||
121 | |||
122 | public Builder mandatory() { | ||
123 | return mandatory(false); | ||
124 | } | ||
125 | |||
126 | public Builder parameters(List<Variable> variables) { | ||
127 | parameters.addAll(variables); | ||
128 | return this; | ||
129 | } | ||
130 | |||
131 | public Builder parameters(Variable... variables) { | ||
132 | return parameters(List.of(variables)); | ||
133 | } | ||
134 | |||
135 | public Builder parameter(Variable variable) { | ||
136 | parameters.add(variable); | ||
137 | return this; | ||
138 | } | ||
139 | |||
140 | public Builder literals(Collection<Literal> literals) { | ||
141 | this.literals.addAll(literals); | ||
142 | return this; | ||
143 | } | ||
144 | |||
145 | public Builder literals(Literal... literals) { | ||
146 | return literals(List.of(literals)); | ||
147 | } | ||
148 | |||
149 | public Builder literal(Literal literal) { | ||
150 | literals.add(literal); | ||
151 | return this; | ||
152 | } | ||
153 | |||
154 | public Advice build() { | ||
155 | return new Advice(source, target, slot, mandatory, Collections.unmodifiableList(parameters), | ||
156 | Collections.unmodifiableList(literals)); | ||
157 | } | ||
158 | } | ||
159 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/AdviceSlot.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/AdviceSlot.java new file mode 100644 index 00000000..bab20340 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/AdviceSlot.java | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.translator; | ||
7 | |||
8 | import tools.refinery.store.representation.TruthValue; | ||
9 | |||
10 | public enum AdviceSlot { | ||
11 | EXTEND_MUST(true), | ||
12 | |||
13 | RESTRICT_MAY(true), | ||
14 | |||
15 | /** | ||
16 | * Same as {@link #RESTRICT_MAY}, but only active if the value of the relation is not {@link TruthValue#TRUE} or | ||
17 | * {@link TruthValue#ERROR}. | ||
18 | */ | ||
19 | RESTRICT_NEW(false); | ||
20 | |||
21 | private final boolean monotonic; | ||
22 | |||
23 | AdviceSlot(boolean monotonic) { | ||
24 | this.monotonic = monotonic; | ||
25 | } | ||
26 | |||
27 | public boolean isMonotonic() { | ||
28 | return monotonic; | ||
29 | } | ||
30 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/TranslatedRelation.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/TranslatedRelation.java new file mode 100644 index 00000000..4a5a8843 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/TranslatedRelation.java | |||
@@ -0,0 +1,27 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.translator; | ||
7 | |||
8 | import tools.refinery.store.model.Model; | ||
9 | import tools.refinery.store.query.term.Variable; | ||
10 | import tools.refinery.store.query.literal.CallPolarity; | ||
11 | import tools.refinery.store.query.literal.Literal; | ||
12 | import tools.refinery.store.reasoning.PartialInterpretation; | ||
13 | import tools.refinery.store.reasoning.literal.Modality; | ||
14 | import tools.refinery.store.reasoning.representation.PartialRelation; | ||
15 | import tools.refinery.store.representation.TruthValue; | ||
16 | |||
17 | import java.util.List; | ||
18 | |||
19 | public interface TranslatedRelation { | ||
20 | PartialRelation getSource(); | ||
21 | |||
22 | void configure(List<Advice> advices); | ||
23 | |||
24 | List<Literal> call(CallPolarity polarity, Modality modality, List<Variable> arguments); | ||
25 | |||
26 | PartialInterpretation<TruthValue, Boolean> createPartialInterpretation(Model model); | ||
27 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/TranslationUnit.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/TranslationUnit.java new file mode 100644 index 00000000..6e44a7d7 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/TranslationUnit.java | |||
@@ -0,0 +1,32 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.translator; | ||
7 | |||
8 | import tools.refinery.store.model.Model; | ||
9 | import tools.refinery.store.reasoning.ReasoningBuilder; | ||
10 | |||
11 | import java.util.Collection; | ||
12 | |||
13 | public abstract class TranslationUnit { | ||
14 | private ReasoningBuilder reasoningBuilder; | ||
15 | |||
16 | protected ReasoningBuilder getReasoningBuilder() { | ||
17 | return reasoningBuilder; | ||
18 | } | ||
19 | |||
20 | public void setPartialInterpretationBuilder(ReasoningBuilder reasoningBuilder) { | ||
21 | this.reasoningBuilder = reasoningBuilder; | ||
22 | configureReasoningBuilder(); | ||
23 | } | ||
24 | |||
25 | protected void configureReasoningBuilder() { | ||
26 | // Nothing to configure by default. | ||
27 | } | ||
28 | |||
29 | public abstract Collection<TranslatedRelation> getTranslatedRelations(); | ||
30 | |||
31 | public abstract void initializeModel(Model model, int nodeCount); | ||
32 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/base/BaseDecisionInterpretation.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/base/BaseDecisionInterpretation.java new file mode 100644 index 00000000..2a151aa2 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/base/BaseDecisionInterpretation.java | |||
@@ -0,0 +1,93 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.translator.base; | ||
7 | |||
8 | import tools.refinery.store.map.Cursor; | ||
9 | import tools.refinery.store.model.Interpretation; | ||
10 | import tools.refinery.store.query.resultset.ResultSet; | ||
11 | import tools.refinery.store.reasoning.MergeResult; | ||
12 | import tools.refinery.store.reasoning.PartialInterpretation; | ||
13 | import tools.refinery.store.reasoning.ReasoningAdapter; | ||
14 | import tools.refinery.store.reasoning.representation.PartialRelation; | ||
15 | import tools.refinery.store.representation.TruthValue; | ||
16 | import tools.refinery.store.tuple.Tuple; | ||
17 | |||
18 | public class BaseDecisionInterpretation implements PartialInterpretation<TruthValue, Boolean> { | ||
19 | private final ReasoningAdapter reasoningAdapter; | ||
20 | private PartialRelation partialRelation; | ||
21 | private final ResultSet<Boolean> mustResultSet; | ||
22 | private final ResultSet<Boolean> mayResultSet; | ||
23 | private final ResultSet<Boolean> errorResultSet; | ||
24 | private final ResultSet<Boolean> currentResultSet; | ||
25 | private final Interpretation<TruthValue> interpretation; | ||
26 | |||
27 | public BaseDecisionInterpretation(ReasoningAdapter reasoningAdapter, ResultSet<Boolean> mustResultSet, | ||
28 | ResultSet<Boolean> mayResultSet, ResultSet<Boolean> errorResultSet, | ||
29 | ResultSet<Boolean> currentResultSet, Interpretation<TruthValue> interpretation) { | ||
30 | this.reasoningAdapter = reasoningAdapter; | ||
31 | this.mustResultSet = mustResultSet; | ||
32 | this.mayResultSet = mayResultSet; | ||
33 | this.errorResultSet = errorResultSet; | ||
34 | this.currentResultSet = currentResultSet; | ||
35 | this.interpretation = interpretation; | ||
36 | } | ||
37 | |||
38 | @Override | ||
39 | public ReasoningAdapter getAdapter() { | ||
40 | return reasoningAdapter; | ||
41 | } | ||
42 | |||
43 | @Override | ||
44 | public int countUnfinished() { | ||
45 | return 0; | ||
46 | } | ||
47 | |||
48 | @Override | ||
49 | public int countErrors() { | ||
50 | return errorResultSet.size(); | ||
51 | } | ||
52 | |||
53 | @Override | ||
54 | public PartialRelation getPartialSymbol() { | ||
55 | return partialRelation; | ||
56 | } | ||
57 | |||
58 | @Override | ||
59 | public TruthValue get(Tuple key) { | ||
60 | return null; | ||
61 | } | ||
62 | |||
63 | @Override | ||
64 | public Cursor<Tuple, TruthValue> getAll() { | ||
65 | return null; | ||
66 | } | ||
67 | |||
68 | @Override | ||
69 | public MergeResult merge(Tuple key, TruthValue value) { | ||
70 | TruthValue newValue; | ||
71 | switch (value) { | ||
72 | case UNKNOWN -> { | ||
73 | return MergeResult.UNCHANGED; | ||
74 | } | ||
75 | case TRUE -> newValue = mayResultSet.get(key) ? TruthValue.TRUE : TruthValue.ERROR; | ||
76 | case FALSE -> newValue = mustResultSet.get(key) ? TruthValue.ERROR : TruthValue.FALSE; | ||
77 | case ERROR -> newValue = TruthValue.ERROR; | ||
78 | default -> throw new IllegalArgumentException("Unknown truth value: " + value); | ||
79 | } | ||
80 | var oldValue = interpretation.put(key, newValue); | ||
81 | return oldValue == TruthValue.ERROR ? MergeResult.UNCHANGED : MergeResult.REFINED; | ||
82 | } | ||
83 | |||
84 | @Override | ||
85 | public Boolean getConcrete(Tuple key) { | ||
86 | return currentResultSet.get(key); | ||
87 | } | ||
88 | |||
89 | @Override | ||
90 | public Cursor<Tuple, Boolean> getAllConcrete() { | ||
91 | return null; | ||
92 | } | ||
93 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/base/BaseDecisionTranslationUnit.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/base/BaseDecisionTranslationUnit.java new file mode 100644 index 00000000..a1e4b816 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/base/BaseDecisionTranslationUnit.java | |||
@@ -0,0 +1,49 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.translator.base; | ||
7 | |||
8 | import tools.refinery.store.model.Model; | ||
9 | import tools.refinery.store.reasoning.representation.PartialRelation; | ||
10 | import tools.refinery.store.reasoning.seed.Seed; | ||
11 | import tools.refinery.store.reasoning.seed.UniformSeed; | ||
12 | import tools.refinery.store.reasoning.translator.TranslatedRelation; | ||
13 | import tools.refinery.store.reasoning.translator.TranslationUnit; | ||
14 | import tools.refinery.store.representation.Symbol; | ||
15 | import tools.refinery.store.representation.TruthValue; | ||
16 | |||
17 | import java.util.Collection; | ||
18 | import java.util.List; | ||
19 | |||
20 | public class BaseDecisionTranslationUnit extends TranslationUnit { | ||
21 | private final PartialRelation partialRelation; | ||
22 | private final Seed<TruthValue> seed; | ||
23 | private final Symbol<TruthValue> symbol; | ||
24 | |||
25 | public BaseDecisionTranslationUnit(PartialRelation partialRelation, Seed<TruthValue> seed) { | ||
26 | if (seed.arity() != partialRelation.arity()) { | ||
27 | throw new IllegalArgumentException("Expected seed with arity %d for %s, got arity %s" | ||
28 | .formatted(partialRelation.arity(), partialRelation, seed.arity())); | ||
29 | } | ||
30 | this.partialRelation = partialRelation; | ||
31 | this.seed = seed; | ||
32 | symbol = Symbol.of(partialRelation.name(), partialRelation.arity(), TruthValue.class, TruthValue.UNKNOWN); | ||
33 | } | ||
34 | |||
35 | public BaseDecisionTranslationUnit(PartialRelation partialRelation) { | ||
36 | this(partialRelation, new UniformSeed<>(partialRelation.arity(), TruthValue.UNKNOWN)); | ||
37 | } | ||
38 | |||
39 | @Override | ||
40 | public Collection<TranslatedRelation> getTranslatedRelations() { | ||
41 | return List.of(new TranslatedBaseDecision(getReasoningBuilder(), partialRelation, symbol)); | ||
42 | } | ||
43 | |||
44 | @Override | ||
45 | public void initializeModel(Model model, int nodeCount) { | ||
46 | var interpretation = model.getInterpretation(symbol); | ||
47 | interpretation.putAll(seed.getCursor(TruthValue.UNKNOWN, nodeCount)); | ||
48 | } | ||
49 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/base/TranslatedBaseDecision.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/base/TranslatedBaseDecision.java new file mode 100644 index 00000000..4782eb46 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/base/TranslatedBaseDecision.java | |||
@@ -0,0 +1,54 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.translator.base; | ||
7 | |||
8 | import tools.refinery.store.model.Model; | ||
9 | import tools.refinery.store.query.term.Variable; | ||
10 | import tools.refinery.store.query.literal.CallPolarity; | ||
11 | import tools.refinery.store.query.literal.Literal; | ||
12 | import tools.refinery.store.reasoning.PartialInterpretation; | ||
13 | import tools.refinery.store.reasoning.ReasoningBuilder; | ||
14 | import tools.refinery.store.reasoning.literal.Modality; | ||
15 | import tools.refinery.store.reasoning.representation.PartialRelation; | ||
16 | import tools.refinery.store.reasoning.translator.Advice; | ||
17 | import tools.refinery.store.reasoning.translator.TranslatedRelation; | ||
18 | import tools.refinery.store.representation.Symbol; | ||
19 | import tools.refinery.store.representation.TruthValue; | ||
20 | |||
21 | import java.util.List; | ||
22 | |||
23 | class TranslatedBaseDecision implements TranslatedRelation { | ||
24 | private final ReasoningBuilder reasoningBuilder; | ||
25 | private final PartialRelation partialRelation; | ||
26 | private final Symbol<TruthValue> symbol; | ||
27 | |||
28 | public TranslatedBaseDecision(ReasoningBuilder reasoningBuilder, PartialRelation partialRelation, | ||
29 | Symbol<TruthValue> symbol) { | ||
30 | this.reasoningBuilder = reasoningBuilder; | ||
31 | this.partialRelation = partialRelation; | ||
32 | this.symbol = symbol; | ||
33 | } | ||
34 | |||
35 | @Override | ||
36 | public PartialRelation getSource() { | ||
37 | return partialRelation; | ||
38 | } | ||
39 | |||
40 | @Override | ||
41 | public void configure(List<Advice> advices) { | ||
42 | |||
43 | } | ||
44 | |||
45 | @Override | ||
46 | public List<Literal> call(CallPolarity polarity, Modality modality, List<Variable> arguments) { | ||
47 | return null; | ||
48 | } | ||
49 | |||
50 | @Override | ||
51 | public PartialInterpretation<TruthValue, Boolean> createPartialInterpretation(Model model) { | ||
52 | return null; | ||
53 | } | ||
54 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/EliminatedType.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/EliminatedType.java new file mode 100644 index 00000000..6e4728db --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/EliminatedType.java | |||
@@ -0,0 +1,11 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.translator.typehierarchy; | ||
7 | |||
8 | import tools.refinery.store.reasoning.representation.PartialRelation; | ||
9 | |||
10 | record EliminatedType(PartialRelation replacement) implements TypeAnalysisResult { | ||
11 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/ExtendedTypeInfo.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/ExtendedTypeInfo.java new file mode 100644 index 00000000..7a917dcf --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/ExtendedTypeInfo.java | |||
@@ -0,0 +1,106 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.translator.typehierarchy; | ||
7 | |||
8 | import org.jetbrains.annotations.NotNull; | ||
9 | import tools.refinery.store.reasoning.representation.PartialRelation; | ||
10 | |||
11 | import java.util.HashSet; | ||
12 | import java.util.LinkedHashSet; | ||
13 | import java.util.Objects; | ||
14 | import java.util.Set; | ||
15 | |||
16 | final class ExtendedTypeInfo implements Comparable<ExtendedTypeInfo> { | ||
17 | private final int index; | ||
18 | private final PartialRelation type; | ||
19 | private final TypeInfo typeInfo; | ||
20 | private final Set<PartialRelation> allSubtypes = new LinkedHashSet<>(); | ||
21 | private final Set<PartialRelation> allSupertypes; | ||
22 | private final Set<PartialRelation> concreteSubtypesAndSelf = new LinkedHashSet<>(); | ||
23 | private Set<PartialRelation> directSubtypes; | ||
24 | private final Set<PartialRelation> unsortedDirectSupertypes = new HashSet<>(); | ||
25 | |||
26 | public ExtendedTypeInfo(int index, PartialRelation type, TypeInfo typeInfo) { | ||
27 | this.index = index; | ||
28 | this.type = type; | ||
29 | this.typeInfo = typeInfo; | ||
30 | this.allSupertypes = new LinkedHashSet<>(typeInfo.supertypes()); | ||
31 | } | ||
32 | |||
33 | public PartialRelation getType() { | ||
34 | return type; | ||
35 | } | ||
36 | |||
37 | public TypeInfo getTypeInfo() { | ||
38 | return typeInfo; | ||
39 | } | ||
40 | |||
41 | public boolean isAbstractType() { | ||
42 | return getTypeInfo().abstractType(); | ||
43 | } | ||
44 | |||
45 | public Set<PartialRelation> getAllSubtypes() { | ||
46 | return allSubtypes; | ||
47 | } | ||
48 | |||
49 | public Set<PartialRelation> getAllSupertypes() { | ||
50 | return allSupertypes; | ||
51 | } | ||
52 | |||
53 | public Set<PartialRelation> getAllSupertypesAndSelf() { | ||
54 | var allSubtypesAndSelf = new HashSet<PartialRelation>(allSupertypes.size() + 1); | ||
55 | addMust(allSubtypesAndSelf); | ||
56 | return allSubtypesAndSelf; | ||
57 | } | ||
58 | |||
59 | public Set<PartialRelation> getConcreteSubtypesAndSelf() { | ||
60 | return concreteSubtypesAndSelf; | ||
61 | } | ||
62 | |||
63 | public Set<PartialRelation> getDirectSubtypes() { | ||
64 | return directSubtypes; | ||
65 | } | ||
66 | |||
67 | public Set<PartialRelation> getUnsortedDirectSupertypes() { | ||
68 | return unsortedDirectSupertypes; | ||
69 | } | ||
70 | |||
71 | public void setDirectSubtypes(Set<PartialRelation> directSubtypes) { | ||
72 | this.directSubtypes = directSubtypes; | ||
73 | } | ||
74 | |||
75 | public boolean allowsAllConcreteTypes(Set<PartialRelation> concreteTypes) { | ||
76 | for (var concreteType : concreteTypes) { | ||
77 | if (!concreteSubtypesAndSelf.contains(concreteType)) { | ||
78 | return false; | ||
79 | } | ||
80 | } | ||
81 | return true; | ||
82 | } | ||
83 | |||
84 | public void addMust(Set<PartialRelation> mustTypes) { | ||
85 | mustTypes.add(type); | ||
86 | mustTypes.addAll(allSupertypes); | ||
87 | } | ||
88 | |||
89 | @Override | ||
90 | public int compareTo(@NotNull ExtendedTypeInfo extendedTypeInfo) { | ||
91 | return Integer.compare(index, extendedTypeInfo.index); | ||
92 | } | ||
93 | |||
94 | @Override | ||
95 | public boolean equals(Object o) { | ||
96 | if (this == o) return true; | ||
97 | if (o == null || getClass() != o.getClass()) return false; | ||
98 | ExtendedTypeInfo that = (ExtendedTypeInfo) o; | ||
99 | return index == that.index; | ||
100 | } | ||
101 | |||
102 | @Override | ||
103 | public int hashCode() { | ||
104 | return Objects.hash(index); | ||
105 | } | ||
106 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredMayTypeView.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredMayTypeView.java new file mode 100644 index 00000000..40de4644 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredMayTypeView.java | |||
@@ -0,0 +1,40 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.translator.typehierarchy; | ||
7 | |||
8 | import tools.refinery.store.reasoning.representation.PartialRelation; | ||
9 | import tools.refinery.store.query.view.TuplePreservingView; | ||
10 | import tools.refinery.store.tuple.Tuple; | ||
11 | |||
12 | import java.util.Objects; | ||
13 | |||
14 | class InferredMayTypeView extends TuplePreservingView<InferredType> { | ||
15 | private final PartialRelation type; | ||
16 | |||
17 | InferredMayTypeView(PartialRelation type) { | ||
18 | super(TypeHierarchyTranslationUnit.INFERRED_TYPE_SYMBOL, "%s#may".formatted(type)); | ||
19 | this.type = type; | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | protected boolean doFilter(Tuple key, InferredType value) { | ||
24 | return value.mayConcreteTypes().contains(type); | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public boolean equals(Object o) { | ||
29 | if (this == o) return true; | ||
30 | if (o == null || getClass() != o.getClass()) return false; | ||
31 | if (!super.equals(o)) return false; | ||
32 | InferredMayTypeView that = (InferredMayTypeView) o; | ||
33 | return Objects.equals(type, that.type); | ||
34 | } | ||
35 | |||
36 | @Override | ||
37 | public int hashCode() { | ||
38 | return Objects.hash(super.hashCode(), type); | ||
39 | } | ||
40 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredMustTypeView.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredMustTypeView.java new file mode 100644 index 00000000..1a121547 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredMustTypeView.java | |||
@@ -0,0 +1,40 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.translator.typehierarchy; | ||
7 | |||
8 | import tools.refinery.store.reasoning.representation.PartialRelation; | ||
9 | import tools.refinery.store.query.view.TuplePreservingView; | ||
10 | import tools.refinery.store.tuple.Tuple; | ||
11 | |||
12 | import java.util.Objects; | ||
13 | |||
14 | class InferredMustTypeView extends TuplePreservingView<InferredType> { | ||
15 | private final PartialRelation type; | ||
16 | |||
17 | InferredMustTypeView(PartialRelation type) { | ||
18 | super(TypeHierarchyTranslationUnit.INFERRED_TYPE_SYMBOL, "%s#must".formatted(type)); | ||
19 | this.type = type; | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | protected boolean doFilter(Tuple key, InferredType value) { | ||
24 | return value.mustTypes().contains(type); | ||
25 | } | ||
26 | |||
27 | @Override | ||
28 | public boolean equals(Object o) { | ||
29 | if (this == o) return true; | ||
30 | if (o == null || getClass() != o.getClass()) return false; | ||
31 | if (!super.equals(o)) return false; | ||
32 | InferredMustTypeView that = (InferredMustTypeView) o; | ||
33 | return Objects.equals(type, that.type); | ||
34 | } | ||
35 | |||
36 | @Override | ||
37 | public int hashCode() { | ||
38 | return Objects.hash(super.hashCode(), type); | ||
39 | } | ||
40 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredType.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredType.java new file mode 100644 index 00000000..fd05158b --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredType.java | |||
@@ -0,0 +1,35 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.translator.typehierarchy; | ||
7 | |||
8 | import tools.refinery.store.reasoning.representation.PartialRelation; | ||
9 | |||
10 | import java.util.Collections; | ||
11 | import java.util.Set; | ||
12 | |||
13 | record InferredType(Set<PartialRelation> mustTypes, Set<PartialRelation> mayConcreteTypes, | ||
14 | PartialRelation currentType) { | ||
15 | public static final InferredType UNTYPED = new InferredType(Set.of(), Set.of(), null); | ||
16 | |||
17 | public InferredType(Set<PartialRelation> mustTypes, Set<PartialRelation> mayConcreteTypes, | ||
18 | PartialRelation currentType) { | ||
19 | this.mustTypes = Collections.unmodifiableSet(mustTypes); | ||
20 | this.mayConcreteTypes = Collections.unmodifiableSet(mayConcreteTypes); | ||
21 | this.currentType = currentType; | ||
22 | } | ||
23 | |||
24 | public boolean isConsistent() { | ||
25 | return currentType != null || mustTypes.isEmpty(); | ||
26 | } | ||
27 | |||
28 | public boolean isMust(PartialRelation partialRelation) { | ||
29 | return mustTypes.contains(partialRelation); | ||
30 | } | ||
31 | |||
32 | public boolean isMayConcrete(PartialRelation partialRelation) { | ||
33 | return mayConcreteTypes.contains(partialRelation); | ||
34 | } | ||
35 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/PreservedType.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/PreservedType.java new file mode 100644 index 00000000..0696f4c3 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/PreservedType.java | |||
@@ -0,0 +1,141 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.translator.typehierarchy; | ||
7 | |||
8 | import tools.refinery.store.reasoning.representation.PartialRelation; | ||
9 | import tools.refinery.store.representation.TruthValue; | ||
10 | |||
11 | import java.util.*; | ||
12 | |||
13 | final class PreservedType implements TypeAnalysisResult { | ||
14 | private final ExtendedTypeInfo extendedTypeInfo; | ||
15 | private final List<PartialRelation> directSubtypes; | ||
16 | private final List<ExtendedTypeInfo> allExternalTypeInfoList; | ||
17 | private final InferredType inferredType; | ||
18 | |||
19 | public PreservedType(ExtendedTypeInfo extendedTypeInfo, List<ExtendedTypeInfo> allExternalTypeInfoList) { | ||
20 | this.extendedTypeInfo = extendedTypeInfo; | ||
21 | directSubtypes = List.copyOf(extendedTypeInfo.getDirectSubtypes()); | ||
22 | this.allExternalTypeInfoList = allExternalTypeInfoList; | ||
23 | inferredType = propagateMust(extendedTypeInfo.getAllSupertypesAndSelf(), | ||
24 | extendedTypeInfo.getConcreteSubtypesAndSelf()); | ||
25 | } | ||
26 | |||
27 | public PartialRelation type() { | ||
28 | return extendedTypeInfo.getType(); | ||
29 | } | ||
30 | |||
31 | public List<PartialRelation> getDirectSubtypes() { | ||
32 | return directSubtypes; | ||
33 | } | ||
34 | |||
35 | public boolean isAbstractType() { | ||
36 | return extendedTypeInfo.isAbstractType(); | ||
37 | } | ||
38 | |||
39 | public boolean isVacuous() { | ||
40 | return isAbstractType() && directSubtypes.isEmpty(); | ||
41 | } | ||
42 | |||
43 | public InferredType asInferredType() { | ||
44 | return inferredType; | ||
45 | } | ||
46 | |||
47 | public InferredType merge(InferredType inferredType, TruthValue value) { | ||
48 | return switch (value) { | ||
49 | case UNKNOWN -> inferredType; | ||
50 | case TRUE -> addMust(inferredType); | ||
51 | case FALSE -> removeMay(inferredType); | ||
52 | case ERROR -> addError(inferredType); | ||
53 | }; | ||
54 | } | ||
55 | |||
56 | private InferredType addMust(InferredType inferredType) { | ||
57 | var originalMustTypes = inferredType.mustTypes(); | ||
58 | if (originalMustTypes.contains(type())) { | ||
59 | return inferredType; | ||
60 | } | ||
61 | var mustTypes = new HashSet<>(originalMustTypes); | ||
62 | extendedTypeInfo.addMust(mustTypes); | ||
63 | var originalMayConcreteTypes = inferredType.mayConcreteTypes(); | ||
64 | var mayConcreteTypes = new LinkedHashSet<>(originalMayConcreteTypes); | ||
65 | Set<PartialRelation> mayConcreteTypesResult; | ||
66 | if (mayConcreteTypes.retainAll(extendedTypeInfo.getConcreteSubtypesAndSelf())) { | ||
67 | mayConcreteTypesResult = mayConcreteTypes; | ||
68 | } else { | ||
69 | mayConcreteTypesResult = originalMayConcreteTypes; | ||
70 | } | ||
71 | return propagateMust(mustTypes, mayConcreteTypesResult); | ||
72 | } | ||
73 | |||
74 | private InferredType removeMay(InferredType inferredType) { | ||
75 | var originalMayConcreteTypes = inferredType.mayConcreteTypes(); | ||
76 | var mayConcreteTypes = new LinkedHashSet<>(originalMayConcreteTypes); | ||
77 | if (!mayConcreteTypes.removeAll(extendedTypeInfo.getConcreteSubtypesAndSelf())) { | ||
78 | return inferredType; | ||
79 | } | ||
80 | return propagateMust(inferredType.mustTypes(), mayConcreteTypes); | ||
81 | } | ||
82 | |||
83 | private InferredType addError(InferredType inferredType) { | ||
84 | var originalMustTypes = inferredType.mustTypes(); | ||
85 | if (originalMustTypes.contains(type())) { | ||
86 | if (inferredType.mayConcreteTypes().isEmpty()) { | ||
87 | return inferredType; | ||
88 | } | ||
89 | return new InferredType(originalMustTypes, Set.of(), null); | ||
90 | } | ||
91 | var mustTypes = new HashSet<>(originalMustTypes); | ||
92 | extendedTypeInfo.addMust(mustTypes); | ||
93 | return new InferredType(mustTypes, Set.of(), null); | ||
94 | } | ||
95 | |||
96 | private InferredType propagateMust(Set<PartialRelation> originalMustTypes, | ||
97 | Set<PartialRelation> mayConcreteTypes) { | ||
98 | // It is possible that there is not type at all, do not force one by propagation. | ||
99 | var maybeUntyped = originalMustTypes.isEmpty(); | ||
100 | // Para-consistent case, do not propagate must types to avoid logical explosion. | ||
101 | var paraConsistentOrSurelyUntyped = mayConcreteTypes.isEmpty(); | ||
102 | if (maybeUntyped || paraConsistentOrSurelyUntyped) { | ||
103 | return new InferredType(originalMustTypes, mayConcreteTypes, null); | ||
104 | } | ||
105 | var currentType = computeCurrentType(mayConcreteTypes); | ||
106 | var mustTypes = new HashSet<>(originalMustTypes); | ||
107 | boolean changed = false; | ||
108 | for (var newMustExtendedTypeInfo : allExternalTypeInfoList) { | ||
109 | var newMustType = newMustExtendedTypeInfo.getType(); | ||
110 | if (mustTypes.contains(newMustType)) { | ||
111 | continue; | ||
112 | } | ||
113 | if (newMustExtendedTypeInfo.allowsAllConcreteTypes(mayConcreteTypes)) { | ||
114 | newMustExtendedTypeInfo.addMust(mustTypes); | ||
115 | changed = true; | ||
116 | } | ||
117 | } | ||
118 | if (!changed) { | ||
119 | return new InferredType(originalMustTypes, mayConcreteTypes, currentType); | ||
120 | } | ||
121 | return new InferredType(mustTypes, mayConcreteTypes, currentType); | ||
122 | } | ||
123 | |||
124 | /** | ||
125 | * Returns a concrete type that is allowed by a (consistent, i.e., nonempty) set of <b>may</b> concrete types. | ||
126 | * | ||
127 | * @param mayConcreteTypes The set of allowed concrete types. Must not be empty. | ||
128 | * @return The first concrete type that is allowed by {@code matConcreteTypes}. | ||
129 | */ | ||
130 | private PartialRelation computeCurrentType(Set<PartialRelation> mayConcreteTypes) { | ||
131 | for (var concreteExtendedTypeInfo : allExternalTypeInfoList) { | ||
132 | var concreteType = concreteExtendedTypeInfo.getType(); | ||
133 | if (!concreteExtendedTypeInfo.isAbstractType() && mayConcreteTypes.contains(concreteType)) { | ||
134 | return concreteType; | ||
135 | } | ||
136 | } | ||
137 | // We have already filtered out the para-consistent case in {@link #propagateMust(Set<PartialRelation>, | ||
138 | // Set<PartialRelation>}. | ||
139 | throw new AssertionError("No concrete type in %s".formatted(mayConcreteTypes)); | ||
140 | } | ||
141 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalysisResult.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalysisResult.java new file mode 100644 index 00000000..fbf8a7c9 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalysisResult.java | |||
@@ -0,0 +1,9 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.translator.typehierarchy; | ||
7 | |||
8 | sealed interface TypeAnalysisResult permits EliminatedType, PreservedType { | ||
9 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalyzer.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalyzer.java new file mode 100644 index 00000000..e97ce954 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalyzer.java | |||
@@ -0,0 +1,207 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.translator.typehierarchy; | ||
7 | |||
8 | import tools.refinery.store.reasoning.representation.PartialRelation; | ||
9 | |||
10 | import java.util.*; | ||
11 | |||
12 | class TypeAnalyzer { | ||
13 | private final Map<PartialRelation, ExtendedTypeInfo> extendedTypeInfoMap; | ||
14 | private final Map<PartialRelation, PartialRelation> replacements = new LinkedHashMap<>(); | ||
15 | private final InferredType unknownType; | ||
16 | private final Map<PartialRelation, TypeAnalysisResult> analysisResults; | ||
17 | |||
18 | public TypeAnalyzer(Map<PartialRelation, TypeInfo> typeInfoMap) { | ||
19 | int size = typeInfoMap.size(); | ||
20 | extendedTypeInfoMap = new LinkedHashMap<>(size); | ||
21 | var concreteTypes = new LinkedHashSet<PartialRelation>(); | ||
22 | int index = 0; | ||
23 | for (var entry : typeInfoMap.entrySet()) { | ||
24 | var type = entry.getKey(); | ||
25 | var typeInfo = entry.getValue(); | ||
26 | extendedTypeInfoMap.put(type, new ExtendedTypeInfo(index, type, typeInfo)); | ||
27 | if (!typeInfo.abstractType()) { | ||
28 | concreteTypes.add(type); | ||
29 | } | ||
30 | index++; | ||
31 | } | ||
32 | unknownType = new InferredType(Set.of(), concreteTypes, null); | ||
33 | computeAllSupertypes(); | ||
34 | computeAllAndConcreteSubtypes(); | ||
35 | computeDirectSubtypes(); | ||
36 | eliminateTrivialSupertypes(); | ||
37 | analysisResults = computeAnalysisResults(); | ||
38 | } | ||
39 | |||
40 | public InferredType getUnknownType() { | ||
41 | return unknownType; | ||
42 | } | ||
43 | |||
44 | public Map<PartialRelation, TypeAnalysisResult> getAnalysisResults() { | ||
45 | return analysisResults; | ||
46 | } | ||
47 | |||
48 | private void computeAllSupertypes() { | ||
49 | boolean changed; | ||
50 | do { | ||
51 | changed = false; | ||
52 | for (var extendedTypeInfo : extendedTypeInfoMap.values()) { | ||
53 | var found = new HashSet<PartialRelation>(); | ||
54 | var allSupertypes = extendedTypeInfo.getAllSupertypes(); | ||
55 | for (var supertype : allSupertypes) { | ||
56 | found.addAll(extendedTypeInfoMap.get(supertype).getAllSupertypes()); | ||
57 | } | ||
58 | if (allSupertypes.addAll(found)) { | ||
59 | changed = true; | ||
60 | } | ||
61 | } | ||
62 | } while (changed); | ||
63 | } | ||
64 | |||
65 | private void computeAllAndConcreteSubtypes() { | ||
66 | for (var extendedTypeInfo : extendedTypeInfoMap.values()) { | ||
67 | var type = extendedTypeInfo.getType(); | ||
68 | if (!extendedTypeInfo.isAbstractType()) { | ||
69 | extendedTypeInfo.getConcreteSubtypesAndSelf().add(type); | ||
70 | } | ||
71 | for (var supertype : extendedTypeInfo.getAllSupertypes()) { | ||
72 | if (type.equals(supertype)) { | ||
73 | throw new IllegalArgumentException("%s cannot be a supertype of itself".formatted(type)); | ||
74 | } | ||
75 | var supertypeInfo = extendedTypeInfoMap.get(supertype); | ||
76 | supertypeInfo.getAllSubtypes().add(type); | ||
77 | if (!extendedTypeInfo.isAbstractType()) { | ||
78 | supertypeInfo.getConcreteSubtypesAndSelf().add(type); | ||
79 | } | ||
80 | } | ||
81 | } | ||
82 | } | ||
83 | |||
84 | private void computeDirectSubtypes() { | ||
85 | for (var extendedTypeInfo : extendedTypeInfoMap.values()) { | ||
86 | var allSubtypes = extendedTypeInfo.getAllSubtypes(); | ||
87 | var directSubtypes = new LinkedHashSet<>(allSubtypes); | ||
88 | var indirectSubtypes = new LinkedHashSet<PartialRelation>(allSubtypes.size()); | ||
89 | for (var subtype : allSubtypes) { | ||
90 | indirectSubtypes.addAll(extendedTypeInfoMap.get(subtype).getAllSubtypes()); | ||
91 | } | ||
92 | directSubtypes.removeAll(indirectSubtypes); | ||
93 | extendedTypeInfo.setDirectSubtypes(directSubtypes); | ||
94 | } | ||
95 | } | ||
96 | |||
97 | private void eliminateTrivialSupertypes() { | ||
98 | boolean changed; | ||
99 | do { | ||
100 | var toRemove = new ArrayList<PartialRelation>(); | ||
101 | for (var entry : extendedTypeInfoMap.entrySet()) { | ||
102 | var extendedTypeInfo = entry.getValue(); | ||
103 | boolean isAbstract = extendedTypeInfo.isAbstractType(); | ||
104 | // Do not eliminate abstract types with 0 subtypes, because they can be used para-consistently, i.e., | ||
105 | // an object determined to <b>must</b> have an abstract type with 0 subtypes <b>may not</b> ever exist. | ||
106 | boolean hasSingleDirectSubtype = extendedTypeInfo.getDirectSubtypes().size() == 1; | ||
107 | if (isAbstract && hasSingleDirectSubtype) { | ||
108 | toRemove.add(entry.getKey()); | ||
109 | } | ||
110 | } | ||
111 | toRemove.forEach(this::removeTrivialType); | ||
112 | changed = !toRemove.isEmpty(); | ||
113 | } while (changed); | ||
114 | } | ||
115 | |||
116 | private void removeTrivialType(PartialRelation trivialType) { | ||
117 | var extendedTypeInfo = extendedTypeInfoMap.get(trivialType); | ||
118 | var iterator = extendedTypeInfo.getDirectSubtypes().iterator(); | ||
119 | if (!iterator.hasNext()) { | ||
120 | throw new AssertionError("Expected trivial supertype %s to have a direct subtype" | ||
121 | .formatted(trivialType)); | ||
122 | } | ||
123 | PartialRelation replacement = setReplacement(trivialType, iterator.next()); | ||
124 | if (iterator.hasNext()) { | ||
125 | throw new AssertionError("Expected trivial supertype %s to have at most 1 direct subtype" | ||
126 | .formatted(trivialType)); | ||
127 | } | ||
128 | replacements.put(trivialType, replacement); | ||
129 | for (var supertype : extendedTypeInfo.getAllSupertypes()) { | ||
130 | var extendedSupertypeInfo = extendedTypeInfoMap.get(supertype); | ||
131 | if (!extendedSupertypeInfo.getAllSubtypes().remove(trivialType)) { | ||
132 | throw new AssertionError("Expected %s to be subtype of %s".formatted(trivialType, supertype)); | ||
133 | } | ||
134 | var directSubtypes = extendedSupertypeInfo.getDirectSubtypes(); | ||
135 | if (directSubtypes.remove(trivialType)) { | ||
136 | directSubtypes.add(replacement); | ||
137 | } | ||
138 | } | ||
139 | for (var subtype : extendedTypeInfo.getAllSubtypes()) { | ||
140 | var extendedSubtypeInfo = extendedTypeInfoMap.get(subtype); | ||
141 | if (!extendedSubtypeInfo.getAllSupertypes().remove(trivialType)) { | ||
142 | throw new AssertionError("Expected %s to be supertype of %s".formatted(trivialType, subtype)); | ||
143 | } | ||
144 | } | ||
145 | extendedTypeInfoMap.remove(trivialType); | ||
146 | } | ||
147 | |||
148 | private PartialRelation setReplacement(PartialRelation trivialRelation, PartialRelation replacement) { | ||
149 | if (replacement == null) { | ||
150 | return trivialRelation; | ||
151 | } | ||
152 | var resolved = setReplacement(replacement, replacements.get(replacement)); | ||
153 | replacements.put(trivialRelation, resolved); | ||
154 | return resolved; | ||
155 | } | ||
156 | |||
157 | private Map<PartialRelation, TypeAnalysisResult> computeAnalysisResults() { | ||
158 | var allExtendedTypeInfoList = sortTypes(); | ||
159 | var results = new LinkedHashMap<PartialRelation, TypeAnalysisResult>( | ||
160 | allExtendedTypeInfoList.size() + replacements.size()); | ||
161 | for (var extendedTypeInfo : allExtendedTypeInfoList) { | ||
162 | var type = extendedTypeInfo.getType(); | ||
163 | results.put(type, new PreservedType(extendedTypeInfo, allExtendedTypeInfoList)); | ||
164 | } | ||
165 | for (var entry : replacements.entrySet()) { | ||
166 | var type = entry.getKey(); | ||
167 | results.put(type, new EliminatedType(entry.getValue())); | ||
168 | } | ||
169 | return Collections.unmodifiableMap(results); | ||
170 | } | ||
171 | |||
172 | private List<ExtendedTypeInfo> sortTypes() { | ||
173 | // Invert {@code directSubtypes} to keep track of the out-degree of types. | ||
174 | for (var extendedTypeInfo : extendedTypeInfoMap.values()) { | ||
175 | for (var directSubtype : extendedTypeInfo.getDirectSubtypes()) { | ||
176 | var extendedDirectSubtypeInfo = extendedTypeInfoMap.get(directSubtype); | ||
177 | extendedDirectSubtypeInfo.getUnsortedDirectSupertypes().add(extendedTypeInfo.getType()); | ||
178 | } | ||
179 | } | ||
180 | // Build a <i>inverse</i> topological order ({@code extends} edges always points to earlier nodes in the order, | ||
181 | // breaking ties according to the original order ({@link ExtendedTypeInfo#index}) to form a 'stable' sort. | ||
182 | // See, e.g., https://stackoverflow.com/a/11236027. | ||
183 | var priorityQueue = new PriorityQueue<ExtendedTypeInfo>(); | ||
184 | for (var extendedTypeInfo : extendedTypeInfoMap.values()) { | ||
185 | if (extendedTypeInfo.getUnsortedDirectSupertypes().isEmpty()) { | ||
186 | priorityQueue.add(extendedTypeInfo); | ||
187 | } | ||
188 | } | ||
189 | var sorted = new ArrayList<ExtendedTypeInfo>(extendedTypeInfoMap.size()); | ||
190 | while (!priorityQueue.isEmpty()) { | ||
191 | var extendedTypeInfo = priorityQueue.remove(); | ||
192 | sorted.add(extendedTypeInfo); | ||
193 | for (var directSubtype : extendedTypeInfo.getDirectSubtypes()) { | ||
194 | var extendedDirectSubtypeInfo = extendedTypeInfoMap.get(directSubtype); | ||
195 | var unsortedDirectSupertypes = extendedDirectSubtypeInfo.getUnsortedDirectSupertypes(); | ||
196 | if (!unsortedDirectSupertypes.remove(extendedTypeInfo.getType())) { | ||
197 | throw new AssertionError("Expected %s to be a direct supertype of %s" | ||
198 | .formatted(extendedTypeInfo.getType(), directSubtype)); | ||
199 | } | ||
200 | if (unsortedDirectSupertypes.isEmpty()) { | ||
201 | priorityQueue.add(extendedDirectSubtypeInfo); | ||
202 | } | ||
203 | } | ||
204 | } | ||
205 | return Collections.unmodifiableList(sorted); | ||
206 | } | ||
207 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTranslationUnit.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTranslationUnit.java new file mode 100644 index 00000000..06e3c05f --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeHierarchyTranslationUnit.java | |||
@@ -0,0 +1,37 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.translator.typehierarchy; | ||
7 | |||
8 | import tools.refinery.store.model.Model; | ||
9 | import tools.refinery.store.reasoning.representation.PartialRelation; | ||
10 | import tools.refinery.store.reasoning.translator.TranslatedRelation; | ||
11 | import tools.refinery.store.reasoning.translator.TranslationUnit; | ||
12 | import tools.refinery.store.representation.Symbol; | ||
13 | |||
14 | import java.util.Collection; | ||
15 | import java.util.List; | ||
16 | import java.util.Map; | ||
17 | |||
18 | public class TypeHierarchyTranslationUnit extends TranslationUnit { | ||
19 | static final Symbol<InferredType> INFERRED_TYPE_SYMBOL = Symbol.of( | ||
20 | "inferredType", 1, InferredType.class, InferredType.UNTYPED); | ||
21 | |||
22 | private final TypeAnalyzer typeAnalyzer; | ||
23 | |||
24 | public TypeHierarchyTranslationUnit(Map<PartialRelation, TypeInfo> typeInfoMap) { | ||
25 | typeAnalyzer = new TypeAnalyzer(typeInfoMap); | ||
26 | } | ||
27 | |||
28 | @Override | ||
29 | public Collection<TranslatedRelation> getTranslatedRelations() { | ||
30 | return List.of(); | ||
31 | } | ||
32 | |||
33 | @Override | ||
34 | public void initializeModel(Model model, int nodeCount) { | ||
35 | |||
36 | } | ||
37 | } | ||
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeInfo.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeInfo.java new file mode 100644 index 00000000..9f897e46 --- /dev/null +++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeInfo.java | |||
@@ -0,0 +1,51 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.translator.typehierarchy; | ||
7 | |||
8 | import tools.refinery.store.reasoning.representation.PartialRelation; | ||
9 | |||
10 | import java.util.*; | ||
11 | |||
12 | public record TypeInfo(Collection<PartialRelation> supertypes, boolean abstractType) { | ||
13 | public static Builder builder() { | ||
14 | return new Builder(); | ||
15 | } | ||
16 | |||
17 | public static class Builder { | ||
18 | private final Set<PartialRelation> supertypes = new LinkedHashSet<>(); | ||
19 | private boolean abstractType; | ||
20 | |||
21 | private Builder() { | ||
22 | } | ||
23 | |||
24 | public Builder supertypes(Collection<PartialRelation> supertypes) { | ||
25 | this.supertypes.addAll(supertypes); | ||
26 | return this; | ||
27 | } | ||
28 | |||
29 | public Builder supertypes(PartialRelation... supertypes) { | ||
30 | return supertypes(List.of(supertypes)); | ||
31 | } | ||
32 | |||
33 | public Builder supertype(PartialRelation supertype) { | ||
34 | supertypes.add(supertype); | ||
35 | return this; | ||
36 | } | ||
37 | |||
38 | public Builder abstractType(boolean abstractType) { | ||
39 | this.abstractType = abstractType; | ||
40 | return this; | ||
41 | } | ||
42 | |||
43 | public Builder abstractType() { | ||
44 | return abstractType(true); | ||
45 | } | ||
46 | |||
47 | public TypeInfo build() { | ||
48 | return new TypeInfo(Collections.unmodifiableSet(supertypes), abstractType); | ||
49 | } | ||
50 | } | ||
51 | } | ||
diff --git a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredTypeTest.java b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredTypeTest.java new file mode 100644 index 00000000..1d76855c --- /dev/null +++ b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/InferredTypeTest.java | |||
@@ -0,0 +1,37 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.translator.typehierarchy; | ||
7 | |||
8 | import org.junit.jupiter.api.Test; | ||
9 | import tools.refinery.store.reasoning.representation.PartialRelation; | ||
10 | |||
11 | import java.util.Set; | ||
12 | |||
13 | import static org.hamcrest.MatcherAssert.assertThat; | ||
14 | import static org.hamcrest.Matchers.is; | ||
15 | |||
16 | class InferredTypeTest { | ||
17 | private final PartialRelation c1 = new PartialRelation("C1", 1); | ||
18 | private final PartialRelation c2 = new PartialRelation("C2", 1); | ||
19 | |||
20 | @Test | ||
21 | void untypedIsConsistentTest() { | ||
22 | var sut = new InferredType(Set.of(), Set.of(c1, c2), null); | ||
23 | assertThat(sut.isConsistent(), is(true)); | ||
24 | } | ||
25 | |||
26 | @Test | ||
27 | void typedIsConsistentTest() { | ||
28 | var sut = new InferredType(Set.of(c1), Set.of(c1, c2), c1); | ||
29 | assertThat(sut.isConsistent(), is(true)); | ||
30 | } | ||
31 | |||
32 | @Test | ||
33 | void typedIsInconsistentTest() { | ||
34 | var sut = new InferredType(Set.of(c1), Set.of(), null); | ||
35 | assertThat(sut.isConsistent(), is(false)); | ||
36 | } | ||
37 | } | ||
diff --git a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalyzerExampleHierarchyTest.java b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalyzerExampleHierarchyTest.java new file mode 100644 index 00000000..05a476c6 --- /dev/null +++ b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalyzerExampleHierarchyTest.java | |||
@@ -0,0 +1,208 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.translator.typehierarchy; | ||
7 | |||
8 | import org.junit.jupiter.api.BeforeEach; | ||
9 | import org.junit.jupiter.api.Test; | ||
10 | import tools.refinery.store.reasoning.representation.PartialRelation; | ||
11 | import tools.refinery.store.representation.TruthValue; | ||
12 | |||
13 | import java.util.LinkedHashMap; | ||
14 | import java.util.Set; | ||
15 | |||
16 | import static org.hamcrest.MatcherAssert.assertThat; | ||
17 | import static org.hamcrest.Matchers.is; | ||
18 | import static org.junit.jupiter.api.Assertions.assertAll; | ||
19 | |||
20 | class TypeAnalyzerExampleHierarchyTest { | ||
21 | private final PartialRelation a1 = new PartialRelation("A1", 1); | ||
22 | private final PartialRelation a2 = new PartialRelation("A2", 1); | ||
23 | private final PartialRelation a3 = new PartialRelation("A3", 1); | ||
24 | private final PartialRelation a4 = new PartialRelation("A4", 1); | ||
25 | private final PartialRelation a5 = new PartialRelation("A5", 1); | ||
26 | private final PartialRelation c1 = new PartialRelation("C1", 1); | ||
27 | private final PartialRelation c2 = new PartialRelation("C2", 1); | ||
28 | private final PartialRelation c3 = new PartialRelation("C3", 1); | ||
29 | private final PartialRelation c4 = new PartialRelation("C4", 1); | ||
30 | |||
31 | private TypeAnalyzer sut; | ||
32 | private TypeAnalyzerTester tester; | ||
33 | |||
34 | @BeforeEach | ||
35 | void beforeEach() { | ||
36 | var typeInfoMap = new LinkedHashMap<PartialRelation, TypeInfo>(); | ||
37 | typeInfoMap.put(a1, TypeInfo.builder().abstractType().build()); | ||
38 | typeInfoMap.put(a2, TypeInfo.builder().abstractType().build()); | ||
39 | typeInfoMap.put(a3, TypeInfo.builder().abstractType().build()); | ||
40 | typeInfoMap.put(a4, TypeInfo.builder().abstractType().build()); | ||
41 | typeInfoMap.put(a5, TypeInfo.builder().abstractType().build()); | ||
42 | typeInfoMap.put(c1, TypeInfo.builder().supertypes(a1, a4).build()); | ||
43 | typeInfoMap.put(c2, TypeInfo.builder().supertypes(a1, a2, a3, a4).build()); | ||
44 | typeInfoMap.put(c3, TypeInfo.builder().supertype(a3).build()); | ||
45 | typeInfoMap.put(c4, TypeInfo.builder().supertype(a4).build()); | ||
46 | sut = new TypeAnalyzer(typeInfoMap); | ||
47 | tester = new TypeAnalyzerTester(sut); | ||
48 | } | ||
49 | |||
50 | @Test | ||
51 | void analysisResultsTest() { | ||
52 | assertAll( | ||
53 | () -> tester.assertAbstractType(a1, c1, c2), | ||
54 | () -> tester.assertEliminatedType(a2, c2), | ||
55 | () -> tester.assertAbstractType(a3, c2, c3), | ||
56 | () -> tester.assertAbstractType(a4, c1, c2, c4), | ||
57 | () -> tester.assertVacuousType(a5), | ||
58 | () -> tester.assertConcreteType(c1), | ||
59 | () -> tester.assertConcreteType(c2), | ||
60 | () -> tester.assertConcreteType(c3), | ||
61 | () -> tester.assertConcreteType(c4) | ||
62 | ); | ||
63 | } | ||
64 | |||
65 | @Test | ||
66 | void inferredTypesTest() { | ||
67 | assertAll( | ||
68 | () -> assertThat(sut.getUnknownType(), is(new InferredType(Set.of(), Set.of(c1, c2, c3, c4), null))), | ||
69 | () -> assertThat(tester.getInferredType(a1), is(new InferredType(Set.of(a1, a4), Set.of(c1, c2), c1))), | ||
70 | () -> assertThat(tester.getInferredType(a3), is(new InferredType(Set.of(a3), Set.of(c2, c3), c2))), | ||
71 | () -> assertThat(tester.getInferredType(a4), is(new InferredType(Set.of(a4), Set.of(c1, c2, c4), c1))), | ||
72 | () -> assertThat(tester.getInferredType(a5), is(new InferredType(Set.of(a5), Set.of(), null))), | ||
73 | () -> assertThat(tester.getInferredType(c1), is(new InferredType(Set.of(a1, a4, c1), Set.of(c1), c1))), | ||
74 | () -> assertThat(tester.getInferredType(c2), | ||
75 | is(new InferredType(Set.of(a1, a3, a4, c2), Set.of(c2), c2))), | ||
76 | () -> assertThat(tester.getInferredType(c3), is(new InferredType(Set.of(a3, c3), Set.of(c3), c3))), | ||
77 | () -> assertThat(tester.getInferredType(c4), is(new InferredType(Set.of(a4, c4), Set.of(c4), c4))) | ||
78 | ); | ||
79 | } | ||
80 | |||
81 | @Test | ||
82 | void consistentMustTest() { | ||
83 | var a1Result = tester.getPreservedType(a1); | ||
84 | var a3Result = tester.getPreservedType(a3); | ||
85 | var expected = new InferredType(Set.of(a1, a3, a4, c2), Set.of(c2), c2); | ||
86 | assertAll( | ||
87 | () -> assertThat(a1Result.merge(a3Result.asInferredType(), TruthValue.TRUE), is(expected)), | ||
88 | () -> assertThat(a3Result.merge(a1Result.asInferredType(), TruthValue.TRUE), is(expected)), | ||
89 | () -> assertThat(a1Result.merge(sut.getUnknownType(), TruthValue.TRUE), is(a1Result.asInferredType())), | ||
90 | () -> assertThat(a3Result.merge(sut.getUnknownType(), TruthValue.TRUE), is(a3Result.asInferredType())), | ||
91 | () -> assertThat(a1Result.merge(a1Result.asInferredType(), TruthValue.TRUE), | ||
92 | is(a1Result.asInferredType())) | ||
93 | ); | ||
94 | } | ||
95 | |||
96 | @Test | ||
97 | void consistentMayNotTest() { | ||
98 | var a1Result = tester.getPreservedType(a1); | ||
99 | var a3Result = tester.getPreservedType(a3); | ||
100 | var a4Result = tester.getPreservedType(a4); | ||
101 | assertAll( | ||
102 | () -> assertThat(a1Result.merge(a3Result.asInferredType(), TruthValue.FALSE), | ||
103 | is(new InferredType(Set.of(a3, c3), Set.of(c3), c3))), | ||
104 | () -> assertThat(a3Result.merge(a1Result.asInferredType(), TruthValue.FALSE), | ||
105 | is(new InferredType(Set.of(a1, a4, c1), Set.of(c1), c1))), | ||
106 | () -> assertThat(a4Result.merge(a3Result.asInferredType(), TruthValue.FALSE), | ||
107 | is(new InferredType(Set.of(a3, c3), Set.of(c3), c3))), | ||
108 | () -> assertThat(a3Result.merge(a4Result.asInferredType(), TruthValue.FALSE), | ||
109 | is(new InferredType(Set.of(a4), Set.of(c1, c4), c1))), | ||
110 | () -> assertThat(a1Result.merge(sut.getUnknownType(), TruthValue.FALSE), | ||
111 | is(new InferredType(Set.of(), Set.of(c3, c4), null))), | ||
112 | () -> assertThat(a3Result.merge(sut.getUnknownType(), TruthValue.FALSE), | ||
113 | is(new InferredType(Set.of(), Set.of(c1, c4), null))), | ||
114 | () -> assertThat(a4Result.merge(sut.getUnknownType(), TruthValue.FALSE), | ||
115 | is(new InferredType(Set.of(), Set.of(c3), null))) | ||
116 | ); | ||
117 | } | ||
118 | |||
119 | @Test | ||
120 | void consistentErrorTest() { | ||
121 | var c1Result = tester.getPreservedType(c1); | ||
122 | var a4Result = tester.getPreservedType(a4); | ||
123 | var expected = new InferredType(Set.of(c1, a1, a4), Set.of(), null); | ||
124 | assertAll( | ||
125 | () -> assertThat(c1Result.merge(a4Result.asInferredType(), TruthValue.ERROR), is(expected)), | ||
126 | () -> assertThat(a4Result.merge(c1Result.asInferredType(), TruthValue.ERROR), is(expected)) | ||
127 | ); | ||
128 | } | ||
129 | |||
130 | @Test | ||
131 | void consistentUnknownTest() { | ||
132 | var c1Result = tester.getPreservedType(c1); | ||
133 | var a4Result = tester.getPreservedType(a4); | ||
134 | assertAll( | ||
135 | () -> assertThat(c1Result.merge(a4Result.asInferredType(), TruthValue.UNKNOWN), | ||
136 | is(a4Result.asInferredType())), | ||
137 | () -> assertThat(a4Result.merge(c1Result.asInferredType(), TruthValue.UNKNOWN), | ||
138 | is(c1Result.asInferredType())) | ||
139 | ); | ||
140 | } | ||
141 | |||
142 | @Test | ||
143 | void inconsistentMustTest() { | ||
144 | var a1Result = tester.getPreservedType(a1); | ||
145 | var c3Result = tester.getPreservedType(c3); | ||
146 | assertAll( | ||
147 | () -> assertThat(a1Result.merge(c3Result.asInferredType(), TruthValue.TRUE), | ||
148 | is(new InferredType(Set.of(a1, a3, c3), Set.of(), null))), | ||
149 | () -> assertThat(c3Result.merge(a1Result.asInferredType(), TruthValue.TRUE), | ||
150 | is(new InferredType(Set.of(a1, a3, a4, c3), Set.of(), null))) | ||
151 | ); | ||
152 | } | ||
153 | |||
154 | @Test | ||
155 | void inconsistentMayNotTest() { | ||
156 | var a1Result = tester.getPreservedType(a1); | ||
157 | var a4Result = tester.getPreservedType(a4); | ||
158 | var c1Result = tester.getPreservedType(c1); | ||
159 | assertAll( | ||
160 | () -> assertThat(a4Result.merge(a1Result.asInferredType(), TruthValue.FALSE), | ||
161 | is(new InferredType(Set.of(a1, a4), Set.of(), null))), | ||
162 | () -> assertThat(a1Result.merge(c1Result.asInferredType(), TruthValue.FALSE), | ||
163 | is(new InferredType(Set.of(a1, a4, c1), Set.of(), null))), | ||
164 | () -> assertThat(a4Result.merge(c1Result.asInferredType(), TruthValue.FALSE), | ||
165 | is(new InferredType(Set.of(a1, a4, c1), Set.of(), null))), | ||
166 | () -> assertThat(a1Result.merge(a1Result.asInferredType(), TruthValue.FALSE), | ||
167 | is(new InferredType(Set.of(a1, a4), Set.of(), null))) | ||
168 | ); | ||
169 | } | ||
170 | |||
171 | @Test | ||
172 | void vacuousMustTest() { | ||
173 | var c1Result = tester.getPreservedType(c1); | ||
174 | var a5Result = tester.getPreservedType(a5); | ||
175 | assertAll( | ||
176 | () -> assertThat(c1Result.merge(a5Result.asInferredType(), TruthValue.TRUE), | ||
177 | is(new InferredType(Set.of(a1, a4, a5, c1), Set.of(), null))), | ||
178 | () -> assertThat(a5Result.merge(c1Result.asInferredType(), TruthValue.TRUE), | ||
179 | is(new InferredType(Set.of(a1, a4, a5, c1), Set.of(), null))) | ||
180 | ); | ||
181 | } | ||
182 | |||
183 | @Test | ||
184 | void vacuousMayNotTest() { | ||
185 | var c1Result = tester.getPreservedType(c1); | ||
186 | var a5Result = tester.getPreservedType(a5); | ||
187 | assertAll( | ||
188 | () -> assertThat(c1Result.merge(a5Result.asInferredType(), TruthValue.FALSE), | ||
189 | is(a5Result.asInferredType())), | ||
190 | () -> assertThat(a5Result.merge(c1Result.asInferredType(), TruthValue.FALSE), | ||
191 | is(c1Result.asInferredType())) | ||
192 | ); | ||
193 | } | ||
194 | |||
195 | @Test | ||
196 | void vacuousErrorTest() { | ||
197 | var c1Result = tester.getPreservedType(c1); | ||
198 | var a5Result = tester.getPreservedType(a5); | ||
199 | assertAll( | ||
200 | () -> assertThat(c1Result.merge(a5Result.asInferredType(), TruthValue.ERROR), | ||
201 | is(new InferredType(Set.of(a1, a4, a5, c1), Set.of(), null))), | ||
202 | () -> assertThat(a5Result.merge(c1Result.asInferredType(), TruthValue.ERROR), | ||
203 | is(new InferredType(Set.of(a1, a4, a5, c1), Set.of(), null))), | ||
204 | () -> assertThat(a5Result.merge(a5Result.asInferredType(), TruthValue.ERROR), | ||
205 | is(a5Result.asInferredType())) | ||
206 | ); | ||
207 | } | ||
208 | } | ||
diff --git a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalyzerTest.java b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalyzerTest.java new file mode 100644 index 00000000..d0ef9d57 --- /dev/null +++ b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalyzerTest.java | |||
@@ -0,0 +1,205 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.translator.typehierarchy; | ||
7 | |||
8 | import org.junit.jupiter.api.Test; | ||
9 | import tools.refinery.store.reasoning.representation.PartialRelation; | ||
10 | import tools.refinery.store.representation.TruthValue; | ||
11 | |||
12 | import java.util.LinkedHashMap; | ||
13 | import java.util.Set; | ||
14 | |||
15 | import static org.hamcrest.MatcherAssert.assertThat; | ||
16 | import static org.hamcrest.Matchers.is; | ||
17 | import static org.junit.jupiter.api.Assertions.assertAll; | ||
18 | import static org.junit.jupiter.api.Assertions.assertThrows; | ||
19 | |||
20 | class TypeAnalyzerTest { | ||
21 | @Test | ||
22 | void directSupertypesTest() { | ||
23 | var c1 = new PartialRelation("C1", 1); | ||
24 | var c2 = new PartialRelation("C2", 1); | ||
25 | var c3 = new PartialRelation("C3", 1); | ||
26 | var typeInfoMap = new LinkedHashMap<PartialRelation, TypeInfo>(); | ||
27 | typeInfoMap.put(c1, TypeInfo.builder().supertypes(c2, c3).build()); | ||
28 | typeInfoMap.put(c2, TypeInfo.builder().supertype(c3).build()); | ||
29 | typeInfoMap.put(c3, TypeInfo.builder().build()); | ||
30 | |||
31 | var sut = new TypeAnalyzer(typeInfoMap); | ||
32 | var tester = new TypeAnalyzerTester(sut); | ||
33 | |||
34 | assertAll( | ||
35 | () -> tester.assertConcreteType(c1), | ||
36 | () -> tester.assertConcreteType(c2, c1), | ||
37 | () -> tester.assertConcreteType(c3, c2) | ||
38 | ); | ||
39 | } | ||
40 | |||
41 | @Test | ||
42 | void typeEliminationAbstractToConcreteTest() { | ||
43 | var c1 = new PartialRelation("C1", 1); | ||
44 | var c2 = new PartialRelation("C2", 1); | ||
45 | var a11 = new PartialRelation("A11", 1); | ||
46 | var a12 = new PartialRelation("A12", 1); | ||
47 | var a21 = new PartialRelation("A21", 1); | ||
48 | var a22 = new PartialRelation("A22", 1); | ||
49 | var a3 = new PartialRelation("A3", 1); | ||
50 | var typeInfoMap = new LinkedHashMap<PartialRelation, TypeInfo>(); | ||
51 | typeInfoMap.put(a3, TypeInfo.builder().abstractType().build()); | ||
52 | typeInfoMap.put(a21, TypeInfo.builder().abstractType().supertype(a3).build()); | ||
53 | typeInfoMap.put(a22, TypeInfo.builder().abstractType().supertype(a3).build()); | ||
54 | typeInfoMap.put(a11, TypeInfo.builder().abstractType().supertypes(a21, a22).build()); | ||
55 | typeInfoMap.put(a12, TypeInfo.builder().abstractType().supertypes(a21, a22).build()); | ||
56 | typeInfoMap.put(c1, TypeInfo.builder().supertypes(a11, a12).build()); | ||
57 | typeInfoMap.put(c2, TypeInfo.builder().supertype(a3).build()); | ||
58 | |||
59 | var sut = new TypeAnalyzer(typeInfoMap); | ||
60 | var tester = new TypeAnalyzerTester(sut); | ||
61 | |||
62 | assertAll( | ||
63 | () -> tester.assertConcreteType(c1), | ||
64 | () -> tester.assertConcreteType(c2), | ||
65 | () -> tester.assertEliminatedType(a11, c1), | ||
66 | () -> tester.assertEliminatedType(a12, c1), | ||
67 | () -> tester.assertEliminatedType(a21, c1), | ||
68 | () -> tester.assertEliminatedType(a22, c1), | ||
69 | () -> tester.assertAbstractType(a3, c1, c2) | ||
70 | ); | ||
71 | } | ||
72 | |||
73 | @Test | ||
74 | void typeEliminationConcreteToAbstractTest() { | ||
75 | var c1 = new PartialRelation("C1", 1); | ||
76 | var c2 = new PartialRelation("C2", 1); | ||
77 | var a11 = new PartialRelation("A11", 1); | ||
78 | var a12 = new PartialRelation("A12", 1); | ||
79 | var a21 = new PartialRelation("A21", 1); | ||
80 | var a22 = new PartialRelation("A22", 1); | ||
81 | var a3 = new PartialRelation("A3", 1); | ||
82 | var typeInfoMap = new LinkedHashMap<PartialRelation, TypeInfo>(); | ||
83 | typeInfoMap.put(c1, TypeInfo.builder().supertypes(a11, a12).build()); | ||
84 | typeInfoMap.put(c2, TypeInfo.builder().supertype(a3).build()); | ||
85 | typeInfoMap.put(a11, TypeInfo.builder().abstractType().supertypes(a21, a22).build()); | ||
86 | typeInfoMap.put(a12, TypeInfo.builder().abstractType().supertypes(a21, a22).build()); | ||
87 | typeInfoMap.put(a21, TypeInfo.builder().abstractType().supertype(a3).build()); | ||
88 | typeInfoMap.put(a22, TypeInfo.builder().abstractType().supertype(a3).build()); | ||
89 | typeInfoMap.put(a3, TypeInfo.builder().abstractType().build()); | ||
90 | |||
91 | var sut = new TypeAnalyzer(typeInfoMap); | ||
92 | var tester = new TypeAnalyzerTester(sut); | ||
93 | |||
94 | assertAll( | ||
95 | () -> tester.assertConcreteType(c1), | ||
96 | () -> tester.assertConcreteType(c2), | ||
97 | () -> tester.assertEliminatedType(a11, c1), | ||
98 | () -> tester.assertEliminatedType(a12, c1), | ||
99 | () -> tester.assertEliminatedType(a21, c1), | ||
100 | () -> tester.assertEliminatedType(a22, c1), | ||
101 | () -> tester.assertAbstractType(a3, c1, c2) | ||
102 | ); | ||
103 | } | ||
104 | |||
105 | @Test | ||
106 | void preserveConcreteTypeTest() { | ||
107 | var c1 = new PartialRelation("C1", 1); | ||
108 | var a1 = new PartialRelation("A1", 1); | ||
109 | var c2 = new PartialRelation("C2", 1); | ||
110 | var a2 = new PartialRelation("A2", 1); | ||
111 | var typeInfoMap = new LinkedHashMap<PartialRelation, TypeInfo>(); | ||
112 | typeInfoMap.put(c1, TypeInfo.builder().supertype(a1).build()); | ||
113 | typeInfoMap.put(a1, TypeInfo.builder().abstractType().supertype(c2).build()); | ||
114 | typeInfoMap.put(c2, TypeInfo.builder().supertype(a2).build()); | ||
115 | typeInfoMap.put(a2, TypeInfo.builder().abstractType().build()); | ||
116 | |||
117 | var sut = new TypeAnalyzer(typeInfoMap); | ||
118 | var tester = new TypeAnalyzerTester(sut); | ||
119 | |||
120 | assertAll( | ||
121 | () -> tester.assertConcreteType(c1), | ||
122 | () -> tester.assertEliminatedType(a1, c1), | ||
123 | () -> tester.assertConcreteType(c2, c1), | ||
124 | () -> tester.assertEliminatedType(a2, c2) | ||
125 | ); | ||
126 | } | ||
127 | |||
128 | @Test | ||
129 | void mostGeneralCurrentTypeTest() { | ||
130 | var c1 = new PartialRelation("C1", 1); | ||
131 | var c2 = new PartialRelation("C2", 1); | ||
132 | var c3 = new PartialRelation("C3", 1); | ||
133 | var typeInfoMap = new LinkedHashMap<PartialRelation, TypeInfo>(); | ||
134 | typeInfoMap.put(c1, TypeInfo.builder().supertype(c3).build()); | ||
135 | typeInfoMap.put(c2, TypeInfo.builder().supertype(c3).build()); | ||
136 | typeInfoMap.put(c3, TypeInfo.builder().build()); | ||
137 | |||
138 | var sut = new TypeAnalyzer(typeInfoMap); | ||
139 | var tester = new TypeAnalyzerTester(sut); | ||
140 | var c3Result = tester.getPreservedType(c3); | ||
141 | |||
142 | var expected = new InferredType(Set.of(c3), Set.of(c1, c2, c3), c3); | ||
143 | assertAll( | ||
144 | () -> assertThat(tester.getInferredType(c3), is(expected)), | ||
145 | () -> assertThat(c3Result.merge(sut.getUnknownType(), TruthValue.TRUE), is(expected)) | ||
146 | ); | ||
147 | } | ||
148 | |||
149 | @Test | ||
150 | void preferFirstConcreteTypeTest() { | ||
151 | var a1 = new PartialRelation("A1", 1); | ||
152 | var c1 = new PartialRelation("C1", 1); | ||
153 | var c2 = new PartialRelation("C2", 1); | ||
154 | var c3 = new PartialRelation("C3", 1); | ||
155 | var c4 = new PartialRelation("C4", 1); | ||
156 | var typeInfoMap = new LinkedHashMap<PartialRelation, TypeInfo>(); | ||
157 | typeInfoMap.put(c1, TypeInfo.builder().supertype(a1).build()); | ||
158 | typeInfoMap.put(c2, TypeInfo.builder().supertype(a1).build()); | ||
159 | typeInfoMap.put(c3, TypeInfo.builder().supertype(a1).build()); | ||
160 | typeInfoMap.put(c4, TypeInfo.builder().supertype(c3).build()); | ||
161 | typeInfoMap.put(a1, TypeInfo.builder().abstractType().build()); | ||
162 | |||
163 | var sut = new TypeAnalyzer(typeInfoMap); | ||
164 | var tester = new TypeAnalyzerTester(sut); | ||
165 | var c1Result = tester.getPreservedType(c1); | ||
166 | var a1Result = tester.getPreservedType(a1); | ||
167 | |||
168 | assertThat(c1Result.merge(a1Result.asInferredType(), TruthValue.FALSE), | ||
169 | is(new InferredType(Set.of(a1), Set.of(c2, c3, c4), c2))); | ||
170 | } | ||
171 | |||
172 | @Test | ||
173 | void preferFirstMostGeneralConcreteTypeTest() { | ||
174 | var a1 = new PartialRelation("A1", 1); | ||
175 | var c1 = new PartialRelation("C1", 1); | ||
176 | var c2 = new PartialRelation("C2", 1); | ||
177 | var c3 = new PartialRelation("C3", 1); | ||
178 | var c4 = new PartialRelation("C4", 1); | ||
179 | var typeInfoMap = new LinkedHashMap<PartialRelation, TypeInfo>(); | ||
180 | typeInfoMap.put(c4, TypeInfo.builder().supertype(c3).build()); | ||
181 | typeInfoMap.put(c3, TypeInfo.builder().supertype(a1).build()); | ||
182 | typeInfoMap.put(c2, TypeInfo.builder().supertype(a1).build()); | ||
183 | typeInfoMap.put(c1, TypeInfo.builder().supertype(a1).build()); | ||
184 | typeInfoMap.put(a1, TypeInfo.builder().abstractType().build()); | ||
185 | |||
186 | var sut = new TypeAnalyzer(typeInfoMap); | ||
187 | var tester = new TypeAnalyzerTester(sut); | ||
188 | var c1Result = tester.getPreservedType(c1); | ||
189 | var a1Result = tester.getPreservedType(a1); | ||
190 | |||
191 | assertThat(c1Result.merge(a1Result.asInferredType(), TruthValue.FALSE), | ||
192 | is(new InferredType(Set.of(a1), Set.of(c2, c3, c4), c3))); | ||
193 | } | ||
194 | |||
195 | @Test | ||
196 | void circularTypeHierarchyTest() { | ||
197 | var c1 = new PartialRelation("C1", 1); | ||
198 | var c2 = new PartialRelation("C2", 1); | ||
199 | var typeInfoMap = new LinkedHashMap<PartialRelation, TypeInfo>(); | ||
200 | typeInfoMap.put(c1, TypeInfo.builder().supertype(c2).build()); | ||
201 | typeInfoMap.put(c2, TypeInfo.builder().supertype(c1).build()); | ||
202 | |||
203 | assertThrows(IllegalArgumentException.class, () -> new TypeAnalyzer(typeInfoMap)); | ||
204 | } | ||
205 | } | ||
diff --git a/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalyzerTester.java b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalyzerTester.java new file mode 100644 index 00000000..2924816e --- /dev/null +++ b/subprojects/store-reasoning/src/test/java/tools/refinery/store/reasoning/translator/typehierarchy/TypeAnalyzerTester.java | |||
@@ -0,0 +1,56 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.reasoning.translator.typehierarchy; | ||
7 | |||
8 | import tools.refinery.store.reasoning.representation.PartialRelation; | ||
9 | |||
10 | import static org.hamcrest.MatcherAssert.assertThat; | ||
11 | import static org.hamcrest.Matchers.*; | ||
12 | import static org.hamcrest.Matchers.is; | ||
13 | |||
14 | class TypeAnalyzerTester { | ||
15 | private final TypeAnalyzer sut; | ||
16 | |||
17 | public TypeAnalyzerTester(TypeAnalyzer sut) { | ||
18 | this.sut = sut; | ||
19 | } | ||
20 | |||
21 | public void assertAbstractType(PartialRelation partialRelation, PartialRelation... directSubtypes) { | ||
22 | assertPreservedType(partialRelation, true, false, directSubtypes); | ||
23 | } | ||
24 | |||
25 | public void assertVacuousType(PartialRelation partialRelation) { | ||
26 | assertPreservedType(partialRelation, true, true); | ||
27 | } | ||
28 | |||
29 | public void assertConcreteType(PartialRelation partialRelation, PartialRelation... directSubtypes) { | ||
30 | assertPreservedType(partialRelation, false, false, directSubtypes); | ||
31 | } | ||
32 | |||
33 | private void assertPreservedType(PartialRelation partialRelation, boolean isAbstract, boolean isVacuous, | ||
34 | PartialRelation... directSubtypes) { | ||
35 | var result = sut.getAnalysisResults().get(partialRelation); | ||
36 | assertThat(result, is(instanceOf(PreservedType.class))); | ||
37 | var preservedResult = (PreservedType) result; | ||
38 | assertThat(preservedResult.isAbstractType(), is(isAbstract)); | ||
39 | assertThat(preservedResult.isVacuous(), is(isVacuous)); | ||
40 | assertThat(preservedResult.getDirectSubtypes(), hasItems(directSubtypes)); | ||
41 | } | ||
42 | |||
43 | public void assertEliminatedType(PartialRelation partialRelation, PartialRelation replacement) { | ||
44 | var result = sut.getAnalysisResults().get(partialRelation); | ||
45 | assertThat(result, is(instanceOf(EliminatedType.class))); | ||
46 | assertThat(((EliminatedType) result).replacement(), is(replacement)); | ||
47 | } | ||
48 | |||
49 | public PreservedType getPreservedType(PartialRelation partialRelation) { | ||
50 | return (PreservedType) sut.getAnalysisResults().get(partialRelation); | ||
51 | } | ||
52 | |||
53 | public InferredType getInferredType(PartialRelation partialRelation) { | ||
54 | return getPreservedType(partialRelation).asInferredType(); | ||
55 | } | ||
56 | } | ||
diff --git a/subprojects/store/build.gradle b/subprojects/store/build.gradle deleted file mode 100644 index 370d094b..00000000 --- a/subprojects/store/build.gradle +++ /dev/null | |||
@@ -1,4 +0,0 @@ | |||
1 | plugins { | ||
2 | id 'refinery-java-library' | ||
3 | id 'refinery-jmh' | ||
4 | } | ||
diff --git a/subprojects/store/build.gradle.kts b/subprojects/store/build.gradle.kts new file mode 100644 index 00000000..2c485020 --- /dev/null +++ b/subprojects/store/build.gradle.kts | |||
@@ -0,0 +1,10 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | |||
7 | plugins { | ||
8 | id("tools.refinery.gradle.java-library") | ||
9 | id("tools.refinery.gradle.jmh") | ||
10 | } | ||
diff --git a/subprojects/store/src/jmh/java/tools/refinery/store/map/benchmarks/ImmutablePutBenchmark.java b/subprojects/store/src/jmh/java/tools/refinery/store/map/benchmarks/ImmutablePutBenchmark.java index cdf3d3c8..485fda3d 100644 --- a/subprojects/store/src/jmh/java/tools/refinery/store/map/benchmarks/ImmutablePutBenchmark.java +++ b/subprojects/store/src/jmh/java/tools/refinery/store/map/benchmarks/ImmutablePutBenchmark.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map.benchmarks; | 6 | package tools.refinery.store.map.benchmarks; |
2 | 7 | ||
3 | import java.util.ArrayList; | 8 | import java.util.ArrayList; |
diff --git a/subprojects/store/src/jmh/java/tools/refinery/store/map/benchmarks/ImmutablePutExecutionPlan.java b/subprojects/store/src/jmh/java/tools/refinery/store/map/benchmarks/ImmutablePutExecutionPlan.java index 5484f115..7e89cd06 100644 --- a/subprojects/store/src/jmh/java/tools/refinery/store/map/benchmarks/ImmutablePutExecutionPlan.java +++ b/subprojects/store/src/jmh/java/tools/refinery/store/map/benchmarks/ImmutablePutExecutionPlan.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map.benchmarks; | 6 | package tools.refinery.store.map.benchmarks; |
2 | 7 | ||
3 | import java.util.Random; | 8 | import java.util.Random; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/adapter/AbstractModelAdapterBuilder.java b/subprojects/store/src/main/java/tools/refinery/store/adapter/AbstractModelAdapterBuilder.java index 4c142217..8d3e998e 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/adapter/AbstractModelAdapterBuilder.java +++ b/subprojects/store/src/main/java/tools/refinery/store/adapter/AbstractModelAdapterBuilder.java | |||
@@ -1,27 +1,48 @@ | |||
1 | package tools.refinery.store.adapter; | 1 | package tools.refinery.store.adapter; |
2 | 2 | /* | |
3 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
4 | * | ||
5 | * SPDX-License-Identifier: EPL-2.0 | ||
6 | */ | ||
3 | import tools.refinery.store.model.ModelStore; | 7 | import tools.refinery.store.model.ModelStore; |
4 | import tools.refinery.store.model.ModelStoreBuilder; | 8 | import tools.refinery.store.model.ModelStoreBuilder; |
5 | 9 | ||
6 | public abstract class AbstractModelAdapterBuilder implements ModelAdapterBuilder { | 10 | public abstract class AbstractModelAdapterBuilder<T extends ModelStoreAdapter> implements ModelAdapterBuilder { |
7 | private final ModelStoreBuilder storeBuilder; | 11 | private boolean configured; |
8 | 12 | ||
9 | protected AbstractModelAdapterBuilder(ModelStoreBuilder storeBuilder) { | 13 | @Override |
10 | this.storeBuilder = storeBuilder; | 14 | public boolean isConfigured() { |
15 | return configured; | ||
11 | } | 16 | } |
12 | 17 | ||
13 | @Override | 18 | protected void checkConfigured() { |
14 | public <T extends ModelAdapterBuilder> T with(ModelAdapterBuilderFactory<?, ?, T> adapterBuilderFactory) { | 19 | if (!configured) { |
15 | return storeBuilder.with(adapterBuilderFactory); | 20 | throw new IllegalStateException("Model adapter builder was not configured"); |
21 | } | ||
22 | } | ||
23 | |||
24 | protected void checkNotConfigured() { | ||
25 | if (configured) { | ||
26 | throw new IllegalStateException("Model adapter builder was already configured"); | ||
27 | } | ||
28 | } | ||
29 | |||
30 | protected void doConfigure(ModelStoreBuilder storeBuilder) { | ||
31 | // Nothing to configure by default. | ||
16 | } | 32 | } |
17 | 33 | ||
18 | @Override | 34 | @Override |
19 | public ModelStoreBuilder getStoreBuilder() { | 35 | public final void configure(ModelStoreBuilder storeBuilder) { |
20 | return storeBuilder; | 36 | checkNotConfigured(); |
37 | doConfigure(storeBuilder); | ||
38 | configured = true; | ||
21 | } | 39 | } |
22 | 40 | ||
41 | protected abstract T doBuild(ModelStore store); | ||
42 | |||
23 | @Override | 43 | @Override |
24 | public ModelStore build() { | 44 | public final T build(ModelStore store) { |
25 | return storeBuilder.build(); | 45 | checkConfigured(); |
46 | return doBuild(store); | ||
26 | } | 47 | } |
27 | } | 48 | } |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/adapter/AdapterList.java b/subprojects/store/src/main/java/tools/refinery/store/adapter/AdapterList.java deleted file mode 100644 index 74bae6f0..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/adapter/AdapterList.java +++ /dev/null | |||
@@ -1,97 +0,0 @@ | |||
1 | package tools.refinery.store.adapter; | ||
2 | |||
3 | import org.jetbrains.annotations.NotNull; | ||
4 | |||
5 | import java.util.*; | ||
6 | import java.util.function.Consumer; | ||
7 | |||
8 | public class AdapterList<T> implements Iterable<T> { | ||
9 | private final List<AnyModelAdapterType> adapterTypes; | ||
10 | private final List<T> adapters; | ||
11 | |||
12 | public AdapterList() { | ||
13 | adapterTypes = new ArrayList<>(); | ||
14 | adapters = new ArrayList<>(); | ||
15 | } | ||
16 | |||
17 | public AdapterList(int adapterCount) { | ||
18 | adapterTypes = new ArrayList<>(adapterCount); | ||
19 | adapters = new ArrayList<>(adapterCount); | ||
20 | } | ||
21 | |||
22 | public int size() { | ||
23 | return adapters.size(); | ||
24 | } | ||
25 | |||
26 | public void add(AnyModelAdapterType adapterType, T adapter) { | ||
27 | adapterTypes.add(adapterType); | ||
28 | adapters.add(adapter); | ||
29 | } | ||
30 | |||
31 | public <U extends T> Optional<U> tryGet(AnyModelAdapterType adapterType, Class<? extends U> adapterClass) { | ||
32 | int size = size(); | ||
33 | for (int i = 0; i < size; i++) { | ||
34 | if (getType(i).supports(adapterType)) { | ||
35 | return Optional.of(adapterClass.cast(get(i))); | ||
36 | } | ||
37 | } | ||
38 | return Optional.empty(); | ||
39 | } | ||
40 | |||
41 | public <U extends T> U get(AnyModelAdapterType adapterType, Class<U> adapterClass) { | ||
42 | return tryGet(adapterType, adapterClass).orElseThrow(() -> new IllegalArgumentException( | ||
43 | "No %s was configured".formatted(adapterType))); | ||
44 | } | ||
45 | |||
46 | public AnyModelAdapterType getType(int i) { | ||
47 | return adapterTypes.get(i); | ||
48 | } | ||
49 | |||
50 | public T get(int i) { | ||
51 | return adapters.get(i); | ||
52 | } | ||
53 | |||
54 | public Collection<AnyModelAdapterType> getAdapterTypes() { | ||
55 | return Collections.unmodifiableCollection(adapterTypes); | ||
56 | } | ||
57 | |||
58 | public Iterable<Entry<T>> withAdapterTypes() { | ||
59 | return () -> new Iterator<>() { | ||
60 | private int i = 0; | ||
61 | |||
62 | @Override | ||
63 | public boolean hasNext() { | ||
64 | return i < size(); | ||
65 | } | ||
66 | |||
67 | @Override | ||
68 | public Entry<T> next() { | ||
69 | if (i >= size()) { | ||
70 | throw new NoSuchElementException(); | ||
71 | } | ||
72 | var entry = new Entry<>(getType(i), get(i)); | ||
73 | i++; | ||
74 | return entry; | ||
75 | } | ||
76 | }; | ||
77 | } | ||
78 | |||
79 | @NotNull | ||
80 | @Override | ||
81 | public Iterator<T> iterator() { | ||
82 | return adapters.iterator(); | ||
83 | } | ||
84 | |||
85 | @Override | ||
86 | public void forEach(Consumer<? super T> action) { | ||
87 | adapters.forEach(action); | ||
88 | } | ||
89 | |||
90 | @Override | ||
91 | public Spliterator<T> spliterator() { | ||
92 | return adapters.spliterator(); | ||
93 | } | ||
94 | |||
95 | public record Entry<T>(AnyModelAdapterType adapterType, T adapter) { | ||
96 | } | ||
97 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/adapter/AdapterUtils.java b/subprojects/store/src/main/java/tools/refinery/store/adapter/AdapterUtils.java new file mode 100644 index 00000000..556e99f0 --- /dev/null +++ b/subprojects/store/src/main/java/tools/refinery/store/adapter/AdapterUtils.java | |||
@@ -0,0 +1,33 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.adapter; | ||
7 | |||
8 | import java.util.Collection; | ||
9 | import java.util.Optional; | ||
10 | |||
11 | public class AdapterUtils { | ||
12 | private AdapterUtils() { | ||
13 | throw new IllegalStateException("This is a static utility class and should not be instantiated directly"); | ||
14 | } | ||
15 | |||
16 | public static <T, U extends T> Optional<U> tryGetAdapter(Collection<T> adapters, Class<? extends U> type) { | ||
17 | var iterator = adapters.stream().filter(type::isInstance).iterator(); | ||
18 | if (!iterator.hasNext()) { | ||
19 | return Optional.empty(); | ||
20 | } | ||
21 | var adapter = type.cast(iterator.next()); | ||
22 | if (iterator.hasNext()) { | ||
23 | throw new IllegalArgumentException("Ambiguous adapter: both %s and %s match %s" | ||
24 | .formatted(adapter.getClass().getName(), iterator.next().getClass().getName(), type.getName())); | ||
25 | } | ||
26 | return Optional.of(adapter); | ||
27 | } | ||
28 | |||
29 | public static <T> T getAdapter(Collection<? super T> adapters, Class<T> type) { | ||
30 | return tryGetAdapter(adapters, type).orElseThrow(() -> new IllegalArgumentException( | ||
31 | "No %s adapter was configured".formatted(type.getName()))); | ||
32 | } | ||
33 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/adapter/AnyModelAdapterType.java b/subprojects/store/src/main/java/tools/refinery/store/adapter/AnyModelAdapterType.java deleted file mode 100644 index 37a247fe..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/adapter/AnyModelAdapterType.java +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | package tools.refinery.store.adapter; | ||
2 | |||
3 | import java.util.Collection; | ||
4 | |||
5 | public sealed interface AnyModelAdapterType permits ModelAdapterType { | ||
6 | Class<? extends ModelAdapter> getModelAdapterClass(); | ||
7 | |||
8 | Class<? extends ModelStoreAdapter> getModelStoreAdapterClass(); | ||
9 | |||
10 | Class<? extends ModelAdapterBuilder> getModelAdapterBuilderClass(); | ||
11 | |||
12 | Collection<AnyModelAdapterType> getSupportedAdapterTypes(); | ||
13 | |||
14 | default boolean supports(AnyModelAdapterType targetAdapter) { | ||
15 | return getSupportedAdapterTypes().contains(targetAdapter); | ||
16 | } | ||
17 | |||
18 | String getName(); | ||
19 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/adapter/ModelAdapter.java b/subprojects/store/src/main/java/tools/refinery/store/adapter/ModelAdapter.java index aa079e01..672007aa 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/adapter/ModelAdapter.java +++ b/subprojects/store/src/main/java/tools/refinery/store/adapter/ModelAdapter.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.adapter; | 6 | package tools.refinery.store.adapter; |
2 | 7 | ||
3 | import tools.refinery.store.model.Model; | 8 | import tools.refinery.store.model.Model; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/adapter/ModelAdapterBuilder.java b/subprojects/store/src/main/java/tools/refinery/store/adapter/ModelAdapterBuilder.java index 64b3e59f..75e5e07d 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/adapter/ModelAdapterBuilder.java +++ b/subprojects/store/src/main/java/tools/refinery/store/adapter/ModelAdapterBuilder.java | |||
@@ -1,17 +1,17 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.adapter; | 6 | package tools.refinery.store.adapter; |
2 | 7 | ||
3 | import tools.refinery.store.model.ModelStore; | 8 | import tools.refinery.store.model.ModelStore; |
4 | import tools.refinery.store.model.ModelStoreBuilder; | 9 | import tools.refinery.store.model.ModelStoreBuilder; |
5 | 10 | ||
6 | public interface ModelAdapterBuilder { | 11 | public interface ModelAdapterBuilder { |
7 | ModelStoreAdapter createStoreAdapter(ModelStore store); | 12 | boolean isConfigured(); |
8 | 13 | ||
9 | <T extends ModelAdapterBuilder> T with(ModelAdapterBuilderFactory<?, ?, T> adapterBuilderFactory); | 14 | void configure(ModelStoreBuilder storeBuilder); |
10 | 15 | ||
11 | ModelStoreBuilder getStoreBuilder(); | 16 | ModelStoreAdapter build(ModelStore store); |
12 | |||
13 | default void configure() { | ||
14 | } | ||
15 | |||
16 | ModelStore build(); | ||
17 | } | 17 | } |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/adapter/ModelAdapterBuilderFactory.java b/subprojects/store/src/main/java/tools/refinery/store/adapter/ModelAdapterBuilderFactory.java deleted file mode 100644 index 7c9b01bc..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/adapter/ModelAdapterBuilderFactory.java +++ /dev/null | |||
@@ -1,14 +0,0 @@ | |||
1 | package tools.refinery.store.adapter; | ||
2 | |||
3 | import tools.refinery.store.model.ModelStoreBuilder; | ||
4 | |||
5 | public abstract class ModelAdapterBuilderFactory<T1 extends ModelAdapter, T2 extends ModelStoreAdapter, | ||
6 | T3 extends ModelAdapterBuilder> extends ModelAdapterType<T1, T2, T3> { | ||
7 | |||
8 | protected ModelAdapterBuilderFactory(Class<T1> modelAdapterClass, Class<T2> modelStoreAdapterClass, | ||
9 | Class<T3> modelAdapterBuilderClass) { | ||
10 | super(modelAdapterClass, modelStoreAdapterClass, modelAdapterBuilderClass); | ||
11 | } | ||
12 | |||
13 | public abstract T3 createBuilder(ModelStoreBuilder storeBuilder); | ||
14 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/adapter/ModelAdapterType.java b/subprojects/store/src/main/java/tools/refinery/store/adapter/ModelAdapterType.java deleted file mode 100644 index 82ddeb12..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/adapter/ModelAdapterType.java +++ /dev/null | |||
@@ -1,79 +0,0 @@ | |||
1 | package tools.refinery.store.adapter; | ||
2 | |||
3 | import tools.refinery.store.model.Model; | ||
4 | import tools.refinery.store.model.ModelStore; | ||
5 | |||
6 | import java.lang.reflect.Method; | ||
7 | import java.util.Collection; | ||
8 | import java.util.Collections; | ||
9 | import java.util.HashSet; | ||
10 | import java.util.Set; | ||
11 | |||
12 | public abstract non-sealed class ModelAdapterType<T1 extends ModelAdapter, T2 extends ModelStoreAdapter, | ||
13 | T3 extends ModelAdapterBuilder> implements AnyModelAdapterType { | ||
14 | private final Class<? extends T1> modelAdapterClass; | ||
15 | private final Class<? extends T2> modelStoreAdapterClass; | ||
16 | private final Class<? extends T3> modelAdapterBuilderClass; | ||
17 | private final Set<AnyModelAdapterType> supportedAdapters = new HashSet<>(); | ||
18 | |||
19 | protected ModelAdapterType(Class<T1> modelAdapterClass, Class<T2> modelStoreAdapterClass, | ||
20 | Class<T3> modelAdapterBuilderClass) { | ||
21 | checkReturnType(modelAdapterClass, modelStoreAdapterClass, "createModelAdapter", Model.class); | ||
22 | checkReturnType(modelStoreAdapterClass, modelAdapterBuilderClass, "createStoreAdapter", ModelStore.class); | ||
23 | this.modelAdapterClass = modelAdapterClass; | ||
24 | this.modelStoreAdapterClass = modelStoreAdapterClass; | ||
25 | this.modelAdapterBuilderClass = modelAdapterBuilderClass; | ||
26 | supportedAdapters.add(this); | ||
27 | } | ||
28 | |||
29 | private void checkReturnType(Class<?> expectedReturnType, Class<?> ownerClass, String methodName, | ||
30 | Class<?>... argumentTypes) { | ||
31 | Method method; | ||
32 | try { | ||
33 | method = ownerClass.getMethod(methodName, argumentTypes); | ||
34 | } catch (NoSuchMethodException e) { | ||
35 | throw new IllegalStateException("Invalid %s: %s#%s method is required" | ||
36 | .formatted(this, ownerClass.getName(), methodName), e); | ||
37 | } | ||
38 | var returnType = method.getReturnType(); | ||
39 | if (!expectedReturnType.isAssignableFrom(returnType)) { | ||
40 | throw new IllegalStateException("Invalid %s: %s is not assignable from the return type %s of %s#%s" | ||
41 | .formatted(this, expectedReturnType.getName(), returnType.getCanonicalName(), | ||
42 | ownerClass.getName(), methodName)); | ||
43 | } | ||
44 | } | ||
45 | |||
46 | protected void extendsAdapter(ModelAdapterType<? super T1, ? super T2, ? super T3> superAdapter) { | ||
47 | supportedAdapters.addAll(superAdapter.supportedAdapters); | ||
48 | } | ||
49 | |||
50 | @Override | ||
51 | public final Class<? extends T1> getModelAdapterClass() { | ||
52 | return modelAdapterClass; | ||
53 | } | ||
54 | |||
55 | @Override | ||
56 | public final Class<? extends T2> getModelStoreAdapterClass() { | ||
57 | return modelStoreAdapterClass; | ||
58 | } | ||
59 | |||
60 | @Override | ||
61 | public final Class<? extends T3> getModelAdapterBuilderClass() { | ||
62 | return modelAdapterBuilderClass; | ||
63 | } | ||
64 | |||
65 | @Override | ||
66 | public Collection<AnyModelAdapterType> getSupportedAdapterTypes() { | ||
67 | return Collections.unmodifiableCollection(supportedAdapters); | ||
68 | } | ||
69 | |||
70 | @Override | ||
71 | public String getName() { | ||
72 | return "%s.ADAPTER".formatted(this.getClass().getName()); | ||
73 | } | ||
74 | |||
75 | @Override | ||
76 | public String toString() { | ||
77 | return getName(); | ||
78 | } | ||
79 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/adapter/ModelStoreAdapter.java b/subprojects/store/src/main/java/tools/refinery/store/adapter/ModelStoreAdapter.java index 1eb40ada..bc5f7b6b 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/adapter/ModelStoreAdapter.java +++ b/subprojects/store/src/main/java/tools/refinery/store/adapter/ModelStoreAdapter.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.adapter; | 6 | package tools.refinery.store.adapter; |
2 | 7 | ||
3 | import tools.refinery.store.model.Model; | 8 | import tools.refinery.store.model.Model; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/AnyVersionedMap.java b/subprojects/store/src/main/java/tools/refinery/store/map/AnyVersionedMap.java index ead79878..01099eb0 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/map/AnyVersionedMap.java +++ b/subprojects/store/src/main/java/tools/refinery/store/map/AnyVersionedMap.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map; | 6 | package tools.refinery.store.map; |
2 | 7 | ||
3 | public sealed interface AnyVersionedMap extends Versioned permits VersionedMap { | 8 | public sealed interface AnyVersionedMap extends Versioned permits VersionedMap { |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/ContentHashCode.java b/subprojects/store/src/main/java/tools/refinery/store/map/ContentHashCode.java index 8deeab23..cbea05e1 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/map/ContentHashCode.java +++ b/subprojects/store/src/main/java/tools/refinery/store/map/ContentHashCode.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map; | 6 | package tools.refinery.store.map; |
2 | 7 | ||
3 | public enum ContentHashCode { | 8 | public enum ContentHashCode { |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/ContinousHashProvider.java b/subprojects/store/src/main/java/tools/refinery/store/map/ContinousHashProvider.java index 75f1e2ab..8e451230 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/map/ContinousHashProvider.java +++ b/subprojects/store/src/main/java/tools/refinery/store/map/ContinousHashProvider.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map; | 6 | package tools.refinery.store.map; |
2 | 7 | ||
3 | import tools.refinery.store.map.internal.Node; | 8 | import tools.refinery.store.map.internal.Node; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/Cursor.java b/subprojects/store/src/main/java/tools/refinery/store/map/Cursor.java index b420585c..3bdca104 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/map/Cursor.java +++ b/subprojects/store/src/main/java/tools/refinery/store/map/Cursor.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map; | 6 | package tools.refinery.store.map; |
2 | 7 | ||
3 | import java.util.Set; | 8 | import java.util.Set; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/CursorAsIterator.java b/subprojects/store/src/main/java/tools/refinery/store/map/CursorAsIterator.java index 65ae6648..c7e4d279 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/map/CursorAsIterator.java +++ b/subprojects/store/src/main/java/tools/refinery/store/map/CursorAsIterator.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map; | 6 | package tools.refinery.store.map; |
2 | 7 | ||
3 | import java.util.Iterator; | 8 | import java.util.Iterator; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/Cursors.java b/subprojects/store/src/main/java/tools/refinery/store/map/Cursors.java new file mode 100644 index 00000000..0a94d449 --- /dev/null +++ b/subprojects/store/src/main/java/tools/refinery/store/map/Cursors.java | |||
@@ -0,0 +1,41 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.map; | ||
7 | |||
8 | public final class Cursors { | ||
9 | private Cursors() { | ||
10 | throw new IllegalStateException("This is a static utility class and should not be instantiated directly"); | ||
11 | } | ||
12 | |||
13 | public static <K, V> Cursor<K, V> empty() { | ||
14 | return new Empty<>(); | ||
15 | } | ||
16 | |||
17 | private static class Empty<K, V> implements Cursor<K, V> { | ||
18 | private boolean terminated = false; | ||
19 | |||
20 | @Override | ||
21 | public K getKey() { | ||
22 | return null; | ||
23 | } | ||
24 | |||
25 | @Override | ||
26 | public V getValue() { | ||
27 | return null; | ||
28 | } | ||
29 | |||
30 | @Override | ||
31 | public boolean isTerminated() { | ||
32 | return terminated; | ||
33 | } | ||
34 | |||
35 | @Override | ||
36 | public boolean move() { | ||
37 | terminated = true; | ||
38 | return false; | ||
39 | } | ||
40 | } | ||
41 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/DiffCursor.java b/subprojects/store/src/main/java/tools/refinery/store/map/DiffCursor.java index 701f3ec8..4322e041 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/map/DiffCursor.java +++ b/subprojects/store/src/main/java/tools/refinery/store/map/DiffCursor.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map; | 6 | package tools.refinery.store.map; |
2 | 7 | ||
3 | public interface DiffCursor<K, V> extends Cursor<K,V> { | 8 | public interface DiffCursor<K, V> extends Cursor<K,V> { |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/MapAsIterable.java b/subprojects/store/src/main/java/tools/refinery/store/map/MapAsIterable.java index 6b986732..199b548f 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/map/MapAsIterable.java +++ b/subprojects/store/src/main/java/tools/refinery/store/map/MapAsIterable.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map; | 6 | package tools.refinery.store.map; |
2 | 7 | ||
3 | import java.util.Iterator; | 8 | import java.util.Iterator; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/Versioned.java b/subprojects/store/src/main/java/tools/refinery/store/map/Versioned.java index 6a23e9d5..55720db3 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/map/Versioned.java +++ b/subprojects/store/src/main/java/tools/refinery/store/map/Versioned.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map; | 6 | package tools.refinery.store.map; |
2 | 7 | ||
3 | public interface Versioned { | 8 | public interface Versioned { |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMap.java b/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMap.java index 08ce1dbd..c8226c3e 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMap.java +++ b/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMap.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map; | 6 | package tools.refinery.store.map; |
2 | 7 | ||
3 | public non-sealed interface VersionedMap<K, V> extends AnyVersionedMap { | 8 | public non-sealed interface VersionedMap<K, V> extends AnyVersionedMap { |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStore.java b/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStore.java index 7768287a..b24c404c 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStore.java +++ b/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStore.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map; | 6 | package tools.refinery.store.map; |
2 | 7 | ||
3 | import tools.refinery.store.map.internal.VersionedMapStoreFactoryBuilderImpl; | 8 | import tools.refinery.store.map.internal.VersionedMapStoreFactoryBuilderImpl; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStoreConfiguration.java b/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStoreConfiguration.java index 3856460d..b00cd961 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStoreConfiguration.java +++ b/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStoreConfiguration.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map; | 6 | package tools.refinery.store.map; |
2 | 7 | ||
3 | public class VersionedMapStoreConfiguration { | 8 | public class VersionedMapStoreConfiguration { |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStoreImpl.java b/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStoreImpl.java index beeed110..a934d59e 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStoreImpl.java +++ b/subprojects/store/src/main/java/tools/refinery/store/map/VersionedMapStoreImpl.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map; | 6 | package tools.refinery.store.map; |
2 | 7 | ||
3 | import tools.refinery.store.map.internal.*; | 8 | import tools.refinery.store.map.internal.*; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/internal/HashClash.java b/subprojects/store/src/main/java/tools/refinery/store/map/internal/HashClash.java index 0806c486..a357fbce 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/map/internal/HashClash.java +++ b/subprojects/store/src/main/java/tools/refinery/store/map/internal/HashClash.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map.internal; | 6 | package tools.refinery.store.map.internal; |
2 | 7 | ||
3 | enum HashClash { | 8 | enum HashClash { |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/internal/ImmutableNode.java b/subprojects/store/src/main/java/tools/refinery/store/map/internal/ImmutableNode.java index 92446711..d052318f 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/map/internal/ImmutableNode.java +++ b/subprojects/store/src/main/java/tools/refinery/store/map/internal/ImmutableNode.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map.internal; | 6 | package tools.refinery.store.map.internal; |
2 | 7 | ||
3 | import java.util.Arrays; | 8 | import java.util.Arrays; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/internal/MapCursor.java b/subprojects/store/src/main/java/tools/refinery/store/map/internal/MapCursor.java index 7e4f82e8..d42519b2 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/map/internal/MapCursor.java +++ b/subprojects/store/src/main/java/tools/refinery/store/map/internal/MapCursor.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map.internal; | 6 | package tools.refinery.store.map.internal; |
2 | 7 | ||
3 | import tools.refinery.store.map.AnyVersionedMap; | 8 | import tools.refinery.store.map.AnyVersionedMap; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/internal/MapDiffCursor.java b/subprojects/store/src/main/java/tools/refinery/store/map/internal/MapDiffCursor.java index 59e8d738..fb1d5d2b 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/map/internal/MapDiffCursor.java +++ b/subprojects/store/src/main/java/tools/refinery/store/map/internal/MapDiffCursor.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map.internal; | 6 | package tools.refinery.store.map.internal; |
2 | 7 | ||
3 | import tools.refinery.store.map.AnyVersionedMap; | 8 | import tools.refinery.store.map.AnyVersionedMap; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/internal/MutableNode.java b/subprojects/store/src/main/java/tools/refinery/store/map/internal/MutableNode.java index 81bf6188..bb85deb9 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/map/internal/MutableNode.java +++ b/subprojects/store/src/main/java/tools/refinery/store/map/internal/MutableNode.java | |||
@@ -1,10 +1,15 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map.internal; | 6 | package tools.refinery.store.map.internal; |
2 | 7 | ||
8 | import tools.refinery.store.map.ContinousHashProvider; | ||
9 | |||
3 | import java.util.Arrays; | 10 | import java.util.Arrays; |
4 | import java.util.Map; | 11 | import java.util.Map; |
5 | 12 | ||
6 | import tools.refinery.store.map.ContinousHashProvider; | ||
7 | |||
8 | public class MutableNode<K, V> extends Node<K, V> { | 13 | public class MutableNode<K, V> extends Node<K, V> { |
9 | int cachedHash; | 14 | int cachedHash; |
10 | protected boolean cachedHashValid; | 15 | protected boolean cachedHashValid; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/internal/Node.java b/subprojects/store/src/main/java/tools/refinery/store/map/internal/Node.java index 3dd332da..4b44f760 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/map/internal/Node.java +++ b/subprojects/store/src/main/java/tools/refinery/store/map/internal/Node.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map.internal; | 6 | package tools.refinery.store.map.internal; |
2 | 7 | ||
3 | import java.util.Map; | 8 | import java.util.Map; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/internal/OldValueBox.java b/subprojects/store/src/main/java/tools/refinery/store/map/internal/OldValueBox.java index 5534c703..354af51d 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/map/internal/OldValueBox.java +++ b/subprojects/store/src/main/java/tools/refinery/store/map/internal/OldValueBox.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map.internal; | 6 | package tools.refinery.store.map.internal; |
2 | 7 | ||
3 | public class OldValueBox<V>{ | 8 | public class OldValueBox<V>{ |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/map/internal/VersionedMapImpl.java b/subprojects/store/src/main/java/tools/refinery/store/map/internal/VersionedMapImpl.java index 2ceca463..c107f7e0 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/map/internal/VersionedMapImpl.java +++ b/subprojects/store/src/main/java/tools/refinery/store/map/internal/VersionedMapImpl.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map.internal; | 6 | package tools.refinery.store.map.internal; |
2 | 7 | ||
3 | import tools.refinery.store.map.*; | 8 | import tools.refinery.store.map.*; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/model/AnyInterpretation.java b/subprojects/store/src/main/java/tools/refinery/store/model/AnyInterpretation.java index d18ba71d..f906b48a 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/model/AnyInterpretation.java +++ b/subprojects/store/src/main/java/tools/refinery/store/model/AnyInterpretation.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.model; | 6 | package tools.refinery.store.model; |
2 | 7 | ||
3 | import tools.refinery.store.representation.AnySymbol; | 8 | import tools.refinery.store.representation.AnySymbol; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/model/Interpretation.java b/subprojects/store/src/main/java/tools/refinery/store/model/Interpretation.java index 55949d0c..26ad9a69 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/model/Interpretation.java +++ b/subprojects/store/src/main/java/tools/refinery/store/model/Interpretation.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.model; | 6 | package tools.refinery.store.model; |
2 | 7 | ||
3 | import tools.refinery.store.map.Cursor; | 8 | import tools.refinery.store.map.Cursor; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/model/InterpretationListener.java b/subprojects/store/src/main/java/tools/refinery/store/model/InterpretationListener.java index 73950779..6f7b24c1 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/model/InterpretationListener.java +++ b/subprojects/store/src/main/java/tools/refinery/store/model/InterpretationListener.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.model; | 6 | package tools.refinery.store.model; |
2 | 7 | ||
3 | import tools.refinery.store.tuple.Tuple; | 8 | import tools.refinery.store.tuple.Tuple; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/model/Model.java b/subprojects/store/src/main/java/tools/refinery/store/model/Model.java index 6ca1ac7b..d58d91c3 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/model/Model.java +++ b/subprojects/store/src/main/java/tools/refinery/store/model/Model.java | |||
@@ -1,7 +1,11 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.model; | 6 | package tools.refinery.store.model; |
2 | 7 | ||
3 | import tools.refinery.store.adapter.ModelAdapter; | 8 | import tools.refinery.store.adapter.ModelAdapter; |
4 | import tools.refinery.store.adapter.ModelAdapterType; | ||
5 | import tools.refinery.store.map.Versioned; | 9 | import tools.refinery.store.map.Versioned; |
6 | import tools.refinery.store.representation.AnySymbol; | 10 | import tools.refinery.store.representation.AnySymbol; |
7 | import tools.refinery.store.representation.Symbol; | 11 | import tools.refinery.store.representation.Symbol; |
@@ -25,9 +29,9 @@ public interface Model extends Versioned { | |||
25 | 29 | ||
26 | ModelDiffCursor getDiffCursor(long to); | 30 | ModelDiffCursor getDiffCursor(long to); |
27 | 31 | ||
28 | <T extends ModelAdapter> Optional<T> tryGetAdapter(ModelAdapterType<? extends T, ?, ?> adapterType); | 32 | <T extends ModelAdapter> Optional<T> tryGetAdapter(Class<? extends T> adapterType); |
29 | 33 | ||
30 | <T extends ModelAdapter> T getAdapter(ModelAdapterType<T, ?, ?> adapterType); | 34 | <T extends ModelAdapter> T getAdapter(Class<T> adapterType); |
31 | 35 | ||
32 | void addListener(ModelListener listener); | 36 | void addListener(ModelListener listener); |
33 | 37 | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/model/ModelDiffCursor.java b/subprojects/store/src/main/java/tools/refinery/store/model/ModelDiffCursor.java index 97bf2039..7b236891 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/model/ModelDiffCursor.java +++ b/subprojects/store/src/main/java/tools/refinery/store/model/ModelDiffCursor.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.model; | 6 | package tools.refinery.store.model; |
2 | 7 | ||
3 | import tools.refinery.store.map.DiffCursor; | 8 | import tools.refinery.store.map.DiffCursor; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/model/ModelListener.java b/subprojects/store/src/main/java/tools/refinery/store/model/ModelListener.java index f67540bb..a9ad8cfd 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/model/ModelListener.java +++ b/subprojects/store/src/main/java/tools/refinery/store/model/ModelListener.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.model; | 6 | package tools.refinery.store.model; |
2 | 7 | ||
3 | public interface ModelListener { | 8 | public interface ModelListener { |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/model/ModelStore.java b/subprojects/store/src/main/java/tools/refinery/store/model/ModelStore.java index 2e7e62c3..b10eb8a4 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/model/ModelStore.java +++ b/subprojects/store/src/main/java/tools/refinery/store/model/ModelStore.java | |||
@@ -1,6 +1,10 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.model; | 6 | package tools.refinery.store.model; |
2 | 7 | ||
3 | import tools.refinery.store.adapter.ModelAdapterType; | ||
4 | import tools.refinery.store.adapter.ModelStoreAdapter; | 8 | import tools.refinery.store.adapter.ModelStoreAdapter; |
5 | import tools.refinery.store.model.internal.ModelStoreBuilderImpl; | 9 | import tools.refinery.store.model.internal.ModelStoreBuilderImpl; |
6 | import tools.refinery.store.representation.AnySymbol; | 10 | import tools.refinery.store.representation.AnySymbol; |
@@ -20,9 +24,9 @@ public interface ModelStore { | |||
20 | 24 | ||
21 | ModelDiffCursor getDiffCursor(long from, long to); | 25 | ModelDiffCursor getDiffCursor(long from, long to); |
22 | 26 | ||
23 | <T extends ModelStoreAdapter> Optional<T> tryGetAdapter(ModelAdapterType<?, ? extends T, ?> adapterType); | 27 | <T extends ModelStoreAdapter> Optional<T> tryGetAdapter(Class<? extends T> adapterType); |
24 | 28 | ||
25 | <T extends ModelStoreAdapter> T getAdapter(ModelAdapterType<?, T, ?> adapterType); | 29 | <T extends ModelStoreAdapter> T getAdapter(Class<T> adapterType); |
26 | 30 | ||
27 | static ModelStoreBuilder builder() { | 31 | static ModelStoreBuilder builder() { |
28 | return new ModelStoreBuilderImpl(); | 32 | return new ModelStoreBuilderImpl(); |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/model/ModelStoreBuilder.java b/subprojects/store/src/main/java/tools/refinery/store/model/ModelStoreBuilder.java index 289099da..3a4024b5 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/model/ModelStoreBuilder.java +++ b/subprojects/store/src/main/java/tools/refinery/store/model/ModelStoreBuilder.java | |||
@@ -1,8 +1,11 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.model; | 6 | package tools.refinery.store.model; |
2 | 7 | ||
3 | import tools.refinery.store.adapter.ModelAdapterBuilder; | 8 | import tools.refinery.store.adapter.ModelAdapterBuilder; |
4 | import tools.refinery.store.adapter.ModelAdapterBuilderFactory; | ||
5 | import tools.refinery.store.adapter.ModelAdapterType; | ||
6 | import tools.refinery.store.representation.AnySymbol; | 9 | import tools.refinery.store.representation.AnySymbol; |
7 | import tools.refinery.store.representation.Symbol; | 10 | import tools.refinery.store.representation.Symbol; |
8 | 11 | ||
@@ -26,11 +29,11 @@ public interface ModelStoreBuilder { | |||
26 | 29 | ||
27 | <T> ModelStoreBuilder symbol(Symbol<T> symbol); | 30 | <T> ModelStoreBuilder symbol(Symbol<T> symbol); |
28 | 31 | ||
29 | <T extends ModelAdapterBuilder> T with(ModelAdapterBuilderFactory<?, ?, T> adapterBuilderFactory); | 32 | <T extends ModelAdapterBuilder> ModelStoreBuilder with(T adapterBuilder); |
30 | 33 | ||
31 | <T extends ModelAdapterBuilder> Optional<T> tryGetAdapter(ModelAdapterType<?, ?, ? extends T> adapterType); | 34 | <T extends ModelAdapterBuilder> Optional<T> tryGetAdapter(Class<? extends T> adapterType); |
32 | 35 | ||
33 | <T extends ModelAdapterBuilder> T getAdapter(ModelAdapterType<?, ?, T> adapterType); | 36 | <T extends ModelAdapterBuilder> T getAdapter(Class<T> adapterType); |
34 | 37 | ||
35 | ModelStore build(); | 38 | ModelStore build(); |
36 | } | 39 | } |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/model/TupleHashProvider.java b/subprojects/store/src/main/java/tools/refinery/store/model/TupleHashProvider.java index 1183b8f2..fdd4425e 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/model/TupleHashProvider.java +++ b/subprojects/store/src/main/java/tools/refinery/store/model/TupleHashProvider.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.model; | 6 | package tools.refinery.store.model; |
2 | 7 | ||
3 | import tools.refinery.store.map.ContinousHashProvider; | 8 | import tools.refinery.store.map.ContinousHashProvider; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/model/TupleHashProviderBitMagic.java b/subprojects/store/src/main/java/tools/refinery/store/model/TupleHashProviderBitMagic.java index 33059a1b..14116a90 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/model/TupleHashProviderBitMagic.java +++ b/subprojects/store/src/main/java/tools/refinery/store/model/TupleHashProviderBitMagic.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.model; | 6 | package tools.refinery.store.model; |
2 | 7 | ||
3 | import tools.refinery.store.map.ContinousHashProvider; | 8 | import tools.refinery.store.map.ContinousHashProvider; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/model/internal/ModelAction.java b/subprojects/store/src/main/java/tools/refinery/store/model/internal/ModelAction.java index f68859db..dbd95d80 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/model/internal/ModelAction.java +++ b/subprojects/store/src/main/java/tools/refinery/store/model/internal/ModelAction.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.model.internal; | 6 | package tools.refinery.store.model.internal; |
2 | 7 | ||
3 | public enum ModelAction { | 8 | public enum ModelAction { |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/model/internal/ModelImpl.java b/subprojects/store/src/main/java/tools/refinery/store/model/internal/ModelImpl.java index 9eb438c4..c5475a1a 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/model/internal/ModelImpl.java +++ b/subprojects/store/src/main/java/tools/refinery/store/model/internal/ModelImpl.java | |||
@@ -1,9 +1,12 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.model.internal; | 6 | package tools.refinery.store.model.internal; |
2 | 7 | ||
3 | import tools.refinery.store.adapter.AdapterList; | 8 | import tools.refinery.store.adapter.AdapterUtils; |
4 | import tools.refinery.store.adapter.AnyModelAdapterType; | ||
5 | import tools.refinery.store.adapter.ModelAdapter; | 9 | import tools.refinery.store.adapter.ModelAdapter; |
6 | import tools.refinery.store.adapter.ModelAdapterType; | ||
7 | import tools.refinery.store.map.DiffCursor; | 10 | import tools.refinery.store.map.DiffCursor; |
8 | import tools.refinery.store.model.*; | 11 | import tools.refinery.store.model.*; |
9 | import tools.refinery.store.representation.AnySymbol; | 12 | import tools.refinery.store.representation.AnySymbol; |
@@ -16,7 +19,7 @@ public class ModelImpl implements Model { | |||
16 | private final ModelStore store; | 19 | private final ModelStore store; |
17 | private long state; | 20 | private long state; |
18 | private Map<? extends AnySymbol, ? extends VersionedInterpretation<?>> interpretations; | 21 | private Map<? extends AnySymbol, ? extends VersionedInterpretation<?>> interpretations; |
19 | private final AdapterList<ModelAdapter> adapters; | 22 | private final List<ModelAdapter> adapters; |
20 | private final List<ModelListener> listeners = new ArrayList<>(); | 23 | private final List<ModelListener> listeners = new ArrayList<>(); |
21 | private boolean uncommittedChanges; | 24 | private boolean uncommittedChanges; |
22 | private ModelAction pendingAction = ModelAction.NONE; | 25 | private ModelAction pendingAction = ModelAction.NONE; |
@@ -25,7 +28,7 @@ public class ModelImpl implements Model { | |||
25 | ModelImpl(ModelStore store, long state, int adapterCount) { | 28 | ModelImpl(ModelStore store, long state, int adapterCount) { |
26 | this.store = store; | 29 | this.store = store; |
27 | this.state = state; | 30 | this.state = state; |
28 | adapters = new AdapterList<>(adapterCount); | 31 | adapters = new ArrayList<>(adapterCount); |
29 | } | 32 | } |
30 | 33 | ||
31 | void setInterpretations(Map<? extends AnySymbol, ? extends VersionedInterpretation<?>> interpretations) { | 34 | void setInterpretations(Map<? extends AnySymbol, ? extends VersionedInterpretation<?>> interpretations) { |
@@ -162,17 +165,17 @@ public class ModelImpl implements Model { | |||
162 | } | 165 | } |
163 | 166 | ||
164 | @Override | 167 | @Override |
165 | public <T extends ModelAdapter> Optional<T> tryGetAdapter(ModelAdapterType<? extends T, ?, ?> adapterType) { | 168 | public <T extends ModelAdapter> Optional<T> tryGetAdapter(Class<? extends T> adapterType) { |
166 | return adapters.tryGet(adapterType, adapterType.getModelAdapterClass()); | 169 | return AdapterUtils.tryGetAdapter(adapters, adapterType); |
167 | } | 170 | } |
168 | 171 | ||
169 | @Override | 172 | @Override |
170 | public <T extends ModelAdapter> T getAdapter(ModelAdapterType<T, ?, ?> adapterType) { | 173 | public <T extends ModelAdapter> T getAdapter(Class<T> adapterType) { |
171 | return adapters.get(adapterType, adapterType.getModelAdapterClass()); | 174 | return AdapterUtils.getAdapter(adapters, adapterType); |
172 | } | 175 | } |
173 | 176 | ||
174 | void addAdapter(AnyModelAdapterType adapterType, ModelAdapter adapter) { | 177 | void addAdapter(ModelAdapter adapter) { |
175 | adapters.add(adapterType, adapter); | 178 | adapters.add(adapter); |
176 | } | 179 | } |
177 | 180 | ||
178 | @Override | 181 | @Override |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/model/internal/ModelStoreBuilderImpl.java b/subprojects/store/src/main/java/tools/refinery/store/model/internal/ModelStoreBuilderImpl.java index 79f7195d..aafbe130 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/model/internal/ModelStoreBuilderImpl.java +++ b/subprojects/store/src/main/java/tools/refinery/store/model/internal/ModelStoreBuilderImpl.java | |||
@@ -1,9 +1,12 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.model.internal; | 6 | package tools.refinery.store.model.internal; |
2 | 7 | ||
3 | import tools.refinery.store.adapter.AdapterList; | 8 | import tools.refinery.store.adapter.AdapterUtils; |
4 | import tools.refinery.store.adapter.ModelAdapterBuilder; | 9 | import tools.refinery.store.adapter.ModelAdapterBuilder; |
5 | import tools.refinery.store.adapter.ModelAdapterBuilderFactory; | ||
6 | import tools.refinery.store.adapter.ModelAdapterType; | ||
7 | import tools.refinery.store.map.VersionedMapStore; | 10 | import tools.refinery.store.map.VersionedMapStore; |
8 | import tools.refinery.store.map.VersionedMapStoreImpl; | 11 | import tools.refinery.store.map.VersionedMapStoreImpl; |
9 | import tools.refinery.store.model.ModelStore; | 12 | import tools.refinery.store.model.ModelStore; |
@@ -18,7 +21,7 @@ import java.util.*; | |||
18 | public class ModelStoreBuilderImpl implements ModelStoreBuilder { | 21 | public class ModelStoreBuilderImpl implements ModelStoreBuilder { |
19 | private final Set<AnySymbol> allSymbols = new HashSet<>(); | 22 | private final Set<AnySymbol> allSymbols = new HashSet<>(); |
20 | private final Map<SymbolEquivalenceClass<?>, List<AnySymbol>> equivalenceClasses = new HashMap<>(); | 23 | private final Map<SymbolEquivalenceClass<?>, List<AnySymbol>> equivalenceClasses = new HashMap<>(); |
21 | private final AdapterList<ModelAdapterBuilder> adapters = new AdapterList<>(); | 24 | private final List<ModelAdapterBuilder> adapters = new ArrayList<>(); |
22 | 25 | ||
23 | @Override | 26 | @Override |
24 | public <T> ModelStoreBuilder symbol(Symbol<T> symbol) { | 27 | public <T> ModelStoreBuilder symbol(Symbol<T> symbol) { |
@@ -33,46 +36,25 @@ public class ModelStoreBuilderImpl implements ModelStoreBuilder { | |||
33 | } | 36 | } |
34 | 37 | ||
35 | @Override | 38 | @Override |
36 | public <T extends ModelAdapterBuilder> T with(ModelAdapterBuilderFactory<?, ?, T> adapterBuilderFactory) { | 39 | public <T extends ModelAdapterBuilder> ModelStoreBuilder with(T adapterBuilder) { |
37 | return adapters.<T>tryGet(adapterBuilderFactory, adapterBuilderFactory.getModelAdapterBuilderClass()) | 40 | for (var existingAdapter : adapters) { |
38 | .orElseGet(() -> addAdapter(adapterBuilderFactory)); | 41 | if (existingAdapter.getClass().equals(adapterBuilder.getClass())) { |
39 | } | 42 | throw new IllegalArgumentException("%s adapter was already configured for store builder" |
40 | 43 | .formatted(adapterBuilder.getClass().getName())); | |
41 | private <T extends ModelAdapterBuilder> T addAdapter(ModelAdapterBuilderFactory<?, ?, T> adapterBuilderFactory) { | ||
42 | for (var configuredAdapterType : adapters.getAdapterTypes()) { | ||
43 | var intersection = new HashSet<>(adapterBuilderFactory.getSupportedAdapterTypes()); | ||
44 | intersection.retainAll(configuredAdapterType.getSupportedAdapterTypes()); | ||
45 | if (!intersection.isEmpty()) { | ||
46 | if (configuredAdapterType.supports(adapterBuilderFactory)) { | ||
47 | // Impossible to end up here from <code>#with</code>, because we should have returned | ||
48 | // the existing adapter there instead of adding a new one. | ||
49 | throw new IllegalArgumentException( | ||
50 | "Cannot add %s, because it is already provided by configured adapter %s" | ||
51 | .formatted(adapterBuilderFactory, configuredAdapterType)); | ||
52 | } else if (adapterBuilderFactory.supports(configuredAdapterType)) { | ||
53 | throw new IllegalArgumentException( | ||
54 | "Cannot add %s, because it provides already configured adapter %s" | ||
55 | .formatted(adapterBuilderFactory, configuredAdapterType)); | ||
56 | } else { | ||
57 | throw new IllegalArgumentException( | ||
58 | "Cannot add %s, because configured adapter %s already provides %s" | ||
59 | .formatted(adapterBuilderFactory, configuredAdapterType, intersection)); | ||
60 | } | ||
61 | } | 44 | } |
62 | } | 45 | } |
63 | var newAdapter = adapterBuilderFactory.createBuilder(this); | 46 | adapters.add(adapterBuilder); |
64 | adapters.add(adapterBuilderFactory, newAdapter); | 47 | return this; |
65 | return newAdapter; | ||
66 | } | 48 | } |
67 | 49 | ||
68 | @Override | 50 | @Override |
69 | public <T extends ModelAdapterBuilder> Optional<T> tryGetAdapter(ModelAdapterType<?, ?, ? extends T> adapterType) { | 51 | public <T extends ModelAdapterBuilder> Optional<T> tryGetAdapter(Class<? extends T> adapterType) { |
70 | return adapters.tryGet(adapterType, adapterType.getModelAdapterBuilderClass()); | 52 | return AdapterUtils.tryGetAdapter(adapters, adapterType); |
71 | } | 53 | } |
72 | 54 | ||
73 | @Override | 55 | @Override |
74 | public <T extends ModelAdapterBuilder> T getAdapter(ModelAdapterType<?, ?, T> adapterType) { | 56 | public <T extends ModelAdapterBuilder> T getAdapter(Class<T> adapterType) { |
75 | return adapters.get(adapterType, adapterType.getModelAdapterBuilderClass()); | 57 | return AdapterUtils.getAdapter(adapters, adapterType); |
76 | } | 58 | } |
77 | 59 | ||
78 | @Override | 60 | @Override |
@@ -81,13 +63,13 @@ public class ModelStoreBuilderImpl implements ModelStoreBuilder { | |||
81 | for (var entry : equivalenceClasses.entrySet()) { | 63 | for (var entry : equivalenceClasses.entrySet()) { |
82 | createStores(stores, entry.getKey(), entry.getValue()); | 64 | createStores(stores, entry.getKey(), entry.getValue()); |
83 | } | 65 | } |
84 | var modelStore = new ModelStoreImpl(stores, adapters.size()); | ||
85 | for (int i = adapters.size() - 1; i >= 0; i--) { | 66 | for (int i = adapters.size() - 1; i >= 0; i--) { |
86 | adapters.get(i).configure(); | 67 | adapters.get(i).configure(this); |
87 | } | 68 | } |
88 | for (var entry : adapters.withAdapterTypes()) { | 69 | var modelStore = new ModelStoreImpl(stores, adapters.size()); |
89 | var adapter = entry.adapter().createStoreAdapter(modelStore); | 70 | for (var adapterBuilder : adapters) { |
90 | modelStore.addAdapter(entry.adapterType(), adapter); | 71 | var storeAdapter = adapterBuilder.build(modelStore); |
72 | modelStore.addAdapter(storeAdapter); | ||
91 | } | 73 | } |
92 | return modelStore; | 74 | return modelStore; |
93 | } | 75 | } |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/model/internal/ModelStoreImpl.java b/subprojects/store/src/main/java/tools/refinery/store/model/internal/ModelStoreImpl.java index e8c205e4..60b735e6 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/model/internal/ModelStoreImpl.java +++ b/subprojects/store/src/main/java/tools/refinery/store/model/internal/ModelStoreImpl.java | |||
@@ -1,8 +1,11 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.model.internal; | 6 | package tools.refinery.store.model.internal; |
2 | 7 | ||
3 | import tools.refinery.store.adapter.AdapterList; | 8 | import tools.refinery.store.adapter.AdapterUtils; |
4 | import tools.refinery.store.adapter.AnyModelAdapterType; | ||
5 | import tools.refinery.store.adapter.ModelAdapterType; | ||
6 | import tools.refinery.store.adapter.ModelStoreAdapter; | 9 | import tools.refinery.store.adapter.ModelStoreAdapter; |
7 | import tools.refinery.store.map.DiffCursor; | 10 | import tools.refinery.store.map.DiffCursor; |
8 | import tools.refinery.store.map.VersionedMapStore; | 11 | import tools.refinery.store.map.VersionedMapStore; |
@@ -16,11 +19,11 @@ import java.util.*; | |||
16 | 19 | ||
17 | public class ModelStoreImpl implements ModelStore { | 20 | public class ModelStoreImpl implements ModelStore { |
18 | private final Map<? extends AnySymbol, ? extends VersionedMapStore<Tuple, ?>> stores; | 21 | private final Map<? extends AnySymbol, ? extends VersionedMapStore<Tuple, ?>> stores; |
19 | private final AdapterList<ModelStoreAdapter> adapters; | 22 | private final List<ModelStoreAdapter> adapters; |
20 | 23 | ||
21 | ModelStoreImpl(Map<? extends AnySymbol, ? extends VersionedMapStore<Tuple, ?>> stores, int adapterCount) { | 24 | ModelStoreImpl(Map<? extends AnySymbol, ? extends VersionedMapStore<Tuple, ?>> stores, int adapterCount) { |
22 | this.stores = stores; | 25 | this.stores = stores; |
23 | adapters = new AdapterList<>(adapterCount); | 26 | adapters = new ArrayList<>(adapterCount); |
24 | } | 27 | } |
25 | 28 | ||
26 | @Override | 29 | @Override |
@@ -59,9 +62,9 @@ public class ModelStoreImpl implements ModelStore { | |||
59 | } | 62 | } |
60 | 63 | ||
61 | private void adaptModel(ModelImpl model) { | 64 | private void adaptModel(ModelImpl model) { |
62 | for (var entry : adapters.withAdapterTypes()) { | 65 | for (var storeAdapter : adapters) { |
63 | var adapter = entry.adapter().createModelAdapter(model); | 66 | var adapter = storeAdapter.createModelAdapter(model); |
64 | model.addAdapter(entry.adapterType(), adapter); | 67 | model.addAdapter(adapter); |
65 | } | 68 | } |
66 | } | 69 | } |
67 | 70 | ||
@@ -86,16 +89,16 @@ public class ModelStoreImpl implements ModelStore { | |||
86 | } | 89 | } |
87 | 90 | ||
88 | @Override | 91 | @Override |
89 | public <T extends ModelStoreAdapter> Optional<T> tryGetAdapter(ModelAdapterType<?, ? extends T, ?> adapterType) { | 92 | public <T extends ModelStoreAdapter> Optional<T> tryGetAdapter(Class<? extends T> adapterType) { |
90 | return adapters.tryGet(adapterType, adapterType.getModelStoreAdapterClass()); | 93 | return AdapterUtils.tryGetAdapter(adapters, adapterType); |
91 | } | 94 | } |
92 | 95 | ||
93 | @Override | 96 | @Override |
94 | public <T extends ModelStoreAdapter> T getAdapter(ModelAdapterType<?, T, ?> adapterType) { | 97 | public <T extends ModelStoreAdapter> T getAdapter(Class<T> adapterType) { |
95 | return adapters.get(adapterType, adapterType.getModelStoreAdapterClass()); | 98 | return AdapterUtils.getAdapter(adapters, adapterType); |
96 | } | 99 | } |
97 | 100 | ||
98 | void addAdapter(AnyModelAdapterType adapterType, ModelStoreAdapter adapter) { | 101 | void addAdapter(ModelStoreAdapter adapter) { |
99 | adapters.add(adapterType, adapter); | 102 | adapters.add(adapter); |
100 | } | 103 | } |
101 | } | 104 | } |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/model/internal/SymbolEquivalenceClass.java b/subprojects/store/src/main/java/tools/refinery/store/model/internal/SymbolEquivalenceClass.java index 5bf1b90d..136f2976 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/model/internal/SymbolEquivalenceClass.java +++ b/subprojects/store/src/main/java/tools/refinery/store/model/internal/SymbolEquivalenceClass.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.model.internal; | 6 | package tools.refinery.store.model.internal; |
2 | 7 | ||
3 | import tools.refinery.store.representation.Symbol; | 8 | import tools.refinery.store.representation.Symbol; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/model/internal/VersionedInterpretation.java b/subprojects/store/src/main/java/tools/refinery/store/model/internal/VersionedInterpretation.java index c850d334..404be65f 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/model/internal/VersionedInterpretation.java +++ b/subprojects/store/src/main/java/tools/refinery/store/model/internal/VersionedInterpretation.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.model.internal; | 6 | package tools.refinery.store.model.internal; |
2 | 7 | ||
3 | import tools.refinery.store.map.Cursor; | 8 | import tools.refinery.store.map.Cursor; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/partial/PartialInterpretation.java b/subprojects/store/src/main/java/tools/refinery/store/partial/PartialInterpretation.java deleted file mode 100644 index 331fa294..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/partial/PartialInterpretation.java +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | package tools.refinery.store.partial; | ||
2 | |||
3 | import tools.refinery.store.adapter.ModelAdapterBuilderFactory; | ||
4 | import tools.refinery.store.model.ModelStoreBuilder; | ||
5 | import tools.refinery.store.partial.internal.PartialInterpretationBuilderImpl; | ||
6 | |||
7 | public final class PartialInterpretation extends ModelAdapterBuilderFactory<PartialInterpretationAdapter, | ||
8 | PartialInterpretationStoreAdapter, PartialInterpretationBuilder> { | ||
9 | public static final PartialInterpretation ADAPTER = new PartialInterpretation(); | ||
10 | |||
11 | private PartialInterpretation() { | ||
12 | super(PartialInterpretationAdapter.class, PartialInterpretationStoreAdapter.class, PartialInterpretationBuilder.class); | ||
13 | } | ||
14 | |||
15 | @Override | ||
16 | public PartialInterpretationBuilder createBuilder(ModelStoreBuilder storeBuilder) { | ||
17 | return new PartialInterpretationBuilderImpl(storeBuilder); | ||
18 | } | ||
19 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/partial/PartialInterpretationAdapter.java b/subprojects/store/src/main/java/tools/refinery/store/partial/PartialInterpretationAdapter.java deleted file mode 100644 index 2c83a200..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/partial/PartialInterpretationAdapter.java +++ /dev/null | |||
@@ -1,9 +0,0 @@ | |||
1 | package tools.refinery.store.partial; | ||
2 | |||
3 | import tools.refinery.store.adapter.ModelAdapter; | ||
4 | |||
5 | public interface PartialInterpretationAdapter extends ModelAdapter { | ||
6 | @Override | ||
7 | PartialInterpretationStoreAdapter getStoreAdapter(); | ||
8 | } | ||
9 | |||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/partial/PartialInterpretationBuilder.java b/subprojects/store/src/main/java/tools/refinery/store/partial/PartialInterpretationBuilder.java deleted file mode 100644 index 0ec13836..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/partial/PartialInterpretationBuilder.java +++ /dev/null | |||
@@ -1,9 +0,0 @@ | |||
1 | package tools.refinery.store.partial; | ||
2 | |||
3 | import tools.refinery.store.adapter.ModelAdapterBuilder; | ||
4 | import tools.refinery.store.model.ModelStore; | ||
5 | |||
6 | public interface PartialInterpretationBuilder extends ModelAdapterBuilder { | ||
7 | @Override | ||
8 | PartialInterpretationStoreAdapter createStoreAdapter(ModelStore store); | ||
9 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/partial/PartialInterpretationStoreAdapter.java b/subprojects/store/src/main/java/tools/refinery/store/partial/PartialInterpretationStoreAdapter.java deleted file mode 100644 index d4eb770d..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/partial/PartialInterpretationStoreAdapter.java +++ /dev/null | |||
@@ -1,9 +0,0 @@ | |||
1 | package tools.refinery.store.partial; | ||
2 | |||
3 | import tools.refinery.store.adapter.ModelStoreAdapter; | ||
4 | import tools.refinery.store.model.Model; | ||
5 | |||
6 | public interface PartialInterpretationStoreAdapter extends ModelStoreAdapter { | ||
7 | @Override | ||
8 | PartialInterpretationAdapter createModelAdapter(Model model); | ||
9 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/partial/internal/PartialInterpretationAdapterImpl.java b/subprojects/store/src/main/java/tools/refinery/store/partial/internal/PartialInterpretationAdapterImpl.java deleted file mode 100644 index 4b3977c0..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/partial/internal/PartialInterpretationAdapterImpl.java +++ /dev/null | |||
@@ -1,24 +0,0 @@ | |||
1 | package tools.refinery.store.partial.internal; | ||
2 | |||
3 | import tools.refinery.store.model.Model; | ||
4 | import tools.refinery.store.partial.PartialInterpretationAdapter; | ||
5 | |||
6 | public class PartialInterpretationAdapterImpl implements PartialInterpretationAdapter { | ||
7 | private final Model model; | ||
8 | private final PartialInterpretationStoreAdapterImpl storeAdapter; | ||
9 | |||
10 | PartialInterpretationAdapterImpl(Model model, PartialInterpretationStoreAdapterImpl storeAdapter) { | ||
11 | this.model = model; | ||
12 | this.storeAdapter = storeAdapter; | ||
13 | } | ||
14 | |||
15 | @Override | ||
16 | public Model getModel() { | ||
17 | return model; | ||
18 | } | ||
19 | |||
20 | @Override | ||
21 | public PartialInterpretationStoreAdapterImpl getStoreAdapter() { | ||
22 | return storeAdapter; | ||
23 | } | ||
24 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/partial/internal/PartialInterpretationBuilderImpl.java b/subprojects/store/src/main/java/tools/refinery/store/partial/internal/PartialInterpretationBuilderImpl.java deleted file mode 100644 index 4609dc32..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/partial/internal/PartialInterpretationBuilderImpl.java +++ /dev/null | |||
@@ -1,17 +0,0 @@ | |||
1 | package tools.refinery.store.partial.internal; | ||
2 | |||
3 | import tools.refinery.store.adapter.AbstractModelAdapterBuilder; | ||
4 | import tools.refinery.store.model.ModelStore; | ||
5 | import tools.refinery.store.model.ModelStoreBuilder; | ||
6 | import tools.refinery.store.partial.PartialInterpretationBuilder; | ||
7 | |||
8 | public class PartialInterpretationBuilderImpl extends AbstractModelAdapterBuilder implements PartialInterpretationBuilder { | ||
9 | public PartialInterpretationBuilderImpl(ModelStoreBuilder storeBuilder) { | ||
10 | super(storeBuilder); | ||
11 | } | ||
12 | |||
13 | @Override | ||
14 | public PartialInterpretationStoreAdapterImpl createStoreAdapter(ModelStore store) { | ||
15 | return null; | ||
16 | } | ||
17 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/partial/internal/PartialInterpretationStoreAdapterImpl.java b/subprojects/store/src/main/java/tools/refinery/store/partial/internal/PartialInterpretationStoreAdapterImpl.java deleted file mode 100644 index 970b802b..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/partial/internal/PartialInterpretationStoreAdapterImpl.java +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | package tools.refinery.store.partial.internal; | ||
2 | |||
3 | import tools.refinery.store.model.Model; | ||
4 | import tools.refinery.store.model.ModelStore; | ||
5 | import tools.refinery.store.partial.PartialInterpretationStoreAdapter; | ||
6 | |||
7 | public class PartialInterpretationStoreAdapterImpl implements PartialInterpretationStoreAdapter { | ||
8 | private final ModelStore store; | ||
9 | |||
10 | PartialInterpretationStoreAdapterImpl(ModelStore store) { | ||
11 | this.store = store; | ||
12 | } | ||
13 | |||
14 | @Override | ||
15 | public ModelStore getStore() { | ||
16 | return store; | ||
17 | } | ||
18 | |||
19 | @Override | ||
20 | public PartialInterpretationAdapterImpl createModelAdapter(Model model) { | ||
21 | return new PartialInterpretationAdapterImpl(model, this); | ||
22 | } | ||
23 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/DNF.java b/subprojects/store/src/main/java/tools/refinery/store/query/DNF.java deleted file mode 100644 index 95c5d787..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/DNF.java +++ /dev/null | |||
@@ -1,169 +0,0 @@ | |||
1 | package tools.refinery.store.query; | ||
2 | |||
3 | import tools.refinery.store.query.atom.DNFAtom; | ||
4 | |||
5 | import java.util.*; | ||
6 | |||
7 | public final class DNF implements RelationLike { | ||
8 | private final String name; | ||
9 | |||
10 | private final String uniqueName; | ||
11 | |||
12 | private final List<Variable> parameters; | ||
13 | |||
14 | private final List<FunctionalDependency<Variable>> functionalDependencies; | ||
15 | |||
16 | private final List<DNFAnd> clauses; | ||
17 | |||
18 | private DNF(String name, List<Variable> parameters, List<FunctionalDependency<Variable>> functionalDependencies, | ||
19 | List<DNFAnd> clauses) { | ||
20 | validateFunctionalDependencies(parameters, functionalDependencies); | ||
21 | this.name = name; | ||
22 | this.uniqueName = DNFUtils.generateUniqueName(name); | ||
23 | this.parameters = parameters; | ||
24 | this.functionalDependencies = functionalDependencies; | ||
25 | this.clauses = clauses; | ||
26 | } | ||
27 | |||
28 | private static void validateFunctionalDependencies( | ||
29 | Collection<Variable> parameters, Collection<FunctionalDependency<Variable>> functionalDependencies) { | ||
30 | var parameterSet = new HashSet<>(parameters); | ||
31 | for (var functionalDependency : functionalDependencies) { | ||
32 | validateParameters(parameters, parameterSet, functionalDependency.forEach(), functionalDependency); | ||
33 | validateParameters(parameters, parameterSet, functionalDependency.unique(), functionalDependency); | ||
34 | } | ||
35 | } | ||
36 | |||
37 | private static void validateParameters(Collection<Variable> parameters, Set<Variable> parameterSet, | ||
38 | Collection<Variable> toValidate, | ||
39 | FunctionalDependency<Variable> functionalDependency) { | ||
40 | for (var variable : toValidate) { | ||
41 | if (!parameterSet.contains(variable)) { | ||
42 | throw new IllegalArgumentException( | ||
43 | "Variable %s of functional dependency %s does not appear in the parameter list %s" | ||
44 | .formatted(variable, functionalDependency, parameters)); | ||
45 | } | ||
46 | } | ||
47 | } | ||
48 | |||
49 | @Override | ||
50 | public String name() { | ||
51 | return name; | ||
52 | } | ||
53 | |||
54 | public String getUniqueName() { | ||
55 | return uniqueName; | ||
56 | } | ||
57 | |||
58 | public List<Variable> getParameters() { | ||
59 | return parameters; | ||
60 | } | ||
61 | |||
62 | public List<FunctionalDependency<Variable>> getFunctionalDependencies() { | ||
63 | return functionalDependencies; | ||
64 | } | ||
65 | |||
66 | @Override | ||
67 | public int arity() { | ||
68 | return parameters.size(); | ||
69 | } | ||
70 | |||
71 | public List<DNFAnd> getClauses() { | ||
72 | return clauses; | ||
73 | } | ||
74 | |||
75 | public static Builder builder() { | ||
76 | return builder(null); | ||
77 | } | ||
78 | |||
79 | public static Builder builder(String name) { | ||
80 | return new Builder(name); | ||
81 | } | ||
82 | |||
83 | @SuppressWarnings("UnusedReturnValue") | ||
84 | public static class Builder { | ||
85 | private final String name; | ||
86 | |||
87 | private final List<Variable> parameters = new ArrayList<>(); | ||
88 | |||
89 | private final List<FunctionalDependency<Variable>> functionalDependencies = new ArrayList<>(); | ||
90 | |||
91 | private final List<List<DNFAtom>> clauses = new ArrayList<>(); | ||
92 | |||
93 | private Builder(String name) { | ||
94 | this.name = name; | ||
95 | } | ||
96 | |||
97 | public Builder parameter(Variable variable) { | ||
98 | parameters.add(variable); | ||
99 | return this; | ||
100 | } | ||
101 | |||
102 | public Builder parameters(Variable... variables) { | ||
103 | return parameters(List.of(variables)); | ||
104 | } | ||
105 | |||
106 | public Builder parameters(Collection<Variable> variables) { | ||
107 | parameters.addAll(variables); | ||
108 | return this; | ||
109 | } | ||
110 | |||
111 | public Builder functionalDependencies(Collection<FunctionalDependency<Variable>> functionalDependencies) { | ||
112 | this.functionalDependencies.addAll(functionalDependencies); | ||
113 | return this; | ||
114 | } | ||
115 | |||
116 | public Builder functionalDependency(FunctionalDependency<Variable> functionalDependency) { | ||
117 | functionalDependencies.add(functionalDependency); | ||
118 | return this; | ||
119 | } | ||
120 | |||
121 | public Builder functionalDependency(Set<Variable> forEach, Set<Variable> unique) { | ||
122 | return functionalDependency(new FunctionalDependency<>(forEach, unique)); | ||
123 | } | ||
124 | |||
125 | public Builder clause(DNFAtom... atoms) { | ||
126 | clauses.add(List.of(atoms)); | ||
127 | return this; | ||
128 | } | ||
129 | |||
130 | public Builder clause(Collection<DNFAtom> atoms) { | ||
131 | clauses.add(List.copyOf(atoms)); | ||
132 | return this; | ||
133 | } | ||
134 | |||
135 | public Builder clause(DNFAnd clause) { | ||
136 | return clause(clause.constraints()); | ||
137 | } | ||
138 | |||
139 | public Builder clauses(DNFAnd... clauses) { | ||
140 | for (var clause : clauses) { | ||
141 | this.clause(clause); | ||
142 | } | ||
143 | return this; | ||
144 | } | ||
145 | |||
146 | public Builder clauses(Collection<DNFAnd> clauses) { | ||
147 | for (var clause : clauses) { | ||
148 | this.clause(clause); | ||
149 | } | ||
150 | return this; | ||
151 | } | ||
152 | |||
153 | public DNF build() { | ||
154 | var postProcessedClauses = new ArrayList<DNFAnd>(); | ||
155 | for (var constraints : clauses) { | ||
156 | var variables = new HashSet<Variable>(); | ||
157 | for (var constraint : constraints) { | ||
158 | constraint.collectAllVariables(variables); | ||
159 | } | ||
160 | parameters.forEach(variables::remove); | ||
161 | postProcessedClauses.add(new DNFAnd(Collections.unmodifiableSet(variables), | ||
162 | Collections.unmodifiableList(constraints))); | ||
163 | } | ||
164 | return new DNF(name, Collections.unmodifiableList(parameters), | ||
165 | Collections.unmodifiableList(functionalDependencies), | ||
166 | Collections.unmodifiableList(postProcessedClauses)); | ||
167 | } | ||
168 | } | ||
169 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/DNFAnd.java b/subprojects/store/src/main/java/tools/refinery/store/query/DNFAnd.java deleted file mode 100644 index 8c3bf05d..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/DNFAnd.java +++ /dev/null | |||
@@ -1,9 +0,0 @@ | |||
1 | package tools.refinery.store.query; | ||
2 | |||
3 | import tools.refinery.store.query.atom.DNFAtom; | ||
4 | |||
5 | import java.util.List; | ||
6 | import java.util.Set; | ||
7 | |||
8 | public record DNFAnd(Set<Variable> quantifiedVariables, List<DNFAtom> constraints) { | ||
9 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/ModelQuery.java b/subprojects/store/src/main/java/tools/refinery/store/query/ModelQuery.java deleted file mode 100644 index 6a1aeabb..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/ModelQuery.java +++ /dev/null | |||
@@ -1,11 +0,0 @@ | |||
1 | package tools.refinery.store.query; | ||
2 | |||
3 | import tools.refinery.store.adapter.ModelAdapterType; | ||
4 | |||
5 | public final class ModelQuery extends ModelAdapterType<ModelQueryAdapter, ModelQueryStoreAdapter, ModelQueryBuilder> { | ||
6 | public static final ModelQuery ADAPTER = new ModelQuery(); | ||
7 | |||
8 | private ModelQuery() { | ||
9 | super(ModelQueryAdapter.class, ModelQueryStoreAdapter.class, ModelQueryBuilder.class); | ||
10 | } | ||
11 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/ModelQueryAdapter.java b/subprojects/store/src/main/java/tools/refinery/store/query/ModelQueryAdapter.java deleted file mode 100644 index 7449e39b..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/ModelQueryAdapter.java +++ /dev/null | |||
@@ -1,13 +0,0 @@ | |||
1 | package tools.refinery.store.query; | ||
2 | |||
3 | import tools.refinery.store.adapter.ModelAdapter; | ||
4 | |||
5 | public interface ModelQueryAdapter extends ModelAdapter { | ||
6 | ModelQueryStoreAdapter getStoreAdapter(); | ||
7 | |||
8 | ResultSet getResultSet(DNF query); | ||
9 | |||
10 | boolean hasPendingChanges(); | ||
11 | |||
12 | void flushChanges(); | ||
13 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/ModelQueryBuilder.java b/subprojects/store/src/main/java/tools/refinery/store/query/ModelQueryBuilder.java deleted file mode 100644 index 4364d844..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/ModelQueryBuilder.java +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | package tools.refinery.store.query; | ||
2 | |||
3 | import tools.refinery.store.adapter.ModelAdapterBuilder; | ||
4 | import tools.refinery.store.model.ModelStore; | ||
5 | |||
6 | import java.util.Collection; | ||
7 | import java.util.List; | ||
8 | |||
9 | public interface ModelQueryBuilder extends ModelAdapterBuilder { | ||
10 | default ModelQueryBuilder queries(DNF... queries) { | ||
11 | return queries(List.of(queries)); | ||
12 | } | ||
13 | |||
14 | default ModelQueryBuilder queries(Collection<DNF> queries) { | ||
15 | queries.forEach(this::query); | ||
16 | return this; | ||
17 | } | ||
18 | |||
19 | ModelQueryBuilder query(DNF query); | ||
20 | |||
21 | @Override | ||
22 | ModelQueryStoreAdapter createStoreAdapter(ModelStore store); | ||
23 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/ModelQueryStoreAdapter.java b/subprojects/store/src/main/java/tools/refinery/store/query/ModelQueryStoreAdapter.java deleted file mode 100644 index ef5a4587..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/ModelQueryStoreAdapter.java +++ /dev/null | |||
@@ -1,16 +0,0 @@ | |||
1 | package tools.refinery.store.query; | ||
2 | |||
3 | import tools.refinery.store.adapter.ModelStoreAdapter; | ||
4 | import tools.refinery.store.model.Model; | ||
5 | import tools.refinery.store.query.view.AnyRelationView; | ||
6 | |||
7 | import java.util.Collection; | ||
8 | |||
9 | public interface ModelQueryStoreAdapter extends ModelStoreAdapter { | ||
10 | Collection<AnyRelationView> getRelationViews(); | ||
11 | |||
12 | Collection<DNF> getQueries(); | ||
13 | |||
14 | @Override | ||
15 | ModelQueryAdapter createModelAdapter(Model model); | ||
16 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/RelationLike.java b/subprojects/store/src/main/java/tools/refinery/store/query/RelationLike.java deleted file mode 100644 index 8c784d8b..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/RelationLike.java +++ /dev/null | |||
@@ -1,11 +0,0 @@ | |||
1 | package tools.refinery.store.query; | ||
2 | |||
3 | public interface RelationLike { | ||
4 | String name(); | ||
5 | |||
6 | int arity(); | ||
7 | |||
8 | default boolean invalidIndex(int i) { | ||
9 | return i < 0 || i >= arity(); | ||
10 | } | ||
11 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/ResultSet.java b/subprojects/store/src/main/java/tools/refinery/store/query/ResultSet.java deleted file mode 100644 index 3542e252..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/ResultSet.java +++ /dev/null | |||
@@ -1,25 +0,0 @@ | |||
1 | package tools.refinery.store.query; | ||
2 | |||
3 | import tools.refinery.store.tuple.Tuple; | ||
4 | import tools.refinery.store.tuple.TupleLike; | ||
5 | |||
6 | import java.util.Optional; | ||
7 | import java.util.stream.Stream; | ||
8 | |||
9 | public interface ResultSet { | ||
10 | boolean hasResult(); | ||
11 | |||
12 | boolean hasResult(Tuple parameters); | ||
13 | |||
14 | Optional<TupleLike> oneResult(); | ||
15 | |||
16 | Optional<TupleLike> oneResult(Tuple parameters); | ||
17 | |||
18 | Stream<TupleLike> allResults(); | ||
19 | |||
20 | Stream<TupleLike> allResults(Tuple parameters); | ||
21 | |||
22 | int countResults(); | ||
23 | |||
24 | int countResults(Tuple parameters); | ||
25 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/Variable.java b/subprojects/store/src/main/java/tools/refinery/store/query/Variable.java deleted file mode 100644 index 3632f3c5..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/Variable.java +++ /dev/null | |||
@@ -1,43 +0,0 @@ | |||
1 | package tools.refinery.store.query; | ||
2 | |||
3 | import java.util.Objects; | ||
4 | |||
5 | public class Variable { | ||
6 | private final String name; | ||
7 | private final String uniqueName; | ||
8 | |||
9 | public Variable() { | ||
10 | this(null); | ||
11 | } | ||
12 | |||
13 | public Variable(String name) { | ||
14 | super(); | ||
15 | this.name = name; | ||
16 | this.uniqueName = DNFUtils.generateUniqueName(name); | ||
17 | |||
18 | } | ||
19 | public String getName() { | ||
20 | return name; | ||
21 | } | ||
22 | |||
23 | public String getUniqueName() { | ||
24 | return uniqueName; | ||
25 | } | ||
26 | |||
27 | public boolean isNamed() { | ||
28 | return name != null; | ||
29 | } | ||
30 | |||
31 | @Override | ||
32 | public boolean equals(Object o) { | ||
33 | if (this == o) return true; | ||
34 | if (o == null || getClass() != o.getClass()) return false; | ||
35 | Variable variable = (Variable) o; | ||
36 | return Objects.equals(uniqueName, variable.uniqueName); | ||
37 | } | ||
38 | |||
39 | @Override | ||
40 | public int hashCode() { | ||
41 | return Objects.hash(uniqueName); | ||
42 | } | ||
43 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/atom/CallAtom.java b/subprojects/store/src/main/java/tools/refinery/store/query/atom/CallAtom.java deleted file mode 100644 index 47121870..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/atom/CallAtom.java +++ /dev/null | |||
@@ -1,80 +0,0 @@ | |||
1 | package tools.refinery.store.query.atom; | ||
2 | |||
3 | import tools.refinery.store.query.Variable; | ||
4 | import tools.refinery.store.query.RelationLike; | ||
5 | |||
6 | import java.util.List; | ||
7 | import java.util.Objects; | ||
8 | import java.util.Set; | ||
9 | |||
10 | public abstract class CallAtom<T extends RelationLike> implements DNFAtom { | ||
11 | private final CallPolarity polarity; | ||
12 | private final T target; | ||
13 | private final List<Variable> substitution; | ||
14 | |||
15 | protected CallAtom(CallPolarity polarity, T target, List<Variable> substitution) { | ||
16 | if (substitution.size() != target.arity()) { | ||
17 | throw new IllegalArgumentException("%s needs %d arguments, but got %s".formatted(target.name(), | ||
18 | target.arity(), substitution.size())); | ||
19 | } | ||
20 | if (polarity.isTransitive() && target.arity() != 2) { | ||
21 | throw new IllegalArgumentException("Transitive closures can only take binary relations"); | ||
22 | } | ||
23 | this.polarity = polarity; | ||
24 | this.target = target; | ||
25 | this.substitution = substitution; | ||
26 | } | ||
27 | |||
28 | protected CallAtom(CallPolarity polarity, T target, Variable... substitution) { | ||
29 | this(polarity, target, List.of(substitution)); | ||
30 | } | ||
31 | |||
32 | protected CallAtom(boolean positive, T target, List<Variable> substitution) { | ||
33 | this(CallPolarity.fromBoolean(positive), target, substitution); | ||
34 | } | ||
35 | |||
36 | protected CallAtom(boolean positive, T target, Variable... substitution) { | ||
37 | this(positive, target, List.of(substitution)); | ||
38 | } | ||
39 | |||
40 | protected CallAtom(T target, List<Variable> substitution) { | ||
41 | this(true, target, substitution); | ||
42 | } | ||
43 | |||
44 | protected CallAtom(T target, Variable... substitution) { | ||
45 | this(target, List.of(substitution)); | ||
46 | } | ||
47 | |||
48 | public CallPolarity getPolarity() { | ||
49 | return polarity; | ||
50 | } | ||
51 | |||
52 | public T getTarget() { | ||
53 | return target; | ||
54 | } | ||
55 | |||
56 | public List<Variable> getSubstitution() { | ||
57 | return substitution; | ||
58 | } | ||
59 | |||
60 | @Override | ||
61 | public void collectAllVariables(Set<Variable> variables) { | ||
62 | if (polarity.isPositive()) { | ||
63 | variables.addAll(substitution); | ||
64 | } | ||
65 | } | ||
66 | |||
67 | @Override | ||
68 | public boolean equals(Object o) { | ||
69 | if (this == o) return true; | ||
70 | if (o == null || getClass() != o.getClass()) return false; | ||
71 | CallAtom<?> callAtom = (CallAtom<?>) o; | ||
72 | return polarity == callAtom.polarity && Objects.equals(target, callAtom.target) && Objects.equals(substitution | ||
73 | , callAtom.substitution); | ||
74 | } | ||
75 | |||
76 | @Override | ||
77 | public int hashCode() { | ||
78 | return Objects.hash(polarity, target, substitution); | ||
79 | } | ||
80 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/atom/ConstantAtom.java b/subprojects/store/src/main/java/tools/refinery/store/query/atom/ConstantAtom.java deleted file mode 100644 index 13dae7d0..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/atom/ConstantAtom.java +++ /dev/null | |||
@@ -1,12 +0,0 @@ | |||
1 | package tools.refinery.store.query.atom; | ||
2 | |||
3 | import tools.refinery.store.query.Variable; | ||
4 | |||
5 | import java.util.Set; | ||
6 | |||
7 | public record ConstantAtom(Variable variable, int nodeId) implements DNFAtom { | ||
8 | @Override | ||
9 | public void collectAllVariables(Set<Variable> variables) { | ||
10 | variables.add(variable); | ||
11 | } | ||
12 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/atom/DNFAtom.java b/subprojects/store/src/main/java/tools/refinery/store/query/atom/DNFAtom.java deleted file mode 100644 index ebf71236..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/atom/DNFAtom.java +++ /dev/null | |||
@@ -1,9 +0,0 @@ | |||
1 | package tools.refinery.store.query.atom; | ||
2 | |||
3 | import tools.refinery.store.query.Variable; | ||
4 | |||
5 | import java.util.Set; | ||
6 | |||
7 | public interface DNFAtom { | ||
8 | void collectAllVariables(Set<Variable> variables); | ||
9 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/atom/DNFCallAtom.java b/subprojects/store/src/main/java/tools/refinery/store/query/atom/DNFCallAtom.java deleted file mode 100644 index 3b4f5cd1..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/atom/DNFCallAtom.java +++ /dev/null | |||
@@ -1,32 +0,0 @@ | |||
1 | package tools.refinery.store.query.atom; | ||
2 | |||
3 | import tools.refinery.store.query.DNF; | ||
4 | import tools.refinery.store.query.Variable; | ||
5 | |||
6 | import java.util.List; | ||
7 | |||
8 | public class DNFCallAtom extends CallAtom<DNF> { | ||
9 | public DNFCallAtom(CallPolarity polarity, DNF target, List<Variable> substitution) { | ||
10 | super(polarity, target, substitution); | ||
11 | } | ||
12 | |||
13 | public DNFCallAtom(CallPolarity polarity, DNF target, Variable... substitution) { | ||
14 | super(polarity, target, substitution); | ||
15 | } | ||
16 | |||
17 | public DNFCallAtom(boolean positive, DNF target, List<Variable> substitution) { | ||
18 | super(positive, target, substitution); | ||
19 | } | ||
20 | |||
21 | public DNFCallAtom(boolean positive, DNF target, Variable... substitution) { | ||
22 | super(positive, target, substitution); | ||
23 | } | ||
24 | |||
25 | public DNFCallAtom(DNF target, List<Variable> substitution) { | ||
26 | super(target, substitution); | ||
27 | } | ||
28 | |||
29 | public DNFCallAtom(DNF target, Variable... substitution) { | ||
30 | super(target, substitution); | ||
31 | } | ||
32 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/atom/EquivalenceAtom.java b/subprojects/store/src/main/java/tools/refinery/store/query/atom/EquivalenceAtom.java deleted file mode 100644 index b1b3a6f7..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/atom/EquivalenceAtom.java +++ /dev/null | |||
@@ -1,17 +0,0 @@ | |||
1 | package tools.refinery.store.query.atom; | ||
2 | |||
3 | import tools.refinery.store.query.Variable; | ||
4 | |||
5 | import java.util.Set; | ||
6 | |||
7 | public record EquivalenceAtom(boolean positive, Variable left, Variable right) implements DNFAtom { | ||
8 | public EquivalenceAtom(Variable left, Variable right) { | ||
9 | this(true, left, right); | ||
10 | } | ||
11 | |||
12 | @Override | ||
13 | public void collectAllVariables(Set<Variable> variables) { | ||
14 | variables.add(left); | ||
15 | variables.add(right); | ||
16 | } | ||
17 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/atom/Modality.java b/subprojects/store/src/main/java/tools/refinery/store/query/atom/Modality.java deleted file mode 100644 index e389f563..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/atom/Modality.java +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | package tools.refinery.store.query.atom; | ||
2 | |||
3 | import java.util.Locale; | ||
4 | |||
5 | public enum Modality { | ||
6 | MUST, | ||
7 | MAY, | ||
8 | CURRENT; | ||
9 | |||
10 | public Modality negate() { | ||
11 | return switch(this) { | ||
12 | case MUST -> MAY; | ||
13 | case MAY -> MUST; | ||
14 | case CURRENT -> CURRENT; | ||
15 | }; | ||
16 | } | ||
17 | |||
18 | @Override | ||
19 | public String toString() { | ||
20 | return name().toLowerCase(Locale.ROOT); | ||
21 | } | ||
22 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/atom/RelationViewAtom.java b/subprojects/store/src/main/java/tools/refinery/store/query/atom/RelationViewAtom.java deleted file mode 100644 index a2b176c4..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/atom/RelationViewAtom.java +++ /dev/null | |||
@@ -1,32 +0,0 @@ | |||
1 | package tools.refinery.store.query.atom; | ||
2 | |||
3 | import tools.refinery.store.query.Variable; | ||
4 | import tools.refinery.store.query.view.AnyRelationView; | ||
5 | |||
6 | import java.util.List; | ||
7 | |||
8 | public final class RelationViewAtom extends CallAtom<AnyRelationView> { | ||
9 | public RelationViewAtom(CallPolarity polarity, AnyRelationView target, List<Variable> substitution) { | ||
10 | super(polarity, target, substitution); | ||
11 | } | ||
12 | |||
13 | public RelationViewAtom(CallPolarity polarity, AnyRelationView target, Variable... substitution) { | ||
14 | super(polarity, target, substitution); | ||
15 | } | ||
16 | |||
17 | public RelationViewAtom(boolean positive, AnyRelationView target, List<Variable> substitution) { | ||
18 | super(positive, target, substitution); | ||
19 | } | ||
20 | |||
21 | public RelationViewAtom(boolean positive, AnyRelationView target, Variable... substitution) { | ||
22 | super(positive, target, substitution); | ||
23 | } | ||
24 | |||
25 | public RelationViewAtom(AnyRelationView target, List<Variable> substitution) { | ||
26 | super(target, substitution); | ||
27 | } | ||
28 | |||
29 | public RelationViewAtom(AnyRelationView target, Variable... substitution) { | ||
30 | super(target, substitution); | ||
31 | } | ||
32 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/view/AnyRelationView.java b/subprojects/store/src/main/java/tools/refinery/store/query/view/AnyRelationView.java deleted file mode 100644 index 328cde3a..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/view/AnyRelationView.java +++ /dev/null | |||
@@ -1,24 +0,0 @@ | |||
1 | package tools.refinery.store.query.view; | ||
2 | |||
3 | import tools.refinery.store.model.Model; | ||
4 | import tools.refinery.store.query.FunctionalDependency; | ||
5 | import tools.refinery.store.representation.AnySymbol; | ||
6 | import tools.refinery.store.query.RelationLike; | ||
7 | |||
8 | import java.util.Set; | ||
9 | |||
10 | public sealed interface AnyRelationView extends RelationLike permits RelationView { | ||
11 | AnySymbol getSymbol(); | ||
12 | |||
13 | default Set<FunctionalDependency<Integer>> getFunctionalDependencies() { | ||
14 | return Set.of(); | ||
15 | } | ||
16 | |||
17 | default Set<RelationViewImplication> getImpliedRelationViews() { | ||
18 | return Set.of(); | ||
19 | } | ||
20 | |||
21 | boolean get(Model model, Object[] tuple); | ||
22 | |||
23 | Iterable<Object[]> getAll(Model model); | ||
24 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/view/FilteredRelationView.java b/subprojects/store/src/main/java/tools/refinery/store/query/view/FilteredRelationView.java deleted file mode 100644 index 64c601bb..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/view/FilteredRelationView.java +++ /dev/null | |||
@@ -1,49 +0,0 @@ | |||
1 | package tools.refinery.store.query.view; | ||
2 | |||
3 | import tools.refinery.store.tuple.Tuple; | ||
4 | import tools.refinery.store.representation.Symbol; | ||
5 | |||
6 | import java.util.Objects; | ||
7 | import java.util.function.BiPredicate; | ||
8 | import java.util.function.Predicate; | ||
9 | |||
10 | public class FilteredRelationView<T> extends TuplePreservingRelationView<T> { | ||
11 | private final BiPredicate<Tuple, T> predicate; | ||
12 | |||
13 | public FilteredRelationView(Symbol<T> symbol, String name, BiPredicate<Tuple, T> predicate) { | ||
14 | super(symbol, name); | ||
15 | this.predicate = predicate; | ||
16 | } | ||
17 | |||
18 | public FilteredRelationView(Symbol<T> symbol, BiPredicate<Tuple, T> predicate) { | ||
19 | super(symbol); | ||
20 | this.predicate = predicate; | ||
21 | } | ||
22 | |||
23 | public FilteredRelationView(Symbol<T> symbol, String name, Predicate<T> predicate) { | ||
24 | this(symbol, name, (k, v) -> predicate.test(v)); | ||
25 | } | ||
26 | |||
27 | public FilteredRelationView(Symbol<T> symbol, Predicate<T> predicate) { | ||
28 | this(symbol, (k, v) -> predicate.test(v)); | ||
29 | } | ||
30 | |||
31 | @Override | ||
32 | public boolean filter(Tuple key, T value) { | ||
33 | return this.predicate.test(key, value); | ||
34 | } | ||
35 | |||
36 | @Override | ||
37 | public boolean equals(Object o) { | ||
38 | if (this == o) return true; | ||
39 | if (o == null || getClass() != o.getClass()) return false; | ||
40 | if (!super.equals(o)) return false; | ||
41 | FilteredRelationView<?> that = (FilteredRelationView<?>) o; | ||
42 | return Objects.equals(predicate, that.predicate); | ||
43 | } | ||
44 | |||
45 | @Override | ||
46 | public int hashCode() { | ||
47 | return Objects.hash(super.hashCode(), predicate); | ||
48 | } | ||
49 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/view/FunctionalRelationView.java b/subprojects/store/src/main/java/tools/refinery/store/query/view/FunctionalRelationView.java deleted file mode 100644 index 3d278a8b..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/view/FunctionalRelationView.java +++ /dev/null | |||
@@ -1,71 +0,0 @@ | |||
1 | package tools.refinery.store.query.view; | ||
2 | |||
3 | import tools.refinery.store.model.Model; | ||
4 | import tools.refinery.store.query.FunctionalDependency; | ||
5 | import tools.refinery.store.representation.Symbol; | ||
6 | import tools.refinery.store.tuple.Tuple; | ||
7 | import tools.refinery.store.tuple.Tuple1; | ||
8 | |||
9 | import java.util.Set; | ||
10 | import java.util.stream.Collectors; | ||
11 | import java.util.stream.IntStream; | ||
12 | |||
13 | public final class FunctionalRelationView<T> extends RelationView<T> { | ||
14 | public FunctionalRelationView(Symbol<T> symbol, String name) { | ||
15 | super(symbol, name); | ||
16 | } | ||
17 | |||
18 | public FunctionalRelationView(Symbol<T> symbol) { | ||
19 | super(symbol); | ||
20 | } | ||
21 | |||
22 | @Override | ||
23 | public Set<FunctionalDependency<Integer>> getFunctionalDependencies() { | ||
24 | var arity = getSymbol().arity(); | ||
25 | var forEach = IntStream.range(0, arity).boxed().collect(Collectors.toUnmodifiableSet()); | ||
26 | var unique = Set.of(arity); | ||
27 | return Set.of(new FunctionalDependency<>(forEach, unique)); | ||
28 | } | ||
29 | |||
30 | @Override | ||
31 | public Set<RelationViewImplication> getImpliedRelationViews() { | ||
32 | var symbol = getSymbol(); | ||
33 | var impliedIndices = IntStream.range(0, symbol.arity()).boxed().toList(); | ||
34 | var keyOnlyRelationView = new KeyOnlyRelationView<>(symbol); | ||
35 | return Set.of(new RelationViewImplication(this, keyOnlyRelationView, impliedIndices)); | ||
36 | } | ||
37 | |||
38 | @Override | ||
39 | public boolean filter(Tuple key, T value) { | ||
40 | return true; | ||
41 | } | ||
42 | |||
43 | @Override | ||
44 | public Object[] forwardMap(Tuple key, T value) { | ||
45 | int size = key.getSize(); | ||
46 | Object[] result = new Object[size + 1]; | ||
47 | for (int i = 0; i < size; i++) { | ||
48 | result[i] = Tuple.of(key.get(i)); | ||
49 | } | ||
50 | result[key.getSize()] = value; | ||
51 | return result; | ||
52 | } | ||
53 | |||
54 | @Override | ||
55 | public boolean get(Model model, Object[] tuple) { | ||
56 | int[] content = new int[tuple.length - 1]; | ||
57 | for (int i = 0; i < tuple.length - 1; i++) { | ||
58 | content[i] = ((Tuple1) tuple[i]).value0(); | ||
59 | } | ||
60 | Tuple key = Tuple.of(content); | ||
61 | @SuppressWarnings("unchecked") | ||
62 | T valueInTuple = (T) tuple[tuple.length - 1]; | ||
63 | T valueInMap = model.getInterpretation(getSymbol()).get(key); | ||
64 | return valueInTuple.equals(valueInMap); | ||
65 | } | ||
66 | |||
67 | @Override | ||
68 | public int arity() { | ||
69 | return getSymbol().arity() + 1; | ||
70 | } | ||
71 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/view/RelationView.java b/subprojects/store/src/main/java/tools/refinery/store/query/view/RelationView.java deleted file mode 100644 index bbec1e73..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/view/RelationView.java +++ /dev/null | |||
@@ -1,62 +0,0 @@ | |||
1 | package tools.refinery.store.query.view; | ||
2 | |||
3 | import tools.refinery.store.map.CursorAsIterator; | ||
4 | import tools.refinery.store.model.Model; | ||
5 | import tools.refinery.store.representation.Symbol; | ||
6 | import tools.refinery.store.tuple.Tuple; | ||
7 | |||
8 | import java.util.Objects; | ||
9 | import java.util.UUID; | ||
10 | |||
11 | /** | ||
12 | * Represents a view of a {@link Symbol} that can be queried. | ||
13 | * | ||
14 | * @param <T> | ||
15 | * @author Oszkar Semerath | ||
16 | */ | ||
17 | public abstract non-sealed class RelationView<T> implements AnyRelationView { | ||
18 | private final Symbol<T> symbol; | ||
19 | |||
20 | private final String name; | ||
21 | |||
22 | protected RelationView(Symbol<T> symbol, String name) { | ||
23 | this.symbol = symbol; | ||
24 | this.name = name; | ||
25 | } | ||
26 | |||
27 | protected RelationView(Symbol<T> representation) { | ||
28 | this(representation, UUID.randomUUID().toString()); | ||
29 | } | ||
30 | |||
31 | @Override | ||
32 | public Symbol<T> getSymbol() { | ||
33 | return symbol; | ||
34 | } | ||
35 | |||
36 | @Override | ||
37 | public String name() { | ||
38 | return symbol.name() + "#" + name; | ||
39 | } | ||
40 | |||
41 | public abstract boolean filter(Tuple key, T value); | ||
42 | |||
43 | public abstract Object[] forwardMap(Tuple key, T value); | ||
44 | |||
45 | @Override | ||
46 | public Iterable<Object[]> getAll(Model model) { | ||
47 | return (() -> new CursorAsIterator<>(model.getInterpretation(symbol).getAll(), this::forwardMap, this::filter)); | ||
48 | } | ||
49 | |||
50 | @Override | ||
51 | public boolean equals(Object o) { | ||
52 | if (this == o) return true; | ||
53 | if (o == null || getClass() != o.getClass()) return false; | ||
54 | RelationView<?> that = (RelationView<?>) o; | ||
55 | return Objects.equals(symbol, that.symbol) && Objects.equals(name, that.name); | ||
56 | } | ||
57 | |||
58 | @Override | ||
59 | public int hashCode() { | ||
60 | return Objects.hash(symbol, name); | ||
61 | } | ||
62 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/view/RelationViewImplication.java b/subprojects/store/src/main/java/tools/refinery/store/query/view/RelationViewImplication.java deleted file mode 100644 index 2ba1fcc4..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/view/RelationViewImplication.java +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | package tools.refinery.store.query.view; | ||
2 | |||
3 | import java.util.List; | ||
4 | |||
5 | public record RelationViewImplication(AnyRelationView implyingRelationView, AnyRelationView impliedRelationView, | ||
6 | List<Integer> impliedIndices) { | ||
7 | public RelationViewImplication { | ||
8 | if (impliedIndices.size() != impliedRelationView.arity()) { | ||
9 | throw new IllegalArgumentException("Expected %d implied indices for %s, but %d are provided" | ||
10 | .formatted(impliedRelationView.arity(), impliedRelationView, impliedIndices.size())); | ||
11 | } | ||
12 | for (var index : impliedIndices) { | ||
13 | if (impliedRelationView.invalidIndex(index)) { | ||
14 | throw new IllegalArgumentException("%d is not a valid index for %s".formatted(index, | ||
15 | implyingRelationView)); | ||
16 | } | ||
17 | } | ||
18 | } | ||
19 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/query/view/TuplePreservingRelationView.java b/subprojects/store/src/main/java/tools/refinery/store/query/view/TuplePreservingRelationView.java deleted file mode 100644 index 8cc4986e..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/query/view/TuplePreservingRelationView.java +++ /dev/null | |||
@@ -1,44 +0,0 @@ | |||
1 | package tools.refinery.store.query.view; | ||
2 | |||
3 | import tools.refinery.store.model.Model; | ||
4 | import tools.refinery.store.tuple.Tuple; | ||
5 | import tools.refinery.store.tuple.Tuple1; | ||
6 | import tools.refinery.store.representation.Symbol; | ||
7 | |||
8 | public abstract class TuplePreservingRelationView<T> extends RelationView<T> { | ||
9 | protected TuplePreservingRelationView(Symbol<T> symbol, String name) { | ||
10 | super(symbol, name); | ||
11 | } | ||
12 | |||
13 | protected TuplePreservingRelationView(Symbol<T> symbol) { | ||
14 | super(symbol); | ||
15 | } | ||
16 | |||
17 | public Object[] forwardMap(Tuple key) { | ||
18 | Object[] result = new Object[key.getSize()]; | ||
19 | for (int i = 0; i < key.getSize(); i++) { | ||
20 | result[i] = Tuple.of(key.get(i)); | ||
21 | } | ||
22 | return result; | ||
23 | } | ||
24 | |||
25 | @Override | ||
26 | public Object[] forwardMap(Tuple key, T value) { | ||
27 | return forwardMap(key); | ||
28 | } | ||
29 | |||
30 | @Override | ||
31 | public boolean get(Model model, Object[] tuple) { | ||
32 | int[] content = new int[tuple.length]; | ||
33 | for (int i = 0; i < tuple.length; i++) { | ||
34 | content[i] = ((Tuple1) tuple[i]).value0(); | ||
35 | } | ||
36 | Tuple key = Tuple.of(content); | ||
37 | T value = model.getInterpretation(getSymbol()).get(key); | ||
38 | return filter(key, value); | ||
39 | } | ||
40 | |||
41 | public int arity() { | ||
42 | return this.getSymbol().arity(); | ||
43 | } | ||
44 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/representation/AbstractDomain.java b/subprojects/store/src/main/java/tools/refinery/store/representation/AbstractDomain.java new file mode 100644 index 00000000..52c740e8 --- /dev/null +++ b/subprojects/store/src/main/java/tools/refinery/store/representation/AbstractDomain.java | |||
@@ -0,0 +1,34 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.representation; | ||
7 | |||
8 | import java.util.Optional; | ||
9 | |||
10 | public non-sealed interface AbstractDomain<A, C> extends AnyAbstractDomain { | ||
11 | @Override | ||
12 | Class<A> abstractType(); | ||
13 | |||
14 | @Override | ||
15 | Class<C> concreteType(); | ||
16 | |||
17 | A toAbstract(C concreteValue); | ||
18 | |||
19 | Optional<C> toConcrete(A abstractValue); | ||
20 | |||
21 | default boolean isConcrete(A abstractValue) { | ||
22 | return toConcrete(abstractValue).isPresent(); | ||
23 | } | ||
24 | |||
25 | boolean isRefinement(A originalValue, A refinedValue); | ||
26 | |||
27 | A commonRefinement(A leftValue, A rightValue); | ||
28 | |||
29 | A commonAncestor(A leftValue, A rightValue); | ||
30 | |||
31 | A unknown(); | ||
32 | |||
33 | boolean isError(A abstractValue); | ||
34 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/representation/AnyAbstractDomain.java b/subprojects/store/src/main/java/tools/refinery/store/representation/AnyAbstractDomain.java new file mode 100644 index 00000000..c354fab7 --- /dev/null +++ b/subprojects/store/src/main/java/tools/refinery/store/representation/AnyAbstractDomain.java | |||
@@ -0,0 +1,12 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.representation; | ||
7 | |||
8 | public sealed interface AnyAbstractDomain permits AbstractDomain { | ||
9 | Class<?> abstractType(); | ||
10 | |||
11 | Class<?> concreteType(); | ||
12 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/representation/AnySymbol.java b/subprojects/store/src/main/java/tools/refinery/store/representation/AnySymbol.java index 20b9eead..b2377905 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/representation/AnySymbol.java +++ b/subprojects/store/src/main/java/tools/refinery/store/representation/AnySymbol.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.representation; | 6 | package tools.refinery.store.representation; |
2 | 7 | ||
3 | public sealed interface AnySymbol permits Symbol { | 8 | public sealed interface AnySymbol permits Symbol { |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/representation/Symbol.java b/subprojects/store/src/main/java/tools/refinery/store/representation/Symbol.java index 85ea15f4..cc748180 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/representation/Symbol.java +++ b/subprojects/store/src/main/java/tools/refinery/store/representation/Symbol.java | |||
@@ -1,25 +1,25 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.representation; | 6 | package tools.refinery.store.representation; |
2 | 7 | ||
3 | import java.util.Objects; | ||
4 | |||
5 | public record Symbol<T>(String name, int arity, Class<T> valueType, T defaultValue) implements AnySymbol { | 8 | public record Symbol<T>(String name, int arity, Class<T> valueType, T defaultValue) implements AnySymbol { |
6 | public boolean isDefaultValue(T value) { | 9 | @Override |
7 | return Objects.equals(defaultValue, value); | 10 | public String toString() { |
11 | return "%s/%d".formatted(name, arity); | ||
8 | } | 12 | } |
9 | 13 | ||
10 | @Override | 14 | public static Symbol<Boolean> of(String name, int arity) { |
11 | public boolean equals(Object o) { | 15 | return of(name, arity, Boolean.class, false); |
12 | return this == o; | ||
13 | } | 16 | } |
14 | 17 | ||
15 | @Override | 18 | public static <T> Symbol<T> of(String name, int arity, Class<T> valueType) { |
16 | public int hashCode() { | 19 | return of(name, arity, valueType, null); |
17 | // Compare by identity to make hash table lookups more efficient. | ||
18 | return System.identityHashCode(this); | ||
19 | } | 20 | } |
20 | 21 | ||
21 | @Override | 22 | public static <T> Symbol<T> of(String name, int arity, Class<T> valueType, T defaultValue) { |
22 | public String toString() { | 23 | return new Symbol<>(name, arity, valueType, defaultValue); |
23 | return "%s/%d".formatted(name, arity); | ||
24 | } | 24 | } |
25 | } | 25 | } |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/representation/TruthValue.java b/subprojects/store/src/main/java/tools/refinery/store/representation/TruthValue.java index b7893fd3..40baf9a5 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/representation/TruthValue.java +++ b/subprojects/store/src/main/java/tools/refinery/store/representation/TruthValue.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.representation; | 6 | package tools.refinery.store.representation; |
2 | 7 | ||
3 | public enum TruthValue { | 8 | public enum TruthValue { |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/representation/TruthValueDomain.java b/subprojects/store/src/main/java/tools/refinery/store/representation/TruthValueDomain.java new file mode 100644 index 00000000..89f8dd19 --- /dev/null +++ b/subprojects/store/src/main/java/tools/refinery/store/representation/TruthValueDomain.java | |||
@@ -0,0 +1,65 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.representation; | ||
7 | |||
8 | import java.util.Optional; | ||
9 | |||
10 | public final class TruthValueDomain implements AbstractDomain<TruthValue, Boolean> { | ||
11 | public static final TruthValueDomain INSTANCE = new TruthValueDomain(); | ||
12 | |||
13 | private TruthValueDomain() { | ||
14 | } | ||
15 | |||
16 | @Override | ||
17 | public Class<TruthValue> abstractType() { | ||
18 | return null; | ||
19 | } | ||
20 | |||
21 | @Override | ||
22 | public Class<Boolean> concreteType() { | ||
23 | return null; | ||
24 | } | ||
25 | |||
26 | @Override | ||
27 | public TruthValue toAbstract(Boolean concreteValue) { | ||
28 | return null; | ||
29 | } | ||
30 | |||
31 | @Override | ||
32 | public Optional<Boolean> toConcrete(TruthValue abstractValue) { | ||
33 | return Optional.empty(); | ||
34 | } | ||
35 | |||
36 | @Override | ||
37 | public boolean isConcrete(TruthValue abstractValue) { | ||
38 | return AbstractDomain.super.isConcrete(abstractValue); | ||
39 | } | ||
40 | |||
41 | @Override | ||
42 | public boolean isRefinement(TruthValue originalValue, TruthValue refinedValue) { | ||
43 | return false; | ||
44 | } | ||
45 | |||
46 | @Override | ||
47 | public TruthValue commonRefinement(TruthValue leftValue, TruthValue rightValue) { | ||
48 | return null; | ||
49 | } | ||
50 | |||
51 | @Override | ||
52 | public TruthValue commonAncestor(TruthValue leftValue, TruthValue rightValue) { | ||
53 | return null; | ||
54 | } | ||
55 | |||
56 | @Override | ||
57 | public TruthValue unknown() { | ||
58 | return null; | ||
59 | } | ||
60 | |||
61 | @Override | ||
62 | public boolean isError(TruthValue abstractValue) { | ||
63 | return false; | ||
64 | } | ||
65 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/CardinalityInterval.java b/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/CardinalityInterval.java index 273d0de7..704ca2fc 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/CardinalityInterval.java +++ b/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/CardinalityInterval.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.representation.cardinality; | 6 | package tools.refinery.store.representation.cardinality; |
2 | 7 | ||
3 | public sealed interface CardinalityInterval permits NonEmptyCardinalityInterval, EmptyCardinalityInterval { | 8 | public sealed interface CardinalityInterval permits NonEmptyCardinalityInterval, EmptyCardinalityInterval { |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/CardinalityIntervals.java b/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/CardinalityIntervals.java index e1a08bf9..ad16a3e8 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/CardinalityIntervals.java +++ b/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/CardinalityIntervals.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.representation.cardinality; | 6 | package tools.refinery.store.representation.cardinality; |
2 | 7 | ||
3 | public final class CardinalityIntervals { | 8 | public final class CardinalityIntervals { |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/EmptyCardinalityInterval.java b/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/EmptyCardinalityInterval.java index ab3ad9d1..49911c29 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/EmptyCardinalityInterval.java +++ b/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/EmptyCardinalityInterval.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.representation.cardinality; | 6 | package tools.refinery.store.representation.cardinality; |
2 | 7 | ||
3 | public final class EmptyCardinalityInterval implements CardinalityInterval { | 8 | public final class EmptyCardinalityInterval implements CardinalityInterval { |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/FiniteUpperCardinality.java b/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/FiniteUpperCardinality.java index 381c8a57..82afdbbc 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/FiniteUpperCardinality.java +++ b/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/FiniteUpperCardinality.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.representation.cardinality; | 6 | package tools.refinery.store.representation.cardinality; |
2 | 7 | ||
3 | import org.jetbrains.annotations.NotNull; | 8 | import org.jetbrains.annotations.NotNull; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/NonEmptyCardinalityInterval.java b/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/NonEmptyCardinalityInterval.java index 32b3786f..38bd53bf 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/NonEmptyCardinalityInterval.java +++ b/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/NonEmptyCardinalityInterval.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.representation.cardinality; | 6 | package tools.refinery.store.representation.cardinality; |
2 | 7 | ||
3 | import java.util.function.BinaryOperator; | 8 | import java.util.function.BinaryOperator; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/UnboundedUpperCardinality.java b/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/UnboundedUpperCardinality.java index 593bc322..a5634020 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/UnboundedUpperCardinality.java +++ b/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/UnboundedUpperCardinality.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.representation.cardinality; | 6 | package tools.refinery.store.representation.cardinality; |
2 | 7 | ||
3 | import org.jetbrains.annotations.NotNull; | 8 | import org.jetbrains.annotations.NotNull; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/UpperCardinalities.java b/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/UpperCardinalities.java index d850fdc9..1e18dde0 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/UpperCardinalities.java +++ b/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/UpperCardinalities.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.representation.cardinality; | 6 | package tools.refinery.store.representation.cardinality; |
2 | 7 | ||
3 | public final class UpperCardinalities { | 8 | public final class UpperCardinalities { |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/UpperCardinality.java b/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/UpperCardinality.java index c6e31cb7..5dbaa922 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/UpperCardinality.java +++ b/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/UpperCardinality.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.representation.cardinality; | 6 | package tools.refinery.store.representation.cardinality; |
2 | 7 | ||
3 | public sealed interface UpperCardinality extends Comparable<UpperCardinality> permits FiniteUpperCardinality, | 8 | public sealed interface UpperCardinality extends Comparable<UpperCardinality> permits FiniteUpperCardinality, |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/tuple/Tuple.java b/subprojects/store/src/main/java/tools/refinery/store/tuple/Tuple.java index bf844c6d..aae7b344 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/tuple/Tuple.java +++ b/subprojects/store/src/main/java/tools/refinery/store/tuple/Tuple.java | |||
@@ -1,28 +1,60 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.tuple; | 6 | package tools.refinery.store.tuple; |
2 | 7 | ||
3 | public sealed interface Tuple extends TupleLike permits Tuple0, Tuple1, Tuple2, TupleN { | 8 | import org.jetbrains.annotations.NotNull; |
9 | |||
10 | public sealed interface Tuple extends Comparable<Tuple> permits Tuple0, Tuple1, Tuple2, Tuple3, Tuple4, TupleN { | ||
11 | int getSize(); | ||
12 | |||
13 | int get(int element); | ||
14 | |||
4 | @Override | 15 | @Override |
5 | default Tuple toTuple() { | 16 | default int compareTo(@NotNull Tuple other) { |
6 | return this; | 17 | int size = getSize(); |
18 | int compareSize = Integer.compare(size, other.getSize()); | ||
19 | if (compareSize != 0) { | ||
20 | return compareSize; | ||
21 | } | ||
22 | for (int i = 0; i < size; i++) { | ||
23 | int compareElement = Integer.compare(get(i), other.get(i)); | ||
24 | if (compareElement != 0) { | ||
25 | return compareElement; | ||
26 | } | ||
27 | } | ||
28 | return 0; | ||
7 | } | 29 | } |
8 | 30 | ||
9 | static Tuple of() { | 31 | static Tuple0 of() { |
10 | return Tuple0.INSTANCE; | 32 | return Tuple0.INSTANCE; |
11 | } | 33 | } |
12 | 34 | ||
13 | static Tuple of(int value) { | 35 | static Tuple1 of(int value) { |
14 | return Tuple1.Cache.INSTANCE.getOrCreate(value); | 36 | return Tuple1.Cache.INSTANCE.getOrCreate(value); |
15 | } | 37 | } |
16 | 38 | ||
17 | static Tuple of(int value1, int value2) { | 39 | static Tuple2 of(int value1, int value2) { |
18 | return new Tuple2(value1, value2); | 40 | return new Tuple2(value1, value2); |
19 | } | 41 | } |
20 | 42 | ||
43 | static Tuple3 of(int value1, int value2, int value3) { | ||
44 | return new Tuple3(value1, value2, value3); | ||
45 | } | ||
46 | |||
47 | static Tuple4 of(int value1, int value2, int value3, int value4) { | ||
48 | return new Tuple4(value1, value2, value3, value4); | ||
49 | } | ||
50 | |||
21 | static Tuple of(int... values) { | 51 | static Tuple of(int... values) { |
22 | return switch (values.length) { | 52 | return switch (values.length) { |
23 | case 0 -> of(); | 53 | case 0 -> of(); |
24 | case 1 -> of(values[0]); | 54 | case 1 -> of(values[0]); |
25 | case 2 -> of(values[0], values[1]); | 55 | case 2 -> of(values[0], values[1]); |
56 | case 3 -> of(values[0], values[1], values[2]); | ||
57 | case 4 -> of(values[0], values[1], values[2], values[3]); | ||
26 | default -> new TupleN(values); | 58 | default -> new TupleN(values); |
27 | }; | 59 | }; |
28 | } | 60 | } |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/tuple/Tuple0.java b/subprojects/store/src/main/java/tools/refinery/store/tuple/Tuple0.java index 8eea5c3a..a9aa9bf2 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/tuple/Tuple0.java +++ b/subprojects/store/src/main/java/tools/refinery/store/tuple/Tuple0.java | |||
@@ -1,7 +1,22 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.tuple; | 6 | package tools.refinery.store.tuple; |
2 | 7 | ||
3 | public record Tuple0() implements Tuple { | 8 | import static tools.refinery.store.tuple.TupleConstants.TUPLE_BEGIN; |
4 | public static Tuple0 INSTANCE = new Tuple0(); | 9 | import static tools.refinery.store.tuple.TupleConstants.TUPLE_END; |
10 | |||
11 | /** | ||
12 | * Singleton implementation to ensure only a single empty tuple exists. | ||
13 | */ | ||
14 | @SuppressWarnings("squid:S6548") | ||
15 | public final class Tuple0 implements Tuple { | ||
16 | public static final Tuple0 INSTANCE = new Tuple0(); | ||
17 | |||
18 | private Tuple0() { | ||
19 | } | ||
5 | 20 | ||
6 | @Override | 21 | @Override |
7 | public int getSize() { | 22 | public int getSize() { |
@@ -14,12 +29,7 @@ public record Tuple0() implements Tuple { | |||
14 | } | 29 | } |
15 | 30 | ||
16 | @Override | 31 | @Override |
17 | public int[] toArray() { | ||
18 | return new int[]{}; | ||
19 | } | ||
20 | |||
21 | @Override | ||
22 | public String toString() { | 32 | public String toString() { |
23 | return "[]"; | 33 | return TUPLE_BEGIN + TUPLE_END; |
24 | } | 34 | } |
25 | } | 35 | } |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/tuple/Tuple1.java b/subprojects/store/src/main/java/tools/refinery/store/tuple/Tuple1.java index 07380966..388ee3a9 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/tuple/Tuple1.java +++ b/subprojects/store/src/main/java/tools/refinery/store/tuple/Tuple1.java | |||
@@ -1,10 +1,29 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.tuple; | 6 | package tools.refinery.store.tuple; |
2 | 7 | ||
8 | import org.jetbrains.annotations.NotNull; | ||
3 | import tools.refinery.store.model.TupleHashProvider; | 9 | import tools.refinery.store.model.TupleHashProvider; |
4 | 10 | ||
5 | import java.util.Arrays; | 11 | import java.util.Arrays; |
6 | 12 | ||
7 | public record Tuple1(int value0) implements Tuple { | 13 | import static tools.refinery.store.tuple.TupleConstants.TUPLE_BEGIN; |
14 | import static tools.refinery.store.tuple.TupleConstants.TUPLE_END; | ||
15 | |||
16 | public final class Tuple1 implements Tuple { | ||
17 | private final int value0; | ||
18 | |||
19 | private Tuple1(int value0) { | ||
20 | this.value0 = value0; | ||
21 | } | ||
22 | |||
23 | public int value0() { | ||
24 | return value0; | ||
25 | } | ||
26 | |||
8 | @Override | 27 | @Override |
9 | public int getSize() { | 28 | public int getSize() { |
10 | return 1; | 29 | return 1; |
@@ -19,20 +38,40 @@ public record Tuple1(int value0) implements Tuple { | |||
19 | } | 38 | } |
20 | 39 | ||
21 | @Override | 40 | @Override |
22 | public int[] toArray() { | 41 | public String toString() { |
23 | return new int[]{value0}; | 42 | return TUPLE_BEGIN + value0 + TUPLE_END; |
24 | } | 43 | } |
25 | 44 | ||
26 | @Override | 45 | @Override |
27 | public String toString() { | 46 | public boolean equals(Object o) { |
28 | return "[" + value0 + "]"; | 47 | if (this == o) return true; |
48 | if (o == null || getClass() != o.getClass()) return false; | ||
49 | Tuple1 tuple1 = (Tuple1) o; | ||
50 | return value0 == tuple1.value0; | ||
51 | } | ||
52 | |||
53 | @Override | ||
54 | public int hashCode() { | ||
55 | return 31 + value0; | ||
56 | } | ||
57 | |||
58 | @Override | ||
59 | public int compareTo(@NotNull Tuple other) { | ||
60 | if (other instanceof Tuple1 other1) { | ||
61 | return Integer.compare(value0, other1.value0); | ||
62 | } | ||
63 | return Tuple.super.compareTo(other); | ||
29 | } | 64 | } |
30 | 65 | ||
31 | /** | 66 | /** |
32 | * This class uses safe double-checked locking, see | 67 | * This class uses safe double-checked locking, see |
33 | * <a href="https://shipilev.net/blog/2014/safe-public-construction/">Safe Publication and Safe Initialization in | 68 | * <a href="https://shipilev.net/blog/2014/safe-public-construction/">Safe Publication and Safe Initialization in |
34 | * Java</a> for details. | 69 | * Java</a> for details. |
70 | * <p> | ||
71 | * This class implements the singleton pattern to ensure only a single cache exists. This is thread-safe because | ||
72 | * of the locking of the cache. | ||
35 | */ | 73 | */ |
74 | @SuppressWarnings("squid:S6548") | ||
36 | public static class Cache { | 75 | public static class Cache { |
37 | private static final int MIN_CACHE_SIZE = 256; | 76 | private static final int MIN_CACHE_SIZE = 256; |
38 | 77 | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/tuple/Tuple2.java b/subprojects/store/src/main/java/tools/refinery/store/tuple/Tuple2.java index 0836a32d..6d886fd3 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/tuple/Tuple2.java +++ b/subprojects/store/src/main/java/tools/refinery/store/tuple/Tuple2.java | |||
@@ -1,5 +1,14 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.tuple; | 6 | package tools.refinery.store.tuple; |
2 | 7 | ||
8 | import org.jetbrains.annotations.NotNull; | ||
9 | |||
10 | import static tools.refinery.store.tuple.TupleConstants.*; | ||
11 | |||
3 | public record Tuple2(int value0, int value1) implements Tuple { | 12 | public record Tuple2(int value0, int value1) implements Tuple { |
4 | @Override | 13 | @Override |
5 | public int getSize() { | 14 | public int getSize() { |
@@ -16,12 +25,34 @@ public record Tuple2(int value0, int value1) implements Tuple { | |||
16 | } | 25 | } |
17 | 26 | ||
18 | @Override | 27 | @Override |
19 | public int[] toArray() { | 28 | public String toString() { |
20 | return new int[]{value0, value1}; | 29 | return TUPLE_BEGIN + value0 + TUPLE_SEPARATOR + value1 + TUPLE_END; |
21 | } | 30 | } |
22 | 31 | ||
23 | @Override | 32 | @Override |
24 | public String toString() { | 33 | public boolean equals(Object o) { |
25 | return "[" + value0 + ", " + value1 + "]"; | 34 | if (this == o) return true; |
35 | if (o == null || getClass() != o.getClass()) return false; | ||
36 | Tuple2 tuple2 = (Tuple2) o; | ||
37 | return value0 == tuple2.value0 && value1 == tuple2.value1; | ||
38 | } | ||
39 | |||
40 | @Override | ||
41 | public int hashCode() { | ||
42 | int hash = 31 + value0; | ||
43 | hash = 31 * hash + value1; | ||
44 | return hash; | ||
45 | } | ||
46 | |||
47 | @Override | ||
48 | public int compareTo(@NotNull Tuple other) { | ||
49 | if (other instanceof Tuple2 other2) { | ||
50 | int compare0 = Integer.compare(value0, other2.value0); | ||
51 | if (compare0 != 0) { | ||
52 | return compare0; | ||
53 | } | ||
54 | return Integer.compare(value1, other2.value1); | ||
55 | } | ||
56 | return Tuple.super.compareTo(other); | ||
26 | } | 57 | } |
27 | } | 58 | } |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/tuple/Tuple3.java b/subprojects/store/src/main/java/tools/refinery/store/tuple/Tuple3.java new file mode 100644 index 00000000..734e45c2 --- /dev/null +++ b/subprojects/store/src/main/java/tools/refinery/store/tuple/Tuple3.java | |||
@@ -0,0 +1,64 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.tuple; | ||
7 | |||
8 | import org.jetbrains.annotations.NotNull; | ||
9 | |||
10 | import static tools.refinery.store.tuple.TupleConstants.*; | ||
11 | |||
12 | public record Tuple3(int value0, int value1, int value2) implements Tuple { | ||
13 | @Override | ||
14 | public int getSize() { | ||
15 | return 3; | ||
16 | } | ||
17 | |||
18 | @Override | ||
19 | public int get(int element) { | ||
20 | return switch (element) { | ||
21 | case 0 -> value0; | ||
22 | case 1 -> value1; | ||
23 | case 2 -> value2; | ||
24 | default -> throw new ArrayIndexOutOfBoundsException(element); | ||
25 | }; | ||
26 | } | ||
27 | |||
28 | @Override | ||
29 | public String toString() { | ||
30 | return TUPLE_BEGIN + value0 + TUPLE_SEPARATOR + value1 + TUPLE_SEPARATOR + value2 + TUPLE_END; | ||
31 | } | ||
32 | |||
33 | @Override | ||
34 | public boolean equals(Object o) { | ||
35 | if (this == o) return true; | ||
36 | if (o == null || getClass() != o.getClass()) return false; | ||
37 | Tuple3 tuple3 = (Tuple3) o; | ||
38 | return value0 == tuple3.value0 && value1 == tuple3.value1 && value2 == tuple3.value2; | ||
39 | } | ||
40 | |||
41 | @Override | ||
42 | public int hashCode() { | ||
43 | int hash = 31 + value0; | ||
44 | hash = 31 * hash + value1; | ||
45 | hash = 31 * hash + value2; | ||
46 | return hash; | ||
47 | } | ||
48 | |||
49 | @Override | ||
50 | public int compareTo(@NotNull Tuple other) { | ||
51 | if (other instanceof Tuple3 other3) { | ||
52 | int compare0 = Integer.compare(value0, other3.value0); | ||
53 | if (compare0 != 0) { | ||
54 | return compare0; | ||
55 | } | ||
56 | int compare1 = Integer.compare(value1, other3.value1); | ||
57 | if (compare1 != 0) { | ||
58 | return compare1; | ||
59 | } | ||
60 | return Integer.compare(value2, other3.value2); | ||
61 | } | ||
62 | return Tuple.super.compareTo(other); | ||
63 | } | ||
64 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/tuple/Tuple4.java b/subprojects/store/src/main/java/tools/refinery/store/tuple/Tuple4.java new file mode 100644 index 00000000..e1b93e7b --- /dev/null +++ b/subprojects/store/src/main/java/tools/refinery/store/tuple/Tuple4.java | |||
@@ -0,0 +1,71 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.tuple; | ||
7 | |||
8 | import org.jetbrains.annotations.NotNull; | ||
9 | |||
10 | import static tools.refinery.store.tuple.TupleConstants.*; | ||
11 | |||
12 | public record Tuple4(int value0, int value1, int value2, int value3) implements Tuple { | ||
13 | @Override | ||
14 | public int getSize() { | ||
15 | return 4; | ||
16 | } | ||
17 | |||
18 | @Override | ||
19 | public int get(int element) { | ||
20 | return switch (element) { | ||
21 | case 0 -> value0; | ||
22 | case 1 -> value1; | ||
23 | case 2 -> value2; | ||
24 | case 3 -> value3; | ||
25 | default -> throw new ArrayIndexOutOfBoundsException(element); | ||
26 | }; | ||
27 | } | ||
28 | |||
29 | @Override | ||
30 | public String toString() { | ||
31 | return TUPLE_BEGIN + value0 + TUPLE_SEPARATOR + value1 + TUPLE_SEPARATOR + value2 + TUPLE_SEPARATOR + value3 + | ||
32 | TUPLE_END; | ||
33 | } | ||
34 | |||
35 | @Override | ||
36 | public boolean equals(Object o) { | ||
37 | if (this == o) return true; | ||
38 | if (o == null || getClass() != o.getClass()) return false; | ||
39 | Tuple4 tuple4 = (Tuple4) o; | ||
40 | return value0 == tuple4.value0 && value1 == tuple4.value1 && value2 == tuple4.value2 && value3 == tuple4.value3; | ||
41 | } | ||
42 | |||
43 | @Override | ||
44 | public int hashCode() { | ||
45 | int hash = 31 + value0; | ||
46 | hash = 31 * hash + value1; | ||
47 | hash = 31 * hash + value2; | ||
48 | hash = 31 * hash + value3; | ||
49 | return hash; | ||
50 | } | ||
51 | |||
52 | @Override | ||
53 | public int compareTo(@NotNull Tuple other) { | ||
54 | if (other instanceof Tuple4 other4) { | ||
55 | int compare0 = Integer.compare(value0, other4.value0); | ||
56 | if (compare0 != 0) { | ||
57 | return compare0; | ||
58 | } | ||
59 | int compare1 = Integer.compare(value1, other4.value1); | ||
60 | if (compare1 != 0) { | ||
61 | return compare1; | ||
62 | } | ||
63 | int compare2 = Integer.compare(value2, other4.value2); | ||
64 | if (compare2 != 0) { | ||
65 | return compare2; | ||
66 | } | ||
67 | return Integer.compare(value3, other4.value3); | ||
68 | } | ||
69 | return Tuple.super.compareTo(other); | ||
70 | } | ||
71 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/tuple/TupleConstants.java b/subprojects/store/src/main/java/tools/refinery/store/tuple/TupleConstants.java new file mode 100644 index 00000000..f7d27848 --- /dev/null +++ b/subprojects/store/src/main/java/tools/refinery/store/tuple/TupleConstants.java | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.tuple; | ||
7 | |||
8 | final class TupleConstants { | ||
9 | public static final int MAX_STATIC_ARITY_TUPLE_SIZE = 4; | ||
10 | public static final String TUPLE_BEGIN = "["; | ||
11 | public static final String TUPLE_SEPARATOR = ", "; | ||
12 | public static final String TUPLE_END = "]"; | ||
13 | |||
14 | private TupleConstants() { | ||
15 | throw new IllegalArgumentException("This is a static utility class an should not instantiated directly"); | ||
16 | } | ||
17 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/tuple/TupleLike.java b/subprojects/store/src/main/java/tools/refinery/store/tuple/TupleLike.java deleted file mode 100644 index 470ca298..00000000 --- a/subprojects/store/src/main/java/tools/refinery/store/tuple/TupleLike.java +++ /dev/null | |||
@@ -1,25 +0,0 @@ | |||
1 | package tools.refinery.store.tuple; | ||
2 | |||
3 | public interface TupleLike { | ||
4 | int getSize(); | ||
5 | |||
6 | int get(int element); | ||
7 | |||
8 | default int[] toArray() { | ||
9 | int size = getSize(); | ||
10 | var array = new int[size]; | ||
11 | for (int i = 0; i < size; i++) { | ||
12 | array[i] = get(i); | ||
13 | } | ||
14 | return array; | ||
15 | } | ||
16 | |||
17 | default Tuple toTuple() { | ||
18 | return switch (getSize()) { | ||
19 | case 0 -> Tuple.of(); | ||
20 | case 1 -> Tuple.of(get(0)); | ||
21 | case 2 -> Tuple.of(get(0), get(1)); | ||
22 | default -> Tuple.of(toArray()); | ||
23 | }; | ||
24 | } | ||
25 | } | ||
diff --git a/subprojects/store/src/main/java/tools/refinery/store/tuple/TupleN.java b/subprojects/store/src/main/java/tools/refinery/store/tuple/TupleN.java index 15fd063b..b66af491 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/tuple/TupleN.java +++ b/subprojects/store/src/main/java/tools/refinery/store/tuple/TupleN.java | |||
@@ -1,14 +1,23 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.tuple; | 6 | package tools.refinery.store.tuple; |
2 | 7 | ||
3 | import java.util.Arrays; | 8 | import java.util.Arrays; |
4 | import java.util.stream.Collectors; | 9 | import java.util.stream.Collectors; |
5 | 10 | ||
6 | public record TupleN(int[] values) implements Tuple { | 11 | import static tools.refinery.store.tuple.TupleConstants.*; |
7 | static final int CUSTOM_TUPLE_SIZE = 2; | ||
8 | 12 | ||
9 | public TupleN(int[] values) { | 13 | public final class TupleN implements Tuple { |
10 | if (values.length < CUSTOM_TUPLE_SIZE) | 14 | private final int[] values; |
11 | throw new IllegalArgumentException(); | 15 | |
16 | TupleN(int[] values) { | ||
17 | if (values.length < MAX_STATIC_ARITY_TUPLE_SIZE) { | ||
18 | throw new IllegalArgumentException("Tuples of size at most %d must use static arity Tuple classes" | ||
19 | .formatted(MAX_STATIC_ARITY_TUPLE_SIZE)); | ||
20 | } | ||
12 | this.values = Arrays.copyOf(values, values.length); | 21 | this.values = Arrays.copyOf(values, values.length); |
13 | } | 22 | } |
14 | 23 | ||
@@ -23,19 +32,11 @@ public record TupleN(int[] values) implements Tuple { | |||
23 | } | 32 | } |
24 | 33 | ||
25 | @Override | 34 | @Override |
26 | public int[] toArray() { | ||
27 | return values; | ||
28 | } | ||
29 | |||
30 | @Override | ||
31 | public String toString() { | 35 | public String toString() { |
32 | var valuesString = Arrays.stream(values).mapToObj(Integer::toString).collect(Collectors.joining(", ")); | 36 | var valuesString = Arrays.stream(values) |
33 | return "[" + valuesString + "]"; | 37 | .mapToObj(Integer::toString) |
34 | } | 38 | .collect(Collectors.joining(TUPLE_SEPARATOR)); |
35 | 39 | return TUPLE_BEGIN + valuesString + TUPLE_END; | |
36 | @Override | ||
37 | public int hashCode() { | ||
38 | return Arrays.hashCode(values); | ||
39 | } | 40 | } |
40 | 41 | ||
41 | @Override | 42 | @Override |
@@ -49,4 +50,9 @@ public record TupleN(int[] values) implements Tuple { | |||
49 | TupleN other = (TupleN) obj; | 50 | TupleN other = (TupleN) obj; |
50 | return Arrays.equals(values, other.values); | 51 | return Arrays.equals(values, other.values); |
51 | } | 52 | } |
53 | |||
54 | @Override | ||
55 | public int hashCode() { | ||
56 | return Arrays.hashCode(values); | ||
57 | } | ||
52 | } | 58 | } |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/util/CollectionsUtil.java b/subprojects/store/src/main/java/tools/refinery/store/util/CollectionsUtil.java index 841d0dfa..adecd79b 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/util/CollectionsUtil.java +++ b/subprojects/store/src/main/java/tools/refinery/store/util/CollectionsUtil.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.util; | 6 | package tools.refinery.store.util; |
2 | 7 | ||
3 | import java.util.Iterator; | 8 | import java.util.Iterator; |
diff --git a/subprojects/store/src/main/java/tools/refinery/store/util/CycleDetectingMapper.java b/subprojects/store/src/main/java/tools/refinery/store/util/CycleDetectingMapper.java new file mode 100644 index 00000000..78ad2ad7 --- /dev/null +++ b/subprojects/store/src/main/java/tools/refinery/store/util/CycleDetectingMapper.java | |||
@@ -0,0 +1,57 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.util; | ||
7 | |||
8 | import java.util.*; | ||
9 | import java.util.function.Function; | ||
10 | import java.util.stream.Collectors; | ||
11 | |||
12 | public class CycleDetectingMapper<T, R> { | ||
13 | private static final String SEPARATOR = " -> "; | ||
14 | |||
15 | private final Function<T, String> getName; | ||
16 | |||
17 | private final Function<T, R> doMap; | ||
18 | |||
19 | private final Set<T> inProgress = new LinkedHashSet<>(); | ||
20 | |||
21 | private final Map<T, R> results = new HashMap<>(); | ||
22 | |||
23 | public CycleDetectingMapper(Function<T, String> getName, Function<T, R> doMap) { | ||
24 | this.getName = getName; | ||
25 | this.doMap = doMap; | ||
26 | } | ||
27 | |||
28 | public R map(T input) { | ||
29 | if (inProgress.contains(input)) { | ||
30 | var path = inProgress.stream().map(getName).collect(Collectors.joining(SEPARATOR)); | ||
31 | throw new IllegalArgumentException("Circular reference %s%s%s detected".formatted(path, SEPARATOR, | ||
32 | getName.apply(input))); | ||
33 | } | ||
34 | // We can't use computeIfAbsent here, because translating referenced queries calls this method in a reentrant | ||
35 | // way, which would cause a ConcurrentModificationException with computeIfAbsent. | ||
36 | @SuppressWarnings("squid:S3824") | ||
37 | var result = results.get(input); | ||
38 | if (result == null) { | ||
39 | inProgress.add(input); | ||
40 | try { | ||
41 | result = doMap.apply(input); | ||
42 | results.put(input, result); | ||
43 | } finally { | ||
44 | inProgress.remove(input); | ||
45 | } | ||
46 | } | ||
47 | return result; | ||
48 | } | ||
49 | |||
50 | public List<T> getInProgress() { | ||
51 | return List.copyOf(inProgress); | ||
52 | } | ||
53 | |||
54 | public R getAlreadyMapped(T input) { | ||
55 | return results.get(input); | ||
56 | } | ||
57 | } | ||
diff --git a/subprojects/store/src/test/java/tools/refinery/store/map/tests/MapUnitTests.java b/subprojects/store/src/test/java/tools/refinery/store/map/tests/MapUnitTests.java index 6889fd07..2be49bd9 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/map/tests/MapUnitTests.java +++ b/subprojects/store/src/test/java/tools/refinery/store/map/tests/MapUnitTests.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map.tests; | 6 | package tools.refinery.store.map.tests; |
2 | 7 | ||
3 | import org.junit.jupiter.api.Test; | 8 | import org.junit.jupiter.api.Test; |
diff --git a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/CommitFuzzTest.java b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/CommitFuzzTest.java index 7977f772..58206eda 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/CommitFuzzTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/CommitFuzzTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map.tests.fuzz; | 6 | package tools.refinery.store.map.tests.fuzz; |
2 | 7 | ||
3 | import org.junit.jupiter.api.Tag; | 8 | import org.junit.jupiter.api.Tag; |
diff --git a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/ContentEqualsFuzzTest.java b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/ContentEqualsFuzzTest.java index 99e76649..c49911b8 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/ContentEqualsFuzzTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/ContentEqualsFuzzTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map.tests.fuzz; | 6 | package tools.refinery.store.map.tests.fuzz; |
2 | 7 | ||
3 | import org.junit.jupiter.api.Tag; | 8 | import org.junit.jupiter.api.Tag; |
diff --git a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/DiffCursorFuzzTest.java b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/DiffCursorFuzzTest.java index e02448cf..5a4f8038 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/DiffCursorFuzzTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/DiffCursorFuzzTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map.tests.fuzz; | 6 | package tools.refinery.store.map.tests.fuzz; |
2 | 7 | ||
3 | import org.junit.jupiter.api.Tag; | 8 | import org.junit.jupiter.api.Tag; |
diff --git a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MultiThreadFuzzTest.java b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MultiThreadFuzzTest.java index ea58e1b7..3b55434c 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MultiThreadFuzzTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MultiThreadFuzzTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map.tests.fuzz; | 6 | package tools.refinery.store.map.tests.fuzz; |
2 | 7 | ||
3 | import org.junit.jupiter.api.Tag; | 8 | import org.junit.jupiter.api.Tag; |
diff --git a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MultiThreadTestRunnable.java b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MultiThreadTestRunnable.java index f449ca97..9b2e591a 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MultiThreadTestRunnable.java +++ b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MultiThreadTestRunnable.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map.tests.fuzz; | 6 | package tools.refinery.store.map.tests.fuzz; |
2 | 7 | ||
3 | import java.util.ArrayList; | 8 | import java.util.ArrayList; |
diff --git a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MutableFuzzTest.java b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MutableFuzzTest.java index 61b17362..fdcd7f9f 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MutableFuzzTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MutableFuzzTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map.tests.fuzz; | 6 | package tools.refinery.store.map.tests.fuzz; |
2 | 7 | ||
3 | import static org.junit.jupiter.api.Assertions.fail; | 8 | import static org.junit.jupiter.api.Assertions.fail; |
diff --git a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MutableImmutableCompareFuzzTest.java b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MutableImmutableCompareFuzzTest.java index cee15fe1..420dade6 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MutableImmutableCompareFuzzTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/MutableImmutableCompareFuzzTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map.tests.fuzz; | 6 | package tools.refinery.store.map.tests.fuzz; |
2 | 7 | ||
3 | import static org.junit.jupiter.api.Assertions.fail; | 8 | import static org.junit.jupiter.api.Assertions.fail; |
diff --git a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/RestoreFuzzTest.java b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/RestoreFuzzTest.java index 1661cccb..0b399c3a 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/RestoreFuzzTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/RestoreFuzzTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map.tests.fuzz; | 6 | package tools.refinery.store.map.tests.fuzz; |
2 | 7 | ||
3 | import org.junit.jupiter.api.Tag; | 8 | import org.junit.jupiter.api.Tag; |
diff --git a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/SharedStoreFuzzTest.java b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/SharedStoreFuzzTest.java index 0544687a..680d962d 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/SharedStoreFuzzTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/SharedStoreFuzzTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map.tests.fuzz; | 6 | package tools.refinery.store.map.tests.fuzz; |
2 | 7 | ||
3 | import java.util.HashMap; | 8 | import java.util.HashMap; |
diff --git a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/utils/FuzzTestUtils.java b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/utils/FuzzTestUtils.java index 89c01690..32675635 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/utils/FuzzTestUtils.java +++ b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/utils/FuzzTestUtils.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map.tests.fuzz.utils; | 6 | package tools.refinery.store.map.tests.fuzz.utils; |
2 | 7 | ||
3 | import java.util.Arrays; | 8 | import java.util.Arrays; |
diff --git a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/utils/FuzzTestUtilsTest.java b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/utils/FuzzTestUtilsTest.java index 8c641205..951d6336 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/utils/FuzzTestUtilsTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/map/tests/fuzz/utils/FuzzTestUtilsTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map.tests.fuzz.utils; | 6 | package tools.refinery.store.map.tests.fuzz.utils; |
2 | 7 | ||
3 | import static org.junit.jupiter.api.Assertions.assertEquals; | 8 | import static org.junit.jupiter.api.Assertions.assertEquals; |
diff --git a/subprojects/store/src/test/java/tools/refinery/store/map/tests/utils/MapTestEnvironment.java b/subprojects/store/src/test/java/tools/refinery/store/map/tests/utils/MapTestEnvironment.java index 0e695aaa..e7348370 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/map/tests/utils/MapTestEnvironment.java +++ b/subprojects/store/src/test/java/tools/refinery/store/map/tests/utils/MapTestEnvironment.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.map.tests.utils; | 6 | package tools.refinery.store.map.tests.utils; |
2 | 7 | ||
3 | import tools.refinery.store.map.*; | 8 | import tools.refinery.store.map.*; |
diff --git a/subprojects/store/src/test/java/tools/refinery/store/model/hashtests/HashEfficiencyTest.java b/subprojects/store/src/test/java/tools/refinery/store/model/hashtests/HashEfficiencyTest.java index bb083805..4d4f5e26 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/model/hashtests/HashEfficiencyTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/model/hashtests/HashEfficiencyTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.model.hashtests; | 6 | package tools.refinery.store.model.hashtests; |
2 | 7 | ||
3 | import static org.junit.jupiter.api.Assertions.assertEquals; | 8 | import static org.junit.jupiter.api.Assertions.assertEquals; |
diff --git a/subprojects/store/src/test/java/tools/refinery/store/model/tests/ModelTest.java b/subprojects/store/src/test/java/tools/refinery/store/model/tests/ModelTest.java index 371b5e47..56b75804 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/model/tests/ModelTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/model/tests/ModelTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.model.tests; | 6 | package tools.refinery.store.model.tests; |
2 | 7 | ||
3 | import org.junit.jupiter.api.Test; | 8 | import org.junit.jupiter.api.Test; |
@@ -9,27 +14,24 @@ import tools.refinery.store.tuple.Tuple; | |||
9 | import static org.junit.jupiter.api.Assertions.*; | 14 | import static org.junit.jupiter.api.Assertions.*; |
10 | 15 | ||
11 | class ModelTest { | 16 | class ModelTest { |
17 | private static final Symbol<Boolean> person = Symbol.of("Person", 1); | ||
18 | private static final Symbol<Integer> age = Symbol.of("age", 1, Integer.class); | ||
19 | private static final Symbol<Boolean> friend = Symbol.of("friend", 2); | ||
20 | |||
12 | @Test | 21 | @Test |
13 | void modelConstructionTest() { | 22 | void modelConstructionTest() { |
14 | var person = new Symbol<>("Person", 1, Boolean.class, false); | ||
15 | var friend = new Symbol<>("friend", 2, Boolean.class, false); | ||
16 | |||
17 | var store = ModelStore.builder().symbols(person, friend).build(); | 23 | var store = ModelStore.builder().symbols(person, friend).build(); |
18 | var symbols = store.getSymbols(); | 24 | var symbols = store.getSymbols(); |
19 | 25 | ||
20 | assertTrue(symbols.contains(person)); | 26 | assertTrue(symbols.contains(person)); |
21 | assertTrue(symbols.contains(friend)); | 27 | assertTrue(symbols.contains(friend)); |
22 | 28 | ||
23 | var other = new Symbol<>("other", 2, Integer.class, null); | 29 | var other = Symbol.of("other", 2, Integer.class); |
24 | assertFalse(symbols.contains(other)); | 30 | assertFalse(symbols.contains(other)); |
25 | } | 31 | } |
26 | 32 | ||
27 | @Test | 33 | @Test |
28 | void modelBuildingTest() { | 34 | void modelBuildingTest() { |
29 | var person = new Symbol<>("Person", 1, Boolean.class, false); | ||
30 | var age = new Symbol<>("age", 1, Integer.class, null); | ||
31 | var friend = new Symbol<>("friend", 2, Boolean.class, false); | ||
32 | |||
33 | var store = ModelStore.builder().symbols(person, age, friend).build(); | 35 | var store = ModelStore.builder().symbols(person, age, friend).build(); |
34 | var model = store.createEmptyModel(); | 36 | var model = store.createEmptyModel(); |
35 | var personInterpretation = model.getInterpretation(person); | 37 | var personInterpretation = model.getInterpretation(person); |
@@ -49,7 +51,7 @@ class ModelTest { | |||
49 | 51 | ||
50 | assertEquals(3, ageInterpretation.get(Tuple.of(0))); | 52 | assertEquals(3, ageInterpretation.get(Tuple.of(0))); |
51 | assertEquals(1, ageInterpretation.get(Tuple.of(1))); | 53 | assertEquals(1, ageInterpretation.get(Tuple.of(1))); |
52 | assertNull(ageInterpretation.get( Tuple.of(2))); | 54 | assertNull(ageInterpretation.get(Tuple.of(2))); |
53 | 55 | ||
54 | assertTrue(friendInterpretation.get(Tuple.of(0, 1))); | 56 | assertTrue(friendInterpretation.get(Tuple.of(0, 1))); |
55 | assertFalse(friendInterpretation.get(Tuple.of(0, 5))); | 57 | assertFalse(friendInterpretation.get(Tuple.of(0, 5))); |
@@ -57,8 +59,6 @@ class ModelTest { | |||
57 | 59 | ||
58 | @Test | 60 | @Test |
59 | void modelBuildingArityFailTest() { | 61 | void modelBuildingArityFailTest() { |
60 | var person = new Symbol<>("Person", 1, Boolean.class, false); | ||
61 | |||
62 | var store = ModelStore.builder().symbols(person).build(); | 62 | var store = ModelStore.builder().symbols(person).build(); |
63 | var model = store.createEmptyModel(); | 63 | var model = store.createEmptyModel(); |
64 | var personInterpretation = model.getInterpretation(person); | 64 | var personInterpretation = model.getInterpretation(person); |
@@ -70,8 +70,6 @@ class ModelTest { | |||
70 | 70 | ||
71 | @Test | 71 | @Test |
72 | void modelBuildingNullFailTest() { | 72 | void modelBuildingNullFailTest() { |
73 | var age = new Symbol<>("age", 1, Integer.class, null); | ||
74 | |||
75 | var store = ModelStore.builder().symbols(age).build(); | 73 | var store = ModelStore.builder().symbols(age).build(); |
76 | var model = store.createEmptyModel(); | 74 | var model = store.createEmptyModel(); |
77 | var ageInterpretation = model.getInterpretation(age); | 75 | var ageInterpretation = model.getInterpretation(age); |
@@ -84,10 +82,6 @@ class ModelTest { | |||
84 | 82 | ||
85 | @Test | 83 | @Test |
86 | void modelUpdateTest() { | 84 | void modelUpdateTest() { |
87 | var person = new Symbol<>("Person", 1, Boolean.class, false); | ||
88 | var age = new Symbol<>("age", 1, Integer.class, null); | ||
89 | var friend = new Symbol<>("friend", 2, Boolean.class, false); | ||
90 | |||
91 | var store = ModelStore.builder().symbols(person, age, friend).build(); | 85 | var store = ModelStore.builder().symbols(person, age, friend).build(); |
92 | var model = store.createEmptyModel(); | 86 | var model = store.createEmptyModel(); |
93 | var personInterpretation = model.getInterpretation(person); | 87 | var personInterpretation = model.getInterpretation(person); |
@@ -113,9 +107,6 @@ class ModelTest { | |||
113 | 107 | ||
114 | @Test | 108 | @Test |
115 | void restoreTest() { | 109 | void restoreTest() { |
116 | var person = new Symbol<>("Person", 1, Boolean.class, false); | ||
117 | var friend = new Symbol<>("friend", 2, Boolean.class, false); | ||
118 | |||
119 | var store = ModelStore.builder().symbols(person, friend).build(); | 110 | var store = ModelStore.builder().symbols(person, friend).build(); |
120 | var model = store.createEmptyModel(); | 111 | var model = store.createEmptyModel(); |
121 | var personInterpretation = model.getInterpretation(person); | 112 | var personInterpretation = model.getInterpretation(person); |
diff --git a/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/CardinalityIntervalTest.java b/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/CardinalityIntervalTest.java index 96fdc49e..6a66fa84 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/CardinalityIntervalTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/CardinalityIntervalTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.representation.cardinality; | 6 | package tools.refinery.store.representation.cardinality; |
2 | 7 | ||
3 | import org.junit.jupiter.params.ParameterizedTest; | 8 | import org.junit.jupiter.params.ParameterizedTest; |
diff --git a/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/CardinalityIntervalsTest.java b/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/CardinalityIntervalsTest.java index 4a9ef8da..9fe76159 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/CardinalityIntervalsTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/CardinalityIntervalsTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.representation.cardinality; | 6 | package tools.refinery.store.representation.cardinality; |
2 | 7 | ||
3 | import org.junit.jupiter.api.Test; | 8 | import org.junit.jupiter.api.Test; |
diff --git a/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/EmptyCardinalityIntervalTest.java b/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/EmptyCardinalityIntervalTest.java index e8b77b9f..24a788a8 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/EmptyCardinalityIntervalTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/EmptyCardinalityIntervalTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.representation.cardinality; | 6 | package tools.refinery.store.representation.cardinality; |
2 | 7 | ||
3 | import org.junit.jupiter.api.Test; | 8 | import org.junit.jupiter.api.Test; |
diff --git a/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/FiniteCardinalityIntervalTest.java b/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/FiniteCardinalityIntervalTest.java index 9a190818..6cf56fae 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/FiniteCardinalityIntervalTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/FiniteCardinalityIntervalTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.representation.cardinality; | 6 | package tools.refinery.store.representation.cardinality; |
2 | 7 | ||
3 | import org.junit.jupiter.api.Test; | 8 | import org.junit.jupiter.api.Test; |
diff --git a/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/FiniteUpperCardinalityTest.java b/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/FiniteUpperCardinalityTest.java index 90c21759..7c641c47 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/FiniteUpperCardinalityTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/FiniteUpperCardinalityTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.representation.cardinality; | 6 | package tools.refinery.store.representation.cardinality; |
2 | 7 | ||
3 | import org.junit.jupiter.api.Test; | 8 | import org.junit.jupiter.api.Test; |
diff --git a/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/UpperCardinalitiesTest.java b/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/UpperCardinalitiesTest.java index 3c7c0320..e61f7b36 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/UpperCardinalitiesTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/UpperCardinalitiesTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.representation.cardinality; | 6 | package tools.refinery.store.representation.cardinality; |
2 | 7 | ||
3 | import org.junit.jupiter.api.Test; | 8 | import org.junit.jupiter.api.Test; |
diff --git a/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/UpperCardinalityTest.java b/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/UpperCardinalityTest.java index e87ce29b..10b4dd20 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/UpperCardinalityTest.java +++ b/subprojects/store/src/test/java/tools/refinery/store/representation/cardinality/UpperCardinalityTest.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.representation.cardinality; | 6 | package tools.refinery.store.representation.cardinality; |
2 | 7 | ||
3 | import org.junit.jupiter.params.ParameterizedTest; | 8 | import org.junit.jupiter.params.ParameterizedTest; |
diff --git a/subprojects/store/src/test/java/tools/refinery/store/util/CollectionsUtilTests.java b/subprojects/store/src/test/java/tools/refinery/store/util/CollectionsUtilTests.java index 171be0e5..8d50fa8a 100644 --- a/subprojects/store/src/test/java/tools/refinery/store/util/CollectionsUtilTests.java +++ b/subprojects/store/src/test/java/tools/refinery/store/util/CollectionsUtilTests.java | |||
@@ -1,3 +1,8 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
1 | package tools.refinery.store.util; | 6 | package tools.refinery.store.util; |
2 | 7 | ||
3 | import static org.junit.jupiter.api.Assertions.assertEquals; | 8 | import static org.junit.jupiter.api.Assertions.assertEquals; |
@@ -5,13 +5,13 @@ __metadata: | |||
5 | version: 7 | 5 | version: 7 |
6 | cacheKey: 9 | 6 | cacheKey: 9 |
7 | 7 | ||
8 | "@ampproject/remapping@npm:^2.1.0": | 8 | "@ampproject/remapping@npm:^2.2.0": |
9 | version: 2.2.0 | 9 | version: 2.2.1 |
10 | resolution: "@ampproject/remapping@npm:2.2.0" | 10 | resolution: "@ampproject/remapping@npm:2.2.1" |
11 | dependencies: | 11 | dependencies: |
12 | "@jridgewell/gen-mapping": "npm:^0.1.0" | 12 | "@jridgewell/gen-mapping": "npm:^0.3.0" |
13 | "@jridgewell/trace-mapping": "npm:^0.3.9" | 13 | "@jridgewell/trace-mapping": "npm:^0.3.9" |
14 | checksum: 468104da656991a578ac6c9e074fe9e6a810c37e90106a738464c971a9cea37ae29c3752c8946f884a82da458597fdff57da70c4fca3fb560d29038132d2d524 | 14 | checksum: a6e71b1b6bcffc909f5527899d9598f30cd7dc8c82845fba07c237232d4404795681dc9a2ff7e24e620415b8b8b60466ebd517f7c00bef53adf3a6a37d5a8f1b |
15 | languageName: node | 15 | languageName: node |
16 | linkType: hard | 16 | linkType: hard |
17 | 17 | ||
@@ -28,53 +28,54 @@ __metadata: | |||
28 | languageName: node | 28 | languageName: node |
29 | linkType: hard | 29 | linkType: hard |
30 | 30 | ||
31 | "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.18.6": | 31 | "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.22.5": |
32 | version: 7.18.6 | 32 | version: 7.22.5 |
33 | resolution: "@babel/code-frame@npm:7.18.6" | 33 | resolution: "@babel/code-frame@npm:7.22.5" |
34 | dependencies: | 34 | dependencies: |
35 | "@babel/highlight": "npm:^7.18.6" | 35 | "@babel/highlight": "npm:^7.22.5" |
36 | checksum: eb27d165ea1c7c23e71a2a6f64225fe0ca0b2a39f5c0b57fda2a62dfa845799ca94886b08014f8fd4a711538cc6b1c89b9fc1dca6a5148893932bc03412ca848 | 36 | checksum: 7dfb17395cb9715da9cc93eda0f9a3cca75189de3576b2bf2ee508bb8dcf0319a85d12d7b3957d103f67e2f1a90b4e10f74f3036349acf5e56e2838b70d9bc27 |
37 | languageName: node | 37 | languageName: node |
38 | linkType: hard | 38 | linkType: hard |
39 | 39 | ||
40 | "@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.18.8, @babel/compat-data@npm:^7.20.0": | 40 | "@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.18.8, @babel/compat-data@npm:^7.22.5": |
41 | version: 7.20.0 | 41 | version: 7.22.5 |
42 | resolution: "@babel/compat-data@npm:7.20.0" | 42 | resolution: "@babel/compat-data@npm:7.22.5" |
43 | checksum: 326e505cf33b7182d215d47c1397062b809ebe1299c13e51d3be7cea3e774c73252e9e2dee0993caa19a5a2ff7837926c2e2c7cb9cc8bc97adf458b3e02eea12 | 43 | checksum: 921389ebf9a902515adda9f08a0d84ab18303b31fc829cbc6c4a3b90ae38be54393473f4db323a646fa97871e977b59b67d94f25dd88f22574deffb89dd21186 |
44 | languageName: node | 44 | languageName: node |
45 | linkType: hard | 45 | linkType: hard |
46 | 46 | ||
47 | "@babel/core@npm:^7.11.1, @babel/core@npm:^7.19.3": | 47 | "@babel/core@npm:^7.11.1, @babel/core@npm:^7.21.4": |
48 | version: 7.20.5 | 48 | version: 7.22.5 |
49 | resolution: "@babel/core@npm:7.20.5" | 49 | resolution: "@babel/core@npm:7.22.5" |
50 | dependencies: | 50 | dependencies: |
51 | "@ampproject/remapping": "npm:^2.1.0" | 51 | "@ampproject/remapping": "npm:^2.2.0" |
52 | "@babel/code-frame": "npm:^7.18.6" | 52 | "@babel/code-frame": "npm:^7.22.5" |
53 | "@babel/generator": "npm:^7.20.5" | 53 | "@babel/generator": "npm:^7.22.5" |
54 | "@babel/helper-compilation-targets": "npm:^7.20.0" | 54 | "@babel/helper-compilation-targets": "npm:^7.22.5" |
55 | "@babel/helper-module-transforms": "npm:^7.20.2" | 55 | "@babel/helper-module-transforms": "npm:^7.22.5" |
56 | "@babel/helpers": "npm:^7.20.5" | 56 | "@babel/helpers": "npm:^7.22.5" |
57 | "@babel/parser": "npm:^7.20.5" | 57 | "@babel/parser": "npm:^7.22.5" |
58 | "@babel/template": "npm:^7.18.10" | 58 | "@babel/template": "npm:^7.22.5" |
59 | "@babel/traverse": "npm:^7.20.5" | 59 | "@babel/traverse": "npm:^7.22.5" |
60 | "@babel/types": "npm:^7.20.5" | 60 | "@babel/types": "npm:^7.22.5" |
61 | convert-source-map: "npm:^1.7.0" | 61 | convert-source-map: "npm:^1.7.0" |
62 | debug: "npm:^4.1.0" | 62 | debug: "npm:^4.1.0" |
63 | gensync: "npm:^1.0.0-beta.2" | 63 | gensync: "npm:^1.0.0-beta.2" |
64 | json5: "npm:^2.2.1" | 64 | json5: "npm:^2.2.2" |
65 | semver: "npm:^6.3.0" | 65 | semver: "npm:^6.3.0" |
66 | checksum: f8d954631f28cb4b9a54300ba3f70199532fa9a7b4cdeb066a47c1333fa5d9d56e1206f436607d005566c6a0da5ddaf9058c03600fc65acf56fc98bb97338654 | 66 | checksum: 4dd24af48f3d6d240ac1ee6850dd73a670d8f8466bf5a76e1d068a9d21f2dcfd82a34f54f25d15ba0f1f77813296074f0aecea6ea4a1302ac2a45d3eef185a6e |
67 | languageName: node | 67 | languageName: node |
68 | linkType: hard | 68 | linkType: hard |
69 | 69 | ||
70 | "@babel/generator@npm:^7.20.5": | 70 | "@babel/generator@npm:^7.22.5": |
71 | version: 7.20.5 | 71 | version: 7.22.5 |
72 | resolution: "@babel/generator@npm:7.20.5" | 72 | resolution: "@babel/generator@npm:7.22.5" |
73 | dependencies: | 73 | dependencies: |
74 | "@babel/types": "npm:^7.20.5" | 74 | "@babel/types": "npm:^7.22.5" |
75 | "@jridgewell/gen-mapping": "npm:^0.3.2" | 75 | "@jridgewell/gen-mapping": "npm:^0.3.2" |
76 | "@jridgewell/trace-mapping": "npm:^0.3.17" | ||
76 | jsesc: "npm:^2.5.1" | 77 | jsesc: "npm:^2.5.1" |
77 | checksum: 825c77cc4f4c54367e54b1feb04b89e8d3a48374b2a2199778f44acc32655bb7089bb0c12d71003a55810ee2b50bd650cc34b5640f4cfbf32347c6883a6cd39e | 78 | checksum: 752010702bf332ebcde03d3d88da4c6c95093dbb621f7d1bce830631f629fc061aad7520d1797a5c8a514c8374f21c0fa02bcae3bb4999cd9df9ed5d652f85f6 |
78 | languageName: node | 79 | languageName: node |
79 | linkType: hard | 80 | linkType: hard |
80 | 81 | ||
@@ -97,17 +98,18 @@ __metadata: | |||
97 | languageName: node | 98 | languageName: node |
98 | linkType: hard | 99 | linkType: hard |
99 | 100 | ||
100 | "@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.18.9, @babel/helper-compilation-targets@npm:^7.20.0": | 101 | "@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.18.9, @babel/helper-compilation-targets@npm:^7.22.5": |
101 | version: 7.20.0 | 102 | version: 7.22.5 |
102 | resolution: "@babel/helper-compilation-targets@npm:7.20.0" | 103 | resolution: "@babel/helper-compilation-targets@npm:7.22.5" |
103 | dependencies: | 104 | dependencies: |
104 | "@babel/compat-data": "npm:^7.20.0" | 105 | "@babel/compat-data": "npm:^7.22.5" |
105 | "@babel/helper-validator-option": "npm:^7.18.6" | 106 | "@babel/helper-validator-option": "npm:^7.22.5" |
106 | browserslist: "npm:^4.21.3" | 107 | browserslist: "npm:^4.21.3" |
108 | lru-cache: "npm:^5.1.1" | ||
107 | semver: "npm:^6.3.0" | 109 | semver: "npm:^6.3.0" |
108 | peerDependencies: | 110 | peerDependencies: |
109 | "@babel/core": ^7.0.0 | 111 | "@babel/core": ^7.0.0 |
110 | checksum: c91dd175620b57c9ae8056b80461ed63e0f9bcc6c5b4c8ef613a2fda12789a694a90568f16c32b2aab4637046323f9da0575dc3ab9b383c1d0f67acb0847b40e | 112 | checksum: 680625c948e3872cb0974e7cb054eec206baa575d0bb4fe51d5fb795d94348c12d6e4f1719436ab8e6e140e57de28684ec8d635d4ff4407329fb0eab5c407a1a |
111 | languageName: node | 113 | languageName: node |
112 | linkType: hard | 114 | linkType: hard |
113 | 115 | ||
@@ -140,9 +142,9 @@ __metadata: | |||
140 | languageName: node | 142 | languageName: node |
141 | linkType: hard | 143 | linkType: hard |
142 | 144 | ||
143 | "@babel/helper-define-polyfill-provider@npm:^0.3.2": | 145 | "@babel/helper-define-polyfill-provider@npm:^0.3.2, @babel/helper-define-polyfill-provider@npm:^0.3.3": |
144 | version: 0.3.2 | 146 | version: 0.3.3 |
145 | resolution: "@babel/helper-define-polyfill-provider@npm:0.3.2" | 147 | resolution: "@babel/helper-define-polyfill-provider@npm:0.3.3" |
146 | dependencies: | 148 | dependencies: |
147 | "@babel/helper-compilation-targets": "npm:^7.17.7" | 149 | "@babel/helper-compilation-targets": "npm:^7.17.7" |
148 | "@babel/helper-plugin-utils": "npm:^7.16.7" | 150 | "@babel/helper-plugin-utils": "npm:^7.16.7" |
@@ -152,14 +154,14 @@ __metadata: | |||
152 | semver: "npm:^6.1.2" | 154 | semver: "npm:^6.1.2" |
153 | peerDependencies: | 155 | peerDependencies: |
154 | "@babel/core": ^7.4.0-0 | 156 | "@babel/core": ^7.4.0-0 |
155 | checksum: ceebf63084b4e975bd121eff699c632820c9645c2fac36fb61f2ea456bbfe1c6e836dac8ebda54f3f8d9270a402ea400a1c53c20bc9e7f9d17aeef445576672b | 157 | checksum: 2991b9b87f6c3248c343a394c0bb09c14a6f9b5b1c22cd2e51b6127f79d08fb6ea5d65e889b2331466f154e9d407e47b891de2eab2a6dafa4c62b3c59ff1720c |
156 | languageName: node | 158 | languageName: node |
157 | linkType: hard | 159 | linkType: hard |
158 | 160 | ||
159 | "@babel/helper-environment-visitor@npm:^7.18.9": | 161 | "@babel/helper-environment-visitor@npm:^7.18.9, @babel/helper-environment-visitor@npm:^7.22.5": |
160 | version: 7.18.9 | 162 | version: 7.22.5 |
161 | resolution: "@babel/helper-environment-visitor@npm:7.18.9" | 163 | resolution: "@babel/helper-environment-visitor@npm:7.22.5" |
162 | checksum: 6a770ab046578d692f954213680f66d0764a92d608fcc121cf87c575223c44729fdebecc08550d0e18a5b22a3a72669c01de5351b6c1eff75a96b3167dbfe922 | 164 | checksum: f48c0f5f4acc69b1f0e60b727145ce4625ad9b7d2dc2622fbc15f9414db0fe69140d2f4fb2e5791f8eba06b94d24db5c7d361d653ab2ab8d4f24113892bf98e6 |
163 | languageName: node | 165 | languageName: node |
164 | linkType: hard | 166 | linkType: hard |
165 | 167 | ||
@@ -172,22 +174,22 @@ __metadata: | |||
172 | languageName: node | 174 | languageName: node |
173 | linkType: hard | 175 | linkType: hard |
174 | 176 | ||
175 | "@babel/helper-function-name@npm:^7.18.9, @babel/helper-function-name@npm:^7.19.0": | 177 | "@babel/helper-function-name@npm:^7.18.9, @babel/helper-function-name@npm:^7.22.5": |
176 | version: 7.19.0 | 178 | version: 7.22.5 |
177 | resolution: "@babel/helper-function-name@npm:7.19.0" | 179 | resolution: "@babel/helper-function-name@npm:7.22.5" |
178 | dependencies: | 180 | dependencies: |
179 | "@babel/template": "npm:^7.18.10" | 181 | "@babel/template": "npm:^7.22.5" |
180 | "@babel/types": "npm:^7.19.0" | 182 | "@babel/types": "npm:^7.22.5" |
181 | checksum: 65ba2eaad08ba73238aa4f11004a7e0f1d96a57c85863d53571741944986f55f334dfd9a59a3a477daefc7d31bd72df78a78673046082d6625888d3d357d36ed | 183 | checksum: ab66c2a9ab9e79a3a34f906d9fe4895ec5200d23417a06806cf01fbd38c64048f2ec399559222a1940e6b3769a0639d07d2f593aaafaf65de1ffb5876359e9c7 |
182 | languageName: node | 184 | languageName: node |
183 | linkType: hard | 185 | linkType: hard |
184 | 186 | ||
185 | "@babel/helper-hoist-variables@npm:^7.18.6": | 187 | "@babel/helper-hoist-variables@npm:^7.18.6, @babel/helper-hoist-variables@npm:^7.22.5": |
186 | version: 7.18.6 | 188 | version: 7.22.5 |
187 | resolution: "@babel/helper-hoist-variables@npm:7.18.6" | 189 | resolution: "@babel/helper-hoist-variables@npm:7.22.5" |
188 | dependencies: | 190 | dependencies: |
189 | "@babel/types": "npm:^7.18.6" | 191 | "@babel/types": "npm:^7.22.5" |
190 | checksum: 462ef0d14fbe6861cee3a2c2bee1eff76d31ec94230c147684d55fa65351784c4afffaa62a8a540caec659d47ef5641707cdb99ce049f1bf2995cfcccace537a | 192 | checksum: 4df8aa58aebff5d80a12a8dad40220d69f900ef05f62dde1f52cbe162e1e7d4ab621b6352ab8e570e50ec1799ef34158f8b0050ec27fb393566faa68a9b05f3b |
191 | languageName: node | 193 | languageName: node |
192 | linkType: hard | 194 | linkType: hard |
193 | 195 | ||
@@ -200,28 +202,28 @@ __metadata: | |||
200 | languageName: node | 202 | languageName: node |
201 | linkType: hard | 203 | linkType: hard |
202 | 204 | ||
203 | "@babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.18.6": | 205 | "@babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.18.6, @babel/helper-module-imports@npm:^7.22.5": |
204 | version: 7.18.6 | 206 | version: 7.22.5 |
205 | resolution: "@babel/helper-module-imports@npm:7.18.6" | 207 | resolution: "@babel/helper-module-imports@npm:7.22.5" |
206 | dependencies: | 208 | dependencies: |
207 | "@babel/types": "npm:^7.18.6" | 209 | "@babel/types": "npm:^7.22.5" |
208 | checksum: 5c2d1987e4854abe7ca227d2e318b699c100dedc8ec45fe858755d5e9da8760ac136c0b1e669cc381f44eb79607b6f4ffcf7642e1aa84504389f9ca6065e8ee1 | 210 | checksum: 5475de0bbd3611a38b8746a2c74495aaad560a283b6c647f9d044bb91bb9375fd8412ea8adae9d077a61d77af6a5138e40ab7f206a6403a2f15f87b9e0aa2aaa |
209 | languageName: node | 211 | languageName: node |
210 | linkType: hard | 212 | linkType: hard |
211 | 213 | ||
212 | "@babel/helper-module-transforms@npm:^7.18.6, @babel/helper-module-transforms@npm:^7.18.9, @babel/helper-module-transforms@npm:^7.20.2": | 214 | "@babel/helper-module-transforms@npm:^7.18.6, @babel/helper-module-transforms@npm:^7.18.9, @babel/helper-module-transforms@npm:^7.22.5": |
213 | version: 7.20.2 | 215 | version: 7.22.5 |
214 | resolution: "@babel/helper-module-transforms@npm:7.20.2" | 216 | resolution: "@babel/helper-module-transforms@npm:7.22.5" |
215 | dependencies: | 217 | dependencies: |
216 | "@babel/helper-environment-visitor": "npm:^7.18.9" | 218 | "@babel/helper-environment-visitor": "npm:^7.22.5" |
217 | "@babel/helper-module-imports": "npm:^7.18.6" | 219 | "@babel/helper-module-imports": "npm:^7.22.5" |
218 | "@babel/helper-simple-access": "npm:^7.20.2" | 220 | "@babel/helper-simple-access": "npm:^7.22.5" |
219 | "@babel/helper-split-export-declaration": "npm:^7.18.6" | 221 | "@babel/helper-split-export-declaration": "npm:^7.22.5" |
220 | "@babel/helper-validator-identifier": "npm:^7.19.1" | 222 | "@babel/helper-validator-identifier": "npm:^7.22.5" |
221 | "@babel/template": "npm:^7.18.10" | 223 | "@babel/template": "npm:^7.22.5" |
222 | "@babel/traverse": "npm:^7.20.1" | 224 | "@babel/traverse": "npm:^7.22.5" |
223 | "@babel/types": "npm:^7.20.2" | 225 | "@babel/types": "npm:^7.22.5" |
224 | checksum: c156af086f39d0529c4b830194d23fd3cc1d60eb072915c715690b5e347c62219e07b0d5e19c019b40e1d7102a892323cf597ed6c69ba027ce5ed1ec81d87c3f | 226 | checksum: 200649c6a786429aa877cb4d326ad9fccfc5a58e3da844e529ed607e683d2860bf594fa688572ffcf5437e81c0ffa082489d242fff02884a1f49cd956923c9b8 |
225 | languageName: node | 227 | languageName: node |
226 | linkType: hard | 228 | linkType: hard |
227 | 229 | ||
@@ -268,12 +270,12 @@ __metadata: | |||
268 | languageName: node | 270 | languageName: node |
269 | linkType: hard | 271 | linkType: hard |
270 | 272 | ||
271 | "@babel/helper-simple-access@npm:^7.18.6, @babel/helper-simple-access@npm:^7.20.2": | 273 | "@babel/helper-simple-access@npm:^7.18.6, @babel/helper-simple-access@npm:^7.22.5": |
272 | version: 7.20.2 | 274 | version: 7.22.5 |
273 | resolution: "@babel/helper-simple-access@npm:7.20.2" | 275 | resolution: "@babel/helper-simple-access@npm:7.22.5" |
274 | dependencies: | 276 | dependencies: |
275 | "@babel/types": "npm:^7.20.2" | 277 | "@babel/types": "npm:^7.22.5" |
276 | checksum: 23f8a82cba4bce49b71f91e07f5afbddc6622b2762ab9287d7d160134cd6f7d6364ce8a46762b6cd3cc6da6eaf2e6758166394036a7feedd762042d9ad94a533 | 278 | checksum: 5a9c37a63b15f3495a46a39dea481043d0363db886117021225849ac4a06664fda9615d62ab6f836224d89fb43189f45b4f48c2057c2f4441b0da5daf6ac3f13 |
277 | languageName: node | 279 | languageName: node |
278 | linkType: hard | 280 | linkType: hard |
279 | 281 | ||
@@ -286,33 +288,33 @@ __metadata: | |||
286 | languageName: node | 288 | languageName: node |
287 | linkType: hard | 289 | linkType: hard |
288 | 290 | ||
289 | "@babel/helper-split-export-declaration@npm:^7.18.6": | 291 | "@babel/helper-split-export-declaration@npm:^7.18.6, @babel/helper-split-export-declaration@npm:^7.22.5": |
290 | version: 7.18.6 | 292 | version: 7.22.5 |
291 | resolution: "@babel/helper-split-export-declaration@npm:7.18.6" | 293 | resolution: "@babel/helper-split-export-declaration@npm:7.22.5" |
292 | dependencies: | 294 | dependencies: |
293 | "@babel/types": "npm:^7.18.6" | 295 | "@babel/types": "npm:^7.22.5" |
294 | checksum: a7834c5b54600542460aa278b0e988178ebe1905df856df909e4fdafffcaa05fc1688e5504a6f388ca1bc36dbdb78a56af422b4a7795876680451d86e55055b9 | 296 | checksum: 2658ae9ae290ff800f05f7c5c7e3bf89bbee7e4f4098bf4645174a6ff863ecda8f7c7d9ee0cacf32eef00f7bb658d0cc62b398402dc02a08a5567ac4709117f7 |
295 | languageName: node | 297 | languageName: node |
296 | linkType: hard | 298 | linkType: hard |
297 | 299 | ||
298 | "@babel/helper-string-parser@npm:^7.19.4": | 300 | "@babel/helper-string-parser@npm:^7.22.5": |
299 | version: 7.19.4 | 301 | version: 7.22.5 |
300 | resolution: "@babel/helper-string-parser@npm:7.19.4" | 302 | resolution: "@babel/helper-string-parser@npm:7.22.5" |
301 | checksum: a8646931cba0c2905b683b99879f02c8a516a6c702c9f46cc02f0a8e93ef6f01540f2e7017d8288b9c039e1c3316c7858309ea3d6e39fa78bd98859b338603ee | 303 | checksum: b998b01b4778859c301ede18aea41abb0dcd0497191bdb216aa561741fe74f8651a8d7a486d4151a448c44d37a5a8603c0296b4d4e2f5388989dd86003952ad4 |
302 | languageName: node | 304 | languageName: node |
303 | linkType: hard | 305 | linkType: hard |
304 | 306 | ||
305 | "@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": | 307 | "@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.22.5": |
306 | version: 7.19.1 | 308 | version: 7.22.5 |
307 | resolution: "@babel/helper-validator-identifier@npm:7.19.1" | 309 | resolution: "@babel/helper-validator-identifier@npm:7.22.5" |
308 | checksum: 089fdf605ee8dfa3004cd84c69e655ff9ab8bdb4e7fa02bf0012db728c6247acb599ca1118d2f9124d7b417fc5793ee348f2da8bc64be230b3b13ba7cd4364cc | 310 | checksum: ae436e63eca3aa0a70575a1a5ae8234307fdfe3b5c720002899bf49833c3abcde2b9b188ed10905f2c39013a95e49cc8356dd589cae80e03b39c3370c3e9de75 |
309 | languageName: node | 311 | languageName: node |
310 | linkType: hard | 312 | linkType: hard |
311 | 313 | ||
312 | "@babel/helper-validator-option@npm:^7.18.6": | 314 | "@babel/helper-validator-option@npm:^7.18.6, @babel/helper-validator-option@npm:^7.22.5": |
313 | version: 7.18.6 | 315 | version: 7.22.5 |
314 | resolution: "@babel/helper-validator-option@npm:7.18.6" | 316 | resolution: "@babel/helper-validator-option@npm:7.22.5" |
315 | checksum: c32c6e5daa9b2e2cbee66477c652757add3a204fea24f486b3b630e1fb69df53591ddc8acf5c5bc30a157e7275e53e25b3fbafbe1d2fb21604ca09cd8d3d052c | 317 | checksum: d6b2f3a8995894f3b6ee58d4b6a64de3a0083b99553485988ba956e2925c6f85a4d1430ae48a0338dc6847cac486abdf9a4393c79c37d9be78cf821006438584 |
316 | languageName: node | 318 | languageName: node |
317 | linkType: hard | 319 | linkType: hard |
318 | 320 | ||
@@ -328,34 +330,34 @@ __metadata: | |||
328 | languageName: node | 330 | languageName: node |
329 | linkType: hard | 331 | linkType: hard |
330 | 332 | ||
331 | "@babel/helpers@npm:^7.20.5": | 333 | "@babel/helpers@npm:^7.22.5": |
332 | version: 7.20.6 | 334 | version: 7.22.5 |
333 | resolution: "@babel/helpers@npm:7.20.6" | 335 | resolution: "@babel/helpers@npm:7.22.5" |
334 | dependencies: | 336 | dependencies: |
335 | "@babel/template": "npm:^7.18.10" | 337 | "@babel/template": "npm:^7.22.5" |
336 | "@babel/traverse": "npm:^7.20.5" | 338 | "@babel/traverse": "npm:^7.22.5" |
337 | "@babel/types": "npm:^7.20.5" | 339 | "@babel/types": "npm:^7.22.5" |
338 | checksum: 954b1664cc16919cf303a19def1c5b24e58042d3cb77f358c993217a5328ff70a094338c14e39944861d74106e65357627a5e1b7a47310eba2f74314371374c2 | 340 | checksum: bc83454d78040bf879954fe8bd002486b78abda61b008b8c730299e689b51aa454a54803b35976958599006817884560c0ab6ee31c78461cb023b1330a1e9d46 |
339 | languageName: node | 341 | languageName: node |
340 | linkType: hard | 342 | linkType: hard |
341 | 343 | ||
342 | "@babel/highlight@npm:^7.18.6": | 344 | "@babel/highlight@npm:^7.22.5": |
343 | version: 7.18.6 | 345 | version: 7.22.5 |
344 | resolution: "@babel/highlight@npm:7.18.6" | 346 | resolution: "@babel/highlight@npm:7.22.5" |
345 | dependencies: | 347 | dependencies: |
346 | "@babel/helper-validator-identifier": "npm:^7.18.6" | 348 | "@babel/helper-validator-identifier": "npm:^7.22.5" |
347 | chalk: "npm:^2.0.0" | 349 | chalk: "npm:^2.0.0" |
348 | js-tokens: "npm:^4.0.0" | 350 | js-tokens: "npm:^4.0.0" |
349 | checksum: b8eeb1d38327c635004b3ae946ff334bb994334a5fdd874e216e62bbe3b8f8f10c901c3795c25db7c8e49eb5a56948b9dbe38c3800c4f977016402997dacedae | 351 | checksum: 7f2de83b67bac82c77dc3c2c708bdc315241e071b87152cb7ffee9c6bc90795cbb300f04775c3d1aefc935a115ce2b728da7fe1093b00138f968f5ad573eac4f |
350 | languageName: node | 352 | languageName: node |
351 | linkType: hard | 353 | linkType: hard |
352 | 354 | ||
353 | "@babel/parser@npm:^7.18.10, @babel/parser@npm:^7.19.4, @babel/parser@npm:^7.20.5": | 355 | "@babel/parser@npm:^7.19.4, @babel/parser@npm:^7.22.5": |
354 | version: 7.20.5 | 356 | version: 7.22.5 |
355 | resolution: "@babel/parser@npm:7.20.5" | 357 | resolution: "@babel/parser@npm:7.22.5" |
356 | bin: | 358 | bin: |
357 | parser: ./bin/babel-parser.js | 359 | parser: ./bin/babel-parser.js |
358 | checksum: c40fed9e76e84c95b39b23ac0f93434a5bffae18dae53ff0f2605b7b1723eaf7102a1426a4445de7e557df9e0f5d2e2ddbc89252ac35ece659c813b664758ba8 | 360 | checksum: 38abd156629454242787f0ff5fb8fdfb8d007bf3bcd8b1a5ddbf293f712232489fc0808d18e763581ea6859c816f276abb4136372b7ce4e3d5082fde8a294f91 |
359 | languageName: node | 361 | languageName: node |
360 | linkType: hard | 362 | linkType: hard |
361 | 363 | ||
@@ -649,17 +651,6 @@ __metadata: | |||
649 | languageName: node | 651 | languageName: node |
650 | linkType: hard | 652 | linkType: hard |
651 | 653 | ||
652 | "@babel/plugin-syntax-jsx@npm:^7.17.12": | ||
653 | version: 7.18.6 | ||
654 | resolution: "@babel/plugin-syntax-jsx@npm:7.18.6" | ||
655 | dependencies: | ||
656 | "@babel/helper-plugin-utils": "npm:^7.18.6" | ||
657 | peerDependencies: | ||
658 | "@babel/core": ^7.0.0-0 | ||
659 | checksum: 93aa8b4803ade912560529ffebed69cf29617f5025fdd39eeea3b2c60fa16f7120dee3e310931fd8faf14e2bd0bc5227210efea987bd393e61dcb4287d9aac8b | ||
660 | languageName: node | ||
661 | linkType: hard | ||
662 | |||
663 | "@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": | 654 | "@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": |
664 | version: 7.10.4 | 655 | version: 7.10.4 |
665 | resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" | 656 | resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" |
@@ -1228,58 +1219,65 @@ __metadata: | |||
1228 | languageName: node | 1219 | languageName: node |
1229 | linkType: hard | 1220 | linkType: hard |
1230 | 1221 | ||
1231 | "@babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.6, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7": | 1222 | "@babel/regjsgen@npm:^0.8.0": |
1232 | version: 7.20.7 | 1223 | version: 0.8.0 |
1233 | resolution: "@babel/runtime@npm:7.20.7" | 1224 | resolution: "@babel/regjsgen@npm:0.8.0" |
1225 | checksum: 26a6ef60f1d4b392fc81dd0dbfae4e0fb08c21c8556f16735f02d07ebc89de349ddae48d804b1fe0a450b62eaa119db584c639ae11c3e5a95ccee4e88e88ea7b | ||
1226 | languageName: node | ||
1227 | linkType: hard | ||
1228 | |||
1229 | "@babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7": | ||
1230 | version: 7.21.0 | ||
1231 | resolution: "@babel/runtime@npm:7.21.0" | ||
1234 | dependencies: | 1232 | dependencies: |
1235 | regenerator-runtime: "npm:^0.13.11" | 1233 | regenerator-runtime: "npm:^0.13.11" |
1236 | checksum: b22b904439569fa3b28627fc398d9bb9619f14bc9165cdf63ab5fa248660a10104ae81514607cbe55e4e26fe0d4048a89263f47f1f3da1e37f8e670b95acf244 | 1234 | checksum: adff473f615f797cffbd64d6839a5e3816e6e7942a6c9bfc23369e6d89a18c92eda974e2f538540a0ce543c28e3d637c59a0a8c391cee978e0b7dc31b606ef08 |
1237 | languageName: node | 1235 | languageName: node |
1238 | linkType: hard | 1236 | linkType: hard |
1239 | 1237 | ||
1240 | "@babel/template@npm:^7.18.10": | 1238 | "@babel/template@npm:^7.18.10, @babel/template@npm:^7.22.5": |
1241 | version: 7.18.10 | 1239 | version: 7.22.5 |
1242 | resolution: "@babel/template@npm:7.18.10" | 1240 | resolution: "@babel/template@npm:7.22.5" |
1243 | dependencies: | 1241 | dependencies: |
1244 | "@babel/code-frame": "npm:^7.18.6" | 1242 | "@babel/code-frame": "npm:^7.22.5" |
1245 | "@babel/parser": "npm:^7.18.10" | 1243 | "@babel/parser": "npm:^7.22.5" |
1246 | "@babel/types": "npm:^7.18.10" | 1244 | "@babel/types": "npm:^7.22.5" |
1247 | checksum: 8d820647ae45c8fcc7d9c52bfb89f94bb96fc0d0fb71903b6619e176f6744be773a8d8ab0fcbb3e7208448ca71016580df2b1e40c685061154030f339e47e8df | 1245 | checksum: 6b06d6cb7b8437d609f0fca32f6ccb6c29e45c4180e364c009fbb6ca98d7e25340659321150badea2629231a84c8a3263ed78169e44424692c407c6a09ddbea9 |
1248 | languageName: node | 1246 | languageName: node |
1249 | linkType: hard | 1247 | linkType: hard |
1250 | 1248 | ||
1251 | "@babel/traverse@npm:^7.18.11, @babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.19.4, @babel/traverse@npm:^7.20.1, @babel/traverse@npm:^7.20.5": | 1249 | "@babel/traverse@npm:^7.18.11, @babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.19.4, @babel/traverse@npm:^7.22.5": |
1252 | version: 7.20.5 | 1250 | version: 7.22.5 |
1253 | resolution: "@babel/traverse@npm:7.20.5" | 1251 | resolution: "@babel/traverse@npm:7.22.5" |
1254 | dependencies: | 1252 | dependencies: |
1255 | "@babel/code-frame": "npm:^7.18.6" | 1253 | "@babel/code-frame": "npm:^7.22.5" |
1256 | "@babel/generator": "npm:^7.20.5" | 1254 | "@babel/generator": "npm:^7.22.5" |
1257 | "@babel/helper-environment-visitor": "npm:^7.18.9" | 1255 | "@babel/helper-environment-visitor": "npm:^7.22.5" |
1258 | "@babel/helper-function-name": "npm:^7.19.0" | 1256 | "@babel/helper-function-name": "npm:^7.22.5" |
1259 | "@babel/helper-hoist-variables": "npm:^7.18.6" | 1257 | "@babel/helper-hoist-variables": "npm:^7.22.5" |
1260 | "@babel/helper-split-export-declaration": "npm:^7.18.6" | 1258 | "@babel/helper-split-export-declaration": "npm:^7.22.5" |
1261 | "@babel/parser": "npm:^7.20.5" | 1259 | "@babel/parser": "npm:^7.22.5" |
1262 | "@babel/types": "npm:^7.20.5" | 1260 | "@babel/types": "npm:^7.22.5" |
1263 | debug: "npm:^4.1.0" | 1261 | debug: "npm:^4.1.0" |
1264 | globals: "npm:^11.1.0" | 1262 | globals: "npm:^11.1.0" |
1265 | checksum: da0f160f6ef71c3cf0901fc2a491e803a8140e209eb3ff27d1f5ba380454e2ece67a21892e4aa591c053e827666bc13a47876edfa33809a7b2aeece11353e404 | 1263 | checksum: 3c06ac5697d770d3feafd55e371ee06a52f7336c1ee7f7a165d28f77d36edd1ac2c7f7c4763d24d851c28e8d15009dfbf9401fecdf0a9f4404e9b489c5dd318e |
1266 | languageName: node | 1264 | languageName: node |
1267 | linkType: hard | 1265 | linkType: hard |
1268 | 1266 | ||
1269 | "@babel/types@npm:^7.18.10, @babel/types@npm:^7.18.6, @babel/types@npm:^7.18.9, @babel/types@npm:^7.19.0, @babel/types@npm:^7.19.4, @babel/types@npm:^7.20.2, @babel/types@npm:^7.20.5, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": | 1267 | "@babel/types@npm:^7.18.10, @babel/types@npm:^7.18.6, @babel/types@npm:^7.18.9, @babel/types@npm:^7.19.4, @babel/types@npm:^7.22.5, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": |
1270 | version: 7.20.5 | 1268 | version: 7.22.5 |
1271 | resolution: "@babel/types@npm:7.20.5" | 1269 | resolution: "@babel/types@npm:7.22.5" |
1272 | dependencies: | 1270 | dependencies: |
1273 | "@babel/helper-string-parser": "npm:^7.19.4" | 1271 | "@babel/helper-string-parser": "npm:^7.22.5" |
1274 | "@babel/helper-validator-identifier": "npm:^7.19.1" | 1272 | "@babel/helper-validator-identifier": "npm:^7.22.5" |
1275 | to-fast-properties: "npm:^2.0.0" | 1273 | to-fast-properties: "npm:^2.0.0" |
1276 | checksum: c7f3c4ae2fa7d1c477a48094f9b0990747aea366bfdb1781095b88f66fbfdc3cd5045a23918eca0ffbc3323d84e674ce81f5f847a0efc17a97a3e268c5b8b456 | 1274 | checksum: de48a2ae0e3765d0548e439432111c3e01176b6c3193bc155f0dc85f4b766421beced17871a676eab5dc29d8375bb47f77a0a33edb2d617a7a92db70f500eb05 |
1277 | languageName: node | 1275 | languageName: node |
1278 | linkType: hard | 1276 | linkType: hard |
1279 | 1277 | ||
1280 | "@codemirror/autocomplete@npm:^6.4.0": | 1278 | "@codemirror/autocomplete@npm:^6.8.0": |
1281 | version: 6.4.0 | 1279 | version: 6.8.0 |
1282 | resolution: "@codemirror/autocomplete@npm:6.4.0" | 1280 | resolution: "@codemirror/autocomplete@npm:6.8.0" |
1283 | dependencies: | 1281 | dependencies: |
1284 | "@codemirror/language": "npm:^6.0.0" | 1282 | "@codemirror/language": "npm:^6.0.0" |
1285 | "@codemirror/state": "npm:^6.0.0" | 1283 | "@codemirror/state": "npm:^6.0.0" |
@@ -1290,25 +1288,25 @@ __metadata: | |||
1290 | "@codemirror/state": ^6.0.0 | 1288 | "@codemirror/state": ^6.0.0 |
1291 | "@codemirror/view": ^6.0.0 | 1289 | "@codemirror/view": ^6.0.0 |
1292 | "@lezer/common": ^1.0.0 | 1290 | "@lezer/common": ^1.0.0 |
1293 | checksum: 71c2e3911063937e6b99cbf5932006a8b06f2bf3712431e97b80d1cd4bbd1cd91db6b2b31efd07b1e59cf284d95cd991175f6ce33d4eace23c4a5e750d0eec57 | 1291 | checksum: 8f8116ea9ee7dcd3f00d985327ddca0dd9a070c5b096c0f1e9b14c682b34be482a36529695ee6c5a35f46cbe0e2cb7044facbf13ae0c189b2e194c5a03fe2637 |
1294 | languageName: node | 1292 | languageName: node |
1295 | linkType: hard | 1293 | linkType: hard |
1296 | 1294 | ||
1297 | "@codemirror/commands@npm:^6.2.0": | 1295 | "@codemirror/commands@npm:^6.2.4": |
1298 | version: 6.2.0 | 1296 | version: 6.2.4 |
1299 | resolution: "@codemirror/commands@npm:6.2.0" | 1297 | resolution: "@codemirror/commands@npm:6.2.4" |
1300 | dependencies: | 1298 | dependencies: |
1301 | "@codemirror/language": "npm:^6.0.0" | 1299 | "@codemirror/language": "npm:^6.0.0" |
1302 | "@codemirror/state": "npm:^6.2.0" | 1300 | "@codemirror/state": "npm:^6.2.0" |
1303 | "@codemirror/view": "npm:^6.0.0" | 1301 | "@codemirror/view": "npm:^6.0.0" |
1304 | "@lezer/common": "npm:^1.0.0" | 1302 | "@lezer/common": "npm:^1.0.0" |
1305 | checksum: 8acb4a0cc0276a5370770378a38952c079a730c80310ccd08a0c51223af9de1955fecff107cbce3df18850ab4dcc7427fcefd734e99cae8e36a0d6242b52f01f | 1303 | checksum: 5f59ddddbc3b914239d33e8402acf42689b854918ff763e164789f88b3eadda47412879814494bc42db89e8cffbdf3d5de003cf651216a221ea0ebcf499c1f4f |
1306 | languageName: node | 1304 | languageName: node |
1307 | linkType: hard | 1305 | linkType: hard |
1308 | 1306 | ||
1309 | "@codemirror/language@npm:^6.0.0, @codemirror/language@npm:^6.4.0": | 1307 | "@codemirror/language@npm:^6.0.0, @codemirror/language@npm:^6.8.0": |
1310 | version: 6.4.0 | 1308 | version: 6.8.0 |
1311 | resolution: "@codemirror/language@npm:6.4.0" | 1309 | resolution: "@codemirror/language@npm:6.8.0" |
1312 | dependencies: | 1310 | dependencies: |
1313 | "@codemirror/state": "npm:^6.0.0" | 1311 | "@codemirror/state": "npm:^6.0.0" |
1314 | "@codemirror/view": "npm:^6.0.0" | 1312 | "@codemirror/view": "npm:^6.0.0" |
@@ -1316,405 +1314,414 @@ __metadata: | |||
1316 | "@lezer/highlight": "npm:^1.0.0" | 1314 | "@lezer/highlight": "npm:^1.0.0" |
1317 | "@lezer/lr": "npm:^1.0.0" | 1315 | "@lezer/lr": "npm:^1.0.0" |
1318 | style-mod: "npm:^4.0.0" | 1316 | style-mod: "npm:^4.0.0" |
1319 | checksum: 3840114395e07837e72396110d3e44e01767fd682f215891a46a843700cad2513ae966c384477860f5de48439a25e545f5481959beb763b1a627ad4aab1c7de0 | 1317 | checksum: 9cc39f826b6841fb37f5a0418cb37a2ea34659524f316bf5223c102dcf7cccb069ed5a9630042dddc373d5259484d885d4a81d2f7879f840e1e1ecbefd7ef4ef |
1320 | languageName: node | 1318 | languageName: node |
1321 | linkType: hard | 1319 | linkType: hard |
1322 | 1320 | ||
1323 | "@codemirror/lint@npm:^6.1.0": | 1321 | "@codemirror/lint@npm:^6.2.2": |
1324 | version: 6.1.0 | 1322 | version: 6.2.2 |
1325 | resolution: "@codemirror/lint@npm:6.1.0" | 1323 | resolution: "@codemirror/lint@npm:6.2.2" |
1326 | dependencies: | 1324 | dependencies: |
1327 | "@codemirror/state": "npm:^6.0.0" | 1325 | "@codemirror/state": "npm:^6.0.0" |
1328 | "@codemirror/view": "npm:^6.0.0" | 1326 | "@codemirror/view": "npm:^6.0.0" |
1329 | crelt: "npm:^1.0.5" | 1327 | crelt: "npm:^1.0.5" |
1330 | checksum: 076c60e87aea52c666b171ff4c4e738e208170d2b384386c1f6ba3b1f09474eaa1530548b69ed865168df7cc13b441bc68c4f6dfd90016cc4eb4267f4555f144 | 1328 | checksum: 67781f016bfec4dd1ca734e7621b16fbdfdbc5cc4222ae04fe0691fdf3ea5b609b00081cfc652c6ee9594eef4861bc9e15dbe22fb5f9081e6b1b26c85f069852 |
1331 | languageName: node | 1329 | languageName: node |
1332 | linkType: hard | 1330 | linkType: hard |
1333 | 1331 | ||
1334 | "@codemirror/search@npm:^6.2.3": | 1332 | "@codemirror/search@npm:^6.5.0": |
1335 | version: 6.2.3 | 1333 | version: 6.5.0 |
1336 | resolution: "@codemirror/search@npm:6.2.3" | 1334 | resolution: "@codemirror/search@npm:6.5.0" |
1337 | dependencies: | 1335 | dependencies: |
1338 | "@codemirror/state": "npm:^6.0.0" | 1336 | "@codemirror/state": "npm:^6.0.0" |
1339 | "@codemirror/view": "npm:^6.0.0" | 1337 | "@codemirror/view": "npm:^6.0.0" |
1340 | crelt: "npm:^1.0.5" | 1338 | crelt: "npm:^1.0.5" |
1341 | checksum: dc283e6fb390f43eec342664e525bb2ac7b317b1c89b1d16403ccfadf29815ba054d2dce5b5d58aa4575e45c9b406053c55f5da83f490a64485137c1ff498609 | 1339 | checksum: dab4e51c1ad8bbacd932c0797f27727b935ce7cf155828a3747943fe091e3c91f7888463b4d43be28fb54c5d0c2df136e3d9be00bde3be1824dedb9116fd6c6b |
1342 | languageName: node | 1340 | languageName: node |
1343 | linkType: hard | 1341 | linkType: hard |
1344 | 1342 | ||
1345 | "@codemirror/state@npm:^6.0.0, @codemirror/state@npm:^6.1.4, @codemirror/state@npm:^6.2.0": | 1343 | "@codemirror/state@npm:^6.0.0, @codemirror/state@npm:^6.1.4, @codemirror/state@npm:^6.2.0, @codemirror/state@npm:^6.2.1": |
1346 | version: 6.2.0 | 1344 | version: 6.2.1 |
1347 | resolution: "@codemirror/state@npm:6.2.0" | 1345 | resolution: "@codemirror/state@npm:6.2.1" |
1348 | checksum: 03509c181faeb0bf23c841e2e6677d7a5ae1dd0085f58c659ddc4063aea80795cfae85726462654de8ab902c81ba69f091b81a279c2989b10d79b97e196a7e2c | 1346 | checksum: 8c9fb092cca960fc66c7997630d4406ebfbf972ba297af1bf8ed5c5fe070b33af2a63ff19caad0c4c75021c18303f0c4af42ae216bb708dfcea055763423d32f |
1349 | languageName: node | 1347 | languageName: node |
1350 | linkType: hard | 1348 | linkType: hard |
1351 | 1349 | ||
1352 | "@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.6.0, @codemirror/view@npm:^6.7.3": | 1350 | "@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.13.2, @codemirror/view@npm:^6.6.0": |
1353 | version: 6.7.3 | 1351 | version: 6.13.2 |
1354 | resolution: "@codemirror/view@npm:6.7.3" | 1352 | resolution: "@codemirror/view@npm:6.13.2" |
1355 | dependencies: | 1353 | dependencies: |
1356 | "@codemirror/state": "npm:^6.1.4" | 1354 | "@codemirror/state": "npm:^6.1.4" |
1357 | style-mod: "npm:^4.0.0" | 1355 | style-mod: "npm:^4.0.0" |
1358 | w3c-keyname: "npm:^2.2.4" | 1356 | w3c-keyname: "npm:^2.2.4" |
1359 | checksum: 361e941980f3a2b8826fa4a63e74f56b092d340196a9a3b2df06d9e8cea692a561fef870e8a06b566ba1a02602300c544eb55e9b0a707e5161c9154ab0fdb5c9 | 1357 | checksum: 6a5bb38791cd43c6b4af495fa49e50986c338735c349a1164cd48bca75d6a693482592185a7f11c63c8e51745f95e92068c3bcf8cc61ab4efa421b716f1909df |
1360 | languageName: node | 1358 | languageName: node |
1361 | linkType: hard | 1359 | linkType: hard |
1362 | 1360 | ||
1363 | "@emotion/babel-plugin@npm:^11.10.5": | 1361 | "@emotion/babel-plugin@npm:^11.11.0": |
1364 | version: 11.10.5 | 1362 | version: 11.11.0 |
1365 | resolution: "@emotion/babel-plugin@npm:11.10.5" | 1363 | resolution: "@emotion/babel-plugin@npm:11.11.0" |
1366 | dependencies: | 1364 | dependencies: |
1367 | "@babel/helper-module-imports": "npm:^7.16.7" | 1365 | "@babel/helper-module-imports": "npm:^7.16.7" |
1368 | "@babel/plugin-syntax-jsx": "npm:^7.17.12" | ||
1369 | "@babel/runtime": "npm:^7.18.3" | 1366 | "@babel/runtime": "npm:^7.18.3" |
1370 | "@emotion/hash": "npm:^0.9.0" | 1367 | "@emotion/hash": "npm:^0.9.1" |
1371 | "@emotion/memoize": "npm:^0.8.0" | 1368 | "@emotion/memoize": "npm:^0.8.1" |
1372 | "@emotion/serialize": "npm:^1.1.1" | 1369 | "@emotion/serialize": "npm:^1.1.2" |
1373 | babel-plugin-macros: "npm:^3.1.0" | 1370 | babel-plugin-macros: "npm:^3.1.0" |
1374 | convert-source-map: "npm:^1.5.0" | 1371 | convert-source-map: "npm:^1.5.0" |
1375 | escape-string-regexp: "npm:^4.0.0" | 1372 | escape-string-regexp: "npm:^4.0.0" |
1376 | find-root: "npm:^1.1.0" | 1373 | find-root: "npm:^1.1.0" |
1377 | source-map: "npm:^0.5.7" | 1374 | source-map: "npm:^0.5.7" |
1378 | stylis: "npm:4.1.3" | 1375 | stylis: "npm:4.2.0" |
1379 | peerDependencies: | 1376 | checksum: 8016da0104e5d9546eba3eb9d66a58b1fb929e292b921501459923d189610fc2cb88d6838bea2f617e8c93b8a8763e418870f303c4acefc6c117ff8e9efe7cf6 |
1380 | "@babel/core": ^7.0.0 | ||
1381 | checksum: 71d95f306740a8547d021e3149db4302348f3dd5f9f15ee8969e8f809b0bdf6d9efe9842055848d255b8d921e823ac1def3a1c4620f81d2f41bbfc11fa807f76 | ||
1382 | languageName: node | 1377 | languageName: node |
1383 | linkType: hard | 1378 | linkType: hard |
1384 | 1379 | ||
1385 | "@emotion/cache@npm:^11.10.5": | 1380 | "@emotion/cache@npm:^11.11.0": |
1386 | version: 11.10.5 | 1381 | version: 11.11.0 |
1387 | resolution: "@emotion/cache@npm:11.10.5" | 1382 | resolution: "@emotion/cache@npm:11.11.0" |
1388 | dependencies: | 1383 | dependencies: |
1389 | "@emotion/memoize": "npm:^0.8.0" | 1384 | "@emotion/memoize": "npm:^0.8.1" |
1390 | "@emotion/sheet": "npm:^1.2.1" | 1385 | "@emotion/sheet": "npm:^1.2.2" |
1391 | "@emotion/utils": "npm:^1.2.0" | 1386 | "@emotion/utils": "npm:^1.2.1" |
1392 | "@emotion/weak-memoize": "npm:^0.3.0" | 1387 | "@emotion/weak-memoize": "npm:^0.3.1" |
1393 | stylis: "npm:4.1.3" | 1388 | stylis: "npm:4.2.0" |
1394 | checksum: 40c744c5eea3d4438186ea4be71bf691cf3ac16774bda3d6d825960286fa35d735492ae881c028e01881101890f79568107877faefa58d027c760a4207ebe738 | 1389 | checksum: 2564df3c1672e398f95ac47796817cc583d74b5c36f14413492e8cc16aa38393340b292e56e325398c7f975e27eced365a1da36919da8e57041259588f925cf9 |
1395 | languageName: node | 1390 | languageName: node |
1396 | linkType: hard | 1391 | linkType: hard |
1397 | 1392 | ||
1398 | "@emotion/hash@npm:^0.9.0": | 1393 | "@emotion/hash@npm:^0.9.1": |
1399 | version: 0.9.0 | 1394 | version: 0.9.1 |
1400 | resolution: "@emotion/hash@npm:0.9.0" | 1395 | resolution: "@emotion/hash@npm:0.9.1" |
1401 | checksum: 30003d9e2e47ba1354ed4c5f8a5ea1b6a3b581c4ffbb916edb64036943f63206c7a553cabdbd5477435698cf7364ceb4901931611035fe35242764400c3b3f69 | 1396 | checksum: 87587f4a5fd6667866d643293c860781a3ed10cc3cb6397c7de929c65ccb78756f43f2a7e99034dbb7a10dc22cc30d685e2bc6e8fdc9a020c61f450117d40089 |
1402 | languageName: node | 1397 | languageName: node |
1403 | linkType: hard | 1398 | linkType: hard |
1404 | 1399 | ||
1405 | "@emotion/is-prop-valid@npm:^1.2.0": | 1400 | "@emotion/is-prop-valid@npm:^1.2.1": |
1406 | version: 1.2.0 | 1401 | version: 1.2.1 |
1407 | resolution: "@emotion/is-prop-valid@npm:1.2.0" | 1402 | resolution: "@emotion/is-prop-valid@npm:1.2.1" |
1408 | dependencies: | 1403 | dependencies: |
1409 | "@emotion/memoize": "npm:^0.8.0" | 1404 | "@emotion/memoize": "npm:^0.8.1" |
1410 | checksum: cb06940c166c33a075b5c8660d96ab56a91bf37d9a0cb28665bb6cad2528468f6833c58d745feb67154e5710f50aca341b34440afc188f25562025377758c6ff | 1405 | checksum: 04624e1cd72287c2f1143890605507f18cb22fb2f9111d89af56d88bea316c0a819040df9aeafa1b5f02facff31ada510e0d4efc1111ae0f4f8979f0da9b3966 |
1411 | languageName: node | 1406 | languageName: node |
1412 | linkType: hard | 1407 | linkType: hard |
1413 | 1408 | ||
1414 | "@emotion/memoize@npm:^0.8.0": | 1409 | "@emotion/memoize@npm:^0.8.1": |
1415 | version: 0.8.0 | 1410 | version: 0.8.1 |
1416 | resolution: "@emotion/memoize@npm:0.8.0" | 1411 | resolution: "@emotion/memoize@npm:0.8.1" |
1417 | checksum: f6814c7588ff86f60818cfc08514d210d65651ba54ac306f9fdb66126f3f53ef4d895404822a42b36d0af771c842151c7a12bf855f23d40f46392aa55d14c9c1 | 1412 | checksum: f9129e5c6d0fe36572c60eaa58fa7ca882f538440d9332d5f12a15aec8348095cdfd25092ee1af16b4bc55767aca56728411c26e2b0b3725e663039b842d3533 |
1418 | languageName: node | 1413 | languageName: node |
1419 | linkType: hard | 1414 | linkType: hard |
1420 | 1415 | ||
1421 | "@emotion/react@npm:^11.10.5": | 1416 | "@emotion/react@npm:^11.11.1": |
1422 | version: 11.10.5 | 1417 | version: 11.11.1 |
1423 | resolution: "@emotion/react@npm:11.10.5" | 1418 | resolution: "@emotion/react@npm:11.11.1" |
1424 | dependencies: | 1419 | dependencies: |
1425 | "@babel/runtime": "npm:^7.18.3" | 1420 | "@babel/runtime": "npm:^7.18.3" |
1426 | "@emotion/babel-plugin": "npm:^11.10.5" | 1421 | "@emotion/babel-plugin": "npm:^11.11.0" |
1427 | "@emotion/cache": "npm:^11.10.5" | 1422 | "@emotion/cache": "npm:^11.11.0" |
1428 | "@emotion/serialize": "npm:^1.1.1" | 1423 | "@emotion/serialize": "npm:^1.1.2" |
1429 | "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.0.0" | 1424 | "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.0.1" |
1430 | "@emotion/utils": "npm:^1.2.0" | 1425 | "@emotion/utils": "npm:^1.2.1" |
1431 | "@emotion/weak-memoize": "npm:^0.3.0" | 1426 | "@emotion/weak-memoize": "npm:^0.3.1" |
1432 | hoist-non-react-statics: "npm:^3.3.1" | 1427 | hoist-non-react-statics: "npm:^3.3.1" |
1433 | peerDependencies: | 1428 | peerDependencies: |
1434 | "@babel/core": ^7.0.0 | ||
1435 | react: ">=16.8.0" | 1429 | react: ">=16.8.0" |
1436 | peerDependenciesMeta: | 1430 | peerDependenciesMeta: |
1437 | "@babel/core": | ||
1438 | optional: true | ||
1439 | "@types/react": | 1431 | "@types/react": |
1440 | optional: true | 1432 | optional: true |
1441 | checksum: 068fece54080e4809e7e61e1a0aa5531e03c0891d395b01ba32cb2bebce10fdb55be602532efe5f7ebc6484ed4ffaf17d67a4270850118e944846380b20938a3 | 1433 | checksum: beae1f42b138566242655f6c13a3b0a2301c0fa6ed7de09ad272dad8d7cedcab4d69d0314ca51a485342345f07ab6ebca74f2aac69cbe24cc9de552e7915d30a |
1442 | languageName: node | 1434 | languageName: node |
1443 | linkType: hard | 1435 | linkType: hard |
1444 | 1436 | ||
1445 | "@emotion/serialize@npm:^1.1.1": | 1437 | "@emotion/serialize@npm:^1.1.2": |
1446 | version: 1.1.1 | 1438 | version: 1.1.2 |
1447 | resolution: "@emotion/serialize@npm:1.1.1" | 1439 | resolution: "@emotion/serialize@npm:1.1.2" |
1448 | dependencies: | 1440 | dependencies: |
1449 | "@emotion/hash": "npm:^0.9.0" | 1441 | "@emotion/hash": "npm:^0.9.1" |
1450 | "@emotion/memoize": "npm:^0.8.0" | 1442 | "@emotion/memoize": "npm:^0.8.1" |
1451 | "@emotion/unitless": "npm:^0.8.0" | 1443 | "@emotion/unitless": "npm:^0.8.1" |
1452 | "@emotion/utils": "npm:^1.2.0" | 1444 | "@emotion/utils": "npm:^1.2.1" |
1453 | csstype: "npm:^3.0.2" | 1445 | csstype: "npm:^3.0.2" |
1454 | checksum: f09b37f7d808fd4b9b80d83c6d41052e8de28bd3232f6654b7f397b00040001b147b50b1a3e7edecc4b7669d7a42be22e5c00501c6a699ae3d6e4ad721354e18 | 1446 | checksum: e681349d97968880271f840e9e79f672f5c331ac52c90600b9cf5994351711ffe837e0a187aeeccf9c600116b5eee02c9ada395455d246f494e714cae59c30df |
1455 | languageName: node | 1447 | languageName: node |
1456 | linkType: hard | 1448 | linkType: hard |
1457 | 1449 | ||
1458 | "@emotion/sheet@npm:^1.2.1": | 1450 | "@emotion/sheet@npm:^1.2.2": |
1459 | version: 1.2.1 | 1451 | version: 1.2.2 |
1460 | resolution: "@emotion/sheet@npm:1.2.1" | 1452 | resolution: "@emotion/sheet@npm:1.2.2" |
1461 | checksum: bf811e2557855c53daa3ffb3fdee3ce5da4b7f3f9fcf3be7571edb8388b437dd33afc831190bb473be6b1065276efea9b5ba2290589ea367510832d9d1f971e4 | 1453 | checksum: b25ec606f076b95d9831feae4ac8bd527c13fab5a31e5a4533d1482eaa8d2620bda7f8d4d350388ed926633339e0feea0555ed175d08265cd1c6f51bc4bb6434 |
1462 | languageName: node | 1454 | languageName: node |
1463 | linkType: hard | 1455 | linkType: hard |
1464 | 1456 | ||
1465 | "@emotion/styled@npm:^11.10.5": | 1457 | "@emotion/styled@npm:^11.11.0": |
1466 | version: 11.10.5 | 1458 | version: 11.11.0 |
1467 | resolution: "@emotion/styled@npm:11.10.5" | 1459 | resolution: "@emotion/styled@npm:11.11.0" |
1468 | dependencies: | 1460 | dependencies: |
1469 | "@babel/runtime": "npm:^7.18.3" | 1461 | "@babel/runtime": "npm:^7.18.3" |
1470 | "@emotion/babel-plugin": "npm:^11.10.5" | 1462 | "@emotion/babel-plugin": "npm:^11.11.0" |
1471 | "@emotion/is-prop-valid": "npm:^1.2.0" | 1463 | "@emotion/is-prop-valid": "npm:^1.2.1" |
1472 | "@emotion/serialize": "npm:^1.1.1" | 1464 | "@emotion/serialize": "npm:^1.1.2" |
1473 | "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.0.0" | 1465 | "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.0.1" |
1474 | "@emotion/utils": "npm:^1.2.0" | 1466 | "@emotion/utils": "npm:^1.2.1" |
1475 | peerDependencies: | 1467 | peerDependencies: |
1476 | "@babel/core": ^7.0.0 | ||
1477 | "@emotion/react": ^11.0.0-rc.0 | 1468 | "@emotion/react": ^11.0.0-rc.0 |
1478 | react: ">=16.8.0" | 1469 | react: ">=16.8.0" |
1479 | peerDependenciesMeta: | 1470 | peerDependenciesMeta: |
1480 | "@babel/core": | ||
1481 | optional: true | ||
1482 | "@types/react": | 1471 | "@types/react": |
1483 | optional: true | 1472 | optional: true |
1484 | checksum: 9a135212e9be199ca180b4a92f1bed208880ae8994143f2b0f3689a3549746484454302e301d5b5c4166f6ba51862cee923ba5ac8676b2369a7f62e29fd6d27f | 1473 | checksum: 3433979aad4515933563dc2f14c98802d33b771b5269d989f15f9d2458f0adc0235465a06d27bf51528d4e1d653ec57f8d0e0ecb50e58b39e72afe5a234170ed |
1485 | languageName: node | 1474 | languageName: node |
1486 | linkType: hard | 1475 | linkType: hard |
1487 | 1476 | ||
1488 | "@emotion/unitless@npm:^0.8.0": | 1477 | "@emotion/unitless@npm:^0.8.1": |
1489 | version: 0.8.0 | 1478 | version: 0.8.1 |
1490 | resolution: "@emotion/unitless@npm:0.8.0" | 1479 | resolution: "@emotion/unitless@npm:0.8.1" |
1491 | checksum: 9c9e96b7514c921f98b3da0c17b4a2aa9dbcb362a5f6f0994d854a87f68908c951af690ec78c7c581a2e0e8349099563e4818eecfb8471692615ea2a495fea46 | 1480 | checksum: 6f28915658918cb969acb612c592490b012e7b1a894a232411147f4c810cc4667053479ef126d7deeab589fa4fa0f3b11b0a79e2f40447d550292cc7a6cc591b |
1492 | languageName: node | 1481 | languageName: node |
1493 | linkType: hard | 1482 | linkType: hard |
1494 | 1483 | ||
1495 | "@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.0": | 1484 | "@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.1": |
1496 | version: 1.0.0 | 1485 | version: 1.0.1 |
1497 | resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.0" | 1486 | resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.1" |
1498 | peerDependencies: | 1487 | peerDependencies: |
1499 | react: ">=16.8.0" | 1488 | react: ">=16.8.0" |
1500 | checksum: 0eb56bf93a8b393824af749eb38ceb8216e9fe220ae241095e796d4be349bafb8f3be1111c976954dd0eed122d92d08d474371dcb3e99e3f349b03adea92c942 | 1489 | checksum: 757b7a88000de88dc29e349c1d7d04f49aadf8cb3d5066b99ceb8201e4c3c12db9caf08df7b35ca3a7ca88dbe5a44872d8b7d6326838682cbc2d1b7ca5be4344 |
1501 | languageName: node | 1490 | languageName: node |
1502 | linkType: hard | 1491 | linkType: hard |
1503 | 1492 | ||
1504 | "@emotion/utils@npm:^1.2.0": | 1493 | "@emotion/utils@npm:^1.2.1": |
1505 | version: 1.2.0 | 1494 | version: 1.2.1 |
1506 | resolution: "@emotion/utils@npm:1.2.0" | 1495 | resolution: "@emotion/utils@npm:1.2.1" |
1507 | checksum: a4d6eac30b641e01393f90fde80ebdafefbef5f86f44d002dc9190b313120c1a5e62be9eb8c8f84e37015fa6b505e9a4083393ede3158c0babf87c75f5e753ba | 1496 | checksum: d80f12813e9663a1dc9e824efe57000c3ca296aa5207029682854eee09d34c0395f462cf7b0d057b5460840ac65170053e0f6c57493069c982b8070d26dc79e0 |
1508 | languageName: node | 1497 | languageName: node |
1509 | linkType: hard | 1498 | linkType: hard |
1510 | 1499 | ||
1511 | "@emotion/weak-memoize@npm:^0.3.0": | 1500 | "@emotion/weak-memoize@npm:^0.3.1": |
1512 | version: 0.3.0 | 1501 | version: 0.3.1 |
1513 | resolution: "@emotion/weak-memoize@npm:0.3.0" | 1502 | resolution: "@emotion/weak-memoize@npm:0.3.1" |
1514 | checksum: a54c661998fa78cf05db8dfd33b8e06512356e908954542665e1e487e7901724c6a10816ae714db02471d1c5715b980aecbceee32d92fc4c957e6909ee2f8ed8 | 1503 | checksum: 64f8180e70c0717d7e0fadace95491c8d91c045a5a3a42a12e461efe38a109d56ca66d37a474f7a20835fcd61ed0ac35bda6bd5ebf8786171051acbcc53b0134 |
1515 | languageName: node | 1504 | languageName: node |
1516 | linkType: hard | 1505 | linkType: hard |
1517 | 1506 | ||
1518 | "@esbuild/android-arm64@npm:0.16.17": | 1507 | "@esbuild/android-arm64@npm:0.17.19": |
1519 | version: 0.16.17 | 1508 | version: 0.17.19 |
1520 | resolution: "@esbuild/android-arm64@npm:0.16.17" | 1509 | resolution: "@esbuild/android-arm64@npm:0.17.19" |
1521 | conditions: os=android & cpu=arm64 | 1510 | conditions: os=android & cpu=arm64 |
1522 | languageName: node | 1511 | languageName: node |
1523 | linkType: hard | 1512 | linkType: hard |
1524 | 1513 | ||
1525 | "@esbuild/android-arm@npm:0.16.17": | 1514 | "@esbuild/android-arm@npm:0.17.19": |
1526 | version: 0.16.17 | 1515 | version: 0.17.19 |
1527 | resolution: "@esbuild/android-arm@npm:0.16.17" | 1516 | resolution: "@esbuild/android-arm@npm:0.17.19" |
1528 | conditions: os=android & cpu=arm | 1517 | conditions: os=android & cpu=arm |
1529 | languageName: node | 1518 | languageName: node |
1530 | linkType: hard | 1519 | linkType: hard |
1531 | 1520 | ||
1532 | "@esbuild/android-x64@npm:0.16.17": | 1521 | "@esbuild/android-x64@npm:0.17.19": |
1533 | version: 0.16.17 | 1522 | version: 0.17.19 |
1534 | resolution: "@esbuild/android-x64@npm:0.16.17" | 1523 | resolution: "@esbuild/android-x64@npm:0.17.19" |
1535 | conditions: os=android & cpu=x64 | 1524 | conditions: os=android & cpu=x64 |
1536 | languageName: node | 1525 | languageName: node |
1537 | linkType: hard | 1526 | linkType: hard |
1538 | 1527 | ||
1539 | "@esbuild/darwin-arm64@npm:0.16.17": | 1528 | "@esbuild/darwin-arm64@npm:0.17.19": |
1540 | version: 0.16.17 | 1529 | version: 0.17.19 |
1541 | resolution: "@esbuild/darwin-arm64@npm:0.16.17" | 1530 | resolution: "@esbuild/darwin-arm64@npm:0.17.19" |
1542 | conditions: os=darwin & cpu=arm64 | 1531 | conditions: os=darwin & cpu=arm64 |
1543 | languageName: node | 1532 | languageName: node |
1544 | linkType: hard | 1533 | linkType: hard |
1545 | 1534 | ||
1546 | "@esbuild/darwin-x64@npm:0.16.17": | 1535 | "@esbuild/darwin-x64@npm:0.17.19": |
1547 | version: 0.16.17 | 1536 | version: 0.17.19 |
1548 | resolution: "@esbuild/darwin-x64@npm:0.16.17" | 1537 | resolution: "@esbuild/darwin-x64@npm:0.17.19" |
1549 | conditions: os=darwin & cpu=x64 | 1538 | conditions: os=darwin & cpu=x64 |
1550 | languageName: node | 1539 | languageName: node |
1551 | linkType: hard | 1540 | linkType: hard |
1552 | 1541 | ||
1553 | "@esbuild/freebsd-arm64@npm:0.16.17": | 1542 | "@esbuild/freebsd-arm64@npm:0.17.19": |
1554 | version: 0.16.17 | 1543 | version: 0.17.19 |
1555 | resolution: "@esbuild/freebsd-arm64@npm:0.16.17" | 1544 | resolution: "@esbuild/freebsd-arm64@npm:0.17.19" |
1556 | conditions: os=freebsd & cpu=arm64 | 1545 | conditions: os=freebsd & cpu=arm64 |
1557 | languageName: node | 1546 | languageName: node |
1558 | linkType: hard | 1547 | linkType: hard |
1559 | 1548 | ||
1560 | "@esbuild/freebsd-x64@npm:0.16.17": | 1549 | "@esbuild/freebsd-x64@npm:0.17.19": |
1561 | version: 0.16.17 | 1550 | version: 0.17.19 |
1562 | resolution: "@esbuild/freebsd-x64@npm:0.16.17" | 1551 | resolution: "@esbuild/freebsd-x64@npm:0.17.19" |
1563 | conditions: os=freebsd & cpu=x64 | 1552 | conditions: os=freebsd & cpu=x64 |
1564 | languageName: node | 1553 | languageName: node |
1565 | linkType: hard | 1554 | linkType: hard |
1566 | 1555 | ||
1567 | "@esbuild/linux-arm64@npm:0.16.17": | 1556 | "@esbuild/linux-arm64@npm:0.17.19": |
1568 | version: 0.16.17 | 1557 | version: 0.17.19 |
1569 | resolution: "@esbuild/linux-arm64@npm:0.16.17" | 1558 | resolution: "@esbuild/linux-arm64@npm:0.17.19" |
1570 | conditions: os=linux & cpu=arm64 | 1559 | conditions: os=linux & cpu=arm64 |
1571 | languageName: node | 1560 | languageName: node |
1572 | linkType: hard | 1561 | linkType: hard |
1573 | 1562 | ||
1574 | "@esbuild/linux-arm@npm:0.16.17": | 1563 | "@esbuild/linux-arm@npm:0.17.19": |
1575 | version: 0.16.17 | 1564 | version: 0.17.19 |
1576 | resolution: "@esbuild/linux-arm@npm:0.16.17" | 1565 | resolution: "@esbuild/linux-arm@npm:0.17.19" |
1577 | conditions: os=linux & cpu=arm | 1566 | conditions: os=linux & cpu=arm |
1578 | languageName: node | 1567 | languageName: node |
1579 | linkType: hard | 1568 | linkType: hard |
1580 | 1569 | ||
1581 | "@esbuild/linux-ia32@npm:0.16.17": | 1570 | "@esbuild/linux-ia32@npm:0.17.19": |
1582 | version: 0.16.17 | 1571 | version: 0.17.19 |
1583 | resolution: "@esbuild/linux-ia32@npm:0.16.17" | 1572 | resolution: "@esbuild/linux-ia32@npm:0.17.19" |
1584 | conditions: os=linux & cpu=ia32 | 1573 | conditions: os=linux & cpu=ia32 |
1585 | languageName: node | 1574 | languageName: node |
1586 | linkType: hard | 1575 | linkType: hard |
1587 | 1576 | ||
1588 | "@esbuild/linux-loong64@npm:0.16.17": | 1577 | "@esbuild/linux-loong64@npm:0.17.19": |
1589 | version: 0.16.17 | 1578 | version: 0.17.19 |
1590 | resolution: "@esbuild/linux-loong64@npm:0.16.17" | 1579 | resolution: "@esbuild/linux-loong64@npm:0.17.19" |
1591 | conditions: os=linux & cpu=loong64 | 1580 | conditions: os=linux & cpu=loong64 |
1592 | languageName: node | 1581 | languageName: node |
1593 | linkType: hard | 1582 | linkType: hard |
1594 | 1583 | ||
1595 | "@esbuild/linux-mips64el@npm:0.16.17": | 1584 | "@esbuild/linux-mips64el@npm:0.17.19": |
1596 | version: 0.16.17 | 1585 | version: 0.17.19 |
1597 | resolution: "@esbuild/linux-mips64el@npm:0.16.17" | 1586 | resolution: "@esbuild/linux-mips64el@npm:0.17.19" |
1598 | conditions: os=linux & cpu=mips64el | 1587 | conditions: os=linux & cpu=mips64el |
1599 | languageName: node | 1588 | languageName: node |
1600 | linkType: hard | 1589 | linkType: hard |
1601 | 1590 | ||
1602 | "@esbuild/linux-ppc64@npm:0.16.17": | 1591 | "@esbuild/linux-ppc64@npm:0.17.19": |
1603 | version: 0.16.17 | 1592 | version: 0.17.19 |
1604 | resolution: "@esbuild/linux-ppc64@npm:0.16.17" | 1593 | resolution: "@esbuild/linux-ppc64@npm:0.17.19" |
1605 | conditions: os=linux & cpu=ppc64 | 1594 | conditions: os=linux & cpu=ppc64 |
1606 | languageName: node | 1595 | languageName: node |
1607 | linkType: hard | 1596 | linkType: hard |
1608 | 1597 | ||
1609 | "@esbuild/linux-riscv64@npm:0.16.17": | 1598 | "@esbuild/linux-riscv64@npm:0.17.19": |
1610 | version: 0.16.17 | 1599 | version: 0.17.19 |
1611 | resolution: "@esbuild/linux-riscv64@npm:0.16.17" | 1600 | resolution: "@esbuild/linux-riscv64@npm:0.17.19" |
1612 | conditions: os=linux & cpu=riscv64 | 1601 | conditions: os=linux & cpu=riscv64 |
1613 | languageName: node | 1602 | languageName: node |
1614 | linkType: hard | 1603 | linkType: hard |
1615 | 1604 | ||
1616 | "@esbuild/linux-s390x@npm:0.16.17": | 1605 | "@esbuild/linux-s390x@npm:0.17.19": |
1617 | version: 0.16.17 | 1606 | version: 0.17.19 |
1618 | resolution: "@esbuild/linux-s390x@npm:0.16.17" | 1607 | resolution: "@esbuild/linux-s390x@npm:0.17.19" |
1619 | conditions: os=linux & cpu=s390x | 1608 | conditions: os=linux & cpu=s390x |
1620 | languageName: node | 1609 | languageName: node |
1621 | linkType: hard | 1610 | linkType: hard |
1622 | 1611 | ||
1623 | "@esbuild/linux-x64@npm:0.16.17": | 1612 | "@esbuild/linux-x64@npm:0.17.19": |
1624 | version: 0.16.17 | 1613 | version: 0.17.19 |
1625 | resolution: "@esbuild/linux-x64@npm:0.16.17" | 1614 | resolution: "@esbuild/linux-x64@npm:0.17.19" |
1626 | conditions: os=linux & cpu=x64 | 1615 | conditions: os=linux & cpu=x64 |
1627 | languageName: node | 1616 | languageName: node |
1628 | linkType: hard | 1617 | linkType: hard |
1629 | 1618 | ||
1630 | "@esbuild/netbsd-x64@npm:0.16.17": | 1619 | "@esbuild/netbsd-x64@npm:0.17.19": |
1631 | version: 0.16.17 | 1620 | version: 0.17.19 |
1632 | resolution: "@esbuild/netbsd-x64@npm:0.16.17" | 1621 | resolution: "@esbuild/netbsd-x64@npm:0.17.19" |
1633 | conditions: os=netbsd & cpu=x64 | 1622 | conditions: os=netbsd & cpu=x64 |
1634 | languageName: node | 1623 | languageName: node |
1635 | linkType: hard | 1624 | linkType: hard |
1636 | 1625 | ||
1637 | "@esbuild/openbsd-x64@npm:0.16.17": | 1626 | "@esbuild/openbsd-x64@npm:0.17.19": |
1638 | version: 0.16.17 | 1627 | version: 0.17.19 |
1639 | resolution: "@esbuild/openbsd-x64@npm:0.16.17" | 1628 | resolution: "@esbuild/openbsd-x64@npm:0.17.19" |
1640 | conditions: os=openbsd & cpu=x64 | 1629 | conditions: os=openbsd & cpu=x64 |
1641 | languageName: node | 1630 | languageName: node |
1642 | linkType: hard | 1631 | linkType: hard |
1643 | 1632 | ||
1644 | "@esbuild/sunos-x64@npm:0.16.17": | 1633 | "@esbuild/sunos-x64@npm:0.17.19": |
1645 | version: 0.16.17 | 1634 | version: 0.17.19 |
1646 | resolution: "@esbuild/sunos-x64@npm:0.16.17" | 1635 | resolution: "@esbuild/sunos-x64@npm:0.17.19" |
1647 | conditions: os=sunos & cpu=x64 | 1636 | conditions: os=sunos & cpu=x64 |
1648 | languageName: node | 1637 | languageName: node |
1649 | linkType: hard | 1638 | linkType: hard |
1650 | 1639 | ||
1651 | "@esbuild/win32-arm64@npm:0.16.17": | 1640 | "@esbuild/win32-arm64@npm:0.17.19": |
1652 | version: 0.16.17 | 1641 | version: 0.17.19 |
1653 | resolution: "@esbuild/win32-arm64@npm:0.16.17" | 1642 | resolution: "@esbuild/win32-arm64@npm:0.17.19" |
1654 | conditions: os=win32 & cpu=arm64 | 1643 | conditions: os=win32 & cpu=arm64 |
1655 | languageName: node | 1644 | languageName: node |
1656 | linkType: hard | 1645 | linkType: hard |
1657 | 1646 | ||
1658 | "@esbuild/win32-ia32@npm:0.16.17": | 1647 | "@esbuild/win32-ia32@npm:0.17.19": |
1659 | version: 0.16.17 | 1648 | version: 0.17.19 |
1660 | resolution: "@esbuild/win32-ia32@npm:0.16.17" | 1649 | resolution: "@esbuild/win32-ia32@npm:0.17.19" |
1661 | conditions: os=win32 & cpu=ia32 | 1650 | conditions: os=win32 & cpu=ia32 |
1662 | languageName: node | 1651 | languageName: node |
1663 | linkType: hard | 1652 | linkType: hard |
1664 | 1653 | ||
1665 | "@esbuild/win32-x64@npm:0.16.17": | 1654 | "@esbuild/win32-x64@npm:0.17.19": |
1666 | version: 0.16.17 | 1655 | version: 0.17.19 |
1667 | resolution: "@esbuild/win32-x64@npm:0.16.17" | 1656 | resolution: "@esbuild/win32-x64@npm:0.17.19" |
1668 | conditions: os=win32 & cpu=x64 | 1657 | conditions: os=win32 & cpu=x64 |
1669 | languageName: node | 1658 | languageName: node |
1670 | linkType: hard | 1659 | linkType: hard |
1671 | 1660 | ||
1672 | "@eslint/eslintrc@npm:^1.4.1": | 1661 | "@eslint-community/eslint-utils@npm:^4.2.0": |
1673 | version: 1.4.1 | 1662 | version: 4.4.0 |
1674 | resolution: "@eslint/eslintrc@npm:1.4.1" | 1663 | resolution: "@eslint-community/eslint-utils@npm:4.4.0" |
1664 | dependencies: | ||
1665 | eslint-visitor-keys: "npm:^3.3.0" | ||
1666 | peerDependencies: | ||
1667 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 | ||
1668 | checksum: b9d700a83a743f2e152b4038d02a4bf807bc7363d59efeafec93b9498e59a3aa4d2604d206c213b91966416d628f33d88a4b773b8ff0d384b44353e8072ba922 | ||
1669 | languageName: node | ||
1670 | linkType: hard | ||
1671 | |||
1672 | "@eslint-community/regexpp@npm:^4.4.0": | ||
1673 | version: 4.5.0 | ||
1674 | resolution: "@eslint-community/regexpp@npm:4.5.0" | ||
1675 | checksum: 14f8f9f865bfe07a41e7f274ce5eddc456e194d5e5fe7928b6520f5eaf7312c2da683be06133f3cd775af41fc9992f4181b71dd12e370cfab94a82e9bb74169a | ||
1676 | languageName: node | ||
1677 | linkType: hard | ||
1678 | |||
1679 | "@eslint/eslintrc@npm:^2.0.3": | ||
1680 | version: 2.0.3 | ||
1681 | resolution: "@eslint/eslintrc@npm:2.0.3" | ||
1675 | dependencies: | 1682 | dependencies: |
1676 | ajv: "npm:^6.12.4" | 1683 | ajv: "npm:^6.12.4" |
1677 | debug: "npm:^4.3.2" | 1684 | debug: "npm:^4.3.2" |
1678 | espree: "npm:^9.4.0" | 1685 | espree: "npm:^9.5.2" |
1679 | globals: "npm:^13.19.0" | 1686 | globals: "npm:^13.19.0" |
1680 | ignore: "npm:^5.2.0" | 1687 | ignore: "npm:^5.2.0" |
1681 | import-fresh: "npm:^3.2.1" | 1688 | import-fresh: "npm:^3.2.1" |
1682 | js-yaml: "npm:^4.1.0" | 1689 | js-yaml: "npm:^4.1.0" |
1683 | minimatch: "npm:^3.1.2" | 1690 | minimatch: "npm:^3.1.2" |
1684 | strip-json-comments: "npm:^3.1.1" | 1691 | strip-json-comments: "npm:^3.1.1" |
1685 | checksum: 4e469ed508c3154078503b1f22b9d7f2498e76e770ff3f8c61c9961a16760c817e977f2f00b02201d1e91d6a4ebc766c1c67aae9189b00d5c1fe2e7205b6ad72 | 1692 | checksum: 41c404e8cbca6e0717bce15425f15d34514c38ebcef5daf99467d405733bae73908227feea4d04edc64906e89cc53f30391c31864a5e51b3d3838a05a3a97356 |
1686 | languageName: node | 1693 | languageName: node |
1687 | linkType: hard | 1694 | linkType: hard |
1688 | 1695 | ||
1689 | "@fontsource/inter@npm:^4.5.15": | 1696 | "@eslint/js@npm:8.43.0": |
1690 | version: 4.5.15 | 1697 | version: 8.43.0 |
1691 | resolution: "@fontsource/inter@npm:4.5.15" | 1698 | resolution: "@eslint/js@npm:8.43.0" |
1692 | checksum: d5d9e6f074030452c8ab966a606e029ceea7ea3a2ab3f74ece100ff8c9bb94c41540521df78a3ad5d177746b2a16eeb506784541a2a7f7fd3ac128e7b51916f3 | 1699 | checksum: 3231c88eee1cb8c8b77771eed89d99a26e8d813bc0ada47fbdadaff1a16cbd74000633f4411a74c3d7cc71629f78da177060b369ce6aac461568712175c2ce8c |
1693 | languageName: node | 1700 | languageName: node |
1694 | linkType: hard | 1701 | linkType: hard |
1695 | 1702 | ||
1696 | "@fontsource/jetbrains-mono@npm:^4.5.12": | 1703 | "@fontsource-variable/inter@npm:^5.0.3": |
1697 | version: 4.5.12 | 1704 | version: 5.0.3 |
1698 | resolution: "@fontsource/jetbrains-mono@npm:4.5.12" | 1705 | resolution: "@fontsource-variable/inter@npm:5.0.3" |
1699 | checksum: 23a3d354e8ddf10993e3b1e588dc791ff04da93e3a2de38d12df7041033d5ca0e20d08b4b708f8482b49ba43602d28e45ab19750858aa7a6b1d7df3c70bd4156 | 1706 | checksum: fafef9eba436bb20803966b47de1ed0bb54aec421d7c979fa2bf5183ea16724f3f11e8c2ac90e7fd5b7941819beafb94648471daa338de32f95c3ca885249e3f |
1700 | languageName: node | 1707 | languageName: node |
1701 | linkType: hard | 1708 | linkType: hard |
1702 | 1709 | ||
1703 | "@gar/promisify@npm:^1.0.1": | 1710 | "@fontsource-variable/jetbrains-mono@npm:^5.0.3": |
1704 | version: 1.1.2 | 1711 | version: 5.0.4 |
1705 | resolution: "@gar/promisify@npm:1.1.2" | 1712 | resolution: "@fontsource-variable/jetbrains-mono@npm:5.0.4" |
1706 | checksum: aa6792cfe42659321bfffa8ea42c623b0bcaed96e735a48b226417a220a1e18df0c1284d1e69bfdc263948ed926e9509843951de8d6d1b11078ba693a8b95b0f | 1713 | checksum: 5e3559b3c2186f6c3f3f73b1fac0d0b296a7d1ccb709da6d7557cbe5dcdb8f6a22f0a2b21cbdd2a29d718a9252ff723074708d07b38d79240b6b390137228109 |
1707 | languageName: node | 1714 | languageName: node |
1708 | linkType: hard | 1715 | linkType: hard |
1709 | 1716 | ||
1710 | "@humanwhocodes/config-array@npm:^0.11.8": | 1717 | "@humanwhocodes/config-array@npm:^0.11.10": |
1711 | version: 0.11.8 | 1718 | version: 0.11.10 |
1712 | resolution: "@humanwhocodes/config-array@npm:0.11.8" | 1719 | resolution: "@humanwhocodes/config-array@npm:0.11.10" |
1713 | dependencies: | 1720 | dependencies: |
1714 | "@humanwhocodes/object-schema": "npm:^1.2.1" | 1721 | "@humanwhocodes/object-schema": "npm:^1.2.1" |
1715 | debug: "npm:^4.1.1" | 1722 | debug: "npm:^4.1.1" |
1716 | minimatch: "npm:^3.0.5" | 1723 | minimatch: "npm:^3.0.5" |
1717 | checksum: 010892ba3c237e96562df1f21a7e04b611274f2c91b4df6c8263eb7d2ffcec3a5bfcab67b13d9c4acc8a2e3f94cb61d7ced772ecd445b226fb41b88c93e9194c | 1724 | checksum: d8b3afa90dc46f4cbad48dd54e9bb39918a01fbfb16cc931fb55db8c967c1575fc21d4a5f8055f4728697246eafafc95e23c97370ff30ada621f4b581bed3f9d |
1718 | languageName: node | 1725 | languageName: node |
1719 | linkType: hard | 1726 | linkType: hard |
1720 | 1727 | ||
@@ -1732,13 +1739,17 @@ __metadata: | |||
1732 | languageName: node | 1739 | languageName: node |
1733 | linkType: hard | 1740 | linkType: hard |
1734 | 1741 | ||
1735 | "@jridgewell/gen-mapping@npm:^0.1.0": | 1742 | "@isaacs/cliui@npm:^8.0.2": |
1736 | version: 0.1.1 | 1743 | version: 8.0.2 |
1737 | resolution: "@jridgewell/gen-mapping@npm:0.1.1" | 1744 | resolution: "@isaacs/cliui@npm:8.0.2" |
1738 | dependencies: | 1745 | dependencies: |
1739 | "@jridgewell/set-array": "npm:^1.0.0" | 1746 | string-width: "npm:^5.1.2" |
1740 | "@jridgewell/sourcemap-codec": "npm:^1.4.10" | 1747 | string-width-cjs: "npm:string-width@^4.2.0" |
1741 | checksum: 5e4c9ef71682a0d827050cc53f10308825f8a0930ab2b54094381de293f92a53b290091fbe910c17048eae31c1b99c5ef8474ae8267192f83b40023619367331 | 1748 | strip-ansi: "npm:^7.0.1" |
1749 | strip-ansi-cjs: "npm:strip-ansi@^6.0.1" | ||
1750 | wrap-ansi: "npm:^8.1.0" | ||
1751 | wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" | ||
1752 | checksum: b9a4e369729f32ccce5b5764a574da6bbaee7e746c2d9cf35a3701c2907ba82f9bf456602ebd23df537b418fd611d54eb5c5a8ee7d8841dc5dc16c28ede0b258 | ||
1742 | languageName: node | 1753 | languageName: node |
1743 | linkType: hard | 1754 | linkType: hard |
1744 | 1755 | ||
@@ -1753,81 +1764,81 @@ __metadata: | |||
1753 | languageName: node | 1764 | languageName: node |
1754 | linkType: hard | 1765 | linkType: hard |
1755 | 1766 | ||
1756 | "@jridgewell/resolve-uri@npm:^3.0.3": | 1767 | "@jridgewell/resolve-uri@npm:3.1.0": |
1757 | version: 3.1.0 | 1768 | version: 3.1.0 |
1758 | resolution: "@jridgewell/resolve-uri@npm:3.1.0" | 1769 | resolution: "@jridgewell/resolve-uri@npm:3.1.0" |
1759 | checksum: 6b641bb7e25bc92a9848898cc91a77a390f393f086297ec2336d911387bdd708919c418e74a22732cfc21d0e7300b94306f437d2e9de5ab58b33ebc6c39d6f9d | 1770 | checksum: 6b641bb7e25bc92a9848898cc91a77a390f393f086297ec2336d911387bdd708919c418e74a22732cfc21d0e7300b94306f437d2e9de5ab58b33ebc6c39d6f9d |
1760 | languageName: node | 1771 | languageName: node |
1761 | linkType: hard | 1772 | linkType: hard |
1762 | 1773 | ||
1763 | "@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.0.1": | 1774 | "@jridgewell/set-array@npm:^1.0.1": |
1764 | version: 1.1.2 | 1775 | version: 1.1.2 |
1765 | resolution: "@jridgewell/set-array@npm:1.1.2" | 1776 | resolution: "@jridgewell/set-array@npm:1.1.2" |
1766 | checksum: e7e3f00d10622a6e48cc59041537f99972ed110dca8bfdf575be101c5920d4e4d4fab315d601df9aebbd6b97f4ce857f0347902701ed034a0627ca554b64db0f | 1777 | checksum: e7e3f00d10622a6e48cc59041537f99972ed110dca8bfdf575be101c5920d4e4d4fab315d601df9aebbd6b97f4ce857f0347902701ed034a0627ca554b64db0f |
1767 | languageName: node | 1778 | languageName: node |
1768 | linkType: hard | 1779 | linkType: hard |
1769 | 1780 | ||
1770 | "@jridgewell/source-map@npm:^0.3.2": | 1781 | "@jridgewell/source-map@npm:^0.3.3": |
1771 | version: 0.3.2 | 1782 | version: 0.3.3 |
1772 | resolution: "@jridgewell/source-map@npm:0.3.2" | 1783 | resolution: "@jridgewell/source-map@npm:0.3.3" |
1773 | dependencies: | 1784 | dependencies: |
1774 | "@jridgewell/gen-mapping": "npm:^0.3.0" | 1785 | "@jridgewell/gen-mapping": "npm:^0.3.0" |
1775 | "@jridgewell/trace-mapping": "npm:^0.3.9" | 1786 | "@jridgewell/trace-mapping": "npm:^0.3.9" |
1776 | checksum: 66bb5d5cac95793717fea6cfe45c02c0e493f39c320cdaee030a39de033a961cfcb2f5bf105150eb8fada65b6654e72e33efae35349fbaca897414a17c984c34 | 1787 | checksum: a74e3e9d227c24e0918f10cf9d5cce54dc7a8eb3bca07cc4b0a5969baeb026d112511d94dc5822e3c502fbe2ee98ad0a985c29f158ceccb61798b113c1e0c74e |
1777 | languageName: node | 1788 | languageName: node |
1778 | linkType: hard | 1789 | linkType: hard |
1779 | 1790 | ||
1780 | "@jridgewell/sourcemap-codec@npm:^1.4.10": | 1791 | "@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10": |
1781 | version: 1.4.14 | 1792 | version: 1.4.14 |
1782 | resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" | 1793 | resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" |
1783 | checksum: 2147ea75c966fed8a7d9ed6679b7e8c380fa790a9bea5a64f4ec1c26d24e44b461aa60fc3b228cea03a46708d9d1bcf19508035bf27ad5e8f63d0998ed1d1117 | 1794 | checksum: 2147ea75c966fed8a7d9ed6679b7e8c380fa790a9bea5a64f4ec1c26d24e44b461aa60fc3b228cea03a46708d9d1bcf19508035bf27ad5e8f63d0998ed1d1117 |
1784 | languageName: node | 1795 | languageName: node |
1785 | linkType: hard | 1796 | linkType: hard |
1786 | 1797 | ||
1787 | "@jridgewell/trace-mapping@npm:^0.3.9": | 1798 | "@jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.9": |
1788 | version: 0.3.14 | 1799 | version: 0.3.18 |
1789 | resolution: "@jridgewell/trace-mapping@npm:0.3.14" | 1800 | resolution: "@jridgewell/trace-mapping@npm:0.3.18" |
1790 | dependencies: | 1801 | dependencies: |
1791 | "@jridgewell/resolve-uri": "npm:^3.0.3" | 1802 | "@jridgewell/resolve-uri": "npm:3.1.0" |
1792 | "@jridgewell/sourcemap-codec": "npm:^1.4.10" | 1803 | "@jridgewell/sourcemap-codec": "npm:1.4.14" |
1793 | checksum: 210642773f70bb3cf349ef237c08d6c70f456d19a4d1940acdbd1cffe67b29fe2742821028aeb63f9d26d203f44b1ab0d0ca6b326f0415230b79cfd3f0ccbd6a | 1804 | checksum: 56cd5d76d2717f31ccab224094d2cd92918aa612a070f63738160e857045bde2bd9b247aba6147f3ed15b9dd056b4231c6b5f6d6cc7e624f1ad37bda1d49365c |
1794 | languageName: node | 1805 | languageName: node |
1795 | linkType: hard | 1806 | linkType: hard |
1796 | 1807 | ||
1797 | "@lezer/common@npm:^1.0.0, @lezer/common@npm:^1.0.2": | 1808 | "@lezer/common@npm:^1.0.0, @lezer/common@npm:^1.0.2, @lezer/common@npm:^1.0.3": |
1798 | version: 1.0.2 | 1809 | version: 1.0.3 |
1799 | resolution: "@lezer/common@npm:1.0.2" | 1810 | resolution: "@lezer/common@npm:1.0.3" |
1800 | checksum: 708a819b2b534b381dfc419a4dc4a3db465d828c937ebe5449fdf55529d14680475aca3e82677fd3c01ccaaaeb66689371dbd8e62d212fe20372a581e9a4284f | 1811 | checksum: 04a7c163ab7ebebf6497799e6c327f64e9da442ed045bae3e59201918b96f8d01c2ad9263487d935e4d0a65fcafc3628cbb71d448377b1086f7f6db7323ff54d |
1801 | languageName: node | 1812 | languageName: node |
1802 | linkType: hard | 1813 | linkType: hard |
1803 | 1814 | ||
1804 | "@lezer/generator@npm:^1.2.2": | 1815 | "@lezer/generator@npm:^1.3.0": |
1805 | version: 1.2.2 | 1816 | version: 1.3.0 |
1806 | resolution: "@lezer/generator@npm:1.2.2" | 1817 | resolution: "@lezer/generator@npm:1.3.0" |
1807 | dependencies: | 1818 | dependencies: |
1808 | "@lezer/common": "npm:^1.0.2" | 1819 | "@lezer/common": "npm:^1.0.2" |
1809 | "@lezer/lr": "npm:^1.3.0" | 1820 | "@lezer/lr": "npm:^1.3.0" |
1810 | bin: | 1821 | bin: |
1811 | lezer-generator: dist/lezer-generator.cjs | 1822 | lezer-generator: dist/lezer-generator.cjs |
1812 | checksum: d202bac5119f799f2b640d6d69317d2344cbe7bce23cfd3b2b540f4304f8e43383d80e4772eafb86ddd6faffcaf134074f854d5f2a109c4f5aab11b1576ab4c0 | 1823 | checksum: 42da63930b6a7724e24b30141b958bb3016357bc50bb0dcc468f224a329110dd82d9423589d038d98e895abc00babc8ddeb1f805e9d1d18e780996f20e3d04a1 |
1813 | languageName: node | 1824 | languageName: node |
1814 | linkType: hard | 1825 | linkType: hard |
1815 | 1826 | ||
1816 | "@lezer/highlight@npm:^1.0.0, @lezer/highlight@npm:^1.1.3": | 1827 | "@lezer/highlight@npm:^1.0.0, @lezer/highlight@npm:^1.1.6": |
1817 | version: 1.1.3 | 1828 | version: 1.1.6 |
1818 | resolution: "@lezer/highlight@npm:1.1.3" | 1829 | resolution: "@lezer/highlight@npm:1.1.6" |
1819 | dependencies: | 1830 | dependencies: |
1820 | "@lezer/common": "npm:^1.0.0" | 1831 | "@lezer/common": "npm:^1.0.0" |
1821 | checksum: d74ec9ff4fd276c2ef771964eb8a19c07016afd22b945b38190b95eb19c85be2cd3674dcc1c213911087ea184b42b372dc07fcb5b7ab04b321c02c19f6fedcc9 | 1832 | checksum: fc872ec55c6109f1fff8a8653c22ba46454ba09abb3df4bfac899882329fa3f26240332c781326f94f9baadceb3f174b1d35ec5e1e9dc5fcb883725e8c8fcc19 |
1822 | languageName: node | 1833 | languageName: node |
1823 | linkType: hard | 1834 | linkType: hard |
1824 | 1835 | ||
1825 | "@lezer/lr@npm:^1.0.0, @lezer/lr@npm:^1.3.0, @lezer/lr@npm:^1.3.3": | 1836 | "@lezer/lr@npm:^1.0.0, @lezer/lr@npm:^1.3.0, @lezer/lr@npm:^1.3.6": |
1826 | version: 1.3.3 | 1837 | version: 1.3.6 |
1827 | resolution: "@lezer/lr@npm:1.3.3" | 1838 | resolution: "@lezer/lr@npm:1.3.6" |
1828 | dependencies: | 1839 | dependencies: |
1829 | "@lezer/common": "npm:^1.0.0" | 1840 | "@lezer/common": "npm:^1.0.0" |
1830 | checksum: c0fd653f4bdb1c6f5b4735cd279c2cdc9db3d1db52683f328c9b1b93ac5bd09b5c59115d4f2d569b2c8f2a853ff0c5868ae4ea347fb18cf17e9cdcd4a6c04152 | 1841 | checksum: 91f07a42c3fbe9a4e5d964f402a20496a06894fe468764d7629c880b27dfbd7d6a8fe0b6a15bc45ce5a3dc448c20b06d767f6997747d4277d59474300fb522bc |
1831 | languageName: node | 1842 | languageName: node |
1832 | linkType: hard | 1843 | linkType: hard |
1833 | 1844 | ||
@@ -1838,15 +1849,15 @@ __metadata: | |||
1838 | languageName: node | 1849 | languageName: node |
1839 | linkType: hard | 1850 | linkType: hard |
1840 | 1851 | ||
1841 | "@mui/base@npm:5.0.0-alpha.116": | 1852 | "@mui/base@npm:5.0.0-beta.4": |
1842 | version: 5.0.0-alpha.116 | 1853 | version: 5.0.0-beta.4 |
1843 | resolution: "@mui/base@npm:5.0.0-alpha.116" | 1854 | resolution: "@mui/base@npm:5.0.0-beta.4" |
1844 | dependencies: | 1855 | dependencies: |
1845 | "@babel/runtime": "npm:^7.20.7" | 1856 | "@babel/runtime": "npm:^7.21.0" |
1846 | "@emotion/is-prop-valid": "npm:^1.2.0" | 1857 | "@emotion/is-prop-valid": "npm:^1.2.1" |
1847 | "@mui/types": "npm:^7.2.3" | 1858 | "@mui/types": "npm:^7.2.4" |
1848 | "@mui/utils": "npm:^5.11.7" | 1859 | "@mui/utils": "npm:^5.13.1" |
1849 | "@popperjs/core": "npm:^2.11.6" | 1860 | "@popperjs/core": "npm:^2.11.8" |
1850 | clsx: "npm:^1.2.1" | 1861 | clsx: "npm:^1.2.1" |
1851 | prop-types: "npm:^15.8.1" | 1862 | prop-types: "npm:^15.8.1" |
1852 | react-is: "npm:^18.2.0" | 1863 | react-is: "npm:^18.2.0" |
@@ -1857,22 +1868,22 @@ __metadata: | |||
1857 | peerDependenciesMeta: | 1868 | peerDependenciesMeta: |
1858 | "@types/react": | 1869 | "@types/react": |
1859 | optional: true | 1870 | optional: true |
1860 | checksum: 183dfc581e8a349a92ce44a7775173b0c3037885df986bf09ae07f922f6e9445406a4b9b8da59dd6cf23beb3bef8d80a97aa23e3ccfded986321a38a050c1cd6 | 1871 | checksum: e1658227e72881f7b5d34b56bf4dc475f1344efd1ce6c6535dab181d7305e0789b1d58180ac66973c88e1dd64c11c845fb575bc90d6f3ef8c8899cda699559e9 |
1861 | languageName: node | 1872 | languageName: node |
1862 | linkType: hard | 1873 | linkType: hard |
1863 | 1874 | ||
1864 | "@mui/core-downloads-tracker@npm:^5.11.7": | 1875 | "@mui/core-downloads-tracker@npm:^5.13.4": |
1865 | version: 5.11.7 | 1876 | version: 5.13.4 |
1866 | resolution: "@mui/core-downloads-tracker@npm:5.11.7" | 1877 | resolution: "@mui/core-downloads-tracker@npm:5.13.4" |
1867 | checksum: 23d69fcdfe089e08edceb5692c221266f83bc2f1d62070e7d2fa9acd3f62bb02fc4bf48106ee82035da068da86b74d3b6b75b33ff31ed1cf2735d5db39fe9879 | 1878 | checksum: 77457f55fc547a0f2080c787cfbfb1178987743bea5675c45d2aea99b4bcacbd5f893928b0379c8da1f97f89a471a52a7318a073a202f9fe429b2a34ca448774 |
1868 | languageName: node | 1879 | languageName: node |
1869 | linkType: hard | 1880 | linkType: hard |
1870 | 1881 | ||
1871 | "@mui/icons-material@npm:5.11.0": | 1882 | "@mui/icons-material@npm:5.11.16": |
1872 | version: 5.11.0 | 1883 | version: 5.11.16 |
1873 | resolution: "@mui/icons-material@npm:5.11.0" | 1884 | resolution: "@mui/icons-material@npm:5.11.16" |
1874 | dependencies: | 1885 | dependencies: |
1875 | "@babel/runtime": "npm:^7.20.6" | 1886 | "@babel/runtime": "npm:^7.21.0" |
1876 | peerDependencies: | 1887 | peerDependencies: |
1877 | "@mui/material": ^5.0.0 | 1888 | "@mui/material": ^5.0.0 |
1878 | "@types/react": ^17.0.0 || ^18.0.0 | 1889 | "@types/react": ^17.0.0 || ^18.0.0 |
@@ -1880,23 +1891,23 @@ __metadata: | |||
1880 | peerDependenciesMeta: | 1891 | peerDependenciesMeta: |
1881 | "@types/react": | 1892 | "@types/react": |
1882 | optional: true | 1893 | optional: true |
1883 | checksum: b6d7e860415ed1870b438afc7f79339a1f828b0103d852dea040b5b2195e9c229bc03c1a4902fa47a47483f77a6a61e906d30e0e8d037bfef3b302b951372571 | 1894 | checksum: b630053414ec48fc66b316822b92d3c18946906c7f8dac710a59ecea59a0db6258903de677ff4e6737f1a42308d45b8317dc530e526fef477ede184a72050be6 |
1884 | languageName: node | 1895 | languageName: node |
1885 | linkType: hard | 1896 | linkType: hard |
1886 | 1897 | ||
1887 | "@mui/material@npm:5.11.7": | 1898 | "@mui/material@npm:5.13.5": |
1888 | version: 5.11.7 | 1899 | version: 5.13.5 |
1889 | resolution: "@mui/material@npm:5.11.7" | 1900 | resolution: "@mui/material@npm:5.13.5" |
1890 | dependencies: | 1901 | dependencies: |
1891 | "@babel/runtime": "npm:^7.20.7" | 1902 | "@babel/runtime": "npm:^7.21.0" |
1892 | "@mui/base": "npm:5.0.0-alpha.116" | 1903 | "@mui/base": "npm:5.0.0-beta.4" |
1893 | "@mui/core-downloads-tracker": "npm:^5.11.7" | 1904 | "@mui/core-downloads-tracker": "npm:^5.13.4" |
1894 | "@mui/system": "npm:^5.11.7" | 1905 | "@mui/system": "npm:^5.13.5" |
1895 | "@mui/types": "npm:^7.2.3" | 1906 | "@mui/types": "npm:^7.2.4" |
1896 | "@mui/utils": "npm:^5.11.7" | 1907 | "@mui/utils": "npm:^5.13.1" |
1897 | "@types/react-transition-group": "npm:^4.4.5" | 1908 | "@types/react-transition-group": "npm:^4.4.6" |
1898 | clsx: "npm:^1.2.1" | 1909 | clsx: "npm:^1.2.1" |
1899 | csstype: "npm:^3.1.1" | 1910 | csstype: "npm:^3.1.2" |
1900 | prop-types: "npm:^15.8.1" | 1911 | prop-types: "npm:^15.8.1" |
1901 | react-is: "npm:^18.2.0" | 1912 | react-is: "npm:^18.2.0" |
1902 | react-transition-group: "npm:^4.4.5" | 1913 | react-transition-group: "npm:^4.4.5" |
@@ -1913,16 +1924,16 @@ __metadata: | |||
1913 | optional: true | 1924 | optional: true |
1914 | "@types/react": | 1925 | "@types/react": |
1915 | optional: true | 1926 | optional: true |
1916 | checksum: a123f3466775c50bd87c9238c187a3d4ca05806d18c93352e167c331ae8405780b8dba394917e40226425c70aa7f8192c4e7057e1b4fc8174d7d0e0c85ca98e5 | 1927 | checksum: 84a32505ce224507820c5364627a3879b2ae96bda1235ee482c549e097af6df6918ac2c3bc39b52d7a673d30e93e1bafe6357691798c0081222135e57c1d7884 |
1917 | languageName: node | 1928 | languageName: node |
1918 | linkType: hard | 1929 | linkType: hard |
1919 | 1930 | ||
1920 | "@mui/private-theming@npm:^5.11.7": | 1931 | "@mui/private-theming@npm:^5.13.1": |
1921 | version: 5.11.7 | 1932 | version: 5.13.1 |
1922 | resolution: "@mui/private-theming@npm:5.11.7" | 1933 | resolution: "@mui/private-theming@npm:5.13.1" |
1923 | dependencies: | 1934 | dependencies: |
1924 | "@babel/runtime": "npm:^7.20.7" | 1935 | "@babel/runtime": "npm:^7.21.0" |
1925 | "@mui/utils": "npm:^5.11.7" | 1936 | "@mui/utils": "npm:^5.13.1" |
1926 | prop-types: "npm:^15.8.1" | 1937 | prop-types: "npm:^15.8.1" |
1927 | peerDependencies: | 1938 | peerDependencies: |
1928 | "@types/react": ^17.0.0 || ^18.0.0 | 1939 | "@types/react": ^17.0.0 || ^18.0.0 |
@@ -1930,17 +1941,17 @@ __metadata: | |||
1930 | peerDependenciesMeta: | 1941 | peerDependenciesMeta: |
1931 | "@types/react": | 1942 | "@types/react": |
1932 | optional: true | 1943 | optional: true |
1933 | checksum: d6838f349a18eb35019b12151d12882c8da67968bcdf1570b4a3b989f35939ed917239ef6fd486161b129f8e97bc0fd9a18b451906c9572dc43e17e312cd00de | 1944 | checksum: 122b4b3e46ac38d86554c699f6af3c24ebc79768517374b52ad27bc1d34d0deec6fcd06ba7f2f6159cc9490596c34ca9bbb90fb58e279db06b99bd837a777738 |
1934 | languageName: node | 1945 | languageName: node |
1935 | linkType: hard | 1946 | linkType: hard |
1936 | 1947 | ||
1937 | "@mui/styled-engine@npm:^5.11.0": | 1948 | "@mui/styled-engine@npm:^5.13.2": |
1938 | version: 5.11.0 | 1949 | version: 5.13.2 |
1939 | resolution: "@mui/styled-engine@npm:5.11.0" | 1950 | resolution: "@mui/styled-engine@npm:5.13.2" |
1940 | dependencies: | 1951 | dependencies: |
1941 | "@babel/runtime": "npm:^7.20.6" | 1952 | "@babel/runtime": "npm:^7.21.0" |
1942 | "@emotion/cache": "npm:^11.10.5" | 1953 | "@emotion/cache": "npm:^11.11.0" |
1943 | csstype: "npm:^3.1.1" | 1954 | csstype: "npm:^3.1.2" |
1944 | prop-types: "npm:^15.8.1" | 1955 | prop-types: "npm:^15.8.1" |
1945 | peerDependencies: | 1956 | peerDependencies: |
1946 | "@emotion/react": ^11.4.1 | 1957 | "@emotion/react": ^11.4.1 |
@@ -1951,21 +1962,21 @@ __metadata: | |||
1951 | optional: true | 1962 | optional: true |
1952 | "@emotion/styled": | 1963 | "@emotion/styled": |
1953 | optional: true | 1964 | optional: true |
1954 | checksum: c070526fec81d7c280b1a797106b872795e3869d52813aa55bc3d133e87656babbd6774ae97ff0c2c058606a551dfd0a5ee56f4e2aeca43068f97238fd296b1e | 1965 | checksum: 4a2b47893bc52e0321e1dfd034999bd817820f6bff53ccbb714174f620978443c1e09dad4773ab7269a40a66550256792f25a430e0f3176b624e3a74987b5ec2 |
1955 | languageName: node | 1966 | languageName: node |
1956 | linkType: hard | 1967 | linkType: hard |
1957 | 1968 | ||
1958 | "@mui/system@npm:^5.11.7": | 1969 | "@mui/system@npm:^5.13.5": |
1959 | version: 5.11.7 | 1970 | version: 5.13.5 |
1960 | resolution: "@mui/system@npm:5.11.7" | 1971 | resolution: "@mui/system@npm:5.13.5" |
1961 | dependencies: | 1972 | dependencies: |
1962 | "@babel/runtime": "npm:^7.20.7" | 1973 | "@babel/runtime": "npm:^7.21.0" |
1963 | "@mui/private-theming": "npm:^5.11.7" | 1974 | "@mui/private-theming": "npm:^5.13.1" |
1964 | "@mui/styled-engine": "npm:^5.11.0" | 1975 | "@mui/styled-engine": "npm:^5.13.2" |
1965 | "@mui/types": "npm:^7.2.3" | 1976 | "@mui/types": "npm:^7.2.4" |
1966 | "@mui/utils": "npm:^5.11.7" | 1977 | "@mui/utils": "npm:^5.13.1" |
1967 | clsx: "npm:^1.2.1" | 1978 | clsx: "npm:^1.2.1" |
1968 | csstype: "npm:^3.1.1" | 1979 | csstype: "npm:^3.1.2" |
1969 | prop-types: "npm:^15.8.1" | 1980 | prop-types: "npm:^15.8.1" |
1970 | peerDependencies: | 1981 | peerDependencies: |
1971 | "@emotion/react": ^11.5.0 | 1982 | "@emotion/react": ^11.5.0 |
@@ -1979,34 +1990,34 @@ __metadata: | |||
1979 | optional: true | 1990 | optional: true |
1980 | "@types/react": | 1991 | "@types/react": |
1981 | optional: true | 1992 | optional: true |
1982 | checksum: 754add2a130f5e3330cdf7a7fc11e794faab56177c59418295547c130d5fe0bf92165c3d0e1c1a3a4f6a09d819c48650893860fb80ee31001e9dbf2221cf7d30 | 1993 | checksum: 09c215386c094a2708441a4f0ae7003e30e43331c9f6cf0964c25946a7ad17f7371062dc9ce00c7642f3d374b6eaf583bec8737d07beb2d6bd9e9aecf4b62565 |
1983 | languageName: node | 1994 | languageName: node |
1984 | linkType: hard | 1995 | linkType: hard |
1985 | 1996 | ||
1986 | "@mui/types@npm:^7.2.3": | 1997 | "@mui/types@npm:^7.2.4": |
1987 | version: 7.2.3 | 1998 | version: 7.2.4 |
1988 | resolution: "@mui/types@npm:7.2.3" | 1999 | resolution: "@mui/types@npm:7.2.4" |
1989 | peerDependencies: | 2000 | peerDependencies: |
1990 | "@types/react": "*" | 2001 | "@types/react": "*" |
1991 | peerDependenciesMeta: | 2002 | peerDependenciesMeta: |
1992 | "@types/react": | 2003 | "@types/react": |
1993 | optional: true | 2004 | optional: true |
1994 | checksum: f5b074ecdfda55bae66a344e1fd1247920c18ee4548589528643a460de2c9409f6d9ff8ab59c5efa4ff7513d5d83c7a7240613e7e5f36ec71139a0da262cb237 | 2005 | checksum: 651ad27d90e052ede4698bea349728bfdd4c415aebcf718e4fb401a281956a33c1748743fe70e5664e75585db94555077658ccf33e6a194b7ee26e44d8e6da8e |
1995 | languageName: node | 2006 | languageName: node |
1996 | linkType: hard | 2007 | linkType: hard |
1997 | 2008 | ||
1998 | "@mui/utils@npm:^5.11.7": | 2009 | "@mui/utils@npm:^5.13.1": |
1999 | version: 5.11.7 | 2010 | version: 5.13.1 |
2000 | resolution: "@mui/utils@npm:5.11.7" | 2011 | resolution: "@mui/utils@npm:5.13.1" |
2001 | dependencies: | 2012 | dependencies: |
2002 | "@babel/runtime": "npm:^7.20.7" | 2013 | "@babel/runtime": "npm:^7.21.0" |
2003 | "@types/prop-types": "npm:^15.7.5" | 2014 | "@types/prop-types": "npm:^15.7.5" |
2004 | "@types/react-is": "npm:^16.7.1 || ^17.0.0" | 2015 | "@types/react-is": "npm:^18.2.0" |
2005 | prop-types: "npm:^15.8.1" | 2016 | prop-types: "npm:^15.8.1" |
2006 | react-is: "npm:^18.2.0" | 2017 | react-is: "npm:^18.2.0" |
2007 | peerDependencies: | 2018 | peerDependencies: |
2008 | react: ^17.0.0 || ^18.0.0 | 2019 | react: ^17.0.0 || ^18.0.0 |
2009 | checksum: df465709713a6e51d7941694741237b0519869856093086e4dba8d8fc512733802afa6407cdc01192550e751f923a15c66f8b402e82e205c1fa910e36ba7ab37 | 2020 | checksum: 37870c7e05bba7b210466483541b948dd2d8b128ef6e1f025d7694bc23fef2a7cbae547df151f82d67b35c741086c198767ea78b2be66a05b7b8c2d4eab20b98 |
2010 | languageName: node | 2021 | languageName: node |
2011 | linkType: hard | 2022 | linkType: hard |
2012 | 2023 | ||
@@ -2037,23 +2048,19 @@ __metadata: | |||
2037 | languageName: node | 2048 | languageName: node |
2038 | linkType: hard | 2049 | linkType: hard |
2039 | 2050 | ||
2040 | "@npmcli/fs@npm:^1.0.0": | 2051 | "@npmcli/fs@npm:^3.1.0": |
2041 | version: 1.1.0 | 2052 | version: 3.1.0 |
2042 | resolution: "@npmcli/fs@npm:1.1.0" | 2053 | resolution: "@npmcli/fs@npm:3.1.0" |
2043 | dependencies: | 2054 | dependencies: |
2044 | "@gar/promisify": "npm:^1.0.1" | ||
2045 | semver: "npm:^7.3.5" | 2055 | semver: "npm:^7.3.5" |
2046 | checksum: adf61b4c4708d6f070c50ed08e112cb8ea3fa05a1dc674e8e65c2c01485cc68053c1b0a5b5d6dbf75b49bb843cde050dcf50278ecd3890ef97c016b9d404ac44 | 2056 | checksum: c17d9f6a57aada6db66302ad0c02ad5df2984333385ba0a7883718cbc513f81ce2d4e41d3b949b05c387c2a49a2fdbfa0808b3cc640d0c1b9dce72a864811a30 |
2047 | languageName: node | 2057 | languageName: node |
2048 | linkType: hard | 2058 | linkType: hard |
2049 | 2059 | ||
2050 | "@npmcli/move-file@npm:^1.0.1": | 2060 | "@pkgjs/parseargs@npm:^0.11.0": |
2051 | version: 1.1.2 | 2061 | version: 0.11.0 |
2052 | resolution: "@npmcli/move-file@npm:1.1.2" | 2062 | resolution: "@pkgjs/parseargs@npm:0.11.0" |
2053 | dependencies: | 2063 | checksum: 9e828530eb8d3e5370972114de393d9f9cfd368f8a7b541fd0d4497c2f046245e907e05f4e07259bdf91ade8f7a0806f36a67099fbf20f62496dc00b843e2252 |
2054 | mkdirp: "npm:^1.0.4" | ||
2055 | rimraf: "npm:^3.0.2" | ||
2056 | checksum: 6fdcd5e51041da8d3d84f6ba89ff290900bf3adb736816c4b441b1fc8a41045db7253860c54a4ccdeb0e84e1c9548551bfb893f7392423de752a016a2a16952a | ||
2057 | languageName: node | 2064 | languageName: node |
2058 | linkType: hard | 2065 | linkType: hard |
2059 | 2066 | ||
@@ -2071,10 +2078,10 @@ __metadata: | |||
2071 | languageName: node | 2078 | languageName: node |
2072 | linkType: hard | 2079 | linkType: hard |
2073 | 2080 | ||
2074 | "@popperjs/core@npm:^2.11.6": | 2081 | "@popperjs/core@npm:^2.11.8": |
2075 | version: 2.11.6 | 2082 | version: 2.11.8 |
2076 | resolution: "@popperjs/core@npm:2.11.6" | 2083 | resolution: "@popperjs/core@npm:2.11.8" |
2077 | checksum: 39ed8d02c4d16dbe90bc537f7d4702320a95276d1fd902f74a48f544c6214a89a51a13f81603cb08786156350734f54834c41e011857637ae25340519d6160df | 2084 | checksum: 5c180df0c3fab5f4ebb81c79898186c0df3e13d72e27fe49d2a80873a27d8e12a16866d70da648d3d34caebce638fdb1a0730d1c1c5a8a40451db0160b92b375 |
2078 | languageName: node | 2085 | languageName: node |
2079 | linkType: hard | 2086 | linkType: hard |
2080 | 2087 | ||
@@ -2082,71 +2089,71 @@ __metadata: | |||
2082 | version: 0.0.0-use.local | 2089 | version: 0.0.0-use.local |
2083 | resolution: "@refinery/frontend@workspace:subprojects/frontend" | 2090 | resolution: "@refinery/frontend@workspace:subprojects/frontend" |
2084 | dependencies: | 2091 | dependencies: |
2085 | "@codemirror/autocomplete": "npm:^6.4.0" | 2092 | "@codemirror/autocomplete": "npm:^6.8.0" |
2086 | "@codemirror/commands": "npm:^6.2.0" | 2093 | "@codemirror/commands": "npm:^6.2.4" |
2087 | "@codemirror/language": "npm:^6.4.0" | 2094 | "@codemirror/language": "npm:^6.8.0" |
2088 | "@codemirror/lint": "npm:^6.1.0" | 2095 | "@codemirror/lint": "npm:^6.2.2" |
2089 | "@codemirror/search": "npm:^6.2.3" | 2096 | "@codemirror/search": "npm:^6.5.0" |
2090 | "@codemirror/state": "npm:^6.2.0" | 2097 | "@codemirror/state": "npm:^6.2.1" |
2091 | "@codemirror/view": "npm:^6.7.3" | 2098 | "@codemirror/view": "npm:^6.13.2" |
2092 | "@emotion/react": "npm:^11.10.5" | 2099 | "@emotion/react": "npm:^11.11.1" |
2093 | "@emotion/styled": "npm:^11.10.5" | 2100 | "@emotion/styled": "npm:^11.11.0" |
2094 | "@fontsource/inter": "npm:^4.5.15" | 2101 | "@fontsource-variable/inter": "npm:^5.0.3" |
2095 | "@fontsource/jetbrains-mono": "npm:^4.5.12" | 2102 | "@fontsource-variable/jetbrains-mono": "npm:^5.0.3" |
2096 | "@lezer/common": "npm:^1.0.2" | 2103 | "@lezer/common": "npm:^1.0.3" |
2097 | "@lezer/generator": "npm:^1.2.2" | 2104 | "@lezer/generator": "npm:^1.3.0" |
2098 | "@lezer/highlight": "npm:^1.1.3" | 2105 | "@lezer/highlight": "npm:^1.1.6" |
2099 | "@lezer/lr": "npm:^1.3.3" | 2106 | "@lezer/lr": "npm:^1.3.6" |
2100 | "@material-icons/svg": "npm:^1.0.33" | 2107 | "@material-icons/svg": "npm:^1.0.33" |
2101 | "@mui/icons-material": "npm:5.11.0" | 2108 | "@mui/icons-material": "npm:5.11.16" |
2102 | "@mui/material": "npm:5.11.7" | 2109 | "@mui/material": "npm:5.13.5" |
2103 | "@tsconfig/node18-strictest-esm": "npm:^1.0.1" | 2110 | "@types/eslint": "npm:^8.40.2" |
2104 | "@types/eslint": "npm:^8.21.0" | ||
2105 | "@types/html-minifier-terser": "npm:^7.0.0" | 2111 | "@types/html-minifier-terser": "npm:^7.0.0" |
2106 | "@types/lodash-es": "npm:^4.17.6" | 2112 | "@types/lodash-es": "npm:^4.17.7" |
2107 | "@types/micromatch": "npm:^4.0.2" | 2113 | "@types/micromatch": "npm:^4.0.2" |
2108 | "@types/ms": "npm:^0.7.31" | 2114 | "@types/ms": "npm:^0.7.31" |
2109 | "@types/node": "npm:^18.11.18" | 2115 | "@types/node": "npm:^18.16.18" |
2110 | "@types/prettier": "npm:^2.7.2" | 2116 | "@types/prettier": "npm:^2.7.3" |
2111 | "@types/react": "npm:^18.0.27" | 2117 | "@types/react": "npm:^18.2.12" |
2112 | "@types/react-dom": "npm:^18.0.10" | 2118 | "@types/react-dom": "npm:^18.2.5" |
2113 | "@typescript-eslint/eslint-plugin": "npm:^5.50.0" | 2119 | "@typescript-eslint/eslint-plugin": "npm:^5.59.11" |
2114 | "@typescript-eslint/parser": "npm:^5.50.0" | 2120 | "@typescript-eslint/parser": "npm:^5.59.11" |
2115 | "@vitejs/plugin-react-swc": "npm:^3.1.0" | 2121 | "@vitejs/plugin-react-swc": "npm:^3.3.2" |
2116 | "@xstate/cli": "npm:^0.4.2" | 2122 | "@xstate/cli": "npm:^0.5.1" |
2117 | ansi-styles: "npm:^6.2.1" | 2123 | ansi-styles: "npm:^6.2.1" |
2118 | cross-env: "npm:^7.0.3" | 2124 | cross-env: "npm:^7.0.3" |
2125 | csstype: "npm:^3.1.2" | ||
2119 | escape-string-regexp: "npm:^5.0.0" | 2126 | escape-string-regexp: "npm:^5.0.0" |
2120 | eslint: "npm:^8.33.0" | 2127 | eslint: "npm:^8.43.0" |
2121 | eslint-config-airbnb: "npm:^19.0.4" | 2128 | eslint-config-airbnb: "npm:^19.0.4" |
2122 | eslint-config-airbnb-typescript: "npm:^17.0.0" | 2129 | eslint-config-airbnb-typescript: "npm:^17.0.0" |
2123 | eslint-config-prettier: "npm:^8.6.0" | 2130 | eslint-config-prettier: "npm:^8.8.0" |
2124 | eslint-import-resolver-typescript: "npm:^3.5.3" | 2131 | eslint-import-resolver-typescript: "npm:^3.5.5" |
2125 | eslint-plugin-import: "npm:^2.27.5" | 2132 | eslint-plugin-import: "npm:^2.27.5" |
2126 | eslint-plugin-jsx-a11y: "npm:^6.7.1" | 2133 | eslint-plugin-jsx-a11y: "npm:^6.7.1" |
2127 | eslint-plugin-mobx: "npm:^0.0.9" | 2134 | eslint-plugin-mobx: "npm:^0.0.9" |
2128 | eslint-plugin-prettier: "npm:^4.2.1" | 2135 | eslint-plugin-prettier: "npm:^4.2.1" |
2129 | eslint-plugin-react: "npm:^7.32.2" | 2136 | eslint-plugin-react: "npm:^7.32.2" |
2130 | eslint-plugin-react-hooks: "npm:^4.6.0" | 2137 | eslint-plugin-react-hooks: "npm:^4.6.0" |
2131 | html-minifier-terser: "npm:^7.1.0" | 2138 | html-minifier-terser: "npm:^7.2.0" |
2132 | lodash-es: "npm:^4.17.21" | 2139 | lodash-es: "npm:^4.17.21" |
2133 | loglevel: "npm:^1.8.1" | 2140 | loglevel: "npm:^1.8.1" |
2134 | loglevel-plugin-prefix: "npm:^0.8.4" | 2141 | loglevel-plugin-prefix: "npm:^0.8.4" |
2135 | micromatch: "npm:^4.0.5" | 2142 | micromatch: "npm:^4.0.5" |
2136 | mobx: "npm:^6.7.0" | 2143 | mobx: "npm:^6.9.0" |
2137 | mobx-react-lite: "npm:^3.4.0" | 2144 | mobx-react-lite: "npm:^3.4.3" |
2138 | ms: "npm:^2.1.3" | 2145 | ms: "npm:^2.1.3" |
2139 | nanoid: "npm:^4.0.0" | 2146 | nanoid: "npm:^4.0.2" |
2140 | notistack: "npm:^2.0.8" | 2147 | notistack: "npm:^3.0.1" |
2141 | prettier: "npm:^2.8.3" | 2148 | prettier: "npm:^2.8.8" |
2142 | react: "npm:^18.2.0" | 2149 | react: "npm:^18.2.0" |
2143 | react-dom: "npm:^18.2.0" | 2150 | react-dom: "npm:^18.2.0" |
2144 | typescript: "npm:4.9.5" | 2151 | typescript: "npm:5.1.3" |
2145 | vite: "npm:^4.1.1" | 2152 | vite: "npm:^4.3.9" |
2146 | vite-plugin-pwa: "npm:^0.14.1" | 2153 | vite-plugin-pwa: "npm:^0.16.4" |
2147 | workbox-window: "npm:^6.5.4" | 2154 | workbox-window: "npm:^7.0.0" |
2148 | xstate: "npm:^4.35.4" | 2155 | xstate: "npm:^4.37.2" |
2149 | zod: "npm:^3.20.2" | 2156 | zod: "npm:^3.21.4" |
2150 | languageName: unknown | 2157 | languageName: unknown |
2151 | linkType: soft | 2158 | linkType: soft |
2152 | 2159 | ||
@@ -2154,8 +2161,8 @@ __metadata: | |||
2154 | version: 0.0.0-use.local | 2161 | version: 0.0.0-use.local |
2155 | resolution: "@refinery/root@workspace:." | 2162 | resolution: "@refinery/root@workspace:." |
2156 | dependencies: | 2163 | dependencies: |
2157 | eslint: "npm:^8.33.0" | 2164 | eslint: "npm:^8.43.0" |
2158 | typescript: "npm:4.9.5" | 2165 | typescript: "npm:5.1.3" |
2159 | languageName: unknown | 2166 | languageName: unknown |
2160 | linkType: soft | 2167 | linkType: soft |
2161 | 2168 | ||
@@ -2204,21 +2211,6 @@ __metadata: | |||
2204 | languageName: node | 2211 | languageName: node |
2205 | linkType: hard | 2212 | linkType: hard |
2206 | 2213 | ||
2207 | "@rollup/plugin-replace@npm:^5.0.1": | ||
2208 | version: 5.0.1 | ||
2209 | resolution: "@rollup/plugin-replace@npm:5.0.1" | ||
2210 | dependencies: | ||
2211 | "@rollup/pluginutils": "npm:^5.0.1" | ||
2212 | magic-string: "npm:^0.26.4" | ||
2213 | peerDependencies: | ||
2214 | rollup: ^1.20.0||^2.0.0||^3.0.0 | ||
2215 | peerDependenciesMeta: | ||
2216 | rollup: | ||
2217 | optional: true | ||
2218 | checksum: e7c8f3a221ac3c876c18743ff89d43e4e1221e5ad5e2b3d337dd6f3944cc89eb0ea22d4c92e697212ba15b30706508c48189424e82f75a8fcb4a80c499acbc75 | ||
2219 | languageName: node | ||
2220 | linkType: hard | ||
2221 | |||
2222 | "@rollup/pluginutils@npm:^3.1.0": | 2214 | "@rollup/pluginutils@npm:^3.1.0": |
2223 | version: 3.1.0 | 2215 | version: 3.1.0 |
2224 | resolution: "@rollup/pluginutils@npm:3.1.0" | 2216 | resolution: "@rollup/pluginutils@npm:3.1.0" |
@@ -2232,22 +2224,6 @@ __metadata: | |||
2232 | languageName: node | 2224 | languageName: node |
2233 | linkType: hard | 2225 | linkType: hard |
2234 | 2226 | ||
2235 | "@rollup/pluginutils@npm:^5.0.1": | ||
2236 | version: 5.0.2 | ||
2237 | resolution: "@rollup/pluginutils@npm:5.0.2" | ||
2238 | dependencies: | ||
2239 | "@types/estree": "npm:^1.0.0" | ||
2240 | estree-walker: "npm:^2.0.2" | ||
2241 | picomatch: "npm:^2.3.1" | ||
2242 | peerDependencies: | ||
2243 | rollup: ^1.20.0||^2.0.0||^3.0.0 | ||
2244 | peerDependenciesMeta: | ||
2245 | rollup: | ||
2246 | optional: true | ||
2247 | checksum: c8e01caaf5d63c23f82ad6a1402cd8878718b298c29e09e57592dfffa18e01c389242610c41cb608f429828d13ef0848ff83fa474bbfe568966a9a8b2e93d25a | ||
2248 | languageName: node | ||
2249 | linkType: hard | ||
2250 | |||
2251 | "@surma/rollup-plugin-off-main-thread@npm:^2.2.3": | 2227 | "@surma/rollup-plugin-off-main-thread@npm:^2.2.3": |
2252 | version: 2.2.3 | 2228 | version: 2.2.3 |
2253 | resolution: "@surma/rollup-plugin-off-main-thread@npm:2.2.3" | 2229 | resolution: "@surma/rollup-plugin-off-main-thread@npm:2.2.3" |
@@ -2260,90 +2236,92 @@ __metadata: | |||
2260 | languageName: node | 2236 | languageName: node |
2261 | linkType: hard | 2237 | linkType: hard |
2262 | 2238 | ||
2263 | "@swc/core-darwin-arm64@npm:1.3.32": | 2239 | "@swc/core-darwin-arm64@npm:1.3.64": |
2264 | version: 1.3.32 | 2240 | version: 1.3.64 |
2265 | resolution: "@swc/core-darwin-arm64@npm:1.3.32" | 2241 | resolution: "@swc/core-darwin-arm64@npm:1.3.64" |
2266 | conditions: os=darwin & cpu=arm64 | 2242 | conditions: os=darwin & cpu=arm64 |
2267 | languageName: node | 2243 | languageName: node |
2268 | linkType: hard | 2244 | linkType: hard |
2269 | 2245 | ||
2270 | "@swc/core-darwin-x64@npm:1.3.32": | 2246 | "@swc/core-darwin-x64@npm:1.3.64": |
2271 | version: 1.3.32 | 2247 | version: 1.3.64 |
2272 | resolution: "@swc/core-darwin-x64@npm:1.3.32" | 2248 | resolution: "@swc/core-darwin-x64@npm:1.3.64" |
2273 | conditions: os=darwin & cpu=x64 | 2249 | conditions: os=darwin & cpu=x64 |
2274 | languageName: node | 2250 | languageName: node |
2275 | linkType: hard | 2251 | linkType: hard |
2276 | 2252 | ||
2277 | "@swc/core-linux-arm-gnueabihf@npm:1.3.32": | 2253 | "@swc/core-linux-arm-gnueabihf@npm:1.3.64": |
2278 | version: 1.3.32 | 2254 | version: 1.3.64 |
2279 | resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.32" | 2255 | resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.64" |
2280 | conditions: os=linux & cpu=arm | 2256 | conditions: os=linux & cpu=arm |
2281 | languageName: node | 2257 | languageName: node |
2282 | linkType: hard | 2258 | linkType: hard |
2283 | 2259 | ||
2284 | "@swc/core-linux-arm64-gnu@npm:1.3.32": | 2260 | "@swc/core-linux-arm64-gnu@npm:1.3.64": |
2285 | version: 1.3.32 | 2261 | version: 1.3.64 |
2286 | resolution: "@swc/core-linux-arm64-gnu@npm:1.3.32" | 2262 | resolution: "@swc/core-linux-arm64-gnu@npm:1.3.64" |
2287 | conditions: os=linux & cpu=arm64 & libc=glibc | 2263 | conditions: os=linux & cpu=arm64 & libc=glibc |
2288 | languageName: node | 2264 | languageName: node |
2289 | linkType: hard | 2265 | linkType: hard |
2290 | 2266 | ||
2291 | "@swc/core-linux-arm64-musl@npm:1.3.32": | 2267 | "@swc/core-linux-arm64-musl@npm:1.3.64": |
2292 | version: 1.3.32 | 2268 | version: 1.3.64 |
2293 | resolution: "@swc/core-linux-arm64-musl@npm:1.3.32" | 2269 | resolution: "@swc/core-linux-arm64-musl@npm:1.3.64" |
2294 | conditions: os=linux & cpu=arm64 & libc=musl | 2270 | conditions: os=linux & cpu=arm64 & libc=musl |
2295 | languageName: node | 2271 | languageName: node |
2296 | linkType: hard | 2272 | linkType: hard |
2297 | 2273 | ||
2298 | "@swc/core-linux-x64-gnu@npm:1.3.32": | 2274 | "@swc/core-linux-x64-gnu@npm:1.3.64": |
2299 | version: 1.3.32 | 2275 | version: 1.3.64 |
2300 | resolution: "@swc/core-linux-x64-gnu@npm:1.3.32" | 2276 | resolution: "@swc/core-linux-x64-gnu@npm:1.3.64" |
2301 | conditions: os=linux & cpu=x64 & libc=glibc | 2277 | conditions: os=linux & cpu=x64 & libc=glibc |
2302 | languageName: node | 2278 | languageName: node |
2303 | linkType: hard | 2279 | linkType: hard |
2304 | 2280 | ||
2305 | "@swc/core-linux-x64-musl@npm:1.3.32": | 2281 | "@swc/core-linux-x64-musl@npm:1.3.64": |
2306 | version: 1.3.32 | 2282 | version: 1.3.64 |
2307 | resolution: "@swc/core-linux-x64-musl@npm:1.3.32" | 2283 | resolution: "@swc/core-linux-x64-musl@npm:1.3.64" |
2308 | conditions: os=linux & cpu=x64 & libc=musl | 2284 | conditions: os=linux & cpu=x64 & libc=musl |
2309 | languageName: node | 2285 | languageName: node |
2310 | linkType: hard | 2286 | linkType: hard |
2311 | 2287 | ||
2312 | "@swc/core-win32-arm64-msvc@npm:1.3.32": | 2288 | "@swc/core-win32-arm64-msvc@npm:1.3.64": |
2313 | version: 1.3.32 | 2289 | version: 1.3.64 |
2314 | resolution: "@swc/core-win32-arm64-msvc@npm:1.3.32" | 2290 | resolution: "@swc/core-win32-arm64-msvc@npm:1.3.64" |
2315 | conditions: os=win32 & cpu=arm64 | 2291 | conditions: os=win32 & cpu=arm64 |
2316 | languageName: node | 2292 | languageName: node |
2317 | linkType: hard | 2293 | linkType: hard |
2318 | 2294 | ||
2319 | "@swc/core-win32-ia32-msvc@npm:1.3.32": | 2295 | "@swc/core-win32-ia32-msvc@npm:1.3.64": |
2320 | version: 1.3.32 | 2296 | version: 1.3.64 |
2321 | resolution: "@swc/core-win32-ia32-msvc@npm:1.3.32" | 2297 | resolution: "@swc/core-win32-ia32-msvc@npm:1.3.64" |
2322 | conditions: os=win32 & cpu=ia32 | 2298 | conditions: os=win32 & cpu=ia32 |
2323 | languageName: node | 2299 | languageName: node |
2324 | linkType: hard | 2300 | linkType: hard |
2325 | 2301 | ||
2326 | "@swc/core-win32-x64-msvc@npm:1.3.32": | 2302 | "@swc/core-win32-x64-msvc@npm:1.3.64": |
2327 | version: 1.3.32 | 2303 | version: 1.3.64 |
2328 | resolution: "@swc/core-win32-x64-msvc@npm:1.3.32" | 2304 | resolution: "@swc/core-win32-x64-msvc@npm:1.3.64" |
2329 | conditions: os=win32 & cpu=x64 | 2305 | conditions: os=win32 & cpu=x64 |
2330 | languageName: node | 2306 | languageName: node |
2331 | linkType: hard | 2307 | linkType: hard |
2332 | 2308 | ||
2333 | "@swc/core@npm:^1.3.30": | 2309 | "@swc/core@npm:^1.3.61": |
2334 | version: 1.3.32 | 2310 | version: 1.3.64 |
2335 | resolution: "@swc/core@npm:1.3.32" | 2311 | resolution: "@swc/core@npm:1.3.64" |
2336 | dependencies: | 2312 | dependencies: |
2337 | "@swc/core-darwin-arm64": "npm:1.3.32" | 2313 | "@swc/core-darwin-arm64": "npm:1.3.64" |
2338 | "@swc/core-darwin-x64": "npm:1.3.32" | 2314 | "@swc/core-darwin-x64": "npm:1.3.64" |
2339 | "@swc/core-linux-arm-gnueabihf": "npm:1.3.32" | 2315 | "@swc/core-linux-arm-gnueabihf": "npm:1.3.64" |
2340 | "@swc/core-linux-arm64-gnu": "npm:1.3.32" | 2316 | "@swc/core-linux-arm64-gnu": "npm:1.3.64" |
2341 | "@swc/core-linux-arm64-musl": "npm:1.3.32" | 2317 | "@swc/core-linux-arm64-musl": "npm:1.3.64" |
2342 | "@swc/core-linux-x64-gnu": "npm:1.3.32" | 2318 | "@swc/core-linux-x64-gnu": "npm:1.3.64" |
2343 | "@swc/core-linux-x64-musl": "npm:1.3.32" | 2319 | "@swc/core-linux-x64-musl": "npm:1.3.64" |
2344 | "@swc/core-win32-arm64-msvc": "npm:1.3.32" | 2320 | "@swc/core-win32-arm64-msvc": "npm:1.3.64" |
2345 | "@swc/core-win32-ia32-msvc": "npm:1.3.32" | 2321 | "@swc/core-win32-ia32-msvc": "npm:1.3.64" |
2346 | "@swc/core-win32-x64-msvc": "npm:1.3.32" | 2322 | "@swc/core-win32-x64-msvc": "npm:1.3.64" |
2323 | peerDependencies: | ||
2324 | "@swc/helpers": ^0.5.0 | ||
2347 | dependenciesMeta: | 2325 | dependenciesMeta: |
2348 | "@swc/core-darwin-arm64": | 2326 | "@swc/core-darwin-arm64": |
2349 | optional: true | 2327 | optional: true |
@@ -2365,21 +2343,17 @@ __metadata: | |||
2365 | optional: true | 2343 | optional: true |
2366 | "@swc/core-win32-x64-msvc": | 2344 | "@swc/core-win32-x64-msvc": |
2367 | optional: true | 2345 | optional: true |
2368 | checksum: 546738f03411454070721ec64387761b0a817649d63c9328e5eed838f0104d4c5d79b8697bde73a20adc72eef9479715e374fad1687c2ed9dd5f1712f0591de9 | 2346 | peerDependenciesMeta: |
2369 | languageName: node | 2347 | "@swc/helpers": |
2370 | linkType: hard | 2348 | optional: true |
2371 | 2349 | checksum: 39f3a60e769f18497b1045aadf42a8aacfe19dace9963a75d771e254ccadbe54f7f755bb42e21e323fbe03ee51a4f581d2b09e8a31a76a4bb8014bc6535fed5f | |
2372 | "@tootallnate/once@npm:1": | ||
2373 | version: 1.1.2 | ||
2374 | resolution: "@tootallnate/once@npm:1.1.2" | ||
2375 | checksum: 6d907308b0b5eaa8536a862e4292ab506ec56eb3df9fc45c3fa84b66e7053a1508ba26a7d8345295f332a06a320b80ae09af03d167e4b4d2ef9e595d3a9fa492 | ||
2376 | languageName: node | 2350 | languageName: node |
2377 | linkType: hard | 2351 | linkType: hard |
2378 | 2352 | ||
2379 | "@tsconfig/node18-strictest-esm@npm:^1.0.1": | 2353 | "@tootallnate/once@npm:2": |
2380 | version: 1.0.1 | 2354 | version: 2.0.0 |
2381 | resolution: "@tsconfig/node18-strictest-esm@npm:1.0.1" | 2355 | resolution: "@tootallnate/once@npm:2.0.0" |
2382 | checksum: e60cd8fc182df4a1f982fed1efcefca660b44cae6740531aaf8b6e9d5e86409e7f81ec2d4e2f9f590eb6eb3cdb2024b81cd0863ceed69d12210ee7707dd10dc4 | 2356 | checksum: d9f7f2130a0a2e1ea50f3bc90b83a8b99c913bbb80d7a1706f7f4730292ef299d18443c3b57a42dfb17c6559c9085e13f751b1b6c969bcff7bee3eeaf9da4dec |
2383 | languageName: node | 2357 | languageName: node |
2384 | linkType: hard | 2358 | linkType: hard |
2385 | 2359 | ||
@@ -2390,17 +2364,17 @@ __metadata: | |||
2390 | languageName: node | 2364 | languageName: node |
2391 | linkType: hard | 2365 | linkType: hard |
2392 | 2366 | ||
2393 | "@types/eslint@npm:^8.21.0": | 2367 | "@types/eslint@npm:^8.40.2": |
2394 | version: 8.21.0 | 2368 | version: 8.40.2 |
2395 | resolution: "@types/eslint@npm:8.21.0" | 2369 | resolution: "@types/eslint@npm:8.40.2" |
2396 | dependencies: | 2370 | dependencies: |
2397 | "@types/estree": "npm:*" | 2371 | "@types/estree": "npm:*" |
2398 | "@types/json-schema": "npm:*" | 2372 | "@types/json-schema": "npm:*" |
2399 | checksum: ddb802f77b1a850666704019704588c0e3e1a5971865dc56a87b2722f3d5aa7290ccfff39ba59d7a13ee7c1c93150470029343e51b198a22d1596237fb9e5b95 | 2373 | checksum: 84f4da669a839830e3696494ec7ba659f7fa064eb87e3f1d4b60204b4db9c9093bbbd9f59b7bf46370bdba97cae0b959d4b2391c743d69297a8df5d100d35191 |
2400 | languageName: node | 2374 | languageName: node |
2401 | linkType: hard | 2375 | linkType: hard |
2402 | 2376 | ||
2403 | "@types/estree@npm:*, @types/estree@npm:^1.0.0": | 2377 | "@types/estree@npm:*": |
2404 | version: 1.0.0 | 2378 | version: 1.0.0 |
2405 | resolution: "@types/estree@npm:1.0.0" | 2379 | resolution: "@types/estree@npm:1.0.0" |
2406 | checksum: 474df434e3a469cb7a68d44c8b7ac3a21bca344fa3b49651c3451d0f3662ff0c3b2ba52149cbc5b9c9a9f3f1ac37958c163ef29b65a8b36fccb5ccb2acfc9b08 | 2380 | checksum: 474df434e3a469cb7a68d44c8b7ac3a21bca344fa3b49651c3451d0f3662ff0c3b2ba52149cbc5b9c9a9f3f1ac37958c163ef29b65a8b36fccb5ccb2acfc9b08 |
@@ -2435,12 +2409,12 @@ __metadata: | |||
2435 | languageName: node | 2409 | languageName: node |
2436 | linkType: hard | 2410 | linkType: hard |
2437 | 2411 | ||
2438 | "@types/lodash-es@npm:^4.17.6": | 2412 | "@types/lodash-es@npm:^4.17.7": |
2439 | version: 4.17.6 | 2413 | version: 4.17.7 |
2440 | resolution: "@types/lodash-es@npm:4.17.6" | 2414 | resolution: "@types/lodash-es@npm:4.17.7" |
2441 | dependencies: | 2415 | dependencies: |
2442 | "@types/lodash": "npm:*" | 2416 | "@types/lodash": "npm:*" |
2443 | checksum: 78b7a3b9626bce41ca3b04fce5df499a983cd2396c25bff0d86c1437de73f82d1bbe13ef025e1e9d1848233ba248d696b43f8c49e34cb14f68a44d93ae707d2c | 2417 | checksum: 4dfde517db4cfc7b25b5a20a0851244c0ca4aebbdae272eebe77a3f3388eae6a4f47d7850cca712e0256c033a30bfebd366948b4286743e20e2c862c7c3830ad |
2444 | languageName: node | 2418 | languageName: node |
2445 | linkType: hard | 2419 | linkType: hard |
2446 | 2420 | ||
@@ -2467,10 +2441,10 @@ __metadata: | |||
2467 | languageName: node | 2441 | languageName: node |
2468 | linkType: hard | 2442 | linkType: hard |
2469 | 2443 | ||
2470 | "@types/node@npm:*, @types/node@npm:^18.11.18": | 2444 | "@types/node@npm:*, @types/node@npm:^18.16.18": |
2471 | version: 18.11.18 | 2445 | version: 18.16.18 |
2472 | resolution: "@types/node@npm:18.11.18" | 2446 | resolution: "@types/node@npm:18.16.18" |
2473 | checksum: bd39552701928d4a1613bc46adf8b65f8212064c2b5475a67161b6c4cef21ddb0a5c2ba062673213f8f5301ef6e171241a9e274a9b59c9fc1f5e2b69764740eb | 2447 | checksum: b6097e7cd65bcfc9fefcf79c4e2360ed7d3dfb64f628a010c45303d56d41cef7f9b65289ad2a86c97f1b98fa26ea74126d8dc864582951166236814fd30395a5 |
2474 | languageName: node | 2448 | languageName: node |
2475 | linkType: hard | 2449 | linkType: hard |
2476 | 2450 | ||
@@ -2481,10 +2455,10 @@ __metadata: | |||
2481 | languageName: node | 2455 | languageName: node |
2482 | linkType: hard | 2456 | linkType: hard |
2483 | 2457 | ||
2484 | "@types/prettier@npm:^2.7.2": | 2458 | "@types/prettier@npm:^2.7.3": |
2485 | version: 2.7.2 | 2459 | version: 2.7.3 |
2486 | resolution: "@types/prettier@npm:2.7.2" | 2460 | resolution: "@types/prettier@npm:2.7.3" |
2487 | checksum: d4d09d291ec7017ed30cc2bac5a51dbd5de02e2d75389a4c724ac6c3d7bb99da3173f57247d832b8f83c154dc8006cbdc35e565c1f1bf6869718d25857e430db | 2461 | checksum: 940c06437f23a12b88ae7d36c40a35dd3ee8cc22f8bc1cba972bcc69904162331ef2fdfafc9cc46762475047194321c0c40ee9285e779353116018c1eeae2b4c |
2488 | languageName: node | 2462 | languageName: node |
2489 | linkType: hard | 2463 | linkType: hard |
2490 | 2464 | ||
@@ -2495,41 +2469,41 @@ __metadata: | |||
2495 | languageName: node | 2469 | languageName: node |
2496 | linkType: hard | 2470 | linkType: hard |
2497 | 2471 | ||
2498 | "@types/react-dom@npm:^18.0.10": | 2472 | "@types/react-dom@npm:^18.2.5": |
2499 | version: 18.0.10 | 2473 | version: 18.2.5 |
2500 | resolution: "@types/react-dom@npm:18.0.10" | 2474 | resolution: "@types/react-dom@npm:18.2.5" |
2501 | dependencies: | 2475 | dependencies: |
2502 | "@types/react": "npm:*" | 2476 | "@types/react": "npm:*" |
2503 | checksum: 2c191e8dbe394e0690f8e5caacdb5ef710491478a95ceefc97cc8697e6e7e02c6a2fc3562b37791f92a4c08a6a82dd9dc57d42e8f98bce5f7e7110965845c068 | 2477 | checksum: 7ae5eeb0c9c9aee7eaac10b2afe527774518a4c6e33c84822fc69911ac929c76bb2882585e9052f2ee99b9588924f05f5fd983bfe181b0385f290e5940a0a754 |
2504 | languageName: node | 2478 | languageName: node |
2505 | linkType: hard | 2479 | linkType: hard |
2506 | 2480 | ||
2507 | "@types/react-is@npm:^16.7.1 || ^17.0.0": | 2481 | "@types/react-is@npm:^18.2.0": |
2508 | version: 17.0.3 | 2482 | version: 18.2.0 |
2509 | resolution: "@types/react-is@npm:17.0.3" | 2483 | resolution: "@types/react-is@npm:18.2.0" |
2510 | dependencies: | 2484 | dependencies: |
2511 | "@types/react": "npm:*" | 2485 | "@types/react": "npm:*" |
2512 | checksum: bed46f5dfa83f5eac4ad2f40cd80cb68f80e93b7bfb01b2d7eae2fd84d0d46dd5b06dad264f4d71daeb0fe2d9e34db994d48fdfb46b87daaa71c8744a9bda121 | 2486 | checksum: 5e5f7c9ce0287ddfa83d39ea26bfab64eed0c75f862f65804de9667accfb18da356c3c2677e1e660206278d93bcc40f5904b47ec272a9d9cd640ceef224bcb4b |
2513 | languageName: node | 2487 | languageName: node |
2514 | linkType: hard | 2488 | linkType: hard |
2515 | 2489 | ||
2516 | "@types/react-transition-group@npm:^4.4.5": | 2490 | "@types/react-transition-group@npm:^4.4.6": |
2517 | version: 4.4.5 | 2491 | version: 4.4.6 |
2518 | resolution: "@types/react-transition-group@npm:4.4.5" | 2492 | resolution: "@types/react-transition-group@npm:4.4.6" |
2519 | dependencies: | 2493 | dependencies: |
2520 | "@types/react": "npm:*" | 2494 | "@types/react": "npm:*" |
2521 | checksum: 62b80b5b438a6d531ce614ddfbf63791de25e8ba22b071e73c37bd94688398f63e42dc0be3f2b3add4a14d20f322593f51cf329ba81ca3ebcaf414d27217c433 | 2495 | checksum: 67cb6a41704655d5cc1708952b13cbfad74911290928a78a0f27febd3798d2d2838fb501d54439ddac684cb08f26f47d8099f7a8028f52c67264226e105bb128 |
2522 | languageName: node | 2496 | languageName: node |
2523 | linkType: hard | 2497 | linkType: hard |
2524 | 2498 | ||
2525 | "@types/react@npm:*, @types/react@npm:^18.0.27": | 2499 | "@types/react@npm:*, @types/react@npm:^18.2.12": |
2526 | version: 18.0.27 | 2500 | version: 18.2.12 |
2527 | resolution: "@types/react@npm:18.0.27" | 2501 | resolution: "@types/react@npm:18.2.12" |
2528 | dependencies: | 2502 | dependencies: |
2529 | "@types/prop-types": "npm:*" | 2503 | "@types/prop-types": "npm:*" |
2530 | "@types/scheduler": "npm:*" | 2504 | "@types/scheduler": "npm:*" |
2531 | csstype: "npm:^3.0.2" | 2505 | csstype: "npm:^3.0.2" |
2532 | checksum: 75c0b64773dc36bd094b3cc7fff5fb4cc385f60d7696bec2e0243806de69f2a2e35bec25d31f51bbbd6681639d8682a2d6eb94379759c70afc2f3ef5f87927b5 | 2506 | checksum: 870d0ada47889869660333555d45e8d19befb267c2c0de95995df428a714e5ab71b8cda4b59b01ed0f586da8b9eb7e93cd2baa6212a6563ebc0f664e9160e297 |
2533 | languageName: node | 2507 | languageName: node |
2534 | linkType: hard | 2508 | linkType: hard |
2535 | 2509 | ||
@@ -2563,18 +2537,18 @@ __metadata: | |||
2563 | languageName: node | 2537 | languageName: node |
2564 | linkType: hard | 2538 | linkType: hard |
2565 | 2539 | ||
2566 | "@typescript-eslint/eslint-plugin@npm:^5.50.0": | 2540 | "@typescript-eslint/eslint-plugin@npm:^5.59.11": |
2567 | version: 5.50.0 | 2541 | version: 5.59.11 |
2568 | resolution: "@typescript-eslint/eslint-plugin@npm:5.50.0" | 2542 | resolution: "@typescript-eslint/eslint-plugin@npm:5.59.11" |
2569 | dependencies: | 2543 | dependencies: |
2570 | "@typescript-eslint/scope-manager": "npm:5.50.0" | 2544 | "@eslint-community/regexpp": "npm:^4.4.0" |
2571 | "@typescript-eslint/type-utils": "npm:5.50.0" | 2545 | "@typescript-eslint/scope-manager": "npm:5.59.11" |
2572 | "@typescript-eslint/utils": "npm:5.50.0" | 2546 | "@typescript-eslint/type-utils": "npm:5.59.11" |
2547 | "@typescript-eslint/utils": "npm:5.59.11" | ||
2573 | debug: "npm:^4.3.4" | 2548 | debug: "npm:^4.3.4" |
2574 | grapheme-splitter: "npm:^1.0.4" | 2549 | grapheme-splitter: "npm:^1.0.4" |
2575 | ignore: "npm:^5.2.0" | 2550 | ignore: "npm:^5.2.0" |
2576 | natural-compare-lite: "npm:^1.4.0" | 2551 | natural-compare-lite: "npm:^1.4.0" |
2577 | regexpp: "npm:^3.2.0" | ||
2578 | semver: "npm:^7.3.7" | 2552 | semver: "npm:^7.3.7" |
2579 | tsutils: "npm:^3.21.0" | 2553 | tsutils: "npm:^3.21.0" |
2580 | peerDependencies: | 2554 | peerDependencies: |
@@ -2583,43 +2557,43 @@ __metadata: | |||
2583 | peerDependenciesMeta: | 2557 | peerDependenciesMeta: |
2584 | typescript: | 2558 | typescript: |
2585 | optional: true | 2559 | optional: true |
2586 | checksum: 92b4c1747ddf077214fe1860c64474153966ef38ddc49713a929bfa0f11853c07b41621a5105c8a453c70f6cb993f82245af3c4b95a95ff748f7fe453a530095 | 2560 | checksum: 948e8c47bece0b81718f1423930376ea81fe95009c6175fdffef924773b0cece38737907f90de939a12eb802102b0ccc901b3c8f0df060d6687cf4369c0c1122 |
2587 | languageName: node | 2561 | languageName: node |
2588 | linkType: hard | 2562 | linkType: hard |
2589 | 2563 | ||
2590 | "@typescript-eslint/parser@npm:^5.50.0": | 2564 | "@typescript-eslint/parser@npm:^5.59.11": |
2591 | version: 5.50.0 | 2565 | version: 5.59.11 |
2592 | resolution: "@typescript-eslint/parser@npm:5.50.0" | 2566 | resolution: "@typescript-eslint/parser@npm:5.59.11" |
2593 | dependencies: | 2567 | dependencies: |
2594 | "@typescript-eslint/scope-manager": "npm:5.50.0" | 2568 | "@typescript-eslint/scope-manager": "npm:5.59.11" |
2595 | "@typescript-eslint/types": "npm:5.50.0" | 2569 | "@typescript-eslint/types": "npm:5.59.11" |
2596 | "@typescript-eslint/typescript-estree": "npm:5.50.0" | 2570 | "@typescript-eslint/typescript-estree": "npm:5.59.11" |
2597 | debug: "npm:^4.3.4" | 2571 | debug: "npm:^4.3.4" |
2598 | peerDependencies: | 2572 | peerDependencies: |
2599 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 | 2573 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 |
2600 | peerDependenciesMeta: | 2574 | peerDependenciesMeta: |
2601 | typescript: | 2575 | typescript: |
2602 | optional: true | 2576 | optional: true |
2603 | checksum: 67d5b5b714456b6c52fbf945869becb7f337f49312197120fc8dda82373d1fe310b3fa8fcac2ef92d967bceca6192bfc4a9f355df5d0c862d57ee3203cb7fe2d | 2577 | checksum: 3e9b4326721b02d6aa9dad73806e5f34ef26b9e9dc12245a8d5601116de056b5449ea6d39c04fcbf1ba4b7edaf840e5e3623840d1ea92f96e65f4eb1856ecc60 |
2604 | languageName: node | 2578 | languageName: node |
2605 | linkType: hard | 2579 | linkType: hard |
2606 | 2580 | ||
2607 | "@typescript-eslint/scope-manager@npm:5.50.0": | 2581 | "@typescript-eslint/scope-manager@npm:5.59.11": |
2608 | version: 5.50.0 | 2582 | version: 5.59.11 |
2609 | resolution: "@typescript-eslint/scope-manager@npm:5.50.0" | 2583 | resolution: "@typescript-eslint/scope-manager@npm:5.59.11" |
2610 | dependencies: | 2584 | dependencies: |
2611 | "@typescript-eslint/types": "npm:5.50.0" | 2585 | "@typescript-eslint/types": "npm:5.59.11" |
2612 | "@typescript-eslint/visitor-keys": "npm:5.50.0" | 2586 | "@typescript-eslint/visitor-keys": "npm:5.59.11" |
2613 | checksum: 06ab882dc92f11febac75d7a6989eef38882568dd7c9d1a6aafae9cb0d13f3d4b2e9761f81e54e145b4a4e4676a15ee70e510bfd979ac0b83919785385728ac9 | 2587 | checksum: 92d4d163c2e2ff76df70511d511dfc8be14a3b47b4b35f3561d3388c6ebca0c4fc72cb9c8b91160ddc12a67f5848779fbcdab339e6b7cfb6b1b50b28658d6607 |
2614 | languageName: node | 2588 | languageName: node |
2615 | linkType: hard | 2589 | linkType: hard |
2616 | 2590 | ||
2617 | "@typescript-eslint/type-utils@npm:5.50.0": | 2591 | "@typescript-eslint/type-utils@npm:5.59.11": |
2618 | version: 5.50.0 | 2592 | version: 5.59.11 |
2619 | resolution: "@typescript-eslint/type-utils@npm:5.50.0" | 2593 | resolution: "@typescript-eslint/type-utils@npm:5.59.11" |
2620 | dependencies: | 2594 | dependencies: |
2621 | "@typescript-eslint/typescript-estree": "npm:5.50.0" | 2595 | "@typescript-eslint/typescript-estree": "npm:5.59.11" |
2622 | "@typescript-eslint/utils": "npm:5.50.0" | 2596 | "@typescript-eslint/utils": "npm:5.59.11" |
2623 | debug: "npm:^4.3.4" | 2597 | debug: "npm:^4.3.4" |
2624 | tsutils: "npm:^3.21.0" | 2598 | tsutils: "npm:^3.21.0" |
2625 | peerDependencies: | 2599 | peerDependencies: |
@@ -2627,23 +2601,23 @@ __metadata: | |||
2627 | peerDependenciesMeta: | 2601 | peerDependenciesMeta: |
2628 | typescript: | 2602 | typescript: |
2629 | optional: true | 2603 | optional: true |
2630 | checksum: 6559b90d56516d114cd620da3caea3898200cbfd93896932753951ae4cb3ffe2caf932784e6997d2fceaf273979546519d65f5ba7512a7252cd3867a0f0aad02 | 2604 | checksum: 227611087687a10da8203236f3efafd3e8d7f122e59e8e81c2651bb004fe652cab0d2043ed9597aac52c5d7fdc31927d4121ebea7d3969d5a6cd92076b8d5206 |
2631 | languageName: node | 2605 | languageName: node |
2632 | linkType: hard | 2606 | linkType: hard |
2633 | 2607 | ||
2634 | "@typescript-eslint/types@npm:5.50.0": | 2608 | "@typescript-eslint/types@npm:5.59.11": |
2635 | version: 5.50.0 | 2609 | version: 5.59.11 |
2636 | resolution: "@typescript-eslint/types@npm:5.50.0" | 2610 | resolution: "@typescript-eslint/types@npm:5.59.11" |
2637 | checksum: a872c53714db51c27e66429f19671bdf089c044ec023a2e05fde527d2fd2e04b6d9e5ac006f6609dc99a3c39cf6d77929dd0c5392be9473fae9bb66bcab2fa92 | 2611 | checksum: 93b43e9c690b67bb5bb072efa0cffae723c01359233b1fffafc09a34d40be6214a374621555296561c24be10154278588f2febabf31d100e9b08dcdb1d7f37e6 |
2638 | languageName: node | 2612 | languageName: node |
2639 | linkType: hard | 2613 | linkType: hard |
2640 | 2614 | ||
2641 | "@typescript-eslint/typescript-estree@npm:5.50.0": | 2615 | "@typescript-eslint/typescript-estree@npm:5.59.11": |
2642 | version: 5.50.0 | 2616 | version: 5.59.11 |
2643 | resolution: "@typescript-eslint/typescript-estree@npm:5.50.0" | 2617 | resolution: "@typescript-eslint/typescript-estree@npm:5.59.11" |
2644 | dependencies: | 2618 | dependencies: |
2645 | "@typescript-eslint/types": "npm:5.50.0" | 2619 | "@typescript-eslint/types": "npm:5.59.11" |
2646 | "@typescript-eslint/visitor-keys": "npm:5.50.0" | 2620 | "@typescript-eslint/visitor-keys": "npm:5.59.11" |
2647 | debug: "npm:^4.3.4" | 2621 | debug: "npm:^4.3.4" |
2648 | globby: "npm:^11.1.0" | 2622 | globby: "npm:^11.1.0" |
2649 | is-glob: "npm:^4.0.3" | 2623 | is-glob: "npm:^4.0.3" |
@@ -2652,62 +2626,63 @@ __metadata: | |||
2652 | peerDependenciesMeta: | 2626 | peerDependenciesMeta: |
2653 | typescript: | 2627 | typescript: |
2654 | optional: true | 2628 | optional: true |
2655 | checksum: 66ae8bbcc8fa556613c9d4f77677cc765b008e81f46b7c7425fa6d9a3c470ee0bd4df82d816aefcab748d0f88b6ac817e304157cdb04a21b22ca9c4a8d444f9c | 2629 | checksum: eea170d64d20e4cb87097f2014391cc065e4f2d2c2e704a90e13d672b3368f1d3e6909a5b656572f2ab37741f96d624854038ef5070aaf6630a34afac800a5af |
2656 | languageName: node | 2630 | languageName: node |
2657 | linkType: hard | 2631 | linkType: hard |
2658 | 2632 | ||
2659 | "@typescript-eslint/utils@npm:5.50.0": | 2633 | "@typescript-eslint/utils@npm:5.59.11": |
2660 | version: 5.50.0 | 2634 | version: 5.59.11 |
2661 | resolution: "@typescript-eslint/utils@npm:5.50.0" | 2635 | resolution: "@typescript-eslint/utils@npm:5.59.11" |
2662 | dependencies: | 2636 | dependencies: |
2637 | "@eslint-community/eslint-utils": "npm:^4.2.0" | ||
2663 | "@types/json-schema": "npm:^7.0.9" | 2638 | "@types/json-schema": "npm:^7.0.9" |
2664 | "@types/semver": "npm:^7.3.12" | 2639 | "@types/semver": "npm:^7.3.12" |
2665 | "@typescript-eslint/scope-manager": "npm:5.50.0" | 2640 | "@typescript-eslint/scope-manager": "npm:5.59.11" |
2666 | "@typescript-eslint/types": "npm:5.50.0" | 2641 | "@typescript-eslint/types": "npm:5.59.11" |
2667 | "@typescript-eslint/typescript-estree": "npm:5.50.0" | 2642 | "@typescript-eslint/typescript-estree": "npm:5.59.11" |
2668 | eslint-scope: "npm:^5.1.1" | 2643 | eslint-scope: "npm:^5.1.1" |
2669 | eslint-utils: "npm:^3.0.0" | ||
2670 | semver: "npm:^7.3.7" | 2644 | semver: "npm:^7.3.7" |
2671 | peerDependencies: | 2645 | peerDependencies: |
2672 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 | 2646 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 |
2673 | checksum: 8279671c4e36d26bf708a71658efddd49699aa99f02e47d4bba3ebc4f4f03e7e49bf836f5b76509f429d98c271436613623c2d6d45cc8c6720622272f62f909b | 2647 | checksum: de8ae9ec3ef6fd85ac243b5d5f34c1e7e9250452ada60049c15f1128c2654cd6ae19d1ca902000364dc230763492b1a08e213a36be7827ed49a29fa3ec325cf4 |
2674 | languageName: node | 2648 | languageName: node |
2675 | linkType: hard | 2649 | linkType: hard |
2676 | 2650 | ||
2677 | "@typescript-eslint/visitor-keys@npm:5.50.0": | 2651 | "@typescript-eslint/visitor-keys@npm:5.59.11": |
2678 | version: 5.50.0 | 2652 | version: 5.59.11 |
2679 | resolution: "@typescript-eslint/visitor-keys@npm:5.50.0" | 2653 | resolution: "@typescript-eslint/visitor-keys@npm:5.59.11" |
2680 | dependencies: | 2654 | dependencies: |
2681 | "@typescript-eslint/types": "npm:5.50.0" | 2655 | "@typescript-eslint/types": "npm:5.59.11" |
2682 | eslint-visitor-keys: "npm:^3.3.0" | 2656 | eslint-visitor-keys: "npm:^3.3.0" |
2683 | checksum: e8b79a969e7c64e90b527c808c7998fe4f4e329905578018b527bdc58ad1f48b5339fbd232afbebacb1754a1bac335f06a86f184b2b10ab35cf90766c4576a08 | 2657 | checksum: 733ba3db77b0425cea1285d399eea68b25f2c546497baf0a2636fe243828bb9f9b96f404fe304700cd9bf1e7a4253549614209f1e03ad821627e476be2602a21 |
2684 | languageName: node | 2658 | languageName: node |
2685 | linkType: hard | 2659 | linkType: hard |
2686 | 2660 | ||
2687 | "@vitejs/plugin-react-swc@npm:^3.1.0": | 2661 | "@vitejs/plugin-react-swc@npm:^3.3.2": |
2688 | version: 3.1.0 | 2662 | version: 3.3.2 |
2689 | resolution: "@vitejs/plugin-react-swc@npm:3.1.0" | 2663 | resolution: "@vitejs/plugin-react-swc@npm:3.3.2" |
2690 | dependencies: | 2664 | dependencies: |
2691 | "@swc/core": "npm:^1.3.30" | 2665 | "@swc/core": "npm:^1.3.61" |
2692 | peerDependencies: | 2666 | peerDependencies: |
2693 | vite: ^4 | 2667 | vite: ^4 |
2694 | checksum: 550634924cee9edb6545a1519b4ad577c53d650ffe3ae26c437a36b329278d09f35ea36d96e0ccd4a35fcabe202f8a797e58a5a871f2294c5adaf45476a53ea6 | 2668 | checksum: f99a8859f81fae07e5991790a65700612e2f118f37716999d6b18e84bea9329f5d7d0d9d6aaddd19149c198d3e9c22f862a100c2a29ab35e54da3bc60a36e919 |
2695 | languageName: node | 2669 | languageName: node |
2696 | linkType: hard | 2670 | linkType: hard |
2697 | 2671 | ||
2698 | "@xstate/cli@npm:^0.4.2": | 2672 | "@xstate/cli@npm:^0.5.1": |
2699 | version: 0.4.2 | 2673 | version: 0.5.1 |
2700 | resolution: "@xstate/cli@npm:0.4.2" | 2674 | resolution: "@xstate/cli@npm:0.5.1" |
2701 | dependencies: | 2675 | dependencies: |
2702 | "@babel/core": "npm:^7.19.3" | 2676 | "@babel/core": "npm:^7.21.4" |
2703 | "@xstate/machine-extractor": "npm:^0.9.0" | 2677 | "@xstate/machine-extractor": "npm:^0.9.0" |
2704 | "@xstate/tools-shared": "npm:^2.0.2" | 2678 | "@xstate/tools-shared": "npm:^3.0.0" |
2705 | chokidar: "npm:^3.5.3" | 2679 | chokidar: "npm:^3.5.3" |
2706 | commander: "npm:^8.0.0" | 2680 | commander: "npm:^8.0.0" |
2681 | prettier: "npm:^2.8.7" | ||
2707 | xstate: "npm:^4.33.4" | 2682 | xstate: "npm:^4.33.4" |
2708 | bin: | 2683 | bin: |
2709 | xstate: bin/bin.js | 2684 | xstate: bin/bin.js |
2710 | checksum: 6434a4400062d10e212c1c3c145c10f0a7352fd4cb8be4641c05322f0177ffa66f5da40456bd1274c6b050e642b4e3a07ed7a43d39f5b5941a7621c078f0e22f | 2685 | checksum: 6bd0f997c821cce510b3b2ba7263dd29eb9ee3c3510c1f5f5e0ad502976eafe335cf59234ace67d192c3a23d1e6194190b92144ccec9b373686b5900e151e233 |
2711 | languageName: node | 2686 | languageName: node |
2712 | linkType: hard | 2687 | linkType: hard |
2713 | 2688 | ||
@@ -2725,19 +2700,18 @@ __metadata: | |||
2725 | languageName: node | 2700 | languageName: node |
2726 | linkType: hard | 2701 | linkType: hard |
2727 | 2702 | ||
2728 | "@xstate/tools-shared@npm:^2.0.2": | 2703 | "@xstate/tools-shared@npm:^3.0.0": |
2729 | version: 2.0.2 | 2704 | version: 3.0.0 |
2730 | resolution: "@xstate/tools-shared@npm:2.0.2" | 2705 | resolution: "@xstate/tools-shared@npm:3.0.0" |
2731 | dependencies: | 2706 | dependencies: |
2732 | "@xstate/machine-extractor": "npm:^0.9.0" | 2707 | "@xstate/machine-extractor": "npm:^0.9.0" |
2733 | peerDependencies: | 2708 | peerDependencies: |
2734 | prettier: ^2.3.1 | ||
2735 | xstate: ^4 | 2709 | xstate: ^4 |
2736 | checksum: 59b65b39d665c523ece9a35eba99db2e4507abdcb7f0a27f15e418579821dd857f57c6b0cf4774e8d89879b7b9c7be8f159e27750fa6a1bb670f64368f5adeb1 | 2710 | checksum: c200f68c8f569a222cbc502d84d1b0a19186055912c8e271e034f411845521894b11c5462faf41a6454cd3e43a2b6d1a61c97a8a26cf736964fbe5abf1c19519 |
2737 | languageName: node | 2711 | languageName: node |
2738 | linkType: hard | 2712 | linkType: hard |
2739 | 2713 | ||
2740 | "abbrev@npm:1": | 2714 | "abbrev@npm:^1.0.0": |
2741 | version: 1.1.1 | 2715 | version: 1.1.1 |
2742 | resolution: "abbrev@npm:1.1.1" | 2716 | resolution: "abbrev@npm:1.1.1" |
2743 | checksum: 76e7fb9283b13208d5cf55df46669f9cf5e72007cb66595849be2d5e96c0a43704132d030c5705f9447266183986e1e8a4fc3e9578cb60a1f19cf0157664f957 | 2717 | checksum: 76e7fb9283b13208d5cf55df46669f9cf5e72007cb66595849be2d5e96c0a43704132d030c5705f9447266183986e1e8a4fc3e9578cb60a1f19cf0157664f957 |
@@ -2753,12 +2727,12 @@ __metadata: | |||
2753 | languageName: node | 2727 | languageName: node |
2754 | linkType: hard | 2728 | linkType: hard |
2755 | 2729 | ||
2756 | "acorn@npm:^8.5.0, acorn@npm:^8.8.0": | 2730 | "acorn@npm:^8.8.0, acorn@npm:^8.8.2": |
2757 | version: 8.8.0 | 2731 | version: 8.9.0 |
2758 | resolution: "acorn@npm:8.8.0" | 2732 | resolution: "acorn@npm:8.9.0" |
2759 | bin: | 2733 | bin: |
2760 | acorn: bin/acorn | 2734 | acorn: bin/acorn |
2761 | checksum: 15b10fb381a8a0394a718eba147e120b9d1ae6ed087e61612ee5fda94f98182e5fcd78ef6725c027dc3c5677ce920617c14c359d7777e8ef6a058d2ba113f81f | 2735 | checksum: 82583d7017e93fbbf49b7fd808c7a41ea8756838f8477a7647c3fbb26482e7be98828e44e1a248bab45621057b35cc77d454b26f109b1461e755516d4278d35f |
2762 | languageName: node | 2736 | languageName: node |
2763 | linkType: hard | 2737 | linkType: hard |
2764 | 2738 | ||
@@ -2771,14 +2745,14 @@ __metadata: | |||
2771 | languageName: node | 2745 | languageName: node |
2772 | linkType: hard | 2746 | linkType: hard |
2773 | 2747 | ||
2774 | "agentkeepalive@npm:^4.1.3": | 2748 | "agentkeepalive@npm:^4.2.1": |
2775 | version: 4.1.4 | 2749 | version: 4.3.0 |
2776 | resolution: "agentkeepalive@npm:4.1.4" | 2750 | resolution: "agentkeepalive@npm:4.3.0" |
2777 | dependencies: | 2751 | dependencies: |
2778 | debug: "npm:^4.1.0" | 2752 | debug: "npm:^4.1.0" |
2779 | depd: "npm:^1.1.2" | 2753 | depd: "npm:^2.0.0" |
2780 | humanize-ms: "npm:^1.2.1" | 2754 | humanize-ms: "npm:^1.2.1" |
2781 | checksum: c9bb9b8537c540a5bdf25f5e9fa0ef924339ec013761b3272395ea1791f9adee3e6eb6fc8cfe006fe4fb90fc638186a1e1900eb808b07af23cb92707d3d2258f | 2755 | checksum: b3cce4e2faf86c01bad23b471a67f4aa2e6001b833bc2f63a3d5a8b2a671636f8aac7d215e6f8243ce1c07c7a5d8d5fa90ab894ff0d9f0c3e05c2cda801103fb |
2782 | languageName: node | 2756 | languageName: node |
2783 | linkType: hard | 2757 | linkType: hard |
2784 | 2758 | ||
@@ -2805,14 +2779,14 @@ __metadata: | |||
2805 | linkType: hard | 2779 | linkType: hard |
2806 | 2780 | ||
2807 | "ajv@npm:^8.6.0": | 2781 | "ajv@npm:^8.6.0": |
2808 | version: 8.11.0 | 2782 | version: 8.12.0 |
2809 | resolution: "ajv@npm:8.11.0" | 2783 | resolution: "ajv@npm:8.12.0" |
2810 | dependencies: | 2784 | dependencies: |
2811 | fast-deep-equal: "npm:^3.1.1" | 2785 | fast-deep-equal: "npm:^3.1.1" |
2812 | json-schema-traverse: "npm:^1.0.0" | 2786 | json-schema-traverse: "npm:^1.0.0" |
2813 | require-from-string: "npm:^2.0.2" | 2787 | require-from-string: "npm:^2.0.2" |
2814 | uri-js: "npm:^4.2.2" | 2788 | uri-js: "npm:^4.2.2" |
2815 | checksum: 08625cf91d13177f3064cf333c7e041bba66f8aa811884a2de5c08b420add67b481779368b0bbf8fc232400b7a3f47aa78459d48ac73e60568c5afec538aa02b | 2789 | checksum: adab5a15cfce05aa97767b5f01da510f79f351021c643b5593b001dc5063aac3822d9265da94f7e39fd32cc4054277e43728aa522f83d82daca50858a5c29361 |
2816 | languageName: node | 2790 | languageName: node |
2817 | linkType: hard | 2791 | linkType: hard |
2818 | 2792 | ||
@@ -2823,6 +2797,13 @@ __metadata: | |||
2823 | languageName: node | 2797 | languageName: node |
2824 | linkType: hard | 2798 | linkType: hard |
2825 | 2799 | ||
2800 | "ansi-regex@npm:^6.0.1": | ||
2801 | version: 6.0.1 | ||
2802 | resolution: "ansi-regex@npm:6.0.1" | ||
2803 | checksum: 53669c3634190ead828055bcae5f0feff485fd8d7d05538d4f753ad56ffedb7aa5bcc93efaa8e99e4907ad970682413f2407cf4acac8deb1d408bc564bca9027 | ||
2804 | languageName: node | ||
2805 | linkType: hard | ||
2806 | |||
2826 | "ansi-styles@npm:^3.2.1": | 2807 | "ansi-styles@npm:^3.2.1": |
2827 | version: 3.2.1 | 2808 | version: 3.2.1 |
2828 | resolution: "ansi-styles@npm:3.2.1" | 2809 | resolution: "ansi-styles@npm:3.2.1" |
@@ -2832,7 +2813,7 @@ __metadata: | |||
2832 | languageName: node | 2813 | languageName: node |
2833 | linkType: hard | 2814 | linkType: hard |
2834 | 2815 | ||
2835 | "ansi-styles@npm:^4.1.0": | 2816 | "ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": |
2836 | version: 4.3.0 | 2817 | version: 4.3.0 |
2837 | resolution: "ansi-styles@npm:4.3.0" | 2818 | resolution: "ansi-styles@npm:4.3.0" |
2838 | dependencies: | 2819 | dependencies: |
@@ -2841,7 +2822,7 @@ __metadata: | |||
2841 | languageName: node | 2822 | languageName: node |
2842 | linkType: hard | 2823 | linkType: hard |
2843 | 2824 | ||
2844 | "ansi-styles@npm:^6.2.1": | 2825 | "ansi-styles@npm:^6.1.0, ansi-styles@npm:^6.2.1": |
2845 | version: 6.2.1 | 2826 | version: 6.2.1 |
2846 | resolution: "ansi-styles@npm:6.2.1" | 2827 | resolution: "ansi-styles@npm:6.2.1" |
2847 | checksum: 86fe3fc999c89775171631b32920d1fbf8adc4225895db376057b5a5e6fdcf837ae994ca08756f0a676c0dd8c74e58a7e87515d1fa16d6fcfffdf9069d579e90 | 2828 | checksum: 86fe3fc999c89775171631b32920d1fbf8adc4225895db376057b5a5e6fdcf837ae994ca08756f0a676c0dd8c74e58a7e87515d1fa16d6fcfffdf9069d579e90 |
@@ -2849,12 +2830,12 @@ __metadata: | |||
2849 | linkType: hard | 2830 | linkType: hard |
2850 | 2831 | ||
2851 | "anymatch@npm:~3.1.2": | 2832 | "anymatch@npm:~3.1.2": |
2852 | version: 3.1.2 | 2833 | version: 3.1.3 |
2853 | resolution: "anymatch@npm:3.1.2" | 2834 | resolution: "anymatch@npm:3.1.3" |
2854 | dependencies: | 2835 | dependencies: |
2855 | normalize-path: "npm:^3.0.0" | 2836 | normalize-path: "npm:^3.0.0" |
2856 | picomatch: "npm:^2.0.4" | 2837 | picomatch: "npm:^2.0.4" |
2857 | checksum: b9266228a3e1406086ece57c20f9cbfc9755375218697c79a71fba9245ad23a672687314422e97753fbb3bccd245d7c76974d7c15ba513386b499de6ba002300 | 2838 | checksum: 0d50ce459783767bb68ce635c0a8f3e7de9843ebd6e6733accd59e13a49421a84944b8be5d68b5acecf74eca767a06229e07cae48151757744618e1a32dda0ed |
2858 | languageName: node | 2839 | languageName: node |
2859 | linkType: hard | 2840 | linkType: hard |
2860 | 2841 | ||
@@ -2865,13 +2846,13 @@ __metadata: | |||
2865 | languageName: node | 2846 | languageName: node |
2866 | linkType: hard | 2847 | linkType: hard |
2867 | 2848 | ||
2868 | "are-we-there-yet@npm:^2.0.0": | 2849 | "are-we-there-yet@npm:^3.0.0": |
2869 | version: 2.0.0 | 2850 | version: 3.0.1 |
2870 | resolution: "are-we-there-yet@npm:2.0.0" | 2851 | resolution: "are-we-there-yet@npm:3.0.1" |
2871 | dependencies: | 2852 | dependencies: |
2872 | delegates: "npm:^1.0.0" | 2853 | delegates: "npm:^1.0.0" |
2873 | readable-stream: "npm:^3.6.0" | 2854 | readable-stream: "npm:^3.6.0" |
2874 | checksum: 8e178f4924d1062cf04df1afb27927f005429805027ea5f8d751cb66287910a3584b9f0548d0a7aa490dff60a0600e1f31da0bb53344f65f0836234529908d3a | 2855 | checksum: 7137e25713c611cf38054434ba377e2f7ad3a4bbdb7ac3565ed5caac786080d1c86ed0b280edd917b4c1001ee0d6ed7bdd53effd69b5af4251e5a4fd18d09fbe |
2875 | languageName: node | 2856 | languageName: node |
2876 | linkType: hard | 2857 | linkType: hard |
2877 | 2858 | ||
@@ -2883,11 +2864,21 @@ __metadata: | |||
2883 | linkType: hard | 2864 | linkType: hard |
2884 | 2865 | ||
2885 | "aria-query@npm:^5.1.3": | 2866 | "aria-query@npm:^5.1.3": |
2886 | version: 5.1.3 | 2867 | version: 5.2.1 |
2887 | resolution: "aria-query@npm:5.1.3" | 2868 | resolution: "aria-query@npm:5.2.1" |
2869 | dependencies: | ||
2870 | dequal: "npm:^2.0.3" | ||
2871 | checksum: 80fffcdf6e45acd43e82e402f60d0b6bdd3771952abe431bbf274f2921c5e933d4de5ee9105732cc504631fd596772cc035e53115426f59605fb317fb8cadea3 | ||
2872 | languageName: node | ||
2873 | linkType: hard | ||
2874 | |||
2875 | "array-buffer-byte-length@npm:^1.0.0": | ||
2876 | version: 1.0.0 | ||
2877 | resolution: "array-buffer-byte-length@npm:1.0.0" | ||
2888 | dependencies: | 2878 | dependencies: |
2889 | deep-equal: "npm:^2.0.5" | 2879 | call-bind: "npm:^1.0.2" |
2890 | checksum: f324857bd55af166866c7a402336dd980d8f1c174203f7a38a77d6a075847c3bf1c21d33027c4db7c3b582c894d15c339e6818e709edbf52c15d34d9a5797ee0 | 2880 | is-array-buffer: "npm:^3.0.1" |
2881 | checksum: ff6fd5a16868943441dc2b8de7c0a8b070677457f1953d13b366e6fd01d7bf187a29268412ca5115f14031d3c00cea22c832af6da61569351d9967d8a5d803cb | ||
2891 | languageName: node | 2882 | languageName: node |
2892 | linkType: hard | 2883 | linkType: hard |
2893 | 2884 | ||
@@ -2986,18 +2977,18 @@ __metadata: | |||
2986 | linkType: hard | 2977 | linkType: hard |
2987 | 2978 | ||
2988 | "axe-core@npm:^4.6.2": | 2979 | "axe-core@npm:^4.6.2": |
2989 | version: 4.6.2 | 2980 | version: 4.7.2 |
2990 | resolution: "axe-core@npm:4.6.2" | 2981 | resolution: "axe-core@npm:4.7.2" |
2991 | checksum: d46654e4008499efe8cfb47c4de7ec4fd7ccd03dcd37dde3e37d1d3035ec5d784dac1112a0671d60f5f9ff116c25b9984dd3805f3db3fdd2ca3b4b254c2e2076 | 2982 | checksum: 4b4e83d68d242b8252089356d0ad3c9c56c25a11c3ef46887ad3b8e3b7b82a6c86fda4cc327ac361110619d0595a3dcae94b605f1c6b38880786883a6d123231 |
2992 | languageName: node | 2983 | languageName: node |
2993 | linkType: hard | 2984 | linkType: hard |
2994 | 2985 | ||
2995 | "axobject-query@npm:^3.1.1": | 2986 | "axobject-query@npm:^3.1.1": |
2996 | version: 3.1.1 | 2987 | version: 3.2.1 |
2997 | resolution: "axobject-query@npm:3.1.1" | 2988 | resolution: "axobject-query@npm:3.2.1" |
2998 | dependencies: | 2989 | dependencies: |
2999 | deep-equal: "npm:^2.0.5" | 2990 | dequal: "npm:^2.0.3" |
3000 | checksum: 4122b43bcb83ac73ff9989add7791b2a8889e40fe8d11e4a0bfb4c95fb672920b7e0308c40484ee21e3d1aa6fa04dff9067b7f891edd298635ffe97281f9d760 | 2991 | checksum: 1df3a2188b61c6eec6fdd5e2967aa996c08220f912e82806062fb18db5a43a06907ad56dfa88571ab4a4b12dc01429653abe7196ccf854194680e9b3fe1053f3 |
3001 | languageName: node | 2992 | languageName: node |
3002 | linkType: hard | 2993 | linkType: hard |
3003 | 2994 | ||
@@ -3022,15 +3013,15 @@ __metadata: | |||
3022 | linkType: hard | 3013 | linkType: hard |
3023 | 3014 | ||
3024 | "babel-plugin-polyfill-corejs2@npm:^0.3.2": | 3015 | "babel-plugin-polyfill-corejs2@npm:^0.3.2": |
3025 | version: 0.3.2 | 3016 | version: 0.3.3 |
3026 | resolution: "babel-plugin-polyfill-corejs2@npm:0.3.2" | 3017 | resolution: "babel-plugin-polyfill-corejs2@npm:0.3.3" |
3027 | dependencies: | 3018 | dependencies: |
3028 | "@babel/compat-data": "npm:^7.17.7" | 3019 | "@babel/compat-data": "npm:^7.17.7" |
3029 | "@babel/helper-define-polyfill-provider": "npm:^0.3.2" | 3020 | "@babel/helper-define-polyfill-provider": "npm:^0.3.3" |
3030 | semver: "npm:^6.1.1" | 3021 | semver: "npm:^6.1.1" |
3031 | peerDependencies: | 3022 | peerDependencies: |
3032 | "@babel/core": ^7.0.0-0 | 3023 | "@babel/core": ^7.0.0-0 |
3033 | checksum: 1faae7c9107ca2e851c063b5da13878669ab44b2c09a270f521f1de8d30dbef7cae2af2b98d2c70bf164d975efeadf848e28f6c1eed5dea9ec62228750754074 | 3024 | checksum: a7a7dd4b47129eadcc1cb50ab16ca9876c0353a16dbfb4a8ebe44afd5beb576bb1dc852b6819658695e5f19988517f7428cb5003d86586f977e5bbd2a982689e |
3034 | languageName: node | 3025 | languageName: node |
3035 | linkType: hard | 3026 | linkType: hard |
3036 | 3027 | ||
@@ -3047,13 +3038,13 @@ __metadata: | |||
3047 | linkType: hard | 3038 | linkType: hard |
3048 | 3039 | ||
3049 | "babel-plugin-polyfill-regenerator@npm:^0.4.0": | 3040 | "babel-plugin-polyfill-regenerator@npm:^0.4.0": |
3050 | version: 0.4.0 | 3041 | version: 0.4.1 |
3051 | resolution: "babel-plugin-polyfill-regenerator@npm:0.4.0" | 3042 | resolution: "babel-plugin-polyfill-regenerator@npm:0.4.1" |
3052 | dependencies: | 3043 | dependencies: |
3053 | "@babel/helper-define-polyfill-provider": "npm:^0.3.2" | 3044 | "@babel/helper-define-polyfill-provider": "npm:^0.3.3" |
3054 | peerDependencies: | 3045 | peerDependencies: |
3055 | "@babel/core": ^7.0.0-0 | 3046 | "@babel/core": ^7.0.0-0 |
3056 | checksum: 43880dfd6b1ca5947acb82af3083180b58adb0032fcb55ee5d808405d1c997e3571cdcf3d1d1fc8df7bffbfb3f4f7d05f02b48f49302b75801eff77f9a557895 | 3047 | checksum: dfa6c1448285c90720cbac9a3237a1de0dce442492dfe20dd3755c7b2bc97f71f364ea1f2a7669785aaa50c058ed19998baff046de625e12da66072994a418ae |
3057 | languageName: node | 3048 | languageName: node |
3058 | linkType: hard | 3049 | linkType: hard |
3059 | 3050 | ||
@@ -3099,17 +3090,17 @@ __metadata: | |||
3099 | languageName: node | 3090 | languageName: node |
3100 | linkType: hard | 3091 | linkType: hard |
3101 | 3092 | ||
3102 | "browserslist@npm:^4.21.3": | 3093 | "browserslist@npm:^4.21.3, browserslist@npm:^4.21.5": |
3103 | version: 4.21.3 | 3094 | version: 4.21.9 |
3104 | resolution: "browserslist@npm:4.21.3" | 3095 | resolution: "browserslist@npm:4.21.9" |
3105 | dependencies: | 3096 | dependencies: |
3106 | caniuse-lite: "npm:^1.0.30001370" | 3097 | caniuse-lite: "npm:^1.0.30001503" |
3107 | electron-to-chromium: "npm:^1.4.202" | 3098 | electron-to-chromium: "npm:^1.4.431" |
3108 | node-releases: "npm:^2.0.6" | 3099 | node-releases: "npm:^2.0.12" |
3109 | update-browserslist-db: "npm:^1.0.5" | 3100 | update-browserslist-db: "npm:^1.0.11" |
3110 | bin: | 3101 | bin: |
3111 | browserslist: cli.js | 3102 | browserslist: cli.js |
3112 | checksum: 1c12b4b9b69138e1697aee58ad8b7e706fc868a90c03f9973ad8cf2bc5b283ccda07b4e7e751b7301b6df4726a41c6e8a9245e18ab3b11e0e4bc2cbfaeabaff3 | 3103 | checksum: 0158082dc5c14f6db834b6d46c56fafcdfb203959467f66857dd6c4167af0f95108ed101776e020f84a2bb6771a9219bf2e4f2c35776bbc651d7deaf5d3a1f60 |
3113 | languageName: node | 3104 | languageName: node |
3114 | linkType: hard | 3105 | linkType: hard |
3115 | 3106 | ||
@@ -3127,29 +3118,23 @@ __metadata: | |||
3127 | languageName: node | 3118 | languageName: node |
3128 | linkType: hard | 3119 | linkType: hard |
3129 | 3120 | ||
3130 | "cacache@npm:^15.2.0": | 3121 | "cacache@npm:^17.0.0": |
3131 | version: 15.3.0 | 3122 | version: 17.1.3 |
3132 | resolution: "cacache@npm:15.3.0" | 3123 | resolution: "cacache@npm:17.1.3" |
3133 | dependencies: | 3124 | dependencies: |
3134 | "@npmcli/fs": "npm:^1.0.0" | 3125 | "@npmcli/fs": "npm:^3.1.0" |
3135 | "@npmcli/move-file": "npm:^1.0.1" | 3126 | fs-minipass: "npm:^3.0.0" |
3136 | chownr: "npm:^2.0.0" | 3127 | glob: "npm:^10.2.2" |
3137 | fs-minipass: "npm:^2.0.0" | 3128 | lru-cache: "npm:^7.7.1" |
3138 | glob: "npm:^7.1.4" | 3129 | minipass: "npm:^5.0.0" |
3139 | infer-owner: "npm:^1.0.4" | ||
3140 | lru-cache: "npm:^6.0.0" | ||
3141 | minipass: "npm:^3.1.1" | ||
3142 | minipass-collect: "npm:^1.0.2" | 3130 | minipass-collect: "npm:^1.0.2" |
3143 | minipass-flush: "npm:^1.0.5" | 3131 | minipass-flush: "npm:^1.0.5" |
3144 | minipass-pipeline: "npm:^1.2.2" | 3132 | minipass-pipeline: "npm:^1.2.4" |
3145 | mkdirp: "npm:^1.0.3" | ||
3146 | p-map: "npm:^4.0.0" | 3133 | p-map: "npm:^4.0.0" |
3147 | promise-inflight: "npm:^1.0.1" | 3134 | ssri: "npm:^10.0.0" |
3148 | rimraf: "npm:^3.0.2" | 3135 | tar: "npm:^6.1.11" |
3149 | ssri: "npm:^8.0.1" | 3136 | unique-filename: "npm:^3.0.0" |
3150 | tar: "npm:^6.0.2" | 3137 | checksum: 19b4f65a5b3e3d38aac2426b39ee5f6ad4da3afa8a40991b5784a07a480585af89904e425459d3ca335dc8ff60e2a213e95d4d4bb6a038fb6854eb9c3e777121 |
3151 | unique-filename: "npm:^1.1.1" | ||
3152 | checksum: 7ee6c3ca9cddcb35071cfa592b54ef195b944b8df9dc844a2a4a5cb9a7dee1debb53b7bab4ec77b295d7310d59183829457c80bf55c56045bc3d8547c4e89d50 | ||
3153 | languageName: node | 3138 | languageName: node |
3154 | linkType: hard | 3139 | linkType: hard |
3155 | 3140 | ||
@@ -3180,10 +3165,10 @@ __metadata: | |||
3180 | languageName: node | 3165 | languageName: node |
3181 | linkType: hard | 3166 | linkType: hard |
3182 | 3167 | ||
3183 | "caniuse-lite@npm:^1.0.30001370": | 3168 | "caniuse-lite@npm:^1.0.30001503": |
3184 | version: 1.0.30001370 | 3169 | version: 1.0.30001504 |
3185 | resolution: "caniuse-lite@npm:1.0.30001370" | 3170 | resolution: "caniuse-lite@npm:1.0.30001504" |
3186 | checksum: 8a8d8e9ab026aa8165da80e34a5f4814703314fef3197888ca30f6faca0af5c07532c16b45048d47fdfab9b9b110666c6ff541cc0e0dabf02b6b826a11d844c8 | 3171 | checksum: 82f3f90a40709aec62cbc4265ad6c6ef513cc86ee9cd0f3af7d9dc2bf520516a0fe97dc24b3986b3a3bafe345b29dbb037d1a14620120f43cc1bc29d4ad782f2 |
3187 | languageName: node | 3172 | languageName: node |
3188 | linkType: hard | 3173 | linkType: hard |
3189 | 3174 | ||
@@ -3234,12 +3219,12 @@ __metadata: | |||
3234 | languageName: node | 3219 | languageName: node |
3235 | linkType: hard | 3220 | linkType: hard |
3236 | 3221 | ||
3237 | "clean-css@npm:5.2.0": | 3222 | "clean-css@npm:~5.3.2": |
3238 | version: 5.2.0 | 3223 | version: 5.3.2 |
3239 | resolution: "clean-css@npm:5.2.0" | 3224 | resolution: "clean-css@npm:5.3.2" |
3240 | dependencies: | 3225 | dependencies: |
3241 | source-map: "npm:~0.6.0" | 3226 | source-map: "npm:~0.6.0" |
3242 | checksum: 845c87cf21e30358f9caff7cae0401e33b086764ced11c9ca5cd86666547a53ef20ff4bd7458187be5bf96922fe6a5f8f35d657c0488b4fefe527457afd6559f | 3227 | checksum: 3ba045341c3d4bb37b0cb69a2ea20774f60736a9ff7a11ea78bb457bc84fa1e2e7264da28a755d0f02ccfbe841b9e1d8321a9c3938f160f8bdd70c29fbb7dc9a |
3243 | languageName: node | 3228 | languageName: node |
3244 | linkType: hard | 3229 | linkType: hard |
3245 | 3230 | ||
@@ -3289,7 +3274,7 @@ __metadata: | |||
3289 | languageName: node | 3274 | languageName: node |
3290 | linkType: hard | 3275 | linkType: hard |
3291 | 3276 | ||
3292 | "color-support@npm:^1.1.2": | 3277 | "color-support@npm:^1.1.3": |
3293 | version: 1.1.3 | 3278 | version: 1.1.3 |
3294 | resolution: "color-support@npm:1.1.3" | 3279 | resolution: "color-support@npm:1.1.3" |
3295 | bin: | 3280 | bin: |
@@ -3298,6 +3283,13 @@ __metadata: | |||
3298 | languageName: node | 3283 | languageName: node |
3299 | linkType: hard | 3284 | linkType: hard |
3300 | 3285 | ||
3286 | "commander@npm:^10.0.0": | ||
3287 | version: 10.0.1 | ||
3288 | resolution: "commander@npm:10.0.1" | ||
3289 | checksum: b2a03d799104eac407ca031b94126c98198594fcff41554eb253cef748de57fb1a4cdd591baa075de589f2fddf1f968d1ecd1b79e8b47570ee441ab4f3363776 | ||
3290 | languageName: node | ||
3291 | linkType: hard | ||
3292 | |||
3301 | "commander@npm:^2.20.0": | 3293 | "commander@npm:^2.20.0": |
3302 | version: 2.20.3 | 3294 | version: 2.20.3 |
3303 | resolution: "commander@npm:2.20.3" | 3295 | resolution: "commander@npm:2.20.3" |
@@ -3312,13 +3304,6 @@ __metadata: | |||
3312 | languageName: node | 3304 | languageName: node |
3313 | linkType: hard | 3305 | linkType: hard |
3314 | 3306 | ||
3315 | "commander@npm:^9.4.1": | ||
3316 | version: 9.4.1 | ||
3317 | resolution: "commander@npm:9.4.1" | ||
3318 | checksum: 7d4c1f3bd4ad451f43fce51b9c73dc2d61fca00a9249196aa2d3d66fc46f2460c917c73ea9221c278fb8d35f496384f5125806e69108581a8e8bc673752c94e6 | ||
3319 | languageName: node | ||
3320 | linkType: hard | ||
3321 | |||
3322 | "common-tags@npm:^1.8.0": | 3307 | "common-tags@npm:^1.8.0": |
3323 | version: 1.8.2 | 3308 | version: 1.8.2 |
3324 | resolution: "common-tags@npm:1.8.2" | 3309 | resolution: "common-tags@npm:1.8.2" |
@@ -3334,13 +3319,13 @@ __metadata: | |||
3334 | linkType: hard | 3319 | linkType: hard |
3335 | 3320 | ||
3336 | "confusing-browser-globals@npm:^1.0.10": | 3321 | "confusing-browser-globals@npm:^1.0.10": |
3337 | version: 1.0.10 | 3322 | version: 1.0.11 |
3338 | resolution: "confusing-browser-globals@npm:1.0.10" | 3323 | resolution: "confusing-browser-globals@npm:1.0.11" |
3339 | checksum: 152167105914af30de63f941a3405eb1973253d07b7c25a9705bc96ace915e8b9337a2cf8194523749832c52d47c1f7afea70dfccc6281be8dc174b4dd212a3e | 3324 | checksum: 1e2de021f111bd078564c4c6e03f1259260e297499de229875c583fac9de2de0719c75169bc24ed53020329e6f167c8c598c1228611baa72c6cf309204ddc192 |
3340 | languageName: node | 3325 | languageName: node |
3341 | linkType: hard | 3326 | linkType: hard |
3342 | 3327 | ||
3343 | "console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0": | 3328 | "console-control-strings@npm:^1.1.0": |
3344 | version: 1.1.0 | 3329 | version: 1.1.0 |
3345 | resolution: "console-control-strings@npm:1.1.0" | 3330 | resolution: "console-control-strings@npm:1.1.0" |
3346 | checksum: d286ffd439aac97472557325e6aa4cc3a2eefe495a70a9640b89508880db4bba1bd1b29bb011608c23033d884c84cac8da95c8f12ca0ec69ccc70d6d5f39c618 | 3331 | checksum: d286ffd439aac97472557325e6aa4cc3a2eefe495a70a9640b89508880db4bba1bd1b29bb011608c23033d884c84cac8da95c8f12ca0ec69ccc70d6d5f39c618 |
@@ -3348,41 +3333,38 @@ __metadata: | |||
3348 | linkType: hard | 3333 | linkType: hard |
3349 | 3334 | ||
3350 | "convert-source-map@npm:^1.5.0, convert-source-map@npm:^1.7.0": | 3335 | "convert-source-map@npm:^1.5.0, convert-source-map@npm:^1.7.0": |
3351 | version: 1.8.0 | 3336 | version: 1.9.0 |
3352 | resolution: "convert-source-map@npm:1.8.0" | 3337 | resolution: "convert-source-map@npm:1.9.0" |
3353 | dependencies: | 3338 | checksum: 7c665ec75a792623eff22413a59fb6646770063eb871efe7550cfba4f17177137ea300f964c2763db69355384398de491126fbe064fa83b25e3023b87711b6e4 |
3354 | safe-buffer: "npm:~5.1.1" | ||
3355 | checksum: 1548dbc3808672aec5942ada45bf57ceb2287ac2566e9935e35d95ffeab562f33ee1221922ec2ea7f3ff4b85828c8247599144069fae81a86e295cc932190dcf | ||
3356 | languageName: node | 3339 | languageName: node |
3357 | linkType: hard | 3340 | linkType: hard |
3358 | 3341 | ||
3359 | "core-js-compat@npm:^3.21.0, core-js-compat@npm:^3.22.1": | 3342 | "core-js-compat@npm:^3.21.0, core-js-compat@npm:^3.22.1": |
3360 | version: 3.24.1 | 3343 | version: 3.31.0 |
3361 | resolution: "core-js-compat@npm:3.24.1" | 3344 | resolution: "core-js-compat@npm:3.31.0" |
3362 | dependencies: | 3345 | dependencies: |
3363 | browserslist: "npm:^4.21.3" | 3346 | browserslist: "npm:^4.21.5" |
3364 | semver: "npm:7.0.0" | 3347 | checksum: 2e04820a0df57bbba1acc6d057792a718c765b7af8a9e59cff986f3c60189d0c8cad1e2c2fa056345da79c86fdd28f587363598a68ee7734cdd0e229ddda6ae6 |
3365 | checksum: 6e2180c33e614357bfb9bb933e2ed112d21c1d7e18e61a9c5ed1786d85f7c89f88a9bb54bb342ca4e8ae240dbb64749021db02612e1e6c7a4b3f43a954fc908f | ||
3366 | languageName: node | 3348 | languageName: node |
3367 | linkType: hard | 3349 | linkType: hard |
3368 | 3350 | ||
3369 | "cosmiconfig@npm:^7.0.0": | 3351 | "cosmiconfig@npm:^7.0.0": |
3370 | version: 7.0.1 | 3352 | version: 7.1.0 |
3371 | resolution: "cosmiconfig@npm:7.0.1" | 3353 | resolution: "cosmiconfig@npm:7.1.0" |
3372 | dependencies: | 3354 | dependencies: |
3373 | "@types/parse-json": "npm:^4.0.0" | 3355 | "@types/parse-json": "npm:^4.0.0" |
3374 | import-fresh: "npm:^3.2.1" | 3356 | import-fresh: "npm:^3.2.1" |
3375 | parse-json: "npm:^5.0.0" | 3357 | parse-json: "npm:^5.0.0" |
3376 | path-type: "npm:^4.0.0" | 3358 | path-type: "npm:^4.0.0" |
3377 | yaml: "npm:^1.10.0" | 3359 | yaml: "npm:^1.10.0" |
3378 | checksum: f5b0588faeb39d1bcb846504cb6693121bf6af4d09a5a0523a9201d189a769a067db33e36d6c6fe23937cc24f9771ad0e76ecb3056a4e244697867d62aa50ec0 | 3360 | checksum: 8add352f0abd55fc5eaef0823937c33992e5ae670831418c8ff98bb301952260467533b09b8e9257dc360baa270610a7a92b288d94eb25d6f577a0d7e507801b |
3379 | languageName: node | 3361 | languageName: node |
3380 | linkType: hard | 3362 | linkType: hard |
3381 | 3363 | ||
3382 | "crelt@npm:^1.0.5": | 3364 | "crelt@npm:^1.0.5": |
3383 | version: 1.0.5 | 3365 | version: 1.0.6 |
3384 | resolution: "crelt@npm:1.0.5" | 3366 | resolution: "crelt@npm:1.0.6" |
3385 | checksum: b6064ce286cdac8ddd52363989f59dbc28faa2fba69f8da4f98ef1d8984c0fb2afd50f6130084d9aee05a6401fdb6d17a92874aeed2229dccf9284a2c915ed63 | 3367 | checksum: ceed33a9356c4502fefae5941bc4aa9840b5738f5e5ea2f162cace5c755861bf4a738330cdb807d169241aca8135fa9ef798c379d190e3ede9e14dffab2286bf |
3386 | languageName: node | 3368 | languageName: node |
3387 | linkType: hard | 3369 | linkType: hard |
3388 | 3370 | ||
@@ -3398,7 +3380,7 @@ __metadata: | |||
3398 | languageName: node | 3380 | languageName: node |
3399 | linkType: hard | 3381 | linkType: hard |
3400 | 3382 | ||
3401 | "cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": | 3383 | "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": |
3402 | version: 7.0.3 | 3384 | version: 7.0.3 |
3403 | resolution: "cross-spawn@npm:7.0.3" | 3385 | resolution: "cross-spawn@npm:7.0.3" |
3404 | dependencies: | 3386 | dependencies: |
@@ -3416,10 +3398,10 @@ __metadata: | |||
3416 | languageName: node | 3398 | languageName: node |
3417 | linkType: hard | 3399 | linkType: hard |
3418 | 3400 | ||
3419 | "csstype@npm:^3.0.2, csstype@npm:^3.1.1": | 3401 | "csstype@npm:^3.0.2, csstype@npm:^3.1.2": |
3420 | version: 3.1.1 | 3402 | version: 3.1.2 |
3421 | resolution: "csstype@npm:3.1.1" | 3403 | resolution: "csstype@npm:3.1.2" |
3422 | checksum: 39c4533f337cad38b9574a24b4b94bb203f091882295b6b4fb27e9e2b17148b188847f5fb728796af60bd0b80c502d510f89fe7ada3b661eaa6bca758c902036 | 3404 | checksum: 9f4357df50023d227d535beb807ccf8e6d8ad6b639afe375898214ebde729aa275731a19d9bcbf01444a6904008cc0d47fbbefa5fa5fc59d7d40e3595d0d41ae |
3423 | languageName: node | 3405 | languageName: node |
3424 | linkType: hard | 3406 | linkType: hard |
3425 | 3407 | ||
@@ -3430,7 +3412,7 @@ __metadata: | |||
3430 | languageName: node | 3412 | languageName: node |
3431 | linkType: hard | 3413 | linkType: hard |
3432 | 3414 | ||
3433 | "debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": | 3415 | "debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": |
3434 | version: 4.3.4 | 3416 | version: 4.3.4 |
3435 | resolution: "debug@npm:4.3.4" | 3417 | resolution: "debug@npm:4.3.4" |
3436 | dependencies: | 3418 | dependencies: |
@@ -3451,31 +3433,6 @@ __metadata: | |||
3451 | languageName: node | 3433 | languageName: node |
3452 | linkType: hard | 3434 | linkType: hard |
3453 | 3435 | ||
3454 | "deep-equal@npm:^2.0.5": | ||
3455 | version: 2.2.0 | ||
3456 | resolution: "deep-equal@npm:2.2.0" | ||
3457 | dependencies: | ||
3458 | call-bind: "npm:^1.0.2" | ||
3459 | es-get-iterator: "npm:^1.1.2" | ||
3460 | get-intrinsic: "npm:^1.1.3" | ||
3461 | is-arguments: "npm:^1.1.1" | ||
3462 | is-array-buffer: "npm:^3.0.1" | ||
3463 | is-date-object: "npm:^1.0.5" | ||
3464 | is-regex: "npm:^1.1.4" | ||
3465 | is-shared-array-buffer: "npm:^1.0.2" | ||
3466 | isarray: "npm:^2.0.5" | ||
3467 | object-is: "npm:^1.1.5" | ||
3468 | object-keys: "npm:^1.1.1" | ||
3469 | object.assign: "npm:^4.1.4" | ||
3470 | regexp.prototype.flags: "npm:^1.4.3" | ||
3471 | side-channel: "npm:^1.0.4" | ||
3472 | which-boxed-primitive: "npm:^1.0.2" | ||
3473 | which-collection: "npm:^1.0.1" | ||
3474 | which-typed-array: "npm:^1.1.9" | ||
3475 | checksum: 63e4ae4ce68cb45a6c48c5d702bb8ea8d05257140f26dfae90a9c08c0da02ce92680d8ffda553f102294edc6b5e2110d98d74d34989632e3fc128232459b234f | ||
3476 | languageName: node | ||
3477 | linkType: hard | ||
3478 | |||
3479 | "deep-is@npm:^0.1.3": | 3436 | "deep-is@npm:^0.1.3": |
3480 | version: 0.1.4 | 3437 | version: 0.1.4 |
3481 | resolution: "deep-is@npm:0.1.4" | 3438 | resolution: "deep-is@npm:0.1.4" |
@@ -3484,9 +3441,9 @@ __metadata: | |||
3484 | linkType: hard | 3441 | linkType: hard |
3485 | 3442 | ||
3486 | "deepmerge@npm:^4.2.2": | 3443 | "deepmerge@npm:^4.2.2": |
3487 | version: 4.2.2 | 3444 | version: 4.3.1 |
3488 | resolution: "deepmerge@npm:4.2.2" | 3445 | resolution: "deepmerge@npm:4.3.1" |
3489 | checksum: f37e1f5e8cfca71833a43a5d14ad1bf533689b1e5acff72eefa9bdd26f1a4fe80153e29238e8b3052e5f8c4169a95992456f3b60cd50a9db94a84680712a9aca | 3446 | checksum: 367ae28f98c94b2807dd6eba48f4c3d051742c2ab431f1037d60f5cb5af989aac2b170b6a891d5617679bcb95881b4e22a0616161a1f2154894b349b13d384e0 |
3490 | languageName: node | 3447 | languageName: node |
3491 | linkType: hard | 3448 | linkType: hard |
3492 | 3449 | ||
@@ -3497,13 +3454,13 @@ __metadata: | |||
3497 | languageName: node | 3454 | languageName: node |
3498 | linkType: hard | 3455 | linkType: hard |
3499 | 3456 | ||
3500 | "define-properties@npm:^1.1.3, define-properties@npm:^1.1.4": | 3457 | "define-properties@npm:^1.1.3, define-properties@npm:^1.1.4, define-properties@npm:^1.2.0": |
3501 | version: 1.1.4 | 3458 | version: 1.2.0 |
3502 | resolution: "define-properties@npm:1.1.4" | 3459 | resolution: "define-properties@npm:1.2.0" |
3503 | dependencies: | 3460 | dependencies: |
3504 | has-property-descriptors: "npm:^1.0.0" | 3461 | has-property-descriptors: "npm:^1.0.0" |
3505 | object-keys: "npm:^1.1.1" | 3462 | object-keys: "npm:^1.1.1" |
3506 | checksum: 94a6a24f787300c11c53b76e207e53908c86fd508f0dacf0bab49afff62b20439513e14318cebdb3223eef7a49d572eaf7f069a21af80e3ca3f898bbf22c9c8e | 3463 | checksum: f7d87afb83055124b9c0d18d1abb349ca0741d3c5c38e79422447ac800cea5ee1d0ffbc01f121f059964fd0f17e4d80602ba5533427b9dec18df0fa6b9c91585 |
3507 | languageName: node | 3464 | languageName: node |
3508 | linkType: hard | 3465 | linkType: hard |
3509 | 3466 | ||
@@ -3514,10 +3471,17 @@ __metadata: | |||
3514 | languageName: node | 3471 | languageName: node |
3515 | linkType: hard | 3472 | linkType: hard |
3516 | 3473 | ||
3517 | "depd@npm:^1.1.2": | 3474 | "depd@npm:^2.0.0": |
3518 | version: 1.1.2 | 3475 | version: 2.0.0 |
3519 | resolution: "depd@npm:1.1.2" | 3476 | resolution: "depd@npm:2.0.0" |
3520 | checksum: e9fb93771e7cf3d88c4e38ca95742f7c58cae31928eb5e67a1a14d970325a02755451bb7fafc2db72333a5cf7fc14e07e4f8d709c0df70143355e77e8d090bac | 3477 | checksum: 170e90bfa90081462303140623fdf938aeba2f066b1c7a9a1c599b257ea8127d36b9d39fad5a9d71f5282a3bb5a8ca287ce4d8c6cecd0f65e6bf3779cc6091be |
3478 | languageName: node | ||
3479 | linkType: hard | ||
3480 | |||
3481 | "dequal@npm:^2.0.3": | ||
3482 | version: 2.0.3 | ||
3483 | resolution: "dequal@npm:2.0.3" | ||
3484 | checksum: 7a633ec0ba78bc08ba217b762b15157d2ec99edb50a82124df2c341255b1943217215872888981cc6a6ee02406ab1b09783f5b51b7db8d8f8f1284092f379aad | ||
3521 | languageName: node | 3485 | languageName: node |
3522 | linkType: hard | 3486 | linkType: hard |
3523 | 3487 | ||
@@ -3568,21 +3532,28 @@ __metadata: | |||
3568 | languageName: node | 3532 | languageName: node |
3569 | linkType: hard | 3533 | linkType: hard |
3570 | 3534 | ||
3535 | "eastasianwidth@npm:^0.2.0": | ||
3536 | version: 0.2.0 | ||
3537 | resolution: "eastasianwidth@npm:0.2.0" | ||
3538 | checksum: 0b403fab07c8a53488ea6212435f12b8eeec0b0b828554381b333ea1e41104a137cfe812fa83d021ea0270eb6249226bb0dcb61f8f94bed52b943fa2f720542f | ||
3539 | languageName: node | ||
3540 | linkType: hard | ||
3541 | |||
3571 | "ejs@npm:^3.1.6": | 3542 | "ejs@npm:^3.1.6": |
3572 | version: 3.1.8 | 3543 | version: 3.1.9 |
3573 | resolution: "ejs@npm:3.1.8" | 3544 | resolution: "ejs@npm:3.1.9" |
3574 | dependencies: | 3545 | dependencies: |
3575 | jake: "npm:^10.8.5" | 3546 | jake: "npm:^10.8.5" |
3576 | bin: | 3547 | bin: |
3577 | ejs: bin/cli.js | 3548 | ejs: bin/cli.js |
3578 | checksum: 0135c63a1e0745cbbad1a44f64674535f46821b58a30f55b14f25812cdd8dc3036b70bdbb6fe79f8d7c438fb10ede54adcd2ac3f5a88a4734d0dee48b91e614f | 3549 | checksum: c970131c2c9831dc260d2420055c1e69500a75a460301cf3cac3bab8ff19cb15de2fcc2c695051420b123cd9f8c20c2a18154916d3494b4870ea68a0d677ac12 |
3579 | languageName: node | 3550 | languageName: node |
3580 | linkType: hard | 3551 | linkType: hard |
3581 | 3552 | ||
3582 | "electron-to-chromium@npm:^1.4.202": | 3553 | "electron-to-chromium@npm:^1.4.431": |
3583 | version: 1.4.202 | 3554 | version: 1.4.433 |
3584 | resolution: "electron-to-chromium@npm:1.4.202" | 3555 | resolution: "electron-to-chromium@npm:1.4.433" |
3585 | checksum: 731fbbc1977346d9877fdf1586f10b13db0c957d29d2ad97576841f6005defe1aa24aad86c7426a01d81b680c1ccd2a713829de7d98948887466fa090324a1e3 | 3556 | checksum: 7bc3350f4a02b9dca6f5b50f73d613caf3549064171213064c16be45b0a1ebd48c1feb5aa4ee7cf0ced244a9e53837300648084ee67eee6bccc039145eeb6367 |
3586 | languageName: node | 3557 | languageName: node |
3587 | linkType: hard | 3558 | linkType: hard |
3588 | 3559 | ||
@@ -3600,7 +3571,7 @@ __metadata: | |||
3600 | languageName: node | 3571 | languageName: node |
3601 | linkType: hard | 3572 | linkType: hard |
3602 | 3573 | ||
3603 | "encoding@npm:^0.1.12": | 3574 | "encoding@npm:^0.1.13": |
3604 | version: 0.1.13 | 3575 | version: 0.1.13 |
3605 | resolution: "encoding@npm:0.1.13" | 3576 | resolution: "encoding@npm:0.1.13" |
3606 | dependencies: | 3577 | dependencies: |
@@ -3609,20 +3580,20 @@ __metadata: | |||
3609 | languageName: node | 3580 | languageName: node |
3610 | linkType: hard | 3581 | linkType: hard |
3611 | 3582 | ||
3612 | "enhanced-resolve@npm:^5.10.0": | 3583 | "enhanced-resolve@npm:^5.12.0": |
3613 | version: 5.10.0 | 3584 | version: 5.15.0 |
3614 | resolution: "enhanced-resolve@npm:5.10.0" | 3585 | resolution: "enhanced-resolve@npm:5.15.0" |
3615 | dependencies: | 3586 | dependencies: |
3616 | graceful-fs: "npm:^4.2.4" | 3587 | graceful-fs: "npm:^4.2.4" |
3617 | tapable: "npm:^2.2.0" | 3588 | tapable: "npm:^2.2.0" |
3618 | checksum: 97f2cb6318920931b84ea1209b220b7f0324581eef434f16c1df95d1997a4bbd80cceabd6be81465cf450060dee84b265d317ac23276369756b2d8a3ca68e9d6 | 3589 | checksum: 80df14e9d11ae561b7477866cf5d475aaf5988de7f118ef5a05b94722a107ab58928e3e2cd5a270f696a4f6a16308661872bd6f27cccb2dbe4d8283eee39f62d |
3619 | languageName: node | 3590 | languageName: node |
3620 | linkType: hard | 3591 | linkType: hard |
3621 | 3592 | ||
3622 | "entities@npm:^4.4.0": | 3593 | "entities@npm:^4.4.0": |
3623 | version: 4.4.0 | 3594 | version: 4.5.0 |
3624 | resolution: "entities@npm:4.4.0" | 3595 | resolution: "entities@npm:4.5.0" |
3625 | checksum: 80f4887c3e96be47c73e6d7a7a759b001cd070444d92d4df28fb5def41fc51f6fe9e3a4fe25dafacefe292798cf9f35f92f16c85f9de36c658fff414bd8394be | 3596 | checksum: 3c45485495e0a5481893b0b618aec46fbe960130bf0437b052ec08c25a8c781b978a06fca889ad7af79634d9111df159c2a37b56d2b2a847c0c4625cd40ab1be |
3626 | languageName: node | 3597 | languageName: node |
3627 | linkType: hard | 3598 | linkType: hard |
3628 | 3599 | ||
@@ -3649,51 +3620,56 @@ __metadata: | |||
3649 | languageName: node | 3620 | languageName: node |
3650 | linkType: hard | 3621 | linkType: hard |
3651 | 3622 | ||
3652 | "es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.5, es-abstract@npm:^1.20.4": | 3623 | "es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4": |
3653 | version: 1.20.4 | 3624 | version: 1.21.2 |
3654 | resolution: "es-abstract@npm:1.20.4" | 3625 | resolution: "es-abstract@npm:1.21.2" |
3655 | dependencies: | 3626 | dependencies: |
3627 | array-buffer-byte-length: "npm:^1.0.0" | ||
3628 | available-typed-arrays: "npm:^1.0.5" | ||
3656 | call-bind: "npm:^1.0.2" | 3629 | call-bind: "npm:^1.0.2" |
3630 | es-set-tostringtag: "npm:^2.0.1" | ||
3657 | es-to-primitive: "npm:^1.2.1" | 3631 | es-to-primitive: "npm:^1.2.1" |
3658 | function-bind: "npm:^1.1.1" | ||
3659 | function.prototype.name: "npm:^1.1.5" | 3632 | function.prototype.name: "npm:^1.1.5" |
3660 | get-intrinsic: "npm:^1.1.3" | 3633 | get-intrinsic: "npm:^1.2.0" |
3661 | get-symbol-description: "npm:^1.0.0" | 3634 | get-symbol-description: "npm:^1.0.0" |
3635 | globalthis: "npm:^1.0.3" | ||
3636 | gopd: "npm:^1.0.1" | ||
3662 | has: "npm:^1.0.3" | 3637 | has: "npm:^1.0.3" |
3663 | has-property-descriptors: "npm:^1.0.0" | 3638 | has-property-descriptors: "npm:^1.0.0" |
3639 | has-proto: "npm:^1.0.1" | ||
3664 | has-symbols: "npm:^1.0.3" | 3640 | has-symbols: "npm:^1.0.3" |
3665 | internal-slot: "npm:^1.0.3" | 3641 | internal-slot: "npm:^1.0.5" |
3642 | is-array-buffer: "npm:^3.0.2" | ||
3666 | is-callable: "npm:^1.2.7" | 3643 | is-callable: "npm:^1.2.7" |
3667 | is-negative-zero: "npm:^2.0.2" | 3644 | is-negative-zero: "npm:^2.0.2" |
3668 | is-regex: "npm:^1.1.4" | 3645 | is-regex: "npm:^1.1.4" |
3669 | is-shared-array-buffer: "npm:^1.0.2" | 3646 | is-shared-array-buffer: "npm:^1.0.2" |
3670 | is-string: "npm:^1.0.7" | 3647 | is-string: "npm:^1.0.7" |
3648 | is-typed-array: "npm:^1.1.10" | ||
3671 | is-weakref: "npm:^1.0.2" | 3649 | is-weakref: "npm:^1.0.2" |
3672 | object-inspect: "npm:^1.12.2" | 3650 | object-inspect: "npm:^1.12.3" |
3673 | object-keys: "npm:^1.1.1" | 3651 | object-keys: "npm:^1.1.1" |
3674 | object.assign: "npm:^4.1.4" | 3652 | object.assign: "npm:^4.1.4" |
3675 | regexp.prototype.flags: "npm:^1.4.3" | 3653 | regexp.prototype.flags: "npm:^1.4.3" |
3676 | safe-regex-test: "npm:^1.0.0" | 3654 | safe-regex-test: "npm:^1.0.0" |
3677 | string.prototype.trimend: "npm:^1.0.5" | 3655 | string.prototype.trim: "npm:^1.2.7" |
3678 | string.prototype.trimstart: "npm:^1.0.5" | 3656 | string.prototype.trimend: "npm:^1.0.6" |
3657 | string.prototype.trimstart: "npm:^1.0.6" | ||
3658 | typed-array-length: "npm:^1.0.4" | ||
3679 | unbox-primitive: "npm:^1.0.2" | 3659 | unbox-primitive: "npm:^1.0.2" |
3680 | checksum: afe27b8a805e0d46799b505c828c6331e7c3624ff62a237ea2b8040881c10a332eb685cb5443d27a99438764191f3c52fde54efca063098483f4c0a735948103 | 3660 | which-typed-array: "npm:^1.1.9" |
3661 | checksum: 63800c131f77145c020be1a4340031f8322f03c6c73cd1336d5893cab09bce257f6c217e60a60188539096f72bc1f4885f474e8bbae8fa949edc8679f905dfd2 | ||
3681 | languageName: node | 3662 | languageName: node |
3682 | linkType: hard | 3663 | linkType: hard |
3683 | 3664 | ||
3684 | "es-get-iterator@npm:^1.1.2": | 3665 | "es-set-tostringtag@npm:^2.0.1": |
3685 | version: 1.1.2 | 3666 | version: 2.0.1 |
3686 | resolution: "es-get-iterator@npm:1.1.2" | 3667 | resolution: "es-set-tostringtag@npm:2.0.1" |
3687 | dependencies: | 3668 | dependencies: |
3688 | call-bind: "npm:^1.0.2" | 3669 | get-intrinsic: "npm:^1.1.3" |
3689 | get-intrinsic: "npm:^1.1.0" | 3670 | has: "npm:^1.0.3" |
3690 | has-symbols: "npm:^1.0.1" | 3671 | has-tostringtag: "npm:^1.0.0" |
3691 | is-arguments: "npm:^1.1.0" | 3672 | checksum: fecdbc1f62b901b58b33d47e2daa6b43105b33dd233792643dc7aa1d7256d2fa13c47816d1e03e121e948d01d009faa366466e436baefb886afa18720945d439 |
3692 | is-map: "npm:^2.0.2" | ||
3693 | is-set: "npm:^2.0.2" | ||
3694 | is-string: "npm:^1.0.5" | ||
3695 | isarray: "npm:^2.0.5" | ||
3696 | checksum: 65ec8b2482715444bc92121a2e63d8795ca2026ddc29efaca925eba16331a74b0f3edee0530708932a3710dfe42855a35dd039dc9bb794874ee793ff2cbd1f09 | ||
3697 | languageName: node | 3673 | languageName: node |
3698 | linkType: hard | 3674 | linkType: hard |
3699 | 3675 | ||
@@ -3717,32 +3693,32 @@ __metadata: | |||
3717 | languageName: node | 3693 | languageName: node |
3718 | linkType: hard | 3694 | linkType: hard |
3719 | 3695 | ||
3720 | "esbuild@npm:^0.16.14": | 3696 | "esbuild@npm:^0.17.5": |
3721 | version: 0.16.17 | 3697 | version: 0.17.19 |
3722 | resolution: "esbuild@npm:0.16.17" | 3698 | resolution: "esbuild@npm:0.17.19" |
3723 | dependencies: | 3699 | dependencies: |
3724 | "@esbuild/android-arm": "npm:0.16.17" | 3700 | "@esbuild/android-arm": "npm:0.17.19" |
3725 | "@esbuild/android-arm64": "npm:0.16.17" | 3701 | "@esbuild/android-arm64": "npm:0.17.19" |
3726 | "@esbuild/android-x64": "npm:0.16.17" | 3702 | "@esbuild/android-x64": "npm:0.17.19" |
3727 | "@esbuild/darwin-arm64": "npm:0.16.17" | 3703 | "@esbuild/darwin-arm64": "npm:0.17.19" |
3728 | "@esbuild/darwin-x64": "npm:0.16.17" | 3704 | "@esbuild/darwin-x64": "npm:0.17.19" |
3729 | "@esbuild/freebsd-arm64": "npm:0.16.17" | 3705 | "@esbuild/freebsd-arm64": "npm:0.17.19" |
3730 | "@esbuild/freebsd-x64": "npm:0.16.17" | 3706 | "@esbuild/freebsd-x64": "npm:0.17.19" |
3731 | "@esbuild/linux-arm": "npm:0.16.17" | 3707 | "@esbuild/linux-arm": "npm:0.17.19" |
3732 | "@esbuild/linux-arm64": "npm:0.16.17" | 3708 | "@esbuild/linux-arm64": "npm:0.17.19" |
3733 | "@esbuild/linux-ia32": "npm:0.16.17" | 3709 | "@esbuild/linux-ia32": "npm:0.17.19" |
3734 | "@esbuild/linux-loong64": "npm:0.16.17" | 3710 | "@esbuild/linux-loong64": "npm:0.17.19" |
3735 | "@esbuild/linux-mips64el": "npm:0.16.17" | 3711 | "@esbuild/linux-mips64el": "npm:0.17.19" |
3736 | "@esbuild/linux-ppc64": "npm:0.16.17" | 3712 | "@esbuild/linux-ppc64": "npm:0.17.19" |
3737 | "@esbuild/linux-riscv64": "npm:0.16.17" | 3713 | "@esbuild/linux-riscv64": "npm:0.17.19" |
3738 | "@esbuild/linux-s390x": "npm:0.16.17" | 3714 | "@esbuild/linux-s390x": "npm:0.17.19" |
3739 | "@esbuild/linux-x64": "npm:0.16.17" | 3715 | "@esbuild/linux-x64": "npm:0.17.19" |
3740 | "@esbuild/netbsd-x64": "npm:0.16.17" | 3716 | "@esbuild/netbsd-x64": "npm:0.17.19" |
3741 | "@esbuild/openbsd-x64": "npm:0.16.17" | 3717 | "@esbuild/openbsd-x64": "npm:0.17.19" |
3742 | "@esbuild/sunos-x64": "npm:0.16.17" | 3718 | "@esbuild/sunos-x64": "npm:0.17.19" |
3743 | "@esbuild/win32-arm64": "npm:0.16.17" | 3719 | "@esbuild/win32-arm64": "npm:0.17.19" |
3744 | "@esbuild/win32-ia32": "npm:0.16.17" | 3720 | "@esbuild/win32-ia32": "npm:0.17.19" |
3745 | "@esbuild/win32-x64": "npm:0.16.17" | 3721 | "@esbuild/win32-x64": "npm:0.17.19" |
3746 | dependenciesMeta: | 3722 | dependenciesMeta: |
3747 | "@esbuild/android-arm": | 3723 | "@esbuild/android-arm": |
3748 | optional: true | 3724 | optional: true |
@@ -3790,7 +3766,7 @@ __metadata: | |||
3790 | optional: true | 3766 | optional: true |
3791 | bin: | 3767 | bin: |
3792 | esbuild: bin/esbuild | 3768 | esbuild: bin/esbuild |
3793 | checksum: a5fdcf450570aa4486216ac219789f381c1ba52f658e637e7fdce1daa3595f2c67050bdde622cb2c2cd3b2ee885192db163fcbb3d3e84891f5dca40369d093d4 | 3769 | checksum: 6df07a802006da7bcf3135f3014fb9f45f0f8772dc76315a4cc021e616e426cf04ed247635c5beed62d66f9aafd1db28d7b01664339fa438aacc2092723980a8 |
3794 | languageName: node | 3770 | languageName: node |
3795 | linkType: hard | 3771 | linkType: hard |
3796 | 3772 | ||
@@ -3868,14 +3844,14 @@ __metadata: | |||
3868 | languageName: node | 3844 | languageName: node |
3869 | linkType: hard | 3845 | linkType: hard |
3870 | 3846 | ||
3871 | "eslint-config-prettier@npm:^8.6.0": | 3847 | "eslint-config-prettier@npm:^8.8.0": |
3872 | version: 8.6.0 | 3848 | version: 8.8.0 |
3873 | resolution: "eslint-config-prettier@npm:8.6.0" | 3849 | resolution: "eslint-config-prettier@npm:8.8.0" |
3874 | peerDependencies: | 3850 | peerDependencies: |
3875 | eslint: ">=7.0.0" | 3851 | eslint: ">=7.0.0" |
3876 | bin: | 3852 | bin: |
3877 | eslint-config-prettier: bin/cli.js | 3853 | eslint-config-prettier: bin/cli.js |
3878 | checksum: 2aeb302e532b739d4a440a22463dab157c2aee4a5b89da168deade0feccdf2e645a1a40add6f3b9c635d30fd0a7a4d61339dc7df5d7c57f0a19b04eed0a0ab81 | 3854 | checksum: 942d0b9d162729967a1816a23107066ae176e5f3f3ebaa3be9fd05cc3dbc1d10e389f127a298fbd564f9cc3e419c9635623a974de9327042289d96469dd91528 |
3879 | languageName: node | 3855 | languageName: node |
3880 | linkType: hard | 3856 | linkType: hard |
3881 | 3857 | ||
@@ -3890,33 +3866,34 @@ __metadata: | |||
3890 | languageName: node | 3866 | languageName: node |
3891 | linkType: hard | 3867 | linkType: hard |
3892 | 3868 | ||
3893 | "eslint-import-resolver-typescript@npm:^3.5.3": | 3869 | "eslint-import-resolver-typescript@npm:^3.5.5": |
3894 | version: 3.5.3 | 3870 | version: 3.5.5 |
3895 | resolution: "eslint-import-resolver-typescript@npm:3.5.3" | 3871 | resolution: "eslint-import-resolver-typescript@npm:3.5.5" |
3896 | dependencies: | 3872 | dependencies: |
3897 | debug: "npm:^4.3.4" | 3873 | debug: "npm:^4.3.4" |
3898 | enhanced-resolve: "npm:^5.10.0" | 3874 | enhanced-resolve: "npm:^5.12.0" |
3899 | get-tsconfig: "npm:^4.2.0" | 3875 | eslint-module-utils: "npm:^2.7.4" |
3900 | globby: "npm:^13.1.2" | 3876 | get-tsconfig: "npm:^4.5.0" |
3901 | is-core-module: "npm:^2.10.0" | 3877 | globby: "npm:^13.1.3" |
3878 | is-core-module: "npm:^2.11.0" | ||
3902 | is-glob: "npm:^4.0.3" | 3879 | is-glob: "npm:^4.0.3" |
3903 | synckit: "npm:^0.8.4" | 3880 | synckit: "npm:^0.8.5" |
3904 | peerDependencies: | 3881 | peerDependencies: |
3905 | eslint: "*" | 3882 | eslint: "*" |
3906 | eslint-plugin-import: "*" | 3883 | eslint-plugin-import: "*" |
3907 | checksum: 0775904784f39582f0e3f26530a26a5994a8147a9d3f403f020514af1a625ee0062b2bd54b0306e686245910c2001172c130cf42e7f0a28b4146c81ff4cec537 | 3884 | checksum: 4a398b14440ddc3aab1b300defceeea32f70798c8fbe4dfaadbc329ad0965ab85ba91beb5c100bb8e546f8aba996161ac8d73dfde3f26dc168805c02fb54b1ee |
3908 | languageName: node | 3885 | languageName: node |
3909 | linkType: hard | 3886 | linkType: hard |
3910 | 3887 | ||
3911 | "eslint-module-utils@npm:^2.7.4": | 3888 | "eslint-module-utils@npm:^2.7.4": |
3912 | version: 2.7.4 | 3889 | version: 2.8.0 |
3913 | resolution: "eslint-module-utils@npm:2.7.4" | 3890 | resolution: "eslint-module-utils@npm:2.8.0" |
3914 | dependencies: | 3891 | dependencies: |
3915 | debug: "npm:^3.2.7" | 3892 | debug: "npm:^3.2.7" |
3916 | peerDependenciesMeta: | 3893 | peerDependenciesMeta: |
3917 | eslint: | 3894 | eslint: |
3918 | optional: true | 3895 | optional: true |
3919 | checksum: 3acd6a8988830c11b4e2f900eb5a9a59143728dd7b914e9567316d964bd4f14355842f76b2ddf148ffaeba0c4a65f49338572a5a1e419e00eac7d2064cb7a559 | 3896 | checksum: c4820cf0d710cece498aaae98a15d339e09b04804d478a6af598a6962baaac31db13ce9f025a64edb8f607c20a07f895dacd2e1b80b833b7f3ad38d66d269c29 |
3920 | languageName: node | 3897 | languageName: node |
3921 | linkType: hard | 3898 | linkType: hard |
3922 | 3899 | ||
@@ -4039,47 +4016,32 @@ __metadata: | |||
4039 | languageName: node | 4016 | languageName: node |
4040 | linkType: hard | 4017 | linkType: hard |
4041 | 4018 | ||
4042 | "eslint-scope@npm:^7.1.1": | 4019 | "eslint-scope@npm:^7.2.0": |
4043 | version: 7.1.1 | 4020 | version: 7.2.0 |
4044 | resolution: "eslint-scope@npm:7.1.1" | 4021 | resolution: "eslint-scope@npm:7.2.0" |
4045 | dependencies: | 4022 | dependencies: |
4046 | esrecurse: "npm:^4.3.0" | 4023 | esrecurse: "npm:^4.3.0" |
4047 | estraverse: "npm:^5.2.0" | 4024 | estraverse: "npm:^5.2.0" |
4048 | checksum: 07f794a9bf080e76cc89109d56ee6d3666666b09837f8352978f9b84cf0a1b2a559886bb563e2ae5c49f100d7c7633bc3ae991012123ee8611adac2d574bd034 | 4025 | checksum: a68b86c2ab4bd4605f3d1f08007c9dcffebaffe80e12a5afe31ffe4350933d10a1b26b679851d5fbc931ffc59f4afab1778d44ac74ca05c0aa4e591acf403859 |
4049 | languageName: node | 4026 | languageName: node |
4050 | linkType: hard | 4027 | linkType: hard |
4051 | 4028 | ||
4052 | "eslint-utils@npm:^3.0.0": | 4029 | "eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1": |
4053 | version: 3.0.0 | 4030 | version: 3.4.1 |
4054 | resolution: "eslint-utils@npm:3.0.0" | 4031 | resolution: "eslint-visitor-keys@npm:3.4.1" |
4055 | dependencies: | 4032 | checksum: 97db79746bfe11a3ab0e60ce454cd809e7ac167ddd7d28736845ba57b8402d6b5d6c10fed2decf8c4026f7d3d659ebc024336ef30fdf473f0402bb1237c6a410 |
4056 | eslint-visitor-keys: "npm:^2.0.0" | ||
4057 | peerDependencies: | ||
4058 | eslint: ">=5" | ||
4059 | checksum: c7941cb26c5a1dea52fd7588e2e7ca2c12f28a6769119b3697074170f8e9d32a820dbaf822d30361dc54949eb95e8da3509f76fae77dbf8d53499932a828cb65 | ||
4060 | languageName: node | 4033 | languageName: node |
4061 | linkType: hard | 4034 | linkType: hard |
4062 | 4035 | ||
4063 | "eslint-visitor-keys@npm:^2.0.0": | 4036 | "eslint@npm:^8.43.0": |
4064 | version: 2.1.0 | 4037 | version: 8.43.0 |
4065 | resolution: "eslint-visitor-keys@npm:2.1.0" | 4038 | resolution: "eslint@npm:8.43.0" |
4066 | checksum: fba2e0be2450d1bc52c74b42008e3da7480fc38cb588b3e0474552c290ed0056465d8754cf579503bdb239d3001c91733e3ff26f659f2479e85baf6bf6559b84 | ||
4067 | languageName: node | ||
4068 | linkType: hard | ||
4069 | |||
4070 | "eslint-visitor-keys@npm:^3.3.0": | ||
4071 | version: 3.3.0 | ||
4072 | resolution: "eslint-visitor-keys@npm:3.3.0" | ||
4073 | checksum: 37b1372b3481e978856692724f065da7e3ded80c1a57fd347ad9c63692b6310756d0eb432badb5afaa125f0d4fcbc7692ba93ae85b17bd8e628bd8c8bcd03c1d | ||
4074 | languageName: node | ||
4075 | linkType: hard | ||
4076 | |||
4077 | "eslint@npm:^8.33.0": | ||
4078 | version: 8.33.0 | ||
4079 | resolution: "eslint@npm:8.33.0" | ||
4080 | dependencies: | 4039 | dependencies: |
4081 | "@eslint/eslintrc": "npm:^1.4.1" | 4040 | "@eslint-community/eslint-utils": "npm:^4.2.0" |
4082 | "@humanwhocodes/config-array": "npm:^0.11.8" | 4041 | "@eslint-community/regexpp": "npm:^4.4.0" |
4042 | "@eslint/eslintrc": "npm:^2.0.3" | ||
4043 | "@eslint/js": "npm:8.43.0" | ||
4044 | "@humanwhocodes/config-array": "npm:^0.11.10" | ||
4083 | "@humanwhocodes/module-importer": "npm:^1.0.1" | 4045 | "@humanwhocodes/module-importer": "npm:^1.0.1" |
4084 | "@nodelib/fs.walk": "npm:^1.2.8" | 4046 | "@nodelib/fs.walk": "npm:^1.2.8" |
4085 | ajv: "npm:^6.10.0" | 4047 | ajv: "npm:^6.10.0" |
@@ -4088,24 +4050,22 @@ __metadata: | |||
4088 | debug: "npm:^4.3.2" | 4050 | debug: "npm:^4.3.2" |
4089 | doctrine: "npm:^3.0.0" | 4051 | doctrine: "npm:^3.0.0" |
4090 | escape-string-regexp: "npm:^4.0.0" | 4052 | escape-string-regexp: "npm:^4.0.0" |
4091 | eslint-scope: "npm:^7.1.1" | 4053 | eslint-scope: "npm:^7.2.0" |
4092 | eslint-utils: "npm:^3.0.0" | 4054 | eslint-visitor-keys: "npm:^3.4.1" |
4093 | eslint-visitor-keys: "npm:^3.3.0" | 4055 | espree: "npm:^9.5.2" |
4094 | espree: "npm:^9.4.0" | 4056 | esquery: "npm:^1.4.2" |
4095 | esquery: "npm:^1.4.0" | ||
4096 | esutils: "npm:^2.0.2" | 4057 | esutils: "npm:^2.0.2" |
4097 | fast-deep-equal: "npm:^3.1.3" | 4058 | fast-deep-equal: "npm:^3.1.3" |
4098 | file-entry-cache: "npm:^6.0.1" | 4059 | file-entry-cache: "npm:^6.0.1" |
4099 | find-up: "npm:^5.0.0" | 4060 | find-up: "npm:^5.0.0" |
4100 | glob-parent: "npm:^6.0.2" | 4061 | glob-parent: "npm:^6.0.2" |
4101 | globals: "npm:^13.19.0" | 4062 | globals: "npm:^13.19.0" |
4102 | grapheme-splitter: "npm:^1.0.4" | 4063 | graphemer: "npm:^1.4.0" |
4103 | ignore: "npm:^5.2.0" | 4064 | ignore: "npm:^5.2.0" |
4104 | import-fresh: "npm:^3.0.0" | 4065 | import-fresh: "npm:^3.0.0" |
4105 | imurmurhash: "npm:^0.1.4" | 4066 | imurmurhash: "npm:^0.1.4" |
4106 | is-glob: "npm:^4.0.0" | 4067 | is-glob: "npm:^4.0.0" |
4107 | is-path-inside: "npm:^3.0.3" | 4068 | is-path-inside: "npm:^3.0.3" |
4108 | js-sdsl: "npm:^4.1.4" | ||
4109 | js-yaml: "npm:^4.1.0" | 4069 | js-yaml: "npm:^4.1.0" |
4110 | json-stable-stringify-without-jsonify: "npm:^1.0.1" | 4070 | json-stable-stringify-without-jsonify: "npm:^1.0.1" |
4111 | levn: "npm:^0.4.1" | 4071 | levn: "npm:^0.4.1" |
@@ -4113,24 +4073,23 @@ __metadata: | |||
4113 | minimatch: "npm:^3.1.2" | 4073 | minimatch: "npm:^3.1.2" |
4114 | natural-compare: "npm:^1.4.0" | 4074 | natural-compare: "npm:^1.4.0" |
4115 | optionator: "npm:^0.9.1" | 4075 | optionator: "npm:^0.9.1" |
4116 | regexpp: "npm:^3.2.0" | ||
4117 | strip-ansi: "npm:^6.0.1" | 4076 | strip-ansi: "npm:^6.0.1" |
4118 | strip-json-comments: "npm:^3.1.0" | 4077 | strip-json-comments: "npm:^3.1.0" |
4119 | text-table: "npm:^0.2.0" | 4078 | text-table: "npm:^0.2.0" |
4120 | bin: | 4079 | bin: |
4121 | eslint: bin/eslint.js | 4080 | eslint: bin/eslint.js |
4122 | checksum: 616877cf98325f619070e6c85b1bb4734fe99202871f5f43cbb9c56b13d7cacf8caa499c61c0a112541067be3b6143cd0497d1319950a4a1d355adeff8504596 | 4081 | checksum: 9f7e1cfdbe5219cdcecbf412c4535d68b42d777aa5a1524c565ac50ae192880f8f1ca898552e41d649e1b04e2e64feee33879740c5ab5015709eef529b70e876 |
4123 | languageName: node | 4082 | languageName: node |
4124 | linkType: hard | 4083 | linkType: hard |
4125 | 4084 | ||
4126 | "espree@npm:^9.4.0": | 4085 | "espree@npm:^9.5.2": |
4127 | version: 9.4.0 | 4086 | version: 9.5.2 |
4128 | resolution: "espree@npm:9.4.0" | 4087 | resolution: "espree@npm:9.5.2" |
4129 | dependencies: | 4088 | dependencies: |
4130 | acorn: "npm:^8.8.0" | 4089 | acorn: "npm:^8.8.0" |
4131 | acorn-jsx: "npm:^5.3.2" | 4090 | acorn-jsx: "npm:^5.3.2" |
4132 | eslint-visitor-keys: "npm:^3.3.0" | 4091 | eslint-visitor-keys: "npm:^3.4.1" |
4133 | checksum: a40ed725d7e29557f17c6b9613c71cee4a0b81303cb7c4d6a5b41ad9c367daf19ffab21f1f8ded287b8e341bf334025e7442d28bec73fc4fc14ac3543050c5d1 | 4092 | checksum: 05c52faae1e5c72ba3ab639d06937a0570d64946d9062762cac1918c70921f67a17e1370a3503af1eb9ff27f36f9c1932389fcc810a98e9ee9887597d07911e5 |
4134 | languageName: node | 4093 | languageName: node |
4135 | linkType: hard | 4094 | linkType: hard |
4136 | 4095 | ||
@@ -4144,12 +4103,12 @@ __metadata: | |||
4144 | languageName: node | 4103 | languageName: node |
4145 | linkType: hard | 4104 | linkType: hard |
4146 | 4105 | ||
4147 | "esquery@npm:^1.4.0": | 4106 | "esquery@npm:^1.4.2": |
4148 | version: 1.4.0 | 4107 | version: 1.5.0 |
4149 | resolution: "esquery@npm:1.4.0" | 4108 | resolution: "esquery@npm:1.5.0" |
4150 | dependencies: | 4109 | dependencies: |
4151 | estraverse: "npm:^5.1.0" | 4110 | estraverse: "npm:^5.1.0" |
4152 | checksum: 7f287f5390f12feed1b2b4dd42f3a4501774effcbcbb76c340e5b9a3c25a133739dc18657c6103cb520dd4a8814d33ff732587c7de42f0ff51a0deaf4c190428 | 4111 | checksum: 4bde95396273b2960a330c296e921d88b7d3fb5c9cbc84a1e29cf75664c318b194b1a8b46f507fce30222a68b64527f70e09bdd5863e14248fa2f6da5e78fdfd |
4153 | languageName: node | 4112 | languageName: node |
4154 | linkType: hard | 4113 | linkType: hard |
4155 | 4114 | ||
@@ -4183,13 +4142,6 @@ __metadata: | |||
4183 | languageName: node | 4142 | languageName: node |
4184 | linkType: hard | 4143 | linkType: hard |
4185 | 4144 | ||
4186 | "estree-walker@npm:^2.0.2": | ||
4187 | version: 2.0.2 | ||
4188 | resolution: "estree-walker@npm:2.0.2" | ||
4189 | checksum: 6fd7656e20b3c8f1fa74cd3d922e09d2cc9815ba5ea2d4cc0d5f16870b00e4c40d9aaae5efeb26299ea684a89b8e64868f42ecdddd45e8d18283f47098c9943a | ||
4190 | languageName: node | ||
4191 | linkType: hard | ||
4192 | |||
4193 | "esutils@npm:^2.0.2": | 4145 | "esutils@npm:^2.0.2": |
4194 | version: 2.0.3 | 4146 | version: 2.0.3 |
4195 | resolution: "esutils@npm:2.0.3" | 4147 | resolution: "esutils@npm:2.0.3" |
@@ -4197,6 +4149,13 @@ __metadata: | |||
4197 | languageName: node | 4149 | languageName: node |
4198 | linkType: hard | 4150 | linkType: hard |
4199 | 4151 | ||
4152 | "exponential-backoff@npm:^3.1.1": | ||
4153 | version: 3.1.1 | ||
4154 | resolution: "exponential-backoff@npm:3.1.1" | ||
4155 | checksum: b3010284e8d2161f7a2589b92d41299d5bdffa6c79bac7bbfeee239a67627ae8b878e40c408a4419b19afcf9514442c79929cf3bd5f49f7f19ebd54fd2aa306f | ||
4156 | languageName: node | ||
4157 | linkType: hard | ||
4158 | |||
4200 | "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": | 4159 | "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": |
4201 | version: 3.1.3 | 4160 | version: 3.1.3 |
4202 | resolution: "fast-deep-equal@npm:3.1.3" | 4161 | resolution: "fast-deep-equal@npm:3.1.3" |
@@ -4205,9 +4164,9 @@ __metadata: | |||
4205 | linkType: hard | 4164 | linkType: hard |
4206 | 4165 | ||
4207 | "fast-diff@npm:^1.1.2": | 4166 | "fast-diff@npm:^1.1.2": |
4208 | version: 1.2.0 | 4167 | version: 1.3.0 |
4209 | resolution: "fast-diff@npm:1.2.0" | 4168 | resolution: "fast-diff@npm:1.3.0" |
4210 | checksum: e75206672f583769d2270d4ab9960bef9bce5c0852c0553a2f3f960c977fb330ef01ae55b3e9c5877ed539065014d1e868140b2ee2666d21f1d833e9d0dfd82c | 4169 | checksum: 424cdf4f5f335fd33bcb4dd6e676746e351c3ed326db6f2ae2920937d224fa36064d7cfdac7521154153a3489b8f8cb59dad27778d127a680b658b7cd70a544e |
4211 | languageName: node | 4170 | languageName: node |
4212 | linkType: hard | 4171 | linkType: hard |
4213 | 4172 | ||
@@ -4239,11 +4198,11 @@ __metadata: | |||
4239 | linkType: hard | 4198 | linkType: hard |
4240 | 4199 | ||
4241 | "fastq@npm:^1.6.0": | 4200 | "fastq@npm:^1.6.0": |
4242 | version: 1.13.0 | 4201 | version: 1.15.0 |
4243 | resolution: "fastq@npm:1.13.0" | 4202 | resolution: "fastq@npm:1.15.0" |
4244 | dependencies: | 4203 | dependencies: |
4245 | reusify: "npm:^1.0.4" | 4204 | reusify: "npm:^1.0.4" |
4246 | checksum: 150b77dcf0d1e023aaed9bb5f9789f9c8828497fa44b050ba79b039798aeee6c4bcab7e533b5bacb6476811ca9c0eb7f1d021fd7ff8da54f67e3db9b35efd84c | 4205 | checksum: 9c256d4b1c55c2a494ef198632ad19b801f98fb05b804c761c8c733da58b8f63888fdfe5e4c8ec7144f369135b71f23da1457e71b3aebaa943d2d5337bb86262 |
4247 | languageName: node | 4206 | languageName: node |
4248 | linkType: hard | 4207 | linkType: hard |
4249 | 4208 | ||
@@ -4256,7 +4215,7 @@ __metadata: | |||
4256 | languageName: node | 4215 | languageName: node |
4257 | linkType: hard | 4216 | linkType: hard |
4258 | 4217 | ||
4259 | "filelist@npm:^1.0.1": | 4218 | "filelist@npm:^1.0.4": |
4260 | version: 1.0.4 | 4219 | version: 1.0.4 |
4261 | resolution: "filelist@npm:1.0.4" | 4220 | resolution: "filelist@npm:1.0.4" |
4262 | dependencies: | 4221 | dependencies: |
@@ -4302,9 +4261,9 @@ __metadata: | |||
4302 | linkType: hard | 4261 | linkType: hard |
4303 | 4262 | ||
4304 | "flatted@npm:^3.1.0": | 4263 | "flatted@npm:^3.1.0": |
4305 | version: 3.2.4 | 4264 | version: 3.2.7 |
4306 | resolution: "flatted@npm:3.2.4" | 4265 | resolution: "flatted@npm:3.2.7" |
4307 | checksum: 1f74183120a8e5a2db88e2a321aa589c3dcfa47ba89748d1d96e8e9dfd2dd22b33fe46775a49a9de751b485bc58907a61171988921cccd94366d5bcb4f4135f4 | 4266 | checksum: d57a559a56f8743f48067b992e70f222921bec6656de4617ee60dab5e531c2aeba67ace287965b759cca80fa0d3f0c7ffc39341ccc9bc874594f4b73c0fea48c |
4308 | languageName: node | 4267 | languageName: node |
4309 | linkType: hard | 4268 | linkType: hard |
4310 | 4269 | ||
@@ -4317,6 +4276,16 @@ __metadata: | |||
4317 | languageName: node | 4276 | languageName: node |
4318 | linkType: hard | 4277 | linkType: hard |
4319 | 4278 | ||
4279 | "foreground-child@npm:^3.1.0": | ||
4280 | version: 3.1.1 | ||
4281 | resolution: "foreground-child@npm:3.1.1" | ||
4282 | dependencies: | ||
4283 | cross-spawn: "npm:^7.0.0" | ||
4284 | signal-exit: "npm:^4.0.1" | ||
4285 | checksum: eb24fc60e34157c0f05b8689015dfaff98141484992f06f19ee0b4b069304c337af1caf5478eee42aea846235ce54699bbc530889eccd746bf4da1dc29ba6c32 | ||
4286 | languageName: node | ||
4287 | linkType: hard | ||
4288 | |||
4320 | "fs-extra@npm:^9.0.1": | 4289 | "fs-extra@npm:^9.0.1": |
4321 | version: 9.1.0 | 4290 | version: 9.1.0 |
4322 | resolution: "fs-extra@npm:9.1.0" | 4291 | resolution: "fs-extra@npm:9.1.0" |
@@ -4338,6 +4307,15 @@ __metadata: | |||
4338 | languageName: node | 4307 | languageName: node |
4339 | linkType: hard | 4308 | linkType: hard |
4340 | 4309 | ||
4310 | "fs-minipass@npm:^3.0.0": | ||
4311 | version: 3.0.2 | ||
4312 | resolution: "fs-minipass@npm:3.0.2" | ||
4313 | dependencies: | ||
4314 | minipass: "npm:^5.0.0" | ||
4315 | checksum: 2b2cd5428f9c24619f9cffd857508d55eaa3b49d4e060061f775f66c96043c9d9a54a8d05378b63d391ac7d8f9606f180c2b65124b871221d5efcf49781787fe | ||
4316 | languageName: node | ||
4317 | linkType: hard | ||
4318 | |||
4341 | "fs.realpath@npm:^1.0.0": | 4319 | "fs.realpath@npm:^1.0.0": |
4342 | version: 1.0.0 | 4320 | version: 1.0.0 |
4343 | resolution: "fs.realpath@npm:1.0.0" | 4321 | resolution: "fs.realpath@npm:1.0.0" |
@@ -4383,27 +4361,26 @@ __metadata: | |||
4383 | languageName: node | 4361 | languageName: node |
4384 | linkType: hard | 4362 | linkType: hard |
4385 | 4363 | ||
4386 | "functions-have-names@npm:^1.2.2": | 4364 | "functions-have-names@npm:^1.2.2, functions-have-names@npm:^1.2.3": |
4387 | version: 1.2.3 | 4365 | version: 1.2.3 |
4388 | resolution: "functions-have-names@npm:1.2.3" | 4366 | resolution: "functions-have-names@npm:1.2.3" |
4389 | checksum: 2b58e5d607d7338c29e5ff8c285ddf09d79857b6d0ef9f781ee2e80cf666726d6909b5ab635e13d49ded9dcfd3c7abc01a22a52089bf23833848a6bfb6e8dac1 | 4367 | checksum: 2b58e5d607d7338c29e5ff8c285ddf09d79857b6d0ef9f781ee2e80cf666726d6909b5ab635e13d49ded9dcfd3c7abc01a22a52089bf23833848a6bfb6e8dac1 |
4390 | languageName: node | 4368 | languageName: node |
4391 | linkType: hard | 4369 | linkType: hard |
4392 | 4370 | ||
4393 | "gauge@npm:^4.0.0": | 4371 | "gauge@npm:^4.0.3": |
4394 | version: 4.0.0 | 4372 | version: 4.0.4 |
4395 | resolution: "gauge@npm:4.0.0" | 4373 | resolution: "gauge@npm:4.0.4" |
4396 | dependencies: | 4374 | dependencies: |
4397 | ansi-regex: "npm:^5.0.1" | ||
4398 | aproba: "npm:^1.0.3 || ^2.0.0" | 4375 | aproba: "npm:^1.0.3 || ^2.0.0" |
4399 | color-support: "npm:^1.1.2" | 4376 | color-support: "npm:^1.1.3" |
4400 | console-control-strings: "npm:^1.0.0" | 4377 | console-control-strings: "npm:^1.1.0" |
4401 | has-unicode: "npm:^2.0.1" | 4378 | has-unicode: "npm:^2.0.1" |
4402 | signal-exit: "npm:^3.0.0" | 4379 | signal-exit: "npm:^3.0.7" |
4403 | string-width: "npm:^4.2.3" | 4380 | string-width: "npm:^4.2.3" |
4404 | strip-ansi: "npm:^6.0.1" | 4381 | strip-ansi: "npm:^6.0.1" |
4405 | wide-align: "npm:^1.1.2" | 4382 | wide-align: "npm:^1.1.5" |
4406 | checksum: bc5860ab4bd40ba081ea0bba3a16b093c5d6297b46ddebe99790ee5820c692567bf8f65bfcb225ceb171510fc330dbfd7d1ff75c9d7a4f73a4675c4245354123 | 4383 | checksum: 4fc68f770dba9962a326918f33f58f2458eddea08442c2d716238357e4291dee4223a812ce11084b54f928d607e4dfb6f380ba28d435b2721de94a22d5600669 |
4407 | languageName: node | 4384 | languageName: node |
4408 | linkType: hard | 4385 | linkType: hard |
4409 | 4386 | ||
@@ -4414,14 +4391,15 @@ __metadata: | |||
4414 | languageName: node | 4391 | languageName: node |
4415 | linkType: hard | 4392 | linkType: hard |
4416 | 4393 | ||
4417 | "get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.0, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3": | 4394 | "get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0": |
4418 | version: 1.1.3 | 4395 | version: 1.2.1 |
4419 | resolution: "get-intrinsic@npm:1.1.3" | 4396 | resolution: "get-intrinsic@npm:1.2.1" |
4420 | dependencies: | 4397 | dependencies: |
4421 | function-bind: "npm:^1.1.1" | 4398 | function-bind: "npm:^1.1.1" |
4422 | has: "npm:^1.0.3" | 4399 | has: "npm:^1.0.3" |
4400 | has-proto: "npm:^1.0.1" | ||
4423 | has-symbols: "npm:^1.0.3" | 4401 | has-symbols: "npm:^1.0.3" |
4424 | checksum: 885245c0964b0acf38383792a1174022f00db91624239fa0338b6101f865601df0f17dbef15083dc875374d9b50c64bb4177e411a5a40edb0e5cd0e60829caad | 4402 | checksum: d1d5511cfe4fc46c1a7ec7e127cb4ac0b9e131124282724d7bd94ae5014db5d12403e6873dfd5feeca44cd57baa39f8b4dbda2147ec9bb3533a7d02ab033e352 |
4425 | languageName: node | 4403 | languageName: node |
4426 | linkType: hard | 4404 | linkType: hard |
4427 | 4405 | ||
@@ -4442,10 +4420,12 @@ __metadata: | |||
4442 | languageName: node | 4420 | languageName: node |
4443 | linkType: hard | 4421 | linkType: hard |
4444 | 4422 | ||
4445 | "get-tsconfig@npm:^4.2.0": | 4423 | "get-tsconfig@npm:^4.5.0": |
4446 | version: 4.2.0 | 4424 | version: 4.6.0 |
4447 | resolution: "get-tsconfig@npm:4.2.0" | 4425 | resolution: "get-tsconfig@npm:4.6.0" |
4448 | checksum: 9bdb940c9a30bbc87818e2c1c46fdf39708b913388e71fe0d30a3e8f6b4146d871d6fc9d6834220de84ece85f45872f41a1a8207f709bbfa7f9dcb38909a1a99 | 4426 | dependencies: |
4427 | resolve-pkg-maps: "npm:^1.0.0" | ||
4428 | checksum: f7e7d4e5853f9949a12b84ef5e4af64e2bd5dd0bf48670413300ea8bf818a1424c7af6fc8e218ed4bd1f1f1e9c78c282f3607825bdfc490ee8439792bbef24ce | ||
4449 | languageName: node | 4429 | languageName: node |
4450 | linkType: hard | 4430 | linkType: hard |
4451 | 4431 | ||
@@ -4467,6 +4447,21 @@ __metadata: | |||
4467 | languageName: node | 4447 | languageName: node |
4468 | linkType: hard | 4448 | linkType: hard |
4469 | 4449 | ||
4450 | "glob@npm:^10.2.2": | ||
4451 | version: 10.2.7 | ||
4452 | resolution: "glob@npm:10.2.7" | ||
4453 | dependencies: | ||
4454 | foreground-child: "npm:^3.1.0" | ||
4455 | jackspeak: "npm:^2.0.3" | ||
4456 | minimatch: "npm:^9.0.1" | ||
4457 | minipass: "npm:^5.0.0 || ^6.0.2" | ||
4458 | path-scurry: "npm:^1.7.0" | ||
4459 | bin: | ||
4460 | glob: dist/cjs/src/bin.js | ||
4461 | checksum: a0c055e0b47a072f8c59c8a9db4514243945aecb2ed3c2e2bb5bcbf38967bedef0bf268e5cdc49b6fecee6014f943d8d96e85c49c05524544fbc50116f2531ba | ||
4462 | languageName: node | ||
4463 | linkType: hard | ||
4464 | |||
4470 | "glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": | 4465 | "glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": |
4471 | version: 7.2.3 | 4466 | version: 7.2.3 |
4472 | resolution: "glob@npm:7.2.3" | 4467 | resolution: "glob@npm:7.2.3" |
@@ -4489,11 +4484,20 @@ __metadata: | |||
4489 | linkType: hard | 4484 | linkType: hard |
4490 | 4485 | ||
4491 | "globals@npm:^13.19.0": | 4486 | "globals@npm:^13.19.0": |
4492 | version: 13.19.0 | 4487 | version: 13.20.0 |
4493 | resolution: "globals@npm:13.19.0" | 4488 | resolution: "globals@npm:13.20.0" |
4494 | dependencies: | 4489 | dependencies: |
4495 | type-fest: "npm:^0.20.2" | 4490 | type-fest: "npm:^0.20.2" |
4496 | checksum: 3f3d6606b78da1731d7a2837e75c5e941e7db414ca4a5ad90e456f771b68552095214457295f88a2b1580cd60b430c72020a3e10e39be1093c55c9331b5889ce | 4491 | checksum: 1ba80ad03f29b8ca83b066c9d9ae305e7f0ee46164de36efac286fc3a58efc48986d688bf1f427f164f2a65bb1bdfa53beb8c56ae3092be255fc097bdcab1f1a |
4492 | languageName: node | ||
4493 | linkType: hard | ||
4494 | |||
4495 | "globalthis@npm:^1.0.3": | ||
4496 | version: 1.0.3 | ||
4497 | resolution: "globalthis@npm:1.0.3" | ||
4498 | dependencies: | ||
4499 | define-properties: "npm:^1.1.3" | ||
4500 | checksum: 712d9e130f2c47067e6590cb1eee418df1106f53ffeddaadb4c8b0793ac0f46039e5f71008c44089523aa2b58d270bb2c4e5721795ddad114bc23d9eb63ec6d5 | ||
4497 | languageName: node | 4501 | languageName: node |
4498 | linkType: hard | 4502 | linkType: hard |
4499 | 4503 | ||
@@ -4518,16 +4522,16 @@ __metadata: | |||
4518 | languageName: node | 4522 | languageName: node |
4519 | linkType: hard | 4523 | linkType: hard |
4520 | 4524 | ||
4521 | "globby@npm:^13.1.2": | 4525 | "globby@npm:^13.1.3": |
4522 | version: 13.1.2 | 4526 | version: 13.1.4 |
4523 | resolution: "globby@npm:13.1.2" | 4527 | resolution: "globby@npm:13.1.4" |
4524 | dependencies: | 4528 | dependencies: |
4525 | dir-glob: "npm:^3.0.1" | 4529 | dir-glob: "npm:^3.0.1" |
4526 | fast-glob: "npm:^3.2.11" | 4530 | fast-glob: "npm:^3.2.11" |
4527 | ignore: "npm:^5.2.0" | 4531 | ignore: "npm:^5.2.0" |
4528 | merge2: "npm:^1.4.1" | 4532 | merge2: "npm:^1.4.1" |
4529 | slash: "npm:^4.0.0" | 4533 | slash: "npm:^4.0.0" |
4530 | checksum: 9b418983d4b2dab9599cf9b2d1535c547d206e96796a699086e7a6b0e5d8ba63ee7653b1e3e3afa1747e1accf70fdc58fcb246dec282b3235a23a0b03fe14a7c | 4534 | checksum: 3e433409da6b65206694b0d3fec692f42b9eb9a1d1406851a1237508e6dd12a4e70c3ba3d7b6b26a8c8e71aab6a84e648fca6b955abc18dd37341a44ac341567 |
4531 | languageName: node | 4535 | languageName: node |
4532 | linkType: hard | 4536 | linkType: hard |
4533 | 4537 | ||
@@ -4538,6 +4542,15 @@ __metadata: | |||
4538 | languageName: node | 4542 | languageName: node |
4539 | linkType: hard | 4543 | linkType: hard |
4540 | 4544 | ||
4545 | "goober@npm:^2.0.33": | ||
4546 | version: 2.1.13 | ||
4547 | resolution: "goober@npm:2.1.13" | ||
4548 | peerDependencies: | ||
4549 | csstype: ^3.0.10 | ||
4550 | checksum: 59f61d7bc565e480f988b2b5a0c19a533200e81c3bffc6c4ab53e8a8d8bcc9e53babb31ecd70f91a82a640f481e975f6c28c320686b32a0444673e84bcf1a489 | ||
4551 | languageName: node | ||
4552 | linkType: hard | ||
4553 | |||
4541 | "gopd@npm:^1.0.1": | 4554 | "gopd@npm:^1.0.1": |
4542 | version: 1.0.1 | 4555 | version: 1.0.1 |
4543 | resolution: "gopd@npm:1.0.1" | 4556 | resolution: "gopd@npm:1.0.1" |
@@ -4548,9 +4561,9 @@ __metadata: | |||
4548 | linkType: hard | 4561 | linkType: hard |
4549 | 4562 | ||
4550 | "graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": | 4563 | "graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": |
4551 | version: 4.2.10 | 4564 | version: 4.2.11 |
4552 | resolution: "graceful-fs@npm:4.2.10" | 4565 | resolution: "graceful-fs@npm:4.2.11" |
4553 | checksum: 6b5f9b5aeaee0459b9c37bdbf9624f788703ce291d6bf2d7751f5003942e853f232ca613aec818d1ff7622379bc8b434c635bfda99db93e0b9b8da80ec3d844d | 4566 | checksum: 0228fc1080e6cb20d31920aff457e5d44f137b8864220c204b5ba6461d2d46d30361557a4c054373a8c04a03b59c92a42d40230104bb59c5ea737072bc15709c |
4554 | languageName: node | 4567 | languageName: node |
4555 | linkType: hard | 4568 | linkType: hard |
4556 | 4569 | ||
@@ -4561,6 +4574,13 @@ __metadata: | |||
4561 | languageName: node | 4574 | languageName: node |
4562 | linkType: hard | 4575 | linkType: hard |
4563 | 4576 | ||
4577 | "graphemer@npm:^1.4.0": | ||
4578 | version: 1.4.0 | ||
4579 | resolution: "graphemer@npm:1.4.0" | ||
4580 | checksum: a4ee139533e1d1683edb24eaf3e598451e7f1577da3dfc68f247f0601d5d11d264d0ccfad3de3bfcabbed891140fbae84c0403b9d68f4fcb6431c418f971434e | ||
4581 | languageName: node | ||
4582 | linkType: hard | ||
4583 | |||
4564 | "has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": | 4584 | "has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": |
4565 | version: 1.0.2 | 4585 | version: 1.0.2 |
4566 | resolution: "has-bigints@npm:1.0.2" | 4586 | resolution: "has-bigints@npm:1.0.2" |
@@ -4591,7 +4611,14 @@ __metadata: | |||
4591 | languageName: node | 4611 | languageName: node |
4592 | linkType: hard | 4612 | linkType: hard |
4593 | 4613 | ||
4594 | "has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": | 4614 | "has-proto@npm:^1.0.1": |
4615 | version: 1.0.1 | ||
4616 | resolution: "has-proto@npm:1.0.1" | ||
4617 | checksum: 0aa0de6013c2132a79fb8b885dc0274b99362807195bed0c69e2469eb0de41bf1695067d5e41adcd4bbd8daed8684250716c55db17478249f225ae3d0846e6bf | ||
4618 | languageName: node | ||
4619 | linkType: hard | ||
4620 | |||
4621 | "has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": | ||
4595 | version: 1.0.3 | 4622 | version: 1.0.3 |
4596 | resolution: "has-symbols@npm:1.0.3" | 4623 | resolution: "has-symbols@npm:1.0.3" |
4597 | checksum: 2d0abb3382da2945b1b8d9a4afebc8a0770fe07198e727b4fbd7f616c70796f040bf2bd8d6db47e0c590507812a2680594fc77f871238289f6c7870318cf62c9 | 4624 | checksum: 2d0abb3382da2945b1b8d9a4afebc8a0770fe07198e727b4fbd7f616c70796f040bf2bd8d6db47e0c590507812a2680594fc77f871238289f6c7870318cf62c9 |
@@ -4623,7 +4650,7 @@ __metadata: | |||
4623 | languageName: node | 4650 | languageName: node |
4624 | linkType: hard | 4651 | linkType: hard |
4625 | 4652 | ||
4626 | "hoist-non-react-statics@npm:^3.3.0, hoist-non-react-statics@npm:^3.3.1": | 4653 | "hoist-non-react-statics@npm:^3.3.1": |
4627 | version: 3.3.2 | 4654 | version: 3.3.2 |
4628 | resolution: "hoist-non-react-statics@npm:3.3.2" | 4655 | resolution: "hoist-non-react-statics@npm:3.3.2" |
4629 | dependencies: | 4656 | dependencies: |
@@ -4632,48 +4659,48 @@ __metadata: | |||
4632 | languageName: node | 4659 | languageName: node |
4633 | linkType: hard | 4660 | linkType: hard |
4634 | 4661 | ||
4635 | "html-minifier-terser@npm:^7.1.0": | 4662 | "html-minifier-terser@npm:^7.2.0": |
4636 | version: 7.1.0 | 4663 | version: 7.2.0 |
4637 | resolution: "html-minifier-terser@npm:7.1.0" | 4664 | resolution: "html-minifier-terser@npm:7.2.0" |
4638 | dependencies: | 4665 | dependencies: |
4639 | camel-case: "npm:^4.1.2" | 4666 | camel-case: "npm:^4.1.2" |
4640 | clean-css: "npm:5.2.0" | 4667 | clean-css: "npm:~5.3.2" |
4641 | commander: "npm:^9.4.1" | 4668 | commander: "npm:^10.0.0" |
4642 | entities: "npm:^4.4.0" | 4669 | entities: "npm:^4.4.0" |
4643 | param-case: "npm:^3.0.4" | 4670 | param-case: "npm:^3.0.4" |
4644 | relateurl: "npm:^0.2.7" | 4671 | relateurl: "npm:^0.2.7" |
4645 | terser: "npm:^5.15.1" | 4672 | terser: "npm:^5.15.1" |
4646 | bin: | 4673 | bin: |
4647 | html-minifier-terser: cli.js | 4674 | html-minifier-terser: cli.js |
4648 | checksum: 188f77b3cf44c7d13a6137d3a337c41fa0ac628b4c69816ca4cf4aa60d80eb7803082ddb7d4fd883e386c420bf9cc59c58b8f528c26d9ce0f7adf072edcf8920 | 4675 | checksum: 9287823ef09537f522a138930bce6cf28fad9740c194f13dce0b80d22c7870de3814e3e6780f56a4e0bdc2cb20b87af2edbfd12835e3773e60f887bff9e1798f |
4649 | languageName: node | 4676 | languageName: node |
4650 | linkType: hard | 4677 | linkType: hard |
4651 | 4678 | ||
4652 | "http-cache-semantics@npm:^4.1.0": | 4679 | "http-cache-semantics@npm:^4.1.1": |
4653 | version: 4.1.1 | 4680 | version: 4.1.1 |
4654 | resolution: "http-cache-semantics@npm:4.1.1" | 4681 | resolution: "http-cache-semantics@npm:4.1.1" |
4655 | checksum: 7b4d86f99fb3f07b6a49219420ebdffa077ee99bc5fe1df1f353b84c3d321c767a083a48291afb2fc34a627661b6d54c80a927639a7be9e0c43e8c4f921816bd | 4682 | checksum: 7b4d86f99fb3f07b6a49219420ebdffa077ee99bc5fe1df1f353b84c3d321c767a083a48291afb2fc34a627661b6d54c80a927639a7be9e0c43e8c4f921816bd |
4656 | languageName: node | 4683 | languageName: node |
4657 | linkType: hard | 4684 | linkType: hard |
4658 | 4685 | ||
4659 | "http-proxy-agent@npm:^4.0.1": | 4686 | "http-proxy-agent@npm:^5.0.0": |
4660 | version: 4.0.1 | 4687 | version: 5.0.0 |
4661 | resolution: "http-proxy-agent@npm:4.0.1" | 4688 | resolution: "http-proxy-agent@npm:5.0.0" |
4662 | dependencies: | 4689 | dependencies: |
4663 | "@tootallnate/once": "npm:1" | 4690 | "@tootallnate/once": "npm:2" |
4664 | agent-base: "npm:6" | 4691 | agent-base: "npm:6" |
4665 | debug: "npm:4" | 4692 | debug: "npm:4" |
4666 | checksum: 469cd61a706ceebddbdec12624b793e2b467537b6db97b040325558b6ebc2cff66fc2960406dcf29957906a0001ea724f6a0180a88c6ea0349a0ca96fac6ded1 | 4693 | checksum: b59a9b4bdd7c1d3450956a2974cb7b685517c758853a873064a536f5a831879ac92a28c717f69eb60ff3c924b262cb5aaf80cf62f5c2c24d1129d2b8dadf1e7c |
4667 | languageName: node | 4694 | languageName: node |
4668 | linkType: hard | 4695 | linkType: hard |
4669 | 4696 | ||
4670 | "https-proxy-agent@npm:^5.0.0": | 4697 | "https-proxy-agent@npm:^5.0.0": |
4671 | version: 5.0.0 | 4698 | version: 5.0.1 |
4672 | resolution: "https-proxy-agent@npm:5.0.0" | 4699 | resolution: "https-proxy-agent@npm:5.0.1" |
4673 | dependencies: | 4700 | dependencies: |
4674 | agent-base: "npm:6" | 4701 | agent-base: "npm:6" |
4675 | debug: "npm:4" | 4702 | debug: "npm:4" |
4676 | checksum: 77d11b0e2c164d1f63f689247551b821b67c3daa7f13fe2d0445989d9ad224f67f2af8ebda09599de3f4be490b343c82bb37024d8a669c004fd4f38dc12a4d23 | 4703 | checksum: 8e767faec977400c31bca2ef0f5338b843b781b63fd985c00d199adac2d6c8a5ecc6e553588a6821a058198960f167a3c83f014bd64bef9a15b176d992d29dfe |
4677 | languageName: node | 4704 | languageName: node |
4678 | linkType: hard | 4705 | linkType: hard |
4679 | 4706 | ||
@@ -4696,16 +4723,16 @@ __metadata: | |||
4696 | linkType: hard | 4723 | linkType: hard |
4697 | 4724 | ||
4698 | "idb@npm:^7.0.1": | 4725 | "idb@npm:^7.0.1": |
4699 | version: 7.0.2 | 4726 | version: 7.1.1 |
4700 | resolution: "idb@npm:7.0.2" | 4727 | resolution: "idb@npm:7.1.1" |
4701 | checksum: 54612e6c597a4f3e641104f5abace53a2d78aa7344b2b4cabdbc795e90e57e6ec81b35b6902517076ccfdde8086a84adbf6372fca180cba10c6e02b601e13ce7 | 4728 | checksum: 9f9a55d7ef9409d37a0270104b89137cdd2a29fbc5cab65561a1dc1d4cdb25f1239ce9dcd1abdb25b81bf81269fad0e601be7d3bd3d8f06f2060c4c65d059748 |
4702 | languageName: node | 4729 | languageName: node |
4703 | linkType: hard | 4730 | linkType: hard |
4704 | 4731 | ||
4705 | "ignore@npm:^5.2.0": | 4732 | "ignore@npm:^5.2.0": |
4706 | version: 5.2.0 | 4733 | version: 5.2.4 |
4707 | resolution: "ignore@npm:5.2.0" | 4734 | resolution: "ignore@npm:5.2.4" |
4708 | checksum: 0086b6992b2e2c9ec23f009e5939022323f1b4ad291607507045cc67b0a3b5d9724fc425f5300b3ba6d10ef74311bdf71cd26040227c30a182cf1b2a5971226b | 4735 | checksum: 55c58d848bb753a2b7e0b4a19352f9212eae2e4a05e4a12753e90b921108a6caa140adf958a5084b144bedd886b44e3bc93f6b4839e5aba1fb4a72c6625da4c1 |
4709 | languageName: node | 4736 | languageName: node |
4710 | linkType: hard | 4737 | linkType: hard |
4711 | 4738 | ||
@@ -4733,13 +4760,6 @@ __metadata: | |||
4733 | languageName: node | 4760 | languageName: node |
4734 | linkType: hard | 4761 | linkType: hard |
4735 | 4762 | ||
4736 | "infer-owner@npm:^1.0.4": | ||
4737 | version: 1.0.4 | ||
4738 | resolution: "infer-owner@npm:1.0.4" | ||
4739 | checksum: 2020f6d0322e7910ce841134a303c69857e456531d8cd01e336f6eea18122d1085b93ebde961745e5f278233f7f8a3d8b60b9276c8dbd3f49c4c352582ec9504 | ||
4740 | languageName: node | ||
4741 | linkType: hard | ||
4742 | |||
4743 | "inflight@npm:^1.0.4": | 4763 | "inflight@npm:^1.0.4": |
4744 | version: 1.0.6 | 4764 | version: 1.0.6 |
4745 | resolution: "inflight@npm:1.0.6" | 4765 | resolution: "inflight@npm:1.0.6" |
@@ -4757,42 +4777,32 @@ __metadata: | |||
4757 | languageName: node | 4777 | languageName: node |
4758 | linkType: hard | 4778 | linkType: hard |
4759 | 4779 | ||
4760 | "internal-slot@npm:^1.0.3": | 4780 | "internal-slot@npm:^1.0.3, internal-slot@npm:^1.0.5": |
4761 | version: 1.0.3 | 4781 | version: 1.0.5 |
4762 | resolution: "internal-slot@npm:1.0.3" | 4782 | resolution: "internal-slot@npm:1.0.5" |
4763 | dependencies: | 4783 | dependencies: |
4764 | get-intrinsic: "npm:^1.1.0" | 4784 | get-intrinsic: "npm:^1.2.0" |
4765 | has: "npm:^1.0.3" | 4785 | has: "npm:^1.0.3" |
4766 | side-channel: "npm:^1.0.4" | 4786 | side-channel: "npm:^1.0.4" |
4767 | checksum: b08401f1c652927be5238b68ace42c65fda969289b5d38b212389a547762db2602f4f2984c4e83a7b10dd0ca26f3faa1ab609828f0a6f3bfed8aca5ad7a91941 | 4787 | checksum: 7ba9f797e33d9f7fb623ed4eb63a8f4697da1423e8dd47a336c759707a14aebc9d2e04c7df286a493f4eac30c178c6ffad89f559beb3e9641992b6a57f933088 |
4768 | languageName: node | 4788 | languageName: node |
4769 | linkType: hard | 4789 | linkType: hard |
4770 | 4790 | ||
4771 | "ip@npm:^1.1.5": | 4791 | "ip@npm:^2.0.0": |
4772 | version: 1.1.5 | 4792 | version: 2.0.0 |
4773 | resolution: "ip@npm:1.1.5" | 4793 | resolution: "ip@npm:2.0.0" |
4774 | checksum: bf1e24b6571eda04959cb77e8c52f507c326a6282bf347d888c3121c80c8ca1b1b01f83b38ce413988fcd9bdac35208666db56f012e0314180a8f42ea49e591d | 4794 | checksum: 42a7cf251b844d98a4c3373d06997b991cd1a7f8a5d43bcf2b4f610517d39c5504f6eb3e73e77f5c1453ac766690e82dab28a8a05a49a6fd7d4a40fad93640e9 |
4775 | languageName: node | ||
4776 | linkType: hard | ||
4777 | |||
4778 | "is-arguments@npm:^1.1.0, is-arguments@npm:^1.1.1": | ||
4779 | version: 1.1.1 | ||
4780 | resolution: "is-arguments@npm:1.1.1" | ||
4781 | dependencies: | ||
4782 | call-bind: "npm:^1.0.2" | ||
4783 | has-tostringtag: "npm:^1.0.0" | ||
4784 | checksum: 3eae41e0267725f644140c795cdcefd265f2ed9f946d4e114b4ccf1f255f42afccfb6f8d79b0124e16cf59ec05841288439435140f9a4450d701f74a271c649c | ||
4785 | languageName: node | 4795 | languageName: node |
4786 | linkType: hard | 4796 | linkType: hard |
4787 | 4797 | ||
4788 | "is-array-buffer@npm:^3.0.1": | 4798 | "is-array-buffer@npm:^3.0.1, is-array-buffer@npm:^3.0.2": |
4789 | version: 3.0.1 | 4799 | version: 3.0.2 |
4790 | resolution: "is-array-buffer@npm:3.0.1" | 4800 | resolution: "is-array-buffer@npm:3.0.2" |
4791 | dependencies: | 4801 | dependencies: |
4792 | call-bind: "npm:^1.0.2" | 4802 | call-bind: "npm:^1.0.2" |
4793 | get-intrinsic: "npm:^1.1.3" | 4803 | get-intrinsic: "npm:^1.2.0" |
4794 | is-typed-array: "npm:^1.1.10" | 4804 | is-typed-array: "npm:^1.1.10" |
4795 | checksum: b0af6728a739bc5f3f045df4471accacb791fcdbc29b2ea54038729e61ac2dd05c33231d9ce8486d32575f01eeb1268cf88d92d3d63fa0e8ab8078d6955ff6f2 | 4805 | checksum: a16f8a01bef76922e75984bd33e38dff931c512d8bb7b8e994898643513fbfedfd7c270f375d4a9c41819c5161b23d9e7fff6c9cbcbd97189a97c1f934a3f7c0 |
4796 | languageName: node | 4806 | languageName: node |
4797 | linkType: hard | 4807 | linkType: hard |
4798 | 4808 | ||
@@ -4838,16 +4848,16 @@ __metadata: | |||
4838 | languageName: node | 4848 | languageName: node |
4839 | linkType: hard | 4849 | linkType: hard |
4840 | 4850 | ||
4841 | "is-core-module@npm:^2.10.0, is-core-module@npm:^2.11.0, is-core-module@npm:^2.9.0": | 4851 | "is-core-module@npm:^2.11.0, is-core-module@npm:^2.12.0, is-core-module@npm:^2.9.0": |
4842 | version: 2.11.0 | 4852 | version: 2.12.1 |
4843 | resolution: "is-core-module@npm:2.11.0" | 4853 | resolution: "is-core-module@npm:2.12.1" |
4844 | dependencies: | 4854 | dependencies: |
4845 | has: "npm:^1.0.3" | 4855 | has: "npm:^1.0.3" |
4846 | checksum: c1bf6feab8bba140f691b853db3032d33ce1bc883ecd1b7ddb4e33f2443b4da2bcbba671b6290c34f45c27a8fc02c0bf5e01c68192671f9133029d21a48f25b0 | 4856 | checksum: ad50fa9887d64a912837625b54df9489005180d829128c5d979355a969e80e65f772a54ac29e8f25a18a2ad2c6b45115deffb32a3e0c2d5b16ee7ad292066b5a |
4847 | languageName: node | 4857 | languageName: node |
4848 | linkType: hard | 4858 | linkType: hard |
4849 | 4859 | ||
4850 | "is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": | 4860 | "is-date-object@npm:^1.0.1": |
4851 | version: 1.0.5 | 4861 | version: 1.0.5 |
4852 | resolution: "is-date-object@npm:1.0.5" | 4862 | resolution: "is-date-object@npm:1.0.5" |
4853 | dependencies: | 4863 | dependencies: |
@@ -4895,13 +4905,6 @@ __metadata: | |||
4895 | languageName: node | 4905 | languageName: node |
4896 | linkType: hard | 4906 | linkType: hard |
4897 | 4907 | ||
4898 | "is-map@npm:^2.0.1, is-map@npm:^2.0.2": | ||
4899 | version: 2.0.2 | ||
4900 | resolution: "is-map@npm:2.0.2" | ||
4901 | checksum: ffa1914b19d6d5a2bc50ddd28ff9268429053f4b12b7ba511dc4f9fed3ac28391446948b5bef758664dc8b4dc11e24a40398e40666fbd525c75723533a568213 | ||
4902 | languageName: node | ||
4903 | linkType: hard | ||
4904 | |||
4905 | "is-module@npm:^1.0.0": | 4908 | "is-module@npm:^1.0.0": |
4906 | version: 1.0.0 | 4909 | version: 1.0.0 |
4907 | resolution: "is-module@npm:1.0.0" | 4910 | resolution: "is-module@npm:1.0.0" |
@@ -4917,11 +4920,11 @@ __metadata: | |||
4917 | linkType: hard | 4920 | linkType: hard |
4918 | 4921 | ||
4919 | "is-number-object@npm:^1.0.4": | 4922 | "is-number-object@npm:^1.0.4": |
4920 | version: 1.0.6 | 4923 | version: 1.0.7 |
4921 | resolution: "is-number-object@npm:1.0.6" | 4924 | resolution: "is-number-object@npm:1.0.7" |
4922 | dependencies: | 4925 | dependencies: |
4923 | has-tostringtag: "npm:^1.0.0" | 4926 | has-tostringtag: "npm:^1.0.0" |
4924 | checksum: da78381e641f96531851cb9092a8a19c655effb5591a9ab15b16b3fd6f3a86430c1abc3f72e88cced238baa0d2836eca242efe48a3ee3877a38587977ab14874 | 4927 | checksum: fd67ff18bad5c64ce2054a03d92c9f264f0f0cd197ea6951207c3dd1b9bea5b40e933be440e7673ea2f1e2a6b265c1842651c94c12d16efd84bbe9310d9cc600 |
4925 | languageName: node | 4928 | languageName: node |
4926 | linkType: hard | 4929 | linkType: hard |
4927 | 4930 | ||
@@ -4963,13 +4966,6 @@ __metadata: | |||
4963 | languageName: node | 4966 | languageName: node |
4964 | linkType: hard | 4967 | linkType: hard |
4965 | 4968 | ||
4966 | "is-set@npm:^2.0.1, is-set@npm:^2.0.2": | ||
4967 | version: 2.0.2 | ||
4968 | resolution: "is-set@npm:2.0.2" | ||
4969 | checksum: 09fa41ce849885c733d98f35c0ff1a24073fd5f920ef6201aa64ae054516f9b07af4d10282b2890ed098ed360538a22ab296d08ff9a4191baf318fa682c8c4e5 | ||
4970 | languageName: node | ||
4971 | linkType: hard | ||
4972 | |||
4973 | "is-shared-array-buffer@npm:^1.0.2": | 4969 | "is-shared-array-buffer@npm:^1.0.2": |
4974 | version: 1.0.2 | 4970 | version: 1.0.2 |
4975 | resolution: "is-shared-array-buffer@npm:1.0.2" | 4971 | resolution: "is-shared-array-buffer@npm:1.0.2" |
@@ -5004,7 +5000,7 @@ __metadata: | |||
5004 | languageName: node | 5000 | languageName: node |
5005 | linkType: hard | 5001 | linkType: hard |
5006 | 5002 | ||
5007 | "is-typed-array@npm:^1.1.10": | 5003 | "is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.9": |
5008 | version: 1.1.10 | 5004 | version: 1.1.10 |
5009 | resolution: "is-typed-array@npm:1.1.10" | 5005 | resolution: "is-typed-array@npm:1.1.10" |
5010 | dependencies: | 5006 | dependencies: |
@@ -5017,13 +5013,6 @@ __metadata: | |||
5017 | languageName: node | 5013 | languageName: node |
5018 | linkType: hard | 5014 | linkType: hard |
5019 | 5015 | ||
5020 | "is-weakmap@npm:^2.0.1": | ||
5021 | version: 2.0.1 | ||
5022 | resolution: "is-weakmap@npm:2.0.1" | ||
5023 | checksum: d0c3c595950828d94a57223c70609246d7af1ad083f8419fa254eb377841721fff6d3e3ece6eaa149ff30a988c8d46cc0cc1c25e8a00c598a2932c22a5d84503 | ||
5024 | languageName: node | ||
5025 | linkType: hard | ||
5026 | |||
5027 | "is-weakref@npm:^1.0.2": | 5016 | "is-weakref@npm:^1.0.2": |
5028 | version: 1.0.2 | 5017 | version: 1.0.2 |
5029 | resolution: "is-weakref@npm:1.0.2" | 5018 | resolution: "is-weakref@npm:1.0.2" |
@@ -5033,16 +5022,6 @@ __metadata: | |||
5033 | languageName: node | 5022 | languageName: node |
5034 | linkType: hard | 5023 | linkType: hard |
5035 | 5024 | ||
5036 | "is-weakset@npm:^2.0.1": | ||
5037 | version: 2.0.2 | ||
5038 | resolution: "is-weakset@npm:2.0.2" | ||
5039 | dependencies: | ||
5040 | call-bind: "npm:^1.0.2" | ||
5041 | get-intrinsic: "npm:^1.1.1" | ||
5042 | checksum: 5edf380562a0fd41f5096aedf7167a1ff338dc1a631d77942ce10d3bb278bddee67fe10a822095bf5b516c4cf56399c832f567ec70e6a6e659a03fa53593fd02 | ||
5043 | languageName: node | ||
5044 | linkType: hard | ||
5045 | |||
5046 | "is-wsl@npm:^2.2.0": | 5025 | "is-wsl@npm:^2.2.0": |
5047 | version: 2.2.0 | 5026 | version: 2.2.0 |
5048 | resolution: "is-wsl@npm:2.2.0" | 5027 | resolution: "is-wsl@npm:2.2.0" |
@@ -5052,13 +5031,6 @@ __metadata: | |||
5052 | languageName: node | 5031 | languageName: node |
5053 | linkType: hard | 5032 | linkType: hard |
5054 | 5033 | ||
5055 | "isarray@npm:^2.0.5": | ||
5056 | version: 2.0.5 | ||
5057 | resolution: "isarray@npm:2.0.5" | ||
5058 | checksum: bd46a907ad163c4c937d08ee6520fc9482cf5457dc0d168457ef755d8f26e75b5e2649962722a4c0f5ab2398a95e431c8469c86a004c42db21230ef40b8720ee | ||
5059 | languageName: node | ||
5060 | linkType: hard | ||
5061 | |||
5062 | "isexe@npm:^2.0.0": | 5034 | "isexe@npm:^2.0.0": |
5063 | version: 2.0.0 | 5035 | version: 2.0.0 |
5064 | resolution: "isexe@npm:2.0.0" | 5036 | resolution: "isexe@npm:2.0.0" |
@@ -5066,17 +5038,30 @@ __metadata: | |||
5066 | languageName: node | 5038 | languageName: node |
5067 | linkType: hard | 5039 | linkType: hard |
5068 | 5040 | ||
5041 | "jackspeak@npm:^2.0.3": | ||
5042 | version: 2.2.1 | ||
5043 | resolution: "jackspeak@npm:2.2.1" | ||
5044 | dependencies: | ||
5045 | "@isaacs/cliui": "npm:^8.0.2" | ||
5046 | "@pkgjs/parseargs": "npm:^0.11.0" | ||
5047 | dependenciesMeta: | ||
5048 | "@pkgjs/parseargs": | ||
5049 | optional: true | ||
5050 | checksum: b7c66988fb8575356fcf6b6c0fdcfb89a78fd0aaceb16d1318ae355fb7b6f51a456e9b8cf47ac0875bb7d6b94d82cc649762d5b819f4055ad5c5f5d617a0e20f | ||
5051 | languageName: node | ||
5052 | linkType: hard | ||
5053 | |||
5069 | "jake@npm:^10.8.5": | 5054 | "jake@npm:^10.8.5": |
5070 | version: 10.8.5 | 5055 | version: 10.8.7 |
5071 | resolution: "jake@npm:10.8.5" | 5056 | resolution: "jake@npm:10.8.7" |
5072 | dependencies: | 5057 | dependencies: |
5073 | async: "npm:^3.2.3" | 5058 | async: "npm:^3.2.3" |
5074 | chalk: "npm:^4.0.2" | 5059 | chalk: "npm:^4.0.2" |
5075 | filelist: "npm:^1.0.1" | 5060 | filelist: "npm:^1.0.4" |
5076 | minimatch: "npm:^3.0.4" | 5061 | minimatch: "npm:^3.1.2" |
5077 | bin: | 5062 | bin: |
5078 | jake: ./bin/cli.js | 5063 | jake: bin/cli.js |
5079 | checksum: ac043772e821e889ed31447e2e481e37e66d1955977f5ed6a6a5daab7f66f9e603720f2310c712fe90fd37d268f2b5070bbae114e7979b0010f4779a0e455d91 | 5064 | checksum: 92991ae6bcb5e0889e68e745a667992fdc4bf17e62dfda1d01db535e494347f20d9d47b9bcd31f149dcd96aad2ccd9e2994f917c33b9c6adc124e8730135137d |
5080 | languageName: node | 5065 | languageName: node |
5081 | linkType: hard | 5066 | linkType: hard |
5082 | 5067 | ||
@@ -5091,13 +5076,6 @@ __metadata: | |||
5091 | languageName: node | 5076 | languageName: node |
5092 | linkType: hard | 5077 | linkType: hard |
5093 | 5078 | ||
5094 | "js-sdsl@npm:^4.1.4": | ||
5095 | version: 4.1.4 | ||
5096 | resolution: "js-sdsl@npm:4.1.4" | ||
5097 | checksum: bf97179276b433ff4f138bd53fe411549893999f5571cc0da7cc5d16bc24cd50631bad83a61c32ed7e6f4ded7cc2ae06ad5ad4d56e05ed70d5c6993fc4553c41 | ||
5098 | languageName: node | ||
5099 | linkType: hard | ||
5100 | |||
5101 | "js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": | 5079 | "js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": |
5102 | version: 4.0.0 | 5080 | version: 4.0.0 |
5103 | resolution: "js-tokens@npm:4.0.0" | 5081 | resolution: "js-tokens@npm:4.0.0" |
@@ -5169,7 +5147,7 @@ __metadata: | |||
5169 | languageName: node | 5147 | languageName: node |
5170 | linkType: hard | 5148 | linkType: hard |
5171 | 5149 | ||
5172 | "json5@npm:^1.0.1": | 5150 | "json5@npm:^1.0.2": |
5173 | version: 1.0.2 | 5151 | version: 1.0.2 |
5174 | resolution: "json5@npm:1.0.2" | 5152 | resolution: "json5@npm:1.0.2" |
5175 | dependencies: | 5153 | dependencies: |
@@ -5180,7 +5158,7 @@ __metadata: | |||
5180 | languageName: node | 5158 | languageName: node |
5181 | linkType: hard | 5159 | linkType: hard |
5182 | 5160 | ||
5183 | "json5@npm:^2.2.0, json5@npm:^2.2.1": | 5161 | "json5@npm:^2.2.0, json5@npm:^2.2.2": |
5184 | version: 2.2.3 | 5162 | version: 2.2.3 |
5185 | resolution: "json5@npm:2.2.3" | 5163 | resolution: "json5@npm:2.2.3" |
5186 | bin: | 5164 | bin: |
@@ -5220,9 +5198,9 @@ __metadata: | |||
5220 | linkType: hard | 5198 | linkType: hard |
5221 | 5199 | ||
5222 | "language-subtag-registry@npm:~0.3.2": | 5200 | "language-subtag-registry@npm:~0.3.2": |
5223 | version: 0.3.21 | 5201 | version: 0.3.22 |
5224 | resolution: "language-subtag-registry@npm:0.3.21" | 5202 | resolution: "language-subtag-registry@npm:0.3.22" |
5225 | checksum: 52e0593bc0b1d69d487339961458bd89a76ddbfac23ffe973fcadad64bd305b20880b2f159b93283cb3593869cc1d7a480548b3eb665be276c5d49d892ff98a0 | 5203 | checksum: 5d97350e417c3e06add9d30a7d39f40885578fa06210e9e07ca2eb527b580a16842bfc76ab1a71a7891d3f908a2928d335a8d8712f0049a183ebe2d4d60fee56 |
5226 | languageName: node | 5204 | languageName: node |
5227 | linkType: hard | 5205 | linkType: hard |
5228 | 5206 | ||
@@ -5337,6 +5315,15 @@ __metadata: | |||
5337 | languageName: node | 5315 | languageName: node |
5338 | linkType: hard | 5316 | linkType: hard |
5339 | 5317 | ||
5318 | "lru-cache@npm:^5.1.1": | ||
5319 | version: 5.1.1 | ||
5320 | resolution: "lru-cache@npm:5.1.1" | ||
5321 | dependencies: | ||
5322 | yallist: "npm:^3.0.2" | ||
5323 | checksum: 7e3274d0936ac64611d0053664b5c722f2b869c4962a007752251602020345f385885cfeabd0162aa45c7d2ee8a21f461d9d628db348f553c126126b170ad6d2 | ||
5324 | languageName: node | ||
5325 | linkType: hard | ||
5326 | |||
5340 | "lru-cache@npm:^6.0.0": | 5327 | "lru-cache@npm:^6.0.0": |
5341 | version: 6.0.0 | 5328 | version: 6.0.0 |
5342 | resolution: "lru-cache@npm:6.0.0" | 5329 | resolution: "lru-cache@npm:6.0.0" |
@@ -5346,6 +5333,20 @@ __metadata: | |||
5346 | languageName: node | 5333 | languageName: node |
5347 | linkType: hard | 5334 | linkType: hard |
5348 | 5335 | ||
5336 | "lru-cache@npm:^7.7.1": | ||
5337 | version: 7.18.3 | ||
5338 | resolution: "lru-cache@npm:7.18.3" | ||
5339 | checksum: 884c7cb51963cc45bc0d864c704d141c904c93db1bbc236be0eed759e35fc44b5e794a34b0666e193926e5a4320b66e787b1cf531f4f89ed8514a97156f07cb1 | ||
5340 | languageName: node | ||
5341 | linkType: hard | ||
5342 | |||
5343 | "lru-cache@npm:^9.1.1": | ||
5344 | version: 9.1.2 | ||
5345 | resolution: "lru-cache@npm:9.1.2" | ||
5346 | checksum: 95e6da12da11dd05404636c5d8c7f7a3e682bb7d2acb002738f9f6de941eca1e7229aa45a9b4a8375ab55f0ef7a1c34a3b002b066f85c4bc00634ee68e0f978e | ||
5347 | languageName: node | ||
5348 | linkType: hard | ||
5349 | |||
5349 | "magic-string@npm:^0.25.0, magic-string@npm:^0.25.7": | 5350 | "magic-string@npm:^0.25.0, magic-string@npm:^0.25.7": |
5350 | version: 0.25.9 | 5351 | version: 0.25.9 |
5351 | resolution: "magic-string@npm:0.25.9" | 5352 | resolution: "magic-string@npm:0.25.9" |
@@ -5355,36 +5356,26 @@ __metadata: | |||
5355 | languageName: node | 5356 | languageName: node |
5356 | linkType: hard | 5357 | linkType: hard |
5357 | 5358 | ||
5358 | "magic-string@npm:^0.26.4": | 5359 | "make-fetch-happen@npm:^11.0.3": |
5359 | version: 0.26.7 | 5360 | version: 11.1.1 |
5360 | resolution: "magic-string@npm:0.26.7" | 5361 | resolution: "make-fetch-happen@npm:11.1.1" |
5361 | dependencies: | 5362 | dependencies: |
5362 | sourcemap-codec: "npm:^1.4.8" | 5363 | agentkeepalive: "npm:^4.2.1" |
5363 | checksum: c32d85ae488a66f9dd604199d41f7f4335c9db2adc3c5e24555a3f75551de9a81cb1ba9ce16941e4fa9af9908e832a25a796b27d744a707a4343cecf20d75e54 | 5364 | cacache: "npm:^17.0.0" |
5364 | languageName: node | 5365 | http-cache-semantics: "npm:^4.1.1" |
5365 | linkType: hard | 5366 | http-proxy-agent: "npm:^5.0.0" |
5366 | |||
5367 | "make-fetch-happen@npm:^9.1.0": | ||
5368 | version: 9.1.0 | ||
5369 | resolution: "make-fetch-happen@npm:9.1.0" | ||
5370 | dependencies: | ||
5371 | agentkeepalive: "npm:^4.1.3" | ||
5372 | cacache: "npm:^15.2.0" | ||
5373 | http-cache-semantics: "npm:^4.1.0" | ||
5374 | http-proxy-agent: "npm:^4.0.1" | ||
5375 | https-proxy-agent: "npm:^5.0.0" | 5367 | https-proxy-agent: "npm:^5.0.0" |
5376 | is-lambda: "npm:^1.0.1" | 5368 | is-lambda: "npm:^1.0.1" |
5377 | lru-cache: "npm:^6.0.0" | 5369 | lru-cache: "npm:^7.7.1" |
5378 | minipass: "npm:^3.1.3" | 5370 | minipass: "npm:^5.0.0" |
5379 | minipass-collect: "npm:^1.0.2" | 5371 | minipass-fetch: "npm:^3.0.0" |
5380 | minipass-fetch: "npm:^1.3.2" | ||
5381 | minipass-flush: "npm:^1.0.5" | 5372 | minipass-flush: "npm:^1.0.5" |
5382 | minipass-pipeline: "npm:^1.2.4" | 5373 | minipass-pipeline: "npm:^1.2.4" |
5383 | negotiator: "npm:^0.6.2" | 5374 | negotiator: "npm:^0.6.3" |
5384 | promise-retry: "npm:^2.0.1" | 5375 | promise-retry: "npm:^2.0.1" |
5385 | socks-proxy-agent: "npm:^6.0.0" | 5376 | socks-proxy-agent: "npm:^7.0.0" |
5386 | ssri: "npm:^8.0.0" | 5377 | ssri: "npm:^10.0.0" |
5387 | checksum: b2458728fe9e4db3bd1624b8385bf30b20d42b456a2eca7623306b37b08e5eb0ee4420e618d8382b6988c9cf808ff94f1f66c2f036afe09f4b1d5e062cd6e5ea | 5378 | checksum: 26053f51534d0886d8f0c1f4312d442f2bd6d2955a7fd12aa0679fc4ed4734ca2e0168eec517d418b73cedd01d107f86749a340a7386ef8b3ef0cacf018995af |
5388 | languageName: node | 5379 | languageName: node |
5389 | linkType: hard | 5380 | linkType: hard |
5390 | 5381 | ||
@@ -5412,7 +5403,7 @@ __metadata: | |||
5412 | languageName: node | 5403 | languageName: node |
5413 | linkType: hard | 5404 | linkType: hard |
5414 | 5405 | ||
5415 | "minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": | 5406 | "minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": |
5416 | version: 3.1.2 | 5407 | version: 3.1.2 |
5417 | resolution: "minimatch@npm:3.1.2" | 5408 | resolution: "minimatch@npm:3.1.2" |
5418 | dependencies: | 5409 | dependencies: |
@@ -5422,18 +5413,27 @@ __metadata: | |||
5422 | linkType: hard | 5413 | linkType: hard |
5423 | 5414 | ||
5424 | "minimatch@npm:^5.0.1": | 5415 | "minimatch@npm:^5.0.1": |
5425 | version: 5.1.0 | 5416 | version: 5.1.6 |
5426 | resolution: "minimatch@npm:5.1.0" | 5417 | resolution: "minimatch@npm:5.1.6" |
5427 | dependencies: | 5418 | dependencies: |
5428 | brace-expansion: "npm:^2.0.1" | 5419 | brace-expansion: "npm:^2.0.1" |
5429 | checksum: cf8124b47d19be2d6a4b2cab80114999239ab6a01062e2f0abe666b779de120b6f85ed9a73e3a27b61fa088fb45957929a8fcc727bd20de829d3e4e659ad01ff | 5420 | checksum: 0c0446ede579b1736bfea4efb288c2dea17ce80fd0339d00547625ed97a60ed403c7c2fb141211119937a811bc635b3f0f44debeb9d7870b3f58cf0fe78ddccc |
5421 | languageName: node | ||
5422 | linkType: hard | ||
5423 | |||
5424 | "minimatch@npm:^9.0.1": | ||
5425 | version: 9.0.1 | ||
5426 | resolution: "minimatch@npm:9.0.1" | ||
5427 | dependencies: | ||
5428 | brace-expansion: "npm:^2.0.1" | ||
5429 | checksum: 6648745fd9fc8d5870d59d4fde5defd9d4cb3d44cbb6831e97e103c43f1d9bf5fcc24cea54e9e3bf09eac7e002cce200cc295e30c84180198970a0bed369f037 | ||
5430 | languageName: node | 5430 | languageName: node |
5431 | linkType: hard | 5431 | linkType: hard |
5432 | 5432 | ||
5433 | "minimist@npm:^1.2.0, minimist@npm:^1.2.6": | 5433 | "minimist@npm:^1.2.0, minimist@npm:^1.2.6": |
5434 | version: 1.2.6 | 5434 | version: 1.2.8 |
5435 | resolution: "minimist@npm:1.2.6" | 5435 | resolution: "minimist@npm:1.2.8" |
5436 | checksum: b0286df020a110fa0173e71d8c9903748eb2cc939396d04a61bc224635393c564bc264d04a16e36d51e5489be513f98d7dbe5c2cf11598da11c91f6a18b9449e | 5436 | checksum: 8598f846f2b7546b22b01ce486df27da216a302367afe17f2a032da12fcb8d33bfbf2c523051230864abf0b806748bd60d4cd0863fae35fe104da1ff6194a185 |
5437 | languageName: node | 5437 | languageName: node |
5438 | linkType: hard | 5438 | linkType: hard |
5439 | 5439 | ||
@@ -5446,18 +5446,18 @@ __metadata: | |||
5446 | languageName: node | 5446 | languageName: node |
5447 | linkType: hard | 5447 | linkType: hard |
5448 | 5448 | ||
5449 | "minipass-fetch@npm:^1.3.2": | 5449 | "minipass-fetch@npm:^3.0.0": |
5450 | version: 1.4.1 | 5450 | version: 3.0.3 |
5451 | resolution: "minipass-fetch@npm:1.4.1" | 5451 | resolution: "minipass-fetch@npm:3.0.3" |
5452 | dependencies: | 5452 | dependencies: |
5453 | encoding: "npm:^0.1.12" | 5453 | encoding: "npm:^0.1.13" |
5454 | minipass: "npm:^3.1.0" | 5454 | minipass: "npm:^5.0.0" |
5455 | minipass-sized: "npm:^1.0.3" | 5455 | minipass-sized: "npm:^1.0.3" |
5456 | minizlib: "npm:^2.0.0" | 5456 | minizlib: "npm:^2.1.2" |
5457 | dependenciesMeta: | 5457 | dependenciesMeta: |
5458 | encoding: | 5458 | encoding: |
5459 | optional: true | 5459 | optional: true |
5460 | checksum: e9e37b5688791c97f4d56a7fd93c8930e0a26dce98274ff9b48f4a5e18db994884c7cc34060c8c5d2ccfd6d6711307ee2b81725ae81e0676c94867c9357e89ba | 5460 | checksum: 26c3d698b5869a2d5d7537a52b49bd2be5696f9e11b9eb982b2c5145403cdb81c1f150f59251ef1226e25e4d5fc70998ea251915535eb21854a692affa79968c |
5461 | languageName: node | 5461 | languageName: node |
5462 | linkType: hard | 5462 | linkType: hard |
5463 | 5463 | ||
@@ -5470,7 +5470,7 @@ __metadata: | |||
5470 | languageName: node | 5470 | languageName: node |
5471 | linkType: hard | 5471 | linkType: hard |
5472 | 5472 | ||
5473 | "minipass-pipeline@npm:^1.2.2, minipass-pipeline@npm:^1.2.4": | 5473 | "minipass-pipeline@npm:^1.2.4": |
5474 | version: 1.2.4 | 5474 | version: 1.2.4 |
5475 | resolution: "minipass-pipeline@npm:1.2.4" | 5475 | resolution: "minipass-pipeline@npm:1.2.4" |
5476 | dependencies: | 5476 | dependencies: |
@@ -5488,16 +5488,30 @@ __metadata: | |||
5488 | languageName: node | 5488 | languageName: node |
5489 | linkType: hard | 5489 | linkType: hard |
5490 | 5490 | ||
5491 | "minipass@npm:^3.0.0, minipass@npm:^3.1.0, minipass@npm:^3.1.1, minipass@npm:^3.1.3": | 5491 | "minipass@npm:^3.0.0": |
5492 | version: 3.1.6 | 5492 | version: 3.3.6 |
5493 | resolution: "minipass@npm:3.1.6" | 5493 | resolution: "minipass@npm:3.3.6" |
5494 | dependencies: | 5494 | dependencies: |
5495 | yallist: "npm:^4.0.0" | 5495 | yallist: "npm:^4.0.0" |
5496 | checksum: 352a2f87eca475d11c9a486233a2d2c19ce1425309370f42545ca934345bb95ec42a6f0b1e9ac4ee81b7f0046d6cc701feccf7243571d34e655b50c2534ffca6 | 5496 | checksum: 9704cf677a05e82174c1a0765260f877ce3b4f09858b6c80a07a38a41ff661a2913a482f82faa73b89fc23ee3bcc4cff04d7e8ce6951de4fc2c2108d360b6f1f |
5497 | languageName: node | 5497 | languageName: node |
5498 | linkType: hard | 5498 | linkType: hard |
5499 | 5499 | ||
5500 | "minizlib@npm:^2.0.0, minizlib@npm:^2.1.1": | 5500 | "minipass@npm:^5.0.0": |
5501 | version: 5.0.0 | ||
5502 | resolution: "minipass@npm:5.0.0" | ||
5503 | checksum: dac2e1960990ca7c288834e7311e029828d9ae4c90fdabae95a3ea269592871feaa755a1ef9241d487e6fe59d86a43e1d8bac41c47f13c3c0add0799ab500a0b | ||
5504 | languageName: node | ||
5505 | linkType: hard | ||
5506 | |||
5507 | "minipass@npm:^5.0.0 || ^6.0.2": | ||
5508 | version: 6.0.2 | ||
5509 | resolution: "minipass@npm:6.0.2" | ||
5510 | checksum: 9d8e7a2dc7dd240f1c2b4255b75ffadb7f296ab917d5289978869436333866a05b5128760847bd6b772ee7f0d78cfe775489669a4ba728f1de0f194ca14fe829 | ||
5511 | languageName: node | ||
5512 | linkType: hard | ||
5513 | |||
5514 | "minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": | ||
5501 | version: 2.1.2 | 5515 | version: 2.1.2 |
5502 | resolution: "minizlib@npm:2.1.2" | 5516 | resolution: "minizlib@npm:2.1.2" |
5503 | dependencies: | 5517 | dependencies: |
@@ -5507,7 +5521,7 @@ __metadata: | |||
5507 | languageName: node | 5521 | languageName: node |
5508 | linkType: hard | 5522 | linkType: hard |
5509 | 5523 | ||
5510 | "mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": | 5524 | "mkdirp@npm:^1.0.3": |
5511 | version: 1.0.4 | 5525 | version: 1.0.4 |
5512 | resolution: "mkdirp@npm:1.0.4" | 5526 | resolution: "mkdirp@npm:1.0.4" |
5513 | bin: | 5527 | bin: |
@@ -5516,9 +5530,9 @@ __metadata: | |||
5516 | languageName: node | 5530 | languageName: node |
5517 | linkType: hard | 5531 | linkType: hard |
5518 | 5532 | ||
5519 | "mobx-react-lite@npm:^3.4.0": | 5533 | "mobx-react-lite@npm:^3.4.3": |
5520 | version: 3.4.0 | 5534 | version: 3.4.3 |
5521 | resolution: "mobx-react-lite@npm:3.4.0" | 5535 | resolution: "mobx-react-lite@npm:3.4.3" |
5522 | peerDependencies: | 5536 | peerDependencies: |
5523 | mobx: ^6.1.0 | 5537 | mobx: ^6.1.0 |
5524 | react: ^16.8.0 || ^17 || ^18 | 5538 | react: ^16.8.0 || ^17 || ^18 |
@@ -5527,14 +5541,14 @@ __metadata: | |||
5527 | optional: true | 5541 | optional: true |
5528 | react-native: | 5542 | react-native: |
5529 | optional: true | 5543 | optional: true |
5530 | checksum: 7363315f2e566c7e601bdad118f1a64534226941deb937c5ee7ce09dc7d59f960653f54b31528757757463c1cc32471460098f9875801f8c78506e6bffee7390 | 5544 | checksum: d7291f504c95e4f83ffca732698c58ec1acee0fc882ffabade5ac29d2f04ff44fc5a027dd7787ebd5ca3be795cf19c5b43b715948d972b685adf89d8826ec1f6 |
5531 | languageName: node | 5545 | languageName: node |
5532 | linkType: hard | 5546 | linkType: hard |
5533 | 5547 | ||
5534 | "mobx@npm:^6.7.0": | 5548 | "mobx@npm:^6.9.0": |
5535 | version: 6.7.0 | 5549 | version: 6.9.0 |
5536 | resolution: "mobx@npm:6.7.0" | 5550 | resolution: "mobx@npm:6.9.0" |
5537 | checksum: d74a61a4becb421c6b9822807188048386b800a71e153a524906dcd7425932c7a25216781f89fe443cc264983a99e2bfe1f4f3e53a899d84015aeb0a4f69c285 | 5551 | checksum: 8e4899424940d3e0e46621ad003c4f629d981fc72873fe3cb2cd01e4e0359895a0ee9c78aa975981dec7e69977dd463b6f8c8c30303bb1169e3d42bec759a32f |
5538 | languageName: node | 5552 | languageName: node |
5539 | linkType: hard | 5553 | linkType: hard |
5540 | 5554 | ||
@@ -5552,21 +5566,21 @@ __metadata: | |||
5552 | languageName: node | 5566 | languageName: node |
5553 | linkType: hard | 5567 | linkType: hard |
5554 | 5568 | ||
5555 | "nanoid@npm:^3.3.4": | 5569 | "nanoid@npm:^3.3.6": |
5556 | version: 3.3.4 | 5570 | version: 3.3.6 |
5557 | resolution: "nanoid@npm:3.3.4" | 5571 | resolution: "nanoid@npm:3.3.6" |
5558 | bin: | 5572 | bin: |
5559 | nanoid: bin/nanoid.cjs | 5573 | nanoid: bin/nanoid.cjs |
5560 | checksum: 53d605377c76614170df4b5a8d3fa21f13c7077453a77e2393a9fe3df5722022f6b94a671f406b51f81e9c937a6928555c1589e3c46a0d9d29f31872d1362246 | 5574 | checksum: c6f3fad3b9132b17f72f9ca018ff12caf5a9fd474d08881156deffe7c77cc76220e49610232e570e2a33e3aa941214c08634762390a87b1fb9816d6108aa9e64 |
5561 | languageName: node | 5575 | languageName: node |
5562 | linkType: hard | 5576 | linkType: hard |
5563 | 5577 | ||
5564 | "nanoid@npm:^4.0.0": | 5578 | "nanoid@npm:^4.0.2": |
5565 | version: 4.0.0 | 5579 | version: 4.0.2 |
5566 | resolution: "nanoid@npm:4.0.0" | 5580 | resolution: "nanoid@npm:4.0.2" |
5567 | bin: | 5581 | bin: |
5568 | nanoid: bin/nanoid.js | 5582 | nanoid: bin/nanoid.js |
5569 | checksum: b6263a2a2425999b5aecabd18b25442ae4ef13048b2809ff173e0b0066f376b6fb2605d423763d1d26512cb095e71beee3d8b927f984603e05e169e171d8f6f0 | 5583 | checksum: 0e28bade6b10396bc0936980c7569e9710341b3dd8775bcd0645b7d23f59ff64e59c4413f48836bc336711ef1cc4f61f6453946a3bf69c4c235fab9d221f9216 |
5570 | languageName: node | 5584 | languageName: node |
5571 | linkType: hard | 5585 | linkType: hard |
5572 | 5586 | ||
@@ -5584,7 +5598,7 @@ __metadata: | |||
5584 | languageName: node | 5598 | languageName: node |
5585 | linkType: hard | 5599 | linkType: hard |
5586 | 5600 | ||
5587 | "negotiator@npm:^0.6.2": | 5601 | "negotiator@npm:^0.6.3": |
5588 | version: 0.6.3 | 5602 | version: 0.6.3 |
5589 | resolution: "negotiator@npm:0.6.3" | 5603 | resolution: "negotiator@npm:0.6.3" |
5590 | checksum: d8e3b42d99638b1f363ce114c98e6906ade395c230058e50644417bd398b01381133dbca4bc49f30f6b1c93254e4b5a2d50cc47adcdabf2a8476b6f16311ad5d | 5604 | checksum: d8e3b42d99638b1f363ce114c98e6906ade395c230058e50644417bd398b01381133dbca4bc49f30f6b1c93254e4b5a2d50cc47adcdabf2a8476b6f16311ad5d |
@@ -5602,14 +5616,15 @@ __metadata: | |||
5602 | linkType: hard | 5616 | linkType: hard |
5603 | 5617 | ||
5604 | "node-gyp@npm:latest": | 5618 | "node-gyp@npm:latest": |
5605 | version: 8.4.1 | 5619 | version: 9.4.0 |
5606 | resolution: "node-gyp@npm:8.4.1" | 5620 | resolution: "node-gyp@npm:9.4.0" |
5607 | dependencies: | 5621 | dependencies: |
5608 | env-paths: "npm:^2.2.0" | 5622 | env-paths: "npm:^2.2.0" |
5623 | exponential-backoff: "npm:^3.1.1" | ||
5609 | glob: "npm:^7.1.4" | 5624 | glob: "npm:^7.1.4" |
5610 | graceful-fs: "npm:^4.2.6" | 5625 | graceful-fs: "npm:^4.2.6" |
5611 | make-fetch-happen: "npm:^9.1.0" | 5626 | make-fetch-happen: "npm:^11.0.3" |
5612 | nopt: "npm:^5.0.0" | 5627 | nopt: "npm:^6.0.0" |
5613 | npmlog: "npm:^6.0.0" | 5628 | npmlog: "npm:^6.0.0" |
5614 | rimraf: "npm:^3.0.2" | 5629 | rimraf: "npm:^3.0.2" |
5615 | semver: "npm:^7.3.5" | 5630 | semver: "npm:^7.3.5" |
@@ -5617,25 +5632,25 @@ __metadata: | |||
5617 | which: "npm:^2.0.2" | 5632 | which: "npm:^2.0.2" |
5618 | bin: | 5633 | bin: |
5619 | node-gyp: bin/node-gyp.js | 5634 | node-gyp: bin/node-gyp.js |
5620 | checksum: 9dc3f289bf1eb3ef62242d5476db4d3a6010aaa74f56f545bde897caf1f3d581ada85b704f346734ce46da4fad2d5ca2e37501ea32065fc44e92470f0a6c91e4 | 5635 | checksum: b180de9e7c1d4c63355d3883b30c03462e5bcb8c810a1ee41d3ef2a3fe2d0ef0244acdbebf9d30a4abe865cfea67b4665e483de79d8249114dbdea454d5263a2 |
5621 | languageName: node | 5636 | languageName: node |
5622 | linkType: hard | 5637 | linkType: hard |
5623 | 5638 | ||
5624 | "node-releases@npm:^2.0.6": | 5639 | "node-releases@npm:^2.0.12": |
5625 | version: 2.0.6 | 5640 | version: 2.0.12 |
5626 | resolution: "node-releases@npm:2.0.6" | 5641 | resolution: "node-releases@npm:2.0.12" |
5627 | checksum: 6d4a77d1566d9cf13d835bb2a9c4080c667417353260ba69092d570313c492772a030b5733f52838d90608e6ad558ab969673c67bc948e29143e527661e265b3 | 5642 | checksum: ae9ed0c2edca1127a0437a55e4467d6f32d496e8674bafdd1ffe42c3b90482727b178f37793a7041cc3287a42c624ada7a6a056857558134ba6b480ad9bc84db |
5628 | languageName: node | 5643 | languageName: node |
5629 | linkType: hard | 5644 | linkType: hard |
5630 | 5645 | ||
5631 | "nopt@npm:^5.0.0": | 5646 | "nopt@npm:^6.0.0": |
5632 | version: 5.0.0 | 5647 | version: 6.0.0 |
5633 | resolution: "nopt@npm:5.0.0" | 5648 | resolution: "nopt@npm:6.0.0" |
5634 | dependencies: | 5649 | dependencies: |
5635 | abbrev: "npm:1" | 5650 | abbrev: "npm:^1.0.0" |
5636 | bin: | 5651 | bin: |
5637 | nopt: bin/nopt.js | 5652 | nopt: bin/nopt.js |
5638 | checksum: cb0f3672738e989b12d8459f30366e8a89f79462581a09816cbbd575e272bc0ae2a135ac0b60647748be64100787d631cd0ac18157d519021336ae277e3362a3 | 5653 | checksum: 6ae5c083c5b205d0850f3b00c093cb0b1d4fb28fb69c68c3f933048e666695b1f218db6a4a7f61a4bae2f127268f526a7f2764223208e4dd527c51c56c49a5c7 |
5639 | languageName: node | 5654 | languageName: node |
5640 | linkType: hard | 5655 | linkType: hard |
5641 | 5656 | ||
@@ -5646,36 +5661,28 @@ __metadata: | |||
5646 | languageName: node | 5661 | languageName: node |
5647 | linkType: hard | 5662 | linkType: hard |
5648 | 5663 | ||
5649 | "notistack@npm:^2.0.8": | 5664 | "notistack@npm:^3.0.1": |
5650 | version: 2.0.8 | 5665 | version: 3.0.1 |
5651 | resolution: "notistack@npm:2.0.8" | 5666 | resolution: "notistack@npm:3.0.1" |
5652 | dependencies: | 5667 | dependencies: |
5653 | clsx: "npm:^1.1.0" | 5668 | clsx: "npm:^1.1.0" |
5654 | hoist-non-react-statics: "npm:^3.3.0" | 5669 | goober: "npm:^2.0.33" |
5655 | peerDependencies: | 5670 | peerDependencies: |
5656 | "@emotion/react": ^11.4.1 | ||
5657 | "@emotion/styled": ^11.3.0 | ||
5658 | "@mui/material": ^5.0.0 | ||
5659 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 | 5671 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 |
5660 | react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 | 5672 | react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 |
5661 | peerDependenciesMeta: | 5673 | checksum: 2b9f69de8544089501a7b762ca64483eb93b95b1bf4448bc0b2576c9b1aaa44e7f2ea671220a11fb818f2826fe7bb80271b76b3735f7608fef8643394676fc09 |
5662 | "@emotion/react": | ||
5663 | optional: true | ||
5664 | "@emotion/styled": | ||
5665 | optional: true | ||
5666 | checksum: f64e6232127f03e7b2e9b40cbd2f0893bda586359ba6c8bb368ee2520745f14d956076aa0aff2b07f31795a693247da37eaee1e6f5b4170a7cfa7b11bbe4bb3d | ||
5667 | languageName: node | 5674 | languageName: node |
5668 | linkType: hard | 5675 | linkType: hard |
5669 | 5676 | ||
5670 | "npmlog@npm:^6.0.0": | 5677 | "npmlog@npm:^6.0.0": |
5671 | version: 6.0.0 | 5678 | version: 6.0.2 |
5672 | resolution: "npmlog@npm:6.0.0" | 5679 | resolution: "npmlog@npm:6.0.2" |
5673 | dependencies: | 5680 | dependencies: |
5674 | are-we-there-yet: "npm:^2.0.0" | 5681 | are-we-there-yet: "npm:^3.0.0" |
5675 | console-control-strings: "npm:^1.1.0" | 5682 | console-control-strings: "npm:^1.1.0" |
5676 | gauge: "npm:^4.0.0" | 5683 | gauge: "npm:^4.0.3" |
5677 | set-blocking: "npm:^2.0.0" | 5684 | set-blocking: "npm:^2.0.0" |
5678 | checksum: 3a7b5b27a201953d468fd78c201b2326dec106bef62b523fb7c5ad070f7f96d3b0e1d97b65ced4d6564e3a116beb515e1a78cb285b8b65a63f5bf6c8751e90cf | 5685 | checksum: c04307b2991f128df6f3bb71c36fa56a65397f56f02a565ed269786ecd5609818e6cae36de3371555e52fdf049a5649a3591ac3bb432a2a0146d67093c4be93c |
5679 | languageName: node | 5686 | languageName: node |
5680 | linkType: hard | 5687 | linkType: hard |
5681 | 5688 | ||
@@ -5686,20 +5693,10 @@ __metadata: | |||
5686 | languageName: node | 5693 | languageName: node |
5687 | linkType: hard | 5694 | linkType: hard |
5688 | 5695 | ||
5689 | "object-inspect@npm:^1.12.2, object-inspect@npm:^1.9.0": | 5696 | "object-inspect@npm:^1.12.3, object-inspect@npm:^1.9.0": |
5690 | version: 1.12.2 | 5697 | version: 1.12.3 |
5691 | resolution: "object-inspect@npm:1.12.2" | 5698 | resolution: "object-inspect@npm:1.12.3" |
5692 | checksum: 46e3fc4cb6a51a37c21c68bdf682befc2e50a0d1643d1f7cbdce9a5fd13e9d44ae8cbbf1b05f0c8daf739c02eb9044d825544e25c3aef2a7d315980c8c7ccb71 | 5699 | checksum: 052c374ab0a4c85201480374c1039dddac0aaa8ef0fcbe1b04026f4c832c5632db6cb63617d6403b2b9dca08d4302d781aeb6c4d0260de4a84118ecaf1b5ebda |
5693 | languageName: node | ||
5694 | linkType: hard | ||
5695 | |||
5696 | "object-is@npm:^1.1.5": | ||
5697 | version: 1.1.5 | ||
5698 | resolution: "object-is@npm:1.1.5" | ||
5699 | dependencies: | ||
5700 | call-bind: "npm:^1.0.2" | ||
5701 | define-properties: "npm:^1.1.3" | ||
5702 | checksum: 47c9e548dba76b03c271a8d61281e69f2c96e435d6303cc35194e61e465463a24af732a3e58e249fa5e6ad2eb8fbbcfe34bd5926dd582927436e9c1a66cf8941 | ||
5703 | languageName: node | 5700 | languageName: node |
5704 | linkType: hard | 5701 | linkType: hard |
5705 | 5702 | ||
@@ -5775,13 +5772,13 @@ __metadata: | |||
5775 | linkType: hard | 5772 | linkType: hard |
5776 | 5773 | ||
5777 | "open@npm:^8.4.0": | 5774 | "open@npm:^8.4.0": |
5778 | version: 8.4.0 | 5775 | version: 8.4.2 |
5779 | resolution: "open@npm:8.4.0" | 5776 | resolution: "open@npm:8.4.2" |
5780 | dependencies: | 5777 | dependencies: |
5781 | define-lazy-prop: "npm:^2.0.0" | 5778 | define-lazy-prop: "npm:^2.0.0" |
5782 | is-docker: "npm:^2.1.1" | 5779 | is-docker: "npm:^2.1.1" |
5783 | is-wsl: "npm:^2.2.0" | 5780 | is-wsl: "npm:^2.2.0" |
5784 | checksum: 287db1bc10b3927b247d7c125d3ef998c410f57f434619a9d93f3e1384ff025ef12c18c1cfde1cb8f23f1326fb2bfe2634c789737bb65c18183015b5de81f594 | 5781 | checksum: 132803ca71c3bb0f66bd2db969efbb9a2511d05588c02f7141dd346e74ca817dc605a28ab1426bbeb8cb43c9deb9697bbbe26ad5a8488603677c70c4b84959bd |
5785 | languageName: node | 5782 | languageName: node |
5786 | linkType: hard | 5783 | linkType: hard |
5787 | 5784 | ||
@@ -5895,6 +5892,16 @@ __metadata: | |||
5895 | languageName: node | 5892 | languageName: node |
5896 | linkType: hard | 5893 | linkType: hard |
5897 | 5894 | ||
5895 | "path-scurry@npm:^1.7.0": | ||
5896 | version: 1.9.2 | ||
5897 | resolution: "path-scurry@npm:1.9.2" | ||
5898 | dependencies: | ||
5899 | lru-cache: "npm:^9.1.1" | ||
5900 | minipass: "npm:^5.0.0 || ^6.0.2" | ||
5901 | checksum: c60ad5b0decbff08e45a527de1e22a0e5667e9120ce8a007bc219125f5f2462cd167f9f7622681b2ff760c1deec1d2e49fdead4ff508da3f1ca7a7389240f7e9 | ||
5902 | languageName: node | ||
5903 | linkType: hard | ||
5904 | |||
5898 | "path-type@npm:^4.0.0": | 5905 | "path-type@npm:^4.0.0": |
5899 | version: 4.0.0 | 5906 | version: 4.0.0 |
5900 | resolution: "path-type@npm:4.0.0" | 5907 | resolution: "path-type@npm:4.0.0" |
@@ -5916,14 +5923,14 @@ __metadata: | |||
5916 | languageName: node | 5923 | languageName: node |
5917 | linkType: hard | 5924 | linkType: hard |
5918 | 5925 | ||
5919 | "postcss@npm:^8.4.21": | 5926 | "postcss@npm:^8.4.23": |
5920 | version: 8.4.21 | 5927 | version: 8.4.24 |
5921 | resolution: "postcss@npm:8.4.21" | 5928 | resolution: "postcss@npm:8.4.24" |
5922 | dependencies: | 5929 | dependencies: |
5923 | nanoid: "npm:^3.3.4" | 5930 | nanoid: "npm:^3.3.6" |
5924 | picocolors: "npm:^1.0.0" | 5931 | picocolors: "npm:^1.0.0" |
5925 | source-map-js: "npm:^1.0.2" | 5932 | source-map-js: "npm:^1.0.2" |
5926 | checksum: 4fb944abed714e5aa88c76b6eae19b293e84ced7ea4162fe0da6ab5215ded572330df93ce3bb5073ee18a9ad0122a6a65e3000897dc3a828e96281d8b3e1f91e | 5933 | checksum: 50c4ba61a7fed4d06e084c625f2603cc2448b66f4305d6495a105e73d2f53bdbf34828e5505d33498fa56e87d82e4192e55186e3b5167087d2b93882b6fc9db1 |
5927 | languageName: node | 5934 | languageName: node |
5928 | linkType: hard | 5935 | linkType: hard |
5929 | 5936 | ||
@@ -5943,12 +5950,12 @@ __metadata: | |||
5943 | languageName: node | 5950 | languageName: node |
5944 | linkType: hard | 5951 | linkType: hard |
5945 | 5952 | ||
5946 | "prettier@npm:^2.8.3": | 5953 | "prettier@npm:^2.8.7, prettier@npm:^2.8.8": |
5947 | version: 2.8.3 | 5954 | version: 2.8.8 |
5948 | resolution: "prettier@npm:2.8.3" | 5955 | resolution: "prettier@npm:2.8.8" |
5949 | bin: | 5956 | bin: |
5950 | prettier: bin-prettier.js | 5957 | prettier: bin-prettier.js |
5951 | checksum: 9daf1c05e07337a96fec26b5518ce787e4f98bfd1a5eb72af988cf123ea7ed56584f10c0cc4fc3073bf9504d157a8604d93a8e17752c483ae114614a0c557b36 | 5958 | checksum: 38b0a43ea17e83f54b904f8808f7d0fd1d9705ef9627bb40017ee276cbd6f5e7d15bcf816c4467b64cfe14ef109369a981ce61fad9c6022749d041f74a672188 |
5952 | languageName: node | 5959 | languageName: node |
5953 | linkType: hard | 5960 | linkType: hard |
5954 | 5961 | ||
@@ -5960,16 +5967,9 @@ __metadata: | |||
5960 | linkType: hard | 5967 | linkType: hard |
5961 | 5968 | ||
5962 | "pretty-bytes@npm:^6.0.0": | 5969 | "pretty-bytes@npm:^6.0.0": |
5963 | version: 6.0.0 | 5970 | version: 6.1.0 |
5964 | resolution: "pretty-bytes@npm:6.0.0" | 5971 | resolution: "pretty-bytes@npm:6.1.0" |
5965 | checksum: 9033b687324fe83d1a74b2c69637e4eb26693da76010a3446bb24bdec1508106ed930fcfe61a7661a227c32ea2e499b1aa0493fe370c844dfb329e4c7c3ff0ff | 5972 | checksum: 6c2df1578394426e89388c1b482138480b9468daa618ceb8c974d0048ea3002d28dc80d61553be978aedaf67b2b2909a1d10280f9d00bb9ff693b088db44e3e1 |
5966 | languageName: node | ||
5967 | linkType: hard | ||
5968 | |||
5969 | "promise-inflight@npm:^1.0.1": | ||
5970 | version: 1.0.1 | ||
5971 | resolution: "promise-inflight@npm:1.0.1" | ||
5972 | checksum: 7671022d3ea7e40e29ee941d30df819ed2a81a3d22b1175ed8c1bd83af542ea94ca47b50bea54634b12f7b1837fcd7dd5bcc7720910befa0076d12582ee56c93 | ||
5973 | languageName: node | 5973 | languageName: node |
5974 | linkType: hard | 5974 | linkType: hard |
5975 | 5975 | ||
@@ -5995,9 +5995,9 @@ __metadata: | |||
5995 | linkType: hard | 5995 | linkType: hard |
5996 | 5996 | ||
5997 | "punycode@npm:^2.1.0": | 5997 | "punycode@npm:^2.1.0": |
5998 | version: 2.1.1 | 5998 | version: 2.3.0 |
5999 | resolution: "punycode@npm:2.1.1" | 5999 | resolution: "punycode@npm:2.3.0" |
6000 | checksum: fd728ef9db90e7b4db37d5c4937d6c6302cf4f64748b2dea3abbf1efd21e6193bb670efb7814766c858b2e1ccdb65ce34e44b498d734922e1dcb2a8623a925d8 | 6000 | checksum: c2b408c805927a6614ef581bd3d00deca1fef9f2da0ec95cecaedf6a985d8596a29e931e31f80f7313f94257895f9ac6cf4c2ae81cdca04964daf9c3c3d221c1 |
6001 | languageName: node | 6001 | languageName: node |
6002 | linkType: hard | 6002 | linkType: hard |
6003 | 6003 | ||
@@ -6068,13 +6068,13 @@ __metadata: | |||
6068 | linkType: hard | 6068 | linkType: hard |
6069 | 6069 | ||
6070 | "readable-stream@npm:^3.6.0": | 6070 | "readable-stream@npm:^3.6.0": |
6071 | version: 3.6.0 | 6071 | version: 3.6.2 |
6072 | resolution: "readable-stream@npm:3.6.0" | 6072 | resolution: "readable-stream@npm:3.6.2" |
6073 | dependencies: | 6073 | dependencies: |
6074 | inherits: "npm:^2.0.3" | 6074 | inherits: "npm:^2.0.3" |
6075 | string_decoder: "npm:^1.1.1" | 6075 | string_decoder: "npm:^1.1.1" |
6076 | util-deprecate: "npm:^1.0.1" | 6076 | util-deprecate: "npm:^1.0.1" |
6077 | checksum: bda7b24d3910bf0ec4a1df3c540e1b97b1ed3ca49ea0ddc0d2c6bf29d3997251a7244608de1d842555641d1c115d9b3566167fef9225ee6ef147c9e6a539395b | 6077 | checksum: b1cbe0fea6b407fc75bfbe4f6c54d48899e638d54a8a1207b5040c60566dd5f65059b32c3edf0ac0ce621ea46929b3337e8a19410870eff98b8be5a3ba543b7a |
6078 | languageName: node | 6078 | languageName: node |
6079 | linkType: hard | 6079 | linkType: hard |
6080 | 6080 | ||
@@ -6099,12 +6099,12 @@ __metadata: | |||
6099 | languageName: node | 6099 | languageName: node |
6100 | linkType: hard | 6100 | linkType: hard |
6101 | 6101 | ||
6102 | "regenerate-unicode-properties@npm:^10.0.1": | 6102 | "regenerate-unicode-properties@npm:^10.1.0": |
6103 | version: 10.0.1 | 6103 | version: 10.1.0 |
6104 | resolution: "regenerate-unicode-properties@npm:10.0.1" | 6104 | resolution: "regenerate-unicode-properties@npm:10.1.0" |
6105 | dependencies: | 6105 | dependencies: |
6106 | regenerate: "npm:^1.4.2" | 6106 | regenerate: "npm:^1.4.2" |
6107 | checksum: 551c4eb58bcde309e942b2e721271d07c728381456cb86a98c522e73e47a95b91d07bd7d932d38b7444f3e5d348242b005f87217d9ac0c496ebb66d87cefb23e | 6107 | checksum: 8abc8d628a7b4733e69a6e113e79fee348d2cecade5b9a65442167ca17410c1aea5213ac4f5e1b7897013b6bae98238703fda09303acd763a6e5eaf849cc0830 |
6108 | languageName: node | 6108 | languageName: node |
6109 | linkType: hard | 6109 | linkType: hard |
6110 | 6110 | ||
@@ -6123,61 +6123,47 @@ __metadata: | |||
6123 | linkType: hard | 6123 | linkType: hard |
6124 | 6124 | ||
6125 | "regenerator-transform@npm:^0.15.0": | 6125 | "regenerator-transform@npm:^0.15.0": |
6126 | version: 0.15.0 | 6126 | version: 0.15.1 |
6127 | resolution: "regenerator-transform@npm:0.15.0" | 6127 | resolution: "regenerator-transform@npm:0.15.1" |
6128 | dependencies: | 6128 | dependencies: |
6129 | "@babel/runtime": "npm:^7.8.4" | 6129 | "@babel/runtime": "npm:^7.8.4" |
6130 | checksum: 275bd346e27f3f3e3940ef27ff10fce579941d13be545465649860b3e9d01304ef39d3045a0a7fd70a0d48bac28ccc4ef054cd126b2c5cd473093c31fc8f995f | 6130 | checksum: a3e4421b918fa650962898274588073dce1c49eb08d3a9b3dd7a4859c17cf362c72e5ae23dffef493d44c26cda2ac56ab3c47ad5b9874e2709f6c67c36b52391 |
6131 | languageName: node | 6131 | languageName: node |
6132 | linkType: hard | 6132 | linkType: hard |
6133 | 6133 | ||
6134 | "regexp.prototype.flags@npm:^1.4.3": | 6134 | "regexp.prototype.flags@npm:^1.4.3": |
6135 | version: 1.4.3 | 6135 | version: 1.5.0 |
6136 | resolution: "regexp.prototype.flags@npm:1.4.3" | 6136 | resolution: "regexp.prototype.flags@npm:1.5.0" |
6137 | dependencies: | 6137 | dependencies: |
6138 | call-bind: "npm:^1.0.2" | 6138 | call-bind: "npm:^1.0.2" |
6139 | define-properties: "npm:^1.1.3" | 6139 | define-properties: "npm:^1.2.0" |
6140 | functions-have-names: "npm:^1.2.2" | 6140 | functions-have-names: "npm:^1.2.3" |
6141 | checksum: 73e364f4cc03ed04f5f966300c6b9672c3bd049f2636db534b7e6f3e03575c178e04def3d73ac0e393bca3400b2acbee6c0609b89b93a51c83c56ed472de7739 | 6141 | checksum: 27e06f7238805b9b315bb43ef60500345cd3c041c9ba2f6b2b7951bd23409314d22741a100e2ce4c6b996d5488dfdc59776486f51f07fef2c2bd36b01dde1092 |
6142 | languageName: node | ||
6143 | linkType: hard | ||
6144 | |||
6145 | "regexpp@npm:^3.2.0": | ||
6146 | version: 3.2.0 | ||
6147 | resolution: "regexpp@npm:3.2.0" | ||
6148 | checksum: b171774d3380c053d3bd4af6b4f60f2e28c837dd4daeafb183d656e2f439dc606ee428bb44f14cbaa5a715524d2e8d88d168817445b4156d1ea06337f29eb405 | ||
6149 | languageName: node | 6142 | languageName: node |
6150 | linkType: hard | 6143 | linkType: hard |
6151 | 6144 | ||
6152 | "regexpu-core@npm:^5.1.0": | 6145 | "regexpu-core@npm:^5.1.0": |
6153 | version: 5.1.0 | 6146 | version: 5.3.2 |
6154 | resolution: "regexpu-core@npm:5.1.0" | 6147 | resolution: "regexpu-core@npm:5.3.2" |
6155 | dependencies: | 6148 | dependencies: |
6149 | "@babel/regjsgen": "npm:^0.8.0" | ||
6156 | regenerate: "npm:^1.4.2" | 6150 | regenerate: "npm:^1.4.2" |
6157 | regenerate-unicode-properties: "npm:^10.0.1" | 6151 | regenerate-unicode-properties: "npm:^10.1.0" |
6158 | regjsgen: "npm:^0.6.0" | 6152 | regjsparser: "npm:^0.9.1" |
6159 | regjsparser: "npm:^0.8.2" | ||
6160 | unicode-match-property-ecmascript: "npm:^2.0.0" | 6153 | unicode-match-property-ecmascript: "npm:^2.0.0" |
6161 | unicode-match-property-value-ecmascript: "npm:^2.0.0" | 6154 | unicode-match-property-value-ecmascript: "npm:^2.1.0" |
6162 | checksum: eb3c2d2a9a85a3559e001c52c8f42cfea8cbbcebdc841e0f71a540fa92a3dcf0e1e24312269d01df1478f20a838b9051c66038281fe0426603c6fd1f408b621a | 6155 | checksum: bf3f31464f6f11161f6d19659abe771d69210ff148f7fb873074a1dc6a31f6494771e5424f6f9fb97fc708783fec5591efaa4bbc3943fac703775bb4653a39ad |
6163 | languageName: node | 6156 | languageName: node |
6164 | linkType: hard | 6157 | linkType: hard |
6165 | 6158 | ||
6166 | "regjsgen@npm:^0.6.0": | 6159 | "regjsparser@npm:^0.9.1": |
6167 | version: 0.6.0 | 6160 | version: 0.9.1 |
6168 | resolution: "regjsgen@npm:0.6.0" | 6161 | resolution: "regjsparser@npm:0.9.1" |
6169 | checksum: 194b4e28d881448023ffc08c06e2602e88115d44cdd38021bad5c5c77c18833598889c683859b87ca8d3fc20df37a8a124bfac0dbc98ca05fb44b9994a793f14 | ||
6170 | languageName: node | ||
6171 | linkType: hard | ||
6172 | |||
6173 | "regjsparser@npm:^0.8.2": | ||
6174 | version: 0.8.4 | ||
6175 | resolution: "regjsparser@npm:0.8.4" | ||
6176 | dependencies: | 6162 | dependencies: |
6177 | jsesc: "npm:~0.5.0" | 6163 | jsesc: "npm:~0.5.0" |
6178 | bin: | 6164 | bin: |
6179 | regjsparser: bin/parser | 6165 | regjsparser: bin/parser |
6180 | checksum: 8d370d309ad77094d5b2fa57d5ccf9e37929f5d1ef7e5374eb233d8e470b5e41bbe150fad9629959393f57855ca0a54ea5472fc91e933f695adb17198382424f | 6166 | checksum: c706fb5d31aabd1951c0aa5fdfdb193bac82f9bec0e0ba77ab794e1260ec0589fdb270532387b8831124c9191ffccaf4eaceb7cd7df3f0be9572808d47c44266 |
6181 | languageName: node | 6167 | languageName: node |
6182 | linkType: hard | 6168 | linkType: hard |
6183 | 6169 | ||
@@ -6202,16 +6188,23 @@ __metadata: | |||
6202 | languageName: node | 6188 | languageName: node |
6203 | linkType: hard | 6189 | linkType: hard |
6204 | 6190 | ||
6191 | "resolve-pkg-maps@npm:^1.0.0": | ||
6192 | version: 1.0.0 | ||
6193 | resolution: "resolve-pkg-maps@npm:1.0.0" | ||
6194 | checksum: 6d91a6387c12ba1d67e09d35205df09cf6871debe8618d695b828ee2609e382463bbbab42b860f63c000bae39e464772d0ea6b7753802fb42ac3cbe33bd8154e | ||
6195 | languageName: node | ||
6196 | linkType: hard | ||
6197 | |||
6205 | "resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.22.1": | 6198 | "resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.22.1": |
6206 | version: 1.22.1 | 6199 | version: 1.22.3 |
6207 | resolution: "resolve@npm:1.22.1" | 6200 | resolution: "resolve@npm:1.22.3" |
6208 | dependencies: | 6201 | dependencies: |
6209 | is-core-module: "npm:^2.9.0" | 6202 | is-core-module: "npm:^2.12.0" |
6210 | path-parse: "npm:^1.0.7" | 6203 | path-parse: "npm:^1.0.7" |
6211 | supports-preserve-symlinks-flag: "npm:^1.0.0" | 6204 | supports-preserve-symlinks-flag: "npm:^1.0.0" |
6212 | bin: | 6205 | bin: |
6213 | resolve: bin/resolve | 6206 | resolve: bin/resolve |
6214 | checksum: d8ea39ac2ecaedc681504f043944a20cc05587d6ec52d4d9ec79801e58be083f2237d0e83170ce86c793083eaf71a6f95a7f921a79dfb6fa32b37107e61df36c | 6207 | checksum: bf0ce0162ee1b5a2dfe29e982b67fb0867911972ffba9a6903bb2c0c11e6c8eb7db7de5344645f84df7f9ba2a19438d373ddddf3a3125ececba719fccd40dd18 |
6215 | languageName: node | 6208 | languageName: node |
6216 | linkType: hard | 6209 | linkType: hard |
6217 | 6210 | ||
@@ -6229,15 +6222,15 @@ __metadata: | |||
6229 | linkType: hard | 6222 | linkType: hard |
6230 | 6223 | ||
6231 | "resolve@patch:resolve@npm%3A^1.14.2#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin<compat/resolve>": | 6224 | "resolve@patch:resolve@npm%3A^1.14.2#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin<compat/resolve>": |
6232 | version: 1.22.1 | 6225 | version: 1.22.3 |
6233 | resolution: "resolve@patch:resolve@npm%3A1.22.1#optional!builtin<compat/resolve>::version=1.22.1&hash=c3c19d" | 6226 | resolution: "resolve@patch:resolve@npm%3A1.22.3#optional!builtin<compat/resolve>::version=1.22.3&hash=c3c19d" |
6234 | dependencies: | 6227 | dependencies: |
6235 | is-core-module: "npm:^2.9.0" | 6228 | is-core-module: "npm:^2.12.0" |
6236 | path-parse: "npm:^1.0.7" | 6229 | path-parse: "npm:^1.0.7" |
6237 | supports-preserve-symlinks-flag: "npm:^1.0.0" | 6230 | supports-preserve-symlinks-flag: "npm:^1.0.0" |
6238 | bin: | 6231 | bin: |
6239 | resolve: bin/resolve | 6232 | resolve: bin/resolve |
6240 | checksum: a6f214b97d932445796f78dab7a898ec78966327e0d6cb571f90b6ac0f3b3347bf6bab0a071d899bfdc316b26ed845f6655310b38b8f6ee4da5272a0c5ecef85 | 6233 | checksum: 9b982fd1fdbcca23f58d4d97df35bf1182eaccad96df6d8bbc4e9006616c382a10d7617e039a540cc86291e5247ddbb7cda9cceb1fd35688b03b03864b5d4360 |
6241 | languageName: node | 6234 | languageName: node |
6242 | linkType: hard | 6235 | linkType: hard |
6243 | 6236 | ||
@@ -6307,9 +6300,9 @@ __metadata: | |||
6307 | languageName: node | 6300 | languageName: node |
6308 | linkType: hard | 6301 | linkType: hard |
6309 | 6302 | ||
6310 | "rollup@npm:^3.10.0, rollup@npm:^3.7.2": | 6303 | "rollup@npm:^3.21.0": |
6311 | version: 3.12.1 | 6304 | version: 3.25.1 |
6312 | resolution: "rollup@npm:3.12.1" | 6305 | resolution: "rollup@npm:3.25.1" |
6313 | dependencies: | 6306 | dependencies: |
6314 | fsevents: "npm:~2.3.2" | 6307 | fsevents: "npm:~2.3.2" |
6315 | dependenciesMeta: | 6308 | dependenciesMeta: |
@@ -6317,7 +6310,7 @@ __metadata: | |||
6317 | optional: true | 6310 | optional: true |
6318 | bin: | 6311 | bin: |
6319 | rollup: dist/bin/rollup | 6312 | rollup: dist/bin/rollup |
6320 | checksum: 9bf000f17910c383cbc3121dcb9e4c3814ea97939cfe817ef41dd19265a1214df2d77a0d612069ca6ad81d1df131c4910417dc892863bc6e3ff2b82ad15f37f9 | 6313 | checksum: 06824c736c6aea24e138077bb28d8976f3c75b7c8593f7cc77ea0b31a2c37253d983187e2e8b9ff984d311550d0dd37f359360c4ce99fb4cb1ada3c0a20e48c5 |
6321 | languageName: node | 6314 | languageName: node |
6322 | linkType: hard | 6315 | linkType: hard |
6323 | 6316 | ||
@@ -6337,13 +6330,6 @@ __metadata: | |||
6337 | languageName: node | 6330 | languageName: node |
6338 | linkType: hard | 6331 | linkType: hard |
6339 | 6332 | ||
6340 | "safe-buffer@npm:~5.1.1": | ||
6341 | version: 5.1.2 | ||
6342 | resolution: "safe-buffer@npm:5.1.2" | ||
6343 | checksum: 86939c6de6b62c1d39b7da860a56d5e50ede9b0ab35a91b0620bff8a96f1f798084ff910059f605087c2c500dc23dfdf77ff5bc3bcc8d4d38e3d634de2e3e426 | ||
6344 | languageName: node | ||
6345 | linkType: hard | ||
6346 | |||
6347 | "safe-regex-test@npm:^1.0.0": | 6333 | "safe-regex-test@npm:^1.0.0": |
6348 | version: 1.0.0 | 6334 | version: 1.0.0 |
6349 | resolution: "safe-regex-test@npm:1.0.0" | 6335 | resolution: "safe-regex-test@npm:1.0.0" |
@@ -6371,15 +6357,6 @@ __metadata: | |||
6371 | languageName: node | 6357 | languageName: node |
6372 | linkType: hard | 6358 | linkType: hard |
6373 | 6359 | ||
6374 | "semver@npm:7.0.0": | ||
6375 | version: 7.0.0 | ||
6376 | resolution: "semver@npm:7.0.0" | ||
6377 | bin: | ||
6378 | semver: bin/semver.js | ||
6379 | checksum: c0b7fdd720c6ee955cd71172ef8d63f41976d70049f02aa7569edff0ab89846ee035e39c82f3733fd2af3285f6ca6e14c3778e8de84cd8ea6ec1a33c68bf072a | ||
6380 | languageName: node | ||
6381 | linkType: hard | ||
6382 | |||
6383 | "semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": | 6360 | "semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": |
6384 | version: 6.3.0 | 6361 | version: 6.3.0 |
6385 | resolution: "semver@npm:6.3.0" | 6362 | resolution: "semver@npm:6.3.0" |
@@ -6390,13 +6367,13 @@ __metadata: | |||
6390 | linkType: hard | 6367 | linkType: hard |
6391 | 6368 | ||
6392 | "semver@npm:^7.3.5, semver@npm:^7.3.7": | 6369 | "semver@npm:^7.3.5, semver@npm:^7.3.7": |
6393 | version: 7.3.7 | 6370 | version: 7.5.2 |
6394 | resolution: "semver@npm:7.3.7" | 6371 | resolution: "semver@npm:7.5.2" |
6395 | dependencies: | 6372 | dependencies: |
6396 | lru-cache: "npm:^6.0.0" | 6373 | lru-cache: "npm:^6.0.0" |
6397 | bin: | 6374 | bin: |
6398 | semver: bin/semver.js | 6375 | semver: bin/semver.js |
6399 | checksum: 67bcf24790dcba9c20b2cd4c8ade19eebbcb10c8868453570749b47b77bd5c7da503478997a7a3f663d5b2976ac39c545f38d2d9e7dfcc693cb87f4068f93f8e | 6376 | checksum: 896fab94563f3e4187b57a883e2efab277488bf4bd823d7794410435c39a1191830ae366470baad3430f74a555534d06cfc85c3e1b82f2bdeb9dd34edc980189 |
6400 | languageName: node | 6377 | languageName: node |
6401 | linkType: hard | 6378 | linkType: hard |
6402 | 6379 | ||
@@ -6443,13 +6420,20 @@ __metadata: | |||
6443 | languageName: node | 6420 | languageName: node |
6444 | linkType: hard | 6421 | linkType: hard |
6445 | 6422 | ||
6446 | "signal-exit@npm:^3.0.0": | 6423 | "signal-exit@npm:^3.0.7": |
6447 | version: 3.0.7 | 6424 | version: 3.0.7 |
6448 | resolution: "signal-exit@npm:3.0.7" | 6425 | resolution: "signal-exit@npm:3.0.7" |
6449 | checksum: 5cf7525c55a72d8d104d914acf2e470f74b2c156197277ad7b331bc5de3d8790170fed3c82ff98c7c31adaa8ff941bfd5ba44f55171cbe8ed0e939fa82a8322a | 6426 | checksum: 5cf7525c55a72d8d104d914acf2e470f74b2c156197277ad7b331bc5de3d8790170fed3c82ff98c7c31adaa8ff941bfd5ba44f55171cbe8ed0e939fa82a8322a |
6450 | languageName: node | 6427 | languageName: node |
6451 | linkType: hard | 6428 | linkType: hard |
6452 | 6429 | ||
6430 | "signal-exit@npm:^4.0.1": | ||
6431 | version: 4.0.2 | ||
6432 | resolution: "signal-exit@npm:4.0.2" | ||
6433 | checksum: 8d05e3167eb2b9798d10e005c8c8d011d06189089ebf5cace0400cfe20b4f7cad1a5ccc8b613c92425d25da843b08cf76e4c59827f6c6003b186a7c0c336d46c | ||
6434 | languageName: node | ||
6435 | linkType: hard | ||
6436 | |||
6453 | "slash@npm:^3.0.0": | 6437 | "slash@npm:^3.0.0": |
6454 | version: 3.0.0 | 6438 | version: 3.0.0 |
6455 | resolution: "slash@npm:3.0.0" | 6439 | resolution: "slash@npm:3.0.0" |
@@ -6464,31 +6448,31 @@ __metadata: | |||
6464 | languageName: node | 6448 | languageName: node |
6465 | linkType: hard | 6449 | linkType: hard |
6466 | 6450 | ||
6467 | "smart-buffer@npm:^4.1.0": | 6451 | "smart-buffer@npm:^4.2.0": |
6468 | version: 4.2.0 | 6452 | version: 4.2.0 |
6469 | resolution: "smart-buffer@npm:4.2.0" | 6453 | resolution: "smart-buffer@npm:4.2.0" |
6470 | checksum: 898a5ce4651108164625916aa54b6f7c13e86279a31dd321737d27c4b795cfaaeb1c30417f8809029d80d20710d8a5045998afd35e0f1080b32648f5670aa99b | 6454 | checksum: 898a5ce4651108164625916aa54b6f7c13e86279a31dd321737d27c4b795cfaaeb1c30417f8809029d80d20710d8a5045998afd35e0f1080b32648f5670aa99b |
6471 | languageName: node | 6455 | languageName: node |
6472 | linkType: hard | 6456 | linkType: hard |
6473 | 6457 | ||
6474 | "socks-proxy-agent@npm:^6.0.0": | 6458 | "socks-proxy-agent@npm:^7.0.0": |
6475 | version: 6.1.1 | 6459 | version: 7.0.0 |
6476 | resolution: "socks-proxy-agent@npm:6.1.1" | 6460 | resolution: "socks-proxy-agent@npm:7.0.0" |
6477 | dependencies: | 6461 | dependencies: |
6478 | agent-base: "npm:^6.0.2" | 6462 | agent-base: "npm:^6.0.2" |
6479 | debug: "npm:^4.3.1" | 6463 | debug: "npm:^4.3.3" |
6480 | socks: "npm:^2.6.1" | 6464 | socks: "npm:^2.6.2" |
6481 | checksum: 94cd50706b762a25644f6733a9f557e87e590ac4546d7d4bfe3963724c931cadce3d393dc7ab7fd0ad872d42f9e16e2d2080950fe1324fdb6104377e5b9ec8ae | 6465 | checksum: d57c2c68a2c16a2ac0af30971e1c4899e80cab3bbe405fe2fa3fce26ccd007fe855110b97c0e6d96ddc56926e1e5927a868070cb09185a768d1ad8cbe1a68aa5 |
6482 | languageName: node | 6466 | languageName: node |
6483 | linkType: hard | 6467 | linkType: hard |
6484 | 6468 | ||
6485 | "socks@npm:^2.6.1": | 6469 | "socks@npm:^2.6.2": |
6486 | version: 2.6.1 | 6470 | version: 2.7.1 |
6487 | resolution: "socks@npm:2.6.1" | 6471 | resolution: "socks@npm:2.7.1" |
6488 | dependencies: | 6472 | dependencies: |
6489 | ip: "npm:^1.1.5" | 6473 | ip: "npm:^2.0.0" |
6490 | smart-buffer: "npm:^4.1.0" | 6474 | smart-buffer: "npm:^4.2.0" |
6491 | checksum: 9bd84957676b7fcd88f6f70ef2a35d0d0b4f2fb4060c4fb70eac58b4629a22342daae2b9db4463283e420934c642b9357056bf71dc3181d345f1788feb9edc26 | 6475 | checksum: a8026d6abfcd168a661240848f6989fbba66276e8fa97ff1cb1079c2f3c6907dcc8284fcbc4f6d3fee8d071afb4fc8313da7e5fbf6d8768f206347a671f1542b |
6492 | languageName: node | 6476 | languageName: node |
6493 | linkType: hard | 6477 | linkType: hard |
6494 | 6478 | ||
@@ -6539,16 +6523,16 @@ __metadata: | |||
6539 | languageName: node | 6523 | languageName: node |
6540 | linkType: hard | 6524 | linkType: hard |
6541 | 6525 | ||
6542 | "ssri@npm:^8.0.0, ssri@npm:^8.0.1": | 6526 | "ssri@npm:^10.0.0": |
6543 | version: 8.0.1 | 6527 | version: 10.0.4 |
6544 | resolution: "ssri@npm:8.0.1" | 6528 | resolution: "ssri@npm:10.0.4" |
6545 | dependencies: | 6529 | dependencies: |
6546 | minipass: "npm:^3.1.1" | 6530 | minipass: "npm:^5.0.0" |
6547 | checksum: b004b327d00f6ef93089a79c8d5822b991c007438e3134368f9540d89c43614df80461f3ed6273c8d3f30846cdc979e8d35b5ef8a8affb13cff2910cd81bd6be | 6531 | checksum: 6c98b01cbec2953f24701a207a34b977afafdd306dd8cd1aedf1188cb7066ae656529e04aebbe29f02809510c78a8b509591b3a7ee89a4e5d2c954f07f2b2b0a |
6548 | languageName: node | 6532 | languageName: node |
6549 | linkType: hard | 6533 | linkType: hard |
6550 | 6534 | ||
6551 | "string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.2.3": | 6535 | "string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.3": |
6552 | version: 4.2.3 | 6536 | version: 4.2.3 |
6553 | resolution: "string-width@npm:4.2.3" | 6537 | resolution: "string-width@npm:4.2.3" |
6554 | dependencies: | 6538 | dependencies: |
@@ -6559,6 +6543,17 @@ __metadata: | |||
6559 | languageName: node | 6543 | languageName: node |
6560 | linkType: hard | 6544 | linkType: hard |
6561 | 6545 | ||
6546 | "string-width@npm:^5.0.1, string-width@npm:^5.1.2": | ||
6547 | version: 5.1.2 | ||
6548 | resolution: "string-width@npm:5.1.2" | ||
6549 | dependencies: | ||
6550 | eastasianwidth: "npm:^0.2.0" | ||
6551 | emoji-regex: "npm:^9.2.2" | ||
6552 | strip-ansi: "npm:^7.0.1" | ||
6553 | checksum: cb2b2392bfd8114452b7adbe578d0472d706e01792a6b7cd35f15fe3afbda37fa26348cb984d01acebd5f9ccdb0e62a0c57cc0ec1fc7c2a5d01ef83e5afd8807 | ||
6554 | languageName: node | ||
6555 | linkType: hard | ||
6556 | |||
6562 | "string.prototype.matchall@npm:^4.0.6, string.prototype.matchall@npm:^4.0.8": | 6557 | "string.prototype.matchall@npm:^4.0.6, string.prototype.matchall@npm:^4.0.8": |
6563 | version: 4.0.8 | 6558 | version: 4.0.8 |
6564 | resolution: "string.prototype.matchall@npm:4.0.8" | 6559 | resolution: "string.prototype.matchall@npm:4.0.8" |
@@ -6575,25 +6570,36 @@ __metadata: | |||
6575 | languageName: node | 6570 | languageName: node |
6576 | linkType: hard | 6571 | linkType: hard |
6577 | 6572 | ||
6578 | "string.prototype.trimend@npm:^1.0.5": | 6573 | "string.prototype.trim@npm:^1.2.7": |
6579 | version: 1.0.5 | 6574 | version: 1.2.7 |
6580 | resolution: "string.prototype.trimend@npm:1.0.5" | 6575 | resolution: "string.prototype.trim@npm:1.2.7" |
6581 | dependencies: | 6576 | dependencies: |
6582 | call-bind: "npm:^1.0.2" | 6577 | call-bind: "npm:^1.0.2" |
6583 | define-properties: "npm:^1.1.4" | 6578 | define-properties: "npm:^1.1.4" |
6584 | es-abstract: "npm:^1.19.5" | 6579 | es-abstract: "npm:^1.20.4" |
6585 | checksum: b09b83119d8fd21d5125be72bc7e2a117a6313e35ce1f39ace2e4ead574834699a48b24587a5e92f6059335178ca139debc755cb9ec68f39bc7a4a41d6eba024 | 6580 | checksum: 424e6ba5ec9778a637c225c2c06461882367fa91e03b30ab78a50b275ec95e6516f25cb44439e1b98d43931a4a1d9d023bd5d2dd0f9b203d468b541b7ea205f5 |
6586 | languageName: node | 6581 | languageName: node |
6587 | linkType: hard | 6582 | linkType: hard |
6588 | 6583 | ||
6589 | "string.prototype.trimstart@npm:^1.0.5": | 6584 | "string.prototype.trimend@npm:^1.0.6": |
6590 | version: 1.0.5 | 6585 | version: 1.0.6 |
6591 | resolution: "string.prototype.trimstart@npm:1.0.5" | 6586 | resolution: "string.prototype.trimend@npm:1.0.6" |
6587 | dependencies: | ||
6588 | call-bind: "npm:^1.0.2" | ||
6589 | define-properties: "npm:^1.1.4" | ||
6590 | es-abstract: "npm:^1.20.4" | ||
6591 | checksum: 0c6b262932e2f065b4097fd3b17254b8fa2ac953f26d190e4defa2f01bca3313067c6672ff8b853f66edc2b4743af196f00ecd3c75f131d53fa772b16692cbf8 | ||
6592 | languageName: node | ||
6593 | linkType: hard | ||
6594 | |||
6595 | "string.prototype.trimstart@npm:^1.0.6": | ||
6596 | version: 1.0.6 | ||
6597 | resolution: "string.prototype.trimstart@npm:1.0.6" | ||
6592 | dependencies: | 6598 | dependencies: |
6593 | call-bind: "npm:^1.0.2" | 6599 | call-bind: "npm:^1.0.2" |
6594 | define-properties: "npm:^1.1.4" | 6600 | define-properties: "npm:^1.1.4" |
6595 | es-abstract: "npm:^1.19.5" | 6601 | es-abstract: "npm:^1.20.4" |
6596 | checksum: 59b07da535af429b595a3a3e639dc6bc5b3022bd8e4b04a5f63e4845609e5ddf763477cc9bed1a856432bd30d89bd7faa734e6653fb4745a2d347815b103821f | 6602 | checksum: 87a4f42e4c0bde3508cb8d95260919c73ae4af5573fdbca1cd173d9ce53153d83b0fc3d218d49b9cabdca440ae71cd44b85a659cddd477b27b3f1344dc023a65 |
6597 | languageName: node | 6603 | languageName: node |
6598 | linkType: hard | 6604 | linkType: hard |
6599 | 6605 | ||
@@ -6617,7 +6623,7 @@ __metadata: | |||
6617 | languageName: node | 6623 | languageName: node |
6618 | linkType: hard | 6624 | linkType: hard |
6619 | 6625 | ||
6620 | "strip-ansi@npm:^6.0.1": | 6626 | "strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": |
6621 | version: 6.0.1 | 6627 | version: 6.0.1 |
6622 | resolution: "strip-ansi@npm:6.0.1" | 6628 | resolution: "strip-ansi@npm:6.0.1" |
6623 | dependencies: | 6629 | dependencies: |
@@ -6626,6 +6632,15 @@ __metadata: | |||
6626 | languageName: node | 6632 | languageName: node |
6627 | linkType: hard | 6633 | linkType: hard |
6628 | 6634 | ||
6635 | "strip-ansi@npm:^7.0.1": | ||
6636 | version: 7.1.0 | ||
6637 | resolution: "strip-ansi@npm:7.1.0" | ||
6638 | dependencies: | ||
6639 | ansi-regex: "npm:^6.0.1" | ||
6640 | checksum: 09f81cbad0ac6e3dbe1c425429135432e91b1a61b7799587cb38aa24fb661aa5a83eaaf579e241ac1a4cac39fee97501c15226099728e56759abc6846b51917a | ||
6641 | languageName: node | ||
6642 | linkType: hard | ||
6643 | |||
6629 | "strip-bom@npm:^3.0.0": | 6644 | "strip-bom@npm:^3.0.0": |
6630 | version: 3.0.0 | 6645 | version: 3.0.0 |
6631 | resolution: "strip-bom@npm:3.0.0" | 6646 | resolution: "strip-bom@npm:3.0.0" |
@@ -6648,16 +6663,16 @@ __metadata: | |||
6648 | linkType: hard | 6663 | linkType: hard |
6649 | 6664 | ||
6650 | "style-mod@npm:^4.0.0": | 6665 | "style-mod@npm:^4.0.0": |
6651 | version: 4.0.0 | 6666 | version: 4.0.3 |
6652 | resolution: "style-mod@npm:4.0.0" | 6667 | resolution: "style-mod@npm:4.0.3" |
6653 | checksum: 1722a8287c60b0f696df0e5fee787fc50c3bf0b84660df90284435964ef35b6c49aa321a4a07f4e3973f6a897535413ff2ab788fff1bdf0e5f8b2fdd9bf083e9 | 6668 | checksum: ca62a9ff3e9cbf4f35e26118916771cbf46d30e2207d7243f4a111b8645e86be544f40fa8d67d4c7c946cfae88a89013dff42746c6b026cc4a6cc0a9d6e85cef |
6654 | languageName: node | 6669 | languageName: node |
6655 | linkType: hard | 6670 | linkType: hard |
6656 | 6671 | ||
6657 | "stylis@npm:4.1.3": | 6672 | "stylis@npm:4.2.0": |
6658 | version: 4.1.3 | 6673 | version: 4.2.0 |
6659 | resolution: "stylis@npm:4.1.3" | 6674 | resolution: "stylis@npm:4.2.0" |
6660 | checksum: 5040211532a8bb23414072ed9ec44fd563f40be013cbc131a50250f2ce19469ec6bb17dec5db6f942442ef548b456bc4e5d4b8f61a5a9249231c01fc761d0d6d | 6675 | checksum: c7ee385328bfaf1b0de0a13ec773da26d11e534c111f3ef72d1ff751e276ec6cd221c10476d14a9581ff25758ab1dce74c115000aa2eb9140ceca977491e8708 |
6661 | languageName: node | 6676 | languageName: node |
6662 | linkType: hard | 6677 | linkType: hard |
6663 | 6678 | ||
@@ -6686,13 +6701,13 @@ __metadata: | |||
6686 | languageName: node | 6701 | languageName: node |
6687 | linkType: hard | 6702 | linkType: hard |
6688 | 6703 | ||
6689 | "synckit@npm:^0.8.4": | 6704 | "synckit@npm:^0.8.5": |
6690 | version: 0.8.4 | 6705 | version: 0.8.5 |
6691 | resolution: "synckit@npm:0.8.4" | 6706 | resolution: "synckit@npm:0.8.5" |
6692 | dependencies: | 6707 | dependencies: |
6693 | "@pkgr/utils": "npm:^2.3.1" | 6708 | "@pkgr/utils": "npm:^2.3.1" |
6694 | tslib: "npm:^2.4.0" | 6709 | tslib: "npm:^2.5.0" |
6695 | checksum: 4e48556558263008c05df5f747b20b34ba919d7b41dda61e0756d3a7e26ade65b1b2c30e2772f8a5782fac01a6973d6bb5cd9d5636c8f04f61a1bded9e9feea7 | 6710 | checksum: 4f8cad99ececb0f22d91780c9882d1ef51fd551051cbd53f4674876771007e3b0ed6adcf17622a9bca8f9f8b16f49d91c4cc37d25888bc9d7ab3470e496bc4a6 |
6696 | languageName: node | 6711 | languageName: node |
6697 | linkType: hard | 6712 | linkType: hard |
6698 | 6713 | ||
@@ -6703,17 +6718,17 @@ __metadata: | |||
6703 | languageName: node | 6718 | languageName: node |
6704 | linkType: hard | 6719 | linkType: hard |
6705 | 6720 | ||
6706 | "tar@npm:^6.0.2, tar@npm:^6.1.2": | 6721 | "tar@npm:^6.1.11, tar@npm:^6.1.2": |
6707 | version: 6.1.11 | 6722 | version: 6.1.15 |
6708 | resolution: "tar@npm:6.1.11" | 6723 | resolution: "tar@npm:6.1.15" |
6709 | dependencies: | 6724 | dependencies: |
6710 | chownr: "npm:^2.0.0" | 6725 | chownr: "npm:^2.0.0" |
6711 | fs-minipass: "npm:^2.0.0" | 6726 | fs-minipass: "npm:^2.0.0" |
6712 | minipass: "npm:^3.0.0" | 6727 | minipass: "npm:^5.0.0" |
6713 | minizlib: "npm:^2.1.1" | 6728 | minizlib: "npm:^2.1.1" |
6714 | mkdirp: "npm:^1.0.3" | 6729 | mkdirp: "npm:^1.0.3" |
6715 | yallist: "npm:^4.0.0" | 6730 | yallist: "npm:^4.0.0" |
6716 | checksum: 5499de6e1998ca602c327f3359d085f6ab41e63a0ce530fb15de13089d3795262b6dfb7731989b7e1d0289a76658d715d8e1239fc06f70ae49349205e3a5fbcc | 6731 | checksum: 815c25f8812ad65172fa0440c96e5395714cfee8b43e9b2cf85d98964bbd479da49dde364087b9e456c49317f88e19aa2304c45c9853555d85289177c3066555 |
6717 | languageName: node | 6732 | languageName: node |
6718 | linkType: hard | 6733 | linkType: hard |
6719 | 6734 | ||
@@ -6737,16 +6752,16 @@ __metadata: | |||
6737 | linkType: hard | 6752 | linkType: hard |
6738 | 6753 | ||
6739 | "terser@npm:^5.0.0, terser@npm:^5.15.1": | 6754 | "terser@npm:^5.0.0, terser@npm:^5.15.1": |
6740 | version: 5.15.1 | 6755 | version: 5.18.0 |
6741 | resolution: "terser@npm:5.15.1" | 6756 | resolution: "terser@npm:5.18.0" |
6742 | dependencies: | 6757 | dependencies: |
6743 | "@jridgewell/source-map": "npm:^0.3.2" | 6758 | "@jridgewell/source-map": "npm:^0.3.3" |
6744 | acorn: "npm:^8.5.0" | 6759 | acorn: "npm:^8.8.2" |
6745 | commander: "npm:^2.20.0" | 6760 | commander: "npm:^2.20.0" |
6746 | source-map-support: "npm:~0.5.20" | 6761 | source-map-support: "npm:~0.5.20" |
6747 | bin: | 6762 | bin: |
6748 | terser: bin/terser | 6763 | terser: bin/terser |
6749 | checksum: 4d0c2a858eb2857fd8b58b2e2382865e3ecad30a8573b20d325cb6789d670f4057f3f84ac6e7437556033ec0c6fff9e913e5bbc05b67cdeac1a35b3da173c295 | 6764 | checksum: 7b295efb1f87d2ca4a38e1fbd7cf1fe48d69062a14bacb02f1ba2404593d06bfb244ddc89c55684eb744411b45dd8f6605bb562c6a5a427dcbd283efadac8d92 |
6750 | languageName: node | 6765 | languageName: node |
6751 | linkType: hard | 6766 | linkType: hard |
6752 | 6767 | ||
@@ -6793,14 +6808,14 @@ __metadata: | |||
6793 | linkType: hard | 6808 | linkType: hard |
6794 | 6809 | ||
6795 | "tsconfig-paths@npm:^3.14.1": | 6810 | "tsconfig-paths@npm:^3.14.1": |
6796 | version: 3.14.1 | 6811 | version: 3.14.2 |
6797 | resolution: "tsconfig-paths@npm:3.14.1" | 6812 | resolution: "tsconfig-paths@npm:3.14.2" |
6798 | dependencies: | 6813 | dependencies: |
6799 | "@types/json5": "npm:^0.0.29" | 6814 | "@types/json5": "npm:^0.0.29" |
6800 | json5: "npm:^1.0.1" | 6815 | json5: "npm:^1.0.2" |
6801 | minimist: "npm:^1.2.6" | 6816 | minimist: "npm:^1.2.6" |
6802 | strip-bom: "npm:^3.0.0" | 6817 | strip-bom: "npm:^3.0.0" |
6803 | checksum: 7f856252e523597e8fc3234b2f992d6d76a807793cb59bd2d924db9beb2594bfe7a18ee93898088733cb55b1cce4be306924a5da5f760eff137d4c2d7bf85fad | 6818 | checksum: e320ed312e798282cbdb037a0de88f7cf9c36514d38e21f1f538da8cfc436e199f44a9faa5073417f1110ef3db76256d873cf14dae1836bce5d541963ddf2c1b |
6804 | languageName: node | 6819 | languageName: node |
6805 | linkType: hard | 6820 | linkType: hard |
6806 | 6821 | ||
@@ -6811,10 +6826,10 @@ __metadata: | |||
6811 | languageName: node | 6826 | languageName: node |
6812 | linkType: hard | 6827 | linkType: hard |
6813 | 6828 | ||
6814 | "tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.4.0": | 6829 | "tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.4.0, tslib@npm:^2.5.0": |
6815 | version: 2.4.1 | 6830 | version: 2.5.3 |
6816 | resolution: "tslib@npm:2.4.1" | 6831 | resolution: "tslib@npm:2.5.3" |
6817 | checksum: a739a21e3ff059e62c7c3c0845333fbc9c081bcc91e015f2d246a31eeaf1fb0e29b10c0913c7d22f692b3203bb469fd60ca5288aa4f27d351a969df2d0714899 | 6832 | checksum: d31480d5acbcb467291d548bffce51692774b831ac8ce73f9f2049ec217f3c741ed85a0c98924bd61f95633f1c48858d18aa861d754c80df3bd67effcc144a3e |
6818 | languageName: node | 6833 | languageName: node |
6819 | linkType: hard | 6834 | linkType: hard |
6820 | 6835 | ||
@@ -6852,23 +6867,34 @@ __metadata: | |||
6852 | languageName: node | 6867 | languageName: node |
6853 | linkType: hard | 6868 | linkType: hard |
6854 | 6869 | ||
6855 | "typescript@npm:4.9.5": | 6870 | "typed-array-length@npm:^1.0.4": |
6856 | version: 4.9.5 | 6871 | version: 1.0.4 |
6857 | resolution: "typescript@npm:4.9.5" | 6872 | resolution: "typed-array-length@npm:1.0.4" |
6873 | dependencies: | ||
6874 | call-bind: "npm:^1.0.2" | ||
6875 | for-each: "npm:^0.3.3" | ||
6876 | is-typed-array: "npm:^1.1.9" | ||
6877 | checksum: bd196be0cb6c267e1fc8c3d54f19c1059d1082e0baf0f6735b39ed2a01e9dd2fef0593b1b03e0bdb9c29d1e6e34bbb1498f951a19b4c78bc5c7af6786fc3c6b6 | ||
6878 | languageName: node | ||
6879 | linkType: hard | ||
6880 | |||
6881 | "typescript@npm:5.1.3": | ||
6882 | version: 5.1.3 | ||
6883 | resolution: "typescript@npm:5.1.3" | ||
6858 | bin: | 6884 | bin: |
6859 | tsc: bin/tsc | 6885 | tsc: bin/tsc |
6860 | tsserver: bin/tsserver | 6886 | tsserver: bin/tsserver |
6861 | checksum: 550217a465c00b1d7ef0e0ddc3a6a0b2ae1fd7c1b9f53cde5a1cfe56aa457c7a43fa83792c1b98b2185d2156d0467c9ad6f6600515ad4f4fc2acee54c4bd320e | 6887 | checksum: 34f5c10a175ad596eb9ef7b12a0417d830317859754bddde67d6681c8bd7e67a24c88dfab600bf0deeb7355cb0f58faf7ab2a2c34a5d3c96f8420928f0f69b58 |
6862 | languageName: node | 6888 | languageName: node |
6863 | linkType: hard | 6889 | linkType: hard |
6864 | 6890 | ||
6865 | "typescript@patch:typescript@npm%3A4.9.5#optional!builtin<compat/typescript>": | 6891 | "typescript@patch:typescript@npm%3A5.1.3#optional!builtin<compat/typescript>": |
6866 | version: 4.9.5 | 6892 | version: 5.1.3 |
6867 | resolution: "typescript@patch:typescript@npm%3A4.9.5#optional!builtin<compat/typescript>::version=4.9.5&hash=23ec76" | 6893 | resolution: "typescript@patch:typescript@npm%3A5.1.3#optional!builtin<compat/typescript>::version=5.1.3&hash=5da071" |
6868 | bin: | 6894 | bin: |
6869 | tsc: bin/tsc | 6895 | tsc: bin/tsc |
6870 | tsserver: bin/tsserver | 6896 | tsserver: bin/tsserver |
6871 | checksum: 09f82f25664c79d5cccc389502175093becf51d691b443c79294303681544a399fb42f8384b535ddeba48cadb64e7d14b42de40d8ade4418bb43174989dd8685 | 6897 | checksum: ef6d5eaa31049b41bf1ddf091806aed923e65ea3de951bb27e05bc65911c3bf373b3c2bcc9204d2d2dbdca7d2e06c6a645824580638a8c2c18e2e5155cfc33b7 |
6872 | languageName: node | 6898 | languageName: node |
6873 | linkType: hard | 6899 | linkType: hard |
6874 | 6900 | ||
@@ -6901,35 +6927,35 @@ __metadata: | |||
6901 | languageName: node | 6927 | languageName: node |
6902 | linkType: hard | 6928 | linkType: hard |
6903 | 6929 | ||
6904 | "unicode-match-property-value-ecmascript@npm:^2.0.0": | 6930 | "unicode-match-property-value-ecmascript@npm:^2.1.0": |
6905 | version: 2.0.0 | 6931 | version: 2.1.0 |
6906 | resolution: "unicode-match-property-value-ecmascript@npm:2.0.0" | 6932 | resolution: "unicode-match-property-value-ecmascript@npm:2.1.0" |
6907 | checksum: 8b5ce98e39c6cd30ce1b150916135103fd0e541c9b08bb718a1fe8c4981c6d27ae43fd808476b963bceb2678f805e43ef1eceac24c58d91f91a3dace27ae4ba3 | 6933 | checksum: ed36ed18f4e49d95634712960967511b8a0da1a808e673e89ade10a317b29c636dbc19138656ff6cb5e90e1999c3ff3c40464d20846d21347b4300eac84698b9 |
6908 | languageName: node | 6934 | languageName: node |
6909 | linkType: hard | 6935 | linkType: hard |
6910 | 6936 | ||
6911 | "unicode-property-aliases-ecmascript@npm:^2.0.0": | 6937 | "unicode-property-aliases-ecmascript@npm:^2.0.0": |
6912 | version: 2.0.0 | 6938 | version: 2.1.0 |
6913 | resolution: "unicode-property-aliases-ecmascript@npm:2.0.0" | 6939 | resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" |
6914 | checksum: 3e123410a4399a1e45390a0ef546d15e18d2d5c722e478414232291e69b732cf5cca70ba90e9b4a45fc9ce39b6afc776fddff26ec6b1533cc459d1363e1243f7 | 6940 | checksum: 2a731ceba0a6d8e6b9bc576843f54f4ce5af36c1984a5a6023e012ceaa73f76a06dfc104b12a6b06f06decbd447d88980ec6787b44f708259b190d3594a84b85 |
6915 | languageName: node | 6941 | languageName: node |
6916 | linkType: hard | 6942 | linkType: hard |
6917 | 6943 | ||
6918 | "unique-filename@npm:^1.1.1": | 6944 | "unique-filename@npm:^3.0.0": |
6919 | version: 1.1.1 | 6945 | version: 3.0.0 |
6920 | resolution: "unique-filename@npm:1.1.1" | 6946 | resolution: "unique-filename@npm:3.0.0" |
6921 | dependencies: | 6947 | dependencies: |
6922 | unique-slug: "npm:^2.0.0" | 6948 | unique-slug: "npm:^4.0.0" |
6923 | checksum: 8330bc7e98bd55c86baaa1aba4d0fef4b2e32d7230b3f7421142e728fda8dfcede4ba6a898429a28707ffec06911649dc2aeea5d0e18eee4c7e2b573b9ee3145 | 6949 | checksum: 2624a9c87c31ef208bec3ffede4728770b0f8b1c056e546c7f89403ce55bac2f44d02d501ca4c20f853b7c67001ce4d8fb36d0750a58451b03ed85811ef80c77 |
6924 | languageName: node | 6950 | languageName: node |
6925 | linkType: hard | 6951 | linkType: hard |
6926 | 6952 | ||
6927 | "unique-slug@npm:^2.0.0": | 6953 | "unique-slug@npm:^4.0.0": |
6928 | version: 2.0.2 | 6954 | version: 4.0.0 |
6929 | resolution: "unique-slug@npm:2.0.2" | 6955 | resolution: "unique-slug@npm:4.0.0" |
6930 | dependencies: | 6956 | dependencies: |
6931 | imurmurhash: "npm:^0.1.4" | 6957 | imurmurhash: "npm:^0.1.4" |
6932 | checksum: 9c1111d986ecb9266678f02356a2e9f6485eca8ab2e82d5a5b4b9df1b4d6f11322bf893ed3c44d125039c76cb3e8dcf778b1eac85ff9df878e6317921319e7e2 | 6958 | checksum: 4ba7a8d96a490850f9f5b80fd0f5958ce9369aac12c659405885ab9f1c6b908315cfeef218fed65966160dd9ca811eaa8ca6271f95adf5f70493891e9d852d8f |
6933 | languageName: node | 6959 | languageName: node |
6934 | linkType: hard | 6960 | linkType: hard |
6935 | 6961 | ||
@@ -6956,17 +6982,17 @@ __metadata: | |||
6956 | languageName: node | 6982 | languageName: node |
6957 | linkType: hard | 6983 | linkType: hard |
6958 | 6984 | ||
6959 | "update-browserslist-db@npm:^1.0.5": | 6985 | "update-browserslist-db@npm:^1.0.11": |
6960 | version: 1.0.5 | 6986 | version: 1.0.11 |
6961 | resolution: "update-browserslist-db@npm:1.0.5" | 6987 | resolution: "update-browserslist-db@npm:1.0.11" |
6962 | dependencies: | 6988 | dependencies: |
6963 | escalade: "npm:^3.1.1" | 6989 | escalade: "npm:^3.1.1" |
6964 | picocolors: "npm:^1.0.0" | 6990 | picocolors: "npm:^1.0.0" |
6965 | peerDependencies: | 6991 | peerDependencies: |
6966 | browserslist: ">= 4.21.0" | 6992 | browserslist: ">= 4.21.0" |
6967 | bin: | 6993 | bin: |
6968 | browserslist-lint: cli.js | 6994 | update-browserslist-db: cli.js |
6969 | checksum: 53d12ebf5b266acd5795a4e2231b58cfefd2f0549a3cf4eb4e619370a35178293bcfad4d84f37b30a8df699a41e3bee77bcb17c8a5cf9b3b23d57042971493b1 | 6995 | checksum: adce84b01c28606050eb73df75b36404fe531727484ebc5a3f6d12c23413155a82205a7c773ee05b8fb27d0fa719e66c970fb90ecced57a54106b89249dd6bb3 |
6970 | languageName: node | 6996 | languageName: node |
6971 | linkType: hard | 6997 | linkType: hard |
6972 | 6998 | ||
@@ -6986,34 +7012,31 @@ __metadata: | |||
6986 | languageName: node | 7012 | languageName: node |
6987 | linkType: hard | 7013 | linkType: hard |
6988 | 7014 | ||
6989 | "vite-plugin-pwa@npm:^0.14.1": | 7015 | "vite-plugin-pwa@npm:^0.16.4": |
6990 | version: 0.14.1 | 7016 | version: 0.16.4 |
6991 | resolution: "vite-plugin-pwa@npm:0.14.1" | 7017 | resolution: "vite-plugin-pwa@npm:0.16.4" |
6992 | dependencies: | 7018 | dependencies: |
6993 | "@rollup/plugin-replace": "npm:^5.0.1" | ||
6994 | debug: "npm:^4.3.4" | 7019 | debug: "npm:^4.3.4" |
6995 | fast-glob: "npm:^3.2.12" | 7020 | fast-glob: "npm:^3.2.12" |
6996 | pretty-bytes: "npm:^6.0.0" | 7021 | pretty-bytes: "npm:^6.0.0" |
6997 | rollup: "npm:^3.7.2" | 7022 | workbox-build: "npm:^7.0.0" |
6998 | workbox-build: "npm:^6.5.4" | 7023 | workbox-window: "npm:^7.0.0" |
6999 | workbox-window: "npm:^6.5.4" | ||
7000 | peerDependencies: | 7024 | peerDependencies: |
7001 | vite: ^3.1.0 || ^4.0.0 | 7025 | vite: ^3.1.0 || ^4.0.0 |
7002 | workbox-build: ^6.5.4 | 7026 | workbox-build: ^7.0.0 |
7003 | workbox-window: ^6.5.4 | 7027 | workbox-window: ^7.0.0 |
7004 | checksum: 96ae0d392e05ea55e64138138ce300820949ee7fce807af4a49fea8617b039cc46e5f00fd9749275dfeb3b0fa763b180493d918d1b1815364baf8beb2e39414a | 7028 | checksum: 5e097ff7f9fb6626ce7be797b7609f7f3d6f0fc03d3391e999f0d96d4b4619a1f7ac46e6d4d570ebe26c1fd50f36c3891c5719e9158c04827699428d0d7a90d5 |
7005 | languageName: node | 7029 | languageName: node |
7006 | linkType: hard | 7030 | linkType: hard |
7007 | 7031 | ||
7008 | "vite@npm:^4.1.1": | 7032 | "vite@npm:^4.3.9": |
7009 | version: 4.1.1 | 7033 | version: 4.3.9 |
7010 | resolution: "vite@npm:4.1.1" | 7034 | resolution: "vite@npm:4.3.9" |
7011 | dependencies: | 7035 | dependencies: |
7012 | esbuild: "npm:^0.16.14" | 7036 | esbuild: "npm:^0.17.5" |
7013 | fsevents: "npm:~2.3.2" | 7037 | fsevents: "npm:~2.3.2" |
7014 | postcss: "npm:^8.4.21" | 7038 | postcss: "npm:^8.4.23" |
7015 | resolve: "npm:^1.22.1" | 7039 | rollup: "npm:^3.21.0" |
7016 | rollup: "npm:^3.10.0" | ||
7017 | peerDependencies: | 7040 | peerDependencies: |
7018 | "@types/node": ">= 14" | 7041 | "@types/node": ">= 14" |
7019 | less: "*" | 7042 | less: "*" |
@@ -7039,14 +7062,14 @@ __metadata: | |||
7039 | optional: true | 7062 | optional: true |
7040 | bin: | 7063 | bin: |
7041 | vite: bin/vite.js | 7064 | vite: bin/vite.js |
7042 | checksum: 1214e901a0836cfad0b20abe3ba03684c5c6d1a5d486e7ddd55e56e2c786677cecd7c1822b97540a001867164a9e38e52aa5c14480cdc50afd2561ed4bc2f89b | 7065 | checksum: 3bdd4d860e646a5abdf9b0af1828d74e7e20f9124cc4081cc7d8a09df1b054286add51051c1127cc3c1ea522e3c756da21a1dc424dabd121fa5b82dd5c6911b1 |
7043 | languageName: node | 7066 | languageName: node |
7044 | linkType: hard | 7067 | linkType: hard |
7045 | 7068 | ||
7046 | "w3c-keyname@npm:^2.2.4": | 7069 | "w3c-keyname@npm:^2.2.4": |
7047 | version: 2.2.4 | 7070 | version: 2.2.8 |
7048 | resolution: "w3c-keyname@npm:2.2.4" | 7071 | resolution: "w3c-keyname@npm:2.2.8" |
7049 | checksum: a82b6f64fb21f761276eaec81727c9930b6c6ec2d4f226ebed5766ccb8c0b52ac3ae3abcb2a1c1c6e6b81b134969314e31b023de1ec5108e84a998ea91c974e0 | 7072 | checksum: 32151833a4407c2aacc13279705c9b4dcca120e47d1cf12c5ee4aaa6e889cb1501ae5bc4b16b67e8db7d1cfdbdeb6557d7b6ff271a59a32d51a074cc7dda0141 |
7050 | languageName: node | 7073 | languageName: node |
7051 | linkType: hard | 7074 | linkType: hard |
7052 | 7075 | ||
@@ -7081,18 +7104,6 @@ __metadata: | |||
7081 | languageName: node | 7104 | languageName: node |
7082 | linkType: hard | 7105 | linkType: hard |
7083 | 7106 | ||
7084 | "which-collection@npm:^1.0.1": | ||
7085 | version: 1.0.1 | ||
7086 | resolution: "which-collection@npm:1.0.1" | ||
7087 | dependencies: | ||
7088 | is-map: "npm:^2.0.1" | ||
7089 | is-set: "npm:^2.0.1" | ||
7090 | is-weakmap: "npm:^2.0.1" | ||
7091 | is-weakset: "npm:^2.0.1" | ||
7092 | checksum: 23df529ccabb5516aeb020ff4515d1f2571d5209a9dbcaee36dfc970440b1d2b318ab7192c5b3e7b76046bcaa88f886031f08d8962e9c7ca889efd750e67ac6e | ||
7093 | languageName: node | ||
7094 | linkType: hard | ||
7095 | |||
7096 | "which-typed-array@npm:^1.1.9": | 7107 | "which-typed-array@npm:^1.1.9": |
7097 | version: 1.1.9 | 7108 | version: 1.1.9 |
7098 | resolution: "which-typed-array@npm:1.1.9" | 7109 | resolution: "which-typed-array@npm:1.1.9" |
@@ -7118,7 +7129,7 @@ __metadata: | |||
7118 | languageName: node | 7129 | languageName: node |
7119 | linkType: hard | 7130 | linkType: hard |
7120 | 7131 | ||
7121 | "wide-align@npm:^1.1.2": | 7132 | "wide-align@npm:^1.1.5": |
7122 | version: 1.1.5 | 7133 | version: 1.1.5 |
7123 | resolution: "wide-align@npm:1.1.5" | 7134 | resolution: "wide-align@npm:1.1.5" |
7124 | dependencies: | 7135 | dependencies: |
@@ -7134,28 +7145,28 @@ __metadata: | |||
7134 | languageName: node | 7145 | languageName: node |
7135 | linkType: hard | 7146 | linkType: hard |
7136 | 7147 | ||
7137 | "workbox-background-sync@npm:6.5.4": | 7148 | "workbox-background-sync@npm:7.0.0": |
7138 | version: 6.5.4 | 7149 | version: 7.0.0 |
7139 | resolution: "workbox-background-sync@npm:6.5.4" | 7150 | resolution: "workbox-background-sync@npm:7.0.0" |
7140 | dependencies: | 7151 | dependencies: |
7141 | idb: "npm:^7.0.1" | 7152 | idb: "npm:^7.0.1" |
7142 | workbox-core: "npm:6.5.4" | 7153 | workbox-core: "npm:7.0.0" |
7143 | checksum: a64516b58969dacbe3b40e5881707f3cf7f33dbd41292767396d03fff058a368c1da7ca73108eedd97f6b6e8e405fac5007965ceb9114c36057a3dc7590dc285 | 7154 | checksum: ec46bca63b18e7e2cd0ee8d879f8e2609e7ee04db83e2086d69039f2f5353d15393a24eb32c7729025cb38ca343e68ff5f316e11d6f6d4b69a6e91dd1056e4a4 |
7144 | languageName: node | 7155 | languageName: node |
7145 | linkType: hard | 7156 | linkType: hard |
7146 | 7157 | ||
7147 | "workbox-broadcast-update@npm:6.5.4": | 7158 | "workbox-broadcast-update@npm:7.0.0": |
7148 | version: 6.5.4 | 7159 | version: 7.0.0 |
7149 | resolution: "workbox-broadcast-update@npm:6.5.4" | 7160 | resolution: "workbox-broadcast-update@npm:7.0.0" |
7150 | dependencies: | 7161 | dependencies: |
7151 | workbox-core: "npm:6.5.4" | 7162 | workbox-core: "npm:7.0.0" |
7152 | checksum: 882ea2d56580321628f2c985ef790324415ef9c3a745a23fa2c51b804cbf3f1fd2899c1daffb31adbd317190d1c3d2e59a895dcf1112916a7472320fe5b2c89f | 7163 | checksum: 3ffa7d98ea3fd7d741f28085061c67f5c9883031d6982c40cb2dc0f38bbc113b979e849b9cedb34cd1305dec0eec73557c303886fd1ed7dca3b5c4a439036b34 |
7153 | languageName: node | 7164 | languageName: node |
7154 | linkType: hard | 7165 | linkType: hard |
7155 | 7166 | ||
7156 | "workbox-build@npm:^6.5.4": | 7167 | "workbox-build@npm:^7.0.0": |
7157 | version: 6.5.4 | 7168 | version: 7.0.0 |
7158 | resolution: "workbox-build@npm:6.5.4" | 7169 | resolution: "workbox-build@npm:7.0.0" |
7159 | dependencies: | 7170 | dependencies: |
7160 | "@apideck/better-ajv-errors": "npm:^0.3.1" | 7171 | "@apideck/better-ajv-errors": "npm:^0.3.1" |
7161 | "@babel/core": "npm:^7.11.1" | 7172 | "@babel/core": "npm:^7.11.1" |
@@ -7179,148 +7190,170 @@ __metadata: | |||
7179 | strip-comments: "npm:^2.0.1" | 7190 | strip-comments: "npm:^2.0.1" |
7180 | tempy: "npm:^0.6.0" | 7191 | tempy: "npm:^0.6.0" |
7181 | upath: "npm:^1.2.0" | 7192 | upath: "npm:^1.2.0" |
7182 | workbox-background-sync: "npm:6.5.4" | 7193 | workbox-background-sync: "npm:7.0.0" |
7183 | workbox-broadcast-update: "npm:6.5.4" | 7194 | workbox-broadcast-update: "npm:7.0.0" |
7184 | workbox-cacheable-response: "npm:6.5.4" | 7195 | workbox-cacheable-response: "npm:7.0.0" |
7185 | workbox-core: "npm:6.5.4" | 7196 | workbox-core: "npm:7.0.0" |
7186 | workbox-expiration: "npm:6.5.4" | 7197 | workbox-expiration: "npm:7.0.0" |
7187 | workbox-google-analytics: "npm:6.5.4" | 7198 | workbox-google-analytics: "npm:7.0.0" |
7188 | workbox-navigation-preload: "npm:6.5.4" | 7199 | workbox-navigation-preload: "npm:7.0.0" |
7189 | workbox-precaching: "npm:6.5.4" | 7200 | workbox-precaching: "npm:7.0.0" |
7190 | workbox-range-requests: "npm:6.5.4" | 7201 | workbox-range-requests: "npm:7.0.0" |
7191 | workbox-recipes: "npm:6.5.4" | 7202 | workbox-recipes: "npm:7.0.0" |
7192 | workbox-routing: "npm:6.5.4" | 7203 | workbox-routing: "npm:7.0.0" |
7193 | workbox-strategies: "npm:6.5.4" | 7204 | workbox-strategies: "npm:7.0.0" |
7194 | workbox-streams: "npm:6.5.4" | 7205 | workbox-streams: "npm:7.0.0" |
7195 | workbox-sw: "npm:6.5.4" | 7206 | workbox-sw: "npm:7.0.0" |
7196 | workbox-window: "npm:6.5.4" | 7207 | workbox-window: "npm:7.0.0" |
7197 | checksum: b82af4fdee955fac8f40d32fd8748a4e882a95fb5ef084cae3281ee8e1d54bab662f0ee2fb7ce5467e2e1ebc0a2aee679a97fd0e1e8b505d4fe6d817de9a68a8 | 7208 | checksum: 3dd0eded07e8a9ad82ced375bd6ed52591f87797b64e4bd395ea117c0bdbe74eba21909f72d5c3c96a717f32778e2a18766e60ccbc5a99a6d8a59e7daffde2b8 |
7198 | languageName: node | 7209 | languageName: node |
7199 | linkType: hard | 7210 | linkType: hard |
7200 | 7211 | ||
7201 | "workbox-cacheable-response@npm:6.5.4": | 7212 | "workbox-cacheable-response@npm:7.0.0": |
7202 | version: 6.5.4 | 7213 | version: 7.0.0 |
7203 | resolution: "workbox-cacheable-response@npm:6.5.4" | 7214 | resolution: "workbox-cacheable-response@npm:7.0.0" |
7204 | dependencies: | 7215 | dependencies: |
7205 | workbox-core: "npm:6.5.4" | 7216 | workbox-core: "npm:7.0.0" |
7206 | checksum: be761895294be43f3e7cb870a08ab197f5dd2847938a92ef3e6dde80f2b7fa140b0e0ab55618fcacc3e42ed3861c13356a8cfca0680aecd22fed3be72f408cf1 | 7217 | checksum: 92d2862bbd5814ec520248d23a675babce0509ce42d600d864c75f47562c25b997758fbc9d302877f19ecd0c122c72be2a66d14588f083b52ac73ee5fb218500 |
7207 | languageName: node | 7218 | languageName: node |
7208 | linkType: hard | 7219 | linkType: hard |
7209 | 7220 | ||
7210 | "workbox-core@npm:6.5.4": | 7221 | "workbox-core@npm:7.0.0": |
7211 | version: 6.5.4 | 7222 | version: 7.0.0 |
7212 | resolution: "workbox-core@npm:6.5.4" | 7223 | resolution: "workbox-core@npm:7.0.0" |
7213 | checksum: ab6531a26ac5a7dc8780f6e7609f0c92f96ef395f9a5951dcc9a5327963684064266d8cb735779ae5eb52f1b5a0198a1b7fae047a1a42f911a32526e28026384 | 7224 | checksum: 8e4b11940a471a96ed07e992fb950963e3316500f1e5f453f72e77c9436eac2d115b9037c7b9c6955cdea0167b64c2919205474064e7c5c3dd1de4c75acfcdb4 |
7214 | languageName: node | 7225 | languageName: node |
7215 | linkType: hard | 7226 | linkType: hard |
7216 | 7227 | ||
7217 | "workbox-expiration@npm:6.5.4": | 7228 | "workbox-expiration@npm:7.0.0": |
7218 | version: 6.5.4 | 7229 | version: 7.0.0 |
7219 | resolution: "workbox-expiration@npm:6.5.4" | 7230 | resolution: "workbox-expiration@npm:7.0.0" |
7220 | dependencies: | 7231 | dependencies: |
7221 | idb: "npm:^7.0.1" | 7232 | idb: "npm:^7.0.1" |
7222 | workbox-core: "npm:6.5.4" | 7233 | workbox-core: "npm:7.0.0" |
7223 | checksum: 33d16d3a1d6b4d358e406d5b1591555c20bafa278fbdacd3df70918e6e99de423a5ab4f15a2dc8653079e26296dca22269072f84b9375e909716ceba0bccf750 | 7234 | checksum: e6d9c83833ab4e5a777024749b519249b446c7e20345d2e304e93115e2aabd6e255cd173268d442517d3e70bfdc9f9d929cbe86b886f18a594db31e82451ec2e |
7224 | languageName: node | 7235 | languageName: node |
7225 | linkType: hard | 7236 | linkType: hard |
7226 | 7237 | ||
7227 | "workbox-google-analytics@npm:6.5.4": | 7238 | "workbox-google-analytics@npm:7.0.0": |
7228 | version: 6.5.4 | 7239 | version: 7.0.0 |
7229 | resolution: "workbox-google-analytics@npm:6.5.4" | 7240 | resolution: "workbox-google-analytics@npm:7.0.0" |
7230 | dependencies: | 7241 | dependencies: |
7231 | workbox-background-sync: "npm:6.5.4" | 7242 | workbox-background-sync: "npm:7.0.0" |
7232 | workbox-core: "npm:6.5.4" | 7243 | workbox-core: "npm:7.0.0" |
7233 | workbox-routing: "npm:6.5.4" | 7244 | workbox-routing: "npm:7.0.0" |
7234 | workbox-strategies: "npm:6.5.4" | 7245 | workbox-strategies: "npm:7.0.0" |
7235 | checksum: dd37a39a9c68f1dc2a85856443aac1e106664890146bb5a3bd34976a54092325be82f8b82ea0bbf22fef9042db67e43446b4b84f40a31bedc78f40e2816661b7 | 7246 | checksum: 4b10c047eab34bc6cddf44ada7c695fdb1426acfecba0a9fd21c512a38910991e64a6be7d34922792094314d064073dd2f433dd7810e0710abaa6fb96302d29b |
7236 | languageName: node | 7247 | languageName: node |
7237 | linkType: hard | 7248 | linkType: hard |
7238 | 7249 | ||
7239 | "workbox-navigation-preload@npm:6.5.4": | 7250 | "workbox-navigation-preload@npm:7.0.0": |
7240 | version: 6.5.4 | 7251 | version: 7.0.0 |
7241 | resolution: "workbox-navigation-preload@npm:6.5.4" | 7252 | resolution: "workbox-navigation-preload@npm:7.0.0" |
7242 | dependencies: | 7253 | dependencies: |
7243 | workbox-core: "npm:6.5.4" | 7254 | workbox-core: "npm:7.0.0" |
7244 | checksum: 9c08ace9460b54abfb2aaca9c83b585f2835526732b494bfb7789ec6eb44da5052bed0ed16b0fb2fbc1a69096105252333075e6cb657f6aa2bd8b721f4c09b55 | 7255 | checksum: 286d149e9171ffd57eda72c87d58821f58a4f4457fde3567b66f88047d052f47237775695a422d88ac9c60267f5028a85e95b80139b335da0701daa06f424314 |
7245 | languageName: node | 7256 | languageName: node |
7246 | linkType: hard | 7257 | linkType: hard |
7247 | 7258 | ||
7248 | "workbox-precaching@npm:6.5.4": | 7259 | "workbox-precaching@npm:7.0.0": |
7249 | version: 6.5.4 | 7260 | version: 7.0.0 |
7250 | resolution: "workbox-precaching@npm:6.5.4" | 7261 | resolution: "workbox-precaching@npm:7.0.0" |
7251 | dependencies: | 7262 | dependencies: |
7252 | workbox-core: "npm:6.5.4" | 7263 | workbox-core: "npm:7.0.0" |
7253 | workbox-routing: "npm:6.5.4" | 7264 | workbox-routing: "npm:7.0.0" |
7254 | workbox-strategies: "npm:6.5.4" | 7265 | workbox-strategies: "npm:7.0.0" |
7255 | checksum: c97bfd38d47e893d0f2d1a8a4c848f7ac7673fa737ac3edad5bd29da549e39f54ee60713db2e57b16b7a3dcda07f8991edd4079c20035ce1eefd7b6bbf0edf76 | 7266 | checksum: 75f2272d0500d9ef308d279fd80e2e0b7424aae519945d396e20729c21509af167c2e20b6af0298d2364138fef7ef7154986b4b7322fa5b87434bf8c3dc34fca |
7256 | languageName: node | 7267 | languageName: node |
7257 | linkType: hard | 7268 | linkType: hard |
7258 | 7269 | ||
7259 | "workbox-range-requests@npm:6.5.4": | 7270 | "workbox-range-requests@npm:7.0.0": |
7260 | version: 6.5.4 | 7271 | version: 7.0.0 |
7261 | resolution: "workbox-range-requests@npm:6.5.4" | 7272 | resolution: "workbox-range-requests@npm:7.0.0" |
7262 | dependencies: | 7273 | dependencies: |
7263 | workbox-core: "npm:6.5.4" | 7274 | workbox-core: "npm:7.0.0" |
7264 | checksum: 1ab18229a0bd27a4521e552227e4663ae704739e2a71eb97d67596aa28809e206cadf9d7b6211011a57d9d4cad47295b550ae8355c536179597f705c363da52c | 7275 | checksum: 8332d1209c1594ac8ea4b53d1826cef59d5b6ed373c394bdec89a76f83ea84b7bf307a1487fad7ed60615a34bf477d1455a694d368aa13e3005a86579077f755 |
7265 | languageName: node | 7276 | languageName: node |
7266 | linkType: hard | 7277 | linkType: hard |
7267 | 7278 | ||
7268 | "workbox-recipes@npm:6.5.4": | 7279 | "workbox-recipes@npm:7.0.0": |
7269 | version: 6.5.4 | 7280 | version: 7.0.0 |
7270 | resolution: "workbox-recipes@npm:6.5.4" | 7281 | resolution: "workbox-recipes@npm:7.0.0" |
7271 | dependencies: | 7282 | dependencies: |
7272 | workbox-cacheable-response: "npm:6.5.4" | 7283 | workbox-cacheable-response: "npm:7.0.0" |
7273 | workbox-core: "npm:6.5.4" | 7284 | workbox-core: "npm:7.0.0" |
7274 | workbox-expiration: "npm:6.5.4" | 7285 | workbox-expiration: "npm:7.0.0" |
7275 | workbox-precaching: "npm:6.5.4" | 7286 | workbox-precaching: "npm:7.0.0" |
7276 | workbox-routing: "npm:6.5.4" | 7287 | workbox-routing: "npm:7.0.0" |
7277 | workbox-strategies: "npm:6.5.4" | 7288 | workbox-strategies: "npm:7.0.0" |
7278 | checksum: 6d31ab49129245d899c5e2f37b91af48534c0c963554f15394f29a84ee9f80fbbedccb64dcfeca1171f97d5250da4dded7d62519eefbf5030af454ed220efae0 | 7289 | checksum: 4416f0834dba6575ca88a929fe6eba98d4ff9b40a7726fdcf8de8908543fc441ec683cddbe439f25da3f4fbe4cc97760eaa39f9280b66fc217f627585f6a37eb |
7279 | languageName: node | 7290 | languageName: node |
7280 | linkType: hard | 7291 | linkType: hard |
7281 | 7292 | ||
7282 | "workbox-routing@npm:6.5.4": | 7293 | "workbox-routing@npm:7.0.0": |
7283 | version: 6.5.4 | 7294 | version: 7.0.0 |
7284 | resolution: "workbox-routing@npm:6.5.4" | 7295 | resolution: "workbox-routing@npm:7.0.0" |
7285 | dependencies: | 7296 | dependencies: |
7286 | workbox-core: "npm:6.5.4" | 7297 | workbox-core: "npm:7.0.0" |
7287 | checksum: a4e1ac4d97032cb4aeb9c387a4de2213a72b73d6ee96787cd656605eaaf4de7ebbd639e771bb2a875b792944141321076154723768025b708a2831d98e8f36aa | 7298 | checksum: 7b250c696499f1528913e7bb4c11ecfbe62fc329a70c79d905186e4efd3b983536f64e1a2b810445f4e005336a70ec93305be8b62df236e7aac114f0ff908168 |
7288 | languageName: node | 7299 | languageName: node |
7289 | linkType: hard | 7300 | linkType: hard |
7290 | 7301 | ||
7291 | "workbox-strategies@npm:6.5.4": | 7302 | "workbox-strategies@npm:7.0.0": |
7292 | version: 6.5.4 | 7303 | version: 7.0.0 |
7293 | resolution: "workbox-strategies@npm:6.5.4" | 7304 | resolution: "workbox-strategies@npm:7.0.0" |
7294 | dependencies: | 7305 | dependencies: |
7295 | workbox-core: "npm:6.5.4" | 7306 | workbox-core: "npm:7.0.0" |
7296 | checksum: 8e0bd6aa2e17454e183e1b5de1cc976ea8e3ed2dd298eee634a1f135086699c2edf8c2105e977cf44c946d50606cf66a7701eb1804ff969d2f306845415539a6 | 7307 | checksum: 3e77ce48537177e481958652eeccb950c6cc9c20267c6d2a98ca5b98fbce49c4e5ae412134c2f79fb76e0ff89dbf93b84946c7ca40fcae69cfe70ae8489b2eae |
7297 | languageName: node | 7308 | languageName: node |
7298 | linkType: hard | 7309 | linkType: hard |
7299 | 7310 | ||
7300 | "workbox-streams@npm:6.5.4": | 7311 | "workbox-streams@npm:7.0.0": |
7301 | version: 6.5.4 | 7312 | version: 7.0.0 |
7302 | resolution: "workbox-streams@npm:6.5.4" | 7313 | resolution: "workbox-streams@npm:7.0.0" |
7303 | dependencies: | 7314 | dependencies: |
7304 | workbox-core: "npm:6.5.4" | 7315 | workbox-core: "npm:7.0.0" |
7305 | workbox-routing: "npm:6.5.4" | 7316 | workbox-routing: "npm:7.0.0" |
7306 | checksum: 060545e13b7a7f8163053bf3a39d9eda419463e3b9d948a6818194d0b1e41152829912d2631b33e6c7dcb7bb4d86b3c98cc2aac64b48d225fa59f5fd8eebb7a9 | 7317 | checksum: cd1a8e508c6bc5173c18fa0c60c94b617a3d404ef95489a1b25e0b7c690f2916aafac38709f4c0a4d76975d347c0a894c0706e3447dc37f2af79cd3cfacfb106 |
7307 | languageName: node | 7318 | languageName: node |
7308 | linkType: hard | 7319 | linkType: hard |
7309 | 7320 | ||
7310 | "workbox-sw@npm:6.5.4": | 7321 | "workbox-sw@npm:7.0.0": |
7311 | version: 6.5.4 | 7322 | version: 7.0.0 |
7312 | resolution: "workbox-sw@npm:6.5.4" | 7323 | resolution: "workbox-sw@npm:7.0.0" |
7313 | checksum: c956aee7cd16477104db42439d67a0d6a232ea1ce7252c7d9a15d615b2698d11a3031351077e7cc41c9cf171f059dd791c3c38d2445c56f17c75be9eb5c20301 | 7324 | checksum: a687a0ceee1321424e633d54b45bf3e93196b900b72dfe4704ed2973ae1012703ed2b9e8b2ae641d5d204a178b8365bf6ad77aa4688c178967a309720f2e62ca |
7314 | languageName: node | 7325 | languageName: node |
7315 | linkType: hard | 7326 | linkType: hard |
7316 | 7327 | ||
7317 | "workbox-window@npm:6.5.4, workbox-window@npm:^6.5.4": | 7328 | "workbox-window@npm:7.0.0, workbox-window@npm:^7.0.0": |
7318 | version: 6.5.4 | 7329 | version: 7.0.0 |
7319 | resolution: "workbox-window@npm:6.5.4" | 7330 | resolution: "workbox-window@npm:7.0.0" |
7320 | dependencies: | 7331 | dependencies: |
7321 | "@types/trusted-types": "npm:^2.0.2" | 7332 | "@types/trusted-types": "npm:^2.0.2" |
7322 | workbox-core: "npm:6.5.4" | 7333 | workbox-core: "npm:7.0.0" |
7323 | checksum: 1b011603e255deccca060d8202f70d00200db23363bfa66589f9e7d8ed68891840688dee196fe81f90fbe311f9cbe0173042b17e226ccaef57d6838fdde37e7d | 7334 | checksum: 9f357f23264cb32620a0c346e11a21cdaac60cbe41eda405b1d094cb1009fa19a1a5d4a3c13c4dd878371d0583fd09110db48a451d260cb51380548a2340517b |
7335 | languageName: node | ||
7336 | linkType: hard | ||
7337 | |||
7338 | "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": | ||
7339 | version: 7.0.0 | ||
7340 | resolution: "wrap-ansi@npm:7.0.0" | ||
7341 | dependencies: | ||
7342 | ansi-styles: "npm:^4.0.0" | ||
7343 | string-width: "npm:^4.1.0" | ||
7344 | strip-ansi: "npm:^6.0.0" | ||
7345 | checksum: b72e4a1ebd582221c3d7eae2473c7841af1fd435defe08bb3854600013ced559b10efa767b4fdc6725402ab16b79f86f73e5d4edc7cf9214e15733ee34849aa0 | ||
7346 | languageName: node | ||
7347 | linkType: hard | ||
7348 | |||
7349 | "wrap-ansi@npm:^8.1.0": | ||
7350 | version: 8.1.0 | ||
7351 | resolution: "wrap-ansi@npm:8.1.0" | ||
7352 | dependencies: | ||
7353 | ansi-styles: "npm:^6.1.0" | ||
7354 | string-width: "npm:^5.0.1" | ||
7355 | strip-ansi: "npm:^7.0.1" | ||
7356 | checksum: f8df96ddeeb43e497c86085f8b009fd374e046aef37d731d13037dbabc2f3d2ba84aa8e583bdff3011b8ef5274a53832d65bb7dd44b30c033e96ef3d0bb72b57 | ||
7324 | languageName: node | 7357 | languageName: node |
7325 | linkType: hard | 7358 | linkType: hard |
7326 | 7359 | ||
@@ -7331,10 +7364,17 @@ __metadata: | |||
7331 | languageName: node | 7364 | languageName: node |
7332 | linkType: hard | 7365 | linkType: hard |
7333 | 7366 | ||
7334 | "xstate@npm:^4.33.4, xstate@npm:^4.35.4": | 7367 | "xstate@npm:^4.33.4, xstate@npm:^4.37.2": |
7335 | version: 4.35.4 | 7368 | version: 4.37.2 |
7336 | resolution: "xstate@npm:4.35.4" | 7369 | resolution: "xstate@npm:4.37.2" |
7337 | checksum: 6bf12ea9369c3f2df6a040c1541666e263f0a018715d6820fd7ad308198a53991899c9c3b1e6afe6dd092ee0f4c3a228f1180e92498bbbe377b9013d1a809d48 | 7370 | checksum: e4d5d7930895b78aa4423143b9f113055554bad9541648180643b2150b67f968ccfae52039667ac4ce849b6487234230824f89e41774b4ceae5667584e983c63 |
7371 | languageName: node | ||
7372 | linkType: hard | ||
7373 | |||
7374 | "yallist@npm:^3.0.2": | ||
7375 | version: 3.1.1 | ||
7376 | resolution: "yallist@npm:3.1.1" | ||
7377 | checksum: 8d382abef6365eb6800ef86a429e8a78347089b7867cdb7ae146e5f3629baebe41967b9d7715ae22c9514659a2855a10e104d68441e339f5060b286b2f3e11c6 | ||
7338 | languageName: node | 7378 | languageName: node |
7339 | linkType: hard | 7379 | linkType: hard |
7340 | 7380 | ||
@@ -7359,9 +7399,9 @@ __metadata: | |||
7359 | languageName: node | 7399 | languageName: node |
7360 | linkType: hard | 7400 | linkType: hard |
7361 | 7401 | ||
7362 | "zod@npm:^3.20.2": | 7402 | "zod@npm:^3.21.4": |
7363 | version: 3.20.2 | 7403 | version: 3.21.4 |
7364 | resolution: "zod@npm:3.20.2" | 7404 | resolution: "zod@npm:3.21.4" |
7365 | checksum: 4afdc2d9962456e1f4dfd6e44791d3017280e0f2f365fd45f85336ea5a850d009ff2f6d671638db47f8b237dd153fe73c0417f9cc300fcf201afb4fff9051c8d | 7405 | checksum: f25f384f380c49d05a11541093a8d26f07688aa39f6a8adbd6dc338b43f63617bf138734fb1b79800ba374523f6a1bb561f7d401b3cc051fed2715eae5577d0a |
7366 | languageName: node | 7406 | languageName: node |
7367 | linkType: hard | 7407 | linkType: hard |
diff --git a/yarn.lock.license b/yarn.lock.license new file mode 100644 index 00000000..7a5a2a4b --- /dev/null +++ b/yarn.lock.license | |||
@@ -0,0 +1,3 @@ | |||
1 | SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
2 | |||
3 | SPDX-License-Identifier: CC0-1.0 | ||