main 7d3bb8bcdf26 cached
228 files
19.7 MB
1.5M tokens
2536 symbols
1 requests
Download .txt
Showing preview only (5,983K chars total). Download the full file or copy to clipboard to get everything.
Repository: mgreminger/EngineeringPaper.xyz
Branch: main
Commit: 7d3bb8bcdf26
Files: 228
Total size: 19.7 MB

Directory structure:
gitextract_l2a2pt1h/

├── .dev.vars
├── .gitattributes
├── .github/
│   ├── pull_request_template.md
│   └── workflows/
│       └── playwright.yml
├── .gitignore
├── .node-version
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── index.html
├── notebooks/
│   ├── HA_parameters.csv
│   ├── HA_parameters_order.csv
│   ├── coolprop_options.ipynb
│   ├── coolprop_predifined_mixtures.ipynb
│   ├── latex_unicode_equivalents.ipynb
│   ├── predefined_mixtures.json
│   ├── propsSI_fluids.csv
│   ├── propsSI_mixtures.csv
│   ├── propsSI_parameters.csv
│   ├── propsSI_parameters_order.csv
│   ├── reserved_ids.ipynb
│   ├── reserved_ids_no_sympy.ipynb
│   └── sympy_test.ipynb
├── package.json
├── playwright.config.mjs
├── public/
│   ├── .well-known/
│   │   └── assetlinks.json
│   ├── _routes.json
│   ├── dimensional_analysis.py
│   ├── iframe_test.html
│   ├── jedi_code_analysis.py
│   ├── manifest.json
│   ├── pyodide/
│   │   ├── contourpy-1.3.1-cp313-cp313-pyodide_2025_0_wasm32.whl
│   │   ├── coolprop-7.2.0-cp313-cp313-pyodide_2025_0_wasm32.whl
│   │   ├── cycler-0.12.1-cp313-none-any.whl
│   │   ├── drawsvg-2.4.1-cp313-none-any.whl
│   │   ├── fonttools-4.56.0-cp313-none-any.whl
│   │   ├── jedi-0.19.2-cp313-none-any.whl
│   │   ├── jinja2-3.1.6-cp313-none-any.whl
│   │   ├── joblib-1.4.2-cp313-none-any.whl
│   │   ├── kiwisolver-1.4.8-cp313-cp313-pyodide_2025_0_wasm32.whl
│   │   ├── markupsafe-3.0.2-cp313-cp313-pyodide_2025_0_wasm32.whl
│   │   ├── matplotlib-3.8.4-cp313-cp313-pyodide_2025_0_wasm32.whl
│   │   ├── mpmath-1.3.0-cp313-none-any.whl
│   │   ├── nlopt-2.9.1-cp313-cp313-pyodide_2025_0_wasm32.whl
│   │   ├── numpy-2.2.5-cp313-cp313-pyodide_2025_0_wasm32.whl
│   │   ├── packaging-24.2-cp313-none-any.whl
│   │   ├── pandas-2.3.3-cp313-cp313-pyodide_2025_0_wasm32.whl
│   │   ├── parso-0.8.4-cp313-none-any.whl
│   │   ├── pillow-11.3.0-cp313-cp313-pyodide_2025_0_wasm32.whl
│   │   ├── pyodide-lock.json
│   │   ├── pyodide.asm.js
│   │   ├── pyodide.asm.wasm
│   │   ├── pyodide.js
│   │   ├── pyparsing-3.2.1-cp313-none-any.whl
│   │   ├── python_dateutil-2.9.0.post0-cp313-none-any.whl
│   │   ├── pytz-2025.2-cp313-none-any.whl
│   │   ├── rich-13.9.4-cp313-none-any.whl
│   │   ├── scikit_learn-1.7.0-cp313-cp313-pyodide_2025_0_wasm32.whl
│   │   ├── scipy-1.14.1-cp313-cp313-pyodide_2025_0_wasm32.whl
│   │   ├── six-1.17.0-cp313-none-any.whl
│   │   ├── sympy-1.13.3-cp313-none-any.whl
│   │   └── threadpoolctl-3.5.0-cp313-none-any.whl
│   └── robots.txt
├── scripts/
│   ├── generate-parser.js
│   ├── get_pyodide_files.py
│   └── setupTypeScript.js
├── src/
│   ├── App.svelte
│   ├── BaseUnitsConfigDialog.svelte
│   ├── ButtonBar.svelte
│   ├── Cell.svelte
│   ├── CellList.svelte
│   ├── CodeCell.svelte
│   ├── CodeEditor.svelte
│   ├── CustomMatrixModal.svelte
│   ├── DataTableCell.svelte
│   ├── DataTableInput.svelte
│   ├── DeletedCell.svelte
│   ├── DocumentTitle.svelte
│   ├── DocumentationCell.svelte
│   ├── DocumentationField.svelte
│   ├── DownloadDocumentModal.svelte
│   ├── DropOverlay.svelte
│   ├── FluidCell.svelte
│   ├── GenerateCodeDialog.svelte
│   ├── IconButton.svelte
│   ├── InsertCell.svelte
│   ├── InsertSheetModal.svelte
│   ├── KeyboardButton.svelte
│   ├── KeyboardShortcuts.svelte
│   ├── MathCell.svelte
│   ├── MathCellConfigDialog.svelte
│   ├── MathField.svelte
│   ├── NumberFormatOptionsDialog.svelte
│   ├── PiecewiseCell.svelte
│   ├── Plot.svelte
│   ├── PlotCell.svelte
│   ├── RequestPersistentStorage.svelte
│   ├── SetDefaultConfigDialog.svelte
│   ├── SystemCell.svelte
│   ├── TableCell.svelte
│   ├── Terms.svelte
│   ├── TextBox.svelte
│   ├── TextButton.svelte
│   ├── TextCheckbox.svelte
│   ├── UnitsDocumentation.svelte
│   ├── UpdateAvailable.svelte
│   ├── Updates.svelte
│   ├── VirtualKeyboard.svelte
│   ├── carbon-theme.scss
│   ├── cells/
│   │   ├── BaseCell.ts
│   │   ├── Cells.ts
│   │   ├── CodeCell.svelte.ts
│   │   ├── DataTableCell.svelte.ts
│   │   ├── DeletedCell.ts
│   │   ├── DocumentationCell.svelte.ts
│   │   ├── FluidCell.svelte.ts
│   │   ├── InsertCell.ts
│   │   ├── MathCell.svelte.ts
│   │   ├── MathField.svelte.ts
│   │   ├── PiecewiseCell.svelte.ts
│   │   ├── PlotCell.svelte.ts
│   │   ├── SystemCell.svelte.ts
│   │   └── TableCell.svelte.ts
│   ├── constants.ts
│   ├── customPlotButtonIcons.ts
│   ├── database/
│   │   ├── _worker.ts
│   │   ├── scripts/
│   │   │   ├── initialize.sql
│   │   │   ├── sheets_used_for_tests.json
│   │   │   └── transfer_sheets.js
│   │   ├── tsconfig.json
│   │   ├── types.ts
│   │   └── utility.ts
│   ├── fluidConstants.ts
│   ├── global.css
│   ├── global.d.ts
│   ├── jediWorker.ts
│   ├── jediWrapper.ts
│   ├── keyboard/
│   │   └── Keyboard.svelte.ts
│   ├── main.js
│   ├── parser/
│   │   ├── LatexIdFragments.g4
│   │   ├── LatexLexer.g4
│   │   ├── LatexLexer.ts
│   │   ├── LatexParser.g4
│   │   ├── LatexParser.ts
│   │   ├── LatexParserVisitor.ts
│   │   ├── LatexToSympy.ts
│   │   ├── constants.ts
│   │   ├── parserWorker.ts
│   │   ├── parserWrapper.ts
│   │   ├── types.ts
│   │   └── utility.ts
│   ├── pyodide-info.json
│   ├── pyodideWorker.ts
│   ├── resultTypes.ts
│   ├── sheet/
│   │   └── Sheet.ts
│   ├── stores.svelte.ts
│   ├── types.ts
│   └── utility.ts
├── svelte.config.js
├── tests/
│   ├── seed-data.json
│   ├── spreadsheets/
│   │   ├── bottle_data.csv
│   │   ├── headers_and_units.csv
│   │   ├── headers_and_units.xlsx
│   │   ├── headers_no_units.xlsx
│   │   ├── interpolation_autosort.csv
│   │   ├── interpolation_repeated_input.csv
│   │   ├── multivariable_interpolation_no_units.xlsx
│   │   ├── multivariable_interpolation_units_large_scale.xlsx
│   │   ├── multivariable_interpolation_units_small_scale.xlsx
│   │   ├── no_headers.xlsx
│   │   ├── plane_interpolation_no_units.csv
│   │   ├── plane_interpolation_with_units_large_scale.csv
│   │   ├── plane_interpolation_with_units_small_scale.csv
│   │   └── polyfit_symbolic.xlsx
│   ├── test_advanced_assignments.spec.mjs
│   ├── test_advanced_var_names.spec.mjs
│   ├── test_basic.spec.mjs
│   ├── test_calc.spec.mjs
│   ├── test_checkpoints.spec.mjs
│   ├── test_code_cell.spec.mjs
│   ├── test_code_cell_rendering.spec.mjs
│   ├── test_complex.spec.mjs
│   ├── test_context_menu.spec.mjs
│   ├── test_csv_export_reference_data_table_format.csv
│   ├── test_custom_base_units.spec.mjs
│   ├── test_data_table.spec.mjs
│   ├── test_database.spec.mjs
│   ├── test_ep_custom_units.spec.mjs
│   ├── test_file_save_open.spec.mjs
│   ├── test_fluid_properties.spec.mjs
│   ├── test_functions.spec.mjs
│   ├── test_generated_code.spec.mjs
│   ├── test_iframe.spec.mjs
│   ├── test_insert_sheet.spec.mjs
│   ├── test_keyboard_shortcuts.spec.mjs
│   ├── test_latex_scientific_notation.spec.mjs
│   ├── test_matrix_addition.spec.mjs
│   ├── test_matrix_calc.spec.mjs
│   ├── test_matrix_determinant.spec.mjs
│   ├── test_matrix_functions.spec.mjs
│   ├── test_matrix_indexing_and_assembling.spec.mjs
│   ├── test_matrix_inverse.spec.mjs
│   ├── test_matrix_keyboard.spec.mjs
│   ├── test_matrix_multiplication.spec.mjs
│   ├── test_matrix_transpose.spec.mjs
│   ├── test_md_export.epxyz
│   ├── test_md_export_reference.md
│   ├── test_md_export_reference_centered.md
│   ├── test_md_export_reference_data_table_format.md
│   ├── test_number_format.spec.mjs
│   ├── test_parse_id_bug.spec.mjs
│   ├── test_piecewise_cell.spec.mjs
│   ├── test_plotting.spec.mjs
│   ├── test_sheet.epxyz
│   ├── test_sheet_long_calculation.epxyz
│   ├── test_sheet_parsing_error.epxyz
│   ├── test_sheet_slow_simplify.epxyz
│   ├── test_sheet_with_results.epxyz
│   ├── test_sheet_with_wrong_result.epxyz
│   ├── test_single_char_scripts.spec.mjs
│   ├── test_sum_and_prod.spec.mjs
│   ├── test_symbolic_expression_error_handling.spec.mjs
│   ├── test_syntax_error_messages.spec.mjs
│   ├── test_system_solve.spec.mjs
│   ├── test_table_cell.spec.mjs
│   └── utility.mjs
├── tsconfig.json
└── vite.config.js

================================================
FILE CONTENTS
================================================

================================================
FILE: .dev.vars
================================================
DOCGEN_API=http://127.0.0.1:8000
DEV=1


================================================
FILE: .gitattributes
================================================
tests/** linguist-vendored
public/pyodide/** linguist-vendored


================================================
FILE: .github/pull_request_template.md
================================================
### Related Issue
Read the [contributing guide](https://github.com/mgreminger/EngineeringPaper.xyz/blob/main/CONTRIBUTING.md#contributing) before submitting a pull request. Outside pull requests must be proceeded by creating a [GitHub issue](https://github.com/mgreminger/EngineeringPaper.xyz/issues) to discuss the proposed changes.

Please indicate the issue number that this pull request relates to here: 



### Description of Pull Request
Describe your pull request here:


### DCO Signoff
By creating this pull request, I agree that any code that I have submitted, or will 
submit, to this pull request, satisfies this [Developer Certificate of Origin](https://developercertificate.org/).
Additionally, all other contributers to this pull request implicitly agree that their contributions satisfy the 
[Developer Certificate of Origin](https://developercertificate.org/) by the act of contributing to this pull request.


================================================
FILE: .github/workflows/playwright.yml
================================================
name: Playwright Tests
on:
  push:
    branches: [ main, master ]
  pull_request:
    branches: [ main, master ]

jobs:
  test:
    timeout-minutes: 60
    runs-on: ubuntu-24.04
    strategy:
      fail-fast: false
      matrix:
        shardIndex: [1, 2, 3, 4]
        shardTotal: [4]
        
    steps:
    - uses: actions/checkout@v3
    - uses: actions/setup-node@v3
      with:
        node-version: '22.x'
        cache: 'npm'
        
    - name: Install dependencies
      run: npm ci
      
    - name: Build site
      run: npm run build
      
    - name: Seed KV Stores
      run: npm run test:seed
      
    - name: Install Playwright
      run: npx playwright install chromium firefox --with-deps
      
    - name: Run Playwright tests
      run: npm run test -- --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }} --reporter=blob
      
    - uses: actions/upload-artifact@v4
      if: always()
      with:
        name: screenshots-${{ matrix.shardIndex }}
        path: tests/images/*.png
        retention-days: 10

    - uses: actions/upload-artifact@v4
      if: always()
      with:
        name: blob-report-${{ matrix.shardIndex }}
        path: blob-report/
        retention-days: 5

  merge-reports:
    if: always()
    needs: [test]
    runs-on: ubuntu-24.04
    steps:
    - uses: actions/checkout@v3
    - uses: actions/setup-node@v3
      with:
        node-version: '22.x'
        cache: 'npm'
        
    - name: Install dependencies
      run: npm ci
      
    # --- SCREENSHOT MERGING ---
    - name: Download all screenshots
      uses: actions/download-artifact@v4
      with:
        pattern: screenshots-*
        path: combined-screenshots
        merge-multiple: true

    - name: Upload unified screenshots artifact
      uses: actions/upload-artifact@v4
      with:
        name: all-screenshots
        path: combined-screenshots
        retention-days: 10

    # --- HTML REPORT MERGING ---
    - name: Download all blob reports
      uses: actions/download-artifact@v4
      with:
        pattern: blob-report-*
        path: all-blob-reports
        merge-multiple: true

    # Playwright compiles the blobs into a unified HTML report
    - name: Merge into HTML Report
      run: npx playwright merge-reports --reporter=html ./all-blob-reports

    - name: Upload unified HTML report
      uses: actions/upload-artifact@v4
      if: always()
      with:
        name: playwright-report
        path: playwright-report/
        retention-days: 10

================================================
FILE: .gitignore
================================================
.DS_store

node_modules
public/build
public/fonts
.antlr
*.tokens
*.interp
.ipynb_checkpoints

dist

.vscode/settings.json
tests/images/*screenshot*.png
tests/images/*_diff.png
test-results/
playwright-report/
public/_worker.js
src/database/_worker.js
src/database/utility.js
.wrangler/
public/parser/parserWorker.js
public/pyodideWorker.js
public/jediWorker.js

wrangler.toml

public/serviceworker.js
public/serviceworker.js.map

*.csv#


================================================
FILE: .node-version
================================================
22

================================================
FILE: CONTRIBUTING.md
================================================
## Get the Word Out
The easiest way to contribute to EngineeringPaper.xyz is to get the word out. A large and vibrant user community are critical to justify continued efforts to develop this open source software. The easiest ways to contribute are to like and subscribe to the official [YouTube channel](https://www.youtube.com/channel/UCaFxwEznNUfJagZ1Xi6Rh2A), participate in the official [Reddit Community](https://www.reddit.com/r/EngineeringPaperXYZ/), or rate the app in the [Windows store](https://apps.microsoft.com/store/detail/engineeringpaperxyz/9N1W74WC2X2M). User generated tutorials or videos are also welcome.

## Reporting Bugs or Requesting Features
To report issues or bugs, or to request new features, file a 
[GitHub issue](https://github.com/mgreminger/EngineeringPaper.xyz/issues) or use the 
[official EngineeringPaper.xyz subreddit](https://www.reddit.com/r/EngineeringPaperXYZ/). If you prefer email, bugs or feature 
requests can be submitted to [support@EngineeringpPaper.xyz](mailto:support@engineeringpaper.xyz).

## Contributing
Since the [live EngineeringPaper.xyz](https://engineeringpaper.xyz) site is deployed from this repository's main branch, careful consideration is required before 
adding new features. Becuase of this, a [GitHub issue](https://github.com/mgreminger/EngineeringPaper.xyz/issues) must be created to discuss a potential new feature before an external pull request
will be considered. Keep the following in mind when considering the implementation of new features:

* All features must work in Chrome, Safari, and Firefox
* All features must be usable on both desktop and mobile
* All features must format properly when printing a sheet using the browser's file print command
* All existing tests must pass (sometimes updates to old tests will be needed, depending on the feature) and any new features will most likely need new tests
* Ease of use and robustness of EngineeringPaper.xyz are top priorities, any new feature that makes EngineeringPaper.xyz more complicated to use will require careful consideration and may not be accepted
* It must always be possible to read old sheets created in previous versions of EngineeringPaper.xyz (on rare occasions, users may need to update their sheets but there can be no data loss)
* New features that require large javascript dependencies will most likely not be accepted (EngineeringPaper.xyz is already large because of its dependency on Pyodide, every effort will be made to limit bundle size growth)

Because of the limitations inherent to a repository tied to a running site, you may want to consider hosting your own fork of EngineeringPaper.xyz if you 
want to run experimental features that are not accepted to the main EngineeringPaper.xyz repository. EngineeringPaper.xyz can be easily deployed as a
Coudflare Pages project (including the database back-end through the Pages Functions capability). It can be deployed using Cloudflare's
free tier. 

Any contributors to this repository must confirm that their contributions satisfy the [Developer Certificate of Origin](https://developercertificate.org/).

## Setting up a Development Environment
See these instructions covering [setting up an EngineeringPaper.xyz development environment](https://github.com/mgreminger/EngineeringPaper.xyz#build-instructions).


================================================
FILE: LICENSE
================================================
Copyright 2020-25 Michael Greminger

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:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

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.


================================================
FILE: README.md
================================================
# [![EngineeringPaper.xyz](https://user-images.githubusercontent.com/6439649/212795699-7cc908e1-00a4-44ed-a034-695f056ee84a.png)](https://engineeringpaper.xyz)


EngineeringPaper.xyz is a web app for engineering calculations that handles unit conversion/checking automatically and also supports plotting, solving systems of equations, and documenting your calculations (see the [official blog](https://blog.engineeringpaper.xyz) for many examples). It's easy to share your calculations by creating a [shareable link](https://engineeringpaper.xyz/oMbWLXMZ6ChQ3g3ZxRbJQD) that anyone can open and build off of. Additionaly, you can save and open your files locally if you prefer not to save to the cloud. EngineeringPaper.xyz runs on Mac, Windows, Linux, and ChromeOS and works on all of the major browsers. Additionally, EngineeringPaper.xyz is designed to run well on Android and iOS devices. [Launch EngineeringPaper.xyz](https://EngineeringPaper.xyz) in your browser to try it out.

![platforms_cropped](https://user-images.githubusercontent.com/6439649/212774749-caab6190-7a45-4f04-a31c-ffdb6b6e4b96.png)


All calculations are run on your own device using the [Pyodide project](https://pyodide.org) to run Python in your browser. The 
[SymPy](https://www.sympy.org) Python symbolic math library is used to handle all calculations. 

<a href="https://apps.microsoft.com/store/detail/engineeringpaperxyz/9N1W74WC2X2M">
<img href="" src="https://user-images.githubusercontent.com/6439649/219978105-56789e93-a1d5-4ccb-b35b-6dff71a8a954.png" width="216" height="78" alt="Microsoft Store Link for EngineeringPaper.xyz App"/></a>

[![join_reddit_banner](https://github.com/mgreminger/EngineeringPaper.xyz/assets/6439649/311af86c-b358-47d4-9995-329e7e973d2e)](https://www.reddit.com/r/EngineeringPaperXYZ/)

## Learning to Use EngineeringPaper.yxz
There are many ways to learn EngineeringPaper.xyz. The built-in [editable tutorial](https://engineeringpaper.xyz/CUsUSuwHkHzNyButyCHEng) or this [tutorial video](https://youtu.be/r7EZQVhcr5Q) are good places to start. For other resources, including many video tutorials and example sheets, see the 
[learning EngineeringPaper.xyz](https://blog.engineeringpaper.xyz/engineeringpaperxyz-tutorial) blog post. To get your
questions answered, or to share calculations you have created using EngineeringPaper.xyz, join the official 
[EngineeringPaper.xyz subreddit](https://www.reddit.com/r/EngineeringPaperXYZ/).

## Dependencies
EngineeringPaper.xyz would not be possible without the many powerful open source projects that it depends on. Here's a partial list of the projects that EngineeringPaper.xyz builds off of:
* [Pyodide](https://pyodide.org), puts all of the power of Python in your browser using WebAssembly
* [SymPy](https://www.sympy.org), Python symbolic math library (this is the core computation engine for EngineeringPaper.xyz)
* [CoolProp](http://www.coolprop.org/), for thermodynamic fluid properties
* [MathLive](https://cortexjs.io/mathlive/), math editor component
* [Plotly](https://plotly.com/), used for plotting
* [Quill Editor](https://quilljs.com/), rich text editor used for documentation cells
* [Svelte](https://svelte.dev/), the javascript front-end framework that EngineeringPaper.xyz is based on
* [Math.js](https://mathjs.org/), used for unit parsing
* [ANTLR](https://www.antlr.org/), parser generator used to parse the math cells

## Build Instructions
These instructions are only needed to create a development environment for EngineeringPaper.xyz. To run the app, simply go to [EngineeringPaper.xyz](https://engineeringpaper.xyz). See the [contributing guide](https://github.com/mgreminger/EngineeringPaper.xyz/blob/main/CONTRIBUTING.md#contributing) for information on making contributions to EngineeringPaper.xyz.

[Node.js](https://nodejs.org) is used for EngineeringPaper.xyz development. If you don't already have node installed, the easiest way to get it installed is to use the [Volta](https://volta.sh/) node installer. Node version 20 or newer is required.

First, [fork and clone](https://docs.github.com/en/get-started/quickstart/fork-a-repo) this repository. Then, in the cloned project folder, use the following commands to start a local dev server (commands tested on Linux, MacOS, and on Windows using WSL2):
``` bash
# Install dependencies
npm install

# Run local dev server with live reload (point browser to localhost:8788)
npm run dev
```
To build the production version of the site and run the test suite, run the following commands (if the dev server is still running after running the above commands, close it using Ctrl-C before running these commands).
Note that after running `npm run build`, the contents of the `public` folder 
can be hosted as a static site on a web server.
``` bash
# Build the production version of the site
npm run build

# run local server
npm run preview

# Install playwright browsers (only needs to be done once each time browsers need to be updated)
# Additional installation of dependencies may be required, follow instructions
npx playwright install

# Setup local database needed for test suite
npm run test:seed

# Run test suite
npm run test
```


================================================
FILE: index.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset='utf-8'>
	<meta name='description' content='EngineeringPaper.xyz is free and open source web app for creating shareable engineering calculations that checks/converts units, solves systems of equations, and plots.'>
	<meta name='viewport' content='width=device-width,initial-scale=1'>
	<meta name="robots" content="all" /> <!-- transformed by webworker to noindex,indexifembedded for sheet URL's--> 
	<meta name="theme-color" content="#e61f00" />

	<title>EngineeringPaper.xyz</title>

	<link rel="icon" href="favicon.ico" sizes="any"><!-- 32×32 -->
	<link rel="icon" href="favicon.svg" type="image/svg+xml">
	<link rel="apple-touch-icon" href="images/icon-180.png"><!-- 180×180 -->
	<link rel="manifest" href="/manifest.json">

	<script type="module" src='/src/main.js'></script>

	<!-- canonical URL added below when not launched from engineeringpaper.xyz --> 
</head>

<body class="mathjax_ignore">
</body>

</html>


================================================
FILE: notebooks/HA_parameters.csv
================================================
haParameter,idName,units,input,output,description
C,C,J/kg/K,FALSE,TRUE,Mixture specific heat per unit dry air
H,H,J/kg,TRUE,TRUE,Mixture enthalpy per mass dry air
P,P,Pa,TRUE,FALSE,Pressure
R,Rh,,TRUE,TRUE,"Relative humidity in [0, 1]"
S,S,J/kg/K,TRUE,TRUE,Mixture entropy per mass dry air
T,T,K,TRUE,TRUE,Dry-Bulb Temperature
Tdp,Tdp,K,TRUE,TRUE,Dew-Point Temperature
B,Twb,K,TRUE,TRUE,Wet-Bulb Temperature
Visc,V,Pa*s,FALSE,TRUE,Mixture viscosity
Vda,Vda,m^3/kg,TRUE,TRUE,Mixture volume per mass dry air
W,W,,TRUE,TRUE,Humidity Ratio (kg water/kg dry air)
Cha,Cha,J/kg/K,FALSE,TRUE,Mixture specific heat per unit humid air
CV,Cv,J/kg/K,FALSE,TRUE,Mixture specific heat at constant volume per unit dry air
Cvha,Cvha,J/kg/K,FALSE,TRUE,Mixture specific heat at constant volume per unit humid air
Hha,Hha,J/kg,TRUE,TRUE,Mixture enthalpy per mass humid air
K,K,W/m/K,FALSE,TRUE,Mixture thermal conductivity
P_w,Pw,Pa,TRUE,TRUE,Partial pressure of water vapor
Sha,Sha,J/kg/K,TRUE,TRUE,Mixture entropy per mass humid air
Vha,Vha,m^3/kg,TRUE,TRUE,Mixture volume per mass humid air
psi_w,Y,,TRUE,TRUE,Water mole fraction (mol water/mol humid air)
Z,Z,,TRUE,FALSE,Compressibility factor (Z=pv/(RT))


================================================
FILE: notebooks/HA_parameters_order.csv
================================================
C,Quick Access
H,Quick Access
P,Quick Access
R,Quick Access
S,Quick Access
T,Quick Access
Tdp,Quick Access
B,Quick Access
Visc,Quick Access
Vda,Quick Access
W,Quick Access
C,All
Cha,All
CV,All
Cvha,All
H,All
Hha,All
K,All
P,All
P_w,All
R,All
S,All
Sha,All
T,All
Tdp,All
B,All
Visc,All
Vda,All
Vha,All
W,All
psi_w,All
Z,All


================================================
FILE: notebooks/coolprop_options.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "0a4de3ff",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "7.2.0\n"
     ]
    }
   ],
   "source": [
    "import csv\n",
    "\n",
    "from CoolProp.CoolProp import get_global_param_string, FluidsList, get_phase_index\n",
    "from CoolProp import __version__\n",
    "\n",
    "print(__version__)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "5e466ee8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Isopentane',\n",
       " 'Neon',\n",
       " 'Fluorine',\n",
       " 'R11',\n",
       " 'R125',\n",
       " 'cis-2-Butene',\n",
       " 'R13I1',\n",
       " 'trans-2-Butene',\n",
       " 'Ethylene',\n",
       " 'Acetone',\n",
       " 'MethylPalmitate',\n",
       " 'DimethylEther',\n",
       " 'R152A',\n",
       " 'Hydrogen',\n",
       " 'ParaHydrogen',\n",
       " 'R22',\n",
       " 'CycloHexane',\n",
       " 'R1233zd(E)',\n",
       " 'Isohexane',\n",
       " 'R236EA',\n",
       " 'CarbonMonoxide',\n",
       " 'R12',\n",
       " 'SES36',\n",
       " 'MD3M',\n",
       " 'Dichloroethane',\n",
       " 'Argon',\n",
       " 'R115',\n",
       " 'm-Xylene',\n",
       " 'n-Nonane',\n",
       " 'R13',\n",
       " 'R14',\n",
       " 'R114',\n",
       " 'n-Propane',\n",
       " 'n-Dodecane',\n",
       " 'n-Decane',\n",
       " 'MethylStearate',\n",
       " 'R410A',\n",
       " 'R236FA',\n",
       " 'n-Undecane',\n",
       " 'Xenon',\n",
       " 'R113',\n",
       " 'n-Butane',\n",
       " 'HeavyWater',\n",
       " 'Toluene',\n",
       " 'RC318',\n",
       " 'EthyleneOxide',\n",
       " 'Helium',\n",
       " 'n-Heptane',\n",
       " 'R1243zf',\n",
       " 'Ammonia',\n",
       " 'CycloPropane',\n",
       " 'MD4M',\n",
       " 'Water',\n",
       " 'R218',\n",
       " 'D6',\n",
       " 'R142b',\n",
       " 'MDM',\n",
       " 'CarbonylSulfide',\n",
       " 'HFE143m',\n",
       " 'MethylOleate',\n",
       " 'ParaDeuterium',\n",
       " 'Ethanol',\n",
       " 'R134a',\n",
       " 'Oxygen',\n",
       " 'HydrogenSulfide',\n",
       " 'o-Xylene',\n",
       " 'Nitrogen',\n",
       " 'HydrogenChloride',\n",
       " 'R1234yf',\n",
       " 'CarbonDioxide',\n",
       " 'DimethylCarbonate',\n",
       " 'R1234ze(E)',\n",
       " 'R507A',\n",
       " 'MethylLinolenate',\n",
       " 'Propylene',\n",
       " 'R41',\n",
       " 'OrthoHydrogen',\n",
       " 'Novec649',\n",
       " 'R404A',\n",
       " 'Methanol',\n",
       " 'Krypton',\n",
       " 'D5',\n",
       " 'R407C',\n",
       " 'D4',\n",
       " 'R245ca',\n",
       " 'R32',\n",
       " 'R161',\n",
       " 'MD2M',\n",
       " 'R21',\n",
       " 'NitrousOxide',\n",
       " 'n-Hexane',\n",
       " 'R123',\n",
       " 'OrthoDeuterium',\n",
       " 'Methane',\n",
       " 'n-Octane',\n",
       " 'Cyclopentane',\n",
       " 'SulfurDioxide',\n",
       " 'R143a',\n",
       " '1-Butene',\n",
       " 'R116',\n",
       " 'IsoButane',\n",
       " 'R23',\n",
       " 'MethylLinoleate',\n",
       " 'R365MFC',\n",
       " 'Benzene',\n",
       " 'Deuterium',\n",
       " 'R227EA',\n",
       " 'IsoButene',\n",
       " 'DiethylEther',\n",
       " 'R245fa',\n",
       " 'R1336mzz(E)',\n",
       " 'R1234ze(Z)',\n",
       " 'n-Pentane',\n",
       " 'Propyne',\n",
       " 'Ethane',\n",
       " 'R124',\n",
       " 'Air',\n",
       " 'Neopentane',\n",
       " 'R141b',\n",
       " 'EthylBenzene',\n",
       " 'MM',\n",
       " 'p-Xylene',\n",
       " 'SulfurHexafluoride',\n",
       " 'R40']"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "FluidsList()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "4399f245",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "124"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(FluidsList())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1b6a1f5d",
   "metadata": {},
   "source": [
    "[Phase Index Definitions](https://github.com/CoolProp/CoolProp/blob/f6eb03742f9430f8dbf9e5a950b2d914b9edc0d1/include/DataStructures.h#L176)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "19d04e16",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "8"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "get_phase_index(\"phase_not_imposed\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "5129a61a",
   "metadata": {},
   "outputs": [],
   "source": [
    "bool_dict = {\"True\": \"true\", \"TRUE\": \"true\", \"FALSE\": \"false\", \"False\": \"false\", \"null\": \"null\"}\n",
    "\n",
    "file_name = '../src/fluidConstants.ts'\n",
    "\n",
    "with open(file_name, 'w') as f:\n",
    "\n",
    "    f.write(\"export const FLUID_PROPS_PARAMETERS = new Map([\\n\")\n",
    "    with open('propsSI_parameters.csv') as csvfile:\n",
    "        reader = csv.reader(csvfile)\n",
    "        for i,row in enumerate(reader):\n",
    "            if i == 0:\n",
    "                header = row\n",
    "            else:\n",
    "                f.write(\"  [\\n\")\n",
    "                f.write(f'    \"{row[0]}\",\\n')\n",
    "                f.write(\"    {\\n\")\n",
    "                for j,name in enumerate(header):\n",
    "                    if j >= 1:\n",
    "                        value = row[j]\n",
    "                        if value in bool_dict:\n",
    "                            f.write(f'      {name}: {bool_dict[value]},\\n')\n",
    "                        else:\n",
    "                            f.write(f'      {name}: \"{value}\",\\n')\n",
    "\n",
    "                f.write(\"    }\\n\")\n",
    "                f.write(\"  ],\\n\")\n",
    "    f.write(\"]);\\n\\n\\n\")\n",
    "    \n",
    "    f.write(\"export const FLUID_PROPS_PARAMETERS_ORDER = [\\n\")\n",
    "    with open('propsSI_parameters_order.csv') as csvfile:\n",
    "        reader = csv.reader(csvfile)\n",
    "        for row in reader:\n",
    "            row_values = '\"' + '\", \"'.join(row) + '\"'\n",
    "            f.write(f\"    [{row_values}],\\n\")\n",
    "     \n",
    "    f.write(\"  ];\\n\\n\\n\")\n",
    "    \n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "17ad8ae6",
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "with open(file_name, 'a') as f:\n",
    "    f.write(\"export const FLUIDS = new Map([\\n\")\n",
    "    with open('propsSI_fluids.csv') as csvfile:\n",
    "        reader = csv.reader(csvfile)\n",
    "        for i,row in enumerate(reader):\n",
    "            if i == 0:\n",
    "                header = row\n",
    "            else:\n",
    "                f.write(\"  [\\n\")\n",
    "                f.write(f'    \"{row[0]}\",\\n')\n",
    "                f.write(\"    {\\n\")\n",
    "                for j,name in enumerate(header):\n",
    "                    if j >= 1:\n",
    "                        value = row[j]\n",
    "                        if value in bool_dict:\n",
    "                            f.write(f'      {name}: {bool_dict[value]},\\n')\n",
    "                        elif name in ('minConcentration', 'maxConcentration'):\n",
    "                            f.write(f'      {name}: {value},\\n')\n",
    "                        else:\n",
    "                            f.write(f'      {name}: \"{value}\",\\n')\n",
    "\n",
    "                f.write(\"    }\\n\")\n",
    "                f.write(\"  ],\\n\")\n",
    "    f.write(\"]);\\n\\n\\n\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "900b5b7e",
   "metadata": {},
   "outputs": [],
   "source": [
    "with open(file_name, 'a') as f:\n",
    "    f.write(\"export const FLUID_HA_PROPS_PARAMETERS = new Map([\\n\")\n",
    "    with open('HA_parameters.csv') as csvfile:\n",
    "        reader = csv.reader(csvfile)\n",
    "        for i,row in enumerate(reader):\n",
    "            if i == 0:\n",
    "                header = row\n",
    "            else:\n",
    "                f.write(\"  [\\n\")\n",
    "                f.write(f'    \"{row[0]}\",\\n')\n",
    "                f.write(\"    {\\n\")\n",
    "                for j,name in enumerate(header):\n",
    "                    if j >= 1:\n",
    "                        value = row[j]\n",
    "                        if value in bool_dict:\n",
    "                            f.write(f'      {name}: {bool_dict[value]},\\n')\n",
    "                        else:\n",
    "                            f.write(f'      {name}: \"{value}\",\\n')\n",
    "\n",
    "                f.write(\"    }\\n\")\n",
    "                f.write(\"  ],\\n\")\n",
    "    f.write(\"]);\\n\")\n",
    "    \n",
    "    f.write(\"export const FLUID_HA_PROPS_PARAMETERS_ORDER = [\\n\")\n",
    "    with open('HA_parameters_order.csv') as csvfile:\n",
    "        reader = csv.reader(csvfile)\n",
    "        for row in reader:\n",
    "            row_values = '\"' + '\", \"'.join(row) + '\"'\n",
    "            f.write(f\"    [{row_values}],\\n\")\n",
    "     \n",
    "    f.write(\"  ];\\n\\n\\n\")"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: notebooks/coolprop_predifined_mixtures.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "f2cf27a2",
   "metadata": {},
   "outputs": [],
   "source": [
    "import json\n",
    "import csv"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "859eed4a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'fluids': ['NITROGEN', 'ARGON', 'OXYGEN'],\n",
       "  'mole_fractions': [0.7812, 0.0092, 0.2096],\n",
       "  'name': 'Air'},\n",
       " {'fluids': ['METHANE',\n",
       "   'NITROGEN',\n",
       "   'CO2',\n",
       "   'ETHANE',\n",
       "   'PROPANE',\n",
       "   'ISOBUTAN',\n",
       "   'BUTANE',\n",
       "   'IPENTANE',\n",
       "   'PENTANE',\n",
       "   'HEXANE'],\n",
       "  'mole_fractions': [0.906724,\n",
       "   0.031284,\n",
       "   0.004676,\n",
       "   0.045279,\n",
       "   0.00828,\n",
       "   0.001037,\n",
       "   0.001563,\n",
       "   0.000321,\n",
       "   0.000443,\n",
       "   0.000393],\n",
       "  'name': 'Amarillo'},\n",
       " {'fluids': ['METHANE',\n",
       "   'NITROGEN',\n",
       "   'CO2',\n",
       "   'ETHANE',\n",
       "   'PROPANE',\n",
       "   'ISOBUTAN',\n",
       "   'BUTANE',\n",
       "   'IPENTANE',\n",
       "   'PENTANE'],\n",
       "  'mole_fractions': [0.859063,\n",
       "   0.010068,\n",
       "   0.014954,\n",
       "   0.084919,\n",
       "   0.023015,\n",
       "   0.003486,\n",
       "   0.003506,\n",
       "   0.000509,\n",
       "   0.00048],\n",
       "  'name': 'Ekofisk'},\n",
       " {'fluids': ['METHANE',\n",
       "   'NITROGEN',\n",
       "   'CO2',\n",
       "   'ETHANE',\n",
       "   'PROPANE',\n",
       "   'ISOBUTAN',\n",
       "   'BUTANE',\n",
       "   'IPENTANE',\n",
       "   'PENTANE',\n",
       "   'HEXANE'],\n",
       "  'mole_fractions': [0.965222,\n",
       "   0.002595,\n",
       "   0.005956,\n",
       "   0.018186,\n",
       "   0.004596,\n",
       "   0.000977,\n",
       "   0.001007,\n",
       "   0.000473,\n",
       "   0.000324,\n",
       "   0.000664],\n",
       "  'name': 'GulfCoast'},\n",
       " {'fluids': ['METHANE',\n",
       "   'NITROGEN',\n",
       "   'CO2',\n",
       "   'ETHANE',\n",
       "   'PROPANE',\n",
       "   'ISOBUTAN',\n",
       "   'BUTANE'],\n",
       "  'mole_fractions': [0.81212,\n",
       "   0.05702,\n",
       "   0.07585,\n",
       "   0.04303,\n",
       "   0.00895,\n",
       "   0.00151,\n",
       "   0.00152],\n",
       "  'name': 'HighCO2'},\n",
       " {'fluids': ['METHANE',\n",
       "   'NITROGEN',\n",
       "   'CO2',\n",
       "   'ETHANE',\n",
       "   'PROPANE',\n",
       "   'ISOBUTAN',\n",
       "   'BUTANE'],\n",
       "  'mole_fractions': [0.81441,\n",
       "   0.13465,\n",
       "   0.00985,\n",
       "   0.033,\n",
       "   0.00605,\n",
       "   0.001,\n",
       "   0.00104],\n",
       "  'name': 'HighN2'},\n",
       " {'fluids': ['METHANE',\n",
       "   'NITROGEN',\n",
       "   'CO2',\n",
       "   'ETHANE',\n",
       "   'PROPANE',\n",
       "   'ISOBUTAN',\n",
       "   'BUTANE',\n",
       "   'IPENTANE',\n",
       "   'PENTANE',\n",
       "   'HEXANE'],\n",
       "  'mole_fractions': [0.95123,\n",
       "   0.00089,\n",
       "   0.02555,\n",
       "   0.01835,\n",
       "   0.00238,\n",
       "   0.0004,\n",
       "   0.00016,\n",
       "   0.00014,\n",
       "   0.00011,\n",
       "   0.00079],\n",
       "  'name': 'NaturalGasSample'},\n",
       " {'fluids': ['R22', 'R152A', 'R124'],\n",
       "  'mole_fractions': [0.578854210704231, 0.185871453986601, 0.235274335309169],\n",
       "  'name': 'R401A'},\n",
       " {'fluids': ['R22', 'R152A', 'R124'],\n",
       "  'mole_fractions': [0.654924685341436, 0.154607382276918, 0.190467932381646],\n",
       "  'name': 'R401B'},\n",
       " {'fluids': ['R22', 'R152A', 'R124'],\n",
       "  'mole_fractions': [0.385591186504412, 0.229445970225924, 0.384962843269664],\n",
       "  'name': 'R401C'},\n",
       " {'fluids': ['R125', 'PROPANE', 'R22'],\n",
       "  'mole_fractions': [0.507659889396724, 0.0460590346231213, 0.446281075980154],\n",
       "  'name': 'R402A'},\n",
       " {'fluids': ['R125', 'PROPANE', 'R22'],\n",
       "  'mole_fractions': [0.299858744498276, 0.0429562491180057, 0.657185006383719],\n",
       "  'name': 'R402B'},\n",
       " {'fluids': ['PROPANE', 'R22', 'R218'],\n",
       "  'mole_fractions': [0.104301635230068, 0.797852142841926, 0.0978462219280052],\n",
       "  'name': 'R403A'},\n",
       " {'fluids': ['PROPANE', 'R22', 'R218'],\n",
       "  'mole_fractions': [0.117083478399255, 0.668734422027154, 0.214182099573591],\n",
       "  'name': 'R403B'},\n",
       " {'fluids': ['R125', 'R134A', 'R143A'],\n",
       "  'mole_fractions': [0.357816784026318, 0.0382639950410712, 0.603919220932611],\n",
       "  'name': 'R404A'},\n",
       " {'fluids': ['R22', 'R152A', 'R142B', 'RC318'],\n",
       "  'mole_fractions': [0.582397185883849,\n",
       "   0.118598940913682,\n",
       "   0.0612463586573,\n",
       "   0.237757514545169],\n",
       "  'name': 'R405A'},\n",
       " {'fluids': ['R22', 'ISOBUTAN', 'R142B'],\n",
       "  'mole_fractions': [0.571559096367276, 0.0618403319459979, 0.366600571686726],\n",
       "  'name': 'R406A'},\n",
       " {'fluids': ['R32', 'R125', 'R134A'],\n",
       "  'mole_fractions': [0.346419854360797, 0.300315552114308, 0.353264593524896],\n",
       "  'name': 'R407A'},\n",
       " {'fluids': ['R32', 'R125', 'R134A'],\n",
       "  'mole_fractions': [0.197865007175653, 0.600360468492644, 0.201774524331703],\n",
       "  'name': 'R407B'},\n",
       " {'fluids': ['R32', 'R125', 'R134A'],\n",
       "  'mole_fractions': [0.381109419953993, 0.179558888662016, 0.439331691383991],\n",
       "  'name': 'R407C'},\n",
       " {'fluids': ['R32', 'R125', 'R134A'],\n",
       "  'mole_fractions': [0.262268077791873, 0.113681680758968, 0.624050241449159],\n",
       "  'name': 'R407D'},\n",
       " {'fluids': ['R32', 'R125', 'R134A'],\n",
       "  'mole_fractions': [0.402611526984881, 0.104708637358978, 0.492679835656141],\n",
       "  'name': 'R407E'},\n",
       " {'fluids': ['R32', 'R125', 'R134A'],\n",
       "  'mole_fractions': [0.473194694453358, 0.205109095413331, 0.321696210133311],\n",
       "  'name': 'R407F'},\n",
       " {'fluids': ['R125', 'R143A', 'R22'],\n",
       "  'mole_fractions': [0.0507496395780536, 0.476277681499092, 0.472972678922854],\n",
       "  'name': 'R408A'},\n",
       " {'fluids': ['R22', 'R124', 'R142B'],\n",
       "  'mole_fractions': [0.676088021274302, 0.178481953421098, 0.1454300253046],\n",
       "  'name': 'R409A'},\n",
       " {'fluids': ['R22', 'R124', 'R142B'],\n",
       "  'mole_fractions': [0.726713817097545, 0.177089324155708, 0.0961968587467468],\n",
       "  'name': 'R409B'},\n",
       " {'fluids': ['R32', 'R125'],\n",
       "  'mole_fractions': [0.697614699375863, 0.302385300624138],\n",
       "  'name': 'R410A'},\n",
       " {'fluids': ['R32', 'R125'],\n",
       "  'mole_fractions': [0.653688938033229, 0.346311061966771],\n",
       "  'name': 'R410B'},\n",
       " {'fluids': ['PROPYLEN', 'R22', 'R152A'],\n",
       "  'mole_fractions': [0.0293595987641706, 0.833472654512905, 0.137167746722925],\n",
       "  'name': 'R411A'},\n",
       " {'fluids': ['PROPYLEN', 'R22', 'R152A'],\n",
       "  'mole_fractions': [0.0592216130255444,\n",
       "   0.903048917855743,\n",
       "   0.0377294691187131],\n",
       "  'name': 'R411B'},\n",
       " {'fluids': ['R22', 'R218', 'R142B'],\n",
       "  'mole_fractions': [0.746189416536491, 0.0245117299030133, 0.229298853560496],\n",
       "  'name': 'R412A'},\n",
       " {'fluids': ['R218', 'R134A', 'ISOBUTAN'],\n",
       "  'mole_fractions': [0.0497604388838132,\n",
       "   0.896582929746185,\n",
       "   0.0536566313700015],\n",
       "  'name': 'R413A'},\n",
       " {'fluids': ['R22', 'R124', 'ISOBUTAN', 'R142B'],\n",
       "  'mole_fractions': [0.571718248653786,\n",
       "   0.202422623615037,\n",
       "   0.0667091242374272,\n",
       "   0.159150003493749],\n",
       "  'name': 'R414A'},\n",
       " {'fluids': ['R22', 'R124', 'ISOBUTAN', 'R142B'],\n",
       "  'mole_fractions': [0.58743911052603,\n",
       "   0.29030851296569,\n",
       "   0.0262178745861124,\n",
       "   0.0960345019221677],\n",
       "  'name': 'R414B'},\n",
       " {'fluids': ['R22', 'R152A'],\n",
       "  'mole_fractions': [0.776780159383737, 0.223219840616263],\n",
       "  'name': 'R415A'},\n",
       " {'fluids': ['R22', 'R152A'],\n",
       "  'mole_fractions': [0.202949716550675, 0.797050283449325],\n",
       "  'name': 'R415B'},\n",
       " {'fluids': ['R134A', 'R124', 'BUTANE'],\n",
       "  'mole_fractions': [0.647182715864291, 0.323933072881677, 0.0288842112540324],\n",
       "  'name': 'R416A'},\n",
       " {'fluids': ['R125', 'R134A', 'BUTANE'],\n",
       "  'mole_fractions': [0.414456113615123, 0.523100248809492, 0.0624436375753851],\n",
       "  'name': 'R417A'},\n",
       " {'fluids': ['PROPANE', 'R22', 'R152A'],\n",
       "  'mole_fractions': [0.0287766462758765,\n",
       "   0.939204558675462,\n",
       "   0.0320187950486611],\n",
       "  'name': 'R418A'},\n",
       " {'fluids': ['R125', 'R134A', 'DME'],\n",
       "  'mole_fractions': [0.701459965531065, 0.203604819551495, 0.0949352149174398],\n",
       "  'name': 'R419A'},\n",
       " {'fluids': ['R134A', 'R142B'],\n",
       "  'mole_fractions': [0.878387913267685, 0.121612086732315],\n",
       "  'name': 'R420A'},\n",
       " {'fluids': ['R125', 'R134A'],\n",
       "  'mole_fractions': [0.540011717389644, 0.459988282610356],\n",
       "  'name': 'R421A'},\n",
       " {'fluids': ['R125', 'R134A'],\n",
       "  'mole_fractions': [0.828099498512419, 0.171900501487581],\n",
       "  'name': 'R421B'},\n",
       " {'fluids': ['R125', 'R134A', 'ISOBUTAN'],\n",
       "  'mole_fractions': [0.805501067600345, 0.128043250123554, 0.0664556822761011],\n",
       "  'name': 'R422A'},\n",
       " {'fluids': ['R125', 'R134A', 'ISOBUTAN'],\n",
       "  'mole_fractions': [0.497287395965083, 0.446700400155301, 0.0560122038796163],\n",
       "  'name': 'R422B'},\n",
       " {'fluids': ['R125', 'R134A', 'ISOBUTAN'],\n",
       "  'mole_fractions': [0.774757115908852, 0.166711388687975, 0.0585314954031729],\n",
       "  'name': 'R422C'},\n",
       " {'fluids': ['R125', 'R134A', 'ISOBUTAN'],\n",
       "  'mole_fractions': [0.596291711495645, 0.339399053279791, 0.064309235224564],\n",
       "  'name': 'R422D'},\n",
       " {'fluids': ['R134A', 'R227EA'],\n",
       "  'mole_fractions': [0.648115324820034, 0.351884675179966],\n",
       "  'name': 'R423A'},\n",
       " {'fluids': ['R125', 'R134A', 'ISOBUTAN', 'BUTANE', 'IPENTANE'],\n",
       "  'mole_fractions': [0.45615402931289,\n",
       "   0.49939050863627,\n",
       "   0.0167872396578164,\n",
       "   0.0186524885086849,\n",
       "   0.00901573388433862],\n",
       "  'name': 'R424A'},\n",
       " {'fluids': ['R32', 'R134A', 'R227EA'],\n",
       "  'mole_fractions': [0.321134464075019, 0.615130603145805, 0.0637349327791751],\n",
       "  'name': 'R425A'},\n",
       " {'fluids': ['R125', 'R134A', 'BUTANE', 'IPENTANE'],\n",
       "  'mole_fractions': [0.0431546741714159,\n",
       "   0.925684310853531,\n",
       "   0.0227152573734822,\n",
       "   0.00844575760157109],\n",
       "  'name': 'R426A'},\n",
       " {'fluids': ['R32', 'R125', 'R143A', 'R134A'],\n",
       "  'mole_fractions': [0.260775797534104,\n",
       "   0.188391404795509,\n",
       "   0.107618901019853,\n",
       "   0.443213896650535],\n",
       "  'name': 'R427A'},\n",
       " {'fluids': ['R125', 'R143A', 'PROPANE', 'ISOBUTAN'],\n",
       "  'mole_fractions': [0.694325251072399,\n",
       "   0.255893190962662,\n",
       "   0.0146310583647717,\n",
       "   0.0351504996001673],\n",
       "  'name': 'R428A'},\n",
       " {'fluids': ['DME', 'R152A', 'ISOBUTAN'],\n",
       "  'mole_fractions': [0.66113457206158, 0.0768533364747054, 0.262012091463714],\n",
       "  'name': 'R429A'},\n",
       " {'fluids': ['R152A', 'ISOBUTAN'],\n",
       "  'mole_fractions': [0.735906531919507, 0.264093468080493],\n",
       "  'name': 'R430A'},\n",
       " {'fluids': ['PROPANE', 'R152A'],\n",
       "  'mole_fractions': [0.785742532365466, 0.214257467634534],\n",
       "  'name': 'R431A'},\n",
       " {'fluids': ['PROPYLEN', 'DME'],\n",
       "  'mole_fractions': [0.814097241703795, 0.185902758296205],\n",
       "  'name': 'R432A'},\n",
       " {'fluids': ['PROPYLEN', 'PROPANE'],\n",
       "  'mole_fractions': [0.309917763130151, 0.690082236869849],\n",
       "  'name': 'R433A'},\n",
       " {'fluids': ['R125', 'R143A', 'R134A', 'ISOBUTAN'],\n",
       "  'mole_fractions': [0.556782765664377,\n",
       "   0.226468961005242,\n",
       "   0.165810098372986,\n",
       "   0.0509381749573948],\n",
       "  'name': 'R434A'},\n",
       " {'fluids': ['DME', 'R152A'],\n",
       "  'mole_fractions': [0.85152261670421, 0.14847738329579],\n",
       "  'name': 'R435A'},\n",
       " {'fluids': ['PROPANE', 'ISOBUTAN'],\n",
       "  'mole_fractions': [0.62652773298942, 0.37347226701058],\n",
       "  'name': 'R436A'},\n",
       " {'fluids': ['PROPANE', 'ISOBUTAN'],\n",
       "  'mole_fractions': [0.588127503607667, 0.411872496392333],\n",
       "  'name': 'R436B'},\n",
       " {'fluids': ['R125', 'R134A', 'BUTANE', 'PENTANE'],\n",
       "  'mole_fractions': [0.168496314343733,\n",
       "   0.797898667324292,\n",
       "   0.0249804624362383,\n",
       "   0.00862455589573693],\n",
       "  'name': 'R437A'},\n",
       " {'fluids': ['R32', 'R125', 'R134A', 'BUTANE', 'IPENTANE'],\n",
       "  'mole_fractions': [0.161915681788051,\n",
       "   0.371558801739542,\n",
       "   0.42929872424902,\n",
       "   0.0289854872298073,\n",
       "   0.00824130499357989],\n",
       "  'name': 'R438A'},\n",
       " {'fluids': ['ETHANE', 'PROPANE', 'ISOBUTAN', 'BUTANE'],\n",
       "  'mole_fractions': [0.049800395690461,\n",
       "   0.600310262208399,\n",
       "   0.0498654644324665,\n",
       "   0.300023877668674],\n",
       "  'name': 'R441A'},\n",
       " {'fluids': ['R32', 'R125', 'R134A', 'R152A', 'R227EA'],\n",
       "  'mole_fractions': [0.487220106766942,\n",
       "   0.211188495005419,\n",
       "   0.240409765511042,\n",
       "   0.0371371957951017,\n",
       "   0.0240444369214954],\n",
       "  'name': 'R442A'},\n",
       " {'fluids': ['PROPYLEN', 'PROPANE', 'ISOBUTAN'],\n",
       "  'mole_fractions': [0.568232931233387, 0.394367661677695, 0.0373994070889183],\n",
       "  'name': 'R443A'},\n",
       " {'fluids': ['R32', 'R152A', 'R1234ZE'],\n",
       "  'mole_fractions': [0.223042202171548, 0.0731981570161227, 0.703759640812329],\n",
       "  'name': 'R444A'},\n",
       " {'fluids': ['R12', 'R152A'],\n",
       "  'mole_fractions': [0.606101741397223, 0.393898258602777],\n",
       "  'name': 'R500'},\n",
       " {'fluids': ['R22', 'R12'],\n",
       "  'mole_fractions': [0.807509678166191, 0.192490321833809],\n",
       "  'name': 'R501'},\n",
       " {'fluids': ['R22', 'R115'],\n",
       "  'mole_fractions': [0.629994467193889, 0.370005532806111],\n",
       "  'name': 'R502'},\n",
       " {'fluids': ['R23', 'R13'],\n",
       "  'mole_fractions': [0.49970034990839, 0.50029965009161],\n",
       "  'name': 'R503'},\n",
       " {'fluids': ['R32', 'R115'],\n",
       "  'mole_fractions': [0.734239632563771, 0.265760367436229],\n",
       "  'name': 'R504'},\n",
       " {'fluids': ['R125', 'R143A'],\n",
       "  'mole_fractions': [0.411839711774438, 0.588160288225562],\n",
       "  'name': 'R507A'},\n",
       " {'fluids': ['R23', 'R116'],\n",
       "  'mole_fractions': [0.557576966356198, 0.442423033643802],\n",
       "  'name': 'R508A'},\n",
       " {'fluids': ['R23', 'R116'],\n",
       "  'mole_fractions': [0.626751006700703, 0.373248993299297],\n",
       "  'name': 'R508B'},\n",
       " {'fluids': ['R22', 'R218'],\n",
       "  'mole_fractions': [0.630790210153023, 0.369209789846977],\n",
       "  'name': 'R509A'},\n",
       " {'fluids': ['DME', 'ISOBUTAN'],\n",
       "  'mole_fractions': [0.902458936722509, 0.0975410632774913],\n",
       "  'name': 'R510A'},\n",
       " {'fluids': ['R134A', 'R152A'],\n",
       "  'mole_fractions': [0.0329487458964343, 0.967051254103566],\n",
       "  'name': 'R512A'},\n",
       " {'fluids': ['METHANE',\n",
       "   'NITROGEN',\n",
       "   'CO2',\n",
       "   'ETHANE',\n",
       "   'PROPANE',\n",
       "   'ISOBUTAN',\n",
       "   'BUTANE',\n",
       "   'IPENTANE',\n",
       "   'PENTANE',\n",
       "   'HEXANE'],\n",
       "  'mole_fractions': [0.965222,\n",
       "   0.002595,\n",
       "   0.005956,\n",
       "   0.018186,\n",
       "   0.004596,\n",
       "   0.000977,\n",
       "   0.001007,\n",
       "   0.000473,\n",
       "   0.000324,\n",
       "   0.000664],\n",
       "  'name': 'GulfCoastGas(NIST1)'},\n",
       " {'fluids': ['METHANE',\n",
       "   'NITROGEN',\n",
       "   'CO2',\n",
       "   'ETHANE',\n",
       "   'PROPANE',\n",
       "   'ISOBUTAN',\n",
       "   'BUTANE',\n",
       "   'IPENTANE',\n",
       "   'PENTANE',\n",
       "   'HEXANE'],\n",
       "  'mole_fractions': [0.95123,\n",
       "   0.00089,\n",
       "   0.02555,\n",
       "   0.01835,\n",
       "   0.00238,\n",
       "   0.0004,\n",
       "   0.00016,\n",
       "   0.00014,\n",
       "   0.00011,\n",
       "   0.00079],\n",
       "  'name': 'TypicalNaturalGas'},\n",
       " {'fluids': ['R125', 'R134A', 'BUTANE'],\n",
       "  'mole_fractions': [0.744566872257699, 0.202885026732296, 0.052548101010005],\n",
       "  'name': 'R417B'},\n",
       " {'fluids': ['R125', 'R134A', 'BUTANE'],\n",
       "  'mole_fractions': [0.168533780311387, 0.801126056234188, 0.0303401634544254],\n",
       "  'name': 'R417C'},\n",
       " {'fluids': ['R125', 'R134A', 'DME'],\n",
       "  'mole_fractions': [0.425134881380361, 0.494935410459673, 0.0799297081599657],\n",
       "  'name': 'R419B'},\n",
       " {'fluids': ['R125', 'R134A', 'ISOBUTAN'],\n",
       "  'mole_fractions': [0.528211539833383, 0.421012248071509, 0.0507762120951078],\n",
       "  'name': 'R422E'},\n",
       " {'fluids': ['DME', 'R152A', 'ISOBUTAN'],\n",
       "  'mole_fractions': [0.66113457206158, 0.0768533364747054, 0.262012091463714],\n",
       "  'name': 'R429A'},\n",
       " {'fluids': ['R152A', 'ISOBUTAN'],\n",
       "  'mole_fractions': [0.735906531919507, 0.264093468080493],\n",
       "  'name': 'R430A'},\n",
       " {'fluids': ['PROPANE', 'R152A'],\n",
       "  'mole_fractions': [0.785742532365466, 0.214257467634534],\n",
       "  'name': 'R431A'},\n",
       " {'fluids': ['PROPYLEN', 'DME'],\n",
       "  'mole_fractions': [0.814097241703795, 0.185902758296205],\n",
       "  'name': 'R432A'},\n",
       " {'fluids': ['PROPYLEN', 'PROPANE'],\n",
       "  'mole_fractions': [0.309917763130151, 0.690082236869849],\n",
       "  'name': 'R433A'},\n",
       " {'fluids': ['PROPYLEN', 'PROPANE'],\n",
       "  'mole_fractions': [0.0522701063955236, 0.947729893604476],\n",
       "  'name': 'R433B'},\n",
       " {'fluids': ['PROPYLEN', 'PROPANE'],\n",
       "  'mole_fractions': [0.25887610544032, 0.74112389455968],\n",
       "  'name': 'R433C'},\n",
       " {'fluids': ['R125', 'R143A', 'R134A', 'ISOBUTAN'],\n",
       "  'mole_fractions': [0.556782765664377,\n",
       "   0.226468961005242,\n",
       "   0.165810098372986,\n",
       "   0.0509381749573948],\n",
       "  'name': 'R434A'},\n",
       " {'fluids': ['R32', 'R125', 'R134A', 'BUTANE', 'IPENTANE'],\n",
       "  'mole_fractions': [0.161915681788051,\n",
       "   0.371558801739542,\n",
       "   0.42929872424902,\n",
       "   0.0289854872298073,\n",
       "   0.00824130499357989],\n",
       "  'name': 'R438A'},\n",
       " {'fluids': ['R32', 'R125', 'ISOBUTAN'],\n",
       "  'mole_fractions': [0.684390813603997, 0.278854127894844, 0.0367550585011589],\n",
       "  'name': 'R439A'},\n",
       " {'fluids': ['PROPANE', 'R134A', 'R152A'],\n",
       "  'mole_fractions': [0.00901134733203068,\n",
       "   0.0103852633851142,\n",
       "   0.980603389282855],\n",
       "  'name': 'R440A'},\n",
       " {'fluids': ['R32', 'R152A', 'R1234ZE'],\n",
       "  'mole_fractions': [0.580409174767712, 0.11015659826248, 0.309434226969808],\n",
       "  'name': 'R444B'},\n",
       " {'fluids': ['CO2', 'R134A', 'R1234ZE'],\n",
       "  'mole_fractions': [0.14056672736859, 0.0909466670967859, 0.768486605534624],\n",
       "  'name': 'R445A'},\n",
       " {'fluids': ['R32', 'R1234ZE', 'BUTANE'],\n",
       "  'mole_fractions': [0.810347789312053, 0.157652541387366, 0.0319996693005808],\n",
       "  'name': 'R446A'},\n",
       " {'fluids': ['R32', 'R125', 'R1234ZE'],\n",
       "  'mole_fractions': [0.824059115538506, 0.0183849541922025, 0.157555930269292],\n",
       "  'name': 'R447A'},\n",
       " {'fluids': ['R32', 'R125', 'R1234YF', 'R134A', 'R1234ZE'],\n",
       "  'mole_fractions': [0.431218201988559,\n",
       "   0.186914131481992,\n",
       "   0.151319256485899,\n",
       "   0.177586673617217,\n",
       "   0.0529617364263329],\n",
       "  'name': 'R448A'},\n",
       " {'fluids': ['R32', 'R125', 'R1234YF', 'R134A'],\n",
       "  'mole_fractions': [0.407364566995509,\n",
       "   0.179481207732065,\n",
       "   0.193480840388364,\n",
       "   0.219673384884062],\n",
       "  'name': 'R449A'},\n",
       " {'fluids': ['R32', 'R125', 'R1234YF', 'R134A'],\n",
       "  'mole_fractions': [0.418353331871839,\n",
       "   0.174861426767915,\n",
       "   0.175699749729428,\n",
       "   0.231085491630818],\n",
       "  'name': 'R449B'},\n",
       " {'fluids': ['R134A', 'R1234ZE'],\n",
       "  'mole_fractions': [0.447322067369848, 0.552677932630152],\n",
       "  'name': 'R450A'},\n",
       " {'fluids': ['R1234YF', 'R134A'],\n",
       "  'mole_fractions': [0.887346670041529, 0.112653329958471],\n",
       "  'name': 'R451A'},\n",
       " {'fluids': ['R1234YF', 'R134A'],\n",
       "  'mole_fractions': [0.876445928959364, 0.123554071040636],\n",
       "  'name': 'R451B'},\n",
       " {'fluids': ['R32', 'R125', 'R1234YF'],\n",
       "  'mole_fractions': [0.218864360337465, 0.508837870465814, 0.272297769196721],\n",
       "  'name': 'R452A'},\n",
       " {'fluids': ['R32', 'R125', 'R134A', 'R227EA', 'BUTANE', 'IPENTANE'],\n",
       "  'mole_fractions': [0.341295928327855,\n",
       "   0.147936968933237,\n",
       "   0.468112901696291,\n",
       "   0.0261066945175942,\n",
       "   0.0091646080754323,\n",
       "   0.00738289844959133],\n",
       "  'name': 'R453A'},\n",
       " {'fluids': ['R32', 'R1234YF'],\n",
       "  'mole_fractions': [0.541359992223361, 0.458640007776639],\n",
       "  'name': 'R454A'},\n",
       " {'fluids': ['R32', 'R1234YF'],\n",
       "  'mole_fractions': [0.829247912869081, 0.170752087130919],\n",
       "  'name': 'R454B'},\n",
       " {'fluids': ['PROPANE', 'DME'],\n",
       "  'mole_fractions': [0.952038489443906, 0.0479615105560936],\n",
       "  'name': 'R511A'},\n",
       " {'fluids': ['R1234YF', 'R134A'],\n",
       "  'mole_fractions': [0.532425755929735, 0.467574244070265],\n",
       "  'name': 'R513A'}]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = json.load(open('predefined_mixtures.json'))\n",
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "50f7229b",
   "metadata": {},
   "outputs": [],
   "source": [
    "with open('propsSI_mixtures.csv', 'w') as csvfile:\n",
    "    csvwriter = csv.writer(csvfile)\n",
    "    \n",
    "    csvwriter.writerow(['propsName', 'menuName', 'idName', 'category', 'basic', 'incompressibleMixture',\n",
    "                        'minConcentration', 'maxConcentration', 'longDescription'])\n",
    "    \n",
    "    for mixture in data:\n",
    "        components = zip(mixture['fluids'], mixture['mole_fractions'])\n",
    "        long_description = \"Mole Fractions - \" + \", \".join([f\"{name}: {frac}\" for name, frac in components])\n",
    "        csvwriter.writerow([f\"{mixture['name']}.mix\", mixture['name'], f\"{mixture['name']}Mixture\", \n",
    "                             \"Predefined Compressible Mixture\", \"FALSE\", \"FALSE\", \"null\", \"null\", long_description])\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3ecd1bfb",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: notebooks/latex_unicode_equivalents.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "d191eaea-3b3a-4dbe-a30f-f7ff2426fcfb",
   "metadata": {},
   "outputs": [],
   "source": [
    "current_symbols = ['alpha', 'beta', 'gamma', 'delta', 'epsilon', 'zeta',\n",
    "                  'eta', 'theta', 'iota', 'kappa', 'lambda', 'mu', 'nu',\n",
    "                  'xi', 'pi', 'rho', 'sigma', 'tau', 'upsilon', 'phi', 'chi',\n",
    "                  'psi', 'omega', 'Gamma', 'Delta', 'Theta', 'Lambda',\n",
    "                  'Xi', 'Pi', 'Sigma', 'Upsilon', 'Phi', 'Psi', 'Omega']\n",
    "\n",
    "current_symbols = [ f'\\\\{symbol}' for symbol in current_symbols]\n",
    "\n",
    "# Extracted from: https://github.com/mgreminger/mathlive/blob/c33f8cc965dfea9c56aabb0e89784cf8bfab8e7f/src/latex-commands/symbols.ts\n",
    "symbols = [\n",
    "  ['\\\\forall', 0x2200],\n",
    "  ['\\\\exists', 0x2203],\n",
    "  ['\\\\nexists', 0x2204, 'mord', 'ams'],\n",
    "  ['\\\\mid', 0x2223, 'mrel'],\n",
    "  ['\\\\top', 0x22a4],\n",
    "  ['\\\\bot', 0x22a5],\n",
    "  ['\\\\#', 0x0023],\n",
    "  ['\\\\&', 0x0026],\n",
    "  ['\\\\parallelogram', 0x25b1],\n",
    "  ['\\\\spadesuit', 0x2660],\n",
    "  ['\\\\heartsuit', 0x2661],\n",
    "  ['\\\\diamondsuit', 0x2662],\n",
    "  ['\\\\clubsuit', 0x2663],\n",
    "  ['\\\\flat', 0x266d],\n",
    "  ['\\\\natural', 0x266e],\n",
    "  ['\\\\sharp', 0x266f],\n",
    "  ['\\\\backslash', 0x005c],\n",
    "  ['\\\\nabla', 0x2207],\n",
    "  ['\\\\partial', 0x2202],\n",
    "  ['\\\\ell', 0x2113],\n",
    "  ['\\\\hbar', 0x210f],\n",
    "  ['\\\\pounds', 0x00a3],\n",
    "  ['\\\\euro', 0x20ac], \n",
    "    ['\\\\rightarrow', 0x2192],\n",
    "    ['\\\\to', 0x2192],\n",
    "    ['\\\\leftarrow', 0x2190],\n",
    "    ['\\\\gets', 0x2190],\n",
    "    ['\\\\Rightarrow', 0x21d2],\n",
    "    ['\\\\Leftarrow', 0x21d0],\n",
    "    ['\\\\longrightarrow', 0x27f6],\n",
    "    ['\\\\longleftarrow', 0x27f5],\n",
    "    ['\\\\Longrightarrow', 0x27f9],\n",
    "    ['\\\\implies', 0x27f9],\n",
    "    ['\\\\Longleftarrow', 0x27f8],\n",
    "    ['\\\\impliedby', 0x27f8],\n",
    "    ['\\\\longleftrightarrow', 0x27f7],\n",
    "    ['\\\\biconditional', 0x27f7],\n",
    "    ['\\\\Longleftrightarrow', 0x27fa],\n",
    "    ['\\\\mapsto', 0x21a6],\n",
    "    ['\\\\longmapsto', 0x27fc],\n",
    "    ['\\\\uparrow', 0x2191],\n",
    "    ['\\\\downarrow', 0x2193],\n",
    "    ['\\\\Uparrow', 0x21d1],\n",
    "    ['\\\\Downarrow', 0x21d3],\n",
    "    ['\\\\updownarrow', 0x2195],\n",
    "    ['\\\\Updownarrow', 0x21d5],\n",
    "    ['\\\\hookrightarrow', 0x21aa],\n",
    "    ['\\\\hookleftarrow', 0x21a9],\n",
    "    ['\\\\rightharpoonup', 0x21c0],\n",
    "    ['\\\\leftharpoonup', 0x21bc],\n",
    "    ['\\\\rightharpoondown', 0x21c1],\n",
    "    ['\\\\leftharpoondown', 0x21bd],\n",
    "    ['\\\\searrow', 0x2198],\n",
    "    ['\\\\nearrow', 0x2197],\n",
    "    ['\\\\swarrow', 0x2199],\n",
    "    ['\\\\nwarrow', 0x2196],\n",
    "    ['\\\\originalof', 0x22b6],\n",
    "    ['\\\\laplace', 0x22b6],\n",
    "    ['\\\\imageof', 0x22b7],\n",
    "    ['\\\\Laplace', 0x22b7],\n",
    "  ['\\\\mapsfrom', 0x21a4, 'mrel'],\n",
    "  ['\\\\Mapsfrom', 0x2906, 'mrel'],\n",
    "  ['\\\\MapsTo', 0x2907, 'mrel'],\n",
    "  ['\\\\Yup', 0x2144, 'mord'],\n",
    "  ['\\\\lightning', 0x21af, 'mrel'],\n",
    "  ['\\\\leftarrowtriangle', 0x21fd, 'mrel'],\n",
    "  ['\\\\rightarrowtriangle', 0x21fe, 'mrel'],\n",
    "  ['\\\\leftrightarrowtriangle', 0x21ff, 'mrel'],\n",
    "  ['\\\\boxdot', 0x22a1, 'mbin'],\n",
    "  ['\\\\bigtriangleup', 0x25b3, 'mbin'],\n",
    "  ['\\\\bigtriangledown', 0x25bd, 'mbin'],\n",
    "  ['\\\\boxbar', 0x25eb, 'mbin'],\n",
    "  ['\\\\Lbag', 0x27c5, 'mopen'],\n",
    "  ['\\\\Rbag', 0x27c6, 'mclose'],\n",
    "  ['\\\\llbracket', 0x27e6, 'mopen'],\n",
    "  ['\\\\rrbracket', 0x27e7, 'mclose'],\n",
    "  ['\\\\longmapsfrom', 0x27fb, 'mrel'],\n",
    "  ['\\\\Longmapsfrom', 0x27fd, 'mrel'],\n",
    "  ['\\\\Longmapsto', 0x27fe, 'mrel'],\n",
    "  ['\\\\boxslash', 0x29c4, 'mbin'],\n",
    "  ['\\\\boxbslash', 0x29c5, 'mbin'],\n",
    "  ['\\\\boxast', 0x29c6, 'mbin'],\n",
    "  ['\\\\boxcircle', 0x29c7, 'mbin'],\n",
    "  ['\\\\boxbox', 0x29c8, 'mbin'],\n",
    "  ['\\\\fatsemi', 0x2a1f, 'mop'],\n",
    "  ['\\\\leftslice', 0x2aa6, 'mrel'],\n",
    "  ['\\\\rightslice', 0x2aa7, 'mrel'],\n",
    "  ['\\\\interleave', 0x2af4, 'mbin'],\n",
    "  ['\\\\biginterleave', 0x2afc, 'mop'],\n",
    "  ['\\\\sslash', 0x2afd, 'mbin'],\n",
    "  ['\\\\talloblong', 0x2afe, 'mbin'],\n",
    "  ['\\\\lbrace', 0x007b, 'mopen'],\n",
    "  ['\\\\rbrace', 0x007d, 'mclose'],\n",
    "  ['\\\\lparen', 0x0028, 'mopen'],\n",
    "  ['\\\\rparen', 0x0029, 'mclose'],\n",
    "  ['\\\\langle', 0x27e8, 'mopen'],\n",
    "  ['\\\\rangle', 0x27e9, 'mclose'],\n",
    "  ['\\\\lfloor', 0x230a, 'mopen'],\n",
    "  ['\\\\rfloor', 0x230b, 'mclose'],\n",
    "  ['\\\\lceil', 0x2308, 'mopen'],\n",
    "  ['\\\\rceil', 0x2309, 'mclose'],\n",
    "  ['\\\\vert', 0x2223],\n",
    "  ['\\\\lvert', 0x2223, 'mopen'],\n",
    "  ['\\\\rvert', 0x2223, 'mclose'],\n",
    "  ['\\\\|', 0x2225],\n",
    "  ['\\\\Vert', 0x2225],\n",
    "  ['\\\\mVert', 0x2225],\n",
    "  ['\\\\lVert', 0x2225, 'mopen'],\n",
    "  ['\\\\rVert', 0x2225, 'mclose'],\n",
    "  ['\\\\lbrack', 0x005b, 'mopen'],\n",
    "  ['\\\\rbrack', 0x005d, 'mclose'],\n",
    "  ['\\\\{', 0x007b, 'mopen'],\n",
    "  ['\\\\}', 0x007d, 'mclose'],\n",
    "  ['(', 0x0028, 'mopen'],\n",
    "  [')', 0x029, 'mclose'],\n",
    "  ['[', 0x005b, 'mopen'],\n",
    "  [']', 0x005d, 'mclose'],\n",
    "  ['\\\\ulcorner', 0x250c, 'mopen', 'ams'],\n",
    "  ['\\\\urcorner', 0x2510, 'mclose', 'ams'],\n",
    "  ['\\\\llcorner', 0x2514, 'mopen', 'ams'],\n",
    "  ['\\\\lrcorner', 0x2518, 'mclose', 'ams'],\n",
    "  ['\\\\lgroup', 0x27ee, 'mopen'],\n",
    "  ['\\\\rgroup', 0x27ef, 'mclose'],\n",
    "  ['\\\\lmoustache', 0x23b0, 'mopen'],\n",
    "  ['\\\\rmoustache', 0x23b1, 'mclose'],\n",
    "    ['\\\\dashrightarrow', 0x21e2],\n",
    "    ['\\\\dashleftarrow', 0x21e0],\n",
    "    ['\\\\Rrightarrow', 0x21db],\n",
    "    ['\\\\Lleftarrow', 0x21da],\n",
    "    ['\\\\leftrightarrows', 0x21c6],\n",
    "    ['\\\\rightleftarrows', 0x21c4],\n",
    "    ['\\\\curvearrowright', 0x21b7],\n",
    "    ['\\\\curvearrowleft', 0x21b6],\n",
    "    ['\\\\rightrightarrows', 0x21c9],\n",
    "    ['\\\\leftleftarrows', 0x21c7],\n",
    "    ['\\\\upuparrows', 0x21c8],\n",
    "    ['\\\\downdownarrows', 0x21ca],\n",
    "    ['\\\\vartriangle', 0x25b3],\n",
    "    ['\\\\triangleq', 0x225c],\n",
    "    ['\\\\vartriangleleft', 0x22b2],\n",
    "    ['\\\\trianglelefteq', 0x22b4],\n",
    "    ['\\\\ntriangleleft', 0x22ea],\n",
    "    ['\\\\ntrianglelefteq', 0x22ec],\n",
    "    ['\\\\vartriangleright', 0x22b3],\n",
    "    ['\\\\trianglerighteq', 0x22b5],\n",
    "    ['\\\\ntriangleright', 0x22eb],\n",
    "    ['\\\\ntrianglerighteq', 0x22ed],\n",
    "    ['\\\\blacktriangleleft', 0x25c0],\n",
    "    ['\\\\blacktriangleright', 0x25b6],\n",
    "    ['\\\\leftarrowtail', 0x21a2],\n",
    "    ['\\\\rightarrowtail', 0x21a3],\n",
    "    ['\\\\looparrowright', 0x21ac],\n",
    "    ['\\\\looparrowleft', 0x21ab],\n",
    "    ['\\\\twoheadleftarrow', 0x219e],\n",
    "    ['\\\\twoheadrightarrow', 0x21a0],\n",
    "    ['\\\\twoheadrightarrowtail', 0x2916],\n",
    "    ['\\\\rightleftharpoons', 0x21cc],\n",
    "    ['\\\\leftrightharpoons', 0x21cb],\n",
    "    ['\\\\Rsh', 0x21b1],\n",
    "    ['\\\\Lsh', 0x21b0],\n",
    "    ['\\\\circlearrowright', 0x21bb],\n",
    "    ['\\\\circlearrowleft', 0x21ba],\n",
    "    ['\\\\restriction', 0x21be],\n",
    "    ['\\\\upharpoonright', 0x21be],\n",
    "    ['\\\\upharpoonleft', 0x21bf],\n",
    "    ['\\\\downharpoonright', 0x21c2],\n",
    "    ['\\\\downharpoonleft', 0x21c3],\n",
    "    ['\\\\rightsquigarrow', 0x21dd],\n",
    "    ['\\\\leadsto', 0x21dd],\n",
    "    ['\\\\leftrightsquigarrow', 0x21ad],\n",
    "    ['\\\\multimap', 0x22b8],\n",
    "    ['\\\\nleftarrow', 0x219a],\n",
    "    ['\\\\nrightarrow', 0x219b],\n",
    "    ['\\\\nRightarrow', 0x21cf],\n",
    "    ['\\\\nLeftarrow', 0x21cd],\n",
    "    ['\\\\nleftrightarrow', 0x21ae],\n",
    "    ['\\\\nLeftrightarrow', 0x21ce],\n",
    "    ['\\\\nvrightarrow', 0x21f8],\n",
    "    ['\\\\nvtwoheadrightarrow', 0x2900],\n",
    "    ['\\\\nvrightarrowtail', 0x2914],\n",
    "    ['\\\\nvtwoheadrightarrowtail', 0x2917],\n",
    "    ['\\\\shortparallel', 0x2225],\n",
    "    ['\\\\nless', 0x226e],\n",
    "    ['\\\\nleqslant', 0xe010],\n",
    "    ['\\\\lneq', 0x2a87],\n",
    "    ['\\\\lneqq', 0x2268],\n",
    "    ['\\\\nleqq', 0xe011],\n",
    "    ['\\\\lvertneqq', 0xe00c],\n",
    "    ['\\\\lnsim', 0x22e6],\n",
    "    ['\\\\lnapprox', 0x2a89],\n",
    "    ['\\\\nprec', 0x2280],\n",
    "    ['\\\\npreceq', 0x22e0],\n",
    "    ['\\\\precnsim', 0x22e8],\n",
    "    ['\\\\precnapprox', 0x2ab9],\n",
    "    ['\\\\nsim', 0x2241],\n",
    "    ['\\\\nshortmid', 0xe006],\n",
    "    ['\\\\nmid', 0x2224],\n",
    "    ['\\\\nvdash', 0x22ac],\n",
    "    ['\\\\nvDash', 0x22ad],\n",
    "    ['\\\\ngtr', 0x226f],\n",
    "    ['\\\\ngeqslant', 0xe00f],\n",
    "    ['\\\\ngeqq', 0xe00e],\n",
    "    ['\\\\gneq', 0x2a88],\n",
    "    ['\\\\gneqq', 0x2269],\n",
    "    ['\\\\gvertneqq', 0xe00d],\n",
    "    ['\\\\gnsim', 0x22e7],\n",
    "    ['\\\\gnapprox', 0x2a8a],\n",
    "    ['\\\\nsucc', 0x2281],\n",
    "    ['\\\\nsucceq', 0x22e1],\n",
    "    ['\\\\succnsim', 0x22e9],\n",
    "    ['\\\\succnapprox', 0x2aba],\n",
    "    ['\\\\ncong', 0x2246],\n",
    "    ['\\\\nshortparallel', 0xe007],\n",
    "    ['\\\\nparallel', 0x2226],\n",
    "    ['\\\\nVDash', 0x22af],\n",
    "    ['\\\\nsupseteqq', 0xe018],\n",
    "    ['\\\\supsetneq', 0x228b],\n",
    "    ['\\\\varsupsetneq', 0xe01b],\n",
    "    ['\\\\supsetneqq', 0x2acc],\n",
    "    ['\\\\varsupsetneqq', 0xe019],\n",
    "    ['\\\\nVdash', 0x22ae],\n",
    "    ['\\\\precneqq', 0x2ab5],\n",
    "    ['\\\\succneqq', 0x2ab6],\n",
    "    ['\\\\nsubseteqq', 0xe016],\n",
    "    ['\\\\leqslant', 0x2a7d],\n",
    "    ['\\\\geqslant', 0x2a7e],\n",
    "    ['\\\\gtrsim', 0x2273],\n",
    "    ['\\\\approxeq', 0x224a],\n",
    "    ['\\\\thickapprox', 0x2248],\n",
    "    ['\\\\lessapprox', 0x2a85],\n",
    "    ['\\\\gtrapprox', 0x2a86],\n",
    "    ['\\\\precapprox', 0x2ab7],\n",
    "    ['\\\\succapprox', 0x2ab8],\n",
    "    ['\\\\thicksim', 0x223c],\n",
    "    ['\\\\succsim', 0x227f],\n",
    "    ['\\\\precsim', 0x227e],\n",
    "    ['\\\\backsim', 0x223d],\n",
    "    ['\\\\eqsim', 0x2242],\n",
    "    ['\\\\backsimeq', 0x22cd],\n",
    "    ['\\\\lesssim', 0x2272],\n",
    "    ['\\\\nleq', 0x2270],\n",
    "    ['\\\\ngeq', 0x2271],\n",
    "    ['\\\\smallsmile', 0x2323],\n",
    "    ['\\\\smallfrown', 0x2322],\n",
    "    ['\\\\leqq', 0x2266],\n",
    "    ['\\\\eqslantless', 0x2a95],\n",
    "    ['\\\\lll', 0x22d8],\n",
    "    ['\\\\lessgtr', 0x2276],\n",
    "    ['\\\\lesseqgtr', 0x22da],\n",
    "    ['\\\\lesseqqgtr', 0x2a8b],\n",
    "    ['\\\\risingdotseq', 0x2253],\n",
    "    ['\\\\fallingdotseq', 0x2252],\n",
    "    ['\\\\subseteqq', 0x2ac5],\n",
    "    ['\\\\Subset', 0x22d0],\n",
    "    ['\\\\sqsubset', 0x228f],\n",
    "    ['\\\\preccurlyeq', 0x227c],\n",
    "    ['\\\\curlyeqprec', 0x22de],\n",
    "    ['\\\\vDash', 0x22a8],\n",
    "    ['\\\\Vvdash', 0x22aa],\n",
    "    ['\\\\bumpeq', 0x224f],\n",
    "    ['\\\\Bumpeq', 0x224e],\n",
    "    ['\\\\geqq', 0x2267],\n",
    "    ['\\\\eqslantgtr', 0x2a96],\n",
    "    ['\\\\ggg', 0x22d9],\n",
    "    ['\\\\gtrless', 0x2277],\n",
    "    ['\\\\gtreqless', 0x22db],\n",
    "    ['\\\\gtreqqless', 0x2a8c],\n",
    "    ['\\\\supseteqq', 0x2ac6],\n",
    "    ['\\\\Supset', 0x22d1],\n",
    "    ['\\\\sqsupset', 0x2290],\n",
    "    ['\\\\succcurlyeq', 0x227d],\n",
    "    ['\\\\curlyeqsucc', 0x22df],\n",
    "    ['\\\\Vdash', 0x22a9],\n",
    "    ['\\\\shortmid', 0x2223],\n",
    "    ['\\\\between', 0x226c],\n",
    "    ['\\\\pitchfork', 0x22d4],\n",
    "    ['\\\\varpropto', 0x221d],\n",
    "    ['\\\\backepsilon', 0x220d],\n",
    "    ['\\\\llless', 0x22d8],\n",
    "    ['\\\\gggtr', 0x22d9],\n",
    "    ['\\\\doteqdot', 0x2251],\n",
    "    ['\\\\Doteq', 0x2251],\n",
    "    ['\\\\eqcirc', 0x2256],\n",
    "    ['\\\\circeq', 0x2257],\n",
    "    ['\\\\therefore', 0x2234],\n",
    "    ['\\\\because', 0x2235],\n",
    "    ['+', 0x002b],\n",
    "    ['-', 0x2212],\n",
    "    ['\\u2212', 0x2212],\n",
    "    ['\\\\pm', 0x00b1],\n",
    "    ['\\\\mp', 0x2213],\n",
    "    ['*', 0x2217],\n",
    "    ['\\\\times', 0x00d7],\n",
    "    ['\\\\div', 0x00f7],\n",
    "    ['\\\\divides', 0x2223],\n",
    "    ['\\\\cdot', 0x22c5],\n",
    "    ['\\\\cap', 0x2229],\n",
    "    ['\\\\cup', 0x222a],\n",
    "    ['\\\\setminus', 0x2216],\n",
    "    ['\\\\land', 0x2227],\n",
    "    ['\\\\wedge', 0x2227],\n",
    "    ['\\\\lor', 0x2228],\n",
    "    ['\\\\vee', 0x2228],\n",
    "    ['\\\\circ', 0x2218],\n",
    "    ['\\\\bigcirc', 0x25ef],\n",
    "    ['\\\\bullet', 0x2219],\n",
    "    ['\\\\oplus', 0x2295],\n",
    "    ['\\\\ominus', 0x2296],\n",
    "    ['\\\\otimes', 0x2297],\n",
    "    ['\\\\odot', 0x2299],\n",
    "    ['\\\\oslash', 0x2298],\n",
    "    ['\\\\bigtriangleup', 0x25b3],\n",
    "    ['\\\\bigtriangledown', 0x25bd],\n",
    "    ['\\\\triangleleft', 0x25c3],\n",
    "    ['\\\\triangleright', 0x25b9],\n",
    "    ['\\\\And', 0x0026],\n",
    "    ['\\\\dagger', 0x2020],\n",
    "    ['\\\\dag', 0x2020],\n",
    "    ['\\\\ddag', 0x2021],\n",
    "    ['\\\\ddagger', 0x2021],\n",
    "    ['\\\\ast', 0x2217],\n",
    "    ['\\\\star', 0x22c6],\n",
    "    ['\\\\bigstar', 0x2605],\n",
    "    ['\\\\diamond', 0x22c4],\n",
    "    ['\\\\lhd', 0x22b2],\n",
    "    ['\\\\rhd', 0x22b3],\n",
    "    ['\\\\lessdot', 0x22d6],\n",
    "    ['\\\\gtrdot', 0x22d7],\n",
    "    ['\\\\ltimes', 0x22c9],\n",
    "    ['\\\\rtimes', 0x22ca],\n",
    "    ['\\\\leftthreetimes', 0x22cb],\n",
    "    ['\\\\rightthreetimes', 0x22cc],\n",
    "    ['\\\\intercal', 0x22ba],\n",
    "    ['\\\\dotplus', 0x2214],\n",
    "    ['\\\\doublebarwedge', 0x2a5e],\n",
    "    ['\\\\divideontimes', 0x22c7],\n",
    "    ['\\\\centerdot', 0x22c5],\n",
    "    ['\\\\smallsetminus', 0x2216],\n",
    "    ['\\\\barwedge', 0x22bc],\n",
    "    ['\\\\veebar', 0x22bb],\n",
    "    ['\\\\nor', 0x22bb],\n",
    "    ['\\\\curlywedge', 0x22cf],\n",
    "    ['\\\\curlyvee', 0x22ce],\n",
    "    ['\\\\boxminus', 0x229f],\n",
    "    ['\\\\boxplus', 0x229e],\n",
    "    ['\\\\boxtimes', 0x22a0],\n",
    "    ['\\\\boxdot', 0x22a1],\n",
    "    ['\\\\circleddash', 0x229d],\n",
    "    ['\\\\circledast', 0x229b],\n",
    "    ['\\\\circledcirc', 0x229a],\n",
    "    ['\\\\unlhd', 0x22b4],\n",
    "    ['\\\\unrhd', 0x22b5],\n",
    "  ['\\\\surd', 0x221a],\n",
    "  ['\\\\S', 0x00a7],\n",
    "  ['\\\\infty', 0x221e],\n",
    "  ['\\\\prime', 0x2032],\n",
    "  ['\\\\doubleprime', 0x2033],\n",
    "  ['\\\\angle', 0x2220],\n",
    "  ['`', 0x2018],\n",
    "  ['\\\\$', 0x0024],\n",
    "  ['\\\\%', 0x0025],\n",
    "#  ['\\\\_', 0x005f],\n",
    "  ['\\\\alpha', 0x03b1],\n",
    "  ['\\\\beta', 0x03b2],\n",
    "  ['\\\\gamma', 0x03b3],\n",
    "  ['\\\\delta', 0x03b4],\n",
    "  ['\\\\epsilon', 0x03f5],\n",
    "  ['\\\\varepsilon', 0x03b5],\n",
    "  ['\\\\zeta', 0x03b6],\n",
    "  ['\\\\eta', 0x03b7],\n",
    "  ['\\\\theta', 0x03b8],\n",
    "  ['\\\\vartheta', 0x03d1],\n",
    "  ['\\\\iota', 0x03b9],\n",
    "  ['\\\\kappa', 0x03ba],\n",
    "  ['\\\\varkappa', 0x03f0, 'mord', 'ams'],\n",
    "  ['\\\\lambda', 0x03bb],\n",
    "  ['\\\\mu', 0x03bc],\n",
    "  ['\\\\nu', 0x03bd],\n",
    "  ['\\\\xi', 0x03be],\n",
    "  ['\\\\omicron', 0x006f],\n",
    "  ['\\\\pi', 0x03c0],\n",
    "  ['\\\\varpi', 0x03d6],\n",
    "  ['\\\\rho', 0x03c1],\n",
    "  ['\\\\varrho', 0x03f1],\n",
    "  ['\\\\sigma', 0x03c3],\n",
    "  ['\\\\varsigma', 0x03c2],\n",
    "  ['\\\\tau', 0x03c4],\n",
    "  ['\\\\phi', 0x03d5],\n",
    "  ['\\\\varphi', 0x03c6],\n",
    "  ['\\\\upsilon', 0x03c5],\n",
    "  ['\\\\chi', 0x03c7],\n",
    "  ['\\\\psi', 0x03c8],\n",
    "  ['\\\\omega', 0x03c9],\n",
    "  ['\\\\Gamma', 0x0393],\n",
    "  ['\\\\Delta', 0x0394],\n",
    "  ['\\\\Theta', 0x0398],\n",
    "  ['\\\\Lambda', 0x039b],\n",
    "  ['\\\\Xi', 0x039e],\n",
    "  ['\\\\Pi', 0x03a0],\n",
    "  ['\\\\Sigma', 0x03a3],\n",
    "  ['\\\\Upsilon', 0x03a5],\n",
    "  ['\\\\Phi', 0x03a6],\n",
    "  ['\\\\Psi', 0x03a8],\n",
    "  ['\\\\Omega', 0x03a9],\n",
    "  ['\\\\digamma', 0x03dd, 'mord', 'ams'],\n",
    "  ['\\\\varkappa', 0x03f0, 'mord', 'ams'],\n",
    "  ['\\\\coppa', 0x03d9, 'mord', 'ams'],\n",
    "  ['\\\\koppa', 0x03d9, 'mord', 'ams'],\n",
    "  ['\\\\Coppa', 0x03d8, 'mord', 'ams'],\n",
    "  ['\\\\Koppa', 0x03d8, 'mord', 'ams'],\n",
    "  ['\\\\sampi', 0x03e1, 'mord', 'ams'],\n",
    "  ['\\\\Sampi', 0x03e0, 'mord', 'ams'],\n",
    "  ['\\\\emptyset', 0x2205],\n",
    "    ['=', 0x003d],\n",
    "    ['<', 0x003c],\n",
    "    ['\\\\lt', 0x003c],\n",
    "    ['>', 0x003e],\n",
    "    ['\\\\gt', 0x003e],\n",
    "    ['\\\\le', 0x2264],\n",
    "    ['\\\\leq', 0x2264],\n",
    "    ['\\\\ge', 0x2265],\n",
    "    ['\\\\geq', 0x2265],\n",
    "    ['\\\\ll', 0x226a],\n",
    "    ['\\\\gg', 0x226b],\n",
    "    ['\\\\coloneq', 0x2254],\n",
    "    ['\\\\coloneqq', 0x2254],\n",
    "    ['\\\\colonequals', 0x2254],\n",
    "    ['\\\\measeq', 0x225d],\n",
    "    ['\\\\eqdef', 0x225e],\n",
    "    ['\\\\questeq', 0x225f],\n",
    "    [':', 0x003a],\n",
    "    ['\\\\cong', 0x2245],\n",
    "    ['\\\\equiv', 0x2261],\n",
    "    ['\\\\prec', 0x227a],\n",
    "    ['\\\\preceq', 0x2aaf],\n",
    "    ['\\\\succ', 0x227b],\n",
    "    ['\\\\succeq', 0x2ab0],\n",
    "    ['\\\\perp', 0x27c2],\n",
    "    ['\\\\propto', 0x221d],\n",
    "    ['\\\\Colon', 0x2237],\n",
    "    ['\\\\smile', 0x2323],\n",
    "    ['\\\\frown', 0x2322],\n",
    "    ['\\\\sim', 0x223c],\n",
    "    ['\\\\doteq', 0x2250],\n",
    "    ['\\\\bowtie', 0x22c8],\n",
    "    ['\\\\Join', 0x22c8],\n",
    "    ['\\\\asymp', 0x224d],\n",
    "    ['\\\\sqsubseteq', 0x2291],\n",
    "    ['\\\\sqsupseteq', 0x2292],\n",
    "    ['\\\\approx', 0x2248],\n",
    "    ['\\\\~', 0x007e],\n",
    "    ['\\\\leftrightarrow', 0x2194],\n",
    "    ['\\\\Leftrightarrow', 0x21d4],\n",
    "    ['\\\\models', 0x22a8],\n",
    "    ['\\\\vdash', 0x22a2],\n",
    "    ['\\\\dashv', 0x22a3],\n",
    "    ['\\\\roundimplies', 0x2970],\n",
    "    ['\\\\in', 0x2208],\n",
    "    ['\\\\notin', 0x2209],\n",
    "    ['\\\\ni', 0x220b],\n",
    "    ['\\\\owns', 0x220b],\n",
    "    ['\\\\subset', 0x2282],\n",
    "    ['\\\\supset', 0x2283],\n",
    "    ['\\\\subseteq', 0x2286],\n",
    "    ['\\\\supseteq', 0x2287],\n",
    "    ['\\\\differencedelta', 0x2206],\n",
    "    ['\\\\mvert', 0x2223],\n",
    "    ['\\\\parallel', 0x2225],\n",
    "    ['\\\\simeq', 0x2243],\n",
    "    ['\\\\lnot', 0x00ac],\n",
    "    ['\\\\neg', 0x00ac],\n",
    "    ['\\\\triangle', 0x25b3],\n",
    "    ['\\\\subsetneq', 0x228a],\n",
    "    ['\\\\varsubsetneq', 0xe01a],\n",
    "    ['\\\\subsetneqq', 0x2acb],\n",
    "    ['\\\\varsubsetneqq', 0xe017],\n",
    "    ['\\\\nsubset', 0x2284],\n",
    "    ['\\\\nsupset', 0x2285],\n",
    "    ['\\\\nsubseteq', 0x2288],\n",
    "    ['\\\\nsupseteq', 0x2289],\n",
    "  ['\\\\wp', 0x2118],\n",
    "  ['\\\\aleph', 0x2135],\n",
    "    ['\\\\blacktriangle', 0x25b2],\n",
    "    ['\\\\hslash', 0x210f],\n",
    "    ['\\\\Finv', 0x2132],\n",
    "    ['\\\\Game', 0x2141],\n",
    "    ['\\\\eth', 0x00f0],\n",
    "    ['\\\\mho', 0x2127],\n",
    "    ['\\\\Bbbk', 0x006b],\n",
    "    ['\\\\yen', 0x00a5],\n",
    "    ['\\\\square', 0x25a1],\n",
    "    ['\\\\Box', 0x25a1],\n",
    "    ['\\\\blacksquare', 0x25a0],\n",
    "    ['\\\\circledS', 0x24c8],\n",
    "    ['\\\\circledR', 0x00ae],\n",
    "    ['\\\\triangledown', 0x25bd],\n",
    "    ['\\\\blacktriangledown', 0x25bc],\n",
    "    ['\\\\checkmark', 0x2713],\n",
    "    ['\\\\diagup', 0x2571],\n",
    "    ['\\\\measuredangle', 0x2221],\n",
    "    ['\\\\sphericalangle', 0x2222],\n",
    "    ['\\\\backprime', 0x2035],\n",
    "    ['\\\\backdoubleprime', 0x2036],\n",
    "    ['\\\\Diamond', 0x25ca],\n",
    "    ['\\\\lozenge', 0x25ca],\n",
    "    ['\\\\blacklozenge', 0x29eb],\n",
    "    ['\\\\varnothing', 0x2205],\n",
    "    ['\\\\complement', 0x2201],\n",
    "    ['\\\\maltese', 0x2720],\n",
    "    ['\\\\beth', 0x2136],\n",
    "    ['\\\\daleth', 0x2138],\n",
    "    ['\\\\gimel', 0x2137],\n",
    "    ['\\\\ ', 0x00a0],\n",
    "    ['~', 0x00a0],\n",
    "    ['\\\\colon', 0x003a],\n",
    "    ['\\\\cdotp', 0x22c5],\n",
    "    ['\\\\vdots', 0x22ee, 'mord'],\n",
    "    ['\\\\ldotp', 0x002e],\n",
    "    [',', 0x002c],\n",
    "    [';', 0x003b],\n",
    "    ['\\\\cdots', 0x22ef],\n",
    "    ['\\\\ddots', 0x22f1],\n",
    "    ['\\\\ldots', 0x2026],\n",
    "    ['\\\\mathellipsis', 0x2026],\n",
    "  ['\\\\/', 0x002f],\n",
    "  ['|', 0x2223, 'mord'],\n",
    "  ['\\\\imath', 0x0131],\n",
    "  ['\\\\jmath', 0x0237],\n",
    "  ['\\\\degree', 0x00b0],\n",
    "  [\"'\", 0x2032],\n",
    "  ['\"', 0x201d],]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "5b7b0a52-c870-4735-be92-4103e9231f8b",
   "metadata": {},
   "outputs": [],
   "source": [
    "def test_chr(hex_chr):\n",
    "    try:\n",
    "        exec(f\"a{chr(hex_chr)}=1\")\n",
    "    except Exception as e:\n",
    "        return False\n",
    "    return True\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "83037db7-17bf-4504-8b43-775787efd549",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_chr(0x03b1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "e43a1958-44e0-49ca-b1f2-7d2a5f2a15e2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_chr(0x2032)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "33ae9d7e-6cbf-4c1e-a84e-58fb1c8df144",
   "metadata": {},
   "outputs": [],
   "source": [
    "valid_symbols = []\n",
    "\n",
    "for entry in symbols:\n",
    "    if test_chr(entry[1]):\n",
    "        valid_symbols.append((entry[0], chr(entry[1])))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "5097d429-bec5-4e39-88e8-52d4e7ae0ecb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('\\\\ell', 'ℓ'),\n",
       " ('\\\\hbar', 'ℏ'),\n",
       " ('\\\\alpha', 'α'),\n",
       " ('\\\\beta', 'β'),\n",
       " ('\\\\gamma', 'γ'),\n",
       " ('\\\\delta', 'δ'),\n",
       " ('\\\\epsilon', 'ϵ'),\n",
       " ('\\\\varepsilon', 'ε'),\n",
       " ('\\\\zeta', 'ζ'),\n",
       " ('\\\\eta', 'η'),\n",
       " ('\\\\theta', 'θ'),\n",
       " ('\\\\vartheta', 'ϑ'),\n",
       " ('\\\\iota', 'ι'),\n",
       " ('\\\\kappa', 'κ'),\n",
       " ('\\\\varkappa', 'ϰ'),\n",
       " ('\\\\lambda', 'λ'),\n",
       " ('\\\\mu', 'μ'),\n",
       " ('\\\\nu', 'ν'),\n",
       " ('\\\\xi', 'ξ'),\n",
       " ('\\\\omicron', 'o'),\n",
       " ('\\\\pi', 'π'),\n",
       " ('\\\\varpi', 'ϖ'),\n",
       " ('\\\\rho', 'ρ'),\n",
       " ('\\\\varrho', 'ϱ'),\n",
       " ('\\\\sigma', 'σ'),\n",
       " ('\\\\varsigma', 'ς'),\n",
       " ('\\\\tau', 'τ'),\n",
       " ('\\\\phi', 'ϕ'),\n",
       " ('\\\\varphi', 'φ'),\n",
       " ('\\\\upsilon', 'υ'),\n",
       " ('\\\\chi', 'χ'),\n",
       " ('\\\\psi', 'ψ'),\n",
       " ('\\\\omega', 'ω'),\n",
       " ('\\\\Gamma', 'Γ'),\n",
       " ('\\\\Delta', 'Δ'),\n",
       " ('\\\\Theta', 'Θ'),\n",
       " ('\\\\Lambda', 'Λ'),\n",
       " ('\\\\Xi', 'Ξ'),\n",
       " ('\\\\Pi', 'Π'),\n",
       " ('\\\\Sigma', 'Σ'),\n",
       " ('\\\\Upsilon', 'Υ'),\n",
       " ('\\\\Phi', 'Φ'),\n",
       " ('\\\\Psi', 'Ψ'),\n",
       " ('\\\\Omega', 'Ω'),\n",
       " ('\\\\digamma', 'ϝ'),\n",
       " ('\\\\varkappa', 'ϰ'),\n",
       " ('\\\\coppa', 'ϙ'),\n",
       " ('\\\\koppa', 'ϙ'),\n",
       " ('\\\\Coppa', 'Ϙ'),\n",
       " ('\\\\Koppa', 'Ϙ'),\n",
       " ('\\\\sampi', 'ϡ'),\n",
       " ('\\\\Sampi', 'Ϡ'),\n",
       " ('\\\\wp', '℘'),\n",
       " ('\\\\aleph', 'ℵ'),\n",
       " ('\\\\hslash', 'ℏ'),\n",
       " ('\\\\Finv', 'Ⅎ'),\n",
       " ('\\\\eth', 'ð'),\n",
       " ('\\\\Bbbk', 'k'),\n",
       " ('\\\\beth', 'ℶ'),\n",
       " ('\\\\daleth', 'ℸ'),\n",
       " ('\\\\gimel', 'ℷ'),\n",
       " ('\\\\imath', 'ı'),\n",
       " ('\\\\jmath', 'ȷ')]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "valid_symbols"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "8eb3920a-55b4-41c0-8419-997afcd8a5b4",
   "metadata": {},
   "outputs": [],
   "source": [
    "current_symbols_set = set(current_symbols)\n",
    "new_symbols_set = set(( entry[0] for entry in valid_symbols ))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "1b256545-3413-4132-b336-e8b1c1e4593b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "set()"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "current_symbols_set - new_symbols_set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "1e24b867-5915-43ef-a7fc-4cef4cd4e465",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'\\\\Bbbk',\n",
       " '\\\\Coppa',\n",
       " '\\\\Finv',\n",
       " '\\\\Koppa',\n",
       " '\\\\Sampi',\n",
       " '\\\\aleph',\n",
       " '\\\\beth',\n",
       " '\\\\coppa',\n",
       " '\\\\daleth',\n",
       " '\\\\digamma',\n",
       " '\\\\ell',\n",
       " '\\\\eth',\n",
       " '\\\\gimel',\n",
       " '\\\\hbar',\n",
       " '\\\\hslash',\n",
       " '\\\\imath',\n",
       " '\\\\jmath',\n",
       " '\\\\koppa',\n",
       " '\\\\omicron',\n",
       " '\\\\sampi',\n",
       " '\\\\varepsilon',\n",
       " '\\\\varkappa',\n",
       " '\\\\varphi',\n",
       " '\\\\varpi',\n",
       " '\\\\varrho',\n",
       " '\\\\varsigma',\n",
       " '\\\\vartheta',\n",
       " '\\\\wp'}"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_symbols_set - current_symbols_set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "c967aa63-dc84-4e27-af82-212e5eef8c88",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "export const LATEX_TO_UNICODE = new Map([\n",
      "  [\"\\\\ell\", \"ℓ\"],\n",
      "  [\"\\\\hbar\", \"ℏ\"],\n",
      "  [\"\\\\alpha\", \"α\"],\n",
      "  [\"\\\\beta\", \"β\"],\n",
      "  [\"\\\\gamma\", \"γ\"],\n",
      "  [\"\\\\delta\", \"δ\"],\n",
      "  [\"\\\\epsilon\", \"ϵ\"],\n",
      "  [\"\\\\varepsilon\", \"ε\"],\n",
      "  [\"\\\\zeta\", \"ζ\"],\n",
      "  [\"\\\\eta\", \"η\"],\n",
      "  [\"\\\\theta\", \"θ\"],\n",
      "  [\"\\\\vartheta\", \"ϑ\"],\n",
      "  [\"\\\\iota\", \"ι\"],\n",
      "  [\"\\\\kappa\", \"κ\"],\n",
      "  [\"\\\\varkappa\", \"ϰ\"],\n",
      "  [\"\\\\lambda\", \"λ\"],\n",
      "  [\"\\\\mu\", \"μ\"],\n",
      "  [\"\\\\nu\", \"ν\"],\n",
      "  [\"\\\\xi\", \"ξ\"],\n",
      "  [\"\\\\omicron\", \"o\"],\n",
      "  [\"\\\\pi\", \"π\"],\n",
      "  [\"\\\\varpi\", \"ϖ\"],\n",
      "  [\"\\\\rho\", \"ρ\"],\n",
      "  [\"\\\\varrho\", \"ϱ\"],\n",
      "  [\"\\\\sigma\", \"σ\"],\n",
      "  [\"\\\\varsigma\", \"ς\"],\n",
      "  [\"\\\\tau\", \"τ\"],\n",
      "  [\"\\\\phi\", \"ϕ\"],\n",
      "  [\"\\\\varphi\", \"φ\"],\n",
      "  [\"\\\\upsilon\", \"υ\"],\n",
      "  [\"\\\\chi\", \"χ\"],\n",
      "  [\"\\\\psi\", \"ψ\"],\n",
      "  [\"\\\\omega\", \"ω\"],\n",
      "  [\"\\\\Gamma\", \"Γ\"],\n",
      "  [\"\\\\Delta\", \"Δ\"],\n",
      "  [\"\\\\Theta\", \"Θ\"],\n",
      "  [\"\\\\Lambda\", \"Λ\"],\n",
      "  [\"\\\\Xi\", \"Ξ\"],\n",
      "  [\"\\\\Pi\", \"Π\"],\n",
      "  [\"\\\\Sigma\", \"Σ\"],\n",
      "  [\"\\\\Upsilon\", \"Υ\"],\n",
      "  [\"\\\\Phi\", \"Φ\"],\n",
      "  [\"\\\\Psi\", \"Ψ\"],\n",
      "  [\"\\\\Omega\", \"Ω\"],\n",
      "  [\"\\\\digamma\", \"ϝ\"],\n",
      "  [\"\\\\varkappa\", \"ϰ\"],\n",
      "  [\"\\\\coppa\", \"ϙ\"],\n",
      "  [\"\\\\koppa\", \"ϙ\"],\n",
      "  [\"\\\\Coppa\", \"Ϙ\"],\n",
      "  [\"\\\\Koppa\", \"Ϙ\"],\n",
      "  [\"\\\\sampi\", \"ϡ\"],\n",
      "  [\"\\\\Sampi\", \"Ϡ\"],\n",
      "  [\"\\\\wp\", \"℘\"],\n",
      "  [\"\\\\aleph\", \"ℵ\"],\n",
      "  [\"\\\\hslash\", \"ℏ\"],\n",
      "  [\"\\\\Finv\", \"Ⅎ\"],\n",
      "  [\"\\\\eth\", \"ð\"],\n",
      "  [\"\\\\Bbbk\", \"k\"],\n",
      "  [\"\\\\beth\", \"ℶ\"],\n",
      "  [\"\\\\daleth\", \"ℸ\"],\n",
      "  [\"\\\\gimel\", \"ℷ\"],\n",
      "  [\"\\\\imath\", \"ı\"],\n",
      "  [\"\\\\jmath\", \"ȷ\"]\n",
      "]);\n",
      "\n"
     ]
    }
   ],
   "source": [
    "js_code = f\"\"\"export const LATEX_TO_UNICODE = new Map([\n",
    "{',\\n'.join([f'  [\"\\\\{value[0]}\", \"{value[1]}\"]' for value in valid_symbols])}\n",
    "]);\n",
    "\"\"\"\n",
    "\n",
    "print(js_code)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a76ca2d2-0c08-4212-98b8-7663e6cf67f2",
   "metadata": {},
   "source": [
    "\n",
    "```\n",
    "GREEK_CHAR: '\\\\' ('alpha' | 'beta' | 'gamma' | 'delta' | 'epsilon' | 'zeta' |\n",
    "                  'eta' | 'theta' | 'iota' | 'kappa' | 'lambda' | 'mu' | 'nu' |\n",
    "                  'xi' | 'pi' | 'rho' | 'sigma' | 'tau' | 'upsilon' | 'phi' | 'chi' |\n",
    "                  'psi' | 'omega' | 'Gamma' | 'Delta' | 'Theta' | 'Lambda' |\n",
    "                  'Xi' | 'Pi' | 'Sigma' | 'Upsilon' | 'Phi' | 'Psi' | 'Omega');\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "cca21f1b-a163-4e09-b8da-0230199d0ef1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "LATEX_SYMBOLS: '\\\\' ('ell' | 'hbar' | 'alpha' | 'beta' | 'gamma' | 'delta' | 'epsilon' | 'varepsilon' | 'zeta' | 'eta' | 'theta' | 'vartheta' | 'iota' | 'kappa' | 'varkappa' | 'lambda' | 'mu' | 'nu' | 'xi' | 'omicron' | 'pi' | 'varpi' | 'rho' | 'varrho' | 'sigma' | 'varsigma' | 'tau' | 'phi' | 'varphi' | 'upsilon' | 'chi' | 'psi' | 'omega' | 'Gamma' | 'Delta' | 'Theta' | 'Lambda' | 'Xi' | 'Pi' | 'Sigma' | 'Upsilon' | 'Phi' | 'Psi' | 'Omega' | 'digamma' | 'varkappa' | 'coppa' | 'koppa' | 'Coppa' | 'Koppa' | 'sampi' | 'Sampi' | 'wp' | 'aleph' | 'hslash' | 'Finv' | 'eth' | 'Bbbk' | 'beth' | 'daleth' | 'gimel' | 'imath' | 'jmath' );\n"
     ]
    }
   ],
   "source": [
    "lexer_rule = f\"\"\"LATEX_SYMBOLS: '\\\\\\\\' ({\" | \".join([f\"'{value[0][1:]}'\" for value in valid_symbols])} );\"\"\"\n",
    "\n",
    "print(lexer_rule)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: notebooks/predefined_mixtures.json
================================================
[
  {
    "fluids": [
      "NITROGEN", 
      "ARGON", 
      "OXYGEN"
    ], 
    "mole_fractions": [
      0.7812, 
      0.0092, 
      0.2096
    ], 
    "name": "Air"
  }, 
  {
    "fluids": [
      "METHANE", 
      "NITROGEN", 
      "CO2", 
      "ETHANE", 
      "PROPANE", 
      "ISOBUTAN", 
      "BUTANE", 
      "IPENTANE", 
      "PENTANE", 
      "HEXANE"
    ], 
    "mole_fractions": [
      0.906724, 
      0.031284, 
      0.004676, 
      0.045279, 
      0.00828, 
      0.001037, 
      0.001563, 
      0.000321, 
      0.000443, 
      0.000393
    ], 
    "name": "Amarillo"
  }, 
  {
    "fluids": [
      "METHANE", 
      "NITROGEN", 
      "CO2", 
      "ETHANE", 
      "PROPANE", 
      "ISOBUTAN", 
      "BUTANE", 
      "IPENTANE", 
      "PENTANE"
    ], 
    "mole_fractions": [
      0.859063, 
      0.010068, 
      0.014954, 
      0.084919, 
      0.023015, 
      0.003486, 
      0.003506, 
      0.000509, 
      0.00048
    ], 
    "name": "Ekofisk"
  }, 
  {
    "fluids": [
      "METHANE", 
      "NITROGEN", 
      "CO2", 
      "ETHANE", 
      "PROPANE", 
      "ISOBUTAN", 
      "BUTANE", 
      "IPENTANE", 
      "PENTANE", 
      "HEXANE"
    ], 
    "mole_fractions": [
      0.965222, 
      0.002595, 
      0.005956, 
      0.018186, 
      0.004596, 
      0.000977, 
      0.001007, 
      0.000473, 
      0.000324, 
      0.000664
    ], 
    "name": "GulfCoast"
  }, 
  {
    "fluids": [
      "METHANE", 
      "NITROGEN", 
      "CO2", 
      "ETHANE", 
      "PROPANE", 
      "ISOBUTAN", 
      "BUTANE"
    ], 
    "mole_fractions": [
      0.81212, 
      0.05702, 
      0.07585, 
      0.04303, 
      0.00895, 
      0.00151, 
      0.00152
    ], 
    "name": "HighCO2"
  }, 
  {
    "fluids": [
      "METHANE", 
      "NITROGEN", 
      "CO2", 
      "ETHANE", 
      "PROPANE", 
      "ISOBUTAN", 
      "BUTANE"
    ], 
    "mole_fractions": [
      0.81441, 
      0.13465, 
      0.00985, 
      0.033, 
      0.00605, 
      0.001, 
      0.00104
    ], 
    "name": "HighN2"
  }, 
  {
    "fluids": [
      "METHANE", 
      "NITROGEN", 
      "CO2", 
      "ETHANE", 
      "PROPANE", 
      "ISOBUTAN", 
      "BUTANE", 
      "IPENTANE", 
      "PENTANE", 
      "HEXANE"
    ], 
    "mole_fractions": [
      0.95123, 
      0.00089, 
      0.02555, 
      0.01835, 
      0.00238, 
      0.0004, 
      0.00016, 
      0.00014, 
      0.00011, 
      0.00079
    ], 
    "name": "NaturalGasSample"
  }, 
  {
    "fluids": [
      "R22", 
      "R152A", 
      "R124"
    ], 
    "mole_fractions": [
      0.578854210704231, 
      0.185871453986601, 
      0.235274335309169
    ], 
    "name": "R401A"
  }, 
  {
    "fluids": [
      "R22", 
      "R152A", 
      "R124"
    ], 
    "mole_fractions": [
      0.654924685341436, 
      0.154607382276918, 
      0.190467932381646
    ], 
    "name": "R401B"
  }, 
  {
    "fluids": [
      "R22", 
      "R152A", 
      "R124"
    ], 
    "mole_fractions": [
      0.385591186504412, 
      0.229445970225924, 
      0.384962843269664
    ], 
    "name": "R401C"
  }, 
  {
    "fluids": [
      "R125", 
      "PROPANE", 
      "R22"
    ], 
    "mole_fractions": [
      0.507659889396724, 
      0.0460590346231213, 
      0.446281075980154
    ], 
    "name": "R402A"
  }, 
  {
    "fluids": [
      "R125", 
      "PROPANE", 
      "R22"
    ], 
    "mole_fractions": [
      0.299858744498276, 
      0.0429562491180057, 
      0.657185006383719
    ], 
    "name": "R402B"
  }, 
  {
    "fluids": [
      "PROPANE", 
      "R22", 
      "R218"
    ], 
    "mole_fractions": [
      0.104301635230068, 
      0.797852142841926, 
      0.0978462219280052
    ], 
    "name": "R403A"
  }, 
  {
    "fluids": [
      "PROPANE", 
      "R22", 
      "R218"
    ], 
    "mole_fractions": [
      0.117083478399255, 
      0.668734422027154, 
      0.214182099573591
    ], 
    "name": "R403B"
  }, 
  {
    "fluids": [
      "R125", 
      "R134A", 
      "R143A"
    ], 
    "mole_fractions": [
      0.357816784026318, 
      0.0382639950410712, 
      0.603919220932611
    ], 
    "name": "R404A"
  }, 
  {
    "fluids": [
      "R22", 
      "R152A", 
      "R142B", 
      "RC318"
    ], 
    "mole_fractions": [
      0.582397185883849, 
      0.118598940913682, 
      0.0612463586573, 
      0.237757514545169
    ], 
    "name": "R405A"
  }, 
  {
    "fluids": [
      "R22", 
      "ISOBUTAN", 
      "R142B"
    ], 
    "mole_fractions": [
      0.571559096367276, 
      0.0618403319459979, 
      0.366600571686726
    ], 
    "name": "R406A"
  }, 
  {
    "fluids": [
      "R32", 
      "R125", 
      "R134A"
    ], 
    "mole_fractions": [
      0.346419854360797, 
      0.300315552114308, 
      0.353264593524896
    ], 
    "name": "R407A"
  }, 
  {
    "fluids": [
      "R32", 
      "R125", 
      "R134A"
    ], 
    "mole_fractions": [
      0.197865007175653, 
      0.600360468492644, 
      0.201774524331703
    ], 
    "name": "R407B"
  }, 
  {
    "fluids": [
      "R32", 
      "R125", 
      "R134A"
    ], 
    "mole_fractions": [
      0.381109419953993, 
      0.179558888662016, 
      0.439331691383991
    ], 
    "name": "R407C"
  }, 
  {
    "fluids": [
      "R32", 
      "R125", 
      "R134A"
    ], 
    "mole_fractions": [
      0.262268077791873, 
      0.113681680758968, 
      0.624050241449159
    ], 
    "name": "R407D"
  }, 
  {
    "fluids": [
      "R32", 
      "R125", 
      "R134A"
    ], 
    "mole_fractions": [
      0.402611526984881, 
      0.104708637358978, 
      0.492679835656141
    ], 
    "name": "R407E"
  }, 
  {
    "fluids": [
      "R32", 
      "R125", 
      "R134A"
    ], 
    "mole_fractions": [
      0.473194694453358, 
      0.205109095413331, 
      0.321696210133311
    ], 
    "name": "R407F"
  }, 
  {
    "fluids": [
      "R125", 
      "R143A", 
      "R22"
    ], 
    "mole_fractions": [
      0.0507496395780536, 
      0.476277681499092, 
      0.472972678922854
    ], 
    "name": "R408A"
  }, 
  {
    "fluids": [
      "R22", 
      "R124", 
      "R142B"
    ], 
    "mole_fractions": [
      0.676088021274302, 
      0.178481953421098, 
      0.1454300253046
    ], 
    "name": "R409A"
  }, 
  {
    "fluids": [
      "R22", 
      "R124", 
      "R142B"
    ], 
    "mole_fractions": [
      0.726713817097545, 
      0.177089324155708, 
      0.0961968587467468
    ], 
    "name": "R409B"
  }, 
  {
    "fluids": [
      "R32", 
      "R125"
    ], 
    "mole_fractions": [
      0.697614699375863, 
      0.302385300624138
    ], 
    "name": "R410A"
  }, 
  {
    "fluids": [
      "R32", 
      "R125"
    ], 
    "mole_fractions": [
      0.653688938033229, 
      0.346311061966771
    ], 
    "name": "R410B"
  }, 
  {
    "fluids": [
      "PROPYLEN", 
      "R22", 
      "R152A"
    ], 
    "mole_fractions": [
      0.0293595987641706, 
      0.833472654512905, 
      0.137167746722925
    ], 
    "name": "R411A"
  }, 
  {
    "fluids": [
      "PROPYLEN", 
      "R22", 
      "R152A"
    ], 
    "mole_fractions": [
      0.0592216130255444, 
      0.903048917855743, 
      0.0377294691187131
    ], 
    "name": "R411B"
  }, 
  {
    "fluids": [
      "R22", 
      "R218", 
      "R142B"
    ], 
    "mole_fractions": [
      0.746189416536491, 
      0.0245117299030133, 
      0.229298853560496
    ], 
    "name": "R412A"
  }, 
  {
    "fluids": [
      "R218", 
      "R134A", 
      "ISOBUTAN"
    ], 
    "mole_fractions": [
      0.0497604388838132, 
      0.896582929746185, 
      0.0536566313700015
    ], 
    "name": "R413A"
  }, 
  {
    "fluids": [
      "R22", 
      "R124", 
      "ISOBUTAN", 
      "R142B"
    ], 
    "mole_fractions": [
      0.571718248653786, 
      0.202422623615037, 
      0.0667091242374272, 
      0.159150003493749
    ], 
    "name": "R414A"
  }, 
  {
    "fluids": [
      "R22", 
      "R124", 
      "ISOBUTAN", 
      "R142B"
    ], 
    "mole_fractions": [
      0.58743911052603, 
      0.29030851296569, 
      0.0262178745861124, 
      0.0960345019221677
    ], 
    "name": "R414B"
  }, 
  {
    "fluids": [
      "R22", 
      "R152A"
    ], 
    "mole_fractions": [
      0.776780159383737, 
      0.223219840616263
    ], 
    "name": "R415A"
  }, 
  {
    "fluids": [
      "R22", 
      "R152A"
    ], 
    "mole_fractions": [
      0.202949716550675, 
      0.797050283449325
    ], 
    "name": "R415B"
  }, 
  {
    "fluids": [
      "R134A", 
      "R124", 
      "BUTANE"
    ], 
    "mole_fractions": [
      0.647182715864291, 
      0.323933072881677, 
      0.0288842112540324
    ], 
    "name": "R416A"
  }, 
  {
    "fluids": [
      "R125", 
      "R134A", 
      "BUTANE"
    ], 
    "mole_fractions": [
      0.414456113615123, 
      0.523100248809492, 
      0.0624436375753851
    ], 
    "name": "R417A"
  }, 
  {
    "fluids": [
      "PROPANE", 
      "R22", 
      "R152A"
    ], 
    "mole_fractions": [
      0.0287766462758765, 
      0.939204558675462, 
      0.0320187950486611
    ], 
    "name": "R418A"
  }, 
  {
    "fluids": [
      "R125", 
      "R134A", 
      "DME"
    ], 
    "mole_fractions": [
      0.701459965531065, 
      0.203604819551495, 
      0.0949352149174398
    ], 
    "name": "R419A"
  }, 
  {
    "fluids": [
      "R134A", 
      "R142B"
    ], 
    "mole_fractions": [
      0.878387913267685, 
      0.121612086732315
    ], 
    "name": "R420A"
  }, 
  {
    "fluids": [
      "R125", 
      "R134A"
    ], 
    "mole_fractions": [
      0.540011717389644, 
      0.459988282610356
    ], 
    "name": "R421A"
  }, 
  {
    "fluids": [
      "R125", 
      "R134A"
    ], 
    "mole_fractions": [
      0.828099498512419, 
      0.171900501487581
    ], 
    "name": "R421B"
  }, 
  {
    "fluids": [
      "R125", 
      "R134A", 
      "ISOBUTAN"
    ], 
    "mole_fractions": [
      0.805501067600345, 
      0.128043250123554, 
      0.0664556822761011
    ], 
    "name": "R422A"
  }, 
  {
    "fluids": [
      "R125", 
      "R134A", 
      "ISOBUTAN"
    ], 
    "mole_fractions": [
      0.497287395965083, 
      0.446700400155301, 
      0.0560122038796163
    ], 
    "name": "R422B"
  }, 
  {
    "fluids": [
      "R125", 
      "R134A", 
      "ISOBUTAN"
    ], 
    "mole_fractions": [
      0.774757115908852, 
      0.166711388687975, 
      0.0585314954031729
    ], 
    "name": "R422C"
  }, 
  {
    "fluids": [
      "R125", 
      "R134A", 
      "ISOBUTAN"
    ], 
    "mole_fractions": [
      0.596291711495645, 
      0.339399053279791, 
      0.064309235224564
    ], 
    "name": "R422D"
  }, 
  {
    "fluids": [
      "R134A", 
      "R227EA"
    ], 
    "mole_fractions": [
      0.648115324820034, 
      0.351884675179966
    ], 
    "name": "R423A"
  }, 
  {
    "fluids": [
      "R125", 
      "R134A", 
      "ISOBUTAN", 
      "BUTANE", 
      "IPENTANE"
    ], 
    "mole_fractions": [
      0.45615402931289, 
      0.49939050863627, 
      0.0167872396578164, 
      0.0186524885086849, 
      0.00901573388433862
    ], 
    "name": "R424A"
  }, 
  {
    "fluids": [
      "R32", 
      "R134A", 
      "R227EA"
    ], 
    "mole_fractions": [
      0.321134464075019, 
      0.615130603145805, 
      0.0637349327791751
    ], 
    "name": "R425A"
  }, 
  {
    "fluids": [
      "R125", 
      "R134A", 
      "BUTANE", 
      "IPENTANE"
    ], 
    "mole_fractions": [
      0.0431546741714159, 
      0.925684310853531, 
      0.0227152573734822, 
      0.00844575760157109
    ], 
    "name": "R426A"
  }, 
  {
    "fluids": [
      "R32", 
      "R125", 
      "R143A", 
      "R134A"
    ], 
    "mole_fractions": [
      0.260775797534104, 
      0.188391404795509, 
      0.107618901019853, 
      0.443213896650535
    ], 
    "name": "R427A"
  }, 
  {
    "fluids": [
      "R125", 
      "R143A", 
      "PROPANE", 
      "ISOBUTAN"
    ], 
    "mole_fractions": [
      0.694325251072399, 
      0.255893190962662, 
      0.0146310583647717, 
      0.0351504996001673
    ], 
    "name": "R428A"
  }, 
  {
    "fluids": [
      "DME", 
      "R152A", 
      "ISOBUTAN"
    ], 
    "mole_fractions": [
      0.66113457206158, 
      0.0768533364747054, 
      0.262012091463714
    ], 
    "name": "R429A"
  }, 
  {
    "fluids": [
      "R152A", 
      "ISOBUTAN"
    ], 
    "mole_fractions": [
      0.735906531919507, 
      0.264093468080493
    ], 
    "name": "R430A"
  }, 
  {
    "fluids": [
      "PROPANE", 
      "R152A"
    ], 
    "mole_fractions": [
      0.785742532365466, 
      0.214257467634534
    ], 
    "name": "R431A"
  }, 
  {
    "fluids": [
      "PROPYLEN", 
      "DME"
    ], 
    "mole_fractions": [
      0.814097241703795, 
      0.185902758296205
    ], 
    "name": "R432A"
  }, 
  {
    "fluids": [
      "PROPYLEN", 
      "PROPANE"
    ], 
    "mole_fractions": [
      0.309917763130151, 
      0.690082236869849
    ], 
    "name": "R433A"
  }, 
  {
    "fluids": [
      "R125", 
      "R143A", 
      "R134A", 
      "ISOBUTAN"
    ], 
    "mole_fractions": [
      0.556782765664377, 
      0.226468961005242, 
      0.165810098372986, 
      0.0509381749573948
    ], 
    "name": "R434A"
  }, 
  {
    "fluids": [
      "DME", 
      "R152A"
    ], 
    "mole_fractions": [
      0.85152261670421, 
      0.14847738329579
    ], 
    "name": "R435A"
  }, 
  {
    "fluids": [
      "PROPANE", 
      "ISOBUTAN"
    ], 
    "mole_fractions": [
      0.62652773298942, 
      0.37347226701058
    ], 
    "name": "R436A"
  }, 
  {
    "fluids": [
      "PROPANE", 
      "ISOBUTAN"
    ], 
    "mole_fractions": [
      0.588127503607667, 
      0.411872496392333
    ], 
    "name": "R436B"
  }, 
  {
    "fluids": [
      "R125", 
      "R134A", 
      "BUTANE", 
      "PENTANE"
    ], 
    "mole_fractions": [
      0.168496314343733, 
      0.797898667324292, 
      0.0249804624362383, 
      0.00862455589573693
    ], 
    "name": "R437A"
  }, 
  {
    "fluids": [
      "R32", 
      "R125", 
      "R134A", 
      "BUTANE", 
      "IPENTANE"
    ], 
    "mole_fractions": [
      0.161915681788051, 
      0.371558801739542, 
      0.42929872424902, 
      0.0289854872298073, 
      0.00824130499357989
    ], 
    "name": "R438A"
  }, 
  {
    "fluids": [
      "ETHANE", 
      "PROPANE", 
      "ISOBUTAN", 
      "BUTANE"
    ], 
    "mole_fractions": [
      0.049800395690461, 
      0.600310262208399, 
      0.0498654644324665, 
      0.300023877668674
    ], 
    "name": "R441A"
  }, 
  {
    "fluids": [
      "R32", 
      "R125", 
      "R134A", 
      "R152A", 
      "R227EA"
    ], 
    "mole_fractions": [
      0.487220106766942, 
      0.211188495005419, 
      0.240409765511042, 
      0.0371371957951017, 
      0.0240444369214954
    ], 
    "name": "R442A"
  }, 
  {
    "fluids": [
      "PROPYLEN", 
      "PROPANE", 
      "ISOBUTAN"
    ], 
    "mole_fractions": [
      0.568232931233387, 
      0.394367661677695, 
      0.0373994070889183
    ], 
    "name": "R443A"
  }, 
  {
    "fluids": [
      "R32", 
      "R152A", 
      "R1234ZE"
    ], 
    "mole_fractions": [
      0.223042202171548, 
      0.0731981570161227, 
      0.703759640812329
    ], 
    "name": "R444A"
  }, 
  {
    "fluids": [
      "R12", 
      "R152A"
    ], 
    "mole_fractions": [
      0.606101741397223, 
      0.393898258602777
    ], 
    "name": "R500"
  }, 
  {
    "fluids": [
      "R22", 
      "R12"
    ], 
    "mole_fractions": [
      0.807509678166191, 
      0.192490321833809
    ], 
    "name": "R501"
  }, 
  {
    "fluids": [
      "R22", 
      "R115"
    ], 
    "mole_fractions": [
      0.629994467193889, 
      0.370005532806111
    ], 
    "name": "R502"
  }, 
  {
    "fluids": [
      "R23", 
      "R13"
    ], 
    "mole_fractions": [
      0.49970034990839, 
      0.50029965009161
    ], 
    "name": "R503"
  }, 
  {
    "fluids": [
      "R32", 
      "R115"
    ], 
    "mole_fractions": [
      0.734239632563771, 
      0.265760367436229
    ], 
    "name": "R504"
  }, 
  {
    "fluids": [
      "R125", 
      "R143A"
    ], 
    "mole_fractions": [
      0.411839711774438, 
      0.588160288225562
    ], 
    "name": "R507A"
  }, 
  {
    "fluids": [
      "R23", 
      "R116"
    ], 
    "mole_fractions": [
      0.557576966356198, 
      0.442423033643802
    ], 
    "name": "R508A"
  }, 
  {
    "fluids": [
      "R23", 
      "R116"
    ], 
    "mole_fractions": [
      0.626751006700703, 
      0.373248993299297
    ], 
    "name": "R508B"
  }, 
  {
    "fluids": [
      "R22", 
      "R218"
    ], 
    "mole_fractions": [
      0.630790210153023, 
      0.369209789846977
    ], 
    "name": "R509A"
  }, 
  {
    "fluids": [
      "DME", 
      "ISOBUTAN"
    ], 
    "mole_fractions": [
      0.902458936722509, 
      0.0975410632774913
    ], 
    "name": "R510A"
  }, 
  {
    "fluids": [
      "R134A", 
      "R152A"
    ], 
    "mole_fractions": [
      0.0329487458964343, 
      0.967051254103566
    ], 
    "name": "R512A"
  },
  {
    "fluids": [
      "METHANE", 
      "NITROGEN", 
      "CO2", 
      "ETHANE", 
      "PROPANE", 
      "ISOBUTAN", 
      "BUTANE", 
      "IPENTANE", 
      "PENTANE", 
      "HEXANE"
    ], 
    "mole_fractions": [
      0.965222, 
      0.002595, 
      0.005956, 
      0.018186, 
      0.004596, 
      0.000977, 
      0.001007, 
      0.000473, 
      0.000324, 
      0.000664
    ], 
    "name": "GulfCoastGas(NIST1)"
  }, 
  {
    "fluids": [
      "METHANE", 
      "NITROGEN", 
      "CO2", 
      "ETHANE", 
      "PROPANE", 
      "ISOBUTAN", 
      "BUTANE", 
      "IPENTANE", 
      "PENTANE", 
      "HEXANE"
    ], 
    "mole_fractions": [
      0.95123, 
      0.00089, 
      0.02555, 
      0.01835, 
      0.00238, 
      0.0004, 
      0.00016, 
      0.00014, 
      0.00011, 
      0.00079
    ], 
    "name": "TypicalNaturalGas"
  }, 
  {
    "fluids": [
      "R125", 
      "R134A", 
      "BUTANE"
    ], 
    "mole_fractions": [
      0.744566872257699, 
      0.202885026732296, 
      0.052548101010005
    ], 
    "name": "R417B"
  }, 
  {
    "fluids": [
      "R125", 
      "R134A", 
      "BUTANE"
    ], 
    "mole_fractions": [
      0.168533780311387, 
      0.801126056234188, 
      0.0303401634544254
    ], 
    "name": "R417C"
  }, 
  {
    "fluids": [
      "R125", 
      "R134A", 
      "DME"
    ], 
    "mole_fractions": [
      0.425134881380361, 
      0.494935410459673, 
      0.0799297081599657
    ], 
    "name": "R419B"
  }, 
  {
    "fluids": [
      "R125", 
      "R134A", 
      "ISOBUTAN"
    ], 
    "mole_fractions": [
      0.528211539833383, 
      0.421012248071509, 
      0.0507762120951078
    ], 
    "name": "R422E"
  }, 
  {
    "fluids": [
      "DME", 
      "R152A", 
      "ISOBUTAN"
    ], 
    "mole_fractions": [
      0.66113457206158, 
      0.0768533364747054, 
      0.262012091463714
    ], 
    "name": "R429A"
  }, 
  {
    "fluids": [
      "R152A", 
      "ISOBUTAN"
    ], 
    "mole_fractions": [
      0.735906531919507, 
      0.264093468080493
    ], 
    "name": "R430A"
  }, 
  {
    "fluids": [
      "PROPANE", 
      "R152A"
    ], 
    "mole_fractions": [
      0.785742532365466, 
      0.214257467634534
    ], 
    "name": "R431A"
  }, 
  {
    "fluids": [
      "PROPYLEN", 
      "DME"
    ], 
    "mole_fractions": [
      0.814097241703795, 
      0.185902758296205
    ], 
    "name": "R432A"
  }, 
  {
    "fluids": [
      "PROPYLEN", 
      "PROPANE"
    ], 
    "mole_fractions": [
      0.309917763130151, 
      0.690082236869849
    ], 
    "name": "R433A"
  }, 
  {
    "fluids": [
      "PROPYLEN", 
      "PROPANE"
    ], 
    "mole_fractions": [
      0.0522701063955236, 
      0.947729893604476
    ], 
    "name": "R433B"
  }, 
  {
    "fluids": [
      "PROPYLEN", 
      "PROPANE"
    ], 
    "mole_fractions": [
      0.25887610544032, 
      0.74112389455968
    ], 
    "name": "R433C"
  }, 
  {
    "fluids": [
      "R125", 
      "R143A", 
      "R134A", 
      "ISOBUTAN"
    ], 
    "mole_fractions": [
      0.556782765664377, 
      0.226468961005242, 
      0.165810098372986, 
      0.0509381749573948
    ], 
    "name": "R434A"
  }, 
  {
    "fluids": [
      "R32", 
      "R125", 
      "R134A", 
      "BUTANE", 
      "IPENTANE"
    ], 
    "mole_fractions": [
      0.161915681788051, 
      0.371558801739542, 
      0.42929872424902, 
      0.0289854872298073, 
      0.00824130499357989
    ], 
    "name": "R438A"
  }, 
  {
    "fluids": [
      "R32", 
      "R125", 
      "ISOBUTAN"
    ], 
    "mole_fractions": [
      0.684390813603997, 
      0.278854127894844, 
      0.0367550585011589
    ], 
    "name": "R439A"
  }, 
  {
    "fluids": [
      "PROPANE", 
      "R134A", 
      "R152A"
    ], 
    "mole_fractions": [
      0.00901134733203068, 
      0.0103852633851142, 
      0.980603389282855
    ], 
    "name": "R440A"
  }, 
  {
    "fluids": [
      "R32", 
      "R152A", 
      "R1234ZE"
    ], 
    "mole_fractions": [
      0.580409174767712, 
      0.11015659826248, 
      0.309434226969808
    ], 
    "name": "R444B"
  }, 
  {
    "fluids": [
      "CO2", 
      "R134A", 
      "R1234ZE"
    ], 
    "mole_fractions": [
      0.14056672736859, 
      0.0909466670967859, 
      0.768486605534624
    ], 
    "name": "R445A"
  }, 
  {
    "fluids": [
      "R32", 
      "R1234ZE", 
      "BUTANE"
    ], 
    "mole_fractions": [
      0.810347789312053, 
      0.157652541387366, 
      0.0319996693005808
    ], 
    "name": "R446A"
  }, 
  {
    "fluids": [
      "R32", 
      "R125", 
      "R1234ZE"
    ], 
    "mole_fractions": [
      0.824059115538506, 
      0.0183849541922025, 
      0.157555930269292
    ], 
    "name": "R447A"
  }, 
  {
    "fluids": [
      "R32", 
      "R125", 
      "R1234YF", 
      "R134A", 
      "R1234ZE"
    ], 
    "mole_fractions": [
      0.431218201988559, 
      0.186914131481992, 
      0.151319256485899, 
      0.177586673617217, 
      0.0529617364263329
    ], 
    "name": "R448A"
  }, 
  {
    "fluids": [
      "R32", 
      "R125", 
      "R1234YF", 
      "R134A"
    ], 
    "mole_fractions": [
      0.407364566995509, 
      0.179481207732065, 
      0.193480840388364, 
      0.219673384884062
    ], 
    "name": "R449A"
  }, 
  {
    "fluids": [
      "R32", 
      "R125", 
      "R1234YF", 
      "R134A"
    ], 
    "mole_fractions": [
      0.418353331871839, 
      0.174861426767915, 
      0.175699749729428, 
      0.231085491630818
    ], 
    "name": "R449B"
  }, 
  {
    "fluids": [
      "R134A", 
      "R1234ZE"
    ], 
    "mole_fractions": [
      0.447322067369848, 
      0.552677932630152
    ], 
    "name": "R450A"
  }, 
  {
    "fluids": [
      "R1234YF", 
      "R134A"
    ], 
    "mole_fractions": [
      0.887346670041529, 
      0.112653329958471
    ], 
    "name": "R451A"
  }, 
  {
    "fluids": [
      "R1234YF", 
      "R134A"
    ], 
    "mole_fractions": [
      0.876445928959364, 
      0.123554071040636
    ], 
    "name": "R451B"
  }, 
  {
    "fluids": [
      "R32", 
      "R125", 
      "R1234YF"
    ], 
    "mole_fractions": [
      0.218864360337465, 
      0.508837870465814, 
      0.272297769196721
    ], 
    "name": "R452A"
  }, 
  {
    "fluids": [
      "R32", 
      "R125", 
      "R134A", 
      "R227EA", 
      "BUTANE", 
      "IPENTANE"
    ], 
    "mole_fractions": [
      0.341295928327855, 
      0.147936968933237, 
      0.468112901696291, 
      0.0261066945175942, 
      0.0091646080754323, 
      0.00738289844959133
    ], 
    "name": "R453A"
  }, 
  {
    "fluids": [
      "R32", 
      "R1234YF"
    ], 
    "mole_fractions": [
      0.541359992223361, 
      0.458640007776639
    ], 
    "name": "R454A"
  }, 
  {
    "fluids": [
      "R32", 
      "R1234YF"
    ], 
    "mole_fractions": [
      0.829247912869081, 
      0.170752087130919
    ], 
    "name": "R454B"
  }, 
  {
    "fluids": [
      "PROPANE", 
      "DME"
    ], 
    "mole_fractions": [
      0.952038489443906, 
      0.0479615105560936
    ], 
    "name": "R511A"
  }, 
  {
    "fluids": [
      "R1234YF", 
      "R134A"
    ], 
    "mole_fractions": [
      0.532425755929735, 
      0.467574244070265
    ], 
    "name": "R513A"
  }
]

================================================
FILE: notebooks/propsSI_fluids.csv
================================================
propsName,menuName,idName,order,category,basic,compressibleMixtureComponent,incompressible,incompressibleMixture,minConcentration,maxConcentration,longDescription
Air,Dry Air,Air,1,"Air, Humid Air, and Water",TRUE,TRUE,FALSE,FALSE,null,null,
HumidAir,Humid Air (Psychrometrics),HumidAir,1,"Air, Humid Air, and Water",TRUE,FALSE,FALSE,FALSE,null,null,
Water,Water (IAPWS-95),Water,1,"Air, Humid Air, and Water",TRUE,TRUE,FALSE,FALSE,null,null,
1-Butene,1-Butene,But1ene,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Acetone,Acetone,Acetone,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Ammonia,Ammonia,Ammonia,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Argon,Argon,Argon,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Benzene,Benzene,Benzene,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
CarbonDioxide,Carbon Dioxide,CarbonDioxide,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
CarbonMonoxide,Carbon Monoxide,CarbonMonoxide,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
CarbonylSulfide,Carbonyl Sulfide,CarbonylSulfide,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
cis-2-Butene,cis-2-Butene,cis2Butene,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
CycloHexane,Cyclohexane,Cyclohexane,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Cyclopentane,Cyclopentane,Cyclopentane,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
CycloPropane,Cyclopropane,Cyclopropane,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
D4,D4,D4,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
D5,D5,D5,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
D6,D6,D6,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Deuterium,Deuterium,Deuterium,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Dichloroethane,Dichloroethane,Dichloroethane,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
DiethylEther,Diethyl Ether,DiethylEther,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
DimethylCarbonate,Dimethyl Carbonate,DimethylCarbonate,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
DimethylEther,Dimethyl Ether,DimethylEther,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Ethane,Ethane,Ethane,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Ethanol,Ethanol,Ethanol,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
EthylBenzene,Ethylbenzene,Ethylbenzene,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Ethylene,Ethylene,Ethylene,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
EthyleneOxide,Ethylene Oxide,EthyleneOxide,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Fluorine,Fluorine,Fluorine,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
HeavyWater,Heavy Water,HeavyWater,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Helium,Helium,Helium,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
HFE143m,HFE-143m,HFE143m,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Hydrogen,Hydrogen,Hydrogen,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
HydrogenChloride,Hydrogen Chloride,HydrogenChloride,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
HydrogenSulfide,Hydrogen Sulfide,HydrogenSulfide,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
IsoButane,Isobutane,Isobutane,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
IsoButene,Isobutene,Isobutene,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Isohexane,Isohexane,Isohexane,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Isopentane,Isopentane,Isopentane,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Krypton,Krypton,Krypton,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
m-Xylene,m-Xylene,mXylene,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
MD2M,MD2M (Decamethyltetrasiloxane),MD2M,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
MD3M,MD3M (Dodecamethylpentasiloxane),MD3M,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
MD4M,MD4M (Tetradecamethylhexasiloxane),MD4M,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
MDM,MDM (Octamethyltrisiloxane),MDM,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Methane,Methane,Methane,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Methanol,Methanol,Methanol,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
MethylLinoleate,Methyl Linoleate,MethylLinoleate,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
MethylLinolenate,Methyl Linolenate,MethylLinolenate,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
MethylOleate,Methyl Oleate,MethylOleate,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
MethylPalmitate,Methyl Palmitate,MethylPalmitate,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
MethylStearate,Methyl Stearate,MethylStearate,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
MM,MM (Hexamethyldisiloxane),MM,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
n-Butane,n-Butane,nButane,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
n-Decane,n-Decane,nDecane,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
n-Dodecane,n-Dodecane,nDodecane,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
n-Heptane,n-Heptane,nHeptane,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
n-Hexane,n-Hexane,nHexane,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
n-Nonane,n-Nonane,nNonane,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
n-Octane,n-Octane,nOctane,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
n-Pentane,n-Pentane,nPentane,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
n-Propane,n-Propane,nPropane,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
n-Undecane,n-Undecane,nUndecane,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Neon,Neon,Neon,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Neopentane,Neopentane,Neopentane,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Nitrogen,Nitrogen,Nitrogen,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
NitrousOxide,Nitrous Oxide,NitrousOxide,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Novec649,Novec 649,Novec649,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
o-Xylene,o-Xylene,oXylene,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
OrthoDeuterium,Orthodeuterium,OrthoDeuterium,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
OrthoHydrogen,Orthohydrogen,OrthoHydrogen,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Oxygen,Oxygen,Oxygen,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
p-Xylene,p-Xylene,pXylene,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
ParaDeuterium,Paradeuterium,ParaDeuterium,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
ParaHydrogen,Parahydrogen,ParaHydrogen,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Propylene,Propylene,Propylene,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Propyne,Propyne,Propyne,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R11,R11,R11,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R113,R113,R113,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R114,R114,R114,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R115,R115,R115,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R116,R116,R116,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R12,R12,R12,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R123,R123,R123,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R1233zd(E),R1233zd(E),R1233zdE,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R1234yf,R1234yf,R1234yf,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R1234ze(E),R1234ze(E),R1234zeE,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R1234ze(Z),R1234ze(Z),R1234zeZ,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R124,R124,R124,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R1243zf,R1243zf,R1243zf,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R125,R125,R125,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R1336mzz(E),R1336mzz(E),R1336MZZE,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R13,R13,R13,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R134a,R134a,R134a,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R13I1,R13I1,R13I1,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R14,R14,R14,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R141b,R141b,R141b,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R142b,R142b,R142b,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R143a,R143a,R143a,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R152A,R152A,R152A,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R161,R161,R161,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R21,R21,R21,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R218,R218,R218,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R22,R22,R22,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R227EA,R227EA,R227EA,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R23,R23,R23,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R236EA,R236EA,R236EA,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R236FA,R236FA,R236FA,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R245ca,R245ca,R245ca,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R245fa,R245fa,R245fa,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R32,R32,R32,2,Pure and Pseudo-Pure Fluids,TRUE,TRUE,FALSE,FALSE,null,null,
R365MFC,R365MFC,R365MFC,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R40,R40,R40,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R404A,R404A,R404A,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R407C,R407C,R407C,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R41,R41,R41,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R410A,R410A,R410A,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
R507A,R507A,R507A,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
RC318,RC318,RC318,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
SES36,SES36,SES36,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
SulfurDioxide,Sulfur Dioxide,SulfurDioxide,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
SulfurHexafluoride,Sulfur Hexafluoride,SulfurHexafluoride,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
Toluene,Toluene,Toluene,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
trans-2-Butene,trans-2-Butene,trans2Butene,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
IF97::Water,Water (IAPWS-IF97),Water,2,Pure and Pseudo-Pure Fluids,TRUE,FALSE,FALSE,FALSE,null,null,
Xenon,Xenon,Xenon,2,Pure and Pseudo-Pure Fluids,FALSE,TRUE,FALSE,FALSE,null,null,
INCOMP::Acetone,"Acetone, liquid phase at 10 bar",Acetone,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::Air,"Air, gaseous phase at 1 atm (101325 Pa)",Air,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::AS10,"Aspen Temper -10, Potassium acetate/formate",AS10,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::AS20,"Aspen Temper -20, Potassium acetate/formate",AS20,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::AS30,"Aspen Temper -30, Potassium acetate/formate",AS30,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::AS40,"Aspen Temper -40, Potassium acetate/formate",AS40,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::AS55,"Aspen Temper -55, Potassium acetate/formate",AS55,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::TCO,Citrus oil terpene - d-Limonene,TCO,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::DEB,Diethylbenzene mixture - Dowtherm J,DEB,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::DowJ2,"Dowtherm J, Diethylbenzene mixture",DowJ2,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::DowQ2,"Dowtherm Q, Diphenylethane/alkylated aromatics",DowQ2,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::DowJ,DowthermJ,DowJ,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::DowQ,DowthermQ,DowQ,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::HC10,Dynalene HC10,HC10,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::HC20,Dynalene HC20,HC20,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::HC30,Dynalene HC30,HC30,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::HC40,Dynalene HC40,HC40,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::HC50,Dynalene HC50,HC50,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::DSF,Dynalene SF,DSF,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::Ethanol,"Ethanol, liquid phase at 10 bar",Ethanol,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::FoodAsh,Food ash model from the 2006 ASHRAE Handbook,FoodAsh,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::FoodCarbohydrate,Food carbohydrate model from the 2006 ASHRAE Handbook,FoodCarbohydrate,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::FoodFat,Food fat model from the 2006 ASHRAE Handbook,FoodFat,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::FoodFiber,Food fiber model from the 2006 ASHRAE Handbook,FoodFiber,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::FoodIce,Food ice model from the 2006 ASHRAE Handbook,FoodIce,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::FoodProtein,Food protein model from the 2006 ASHRAE Handbook,FoodProtein,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::FoodWater,Food water model from the 2006 ASHRAE Handbook,FoodWater,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::Hexane,"Hexane, liquid phase at 10 bar",Hexane,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::HFE2,"HFE-7100, Hydrofluoroether",HFE2,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::HY20,"HYCOOL 20, Potassium formate",HY20,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::HY30,"HyCool 30, Potassium formate",HY30,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::HY40,"HyCool 40, Potassium formate",HY40,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::HY45,"HyCool 45, Potassium formate",HY45,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::HY50,"HyCool 50, Potassium formate",HY50,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::HCB,Hydrocarbon blend - Dynalene MV,HCB,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::HCM,Hydrocarbon mixture - Gilotherm D12,HCM,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::HFE,Hydrofluoroether - HFE-7100 3M Novec,HFE,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::LiqNa,LiqNa,LiqNa,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::NaK,"Nitrate salt, 0.6 NaNO3 and 0.4 KNO3",NaK,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::PCL,"Paracryol, Aliphatic Hydrocarbon",PCL,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::PCR,Paratherm CR,PCR,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::PGLT,Paratherm GLT,PGLT,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::PHE,Paratherm HE,PHE,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::PHR,Paratherm HR,PHR,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::PLR,Paratherm LR,PLR,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::PMR,Paratherm MR,PMR,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::PNF,Paratherm NF,PNF,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::PNF2,"Paratherm NF, Hydrotreated mineral oil",PNF2,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::PBB,Pirobloc HTF-BASIC,PBB,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::PMS1,Polydimethylsiloxan 1 - Baysilone KT3,PMS1,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::PMS2,Polydimethylsiloxan 2 - Syltherm XLT,PMS2,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::S800,Syltherm 800,S800,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::XLT2,"Syltherm XLT, Polydimethylsiloxan",XLT2,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::XLT,SylthermXLT,XLT,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::SAB,Synthetic alkyl benzene - Marlotherm X,SAB,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::TX22,Texatherm22,TX22,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::T66,Therminol66,T66,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::T72,Therminol72,T72,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::TD12,TherminolD12,TD12,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::TVP1,TherminolVP1,TVP1,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::TVP1869,Thermogen VP 1869,TVP1869,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::TY10,"Tyfoxit 1.10, Potassium Acetate",TY10,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::TY15,"Tyfoxit 1.15, Potassium Acetate",TY15,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::TY20,"Tyfoxit 1.20, Potassium Acetate",TY20,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::TY24,"Tyfoxit 1.24, Potassium Acetate",TY24,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::Water,"Water, fit of EOS from 1 bar to 100 bar",Water,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::NBS,"Water, NBS",NBS,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::ZS10,"Zitrec S10, Potassium formate/Sodium propionate",ZS10,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::ZS25,"Zitrec S25, Potassium formate/Sodium propionate",ZS25,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::ZS40,"Zitrec S40, Potassium formate/Sodium propionate",ZS40,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::ZS45,"Zitrec S45, Potassium formate/Sodium propionate",ZS45,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::ZS55,"Zitrec S55, Potassium formate/Sodium propionate",ZS55,3,Incompressible Fluids,FALSE,FALSE,TRUE,FALSE,null,null,
INCOMP::MAM,Ammonia (NH3) - aq,MAM,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0,0.3,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0 - 0.3 (all water=0.0, no water=1.0)"
INCOMP::MAM2,"Ammonia, Melinder",MAM2,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.08,0.24,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0.08 - 0.24 (all water=0.0, no water=1.0)"
INCOMP::MCA,Calcium Chloride (CaCl2) - aq,MCA,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0,0.3,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0 - 0.3 (all water=0.0, no water=1.0)"
INCOMP::MCA2,"Calcium Chloride, Melinder",MCA2,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.09,0.29,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0.09 - 0.29 (all water=0.0, no water=1.0)"
INCOMP::VCA,"Calcium Cloride, VDI",VCA,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.15,0.3,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0.15 - 0.3 (all water=0.0, no water=1.0)"
INCOMP::MEA2,"Ethanol, Melinder",MEA2,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.11,0.6,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0.11 - 0.6 (all water=0.0, no water=1.0)"
INCOMP::MEA,Ethyl Alcohol (Ethanol) - aq,MEA,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0,0.6,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0 - 0.6 (all water=0.0, no water=1.0)"
INCOMP::MEG,Ethylene Glycol - aq,MEG,4,Incompressible Mass-Based Aqueous Solutions,TRUE,FALSE,TRUE,TRUE,0,0.6,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0 - 0.6 (all water=0.0, no water=1.0)"
INCOMP::MEG2,"Ethylene Glycol, Melinder",MEG2,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0,0.56,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0 - 0.56 (all water=0.0, no water=1.0)"
INCOMP::FRE,"Freezium, Potassium Formate",FRE,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.19,0.5,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0.19 - 0.5 (all water=0.0, no water=1.0)"
INCOMP::MGL,Glycerol - aq,MGL,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0,0.6,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0 - 0.6 (all water=0.0, no water=1.0)"
INCOMP::MGL2,"Glycerol, Melinder",MGL2,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.2,0.63,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0.2 - 0.63 (all water=0.0, no water=1.0)"
INCOMP::IceEA,Ice slurry with Ethanol,IceEA,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.05,0.35,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0.05 - 0.35 (all water=0.0, no water=1.0)"
INCOMP::IceNA,Ice slurry with NaCl,IceNA,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.05,0.35,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0.05 - 0.35 (all water=0.0, no water=1.0)"
INCOMP::IcePG,Ice slurry with Propylene Glycol,IcePG,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.05,0.35,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0.05 - 0.35 (all water=0.0, no water=1.0)"
INCOMP::MLI,Lithium Chloride (LiCl) - aq,MLI,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0,0.24,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0 - 0.24 (all water=0.0, no water=1.0)"
INCOMP::LiBr,Lithium-bromide solution - aq,LiBr,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0,0.75,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0 - 0.75 (all water=0.0, no water=1.0)"
INCOMP::MMG2,"Magnesium Chloride, Melinder",MMG2,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0,0.21,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0 - 0.21 (all water=0.0, no water=1.0)"
INCOMP::VMG,"Magnesium Chloride, VDI",VMG,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.07,0.21,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0.07 - 0.21 (all water=0.0, no water=1.0)"
INCOMP::MMA2,"Methanol, Melinder",MMA2,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.08,0.47,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0.08 - 0.47 (all water=0.0, no water=1.0)"
INCOMP::VMA,"Methanol, VDI",VMA,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.1,0.9,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0.1 - 0.9 (all water=0.0, no water=1.0)"
INCOMP::MMA,Methyl Alcohol (Methanol) - aq,MMA,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0,0.6,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0 - 0.6 (all water=0.0, no water=1.0)"
INCOMP::MMG,MgCl2 - aq,MMG,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0,0.3,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0 - 0.3 (all water=0.0, no water=1.0)"
INCOMP::MKA,Potassium Acetate (CH3CO2K) - aq,MKA,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0,0.45,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0 - 0.45 (all water=0.0, no water=1.0)"
INCOMP::MKA2,"Potassium Acetate, Melinder",MKA2,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.11,0.41,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0.11 - 0.41 (all water=0.0, no water=1.0)"
INCOMP::MKC,Potassium Carbonate (K2CO3) - aq,MKC,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0,0.4,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0 - 0.4 (all water=0.0, no water=1.0)"
INCOMP::MKC2,"Potassium Carbonate, Melinder",MKC2,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0,0.39,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0 - 0.39 (all water=0.0, no water=1.0)"
INCOMP::VKC,"Potassium Carbonate, VDI",VKC,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.13,0.39,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0.13 - 0.39 (all water=0.0, no water=1.0)"
INCOMP::MKF,Potassium Formate (CHKO2) - aq,MKF,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0,0.48,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0 - 0.48 (all water=0.0, no water=1.0)"
INCOMP::MPG,Propylene Glycol - aq,MPG,4,Incompressible Mass-Based Aqueous Solutions,TRUE,FALSE,TRUE,TRUE,0,0.6,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0 - 0.6 (all water=0.0, no water=1.0)"
INCOMP::MPG2,"Propylene Glycol, Melinder",MPG2,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.15,0.57,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0.15 - 0.57 (all water=0.0, no water=1.0)"
INCOMP::MITSW,"Seawater, MIT",MITSW,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0,0.12,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0 - 0.12 (all water=0.0, no water=1.0)"
INCOMP::MNA,Sodium Chloride (NaCl) - aq,MNA,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0,0.23,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0 - 0.23 (all water=0.0, no water=1.0)"
INCOMP::MNA2,"Sodium Chloride, Melinder",MNA2,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0,0.23,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0 - 0.23 (all water=0.0, no water=1.0)"
INCOMP::VNA,"Sodium Chloride, VDI",VNA,4,Incompressible Mass-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.07,0.23,"Incompressible Mass-Based Aqueous Solution, valid concentration range: 0.07 - 0.23 (all water=0.0, no water=1.0)"
INCOMP::AKF,"Antifrogen KF, Potassium Formate",AKF,5,Incompressible Volume-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.4,1,"Incompressible Volume-Based Aqueous Solution, valid concentration range: 0.4 - 1 (all water=0.0, no water=1.0)"
INCOMP::AL,"Antifrogen L, Propylene Glycol",AL,5,Incompressible Volume-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.1,0.6,"Incompressible Volume-Based Aqueous Solution, valid concentration range: 0.1 - 0.6 (all water=0.0, no water=1.0)"
INCOMP::AN,"Antifrogen N, Ethylene Glycol",AN,5,Incompressible Volume-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.1,0.6,"Incompressible Volume-Based Aqueous Solution, valid concentration range: 0.1 - 0.6 (all water=0.0, no water=1.0)"
INCOMP::AEG,"Ethylene Glycol, ASHRAE",AEG,5,Incompressible Volume-Based Aqueous Solutions,TRUE,FALSE,TRUE,TRUE,0.1,0.6,"Incompressible Volume-Based Aqueous Solution, valid concentration range: 0.1 - 0.6 (all water=0.0, no water=1.0)"
INCOMP::GKN,"Glykosol N, Ethylene Glycol",GKN,5,Incompressible Volume-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.1,0.6,"Incompressible Volume-Based Aqueous Solution, valid concentration range: 0.1 - 0.6 (all water=0.0, no water=1.0)"
INCOMP::PK2,"Pekasol 2000, K acetate/formate",PK2,5,Incompressible Volume-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.3,1,"Incompressible Volume-Based Aqueous Solution, valid concentration range: 0.3 - 1 (all water=0.0, no water=1.0)"
INCOMP::PKL,"Pekasol L, Propylene Glycol",PKL,5,Incompressible Volume-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.1,0.6,"Incompressible Volume-Based Aqueous Solution, valid concentration range: 0.1 - 0.6 (all water=0.0, no water=1.0)"
INCOMP::APG,"Propylene Glycol, ASHRAE",APG,5,Incompressible Volume-Based Aqueous Solutions,TRUE,FALSE,TRUE,TRUE,0.1,0.6,"Incompressible Volume-Based Aqueous Solution, valid concentration range: 0.1 - 0.6 (all water=0.0, no water=1.0)"
INCOMP::ZAC,"Zitrec AC, Corrosion Inhibitor",ZAC,5,Incompressible Volume-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.06,0.5,"Incompressible Volume-Based Aqueous Solution, valid concentration range: 0.06 - 0.5 (all water=0.0, no water=1.0)"
INCOMP::ZFC,"Zitrec FC, Propylene Glycol",ZFC,5,Incompressible Volume-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.3,0.6,"Incompressible Volume-Based Aqueous Solution, valid concentration range: 0.3 - 0.6 (all water=0.0, no water=1.0)"
INCOMP::ZLC,"Zitrec LC, Propylene Glycol",ZLC,5,Incompressible Volume-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.3,0.7,"Incompressible Volume-Based Aqueous Solution, valid concentration range: 0.3 - 0.7 (all water=0.0, no water=1.0)"
INCOMP::ZM,"Zitrec M, Ethylene Glycol",ZM,5,Incompressible Volume-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0,1,"Incompressible Volume-Based Aqueous Solution, valid concentration range: 0 - 1 (all water=0.0, no water=1.0)"
INCOMP::ZMC,"Zitrec MC, Ethylene Glycol",ZMC,5,Incompressible Volume-Based Aqueous Solutions,FALSE,FALSE,TRUE,TRUE,0.3,0.7,"Incompressible Volume-Based Aqueous Solution, valid concentration range: 0.3 - 0.7 (all water=0.0, no water=1.0)"
CustomMixture,Mixture (User Defined),Mixture,6,User Defined Mixture of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,
Air.mix,Air,AirMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - NITROGEN: 0.7812, ARGON: 0.0092, OXYGEN: 0.2096"
Amarillo.mix,Amarillo,AmarilloMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - METHANE: 0.906724, NITROGEN: 0.031284, CO2: 0.004676, ETHANE: 0.045279, PROPANE: 0.00828, ISOBUTAN: 0.001037, BUTANE: 0.001563, IPENTANE: 0.000321, PENTANE: 0.000443, HEXANE: 0.000393"
Ekofisk.mix,Ekofisk,EkofiskMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - METHANE: 0.859063, NITROGEN: 0.010068, CO2: 0.014954, ETHANE: 0.084919, PROPANE: 0.023015, ISOBUTAN: 0.003486, BUTANE: 0.003506, IPENTANE: 0.000509, PENTANE: 0.00048"
GulfCoast.mix,Gulf Coast,GulfCoastMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - METHANE: 0.965222, NITROGEN: 0.002595, CO2: 0.005956, ETHANE: 0.018186, PROPANE: 0.004596, ISOBUTAN: 0.000977, BUTANE: 0.001007, IPENTANE: 0.000473, PENTANE: 0.000324, HEXANE: 0.000664"
GulfCoastGas(NIST1).mix,Gulf Coast Gas (NIST1),GulfCoastGasMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - METHANE: 0.965222, NITROGEN: 0.002595, CO2: 0.005956, ETHANE: 0.018186, PROPANE: 0.004596, ISOBUTAN: 0.000977, BUTANE: 0.001007, IPENTANE: 0.000473, PENTANE: 0.000324, HEXANE: 0.000664"
HighCO2.mix,High CO2,HighCO2Mixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - METHANE: 0.81212, NITROGEN: 0.05702, CO2: 0.07585, ETHANE: 0.04303, PROPANE: 0.00895, ISOBUTAN: 0.00151, BUTANE: 0.00152"
HighN2.mix,High N2,HighN2Mixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - METHANE: 0.81441, NITROGEN: 0.13465, CO2: 0.00985, ETHANE: 0.033, PROPANE: 0.00605, ISOBUTAN: 0.001, BUTANE: 0.00104"
NaturalGasSample.mix,Natural Gas Sample,NaturalGasSampleMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - METHANE: 0.95123, NITROGEN: 0.00089, CO2: 0.02555, ETHANE: 0.01835, PROPANE: 0.00238, ISOBUTAN: 0.0004, BUTANE: 0.00016, IPENTANE: 0.00014, PENTANE: 0.00011, HEXANE: 0.00079"
TypicalNaturalGas.mix,"Natural Gas, Typical",TypicalNaturalGasMixture,7,Predefined Mixtures of Pure Fluids,TRUE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - METHANE: 0.95123, NITROGEN: 0.00089, CO2: 0.02555, ETHANE: 0.01835, PROPANE: 0.00238, ISOBUTAN: 0.0004, BUTANE: 0.00016, IPENTANE: 0.00014, PENTANE: 0.00011, HEXANE: 0.00079"
R401A.mix,R401A,R401AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.578854210704231, R152A: 0.185871453986601, R124: 0.235274335309169"
R401B.mix,R401B,R401BMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.654924685341436, R152A: 0.154607382276918, R124: 0.190467932381646"
R401C.mix,R401C,R401CMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.385591186504412, R152A: 0.229445970225924, R124: 0.384962843269664"
R402A.mix,R402A,R402AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.507659889396724, PROPANE: 0.0460590346231213, R22: 0.446281075980154"
R402B.mix,R402B,R402BMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.299858744498276, PROPANE: 0.0429562491180057, R22: 0.657185006383719"
R403A.mix,R403A,R403AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - PROPANE: 0.104301635230068, R22: 0.797852142841926, R218: 0.0978462219280052"
R403B.mix,R403B,R403BMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - PROPANE: 0.117083478399255, R22: 0.668734422027154, R218: 0.214182099573591"
R404A.mix,R404A,R404AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.357816784026318, R134A: 0.0382639950410712, R143A: 0.603919220932611"
R405A.mix,R405A,R405AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.582397185883849, R152A: 0.118598940913682, R142B: 0.0612463586573, RC318: 0.237757514545169"
R406A.mix,R406A,R406AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.571559096367276, ISOBUTAN: 0.0618403319459979, R142B: 0.366600571686726"
R407A.mix,R407A,R407AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.346419854360797, R125: 0.300315552114308, R134A: 0.353264593524896"
R407B.mix,R407B,R407BMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.197865007175653, R125: 0.600360468492644, R134A: 0.201774524331703"
R407C.mix,R407C,R407CMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.381109419953993, R125: 0.179558888662016, R134A: 0.439331691383991"
R407D.mix,R407D,R407DMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.262268077791873, R125: 0.113681680758968, R134A: 0.624050241449159"
R407E.mix,R407E,R407EMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.402611526984881, R125: 0.104708637358978, R134A: 0.492679835656141"
R407F.mix,R407F,R407FMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.473194694453358, R125: 0.205109095413331, R134A: 0.321696210133311"
R408A.mix,R408A,R408AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.0507496395780536, R143A: 0.476277681499092, R22: 0.472972678922854"
R409A.mix,R409A,R409AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.676088021274302, R124: 0.178481953421098, R142B: 0.1454300253046"
R409B.mix,R409B,R409BMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.726713817097545, R124: 0.177089324155708, R142B: 0.0961968587467468"
R410A.mix,R410A,R410AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.697614699375863, R125: 0.302385300624138"
R410B.mix,R410B,R410BMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.653688938033229, R125: 0.346311061966771"
R411A.mix,R411A,R411AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - PROPYLEN: 0.0293595987641706, R22: 0.833472654512905, R152A: 0.137167746722925"
R411B.mix,R411B,R411BMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - PROPYLEN: 0.0592216130255444, R22: 0.903048917855743, R152A: 0.0377294691187131"
R412A.mix,R412A,R412AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.746189416536491, R218: 0.0245117299030133, R142B: 0.229298853560496"
R413A.mix,R413A,R413AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R218: 0.0497604388838132, R134A: 0.896582929746185, ISOBUTAN: 0.0536566313700015"
R414A.mix,R414A,R414AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.571718248653786, R124: 0.202422623615037, ISOBUTAN: 0.0667091242374272, R142B: 0.159150003493749"
R414B.mix,R414B,R414BMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.58743911052603, R124: 0.29030851296569, ISOBUTAN: 0.0262178745861124, R142B: 0.0960345019221677"
R415A.mix,R415A,R415AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.776780159383737, R152A: 0.223219840616263"
R415B.mix,R415B,R415BMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.202949716550675, R152A: 0.797050283449325"
R416A.mix,R416A,R416AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R134A: 0.647182715864291, R124: 0.323933072881677, BUTANE: 0.0288842112540324"
R417A.mix,R417A,R417AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.414456113615123, R134A: 0.523100248809492, BUTANE: 0.0624436375753851"
R417B.mix,R417B,R417BMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.744566872257699, R134A: 0.202885026732296, BUTANE: 0.052548101010005"
R417C.mix,R417C,R417CMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.168533780311387, R134A: 0.801126056234188, BUTANE: 0.0303401634544254"
R418A.mix,R418A,R418AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - PROPANE: 0.0287766462758765, R22: 0.939204558675462, R152A: 0.0320187950486611"
R419A.mix,R419A,R419AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.701459965531065, R134A: 0.203604819551495, DME: 0.0949352149174398"
R419B.mix,R419B,R419BMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.425134881380361, R134A: 0.494935410459673, DME: 0.0799297081599657"
R420A.mix,R420A,R420AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R134A: 0.878387913267685, R142B: 0.121612086732315"
R421A.mix,R421A,R421AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.540011717389644, R134A: 0.459988282610356"
R421B.mix,R421B,R421BMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.828099498512419, R134A: 0.171900501487581"
R422A.mix,R422A,R422AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.805501067600345, R134A: 0.128043250123554, ISOBUTAN: 0.0664556822761011"
R422B.mix,R422B,R422BMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.497287395965083, R134A: 0.446700400155301, ISOBUTAN: 0.0560122038796163"
R422C.mix,R422C,R422CMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.774757115908852, R134A: 0.166711388687975, ISOBUTAN: 0.0585314954031729"
R422D.mix,R422D,R422DMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.596291711495645, R134A: 0.339399053279791, ISOBUTAN: 0.064309235224564"
R422E.mix,R422E,R422EMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.528211539833383, R134A: 0.421012248071509, ISOBUTAN: 0.0507762120951078"
R423A.mix,R423A,R423AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R134A: 0.648115324820034, R227EA: 0.351884675179966"
R424A.mix,R424A,R424AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.45615402931289, R134A: 0.49939050863627, ISOBUTAN: 0.0167872396578164, BUTANE: 0.0186524885086849, IPENTANE: 0.00901573388433862"
R425A.mix,R425A,R425AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.321134464075019, R134A: 0.615130603145805, R227EA: 0.0637349327791751"
R426A.mix,R426A,R426AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.0431546741714159, R134A: 0.925684310853531, BUTANE: 0.0227152573734822, IPENTANE: 0.00844575760157109"
R427A.mix,R427A,R427AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.260775797534104, R125: 0.188391404795509, R143A: 0.107618901019853, R134A: 0.443213896650535"
R428A.mix,R428A,R428AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.694325251072399, R143A: 0.255893190962662, PROPANE: 0.0146310583647717, ISOBUTAN: 0.0351504996001673"
R429A.mix,R429A,R429AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - DME: 0.66113457206158, R152A: 0.0768533364747054, ISOBUTAN: 0.262012091463714"
R429A.mix,R429A,R429AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - DME: 0.66113457206158, R152A: 0.0768533364747054, ISOBUTAN: 0.262012091463714"
R430A.mix,R430A,R430AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R152A: 0.735906531919507, ISOBUTAN: 0.264093468080493"
R430A.mix,R430A,R430AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R152A: 0.735906531919507, ISOBUTAN: 0.264093468080493"
R431A.mix,R431A,R431AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - PROPANE: 0.785742532365466, R152A: 0.214257467634534"
R431A.mix,R431A,R431AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - PROPANE: 0.785742532365466, R152A: 0.214257467634534"
R432A.mix,R432A,R432AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - PROPYLEN: 0.814097241703795, DME: 0.185902758296205"
R432A.mix,R432A,R432AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - PROPYLEN: 0.814097241703795, DME: 0.185902758296205"
R433A.mix,R433A,R433AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - PROPYLEN: 0.309917763130151, PROPANE: 0.690082236869849"
R433A.mix,R433A,R433AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - PROPYLEN: 0.309917763130151, PROPANE: 0.690082236869849"
R433B.mix,R433B,R433BMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - PROPYLEN: 0.0522701063955236, PROPANE: 0.947729893604476"
R433C.mix,R433C,R433CMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - PROPYLEN: 0.25887610544032, PROPANE: 0.74112389455968"
R434A.mix,R434A,R434AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.556782765664377, R143A: 0.226468961005242, R134A: 0.165810098372986, ISOBUTAN: 0.0509381749573948"
R434A.mix,R434A,R434AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.556782765664377, R143A: 0.226468961005242, R134A: 0.165810098372986, ISOBUTAN: 0.0509381749573948"
R435A.mix,R435A,R435AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - DME: 0.85152261670421, R152A: 0.14847738329579"
R436A.mix,R436A,R436AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - PROPANE: 0.62652773298942, ISOBUTAN: 0.37347226701058"
R436B.mix,R436B,R436BMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - PROPANE: 0.588127503607667, ISOBUTAN: 0.411872496392333"
R437A.mix,R437A,R437AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.168496314343733, R134A: 0.797898667324292, BUTANE: 0.0249804624362383, PENTANE: 0.00862455589573693"
R438A.mix,R438A,R438AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.161915681788051, R125: 0.371558801739542, R134A: 0.42929872424902, BUTANE: 0.0289854872298073, IPENTANE: 0.00824130499357989"
R438A.mix,R438A,R438AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.161915681788051, R125: 0.371558801739542, R134A: 0.42929872424902, BUTANE: 0.0289854872298073, IPENTANE: 0.00824130499357989"
R439A.mix,R439A,R439AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.684390813603997, R125: 0.278854127894844, ISOBUTAN: 0.0367550585011589"
R440A.mix,R440A,R440AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - PROPANE: 0.00901134733203068, R134A: 0.0103852633851142, R152A: 0.980603389282855"
R441A.mix,R441A,R441AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - ETHANE: 0.049800395690461, PROPANE: 0.600310262208399, ISOBUTAN: 0.0498654644324665, BUTANE: 0.300023877668674"
R442A.mix,R442A,R442AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.487220106766942, R125: 0.211188495005419, R134A: 0.240409765511042, R152A: 0.0371371957951017, R227EA: 0.0240444369214954"
R443A.mix,R443A,R443AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - PROPYLEN: 0.568232931233387, PROPANE: 0.394367661677695, ISOBUTAN: 0.0373994070889183"
R444A.mix,R444A,R444AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.223042202171548, R152A: 0.0731981570161227, R1234ZE: 0.703759640812329"
R444B.mix,R444B,R444BMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.580409174767712, R152A: 0.11015659826248, R1234ZE: 0.309434226969808"
R445A.mix,R445A,R445AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - CO2: 0.14056672736859, R134A: 0.0909466670967859, R1234ZE: 0.768486605534624"
R446A.mix,R446A,R446AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.810347789312053, R1234ZE: 0.157652541387366, BUTANE: 0.0319996693005808"
R447A.mix,R447A,R447AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.824059115538506, R125: 0.0183849541922025, R1234ZE: 0.157555930269292"
R448A.mix,R448A,R448AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.431218201988559, R125: 0.186914131481992, R1234YF: 0.151319256485899, R134A: 0.177586673617217, R1234ZE: 0.0529617364263329"
R449A.mix,R449A,R449AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.407364566995509, R125: 0.179481207732065, R1234YF: 0.193480840388364, R134A: 0.219673384884062"
R449B.mix,R449B,R449BMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.418353331871839, R125: 0.174861426767915, R1234YF: 0.175699749729428, R134A: 0.231085491630818"
R450A.mix,R450A,R450AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R134A: 0.447322067369848, R1234ZE: 0.552677932630152"
R451A.mix,R451A,R451AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R1234YF: 0.887346670041529, R134A: 0.112653329958471"
R451B.mix,R451B,R451BMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R1234YF: 0.876445928959364, R134A: 0.123554071040636"
R452A.mix,R452A,R452AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.218864360337465, R125: 0.508837870465814, R1234YF: 0.272297769196721"
R453A.mix,R453A,R453AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.341295928327855, R125: 0.147936968933237, R134A: 0.468112901696291, R227EA: 0.0261066945175942, BUTANE: 0.0091646080754323, IPENTANE: 0.00738289844959133"
R454A.mix,R454A,R454AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.541359992223361, R1234YF: 0.458640007776639"
R454B.mix,R454B,R454BMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.829247912869081, R1234YF: 0.170752087130919"
R500.mix,R500,R500Mixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R12: 0.606101741397223, R152A: 0.393898258602777"
R501.mix,R501,R501Mixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.807509678166191, R12: 0.192490321833809"
R502.mix,R502,R502Mixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.629994467193889, R115: 0.370005532806111"
R503.mix,R503,R503Mixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R23: 0.49970034990839, R13: 0.50029965009161"
R504.mix,R504,R504Mixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.734239632563771, R115: 0.265760367436229"
R507A.mix,R507A,R507AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.411839711774438, R143A: 0.588160288225562"
R508A.mix,R508A,R508AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R23: 0.557576966356198, R116: 0.442423033643802"
R508B.mix,R508B,R508BMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R23: 0.626751006700703, R116: 0.373248993299297"
R509A.mix,R509A,R509AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.630790210153023, R218: 0.369209789846977"
R510A.mix,R510A,R510AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - DME: 0.902458936722509, ISOBUTAN: 0.0975410632774913"
R511A.mix,R511A,R511AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - PROPANE: 0.952038489443906, DME: 0.0479615105560936"
R512A.mix,R512A,R512AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R134A: 0.0329487458964343, R152A: 0.967051254103566"
R513A.mix,R513A,R513AMixture,7,Predefined Mixtures of Pure Fluids,FALSE,FALSE,FALSE,FALSE,null,null,"Mole Fractions - R1234YF: 0.532425755929735, R134A: 0.467574244070265"


================================================
FILE: notebooks/propsSI_mixtures.csv
================================================
propsName,menuName,idName,category,basic,incompressibleMixture,minConcentration,maxConcentration,longDescription
Air.mix,Air,AirMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - NITROGEN: 0.7812, ARGON: 0.0092, OXYGEN: 0.2096"
Amarillo.mix,Amarillo,AmarilloMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - METHANE: 0.906724, NITROGEN: 0.031284, CO2: 0.004676, ETHANE: 0.045279, PROPANE: 0.00828, ISOBUTAN: 0.001037, BUTANE: 0.001563, IPENTANE: 0.000321, PENTANE: 0.000443, HEXANE: 0.000393"
Ekofisk.mix,Ekofisk,EkofiskMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - METHANE: 0.859063, NITROGEN: 0.010068, CO2: 0.014954, ETHANE: 0.084919, PROPANE: 0.023015, ISOBUTAN: 0.003486, BUTANE: 0.003506, IPENTANE: 0.000509, PENTANE: 0.00048"
GulfCoast.mix,GulfCoast,GulfCoastMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - METHANE: 0.965222, NITROGEN: 0.002595, CO2: 0.005956, ETHANE: 0.018186, PROPANE: 0.004596, ISOBUTAN: 0.000977, BUTANE: 0.001007, IPENTANE: 0.000473, PENTANE: 0.000324, HEXANE: 0.000664"
HighCO2.mix,HighCO2,HighCO2Mixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - METHANE: 0.81212, NITROGEN: 0.05702, CO2: 0.07585, ETHANE: 0.04303, PROPANE: 0.00895, ISOBUTAN: 0.00151, BUTANE: 0.00152"
HighN2.mix,HighN2,HighN2Mixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - METHANE: 0.81441, NITROGEN: 0.13465, CO2: 0.00985, ETHANE: 0.033, PROPANE: 0.00605, ISOBUTAN: 0.001, BUTANE: 0.00104"
NaturalGasSample.mix,NaturalGasSample,NaturalGasSampleMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - METHANE: 0.95123, NITROGEN: 0.00089, CO2: 0.02555, ETHANE: 0.01835, PROPANE: 0.00238, ISOBUTAN: 0.0004, BUTANE: 0.00016, IPENTANE: 0.00014, PENTANE: 0.00011, HEXANE: 0.00079"
R401A.mix,R401A,R401AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.578854210704231, R152A: 0.185871453986601, R124: 0.235274335309169"
R401B.mix,R401B,R401BMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.654924685341436, R152A: 0.154607382276918, R124: 0.190467932381646"
R401C.mix,R401C,R401CMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.385591186504412, R152A: 0.229445970225924, R124: 0.384962843269664"
R402A.mix,R402A,R402AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.507659889396724, PROPANE: 0.0460590346231213, R22: 0.446281075980154"
R402B.mix,R402B,R402BMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.299858744498276, PROPANE: 0.0429562491180057, R22: 0.657185006383719"
R403A.mix,R403A,R403AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - PROPANE: 0.104301635230068, R22: 0.797852142841926, R218: 0.0978462219280052"
R403B.mix,R403B,R403BMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - PROPANE: 0.117083478399255, R22: 0.668734422027154, R218: 0.214182099573591"
R404A.mix,R404A,R404AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.357816784026318, R134A: 0.0382639950410712, R143A: 0.603919220932611"
R405A.mix,R405A,R405AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.582397185883849, R152A: 0.118598940913682, R142B: 0.0612463586573, RC318: 0.237757514545169"
R406A.mix,R406A,R406AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.571559096367276, ISOBUTAN: 0.0618403319459979, R142B: 0.366600571686726"
R407A.mix,R407A,R407AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.346419854360797, R125: 0.300315552114308, R134A: 0.353264593524896"
R407B.mix,R407B,R407BMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.197865007175653, R125: 0.600360468492644, R134A: 0.201774524331703"
R407C.mix,R407C,R407CMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.381109419953993, R125: 0.179558888662016, R134A: 0.439331691383991"
R407D.mix,R407D,R407DMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.262268077791873, R125: 0.113681680758968, R134A: 0.624050241449159"
R407E.mix,R407E,R407EMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.402611526984881, R125: 0.104708637358978, R134A: 0.492679835656141"
R407F.mix,R407F,R407FMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.473194694453358, R125: 0.205109095413331, R134A: 0.321696210133311"
R408A.mix,R408A,R408AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.0507496395780536, R143A: 0.476277681499092, R22: 0.472972678922854"
R409A.mix,R409A,R409AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.676088021274302, R124: 0.178481953421098, R142B: 0.1454300253046"
R409B.mix,R409B,R409BMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.726713817097545, R124: 0.177089324155708, R142B: 0.0961968587467468"
R410A.mix,R410A,R410AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.697614699375863, R125: 0.302385300624138"
R410B.mix,R410B,R410BMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.653688938033229, R125: 0.346311061966771"
R411A.mix,R411A,R411AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - PROPYLEN: 0.0293595987641706, R22: 0.833472654512905, R152A: 0.137167746722925"
R411B.mix,R411B,R411BMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - PROPYLEN: 0.0592216130255444, R22: 0.903048917855743, R152A: 0.0377294691187131"
R412A.mix,R412A,R412AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.746189416536491, R218: 0.0245117299030133, R142B: 0.229298853560496"
R413A.mix,R413A,R413AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R218: 0.0497604388838132, R134A: 0.896582929746185, ISOBUTAN: 0.0536566313700015"
R414A.mix,R414A,R414AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.571718248653786, R124: 0.202422623615037, ISOBUTAN: 0.0667091242374272, R142B: 0.159150003493749"
R414B.mix,R414B,R414BMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.58743911052603, R124: 0.29030851296569, ISOBUTAN: 0.0262178745861124, R142B: 0.0960345019221677"
R415A.mix,R415A,R415AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.776780159383737, R152A: 0.223219840616263"
R415B.mix,R415B,R415BMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.202949716550675, R152A: 0.797050283449325"
R416A.mix,R416A,R416AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R134A: 0.647182715864291, R124: 0.323933072881677, BUTANE: 0.0288842112540324"
R417A.mix,R417A,R417AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.414456113615123, R134A: 0.523100248809492, BUTANE: 0.0624436375753851"
R418A.mix,R418A,R418AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - PROPANE: 0.0287766462758765, R22: 0.939204558675462, R152A: 0.0320187950486611"
R419A.mix,R419A,R419AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.701459965531065, R134A: 0.203604819551495, DME: 0.0949352149174398"
R420A.mix,R420A,R420AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R134A: 0.878387913267685, R142B: 0.121612086732315"
R421A.mix,R421A,R421AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.540011717389644, R134A: 0.459988282610356"
R421B.mix,R421B,R421BMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.828099498512419, R134A: 0.171900501487581"
R422A.mix,R422A,R422AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.805501067600345, R134A: 0.128043250123554, ISOBUTAN: 0.0664556822761011"
R422B.mix,R422B,R422BMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.497287395965083, R134A: 0.446700400155301, ISOBUTAN: 0.0560122038796163"
R422C.mix,R422C,R422CMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.774757115908852, R134A: 0.166711388687975, ISOBUTAN: 0.0585314954031729"
R422D.mix,R422D,R422DMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.596291711495645, R134A: 0.339399053279791, ISOBUTAN: 0.064309235224564"
R423A.mix,R423A,R423AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R134A: 0.648115324820034, R227EA: 0.351884675179966"
R424A.mix,R424A,R424AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.45615402931289, R134A: 0.49939050863627, ISOBUTAN: 0.0167872396578164, BUTANE: 0.0186524885086849, IPENTANE: 0.00901573388433862"
R425A.mix,R425A,R425AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.321134464075019, R134A: 0.615130603145805, R227EA: 0.0637349327791751"
R426A.mix,R426A,R426AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.0431546741714159, R134A: 0.925684310853531, BUTANE: 0.0227152573734822, IPENTANE: 0.00844575760157109"
R427A.mix,R427A,R427AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.260775797534104, R125: 0.188391404795509, R143A: 0.107618901019853, R134A: 0.443213896650535"
R428A.mix,R428A,R428AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.694325251072399, R143A: 0.255893190962662, PROPANE: 0.0146310583647717, ISOBUTAN: 0.0351504996001673"
R429A.mix,R429A,R429AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - DME: 0.66113457206158, R152A: 0.0768533364747054, ISOBUTAN: 0.262012091463714"
R430A.mix,R430A,R430AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R152A: 0.735906531919507, ISOBUTAN: 0.264093468080493"
R431A.mix,R431A,R431AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - PROPANE: 0.785742532365466, R152A: 0.214257467634534"
R432A.mix,R432A,R432AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - PROPYLEN: 0.814097241703795, DME: 0.185902758296205"
R433A.mix,R433A,R433AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - PROPYLEN: 0.309917763130151, PROPANE: 0.690082236869849"
R434A.mix,R434A,R434AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.556782765664377, R143A: 0.226468961005242, R134A: 0.165810098372986, ISOBUTAN: 0.0509381749573948"
R435A.mix,R435A,R435AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - DME: 0.85152261670421, R152A: 0.14847738329579"
R436A.mix,R436A,R436AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - PROPANE: 0.62652773298942, ISOBUTAN: 0.37347226701058"
R436B.mix,R436B,R436BMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - PROPANE: 0.588127503607667, ISOBUTAN: 0.411872496392333"
R437A.mix,R437A,R437AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.168496314343733, R134A: 0.797898667324292, BUTANE: 0.0249804624362383, PENTANE: 0.00862455589573693"
R438A.mix,R438A,R438AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.161915681788051, R125: 0.371558801739542, R134A: 0.42929872424902, BUTANE: 0.0289854872298073, IPENTANE: 0.00824130499357989"
R441A.mix,R441A,R441AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - ETHANE: 0.049800395690461, PROPANE: 0.600310262208399, ISOBUTAN: 0.0498654644324665, BUTANE: 0.300023877668674"
R442A.mix,R442A,R442AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.487220106766942, R125: 0.211188495005419, R134A: 0.240409765511042, R152A: 0.0371371957951017, R227EA: 0.0240444369214954"
R443A.mix,R443A,R443AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - PROPYLEN: 0.568232931233387, PROPANE: 0.394367661677695, ISOBUTAN: 0.0373994070889183"
R444A.mix,R444A,R444AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.223042202171548, R152A: 0.0731981570161227, R1234ZE: 0.703759640812329"
R500.mix,R500,R500Mixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R12: 0.606101741397223, R152A: 0.393898258602777"
R501.mix,R501,R501Mixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.807509678166191, R12: 0.192490321833809"
R502.mix,R502,R502Mixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.629994467193889, R115: 0.370005532806111"
R503.mix,R503,R503Mixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R23: 0.49970034990839, R13: 0.50029965009161"
R504.mix,R504,R504Mixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.734239632563771, R115: 0.265760367436229"
R507A.mix,R507A,R507AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.411839711774438, R143A: 0.588160288225562"
R508A.mix,R508A,R508AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R23: 0.557576966356198, R116: 0.442423033643802"
R508B.mix,R508B,R508BMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R23: 0.626751006700703, R116: 0.373248993299297"
R509A.mix,R509A,R509AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R22: 0.630790210153023, R218: 0.369209789846977"
R510A.mix,R510A,R510AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - DME: 0.902458936722509, ISOBUTAN: 0.0975410632774913"
R512A.mix,R512A,R512AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R134A: 0.0329487458964343, R152A: 0.967051254103566"
GulfCoastGas(NIST1).mix,GulfCoastGas(NIST1),GulfCoastGas(NIST1)Mixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - METHANE: 0.965222, NITROGEN: 0.002595, CO2: 0.005956, ETHANE: 0.018186, PROPANE: 0.004596, ISOBUTAN: 0.000977, BUTANE: 0.001007, IPENTANE: 0.000473, PENTANE: 0.000324, HEXANE: 0.000664"
TypicalNaturalGas.mix,TypicalNaturalGas,TypicalNaturalGasMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - METHANE: 0.95123, NITROGEN: 0.00089, CO2: 0.02555, ETHANE: 0.01835, PROPANE: 0.00238, ISOBUTAN: 0.0004, BUTANE: 0.00016, IPENTANE: 0.00014, PENTANE: 0.00011, HEXANE: 0.00079"
R417B.mix,R417B,R417BMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.744566872257699, R134A: 0.202885026732296, BUTANE: 0.052548101010005"
R417C.mix,R417C,R417CMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.168533780311387, R134A: 0.801126056234188, BUTANE: 0.0303401634544254"
R419B.mix,R419B,R419BMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.425134881380361, R134A: 0.494935410459673, DME: 0.0799297081599657"
R422E.mix,R422E,R422EMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.528211539833383, R134A: 0.421012248071509, ISOBUTAN: 0.0507762120951078"
R429A.mix,R429A,R429AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - DME: 0.66113457206158, R152A: 0.0768533364747054, ISOBUTAN: 0.262012091463714"
R430A.mix,R430A,R430AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R152A: 0.735906531919507, ISOBUTAN: 0.264093468080493"
R431A.mix,R431A,R431AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - PROPANE: 0.785742532365466, R152A: 0.214257467634534"
R432A.mix,R432A,R432AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - PROPYLEN: 0.814097241703795, DME: 0.185902758296205"
R433A.mix,R433A,R433AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - PROPYLEN: 0.309917763130151, PROPANE: 0.690082236869849"
R433B.mix,R433B,R433BMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - PROPYLEN: 0.0522701063955236, PROPANE: 0.947729893604476"
R433C.mix,R433C,R433CMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - PROPYLEN: 0.25887610544032, PROPANE: 0.74112389455968"
R434A.mix,R434A,R434AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R125: 0.556782765664377, R143A: 0.226468961005242, R134A: 0.165810098372986, ISOBUTAN: 0.0509381749573948"
R438A.mix,R438A,R438AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.161915681788051, R125: 0.371558801739542, R134A: 0.42929872424902, BUTANE: 0.0289854872298073, IPENTANE: 0.00824130499357989"
R439A.mix,R439A,R439AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.684390813603997, R125: 0.278854127894844, ISOBUTAN: 0.0367550585011589"
R440A.mix,R440A,R440AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - PROPANE: 0.00901134733203068, R134A: 0.0103852633851142, R152A: 0.980603389282855"
R444B.mix,R444B,R444BMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.580409174767712, R152A: 0.11015659826248, R1234ZE: 0.309434226969808"
R445A.mix,R445A,R445AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - CO2: 0.14056672736859, R134A: 0.0909466670967859, R1234ZE: 0.768486605534624"
R446A.mix,R446A,R446AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.810347789312053, R1234ZE: 0.157652541387366, BUTANE: 0.0319996693005808"
R447A.mix,R447A,R447AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.824059115538506, R125: 0.0183849541922025, R1234ZE: 0.157555930269292"
R448A.mix,R448A,R448AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.431218201988559, R125: 0.186914131481992, R1234YF: 0.151319256485899, R134A: 0.177586673617217, R1234ZE: 0.0529617364263329"
R449A.mix,R449A,R449AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.407364566995509, R125: 0.179481207732065, R1234YF: 0.193480840388364, R134A: 0.219673384884062"
R449B.mix,R449B,R449BMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.418353331871839, R125: 0.174861426767915, R1234YF: 0.175699749729428, R134A: 0.231085491630818"
R450A.mix,R450A,R450AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R134A: 0.447322067369848, R1234ZE: 0.552677932630152"
R451A.mix,R451A,R451AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R1234YF: 0.887346670041529, R134A: 0.112653329958471"
R451B.mix,R451B,R451BMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R1234YF: 0.876445928959364, R134A: 0.123554071040636"
R452A.mix,R452A,R452AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.218864360337465, R125: 0.508837870465814, R1234YF: 0.272297769196721"
R453A.mix,R453A,R453AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.341295928327855, R125: 0.147936968933237, R134A: 0.468112901696291, R227EA: 0.0261066945175942, BUTANE: 0.0091646080754323, IPENTANE: 0.00738289844959133"
R454A.mix,R454A,R454AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.541359992223361, R1234YF: 0.458640007776639"
R454B.mix,R454B,R454BMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R32: 0.829247912869081, R1234YF: 0.170752087130919"
R511A.mix,R511A,R511AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - PROPANE: 0.952038489443906, DME: 0.0479615105560936"
R513A.mix,R513A,R513AMixture,Predefined Compressible Mixture,FALSE,FALSE,null,null,"Mole Fractions - R1234YF: 0.532425755929735, R134A: 0.467574244070265"


================================================
FILE: notebooks/propsSI_parameters.csv
================================================
propsParameter,idName,units,input,output,trivial,incompressibleInput,incompressibleOutput,description
C,C,J/kg/K,FALSE,TRUE,FALSE,FALSE,TRUE,Mass specific constant pressure specific heat
D,D,kg/m^3,TRUE,TRUE,FALSE,TRUE,TRUE,Mass density
H,H,J/kg,TRUE,TRUE,FALSE,TRUE,TRUE,Mass specific enthalpy
P,P,Pa,TRUE,TRUE,FALSE,TRUE,TRUE,Pressure
Q,Q,mol/mol,TRUE,TRUE,FALSE,FALSE,FALSE,Molar vapor quality
S,S,J/kg/K,TRUE,TRUE,FALSE,TRUE,TRUE,Mass specific entropy
T,T,K,TRUE,TRUE,FALSE,TRUE,TRUE,Temperature
V,V,Pa s,FALSE,TRUE,FALSE,FALSE,TRUE,Viscosity
ACENTRIC,Acentric,,FALSE,TRUE,TRUE,FALSE,FALSE,Acentric factor
ALPHA0,Alpha0,,FALSE,TRUE,FALSE,FALSE,FALSE,Ideal Helmholtz energy
ALPHAR,AlphaR,,FALSE,TRUE,FALSE,FALSE,FALSE,Residual Helmholtz energy
BVIRIAL,BVirial,,FALSE,TRUE,FALSE,FALSE,FALSE,Second virial coefficient
CONDUCTIVITY,Conductivity,W/m/K,FALSE,TRUE,FALSE,FALSE,TRUE,Thermal conductivity
CP0MASS,Cp0Mass,J/kg/K,FALSE,TRUE,FALSE,FALSE,FALSE,Ideal gas mass specific constant pressure specific heat
CP0MOLAR,Cp0Molar,J/mol/K,FALSE,TRUE,FALSE,FALSE,FALSE,Ideal gas molar specific constant pressure specific heat
CPMOLAR,CpMolar,J/mol/K,FALSE,TRUE,FALSE,FALSE,FALSE,Molar specific constant pressure specific heat
CVIRIAL,CVirial,,FALSE,TRUE,FALSE,FALSE,FALSE,Third virial coefficient
CVMASS,CvMass,J/kg/K,FALSE,TRUE,FALSE,FALSE,FALSE,Mass specific constant volume specific heat
CVMOLAR,CvMolar,J/mol/K,FALSE,TRUE,FALSE,FALSE,FALSE,Molar specific constant volume specific heat
D2ALPHA0_DDELTA2_CONSTTAU,D2Alpha0DDelta2,,FALSE,TRUE,FALSE,FALSE,FALSE,Second derivative of ideal Helmholtz energy with delta
D3ALPHA0_DDELTA3_CONSTTAU,D3Alpha0DDelta3,,FALSE,TRUE,FALSE,FALSE,FALSE,Third derivative of ideal Helmholtz energy with delta
DALPHA0_DDELTA_CONSTTAU,DAlpha0DDelta,,FALSE,TRUE,FALSE,FALSE,FALSE,Derivative of ideal Helmholtz energy with delta
DALPHA0_DTAU_CONSTDELTA,DAlpha0DTau,,FALSE,TRUE,FALSE,FALSE,FALSE,Derivative of ideal Helmholtz energy with tau
DALPHAR_DDELTA_CONSTTAU,DAlphaRDDelta,,FALSE,TRUE,FALSE,FALSE,FALSE,Derivative of residual Helmholtz energy with delta
DALPHAR_DTAU_CONSTDELTA,DAlphaRDTau,,FALSE,TRUE,FALSE,FALSE,FALSE,Derivative of residual Helmholtz energy with tau
DBVIRIAL_DT,DBVirialDT,,FALSE,TRUE,FALSE,FALSE,FALSE,Derivative of second virial coefficient with respect to T
DCVIRIAL_DT,DCVirialDT,,FALSE,TRUE,FALSE,FALSE,FALSE,Derivative of third virial coefficient with respect to T
DELTA,Delta,,TRUE,TRUE,FALSE,FALSE,FALSE,Reduced density (rho/rhoc)
DIPOLE_MOMENT,DipoleMoment,C m,FALSE,TRUE,TRUE,FALSE,FALSE,Dipole moment
DMOLAR,DMolar,mol/m^3,TRUE,TRUE,FALSE,FALSE,FALSE,Molar density
FH,FH,,FALSE,TRUE,TRUE,FALSE,FALSE,Flammability hazard
FRACTION_MAX,FractionMax,,FALSE,TRUE,TRUE,FALSE,FALSE,"Fraction (mole, mass, volume) maximum value for incompressible solutions"
FRACTION_MIN,FractionMin,,FALSE,TRUE,TRUE,FALSE,FALSE,"Fraction (mole, mass, volume) minimum value for incompressible solutions"
FUNDAMENTAL_DERIVATIVE_OF_GAS_DYNAMICS,FundDerivGasDyn,,FALSE,TRUE,FALSE,FALSE,FALSE,Fundamental derivative of gas dynamics
GAS_CONSTANT,GasConstant,J/mol/K,FALSE,TRUE,TRUE,FALSE,FALSE,Molar gas constant
G,GMass,J/kg,FALSE,TRUE,FALSE,FALSE,FALSE,Mass specific Gibbs energy
GMOLAR,GMolar,J/mol,FALSE,TRUE,FALSE,FALSE,FALSE,Molar specific Gibbs energy
GMOLAR_RESIDUAL,GMolarResidual,J/mol/K,FALSE,TRUE,FALSE,FALSE,FALSE,Residual molar Gibbs energy
GWP100,GWP100,,FALSE,TRUE,TRUE,FALSE,FALSE,100-year global warming potential
GWP20,GWP20,,FALSE,TRUE,TRUE,FALSE,FALSE,20-year global warming potential
GWP500,GWP500,,FALSE,TRUE,TRUE,FALSE,FALSE,500-year global warming potential
HELMHOLTZMASS,HelmholtzMass,J/kg,FALSE,TRUE,FALSE,FALSE,FALSE,Mass specific Helmholtz energy
HELMHOLTZMOLAR,HelmholtzMolar,J/mol,FALSE,TRUE,FALSE,FALSE,FALSE,Molar specific Helmholtz energy
HH,HH,,FALSE,TRUE,TRUE,FALSE,FALSE,Health hazard
HMOLAR,HMolar,J/mol,TRUE,TRUE,FALSE,FALSE,FALSE,Molar specific enthalpy
HMOLAR_RESIDUAL,HMolarResidual,J/mol/K,FALSE,TRUE,FALSE,FALSE,FALSE,Residual molar enthalpy
ISENTROPIC_EXPANSION_COEFFICIENT,IsentropicExpansionCoefficient,,FALSE,TRUE,FALSE,FALSE,FALSE,Isentropic expansion coefficient
ISOBARIC_EXPANSION_COEFFICIENT,IsobaricExpansionCoefficient,1/K,FALSE,TRUE,FALSE,FALSE,FALSE,Isobaric expansion coefficient
ISOTHERMAL_COMPRESSIBILITY,IsothermalCompressibility,1/Pa,FALSE,TRUE,FALSE,FALSE,FALSE,Isothermal compressibility
M,MolarMass,kg/mol,FALSE,TRUE,TRUE,FALSE,FALSE,Molar mass
ODP,ODP,,FALSE,TRUE,TRUE,FALSE,FALSE,Ozone depletion potential
PCRIT,PCrit,Pa,FALSE,TRUE,TRUE,FALSE,FALSE,Pressure at the critical point
PH,PH,,FALSE,TRUE,TRUE,FALSE,FALSE,Physical hazard
PHASE,Phase,,FALSE,TRUE,FALSE,FALSE,FALSE,Fluid phase index (display as symbolic to get text version)
PIP,PIP,,FALSE,TRUE,FALSE,FALSE,FALSE,Phase identification parameter
PMAX,PMax,Pa,FALSE,TRUE,TRUE,FALSE,FALSE,Maximum pressure limit
PMIN,PMin,Pa,FALSE,TRUE,TRUE,FALSE,FALSE,Minimum pressure limit
PRANDTL,Prandtl,,FALSE,TRUE,FALSE,FALSE,FALSE,Prandtl number
P_REDUCING,PReducing,Pa,FALSE,TRUE,TRUE,FALSE,FALSE,Pressure at the reducing point
PTRIPLE,PTriplePoint,Pa,FALSE,TRUE,TRUE,FALSE,FALSE,Pressure at the triple point (pure only)
RHOCRIT,RhoCrit,kg/m^3,FALSE,TRUE,TRUE,FALSE,FALSE,Mass density at critical point
RHOMASS_REDUCING,RhoMassReducing,kg/m^3,FALSE,TRUE,TRUE,FALSE,FALSE,Mass density at reducing point
RHOMOLAR_CRITICAL,RhoMolarCritical,mol/m^3,FALSE,TRUE,TRUE,FALSE,FALSE,Molar density at critical point
RHOMOLAR_REDUCING,RhoMolarReducing,mol/m^3,FALSE,TRUE,TRUE,FALSE,FALSE,Molar density at reducing point
SMOLAR,SMolar,J/mol/K,TRUE,TRUE,FALSE,FALSE,FALSE,Molar specific entropy
SMOLAR_RESIDUAL,SMolarResidual,J/mol/K,FALSE,TRUE,FALSE,FALSE,FALSE,"Residual molar entropy (sr/R = s(T,rho) - s^0(T,rho))"
A,SoundSpeed,m/s,FALSE,TRUE,FALSE,FALSE,FALSE,Speed of sound
I,SurfaceTension,N/m,FALSE,TRUE,FALSE,FALSE,FALSE,Surface tension
TAU,Tau,,TRUE,TRUE,FALSE,FALSE,FALSE,Reciprocal reduced temperature (Tc/T)
TCRIT,TCritical,K,FALSE,TRUE,TRUE,FALSE,FALSE,Temperature at the critical point
T_FREEZE,TFreeze,K,FALSE,TRUE,TRUE,FALSE,FALSE,Freezing temperature for incompressible solutions
TMAX,TMax,K,FALSE,TRUE,TRUE,FALSE,TRUE,Maximum temperature limit
TMIN,TMin,K,FALSE,TRUE,TRUE,FALSE,TRUE,Minimum temperature limit
T_REDUCING,TReducing,K,FALSE,TRUE,TRUE,FALSE,FALSE,Temperature at the reducing point
TTRIPLE,TTriplePoint,K,FALSE,TRUE,TRUE,FALSE,FALSE,Temperature at the triple point
U,U,J/kg,TRUE,TRUE,FALSE,FALSE,TRUE,Mass specific internal energy
UMOLAR,UMolar,J/mol,TRUE,TRUE,FALSE,FALSE,FALSE,Molar specific internal energy
Z,Z,,FALSE,TRUE,FALSE,FALSE,FALSE,Compressibility factor


================================================
FILE: notebooks/propsSI_parameters_order.csv
================================================
C,Quick Access
D,Quick Access
H,Quick Access
P,Quick Access
Q,Quick Access
S,Quick Access
T,Quick Access
V,Quick Access
ACENTRIC,All
ALPHA0,All
ALPHAR,All
BVIRIAL,All
C,All
CONDUCTIVITY,All
CP0MASS,All
CP0MOLAR,All
CPMOLAR,All
CVIRIAL,All
CVMASS,All
CVMOLAR,All
D,All
D2ALPHA0_DDELTA2_CONSTTAU,All
D3ALPHA0_DDELTA3_CONSTTAU,All
DALPHA0_DDELTA_CONSTTAU,All
DALPHA0_DTAU_CONSTDELTA,All
DALPHAR_DDELTA_CONSTTAU,All
DALPHAR_DTAU_CONSTDELTA,All
DBVIRIAL_DT,All
DCVIRIAL_DT,All
DELTA,All
DIPOLE_MOMENT,All
DMOLAR,All
FH,All
FRACTION_MAX,All
FRACTION_MIN,All
FUNDAMENTAL_DERIVATIVE_OF_GAS_DYNAMICS,All
GAS_CONSTANT,All
G,All
GMOLAR,All
GMOLAR_RESIDUAL,All
GWP100,All
GWP20,All
GWP500,All
H,All
HELMHOLTZMASS,All
HELMHOLTZMOLAR,All
HH,All
HMOLAR,All
HMOLAR_RESIDUAL,All
ISENTROPIC_EXPANSION_COEFFICIENT,All
ISOBARIC_EXPANSION_COEFFICIENT,All
ISOTHERMAL_COMPRESSIBILITY,All
M,All
ODP,All
P,All
PCRIT,All
PH,All
PHASE,All
PIP,All
PMAX,All
PMIN,All
PRANDTL,All
P_REDUCING,All
PTRIPLE,All
Q,All
RHOCRIT,All
RHOMASS_REDUCING,All
RHOMOLAR_CRITICAL,All
RHOMOLAR_REDUCING,All
S,All
SMOLAR,All
SMOLAR_RESIDUAL,All
A,All
I,All
T,All
TAU,All
TCRIT,All
T_FREEZE,All
TMAX,All
TMIN,All
T_REDUCING,All
TTRIPLE,All
U,All
UMOLAR,All
V,All
Z,All


================================================
FILE: notebooks/reserved_ids.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "8aeab359-4296-4706-8dfb-bfaca083fc10",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'1.13.3'"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sympy import *\n",
    "\n",
    "# check sympy version, must match version used by EngineeringPaper.xyz\n",
    "__version__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "fe5a40c3-b7f8-4421-b29d-552438fb32e3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1104"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# add sympy symbols\n",
    "reserved = set(dir())\n",
    "\n",
    "# add python reserved keywords\n",
    "import keyword\n",
    "reserved.update(keyword.kwlist)\n",
    "\n",
    "# add python builtin functions\n",
    "import builtins\n",
    "reserved.update(dir(builtins))\n",
    "\n",
    "# remove symbols that begin with underscore, also remove pi since pi maps one-to-one\n",
    "reserved = {value for value in reserved if not value.startswith('_') and value != 'pi'}\n",
    "\n",
    "len(reserved)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "1488c105-287e-441c-8af1-4f28bd8a5d8c",
   "metadata": {},
   "outputs": [],
   "source": [
    "# defining current set to see what has changed\n",
    "current_reserved = set([\n",
    "  \"Rationals\",\n",
    "  \"assemble_partfrac_list\",\n",
    "  \"FiniteSet\",\n",
    "  \"input\",\n",
    "  \"stationary_points\",\n",
    "  \"assoc_legendre\",\n",
    "  \"sinc\",\n",
    "  \"chebyshevt_poly\",\n",
    "  \"nth_power_roots_poly\",\n",
    "  \"GMPYRationalField\",\n",
    "  \"ComputationFailed\",\n",
    "  \"QQ_I\",\n",
    "  \"lucas\",\n",
    "  \"StopIteration\",\n",
    "  \"Warning\",\n",
    "  \"bin\",\n",
    "  \"acsc\",\n",
    "  \"fourier_series\",\n",
    "  \"cartes\",\n",
    "  \"is_amicable\",\n",
    "  \"adjoint\",\n",
    "  \"substitution\",\n",
    "  \"compositepi\",\n",
    "  \"assoc_laguerre\",\n",
    "  \"expand_power_base\",\n",
    "  \"sturm\",\n",
    "  \"if\",\n",
    "  \"bernoulli\",\n",
    "  \"aiter\",\n",
    "  \"from\",\n",
    "  \"collect\",\n",
    "  \"asin\",\n",
    "  \"Set\",\n",
    "  \"cosh\",\n",
    "  \"pass\",\n",
    "  \"SyntaxError\",\n",
    "  \"super\",\n",
    "  \"mersenne_prime_exponent\",\n",
    "  \"ascii\",\n",
    "  \"hadamard_product\",\n",
    "  \"GeometryError\",\n",
    "  \"FiniteField\",\n",
    "  \"import\",\n",
    "  \"nonlinsolve\",\n",
    "  \"count_ops\",\n",
    "  \"LessThan\",\n",
    "  \"PermissionError\",\n",
    "  \"KeyError\",\n",
    "  \"ZeroDivisionError\",\n",
    "  \"genocchi\",\n",
    "  \"ImmutableSparseMatrix\",\n",
    "  \"assuming\",\n",
    "  \"abs\",\n",
    "  \"release\",\n",
    "  \"oo\",\n",
    "  \"ff\",\n",
    "  \"ExtraneousFactors\",\n",
    "  \"solve_linear\",\n",
    "  \"to_cnf\",\n",
    "  \"sqrt_mod_iter\",\n",
    "  \"Lt\",\n",
    "  \"linear_eq_to_matrix\",\n",
    "  \"wronskian\",\n",
    "  \"ConnectionAbortedError\",\n",
    "  \"ReferenceError\",\n",
    "  \"Tuple\",\n",
    "  \"Implies\",\n",
    "  \"print_maple_code\",\n",
    "  \"print_ccode\",\n",
    "  \"randMatrix\",\n",
    "  \"nfloat\",\n",
    "  \"inverse_laplace_transform\",\n",
    "  \"invert\",\n",
    "  \"NonSquareMatrixError\",\n",
    "  \"ModuleNotFoundError\",\n",
    "  \"solve_poly_inequality\",\n",
    "  \"Polygon\",\n",
    "  \"field_isomorphism\",\n",
    "  \"reduce_abs_inequalities\",\n",
    "  \"csc\",\n",
    "  \"symarray\",\n",
    "  \"Subs\",\n",
    "  \"Dummy\",\n",
    "  \"Contains\",\n",
    "  \"OperationNotSupported\",\n",
    "  \"cofactors\",\n",
    "  \"intersection\",\n",
    "  \"satisfiable\",\n",
    "  \"inverse_hankel_transform\",\n",
    "  \"chr\",\n",
    "  \"SOPform\",\n",
    "  \"license\",\n",
    "  \"round\",\n",
    "  \"sqf_norm\",\n",
    "  \"viete\",\n",
    "  \"erf2inv\",\n",
    "  \"tensordiagonal\",\n",
    "  \"Indexed\",\n",
    "  \"bessely\",\n",
    "  \"isprime\",\n",
    "  \"Rem\",\n",
    "  \"ChildProcessError\",\n",
    "  \"Gt\",\n",
    "  \"subresultants\",\n",
    "  \"Naturals0\",\n",
    "  \"igrlex\",\n",
    "  \"Trace\",\n",
    "  \"polylog\",\n",
    "  \"Basic\",\n",
    "  \"FunctionMatrix\",\n",
    "  \"LeviCivita\",\n",
    "  \"Expr\",\n",
    "  \"ilex\",\n",
    "  \"UnicodeWarning\",\n",
    "  \"mathieusprime\",\n",
    "  \"piecewise_exclusive\",\n",
    "  \"Mod\",\n",
    "  \"hermite\",\n",
    "  \"diagonalize_vector\",\n",
    "  \"FallingFactorial\",\n",
    "  \"MutableDenseMatrix\",\n",
    "  \"None\",\n",
    "  \"async\",\n",
    "  \"interpolating_spline\",\n",
    "  \"Transpose\",\n",
    "  \"pager_print\",\n",
    "  \"AttributeError\",\n",
    "  \"coth\",\n",
    "  \"lcm\",\n",
    "  \"solve_poly_system\",\n",
    "  \"take\",\n",
    "  \"Line\",\n",
    "  \"Symbol\",\n",
    "  \"raise\",\n",
    "  \"TypeError\",\n",
    "  \"denom\",\n",
    "  \"rsolve\",\n",
    "  \"lowergamma\",\n",
    "  \"Atom\",\n",
    "  \"Nor\",\n",
    "  \"fps\",\n",
    "  \"gcd\",\n",
    "  \"get_contraction_structure\",\n",
    "  \"polys\",\n",
    "  \"GeneratorsNeeded\",\n",
    "  \"construct_domain\",\n",
    "  \"motzkin\",\n",
    "  \"Line3D\",\n",
    "  \"else\",\n",
    "  \"atan2\",\n",
    "  \"MellinTransform\",\n",
    "  \"pdiv\",\n",
    "  \"BasePolynomialError\",\n",
    "  \"help\",\n",
    "  \"staticmethod\",\n",
    "  \"check_assumptions\",\n",
    "  \"igcd\",\n",
    "  \"ccode\",\n",
    "  \"factorial\",\n",
    "  \"fft\",\n",
    "  \"Union\",\n",
    "  \"piecewise_fold\",\n",
    "  \"MultivariatePolynomialError\",\n",
    "  \"horner\",\n",
    "  \"primitive_root\",\n",
    "  \"elliptic_k\",\n",
    "  \"rsolve_poly\",\n",
    "  \"break\",\n",
    "  \"BaseException\",\n",
    "  \"OverflowError\",\n",
    "  \"cyclotomic_poly\",\n",
    "  \"Ynm\",\n",
    "  \"reshape\",\n",
    "  \"sstr\",\n",
    "  \"GMPYIntegerRing\",\n",
    "  \"plot_parametric\",\n",
    "  \"SystemError\",\n",
    "  \"CoercionFailed\",\n",
    "  \"IntegerRing\",\n",
    "  \"acsch\",\n",
    "  \"algebras\",\n",
    "  \"lerchphi\",\n",
    "  \"ord0\",\n",
    "  \"residue\",\n",
    "  \"solve_linear_system_LU\",\n",
    "  \"Eq\",\n",
    "  \"cbrt\",\n",
    "  \"ConnectionError\",\n",
    "  \"print_mathml\",\n",
    "  \"Curve\",\n",
    "  \"besselsimp\",\n",
    "  \"factor\",\n",
    "  \"public\",\n",
    "  \"in\",\n",
    "  \"real_root\",\n",
    "  \"inverse_mobius_transform\",\n",
    "  \"itermonomials\",\n",
    "  \"dotprint\",\n",
    "  \"erfc\",\n",
    "  \"false\",\n",
    "  \"DiracDelta\",\n",
    "  \"EmptySequence\",\n",
    "  \"integer_nthroot\",\n",
    "  \"default_sort_key\",\n",
    "  \"grevlex\",\n",
    "  \"mathieucprime\",\n",
    "  \"Inverse\",\n",
    "  \"intt\",\n",
    "  \"nthroot_mod\",\n",
    "  \"solve_univariate_inequality\",\n",
    "  \"RefinementFailed\",\n",
    "  \"globals\",\n",
    "  \"exec\",\n",
    "  \"bytes\",\n",
    "  \"primitive\",\n",
    "  \"print_python\",\n",
    "  \"checkpdesol\",\n",
    "  \"BrokenPipeError\",\n",
    "  \"RootOf\",\n",
    "  \"sin\",\n",
    "  \"zeta\",\n",
    "  \"type\",\n",
    "  \"sqf_list\",\n",
    "  \"EPath\",\n",
    "  \"jacobi_normalized\",\n",
    "  \"numbered_symbols\",\n",
    "  \"n_order\",\n",
    "  \"CosineTransform\",\n",
   
Download .txt
gitextract_l2a2pt1h/

├── .dev.vars
├── .gitattributes
├── .github/
│   ├── pull_request_template.md
│   └── workflows/
│       └── playwright.yml
├── .gitignore
├── .node-version
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── index.html
├── notebooks/
│   ├── HA_parameters.csv
│   ├── HA_parameters_order.csv
│   ├── coolprop_options.ipynb
│   ├── coolprop_predifined_mixtures.ipynb
│   ├── latex_unicode_equivalents.ipynb
│   ├── predefined_mixtures.json
│   ├── propsSI_fluids.csv
│   ├── propsSI_mixtures.csv
│   ├── propsSI_parameters.csv
│   ├── propsSI_parameters_order.csv
│   ├── reserved_ids.ipynb
│   ├── reserved_ids_no_sympy.ipynb
│   └── sympy_test.ipynb
├── package.json
├── playwright.config.mjs
├── public/
│   ├── .well-known/
│   │   └── assetlinks.json
│   ├── _routes.json
│   ├── dimensional_analysis.py
│   ├── iframe_test.html
│   ├── jedi_code_analysis.py
│   ├── manifest.json
│   ├── pyodide/
│   │   ├── contourpy-1.3.1-cp313-cp313-pyodide_2025_0_wasm32.whl
│   │   ├── coolprop-7.2.0-cp313-cp313-pyodide_2025_0_wasm32.whl
│   │   ├── cycler-0.12.1-cp313-none-any.whl
│   │   ├── drawsvg-2.4.1-cp313-none-any.whl
│   │   ├── fonttools-4.56.0-cp313-none-any.whl
│   │   ├── jedi-0.19.2-cp313-none-any.whl
│   │   ├── jinja2-3.1.6-cp313-none-any.whl
│   │   ├── joblib-1.4.2-cp313-none-any.whl
│   │   ├── kiwisolver-1.4.8-cp313-cp313-pyodide_2025_0_wasm32.whl
│   │   ├── markupsafe-3.0.2-cp313-cp313-pyodide_2025_0_wasm32.whl
│   │   ├── matplotlib-3.8.4-cp313-cp313-pyodide_2025_0_wasm32.whl
│   │   ├── mpmath-1.3.0-cp313-none-any.whl
│   │   ├── nlopt-2.9.1-cp313-cp313-pyodide_2025_0_wasm32.whl
│   │   ├── numpy-2.2.5-cp313-cp313-pyodide_2025_0_wasm32.whl
│   │   ├── packaging-24.2-cp313-none-any.whl
│   │   ├── pandas-2.3.3-cp313-cp313-pyodide_2025_0_wasm32.whl
│   │   ├── parso-0.8.4-cp313-none-any.whl
│   │   ├── pillow-11.3.0-cp313-cp313-pyodide_2025_0_wasm32.whl
│   │   ├── pyodide-lock.json
│   │   ├── pyodide.asm.js
│   │   ├── pyodide.asm.wasm
│   │   ├── pyodide.js
│   │   ├── pyparsing-3.2.1-cp313-none-any.whl
│   │   ├── python_dateutil-2.9.0.post0-cp313-none-any.whl
│   │   ├── pytz-2025.2-cp313-none-any.whl
│   │   ├── rich-13.9.4-cp313-none-any.whl
│   │   ├── scikit_learn-1.7.0-cp313-cp313-pyodide_2025_0_wasm32.whl
│   │   ├── scipy-1.14.1-cp313-cp313-pyodide_2025_0_wasm32.whl
│   │   ├── six-1.17.0-cp313-none-any.whl
│   │   ├── sympy-1.13.3-cp313-none-any.whl
│   │   └── threadpoolctl-3.5.0-cp313-none-any.whl
│   └── robots.txt
├── scripts/
│   ├── generate-parser.js
│   ├── get_pyodide_files.py
│   └── setupTypeScript.js
├── src/
│   ├── App.svelte
│   ├── BaseUnitsConfigDialog.svelte
│   ├── ButtonBar.svelte
│   ├── Cell.svelte
│   ├── CellList.svelte
│   ├── CodeCell.svelte
│   ├── CodeEditor.svelte
│   ├── CustomMatrixModal.svelte
│   ├── DataTableCell.svelte
│   ├── DataTableInput.svelte
│   ├── DeletedCell.svelte
│   ├── DocumentTitle.svelte
│   ├── DocumentationCell.svelte
│   ├── DocumentationField.svelte
│   ├── DownloadDocumentModal.svelte
│   ├── DropOverlay.svelte
│   ├── FluidCell.svelte
│   ├── GenerateCodeDialog.svelte
│   ├── IconButton.svelte
│   ├── InsertCell.svelte
│   ├── InsertSheetModal.svelte
│   ├── KeyboardButton.svelte
│   ├── KeyboardShortcuts.svelte
│   ├── MathCell.svelte
│   ├── MathCellConfigDialog.svelte
│   ├── MathField.svelte
│   ├── NumberFormatOptionsDialog.svelte
│   ├── PiecewiseCell.svelte
│   ├── Plot.svelte
│   ├── PlotCell.svelte
│   ├── RequestPersistentStorage.svelte
│   ├── SetDefaultConfigDialog.svelte
│   ├── SystemCell.svelte
│   ├── TableCell.svelte
│   ├── Terms.svelte
│   ├── TextBox.svelte
│   ├── TextButton.svelte
│   ├── TextCheckbox.svelte
│   ├── UnitsDocumentation.svelte
│   ├── UpdateAvailable.svelte
│   ├── Updates.svelte
│   ├── VirtualKeyboard.svelte
│   ├── carbon-theme.scss
│   ├── cells/
│   │   ├── BaseCell.ts
│   │   ├── Cells.ts
│   │   ├── CodeCell.svelte.ts
│   │   ├── DataTableCell.svelte.ts
│   │   ├── DeletedCell.ts
│   │   ├── DocumentationCell.svelte.ts
│   │   ├── FluidCell.svelte.ts
│   │   ├── InsertCell.ts
│   │   ├── MathCell.svelte.ts
│   │   ├── MathField.svelte.ts
│   │   ├── PiecewiseCell.svelte.ts
│   │   ├── PlotCell.svelte.ts
│   │   ├── SystemCell.svelte.ts
│   │   └── TableCell.svelte.ts
│   ├── constants.ts
│   ├── customPlotButtonIcons.ts
│   ├── database/
│   │   ├── _worker.ts
│   │   ├── scripts/
│   │   │   ├── initialize.sql
│   │   │   ├── sheets_used_for_tests.json
│   │   │   └── transfer_sheets.js
│   │   ├── tsconfig.json
│   │   ├── types.ts
│   │   └── utility.ts
│   ├── fluidConstants.ts
│   ├── global.css
│   ├── global.d.ts
│   ├── jediWorker.ts
│   ├── jediWrapper.ts
│   ├── keyboard/
│   │   └── Keyboard.svelte.ts
│   ├── main.js
│   ├── parser/
│   │   ├── LatexIdFragments.g4
│   │   ├── LatexLexer.g4
│   │   ├── LatexLexer.ts
│   │   ├── LatexParser.g4
│   │   ├── LatexParser.ts
│   │   ├── LatexParserVisitor.ts
│   │   ├── LatexToSympy.ts
│   │   ├── constants.ts
│   │   ├── parserWorker.ts
│   │   ├── parserWrapper.ts
│   │   ├── types.ts
│   │   └── utility.ts
│   ├── pyodide-info.json
│   ├── pyodideWorker.ts
│   ├── resultTypes.ts
│   ├── sheet/
│   │   └── Sheet.ts
│   ├── stores.svelte.ts
│   ├── types.ts
│   └── utility.ts
├── svelte.config.js
├── tests/
│   ├── seed-data.json
│   ├── spreadsheets/
│   │   ├── bottle_data.csv
│   │   ├── headers_and_units.csv
│   │   ├── headers_and_units.xlsx
│   │   ├── headers_no_units.xlsx
│   │   ├── interpolation_autosort.csv
│   │   ├── interpolation_repeated_input.csv
│   │   ├── multivariable_interpolation_no_units.xlsx
│   │   ├── multivariable_interpolation_units_large_scale.xlsx
│   │   ├── multivariable_interpolation_units_small_scale.xlsx
│   │   ├── no_headers.xlsx
│   │   ├── plane_interpolation_no_units.csv
│   │   ├── plane_interpolation_with_units_large_scale.csv
│   │   ├── plane_interpolation_with_units_small_scale.csv
│   │   └── polyfit_symbolic.xlsx
│   ├── test_advanced_assignments.spec.mjs
│   ├── test_advanced_var_names.spec.mjs
│   ├── test_basic.spec.mjs
│   ├── test_calc.spec.mjs
│   ├── test_checkpoints.spec.mjs
│   ├── test_code_cell.spec.mjs
│   ├── test_code_cell_rendering.spec.mjs
│   ├── test_complex.spec.mjs
│   ├── test_context_menu.spec.mjs
│   ├── test_csv_export_reference_data_table_format.csv
│   ├── test_custom_base_units.spec.mjs
│   ├── test_data_table.spec.mjs
│   ├── test_database.spec.mjs
│   ├── test_ep_custom_units.spec.mjs
│   ├── test_file_save_open.spec.mjs
│   ├── test_fluid_properties.spec.mjs
│   ├── test_functions.spec.mjs
│   ├── test_generated_code.spec.mjs
│   ├── test_iframe.spec.mjs
│   ├── test_insert_sheet.spec.mjs
│   ├── test_keyboard_shortcuts.spec.mjs
│   ├── test_latex_scientific_notation.spec.mjs
│   ├── test_matrix_addition.spec.mjs
│   ├── test_matrix_calc.spec.mjs
│   ├── test_matrix_determinant.spec.mjs
│   ├── test_matrix_functions.spec.mjs
│   ├── test_matrix_indexing_and_assembling.spec.mjs
│   ├── test_matrix_inverse.spec.mjs
│   ├── test_matrix_keyboard.spec.mjs
│   ├── test_matrix_multiplication.spec.mjs
│   ├── test_matrix_transpose.spec.mjs
│   ├── test_md_export.epxyz
│   ├── test_md_export_reference.md
│   ├── test_md_export_reference_centered.md
│   ├── test_md_export_reference_data_table_format.md
│   ├── test_number_format.spec.mjs
│   ├── test_parse_id_bug.spec.mjs
│   ├── test_piecewise_cell.spec.mjs
│   ├── test_plotting.spec.mjs
│   ├── test_sheet.epxyz
│   ├── test_sheet_long_calculation.epxyz
│   ├── test_sheet_parsing_error.epxyz
│   ├── test_sheet_slow_simplify.epxyz
│   ├── test_sheet_with_results.epxyz
│   ├── test_sheet_with_wrong_result.epxyz
│   ├── test_single_char_scripts.spec.mjs
│   ├── test_sum_and_prod.spec.mjs
│   ├── test_symbolic_expression_error_handling.spec.mjs
│   ├── test_syntax_error_messages.spec.mjs
│   ├── test_system_solve.spec.mjs
│   ├── test_table_cell.spec.mjs
│   └── utility.mjs
├── tsconfig.json
└── vite.config.js
Download .txt
Showing preview only (244K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2536 symbols across 45 files)

FILE: playwright.config.mjs
  function projectFactory (line 66) | function projectFactory(projectNames) {

FILE: public/dimensional_analysis.py
  class ExprWithAssumptions (line 74) | class ExprWithAssumptions(Expr):
  class ImplicitParameter (line 120) | class ImplicitParameter(TypedDict):
  class BaseUserFunction (line 127) | class BaseUserFunction(TypedDict):
  class UserFunction (line 138) | class UserFunction(BaseUserFunction):
  class UserFunctionRange (line 141) | class UserFunctionRange(BaseUserFunction):
  class FunctionUnitsQuery (line 150) | class FunctionUnitsQuery(TypedDict):
  class LocalSubstitution (line 165) | class LocalSubstitution(TypedDict):
  class LocalSubstitutionRange (line 172) | class LocalSubstitutionRange(TypedDict):
  class FunctionArgumentAssignment (line 181) | class FunctionArgumentAssignment(TypedDict):
  class FunctionArgumentQuery (line 191) | class FunctionArgumentQuery(TypedDict):
  class BlankStatement (line 206) | class BlankStatement(TypedDict):
  class QueryAssignmentCommon (line 214) | class QueryAssignmentCommon(TypedDict):
  class AssignmentStatement (line 225) | class AssignmentStatement(QueryAssignmentCommon):
  class SystemSolutionAssignmentStatement (line 236) | class SystemSolutionAssignmentStatement(AssignmentStatement):
  class BaseQueryStatement (line 240) | class BaseQueryStatement(QueryAssignmentCommon):
  class SubQueryStatement (line 252) | class SubQueryStatement(BaseQueryStatement):
  class QueryStatement (line 259) | class QueryStatement(BaseQueryStatement):
  class DataTableQueryStatement (line 267) | class DataTableQueryStatement(BaseQueryStatement):
  class RangeQueryStatement (line 276) | class RangeQueryStatement(BaseQueryStatement):
  class ScatterXValuesQueryStatement (line 296) | class ScatterXValuesQueryStatement(QueryAssignmentCommon):
  class ScatterYValuesQueryStatement (line 315) | class ScatterYValuesQueryStatement(QueryAssignmentCommon):
  class ScatterQueryStatement (line 334) | class ScatterQueryStatement(TypedDict):
  class CodeFunctionRawQuery (line 356) | class CodeFunctionRawQuery(BaseQueryStatement):
  class CodeFunctionQueryStatement (line 362) | class CodeFunctionQueryStatement(BaseQueryStatement):
  class EqualityUnitsQueryStatement (line 374) | class EqualityUnitsQueryStatement(QueryAssignmentCommon):
  class EqualityStatement (line 388) | class EqualityStatement(QueryAssignmentCommon):
  class GuessAssignmentStatement (line 400) | class GuessAssignmentStatement(AssignmentStatement):
  class BaseSystemDefinition (line 403) | class BaseSystemDefinition(TypedDict):
  class ExactSystemDefinition (line 408) | class ExactSystemDefinition(BaseSystemDefinition):
  class NumericalSystemDefinition (line 411) | class NumericalSystemDefinition(BaseSystemDefinition):
  class FluidFunction (line 416) | class FluidFunction(TypedDict):
  class InterpolationFunction (line 428) | class InterpolationFunction(TypedDict):
  class GridInterpolationFunction (line 438) | class GridInterpolationFunction(TypedDict):
  class CustomBaseUnits (line 448) | class CustomBaseUnits(TypedDict):
  class CodeCellDimsAny (line 473) | class CodeCellDimsAny(TypedDict):
  class CodeCellDimsDummy (line 476) | class CodeCellDimsDummy(TypedDict):
  class CodeCellDimsRender (line 479) | class CodeCellDimsRender(TypedDict):
  class CodeCellDimsSpecific (line 483) | class CodeCellDimsSpecific(TypedDict):
  class ScalarCodeCellDims (line 491) | class ScalarCodeCellDims(TypedDict):
  class MatrixCodeCellDims (line 495) | class MatrixCodeCellDims(TypedDict):
  class CodeCellFunction (line 501) | class CodeCellFunction(TypedDict):
  class LocalSubstitutionStatement (line 510) | class LocalSubstitutionStatement(TypedDict):
  class StatementsAndSystems (line 529) | class StatementsAndSystems(TypedDict):
  function is_code_function_query_statement (line 539) | def is_code_function_query_statement(statement: InputAndSystemStatement)...
  class Result (line 543) | class Result(TypedDict):
  class FiniteImagResult (line 558) | class FiniteImagResult(TypedDict):
  class MatrixResult (line 575) | class MatrixResult(TypedDict):
  class PlotData (line 582) | class PlotData(TypedDict):
  class PlotResult (line 610) | class PlotResult(TypedDict):
  class SystemResult (line 614) | class SystemResult(TypedDict):
  class DataTableResult (line 619) | class DataTableResult(TypedDict):
  class CodeCellError (line 623) | class CodeCellError(TypedDict):
  class CodeCellResult (line 630) | class CodeCellResult(TypedDict):
  class RenderResult (line 634) | class RenderResult(TypedDict):
  function is_real_and_finite (line 640) | def is_real_and_finite(result: Result | FiniteImagResult):
  function is_not_matrix_result (line 643) | def is_not_matrix_result(result: Result | FiniteImagResult | MatrixResul...
  function is_matrix_result (line 646) | def is_matrix_result(result: Result | FiniteImagResult | MatrixResult | ...
  function is_matrix (line 649) | def is_matrix(expression: Expr | Matrix) -> TypeGuard[Matrix]:
  class Results (line 652) | class Results(TypedDict):
  class StatementPlotInfo (line 659) | class StatementPlotInfo(TypedDict):
  class StatementDataTableInfo (line 663) | class StatementDataTableInfo(TypedDict):
  class CombinedExpressionBlank (line 668) | class CombinedExpressionBlank(TypedDict):
  class CombinedExpressionNoRange (line 676) | class CombinedExpressionNoRange(TypedDict):
  class CombinedExpressionRange (line 694) | class CombinedExpressionRange(TypedDict):
  class CombinedExpressionScatter (line 720) | class CombinedExpressionScatter(TypedDict):
  class DimValues (line 735) | class DimValues(TypedDict):
  class CodeCellResultCollector (line 739) | class CodeCellResultCollector(TypedDict):
  function get_base_units (line 759) | def get_base_units(custom_base_units: CustomBaseUnits | None= None) -> d...
  function dims_equivalent (line 831) | def dims_equivalent(dims_list: Sequence[dict[Dimension,Expr]]) -> bool:
  function custom_get_dimensional_dependencies_for_name (line 846) | def custom_get_dimensional_dependencies_for_name(self, dimension):
  function round_exp (line 911) | def round_exp(value: float) -> float | int:
  function get_mathjs_units (line 920) | def get_mathjs_units(dimensional_dependencies: dict[Dimension, float], c...
  function get_dims (line 1002) | def get_dims(dimensions: list[float]) -> Expr:
  function custom_hprint_Function (line 1020) | def custom_hprint_Function(self, func: str) -> str:
  function custom_latex (line 1056) | def custom_latex(expression: Expr, variable_name_map: dict[Symbol, str])...
  function ensure_all_equivalent (line 1074) | def ensure_all_equivalent(*args, error_message: str | None = None):
  function ensure_all_unitless (line 1094) | def ensure_all_unitless(*args, error_message: str | None = None):
  function ensure_dims_all_compatible_scalar_or_matrix (line 1103) | def ensure_dims_all_compatible_scalar_or_matrix(*args, func_name = ""):
  function ensure_dims_all_compatible_piecewise (line 1111) | def ensure_dims_all_compatible_piecewise(*args):
  function ensure_unitless_in_angle_out (line 1116) | def ensure_unitless_in_angle_out(arg, func_name=""):
  function ensure_any_unit_in_angle_out (line 1122) | def ensure_any_unit_in_angle_out(arg):
  function ensure_any_unit_in_same_out (line 1128) | def ensure_any_unit_in_same_out(arg):
  function ensure_inverse_dims (line 1134) | def ensure_inverse_dims(arg):
  function custom_transpose (line 1152) | def custom_transpose(arg):
  function custom_determinant (line 1155) | def custom_determinant(arg):
  function custom_matmul (line 1158) | def custom_matmul(exp1: Expr, exp2: Expr):
  function custom_multiply_dims (line 1166) | def custom_multiply_dims(matmult: bool, *args: Expr):
  function custom_min (line 1211) | def custom_min(*args: Expr):
  function custom_sum (line 1217) | def custom_sum(*args: Expr):
  function custom_average (line 1223) | def custom_average(*args: Expr):
  function custom_stdev (line 1229) | def custom_stdev(population, *args: Expr):
  function custom_count (line 1245) | def custom_count(*args: Expr):
  function custom_max (line 1251) | def custom_max(*args: Expr):
  function custom_round (line 1257) | def custom_round(expression: Expr):
  function custom_range (line 1260) | def custom_range(*args: Expr):
  function custom_range_dims (line 1291) | def custom_range_dims(*args: Expr, dim_values: DimValues):
  class PlaceholderFunction (line 1294) | class PlaceholderFunction(TypedDict):
  function UniversalInverse (line 1301) | def UniversalInverse(expression: Expr) -> Expr:
  function prep_matrix_indices (line 1304) | def prep_matrix_indices(expression: Expr, row_start: Expr, row_stop: Exp...
  function IndexMatrix (line 1377) | def IndexMatrix(expression: Expr, row_start: Expr, row_stop: Expr, row_s...
  function IndexMatrix_dims (line 1403) | def IndexMatrix_dims(expression: Expr,
  function custom_numrows (line 1434) | def custom_numrows(expression: Expr):
  function custom_numcols (line 1440) | def custom_numcols(expression: Expr):
  function _factorial_imp_ (line 1446) | def _factorial_imp_(arg1: float):
  function custom_norm (line 1454) | def custom_norm(expression: Matrix):
  function custom_dot (line 1457) | def custom_dot(exp1: Matrix, exp2: Matrix):
  function custom_derivative (line 1460) | def custom_derivative(operand: Expr, diff_var: Expr, order: int | None =...
  function custom_derivative_dims (line 1466) | def custom_derivative_dims(operand: Expr, diff_var: Expr, order: int | N...
  function custom_indefinite_integral (line 1471) | def custom_indefinite_integral(integrand: Expr, integral_var: Expr):
  function custom_indefinite_integral_dims (line 1474) | def custom_indefinite_integral_dims(integrand: Expr, integral_var: Expr):
  function custom_integral (line 1477) | def custom_integral(integrand: Expr, lower_limit: Expr, upper_limit: Sym...
  function custom_integral_dims_transform (line 1480) | def custom_integral_dims_transform(integrand: Expr, lower_limit: Expr, u...
  function custom_integral_dims (line 1483) | def custom_integral_dims(integrand: Expr, lower_limit: Expr, upper_limit...
  function custom_summation (line 1487) | def custom_summation(operand: Expr, dummy_var: Symbol, start: Expr, end:...
  function custom_summation_dims (line 1494) | def custom_summation_dims(operand: Expr, dummy_var: Symbol, start: Expr,...
  function custom_product (line 1504) | def custom_product(operand: Expr, dummy_var: Symbol, start: Expr, end: E...
  function custom_product_dims (line 1511) | def custom_product_dims(operand: Expr, dummy_var: Symbol, start: Expr, e...
  function custom_add_dims (line 1521) | def custom_add_dims(*args: Expr):
  function custom_pow (line 1524) | def custom_pow(base: Expr, exponent: Expr):
  function custom_pow_dims (line 1535) | def custom_pow_dims(base: Expr, exponent: Expr, dim_values: DimValues):
  function PropsSI_wrapper (line 1541) | def PropsSI_wrapper(fluid_function: FluidFunction):
  function fluid_dims (line 1572) | def fluid_dims(fluid_function: FluidFunction, input1, input2):
  class TextFloat (line 1579) | class TextFloat(Float):
    method __new__ (line 1580) | def __new__(cls, value, text):
    method __init__ (line 1583) | def __init__(self, value, text):
    method _latex (line 1586) | def _latex(self, printer):
  function PhaseSI_wrapper (line 1590) | def PhaseSI_wrapper(fluid_function: FluidFunction):
  function HAPropsSI_wrapper (line 1616) | def HAPropsSI_wrapper(fluid_function: FluidFunction):
  function HA_fluid_dims (line 1649) | def HA_fluid_dims(fluid_function: FluidFunction, input1, input2, input3):
  function get_fluid_placeholder_map (line 1656) | def get_fluid_placeholder_map(fluid_functions: list[FluidFunction]) -> d...
  function get_interpolation_wrapper (line 1682) | def get_interpolation_wrapper(interpolation_function: InterpolationFunct...
  function get_multi_interpolation_wrapper (line 1731) | def get_multi_interpolation_wrapper(interpolation_function: Interpolatio...
  function get_grid_interpolation_wrapper (line 1778) | def get_grid_interpolation_wrapper(interpolation_function: GridInterpola...
  function get_polyfit_wrapper (line 1822) | def get_polyfit_wrapper(polyfit_function: InterpolationFunction):
  function get_multi_polyfit_wrapper (line 1844) | def get_multi_polyfit_wrapper(interpolation_function: InterpolationFunct...
  function get_interpolation_placeholder_map (line 1889) | def get_interpolation_placeholder_map(interpolation_functions: list[Inte...
  class DataTableSubs (line 1919) | class DataTableSubs:
    method __init__ (line 1920) | def __init__(self):
    method get_next_id (line 1925) | def get_next_id(self):
  function wrap_code_cell_function (line 1930) | def wrap_code_cell_function(func: Callable, buffer: io.StringIO, excepti...
  function compile_code_cell_function (line 1949) | def compile_code_cell_function(code_cell_function: CodeCellFunction,
  function check_code_cell_input (line 2044) | def check_code_cell_input(input: Expr, input_num: int, dims: CodeCellInp...
  function code_cell_dims_check (line 2074) | def code_cell_dims_check(*inputs: Expr, code_cell_function: CodeCellFunc...
  function convert_from_SI (line 2142) | def convert_from_SI(dims: CodeCellDims, value):
  function convert_to_SI (line 2163) | def convert_to_SI(dims: CodeCellDims, value):
  function get_code_cell_sympy_mode_wrapper (line 2181) | def get_code_cell_sympy_mode_wrapper(code_cell_function: CodeCellFunction,
  class RenderExpr (line 2266) | class RenderExpr(Expr):
    method __new__ (line 2269) | def __new__(cls, render_type:Literal["text"] | Literal["html"] | Liter...
    method __init__ (line 2272) | def __init__(self, render_type:Literal["text"] | Literal["html"] | Lit...
  function get_code_cell_wrapper (line 2277) | def get_code_cell_wrapper(code_cell_function: CodeCellFunction,
  function get_code_cell_placeholder_map (line 2419) | def get_code_cell_placeholder_map(code_cell_functions: list[CodeCellFunc...
  class TextSymbol (line 2521) | class TextSymbol(Symbol):
    method __new__ (line 2522) | def __new__(cls, text):
    method __init__ (line 2525) | def __init__(self, text):
    method _latex (line 2528) | def _latex(self, printer):
  function replace_sympy_funcs_with_placeholder_funcs (line 2531) | def replace_sympy_funcs_with_placeholder_funcs(expression: Expr) -> Expr:
  function numerical_mode_decorator (line 2537) | def numerical_mode_decorator(func):
  function replace_placeholder_funcs (line 2552) | def replace_placeholder_funcs(numerical_mode: bool, expr: Expr, error: E...
  function custom_get_dimensional_dependencies (line 2733) | def custom_get_dimensional_dependencies(expression: Expr | None):
  function dimensional_analysis (line 2738) | def dimensional_analysis(dimensional_analysis_expression: Expr | None, d...
  class ParameterError (line 2769) | class ParameterError(Exception):
  class DuplicateAssignment (line 2772) | class DuplicateAssignment(Exception):
  class ReferenceCycle (line 2775) | class ReferenceCycle(Exception):
  class ParsingError (line 2778) | class ParsingError(Exception):
  class NoSolutionFound (line 2781) | class NoSolutionFound(Exception):
  class OverDeterminedSystem (line 2784) | class OverDeterminedSystem(Exception):
  class UnderDeterminedSystem (line 2787) | class UnderDeterminedSystem(Exception):
  class EmptyColumnData (line 2790) | class EmptyColumnData(Exception):
  class Extrapolation (line 2793) | class Extrapolation(Exception):
  class MatrixIndexingError (line 2796) | class MatrixIndexingError(Exception):
  class CodeCellException (line 2799) | class CodeCellException(Exception):
  function get_sorted_statements (line 2802) | def get_sorted_statements(statements: list[Statement], custom_definition...
  function get_all_implicit_parameters (line 2848) | def get_all_implicit_parameters(statements: Sequence[InputAndSystemState...
  function combine_variable_name_maps (line 2855) | def combine_variable_name_maps(statements: Sequence[InputAndSystemStatem...
  function expand_with_sub_statements (line 2862) | def expand_with_sub_statements(statements: list[InputAndSystemStatement]):
  function get_parameter_subs (line 2895) | def get_parameter_subs(parameters: list[ImplicitParameter], convert_floa...
  function add_dummy_subs (line 2912) | def add_dummy_subs(expr: Expr, placeholder_map: dict[Function, Placehold...
  function sympify_statements (line 2959) | def sympify_statements(statements: list[Statement] | list[EqualityStatem...
  function remove_implicit (line 2976) | def remove_implicit(input_set: set[str]) -> set[str]:
  function solve_system (line 2981) | def solve_system(statements: list[EqualityStatement], variables: list[str],
  function solve_system_numerical (line 3065) | def solve_system_numerical(statements: list[EqualityStatement], variable...
  function get_range_result (line 3152) | def get_range_result(range_result: CombinedExpressionRange,
  function get_scatter_error_object (line 3289) | def get_scatter_error_object(error_message: str) -> PlotResult:
  function get_scatter_plot_result (line 3300) | def get_scatter_plot_result(combined_scatter: CombinedExpressionScatter,
  function combine_plot_and_table_data_results (line 3437) | def combine_plot_and_table_data_results(results: list[Result | FiniteIma...
  function combine_parametric_plot_data_into_y (line 3494) | def combine_parametric_plot_data_into_y(y_plot_data: PlotData, x_plot_da...
  function subs_wrapper (line 3524) | def subs_wrapper(expression: Expr, subs: dict[str, str] | dict[str, Expr...
  function get_evaluated_expression (line 3534) | def get_evaluated_expression(expression: Expr,
  function get_result (line 3552) | def get_result(evaluated_expression: ExprWithAssumptions, dimensional_an...
  function get_hashable_matrix_units (line 3619) | def get_hashable_matrix_units(matrix_result: MatrixResult) -> tuple[tupl...
  function evaluate_statements (line 3630) | def evaluate_statements(statements: list[InputAndSystemStatement],
  function get_query_values (line 3935) | def get_query_values(statements: list[InputAndSystemStatement],
  function get_system_solution (line 3985) | def get_system_solution(statements, variables,
  function get_system_solution_numerical (line 4031) | def get_system_solution_numerical(statements, variables, guesses,
  function collect_code_cell_results (line 4078) | def collect_code_cell_results(code_cell_result_store: dict[str, CodeCell...
  function solve_sheet (line 4113) | def solve_sheet(statements_and_systems) -> str:
  function get_custom_placeholder_map (line 4236) | def get_custom_placeholder_map(fluid_definitions: list[FluidFunction],
  class FuncContainer (line 4269) | class FuncContainer(object):
  function solve_sheet_profile (line 4273) | def solve_sheet_profile(input):

FILE: public/jedi_code_analysis.py
  class CodeContextRequest (line 6) | class CodeContextRequest(TypedDict):
  class AutocompleteSuggestion (line 12) | class AutocompleteSuggestion(TypedDict):
  class CodeContextResult (line 19) | class CodeContextResult(TypedDict):
  function get_code_context (line 24) | def get_code_context(request_json: str):
  class FuncContainer (line 65) | class FuncContainer(object):

FILE: public/pyodide/pyodide.asm.js
  function locateFile (line 8) | function locateFile(path){if(Module["locateFile"]){return Module["locate...
  function assert (line 8) | function assert(condition,text){if(!condition){abort(text)}}
  function updateMemoryViews (line 8) | function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEA...
  function initMemory (line 8) | function initMemory(){if(Module["wasmMemory"]){wasmMemory=Module["wasmMe...
  function preRun (line 8) | function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="func...
  function initRuntime (line 8) | function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__RE...
  function preMain (line 8) | function preMain(){callRuntimeCallbacks(onMains)}
  function exitRuntime (line 8) | function exitRuntime(){___funcs_on_exit();callRuntimeCallbacks(onExits);...
  function postRun (line 8) | function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="f...
  function getUniqueRunDependency (line 8) | function getUniqueRunDependency(id){return id}
  function addRunDependency (line 8) | function addRunDependency(id){runDependencies++;Module["monitorRunDepend...
  function removeRunDependency (line 8) | function removeRunDependency(id){runDependencies--;Module["monitorRunDep...
  function abort (line 8) | function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";...
  function findWasmBinary (line 8) | function findWasmBinary(){return locateFile("pyodide.asm.wasm")}
  function getBinarySync (line 8) | function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return...
  function getWasmBinary (line 8) | async function getWasmBinary(binaryFile){if(!wasmBinary){try{var respons...
  function instantiateArrayBuffer (line 8) | async function instantiateArrayBuffer(binaryFile,imports){try{var binary...
  function instantiateAsync (line 8) | async function instantiateAsync(binary,binaryFile,imports){if(!binary&&t...
  function getWasmImports (line 8) | function getWasmImports(){return{env:wasmImports,wasi_snapshot_preview1:...
  function createWasm (line 8) | async function createWasm(){function receiveInstance(instance,module){wa...
  class ExitStatus (line 8) | class ExitStatus{name="ExitStatus";constructor(status){this.message=`Pro...
    method constructor (line 8) | constructor(status){this.message=`Program terminated with exit(${statu...
  method get (line 8) | get(obj,symName){var rtn=GOT[symName];if(!rtn){rtn=GOT[symName]=new WebA...
  function getU8 (line 8) | function getU8(){return binary[offset++]}
  function getLEB (line 8) | function getLEB(){var ret=0;var mul=1;while(1){var byte=binary[offset++]...
  function getString (line 8) | function getString(){var len=getLEB();offset+=len;return UTF8ArrayToStri...
  function getStringList (line 8) | function getStringList(){var count=getLEB();var rtn=[];while(count--)rtn...
  function failIf (line 8) | function failIf(condition,message){if(condition)throw new Error(message)}
  function getValue (line 8) | function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(t...
  method init (line 8) | init(){newDSO("__main__",0,wasmImports)}
  function loadModule (line 8) | function loadModule(){var memAlign=Math.pow(2,metadata.memoryAlign);var ...
  function trim (line 8) | function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[sta...
  method init (line 8) | init(){}
  method shutdown (line 8) | shutdown(){}
  method register (line 8) | register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevi...
  method open (line 8) | open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.Er...
  method close (line 8) | close(stream){stream.tty.ops.fsync(stream.tty)}
  method fsync (line 8) | fsync(stream){stream.tty.ops.fsync(stream.tty)}
  method read (line 8) | read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.ge...
  method write (line 8) | write(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.p...
  method get_char (line 8) | get_char(tty){return FS_stdin_getChar()}
  method put_char (line 8) | put_char(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.out...
  method fsync (line 8) | fsync(tty){if(tty.output?.length>0){out(UTF8ArrayToString(tty.output));t...
  method ioctl_tcgets (line 8) | ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:353...
  method ioctl_tcsets (line 8) | ioctl_tcsets(tty,optional_actions,data){return 0}
  method ioctl_tiocgwinsz (line 8) | ioctl_tiocgwinsz(tty){return[24,80]}
  method put_char (line 8) | put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.out...
  method fsync (line 8) | fsync(tty){if(tty.output?.length>0){err(UTF8ArrayToString(tty.output));t...
  method mount (line 8) | mount(mount){return MEMFS.createNode(null,"/",16895,0)}
  method createNode (line 8) | createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){...
  method getFileDataAsTypedArray (line 8) | getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0)...
  method expandFileStorage (line 8) | expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node....
  method resizeFileStorage (line 8) | resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(new...
  method getattr (line 8) | getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr...
  method setattr (line 8) | setattr(node,attr){for(const key of["mode","atime","mtime","ctime"]){if(...
  method lookup (line 8) | lookup(parent,name){throw MEMFS.doesNotExistError}
  method mknod (line 8) | mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)}
  method rename (line 8) | rename(old_node,new_dir,new_name){var new_node;try{new_node=FS.lookupNod...
  method unlink (line 8) | unlink(parent,name){delete parent.contents[name];parent.ctime=parent.mti...
  method rmdir (line 8) | rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node...
  method readdir (line 8) | readdir(node){return[".","..",...Object.keys(node.contents)]}
  method symlink (line 8) | symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname...
  method readlink (line 8) | readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}ret...
  method read (line 8) | read(stream,buffer,offset,length,position){var contents=stream.node.cont...
  method write (line 8) | write(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===HE...
  method llseek (line 8) | llseek(stream,offset,whence){var position=offset;if(whence===1){position...
  method mmap (line 8) | mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode))...
  method msync (line 8) | msync(stream,buffer,offset,length,mmapFlags){MEMFS.stream_ops.write(stre...
  function processData (line 8) | function processData(byteArray){function finish(byteArray){preFinish?.()...
  function onPersistComplete (line 8) | function onPersistComplete(){if(mount.idbPersistState==="again")startPer...
  function startPersist (line 8) | function startPersist(){mount.idbPersistState="idb";IDBFS.syncfs(mount,f...
  function isRealDir (line 8) | function isRealDir(p){return p!=="."&&p!==".."}
  function toAbsolute (line 8) | function toAbsolute(root){return p=>PATH.join2(root,p)}
  function done (line 8) | function done(err){if(err&&!errored){errored=true;return callback(err)}}
  method staticInit (line 8) | staticInit(){NODEFS.isWindows=!!process.platform.match(/^win/);var flags...
  method convertNodeCode (line 8) | convertNodeCode(e){var code=e.code;return ERRNO_CODES[code]}
  method tryFSOperation (line 8) | tryFSOperation(f){try{return f()}catch(e){if(!e.code)throw e;if(e.code==...
  method mount (line 8) | mount(mount){return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts...
  method createNode (line 8) | createNode(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!...
  method getMode (line 8) | getMode(path){return NODEFS.tryFSOperation(()=>{var mode=fs.lstatSync(pa...
  method realPath (line 8) | realPath(node){var parts=[];while(node.parent!==node){parts.push(node.na...
  method flagsForNode (line 8) | flagsForNode(flags){flags&=~2097152;flags&=~2048;flags&=~32768;flags&=~5...
  method getattr (line 8) | getattr(func,node){var stat=NODEFS.tryFSOperation(func);if(NODEFS.isWind...
  method setattr (line 8) | setattr(arg,node,attr,chmod,utimes,truncate,stat){NODEFS.tryFSOperation(...
  method getattr (line 8) | getattr(node){var path=NODEFS.realPath(node);return NODEFS.getattr(()=>f...
  method setattr (line 8) | setattr(node,attr){var path=NODEFS.realPath(node);if(attr.mode!=null&&at...
  method lookup (line 8) | lookup(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);va...
  method mknod (line 8) | mknod(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,...
  method rename (line 8) | rename(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var ...
  method unlink (line 8) | unlink(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);NO...
  method rmdir (line 8) | rmdir(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);NOD...
  method readdir (line 8) | readdir(node){var path=NODEFS.realPath(node);return NODEFS.tryFSOperatio...
  method symlink (line 8) | symlink(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(p...
  method readlink (line 8) | readlink(node){var path=NODEFS.realPath(node);return NODEFS.tryFSOperati...
  method statfs (line 8) | statfs(path){var stats=NODEFS.tryFSOperation(()=>fs.statfsSync(path));st...
  method getattr (line 8) | getattr(stream){return NODEFS.getattr(()=>fs.fstatSync(stream.nfd),strea...
  method setattr (line 8) | setattr(stream,attr){NODEFS.setattr(stream.nfd,stream.node,attr,fs.fchmo...
  method open (line 8) | open(stream){var path=NODEFS.realPath(stream.node);NODEFS.tryFSOperation...
  method close (line 8) | close(stream){NODEFS.tryFSOperation(()=>{if(stream.nfd&&--stream.shared....
  method dup (line 8) | dup(stream){stream.shared.refcount++}
  method read (line 8) | read(stream,buffer,offset,length,position){return NODEFS.tryFSOperation(...
  method write (line 8) | write(stream,buffer,offset,length,position){return NODEFS.tryFSOperation...
  method llseek (line 8) | llseek(stream,offset,whence){var position=offset;if(whence===1){position...
  method mmap (line 8) | mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode))...
  method msync (line 8) | msync(stream,buffer,offset,length,mmapFlags){NODEFS.stream_ops.write(str...
  method mount (line 8) | mount(mount){assert(ENVIRONMENT_IS_WORKER);WORKERFS.reader??=new FileRea...
  method createNode (line 8) | createNode(parent,name,mode,dev,contents,mtime){var node=FS.createNode(p...
  method getattr (line 8) | getattr(node){return{dev:1,ino:node.id,mode:node.mode,nlink:1,uid:0,gid:...
  method setattr (line 8) | setattr(node,attr){for(const key of["mode","atime","mtime","ctime"]){if(...
  method lookup (line 8) | lookup(parent,name){throw new FS.ErrnoError(44)}
  method mknod (line 8) | mknod(parent,name,mode,dev){throw new FS.ErrnoError(63)}
  method rename (line 8) | rename(oldNode,newDir,newName){throw new FS.ErrnoError(63)}
  method unlink (line 8) | unlink(parent,name){throw new FS.ErrnoError(63)}
  method rmdir (line 8) | rmdir(parent,name){throw new FS.ErrnoError(63)}
  method readdir (line 8) | readdir(node){var entries=[".",".."];for(var key of Object.keys(node.con...
  method symlink (line 8) | symlink(parent,newName,oldPath){throw new FS.ErrnoError(63)}
  method read (line 8) | read(stream,buffer,offset,length,position){if(position>=stream.node.size...
  method write (line 8) | write(stream,buffer,offset,length,position){throw new FS.ErrnoError(29)}
  method llseek (line 8) | llseek(stream,offset,whence){var position=offset;if(whence===1){position...
  method mount (line 8) | mount(mount){return PROXYFS.createNode(null,"/",mount.opts.fs.lstat(moun...
  method createNode (line 8) | createNode(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!...
  method realPath (line 8) | realPath(node){var parts=[];while(node.parent!==node){parts.push(node.na...
  method getattr (line 8) | getattr(node){var path=PROXYFS.realPath(node);var stat;try{stat=node.mou...
  method setattr (line 8) | setattr(node,attr){var path=PROXYFS.realPath(node);try{if(attr.mode!==un...
  method lookup (line 8) | lookup(parent,name){try{var path=PATH.join2(PROXYFS.realPath(parent),nam...
  method mknod (line 8) | mknod(parent,name,mode,dev){var node=PROXYFS.createNode(parent,name,mode...
  method rename (line 8) | rename(oldNode,newDir,newName){var oldPath=PROXYFS.realPath(oldNode);var...
  method unlink (line 8) | unlink(parent,name){var path=PATH.join2(PROXYFS.realPath(parent),name);t...
  method rmdir (line 8) | rmdir(parent,name){var path=PATH.join2(PROXYFS.realPath(parent),name);tr...
  method readdir (line 8) | readdir(node){var path=PROXYFS.realPath(node);try{return node.mount.opts...
  method symlink (line 8) | symlink(parent,newName,oldPath){var newPath=PATH.join2(PROXYFS.realPath(...
  method readlink (line 8) | readlink(node){var path=PROXYFS.realPath(node);try{return node.mount.opt...
  method open (line 8) | open(stream){var path=PROXYFS.realPath(stream.node);try{stream.nfd=strea...
  method close (line 8) | close(stream){try{stream.node.mount.opts.fs.close(stream.nfd)}catch(e){i...
  method read (line 8) | read(stream,buffer,offset,length,position){try{return stream.node.mount....
  method write (line 8) | write(stream,buffer,offset,length,position){try{return stream.node.mount...
  method llseek (line 8) | llseek(stream,offset,whence){var position=offset;if(whence===1){position...
  method init (line 8) | init(){if(LZ4.codec)return;LZ4.codec=(()=>{var MiniLZ4=function(){var ex...
  method loadPackage (line 8) | loadPackage(pack,preloadPlugin){LZ4.init();var compressedData=pack["comp...
  method createNode (line 8) | createNode(parent,name,mode,dev,contents,mtime){var node=FS.createNode(p...
  method getattr (line 8) | getattr(node){return{dev:1,ino:node.id,mode:node.mode,nlink:1,uid:0,gid:...
  method setattr (line 8) | setattr(node,attr){for(const key of["mode","atime","mtime","ctime"]){if(...
  method lookup (line 8) | lookup(parent,name){throw new FS.ErrnoError(44)}
  method mknod (line 8) | mknod(parent,name,mode,dev){throw new FS.ErrnoError(63)}
  method rename (line 8) | rename(oldNode,newDir,newName){throw new FS.ErrnoError(63)}
  method unlink (line 8) | unlink(parent,name){throw new FS.ErrnoError(63)}
  method rmdir (line 8) | rmdir(parent,name){throw new FS.ErrnoError(63)}
  method readdir (line 8) | readdir(node){throw new FS.ErrnoError(63)}
  method symlink (line 8) | symlink(parent,newName,oldPath){throw new FS.ErrnoError(63)}
  method read (line 8) | read(stream,buffer,offset,length,position){length=Math.min(length,stream...
  method write (line 8) | write(stream,buffer,offset,length,position){throw new FS.ErrnoError(29)}
  method llseek (line 8) | llseek(stream,offset,whence){var position=offset;if(whence===1){position...
  method constructor (line 8) | constructor(errno){this.errno=errno}
  method object (line 8) | get object(){return this.node}
  method object (line 8) | set object(val){this.node=val}
  method isRead (line 8) | get isRead(){return(this.flags&2097155)!==1}
  method isWrite (line 8) | get isWrite(){return(this.flags&2097155)!==0}
  method isAppend (line 8) | get isAppend(){return this.flags&1024}
  method flags (line 8) | get flags(){return this.shared.flags}
  method flags (line 8) | set flags(val){this.shared.flags=val}
  method position (line 8) | get position(){return this.shared.position}
  method position (line 8) | set position(val){this.shared.position=val}
  method constructor (line 8) | constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=p...
  method read (line 8) | get read(){return(this.mode&this.readMode)===this.readMode}
  method read (line 8) | set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}
  method write (line 8) | get write(){return(this.mode&this.writeMode)===this.writeMode}
  method write (line 8) | set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}
  method isFolder (line 8) | get isFolder(){return FS.isDir(this.mode)}
  method isDevice (line 8) | get isDevice(){return FS.isChrdev(this.mode)}
  method lookupPath (line 8) | lookupPath(path,opts={}){if(!path){throw new FS.ErrnoError(44)}opts.foll...
  method getPath (line 8) | getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mo...
  method hashName (line 8) | hashName(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(...
  method hashAddNode (line 8) | hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.na...
  method hashRemoveNode (line 8) | hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(F...
  method lookupNode (line 8) | lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){thr...
  method createNode (line 8) | createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mod...
  method destroyNode (line 8) | destroyNode(node){FS.hashRemoveNode(node)}
  method isRoot (line 8) | isRoot(node){return node===node.parent}
  method isMountpoint (line 8) | isMountpoint(node){return!!node.mounted}
  method isFile (line 8) | isFile(mode){return(mode&61440)===32768}
  method isDir (line 8) | isDir(mode){return(mode&61440)===16384}
  method isLink (line 8) | isLink(mode){return(mode&61440)===40960}
  method isChrdev (line 8) | isChrdev(mode){return(mode&61440)===8192}
  method isBlkdev (line 8) | isBlkdev(mode){return(mode&61440)===24576}
  method isFIFO (line 8) | isFIFO(mode){return(mode&61440)===4096}
  method isSocket (line 8) | isSocket(mode){return(mode&49152)===49152}
  method flagsToPermissionString (line 8) | flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&5...
  method nodePermissions (line 8) | nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.i...
  method mayLookup (line 8) | mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermi...
  method mayCreate (line 8) | mayCreate(dir,name){if(!FS.isDir(dir.mode)){return 54}try{var node=FS.lo...
  method mayDelete (line 8) | mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catc...
  method mayOpen (line 8) | mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return ...
  method checkOpExists (line 8) | checkOpExists(op,err){if(!op){throw new FS.ErrnoError(err)}return op}
  method nextfd (line 8) | nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){retu...
  method getStreamChecked (line 8) | getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new F...
  method createStream (line 8) | createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);...
  method closeStream (line 8) | closeStream(fd){FS.streams[fd]=null}
  method dupStream (line 8) | dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);st...
  method doSetAttr (line 8) | doSetAttr(stream,node,attr){var setattr=stream?.stream_ops.setattr;var a...
  method open (line 8) | open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops...
  method llseek (line 8) | llseek(){throw new FS.ErrnoError(70)}
  method registerDevice (line 8) | registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}}
  method getMounts (line 8) | getMounts(mount){var mounts=[];var check=[mount];while(check.length){var...
  method syncfs (line 8) | syncfs(populate,callback){if(typeof populate=="function"){callback=popul...
  method mount (line 8) | mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountp...
  method unmount (line 8) | unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:fa...
  method lookup (line 8) | lookup(parent,name){return parent.node_ops.lookup(parent,name)}
  method mknod (line 8) | mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var pa...
  method statfs (line 8) | statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).node)}
  method statfsStream (line 8) | statfsStream(stream){return FS.statfsNode(stream.node)}
  method statfsNode (line 8) | statfsNode(node){var rtn={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,ba...
  method create (line 8) | create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}
  method mkdir (line 8) | mkdir(path,mode=511){mode&=511|512;mode|=16384;if(FS.trackingDelegate["o...
  method mkdirTree (line 8) | mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var dir of di...
  method mkdev (line 8) | mkdev(path,mode,dev){if(typeof dev=="undefined"){dev=mode;mode=438}mode|...
  method symlink (line 8) | symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.Errn...
  method rename (line 8) | rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new...
  method rmdir (line 8) | rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=look...
  method readdir (line 8) | readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=look...
  method unlink (line 8) | unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=loo...
  method readlink (line 8) | readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!l...
  method stat (line 8) | stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow}...
  method fstat (line 8) | fstat(fd){var stream=FS.getStreamChecked(fd);var node=stream.node;var ge...
  method lstat (line 8) | lstat(path){return FS.stat(path,true)}
  method doChmod (line 8) | doChmod(stream,node,mode,dontFollow){FS.doSetAttr(stream,node,{mode:mode...
  method chmod (line 8) | chmod(path,mode,dontFollow){var node;if(typeof path=="string"){var looku...
  method lchmod (line 8) | lchmod(path,mode){FS.chmod(path,mode,true)}
  method fchmod (line 8) | fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.doChmod(stream,str...
  method doChown (line 8) | doChown(stream,node,dontFollow){FS.doSetAttr(stream,node,{timestamp:Date...
  method chown (line 8) | chown(path,uid,gid,dontFollow){var node;if(typeof path=="string"){var lo...
  method lchown (line 8) | lchown(path,uid,gid){FS.chown(path,uid,gid,true)}
  method fchown (line 8) | fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.doChown(stream,...
  method doTruncate (line 8) | doTruncate(stream,node,len){if(FS.isDir(node.mode)){throw new FS.ErrnoEr...
  method truncate (line 8) | truncate(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typ...
  method ftruncate (line 8) | ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if(len<0||(stream.f...
  method utime (line 8) | utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var...
  method open (line 8) | open(path,flags,mode=438){if(path===""){throw new FS.ErrnoError(44)}flag...
  method close (line 8) | close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stre...
  method isClosed (line 8) | isClosed(stream){return stream.fd===null}
  method llseek (line 8) | llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoE...
  method read (line 8) | read(stream,buffer,offset,length,position){if(length<0||position<0){thro...
  method write (line 8) | write(stream,buffer,offset,length,position,canOwn){if(length<0||position...
  method mmap (line 8) | mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&...
  method msync (line 8) | msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync...
  method ioctl (line 8) | ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoErr...
  method readFile (line 8) | readFile(path,opts={}){opts.flags=opts.flags||0;opts.encoding=opts.encod...
  method writeFile (line 8) | writeFile(path,data,opts={}){opts.flags=opts.flags||577;var stream=FS.op...
  method chdir (line 8) | chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node=...
  method createDefaultDirectories (line 8) | createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("...
  method createDefaultDevices (line 8) | createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3...
  method createSpecialDirectories (line 8) | createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/pr...
  method createStandardStreams (line 8) | createStandardStreams(input,output,error){if(input){FS.createDevice("/de...
  method staticInit (line 8) | staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.crea...
  method init (line 8) | init(input,output,error){FS.initialized=true;input??=Module["stdin"];out...
  method quit (line 8) | quit(){FS.initialized=false;_fflush(0);for(var stream of FS.streams){if(...
  method findObject (line 8) | findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontRes...
  method analyzePath (line 8) | analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,...
  method createPath (line 8) | createPath(parent,path,canRead,canWrite){parent=typeof parent=="string"?...
  method createFile (line 8) | createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(...
  method createDataFile (line 8) | createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;i...
  method createDevice (line 8) | createDevice(parent,name,input,output){var path=PATH.join2(typeof parent...
  method forceLoadFile (line 8) | forceLoadFile(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents...
  method createLazyFile (line 8) | createLazyFile(parent,name,url,canRead,canWrite){class LazyUint8Array{le...
  function loadDynamicLibrary (line 8) | function loadDynamicLibrary(libName,flags={global:true,nodelete:true},lo...
  function setValue (line 8) | function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";sw...
  function ___assert_fail (line 8) | function ___assert_fail(condition,filename,line,func){condition>>>=0;fil...
  function ___call_sighandler (line 8) | function ___call_sighandler(fp,sig){fp>>>=0;return getWasmTableEntry(fp)...
  method calculateAt (line 8) | calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var ...
  method writeStat (line 8) | writeStat(buf,stat){HEAP32[buf>>>2>>>0]=stat.dev;HEAP32[buf+4>>>2>>>0]=s...
  method writeStatFs (line 8) | writeStatFs(buf,stats){HEAP32[buf+4>>>2>>>0]=stats.bsize;HEAP32[buf+40>>...
  method doMsync (line 8) | doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){t...
  method getStreamFromFD (line 8) | getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream}
  method getStr (line 8) | getStr(ptr){var ret=UTF8ToString(ptr);return ret}
  method on (line 8) | on(event,callback){SOCKFS.callbacks[event]=callback}
  method emit (line 8) | emit(event,param){SOCKFS.callbacks[event]?.(param)}
  method mount (line 8) | mount(mount){SOCKFS.websocketArgs=Module["websocket"]||{};(Module["webso...
  method createSocket (line 8) | createSocket(family,type,protocol){type&=~526336;var streaming=type==1;i...
  method getSocket (line 8) | getSocket(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(strea...
  method poll (line 8) | poll(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)}
  method ioctl (line 8) | ioctl(stream,request,varargs){var sock=stream.node.sock;return sock.sock...
  method read (line 8) | read(stream,buffer,offset,length,position){var sock=stream.node.sock;var...
  method write (line 8) | write(stream,buffer,offset,length,position){var sock=stream.node.sock;re...
  method close (line 8) | close(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}
  method nextname (line 8) | nextname(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return...
  method createPeer (line 8) | createPeer(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr...
  method getPeer (line 8) | getPeer(sock,addr,port){return sock.peers[addr+":"+port]}
  method addPeer (line 8) | addPeer(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer}
  method removePeer (line 8) | removePeer(sock,peer){delete sock.peers[peer.addr+":"+peer.port]}
  method handlePeerEvents (line 8) | handlePeerEvents(sock,peer){var first=true;var handleOpen=function(){soc...
  method poll (line 8) | poll(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|...
  method ioctl (line 8) | ioctl(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.r...
  method close (line 8) | close(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.serve...
  method bind (line 8) | bind(sock,addr,port){if(typeof sock.saddr!="undefined"||typeof sock.spor...
  method connect (line 8) | connect(sock,addr,port){if(sock.server){throw new FS.ErrnoError(138)}if(...
  method listen (line 8) | listen(sock,backlog){if(!ENVIRONMENT_IS_NODE){throw new FS.ErrnoError(13...
  method accept (line 8) | accept(listensock){if(!listensock.server||!listensock.pending.length){th...
  method getname (line 8) | getname(sock,peer){var addr,port;if(peer){if(sock.daddr===undefined||soc...
  method sendmsg (line 8) | sendmsg(sock,buffer,offset,length,addr,port){if(sock.type===2){if(addr==...
  method recvmsg (line 8) | recvmsg(sock,length){if(sock.type===1&&sock.server){throw new FS.ErrnoEr...
  method lookup_name (line 8) | lookup_name(name){var res=inetPton4(name);if(res!==null){return name}res...
  method lookup_addr (line 8) | lookup_addr(addr){if(DNS.address_map.names[addr]){return DNS.address_map...
  function ___syscall_accept4 (line 8) | function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){addr>>>=0;addrl...
  function ___syscall_bind (line 8) | function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){addr>>>=0;addrlen>>>=...
  function ___syscall_chdir (line 8) | function ___syscall_chdir(path){path>>>=0;try{path=SYSCALLS.getStr(path)...
  function ___syscall_chmod (line 8) | function ___syscall_chmod(path,mode){path>>>=0;try{path=SYSCALLS.getStr(...
  function ___syscall_connect (line 8) | function ___syscall_connect(fd,addr,addrlen,d1,d2,d3){addr>>>=0;addrlen>...
  function ___syscall_dup (line 8) | function ___syscall_dup(fd){try{var old=SYSCALLS.getStreamFromFD(fd);ret...
  function ___syscall_dup3 (line 8) | function ___syscall_dup3(fd,newfd,flags){try{var old=SYSCALLS.getStreamF...
  function ___syscall_faccessat (line 8) | function ___syscall_faccessat(dirfd,path,amode,flags){path>>>=0;try{path...
  function ___syscall_fallocate (line 8) | function ___syscall_fallocate(fd,mode,offset,len){offset=bigintToI53Chec...
  function ___syscall_fchdir (line 8) | function ___syscall_fchdir(fd){try{var stream=SYSCALLS.getStreamFromFD(f...
  function ___syscall_fchmod (line 8) | function ___syscall_fchmod(fd,mode){try{FS.fchmod(fd,mode);return 0}catc...
  function ___syscall_fchmodat2 (line 8) | function ___syscall_fchmodat2(dirfd,path,mode,flags){path>>>=0;try{var n...
  function ___syscall_fchown32 (line 8) | function ___syscall_fchown32(fd,owner,group){try{FS.fchown(fd,owner,grou...
  function ___syscall_fchownat (line 8) | function ___syscall_fchownat(dirfd,path,owner,group,flags){path>>>=0;try...
  function ___syscall_fcntl64 (line 8) | function ___syscall_fcntl64(fd,cmd,varargs){varargs>>>=0;SYSCALLS.vararg...
  function ___syscall_fdatasync (line 8) | function ___syscall_fdatasync(fd){try{var stream=SYSCALLS.getStreamFromF...
  function ___syscall_fstat64 (line 8) | function ___syscall_fstat64(fd,buf){buf>>>=0;try{return SYSCALLS.writeSt...
  function ___syscall_fstatfs64 (line 8) | function ___syscall_fstatfs64(fd,size,buf){size>>>=0;buf>>>=0;try{var st...
  function ___syscall_ftruncate64 (line 8) | function ___syscall_ftruncate64(fd,length){length=bigintToI53Checked(len...
  function ___syscall_getcwd (line 8) | function ___syscall_getcwd(buf,size){buf>>>=0;size>>>=0;try{if(size===0)...
  function ___syscall_getdents64 (line 8) | function ___syscall_getdents64(fd,dirp,count){dirp>>>=0;count>>>=0;try{v...
  function ___syscall_getpeername (line 8) | function ___syscall_getpeername(fd,addr,addrlen,d1,d2,d3){addr>>>=0;addr...
  function ___syscall_getsockname (line 8) | function ___syscall_getsockname(fd,addr,addrlen,d1,d2,d3){addr>>>=0;addr...
  function ___syscall_getsockopt (line 8) | function ___syscall_getsockopt(fd,level,optname,optval,optlen,d1){optval...
  function ___syscall_ioctl (line 8) | function ___syscall_ioctl(fd,op,varargs){varargs>>>=0;SYSCALLS.varargs=v...
  function ___syscall_listen (line 8) | function ___syscall_listen(fd,backlog){try{var sock=getSocketFromFD(fd);...
  function ___syscall_lstat64 (line 8) | function ___syscall_lstat64(path,buf){path>>>=0;buf>>>=0;try{path=SYSCAL...
  function ___syscall_mkdirat (line 8) | function ___syscall_mkdirat(dirfd,path,mode){path>>>=0;try{path=SYSCALLS...
  function ___syscall_mknodat (line 8) | function ___syscall_mknodat(dirfd,path,mode,dev){path>>>=0;try{path=SYSC...
  function ___syscall_newfstatat (line 8) | function ___syscall_newfstatat(dirfd,path,buf,flags){path>>>=0;buf>>>=0;...
  function ___syscall_openat (line 8) | function ___syscall_openat(dirfd,path,flags,varargs){path>>>=0;varargs>>...
  method mount (line 8) | mount(mount){return FS.createNode(null,"/",16384|511,0)}
  method createPipe (line 8) | createPipe(){var pipe={buckets:[],refcnt:2,timestamp:new Date};pipe.buck...
  method getattr (line 8) | getattr(stream){var node=stream.node;var timestamp=node.pipe.timestamp;r...
  method poll (line 8) | poll(stream){var pipe=stream.node.pipe;if((stream.flags&2097155)===1){re...
  method dup (line 8) | dup(stream){stream.node.pipe.refcnt++}
  method ioctl (line 8) | ioctl(stream,request,varargs){return 28}
  method fsync (line 8) | fsync(stream){return 28}
  method read (line 8) | read(stream,buffer,offset,length,position){var pipe=stream.node.pipe;var...
  method write (line 8) | write(stream,buffer,offset,length,position){var pipe=stream.node.pipe;va...
  method close (line 8) | close(stream){var pipe=stream.node.pipe;pipe.refcnt--;if(pipe.refcnt===0...
  method nextname (line 8) | nextname(){if(!PIPEFS.nextname.current){PIPEFS.nextname.current=0}return...
  function ___syscall_pipe (line 8) | function ___syscall_pipe(fdPtr){fdPtr>>>=0;try{if(fdPtr==0){throw new FS...
  function ___syscall_poll (line 8) | function ___syscall_poll(fds,nfds,timeout){fds>>>=0;try{var nonzero=0;fo...
  function ___syscall_readlinkat (line 8) | function ___syscall_readlinkat(dirfd,path,buf,bufsize){path>>>=0;buf>>>=...
  function ___syscall_recvfrom (line 8) | function ___syscall_recvfrom(fd,buf,len,flags,addr,addrlen){buf>>>=0;len...
  function ___syscall_recvmsg (line 8) | function ___syscall_recvmsg(fd,message,flags,d1,d2,d3){message>>>=0;try{...
  function ___syscall_renameat (line 8) | function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){oldpath>...
  function ___syscall_rmdir (line 8) | function ___syscall_rmdir(path){path>>>=0;try{path=SYSCALLS.getStr(path)...
  function ___syscall_sendmsg (line 8) | function ___syscall_sendmsg(fd,message,flags,d1,d2,d3){message>>>=0;d1>>...
  function ___syscall_sendto (line 8) | function ___syscall_sendto(fd,message,length,flags,addr,addr_len){messag...
  function ___syscall_socket (line 8) | function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.cre...
  function ___syscall_stat64 (line 8) | function ___syscall_stat64(path,buf){path>>>=0;buf>>>=0;try{path=SYSCALL...
  function ___syscall_statfs64 (line 8) | function ___syscall_statfs64(path,size,buf){path>>>=0;size>>>=0;buf>>>=0...
  function ___syscall_symlinkat (line 8) | function ___syscall_symlinkat(target,dirfd,linkpath){target>>>=0;linkpat...
  function ___syscall_truncate64 (line 8) | function ___syscall_truncate64(path,length){path>>>=0;length=bigintToI53...
  function ___syscall_unlinkat (line 8) | function ___syscall_unlinkat(dirfd,path,flags){path>>>=0;try{path=SYSCAL...
  function ___syscall_utimensat (line 8) | function ___syscall_utimensat(dirfd,path,times,flags){path>>>=0;times>>>...
  function __dlopen_js (line 8) | function __dlopen_js(handle){handle>>>=0;return dlopenInternal(handle,{l...
  function __dlsym_js (line 8) | function __dlsym_js(handle,symbol,symbolIndex){handle>>>=0;symbol>>>=0;s...
  function __emscripten_dlopen_js (line 8) | function __emscripten_dlopen_js(handle,onsuccess,onerror,user_data){hand...
  function __emscripten_get_progname (line 8) | function __emscripten_get_progname(str,len){str>>>=0;return stringToUTF8...
  function __emscripten_lookup_name (line 8) | function __emscripten_lookup_name(name){name>>>=0;var nameString=UTF8ToS...
  function __emscripten_system (line 8) | function __emscripten_system(command){command>>>=0;if(ENVIRONMENT_IS_NOD...
  function __gmtime_js (line 8) | function __gmtime_js(time,tmPtr){time=bigintToI53Checked(time);tmPtr>>>=...
  function __localtime_js (line 8) | function __localtime_js(time,tmPtr){time=bigintToI53Checked(time);tmPtr>...
  function __mmap_js (line 8) | function __mmap_js(len,prot,flags,fd,offset,allocated,addr){len>>>=0;off...
  function __msync_js (line 8) | function __msync_js(addr,len,prot,flags,fd,offset){addr>>>=0;len>>>=0;of...
  function __munmap_js (line 8) | function __munmap_js(addr,len,prot,flags,fd,offset){addr>>>=0;len>>>=0;o...
  function _clock_res_get (line 8) | function _clock_res_get(clk_id,pres){pres>>>=0;if(!checkWasiClock(clk_id...
  function _clock_time_get (line 8) | function _clock_time_get(clk_id,ignored_precision,ptime){ignored_precisi...
  function _create_sentinel (line 8) | function _create_sentinel(...args){return wasmImports["create_sentinel"]...
  function _emscripten_asm_const_int (line 8) | function _emscripten_asm_const_int(code,sigPtr,argbuf){code>>>=0;sigPtr>...
  function _emscripten_console_error (line 8) | function _emscripten_console_error(str){str>>>=0;console.error(UTF8ToStr...
  function _emscripten_console_log (line 8) | function _emscripten_console_log(str){str>>>=0;console.log(UTF8ToString(...
  function _emscripten_console_trace (line 8) | function _emscripten_console_trace(str){str>>>=0;console.trace(UTF8ToStr...
  function _emscripten_console_warn (line 8) | function _emscripten_console_warn(str){str>>>=0;console.warn(UTF8ToStrin...
  function _emscripten_err (line 8) | function _emscripten_err(str){str>>>=0;return err(UTF8ToString(str))}
  function _emscripten_get_heap_max (line 8) | function _emscripten_get_heap_max(){return getHeapMax()}
  function _glBindAttribLocation (line 8) | function _glBindAttribLocation(program,index,name){name>>>=0;GLctx.bindA...
  function _glBindBufferRange (line 8) | function _glBindBufferRange(target,index,buffer,offset,ptrsize){offset>>...
  function _glBufferData (line 8) | function _glBufferData(target,size,data,usage){size>>>=0;data>>>=0;GLctx...
  function _glBufferSubData (line 8) | function _glBufferSubData(target,offset,size,data){offset>>>=0;size>>>=0...
  function _glClearBufferfv (line 8) | function _glClearBufferfv(buffer,drawbuffer,value){value>>>=0;GLctx.clea...
  function _glClearBufferiv (line 8) | function _glClearBufferiv(buffer,drawbuffer,value){value>>>=0;GLctx.clea...
  function _glClearBufferuiv (line 8) | function _glClearBufferuiv(buffer,drawbuffer,value){value>>>=0;GLctx.cle...
  function _glClientWaitSync (line 8) | function _glClientWaitSync(sync,flags,timeout){sync>>>=0;timeout=Number(...
  function _glCompressedTexImage2D (line 8) | function _glCompressedTexImage2D(target,level,internalFormat,width,heigh...
  function _glCompressedTexImage3D (line 8) | function _glCompressedTexImage3D(target,level,internalFormat,width,heigh...
  function _glCompressedTexSubImage2D (line 8) | function _glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,h...
  function _glCompressedTexSubImage3D (line 8) | function _glCompressedTexSubImage3D(target,level,xoffset,yoffset,zoffset...
  function _glCopyBufferSubData (line 8) | function _glCopyBufferSubData(x0,x1,x2,x3,x4){x2>>>=0;x3>>>=0;x4>>>=0;re...
  function _glDeleteBuffers (line 8) | function _glDeleteBuffers(n,buffers){buffers>>>=0;for(var i=0;i<n;i++){v...
  function _glDeleteFramebuffers (line 8) | function _glDeleteFramebuffers(n,framebuffers){framebuffers>>>=0;for(var...
  function _glDeleteQueries (line 8) | function _glDeleteQueries(n,ids){ids>>>=0;for(var i=0;i<n;i++){var id=HE...
  function _glDeleteQueriesEXT (line 8) | function _glDeleteQueriesEXT(n,ids){ids>>>=0;for(var i=0;i<n;i++){var id...
  function _glDeleteRenderbuffers (line 8) | function _glDeleteRenderbuffers(n,renderbuffers){renderbuffers>>>=0;for(...
  function _glDeleteSamplers (line 8) | function _glDeleteSamplers(n,samplers){samplers>>>=0;for(var i=0;i<n;i++...
  function _glDeleteSync (line 8) | function _glDeleteSync(id){id>>>=0;if(!id)return;var sync=GL.syncs[id];i...
  function _glDeleteTextures (line 8) | function _glDeleteTextures(n,textures){textures>>>=0;for(var i=0;i<n;i++...
  function _glDeleteTransformFeedbacks (line 8) | function _glDeleteTransformFeedbacks(n,ids){ids>>>=0;for(var i=0;i<n;i++...
  function _glDeleteVertexArrays (line 8) | function _glDeleteVertexArrays(n,vaos){vaos>>>=0;for(var i=0;i<n;i++){va...
  function _glDrawBuffers (line 8) | function _glDrawBuffers(n,bufs){bufs>>>=0;var bufArray=tempFixedLengthAr...
  function _glDrawElements (line 8) | function _glDrawElements(mode,count,type,indices){indices>>>=0;GLctx.dra...
  function _glDrawElementsInstanced (line 8) | function _glDrawElementsInstanced(mode,count,type,indices,primcount){ind...
  function _glDrawRangeElements (line 8) | function _glDrawRangeElements(mode,start,end,count,type,indices){indices...
  function _glFenceSync (line 8) | function _glFenceSync(condition,flags){var sync=GLctx.fenceSync(conditio...
  function _glGenBuffers (line 8) | function _glGenBuffers(n,buffers){buffers>>>=0;GL.genObject(n,buffers,"c...
  function _glGenFramebuffers (line 8) | function _glGenFramebuffers(n,ids){ids>>>=0;GL.genObject(n,ids,"createFr...
  function _glGenQueries (line 8) | function _glGenQueries(n,ids){ids>>>=0;GL.genObject(n,ids,"createQuery",...
  function _glGenQueriesEXT (line 8) | function _glGenQueriesEXT(n,ids){ids>>>=0;for(var i=0;i<n;i++){var query...
  function _glGenRenderbuffers (line 8) | function _glGenRenderbuffers(n,renderbuffers){renderbuffers>>>=0;GL.genO...
  function _glGenSamplers (line 8) | function _glGenSamplers(n,samplers){samplers>>>=0;GL.genObject(n,sampler...
  function _glGenTextures (line 8) | function _glGenTextures(n,textures){textures>>>=0;GL.genObject(n,texture...
  function _glGenTransformFeedbacks (line 8) | function _glGenTransformFeedbacks(n,ids){ids>>>=0;GL.genObject(n,ids,"cr...
  function _glGenVertexArrays (line 8) | function _glGenVertexArrays(n,arrays){arrays>>>=0;GL.genObject(n,arrays,...
  function _glGetActiveAttrib (line 8) | function _glGetActiveAttrib(program,index,bufSize,length,size,type,name)...
  function _glGetActiveUniform (line 8) | function _glGetActiveUniform(program,index,bufSize,length,size,type,name...
  function _glGetActiveUniformBlockName (line 8) | function _glGetActiveUniformBlockName(program,uniformBlockIndex,bufSize,...
  function _glGetActiveUniformBlockiv (line 8) | function _glGetActiveUniformBlockiv(program,uniformBlockIndex,pname,para...
  function _glGetActiveUniformsiv (line 8) | function _glGetActiveUniformsiv(program,uniformCount,uniformIndices,pnam...
  function _glGetAttachedShaders (line 8) | function _glGetAttachedShaders(program,maxCount,count,shaders){count>>>=...
  function _glGetAttribLocation (line 8) | function _glGetAttribLocation(program,name){name>>>=0;return GLctx.getAt...
  function _glGetBooleanv (line 8) | function _glGetBooleanv(name_,p){p>>>=0;return emscriptenWebGLGet(name_,...
  function _glGetBufferParameteri64v (line 8) | function _glGetBufferParameteri64v(target,value,data){data>>>=0;if(!data...
  function _glGetBufferParameteriv (line 8) | function _glGetBufferParameteriv(target,value,data){data>>>=0;if(!data){...
  function _glGetFloatv (line 8) | function _glGetFloatv(name_,p){p>>>=0;return emscriptenWebGLGet(name_,p,2)}
  function _glGetFragDataLocation (line 8) | function _glGetFragDataLocation(program,name){name>>>=0;return GLctx.get...
  function _glGetFramebufferAttachmentParameteriv (line 8) | function _glGetFramebufferAttachmentParameteriv(target,attachment,pname,...
  function _glGetInteger64i_v (line 8) | function _glGetInteger64i_v(target,index,data){data>>>=0;return emscript...
  function _glGetInteger64v (line 8) | function _glGetInteger64v(name_,p){p>>>=0;emscriptenWebGLGet(name_,p,1)}
  function _glGetIntegeri_v (line 8) | function _glGetIntegeri_v(target,index,data){data>>>=0;return emscripten...
  function _glGetIntegerv (line 8) | function _glGetIntegerv(name_,p){p>>>=0;return emscriptenWebGLGet(name_,...
  function _glGetInternalformativ (line 8) | function _glGetInternalformativ(target,internalformat,pname,bufSize,para...
  function _glGetProgramBinary (line 8) | function _glGetProgramBinary(program,bufSize,length,binaryFormat,binary)...
  function _glGetProgramInfoLog (line 8) | function _glGetProgramInfoLog(program,maxLength,length,infoLog){length>>...
  function _glGetProgramiv (line 8) | function _glGetProgramiv(program,pname,p){p>>>=0;if(!p){GL.recordError(1...
  function _glGetQueryObjecti64vEXT (line 8) | function _glGetQueryObjecti64vEXT(id,pname,params){params>>>=0;if(!param...
  function _glGetQueryObjectivEXT (line 8) | function _glGetQueryObjectivEXT(id,pname,params){params>>>=0;if(!params)...
  function _glGetQueryObjectuiv (line 8) | function _glGetQueryObjectuiv(id,pname,params){params>>>=0;if(!params){G...
  function _glGetQueryiv (line 8) | function _glGetQueryiv(target,pname,params){params>>>=0;if(!params){GL.r...
  function _glGetQueryivEXT (line 8) | function _glGetQueryivEXT(target,pname,params){params>>>=0;if(!params){G...
  function _glGetRenderbufferParameteriv (line 8) | function _glGetRenderbufferParameteriv(target,pname,params){params>>>=0;...
  function _glGetSamplerParameterfv (line 8) | function _glGetSamplerParameterfv(sampler,pname,params){params>>>=0;if(!...
  function _glGetSamplerParameteriv (line 8) | function _glGetSamplerParameteriv(sampler,pname,params){params>>>=0;if(!...
  function _glGetShaderInfoLog (line 8) | function _glGetShaderInfoLog(shader,maxLength,length,infoLog){length>>>=...
  function _glGetShaderPrecisionFormat (line 8) | function _glGetShaderPrecisionFormat(shaderType,precisionType,range,prec...
  function _glGetShaderSource (line 8) | function _glGetShaderSource(shader,bufSize,length,source){length>>>=0;so...
  function _glGetShaderiv (line 8) | function _glGetShaderiv(shader,pname,p){p>>>=0;if(!p){GL.recordError(128...
  function _glGetString (line 8) | function _glGetString(name_){var ret=GL.stringCache[name_];if(!ret){swit...
  function _glGetStringi (line 8) | function _glGetStringi(name,index){if(GL.currentContext.version<2){GL.re...
  function _glGetSynciv (line 8) | function _glGetSynciv(sync,pname,bufSize,length,values){sync>>>=0;length...
  function _glGetTexParameterfv (line 8) | function _glGetTexParameterfv(target,pname,params){params>>>=0;if(!param...
  function _glGetTexParameteriv (line 8) | function _glGetTexParameteriv(target,pname,params){params>>>=0;if(!param...
  function _glGetTransformFeedbackVarying (line 8) | function _glGetTransformFeedbackVarying(program,index,bufSize,length,siz...
  function _glGetUniformBlockIndex (line 8) | function _glGetUniformBlockIndex(program,uniformBlockName){uniformBlockN...
  function _glGetUniformIndices (line 8) | function _glGetUniformIndices(program,uniformCount,uniformNames,uniformI...
  function _glGetUniformLocation (line 8) | function _glGetUniformLocation(program,name){name>>>=0;name=UTF8ToString...
  function _glGetUniformfv (line 8) | function _glGetUniformfv(program,location,params){params>>>=0;emscripten...
  function _glGetUniformiv (line 8) | function _glGetUniformiv(program,location,params){params>>>=0;emscripten...
  function _glGetUniformuiv (line 8) | function _glGetUniformuiv(program,location,params){params>>>=0;return em...
  function _glGetVertexAttribIiv (line 8) | function _glGetVertexAttribIiv(index,pname,params){params>>>=0;emscripte...
  function _glGetVertexAttribPointerv (line 8) | function _glGetVertexAttribPointerv(index,pname,pointer){pointer>>>=0;if...
  function _glGetVertexAttribfv (line 8) | function _glGetVertexAttribfv(index,pname,params){params>>>=0;emscripten...
  function _glGetVertexAttribiv (line 8) | function _glGetVertexAttribiv(index,pname,params){params>>>=0;emscripten...
  function _glInvalidateFramebuffer (line 8) | function _glInvalidateFramebuffer(target,numAttachments,attachments){att...
  function _glInvalidateSubFramebuffer (line 8) | function _glInvalidateSubFramebuffer(target,numAttachments,attachments,x...
  function _glIsSync (line 8) | function _glIsSync(sync){sync>>>=0;return GLctx.isSync(GL.syncs[sync])}
  function _glProgramBinary (line 8) | function _glProgramBinary(program,binaryFormat,binary,length){binary>>>=...
  function roundedToNextMultipleOf (line 8) | function roundedToNextMultipleOf(x,y){return x+y-1&-y}
  function _glReadPixels (line 8) | function _glReadPixels(x,y,width,height,format,type,pixels){pixels>>>=0;...
  function _glSamplerParameterfv (line 8) | function _glSamplerParameterfv(sampler,pname,params){params>>>=0;var par...
  function _glSamplerParameteriv (line 8) | function _glSamplerParameteriv(sampler,pname,params){params>>>=0;var par...
  function _glShaderBinary (line 8) | function _glShaderBinary(count,shaders,binaryformat,binary,length){shade...
  function _glShaderSource (line 8) | function _glShaderSource(shader,count,string,length){string>>>=0;length>...
  function _glTexImage2D (line 8) | function _glTexImage2D(target,level,internalFormat,width,height,border,f...
  function _glTexImage3D (line 8) | function _glTexImage3D(target,level,internalFormat,width,height,depth,bo...
  function _glTexParameterfv (line 8) | function _glTexParameterfv(target,pname,params){params>>>=0;var param=HE...
  function _glTexParameteriv (line 8) | function _glTexParameteriv(target,pname,params){params>>>=0;var param=HE...
  function _glTexSubImage2D (line 8) | function _glTexSubImage2D(target,level,xoffset,yoffset,width,height,form...
  function _glTexSubImage3D (line 8) | function _glTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,hei...
  function _glTransformFeedbackVaryings (line 8) | function _glTransformFeedbackVaryings(program,count,varyings,bufferMode)...
  function _glUniform1fv (line 8) | function _glUniform1fv(location,count,value){value>>>=0;if(count<=288){v...
  function _glUniform1iv (line 8) | function _glUniform1iv(location,count,value){value>>>=0;if(count<=288){v...
  function _glUniform1uiv (line 8) | function _glUniform1uiv(location,count,value){value>>>=0;count&&GLctx.un...
  function _glUniform2fv (line 8) | function _glUniform2fv(location,count,value){value>>>=0;if(count<=144){c...
  function _glUniform2iv (line 8) | function _glUniform2iv(location,count,value){value>>>=0;if(count<=144){c...
  function _glUniform2uiv (line 8) | function _glUniform2uiv(location,count,value){value>>>=0;count&&GLctx.un...
  function _glUniform3fv (line 8) | function _glUniform3fv(location,count,value){value>>>=0;if(count<=96){co...
  function _glUniform3iv (line 8) | function _glUniform3iv(location,count,value){value>>>=0;if(count<=96){co...
  function _glUniform3uiv (line 8) | function _glUniform3uiv(location,count,value){value>>>=0;count&&GLctx.un...
  function _glUniform4fv (line 8) | function _glUniform4fv(location,count,value){value>>>=0;if(count<=72){va...
  function _glUniform4iv (line 8) | function _glUniform4iv(location,count,value){value>>>=0;if(count<=72){co...
  function _glUniform4uiv (line 8) | function _glUniform4uiv(location,count,value){value>>>=0;count&&GLctx.un...
  function _glUniformMatrix2fv (line 8) | function _glUniformMatrix2fv(location,count,transpose,value){value>>>=0;...
  function _glUniformMatrix2x3fv (line 8) | function _glUniformMatrix2x3fv(location,count,transpose,value){value>>>=...
  function _glUniformMatrix2x4fv (line 8) | function _glUniformMatrix2x4fv(location,count,transpose,value){value>>>=...
  function _glUniformMatrix3fv (line 8) | function _glUniformMatrix3fv(location,count,transpose,value){value>>>=0;...
  function _glUniformMatrix3x2fv (line 8) | function _glUniformMatrix3x2fv(location,count,transpose,value){value>>>=...
  function _glUniformMatrix3x4fv (line 8) | function _glUniformMatrix3x4fv(location,count,transpose,value){value>>>=...
  function _glUniformMatrix4fv (line 8) | function _glUniformMatrix4fv(location,count,transpose,value){value>>>=0;...
  function _glUniformMatrix4x2fv (line 8) | function _glUniformMatrix4x2fv(location,count,transpose,value){value>>>=...
  function _glUniformMatrix4x3fv (line 8) | function _glUniformMatrix4x3fv(location,count,transpose,value){value>>>=...
  function _glVertexAttrib1fv (line 8) | function _glVertexAttrib1fv(index,v){v>>>=0;GLctx.vertexAttrib1f(index,H...
  function _glVertexAttrib2fv (line 8) | function _glVertexAttrib2fv(index,v){v>>>=0;GLctx.vertexAttrib2f(index,H...
  function _glVertexAttrib3fv (line 8) | function _glVertexAttrib3fv(index,v){v>>>=0;GLctx.vertexAttrib3f(index,H...
  function _glVertexAttrib4fv (line 8) | function _glVertexAttrib4fv(index,v){v>>>=0;GLctx.vertexAttrib4f(index,H...
  function _glVertexAttribI4iv (line 8) | function _glVertexAttribI4iv(index,v){v>>>=0;GLctx.vertexAttribI4i(index...
  function _glVertexAttribI4uiv (line 8) | function _glVertexAttribI4uiv(index,v){v>>>=0;GLctx.vertexAttribI4ui(ind...
  function _glVertexAttribIPointer (line 8) | function _glVertexAttribIPointer(index,size,type,stride,ptr){ptr>>>=0;GL...
  function _glVertexAttribPointer (line 8) | function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){p...
  function _glWaitSync (line 8) | function _glWaitSync(sync,flags,timeout){sync>>>=0;timeout=Number(timeou...
  function _emscripten_out (line 8) | function _emscripten_out(str){str>>>=0;return out(UTF8ToString(str))}
  class HandleAllocator (line 8) | class HandleAllocator{allocated=[undefined];freelist=[];get(id){return t...
    method get (line 8) | get(id){return this.allocated[id]}
    method has (line 8) | has(id){return this.allocated[id]!==undefined}
    method allocate (line 8) | allocate(handle){var id=this.freelist.pop()||this.allocated.length;thi...
    method free (line 8) | free(id){this.allocated[id]=undefined;this.freelist.push(id)}
  function _emscripten_promise_create (line 8) | function _emscripten_promise_create(){return makePromise().id}
  function _emscripten_promise_destroy (line 8) | function _emscripten_promise_destroy(id){id>>>=0;promiseMap.free(id)}
  function _emscripten_promise_resolve (line 8) | function _emscripten_promise_resolve(id,result,value){id>>>=0;value>>>=0...
  function _emscripten_resize_heap (line 8) | function _emscripten_resize_heap(requestedSize){requestedSize>>>=0;var o...
  function _environ_get (line 8) | function _environ_get(__environ,environ_buf){__environ>>>=0;environ_buf>...
  function _environ_sizes_get (line 8) | function _environ_sizes_get(penviron_count,penviron_buf_size){penviron_c...
  function _fd_close (line 8) | function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.cl...
  function _fd_fdstat_get (line 8) | function _fd_fdstat_get(fd,pbuf){pbuf>>>=0;try{var rightsBase=0;var righ...
  function _fd_pread (line 8) | function _fd_pread(fd,iov,iovcnt,offset,pnum){iov>>>=0;iovcnt>>>=0;offse...
  function _fd_pwrite (line 8) | function _fd_pwrite(fd,iov,iovcnt,offset,pnum){iov>>>=0;iovcnt>>>=0;offs...
  function _fd_read (line 8) | function _fd_read(fd,iov,iovcnt,pnum){iov>>>=0;iovcnt>>>=0;pnum>>>=0;try...
  function _fd_seek (line 8) | function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(...
  function _fd_sync (line 8) | function _fd_sync(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);if(str...
  function _fd_write (line 8) | function _fd_write(fd,iov,iovcnt,pnum){iov>>>=0;iovcnt>>>=0;pnum>>>=0;tr...
  function _getaddrinfo (line 8) | function _getaddrinfo(node,service,hint,out){node>>>=0;service>>>=0;hint...
  function _getnameinfo (line 8) | function _getnameinfo(sa,salen,node,nodelen,serv,servlen,flags){sa>>>=0;...
  function allocprotoent (line 8) | function allocprotoent(name,proto,aliases){var nameBuf=_malloc(name.leng...
  function _getprotobyname (line 8) | function _getprotobyname(name){name>>>=0;name=UTF8ToString(name);_setpro...
  function _is_sentinel (line 8) | function _is_sentinel(...args){return wasmImports["is_sentinel"](...args)}
  function _random_get (line 8) | function _random_get(buffer,size){buffer>>>=0;size>>>=0;try{randomFill(H...
  function _emscripten_notify_memory_growth (line 8) | function _emscripten_notify_memory_growth(memoryIndex){memoryIndex>>>=0;...
  function _getprotoent (line 8) | function _getprotoent(number){if(_setprotoent.index===Protocols.list.len...
  function _getprotobynumber (line 8) | function _getprotobynumber(number){_setprotoent(true);var result=Protoco...
  function _emscripten_run_script (line 8) | function _emscripten_run_script(ptr){ptr>>>=0;eval(UTF8ToString(ptr))}
  function _emscripten_run_script_int (line 8) | function _emscripten_run_script_int(ptr){ptr>>>=0;return eval(UTF8ToStri...
  function _emscripten_run_script_string (line 8) | function _emscripten_run_script_string(ptr){ptr>>>=0;var s=eval(UTF8ToSt...
  function prepVararg (line 8) | function prepVararg(ptr,type){if(type==="double"||type==="i64"){if(ptr&7...
  function getNextArg (line 8) | function getNextArg(type){var ret;argIndex=prepVararg(argIndex,type);if(...
  function _emscripten_log (line 8) | function _emscripten_log(flags,format,varargs){format>>>=0;varargs>>>=0;...
  function _emscripten_get_compiler_setting (line 8) | function _emscripten_get_compiler_setting(name){name>>>=0;throw"You must...
  function _emscripten_print_double (line 8) | function _emscripten_print_double(x,to,max){to>>>=0;var str=x+"";if(to)r...
  function _emscripten_asm_const_double (line 8) | function _emscripten_asm_const_double(code,sigPtr,argbuf){code>>>=0;sigP...
  function _emscripten_asm_const_ptr (line 8) | function _emscripten_asm_const_ptr(code,sigPtr,argbuf){code>>>=0;sigPtr>...
  function _emscripten_asm_const_int_sync_on_main_thread (line 8) | function _emscripten_asm_const_int_sync_on_main_thread(emAsmAddr,sigPtr,...
  function _emscripten_asm_const_ptr_sync_on_main_thread (line 8) | function _emscripten_asm_const_ptr_sync_on_main_thread(emAsmAddr,sigPtr,...
  function _emscripten_asm_const_async_on_main_thread (line 8) | function _emscripten_asm_const_async_on_main_thread(emAsmAddr,sigPtr,arg...
  function __Unwind_Backtrace (line 8) | function __Unwind_Backtrace(func,arg){func>>>=0;arg>>>=0;var trace=getCa...
  function __Unwind_GetIPInfo (line 8) | function __Unwind_GetIPInfo(context,ipBefore){context>>>=0;ipBefore>>>=0...
  function __Unwind_FindEnclosingFunction (line 8) | function __Unwind_FindEnclosingFunction(ip){ip>>>=0;return 0}
  function convert (line 8) | function convert(rtn){return sig[0]=="p"?rtn>>>0:rtn}
  function _emscripten_outn (line 8) | function _emscripten_outn(str,len){str>>>=0;len>>>=0;return out(UTF8ToSt...
  function _emscripten_errn (line 8) | function _emscripten_errn(str,len){str>>>=0;len>>>=0;return err(UTF8ToSt...
  function _emscripten_throw_string (line 8) | function _emscripten_throw_string(str){str>>>=0;throw UTF8ToString(str)}
  function __emscripten_fs_load_embedded_files (line 8) | function __emscripten_fs_load_embedded_files(ptr){ptr>>>=0;do{var name_a...
  function getNativeTypeSize (line 8) | function getNativeTypeSize(type){switch(type){case"i1":case"i8":case"u8"...
  function convertReturnValue (line 8) | function convertReturnValue(ret){if(returnType==="string"){return UTF8To...
  function onDone (line 8) | function onDone(ret){if(stack!==0)stackRestore(stack);return convertRetu...
  function _emscripten_math_hypot (line 8) | function _emscripten_math_hypot(count,varargs){varargs>>>=0;var args=[];...
  method memcpy (line 8) | memcpy(target,src,size){HEAP8.set(HEAP8.subarray(src>>>0,src+size>>>0),t...
  method removeAllEventListeners (line 8) | removeAllEventListeners(){while(JSEvents.eventHandlers.length){JSEvents....
  method registerRemoveEventListeners (line 8) | registerRemoveEventListeners(){if(!JSEvents.removeEventListenersRegister...
  method deferCall (line 8) | deferCall(targetFunction,precedence,argsList){function arraysHaveEqualCo...
  method removeDeferredCalls (line 8) | removeDeferredCalls(targetFunction){JSEvents.deferredCalls=JSEvents.defe...
  method canPerformEventHandlerRequests (line 8) | canPerformEventHandlerRequests(){if(navigator.userActivation){return nav...
  method runDeferredCalls (line 8) | runDeferredCalls(){if(!JSEvents.canPerformEventHandlerRequests()){return...
  method _removeHandler (line 8) | _removeHandler(i){var h=JSEvents.eventHandlers[i];h.target.removeEventLi...
  method registerOrRemoveHandler (line 8) | registerOrRemoveHandler(eventHandler){if(!eventHandler.target){return-4}...
  method getNodeNameForTarget (line 8) | getNodeNameForTarget(target){if(!target)return"";if(target==window)retur...
  method fullscreenEnabled (line 8) | fullscreenEnabled(){return document.fullscreenEnabled||document.webkitFu...
  function _emscripten_set_keypress_callback_on_thread (line 8) | function _emscripten_set_keypress_callback_on_thread(target,userData,use...
  function _emscripten_set_keydown_callback_on_thread (line 8) | function _emscripten_set_keydown_callback_on_thread(target,userData,useC...
  function _emscripten_set_keyup_callback_on_thread (line 8) | function _emscripten_set_keyup_callback_on_thread(target,userData,useCap...
  function _emscripten_set_click_callback_on_thread (line 8) | function _emscripten_set_click_callback_on_thread(target,userData,useCap...
  function _emscripten_set_mousedown_callback_on_thread (line 8) | function _emscripten_set_mousedown_callback_on_thread(target,userData,us...
  function _emscripten_set_mouseup_callback_on_thread (line 8) | function _emscripten_set_mouseup_callback_on_thread(target,userData,useC...
  function _emscripten_set_dblclick_callback_on_thread (line 8) | function _emscripten_set_dblclick_callback_on_thread(target,userData,use...
  function _emscripten_set_mousemove_callback_on_thread (line 8) | function _emscripten_set_mousemove_callback_on_thread(target,userData,us...
  function _emscripten_set_mouseenter_callback_on_thread (line 8) | function _emscripten_set_mouseenter_callback_on_thread(target,userData,u...
  function _emscripten_set_mouseleave_callback_on_thread (line 8) | function _emscripten_set_mouseleave_callback_on_thread(target,userData,u...
  function _emscripten_set_mouseover_callback_on_thread (line 8) | function _emscripten_set_mouseover_callback_on_thread(target,userData,us...
  function _emscripten_set_mouseout_callback_on_thread (line 8) | function _emscripten_set_mouseout_callback_on_thread(target,userData,use...
  function _emscripten_get_mouse_status (line 8) | function _emscripten_get_mouse_status(mouseState){mouseState>>>=0;if(!JS...
  function _emscripten_set_wheel_callback_on_thread (line 8) | function _emscripten_set_wheel_callback_on_thread(target,userData,useCap...
  function _emscripten_set_resize_callback_on_thread (line 8) | function _emscripten_set_resize_callback_on_thread(target,userData,useCa...
  function _emscripten_set_scroll_callback_on_thread (line 8) | function _emscripten_set_scroll_callback_on_thread(target,userData,useCa...
  function _emscripten_set_blur_callback_on_thread (line 8) | function _emscripten_set_blur_callback_on_thread(target,userData,useCapt...
  function _emscripten_set_focus_callback_on_thread (line 8) | function _emscripten_set_focus_callback_on_thread(target,userData,useCap...
  function _emscripten_set_focusin_callback_on_thread (line 8) | function _emscripten_set_focusin_callback_on_thread(target,userData,useC...
  function _emscripten_set_focusout_callback_on_thread (line 8) | function _emscripten_set_focusout_callback_on_thread(target,userData,use...
  function _emscripten_set_deviceorientation_callback_on_thread (line 8) | function _emscripten_set_deviceorientation_callback_on_thread(userData,u...
  function _emscripten_get_deviceorientation_status (line 8) | function _emscripten_get_deviceorientation_status(orientationState){orie...
  function _emscripten_set_devicemotion_callback_on_thread (line 8) | function _emscripten_set_devicemotion_callback_on_thread(userData,useCap...
  function _emscripten_get_devicemotion_status (line 8) | function _emscripten_get_devicemotion_status(motionState){motionState>>>...
  function _emscripten_set_orientationchange_callback_on_thread (line 8) | function _emscripten_set_orientationchange_callback_on_thread(userData,u...
  function _emscripten_get_orientation_status (line 8) | function _emscripten_get_orientation_status(orientationChangeEvent){orie...
  function _emscripten_set_fullscreenchange_callback_on_thread (line 8) | function _emscripten_set_fullscreenchange_callback_on_thread(target,user...
  function _emscripten_get_fullscreen_status (line 8) | function _emscripten_get_fullscreen_status(fullscreenStatus){fullscreenS...
  function _emscripten_get_canvas_element_size (line 8) | function _emscripten_get_canvas_element_size(target,width,height){target...
  function _emscripten_set_canvas_element_size (line 8) | function _emscripten_set_canvas_element_size(target,width,height){target...
  function restoreOldStyle (line 8) | function restoreOldStyle(){var fullscreenElement=document.fullscreenElem...
  function _emscripten_request_fullscreen (line 8) | function _emscripten_request_fullscreen(target,deferUntilInEventHandler)...
  function _emscripten_request_fullscreen_strategy (line 8) | function _emscripten_request_fullscreen_strategy(target,deferUntilInEven...
  function _emscripten_enter_soft_fullscreen (line 8) | function _emscripten_enter_soft_fullscreen(target,fullscreenStrategy){ta...
  function _emscripten_set_pointerlockchange_callback_on_thread (line 8) | function _emscripten_set_pointerlockchange_callback_on_thread(target,use...
  function _emscripten_set_pointerlockerror_callback_on_thread (line 8) | function _emscripten_set_pointerlockerror_callback_on_thread(target,user...
  function _emscripten_get_pointerlock_status (line 8) | function _emscripten_get_pointerlock_status(pointerlockStatus){pointerlo...
  function _emscripten_request_pointerlock (line 8) | function _emscripten_request_pointerlock(target,deferUntilInEventHandler...
  function _emscripten_vibrate_pattern (line 8) | function _emscripten_vibrate_pattern(msecsArray,numEntries){msecsArray>>...
  function _emscripten_set_visibilitychange_callback_on_thread (line 8) | function _emscripten_set_visibilitychange_callback_on_thread(userData,us...
  function _emscripten_get_visibility_status (line 8) | function _emscripten_get_visibility_status(visibilityStatus){visibilityS...
  function _emscripten_set_touchstart_callback_on_thread (line 8) | function _emscripten_set_touchstart_callback_on_thread(target,userData,u...
  function _emscripten_set_touchend_callback_on_thread (line 8) | function _emscripten_set_touchend_callback_on_thread(target,userData,use...
  function _emscripten_set_touchmove_callback_on_thread (line 8) | function _emscripten_set_touchmove_callback_on_thread(target,userData,us...
  function _emscripten_set_touchcancel_callback_on_thread (line 8) | function _emscripten_set_touchcancel_callback_on_thread(target,userData,...
  function _emscripten_set_gamepadconnected_callback_on_thread (line 8) | function _emscripten_set_gamepadconnected_callback_on_thread(userData,us...
  function _emscripten_set_gamepaddisconnected_callback_on_thread (line 8) | function _emscripten_set_gamepaddisconnected_callback_on_thread(userData...
  function _emscripten_get_gamepad_status (line 8) | function _emscripten_get_gamepad_status(index,gamepadState){gamepadState...
  function _emscripten_set_beforeunload_callback_on_thread (line 8) | function _emscripten_set_beforeunload_callback_on_thread(userData,callba...
  function _emscripten_set_batterychargingchange_callback_on_thread (line 8) | function _emscripten_set_batterychargingchange_callback_on_thread(userDa...
  function _emscripten_set_batterylevelchange_callback_on_thread (line 8) | function _emscripten_set_batterylevelchange_callback_on_thread(userData,...
  function _emscripten_get_battery_status (line 8) | function _emscripten_get_battery_status(batteryState){batteryState>>>=0;...
  function _emscripten_set_element_css_size (line 8) | function _emscripten_set_element_css_size(target,width,height){target>>>...
  function _emscripten_get_element_css_size (line 8) | function _emscripten_get_element_css_size(target,width,height){target>>>...
  function _emscripten_request_animation_frame_loop (line 8) | function _emscripten_request_animation_frame_loop(cb,userData){cb>>>=0;u...
  function _emscripten_get_callstack (line 8) | function _emscripten_get_callstack(flags,str,maxbytes){str>>>=0;var call...
  function _emscripten_return_address (line 8) | function _emscripten_return_address(level){var callstack=jsStackTrace()....
  function _emscripten_stack_snapshot (line 8) | function _emscripten_stack_snapshot(){var callstack=jsStackTrace().split...
  function _emscripten_stack_unwind_buffer (line 8) | function _emscripten_stack_unwind_buffer(addr,buffer,count){addr>>>=0;bu...
  function _emscripten_pc_get_function (line 8) | function _emscripten_pc_get_function(pc){pc>>>=0;abort("Cannot use emscr...
  function _emscripten_pc_get_file (line 8) | function _emscripten_pc_get_file(pc){pc>>>=0;var result=convertPCtoSourc...
  function _emscripten_pc_get_line (line 8) | function _emscripten_pc_get_line(pc){pc>>>=0;var result=convertPCtoSourc...
  function _emscripten_pc_get_column (line 8) | function _emscripten_pc_get_column(pc){pc>>>=0;var result=convertPCtoSou...
  function checkIsRunning (line 8) | function checkIsRunning(){if(thisMainLoopId<MainLoop.currentlyRunningMai...
  method pause (line 8) | pause(){MainLoop.scheduler=null;MainLoop.currentlyRunningMainloop++}
  method resume (line 8) | resume(){MainLoop.currentlyRunningMainloop++;var timingMode=MainLoop.tim...
  method updateStatus (line 8) | updateStatus(){if(Module["setStatus"]){var message=Module["statusMessage...
  method init (line 8) | init(){Module["preMainLoop"]&&MainLoop.preMainLoop.push(Module["preMainL...
  method runIter (line 8) | runIter(func){if(ABORT)return;for(var pre of MainLoop.preMainLoop){if(pr...
  method fakeRequestAnimationFrame (line 8) | fakeRequestAnimationFrame(func){var now=Date.now();if(MainLoop.nextRAF==...
  method requestAnimationFrame (line 8) | requestAnimationFrame(func){if(typeof requestAnimationFrame=="function")...
  function tick (line 8) | function tick(){callUserCallback(()=>{if(getWasmTableEntry(cb)(userData)...
  function tick (line 8) | function tick(){var t=_emscripten_get_now();var n=t+msecs;runtimeKeepali...
  function _emscripten_get_main_loop_timing (line 8) | function _emscripten_get_main_loop_timing(mode,value){mode>>>=0;value>>>...
  function _emscripten_set_main_loop (line 8) | function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){func>>...
  function _emscripten_promise_then (line 8) | function _emscripten_promise_then(id,onFulfilled,onRejected,userData){id...
  function _emscripten_promise_race (line 8) | function _emscripten_promise_race(idBuf,size){idBuf>>>=0;size>>>=0;var p...
  function _emscripten_promise_await (line 8) | function _emscripten_promise_await(returnValuePtr,id){returnValuePtr>>>=...
  method init (line 8) | init(){if(Browser.initted)return;Browser.initted=true;var imagePlugin={}...
  method createContext (line 8) | createContext(canvas,useWebGL,setInModule,webGLContextAttributes){if(use...
  method requestFullscreen (line 8) | requestFullscreen(lockPointer,resizeCanvas){Browser.lockPointer=lockPoin...
  method exitFullscreen (line 8) | exitFullscreen(){if(!Browser.isFullscreen){return false}var CFS=document...
  method safeSetTimeout (line 8) | safeSetTimeout(func,timeout){return safeSetTimeout(func,timeout)}
  method getMimetype (line 8) | getMimetype(name){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/p...
  method getUserMedia (line 8) | getUserMedia(func){window.getUserMedia||=navigator["getUserMedia"]||navi...
  method getMovementX (line 8) | getMovementX(event){return event["movementX"]||event["mozMovementX"]||ev...
  method getMovementY (line 8) | getMovementY(event){return event["movementY"]||event["mozMovementY"]||ev...
  method getMouseWheelDelta (line 8) | getMouseWheelDelta(event){var delta=0;switch(event.type){case"DOMMouseSc...
  method calculateMouseCoords (line 8) | calculateMouseCoords(pageX,pageY){var canvas=Browser.getCanvas();var rec...
  method setMouseCoords (line 8) | setMouseCoords(pageX,pageY){const{x,y}=Browser.calculateMouseCoords(page...
  method calculateMouseEvent (line 8) | calculateMouseEvent(event){if(Browser.pointerLock){if(event.type!="mouse...
  method updateResizeListeners (line 8) | updateResizeListeners(){var canvas=Browser.getCanvas();Browser.resizeLis...
  method setCanvasSize (line 8) | setCanvasSize(width,height,noUpdates){var canvas=Browser.getCanvas();Bro...
  method setFullscreenCanvasSize (line 8) | setFullscreenCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[...
  method setWindowedCanvasSize (line 8) | setWindowedCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SD...
  method updateCanvasDimensions (line 8) | updateCanvasDimensions(canvas,wNative,hNative){if(wNative&&hNative){canv...
  function _emscripten_get_window_title (line 8) | function _emscripten_get_window_title(){var buflen=256;if(!_emscripten_g...
  function _emscripten_set_window_title (line 8) | function _emscripten_set_window_title(title){title>>>=0;return document....
  function _emscripten_get_screen_size (line 8) | function _emscripten_get_screen_size(width,height){width>>>=0;height>>>=...
  function _emscripten_get_canvas_size (line 8) | function _emscripten_get_canvas_size(width,height,isFullscreen){width>>>...
  function _emscripten_create_worker (line 8) | function _emscripten_create_worker(url){url>>>=0;url=UTF8ToString(url);v...
  function _emscripten_call_worker (line 8) | function _emscripten_call_worker(id,funcName,data,size,callback,arg){fun...
  function _emscripten_get_preloaded_image_data (line 8) | function _emscripten_get_preloaded_image_data(path,w,h){path>>>=0;w>>>=0...
  function _emscripten_get_preloaded_image_data_from_FILE (line 8) | function _emscripten_get_preloaded_image_data_from_FILE(file,w,h){file>>...
  method getNextWgetRequestHandle (line 8) | getNextWgetRequestHandle(){var handle=wget.nextWgetRequestHandle;wget.ne...
  function doCallback (line 8) | function doCallback(callback){if(callback){runtimeKeepalivePop();callUse...
  function _emscripten_async_wget2_data (line 8) | function _emscripten_async_wget2_data(url,request,param,userdata,free,on...
  function ___asctime_r (line 8) | function ___asctime_r(tmPtr,buf){tmPtr>>>=0;buf>>>=0;var date={tm_sec:HE...
  function _strptime (line 8) | function _strptime(buf,format,tm){buf>>>=0;format>>>=0;tm>>>=0;var patte...
  function _strptime_l (line 8) | function _strptime_l(buf,format,tm,locale){buf>>>=0;format>>>=0;tm>>>=0;...
  function __dlsym_catchup_js (line 8) | function __dlsym_catchup_js(handle,symbolIndex){handle>>>=0;var lib=LDSO...
  function _callback (line 8) | function _callback(data){callUserCallback(()=>{if(event==="error"){withS...
  function _emscripten_set_socket_error_callback (line 8) | function _emscripten_set_socket_error_callback(userData,callback){userDa...
  function _emscripten_set_socket_open_callback (line 8) | function _emscripten_set_socket_open_callback(userData,callback){userDat...
  function _emscripten_set_socket_listen_callback (line 8) | function _emscripten_set_socket_listen_callback(userData,callback){userD...
  function _emscripten_set_socket_connection_callback (line 8) | function _emscripten_set_socket_connection_callback(userData,callback){u...
  function _emscripten_set_socket_message_callback (line 8) | function _emscripten_set_socket_message_callback(userData,callback){user...
  function _emscripten_set_socket_close_callback (line 8) | function _emscripten_set_socket_close_callback(userData,callback){userDa...
  function _emscripten_webgl_enable_ANGLE_instanced_arrays (line 8) | function _emscripten_webgl_enable_ANGLE_instanced_arrays(ctx){ctx>>>=0;r...
  function _emscripten_webgl_enable_OES_vertex_array_object (line 8) | function _emscripten_webgl_enable_OES_vertex_array_object(ctx){ctx>>>=0;...
  function _emscripten_webgl_enable_WEBGL_draw_buffers (line 8) | function _emscripten_webgl_enable_WEBGL_draw_buffers(ctx){ctx>>>=0;retur...
  function _emscripten_webgl_enable_WEBGL_multi_draw (line 8) | function _emscripten_webgl_enable_WEBGL_multi_draw(ctx){ctx>>>=0;return ...
  function _emscripten_webgl_enable_EXT_polygon_offset_clamp (line 8) | function _emscripten_webgl_enable_EXT_polygon_offset_clamp(ctx){ctx>>>=0...
  function _emscripten_webgl_enable_EXT_clip_control (line 8) | function _emscripten_webgl_enable_EXT_clip_control(ctx){ctx>>>=0;return ...
  function _emscripten_webgl_enable_WEBGL_polygon_mode (line 8) | function _emscripten_webgl_enable_WEBGL_polygon_mode(ctx){ctx>>>=0;retur...
  function _glVertexPointer (line 8) | function _glVertexPointer(size,type,stride,ptr){ptr>>>=0;throw"Legacy GL...
  function _glMultiDrawArraysWEBGL (line 8) | function _glMultiDrawArraysWEBGL(mode,firsts,counts,drawcount){firsts>>>...
  function _glMultiDrawArraysInstancedWEBGL (line 8) | function _glMultiDrawArraysInstancedWEBGL(mode,firsts,counts,instanceCou...
  function _glMultiDrawElementsWEBGL (line 8) | function _glMultiDrawElementsWEBGL(mode,counts,type,offsets,drawcount){c...
  function _glMultiDrawElementsInstancedWEBGL (line 8) | function _glMultiDrawElementsInstancedWEBGL(mode,counts,type,offsets,ins...
  function _glGetBufferSubData (line 8) | function _glGetBufferSubData(target,offset,size,data){offset>>>=0;size>>...
  function _emscripten_webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance (line 8) | function _emscripten_webgl_enable_WEBGL_draw_instanced_base_vertex_base_...
  function _emscripten_webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance (line 8) | function _emscripten_webgl_enable_WEBGL_multi_draw_instanced_base_vertex...
  method getSocket (line 8) | getSocket(socketId){if(!webSockets.has(socketId)){return 0}return webSoc...
  method getSocketEvent (line 8) | getSocketEvent(socketId){this.socketEvent||=_malloc(520);HEAPU32[this.so...
  function _emscripten_websocket_get_ready_state (line 8) | function _emscripten_websocket_get_ready_state(socketId,readyState){read...
  function _emscripten_websocket_get_buffered_amount (line 8) | function _emscripten_websocket_get_buffered_amount(socketId,bufferedAmou...
  function _emscripten_websocket_get_extensions (line 8) | function _emscripten_websocket_get_extensions(socketId,extensions,extens...
  function _emscripten_websocket_get_extensions_length (line 8) | function _emscripten_websocket_get_extensions_length(socketId,extensions...
  function _emscripten_websocket_get_protocol (line 8) | function _emscripten_websocket_get_protocol(socketId,protocol,protocolLe...
  function _emscripten_websocket_get_protocol_length (line 8) | function _emscripten_websocket_get_protocol_length(socketId,protocolLeng...
  function _emscripten_websocket_get_url (line 8) | function _emscripten_websocket_get_url(socketId,url,urlLength){url>>>=0;...
  function _emscripten_websocket_get_url_length (line 8) | function _emscripten_websocket_get_url_length(socketId,urlLength){urlLen...
  function _emscripten_websocket_set_onopen_callback_on_thread (line 8) | function _emscripten_websocket_set_onopen_callback_on_thread(socketId,us...
  function _emscripten_websocket_set_onerror_callback_on_thread (line 8) | function _emscripten_websocket_set_onerror_callback_on_thread(socketId,u...
  function _emscripten_websocket_set_onclose_callback_on_thread (line 8) | function _emscripten_websocket_set_onclose_callback_on_thread(socketId,u...
  function _emscripten_websocket_set_onmessage_callback_on_thread (line 8) | function _emscripten_websocket_set_onmessage_callback_on_thread(socketId...
  function _emscripten_websocket_new (line 8) | function _emscripten_websocket_new(createAttributes){createAttributes>>>...
  function _emscripten_websocket_send_utf8_text (line 8) | function _emscripten_websocket_send_utf8_text(socketId,textData){textDat...
  function _emscripten_websocket_send_binary (line 8) | function _emscripten_websocket_send_binary(socketId,binaryData,dataLengt...
  function _emscripten_websocket_close (line 8) | function _emscripten_websocket_close(socketId,code,reason){reason>>>=0;v...
  function _emscripten_webgl_do_create_context (line 8) | function _emscripten_webgl_do_create_context(target,attributes){target>>...
  function _emscripten_webgl_do_get_current_context (line 8) | function _emscripten_webgl_do_get_current_context(){return GL.currentCon...
  function _emscripten_webgl_make_context_current (line 8) | function _emscripten_webgl_make_context_current(contextHandle){contextHa...
  function _emscripten_webgl_get_drawing_buffer_size (line 8) | function _emscripten_webgl_get_drawing_buffer_size(contextHandle,width,h...
  function _emscripten_webgl_get_context_attributes (line 8) | function _emscripten_webgl_get_context_attributes(c,a){c>>>=0;a>>>=0;if(...
  function _emscripten_webgl_destroy_context (line 8) | function _emscripten_webgl_destroy_context(contextHandle){contextHandle>...
  function _emscripten_webgl_enable_extension (line 8) | function _emscripten_webgl_enable_extension(contextHandle,extension){con...
  function _emscripten_set_webglcontextlost_callback_on_thread (line 8) | function _emscripten_set_webglcontextlost_callback_on_thread(target,user...
  function _emscripten_set_webglcontextrestored_callback_on_thread (line 8) | function _emscripten_set_webglcontextrestored_callback_on_thread(target,...
  function _emscripten_is_webgl_context_lost (line 8) | function _emscripten_is_webgl_context_lost(contextHandle){contextHandle>...
  function _emscripten_webgl_get_supported_extensions (line 8) | function _emscripten_webgl_get_supported_extensions(){return stringToNew...
  function _emscripten_webgl_get_program_info_log_utf8 (line 8) | function _emscripten_webgl_get_program_info_log_utf8(program){return str...
  function _emscripten_webgl_get_shader_info_log_utf8 (line 8) | function _emscripten_webgl_get_shader_info_log_utf8(shader){return strin...
  function _emscripten_webgl_get_shader_source_utf8 (line 8) | function _emscripten_webgl_get_shader_source_utf8(shader){return stringT...
  function _emscripten_webgl_get_vertex_attrib_v (line 8) | function _emscripten_webgl_get_vertex_attrib_v(index,param,dst,dstLength...
  function _emscripten_webgl_get_uniform_v (line 8) | function _emscripten_webgl_get_uniform_v(program,location,dst,dstLength,...
  function _emscripten_webgl_get_parameter_v (line 8) | function _emscripten_webgl_get_parameter_v(param,dst,dstLength,dstType){...
  function _emscripten_webgl_get_parameter_utf8 (line 8) | function _emscripten_webgl_get_parameter_utf8(param){return stringToNewU...
  function _emscripten_webgl_get_parameter_i64v (line 8) | function _emscripten_webgl_get_parameter_i64v(param,dst){dst>>>=0;return...
  method setErrorCode (line 8) | setErrorCode(code){EGL.errorCode=code}
  method chooseConfig (line 8) | chooseConfig(display,attribList,config,config_size,numConfigs){if(displa...
  function _eglGetDisplay (line 8) | function _eglGetDisplay(nativeDisplayType){nativeDisplayType>>>=0;EGL.se...
  function _eglInitialize (line 8) | function _eglInitialize(display,majorVersion,minorVersion){display>>>=0;...
  function _eglTerminate (line 8) | function _eglTerminate(display){display>>>=0;if(display!=62e3){EGL.setEr...
  function _eglGetConfigs (line 8) | function _eglGetConfigs(display,configs,config_size,numConfigs){display>...
  function _eglChooseConfig (line 8) | function _eglChooseConfig(display,attrib_list,configs,config_size,numCon...
  function _eglGetConfigAttrib (line 8) | function _eglGetConfigAttrib(display,config,attribute,value){display>>>=...
  function _eglCreateWindowSurface (line 8) | function _eglCreateWindowSurface(display,config,win,attrib_list){display...
  function _eglDestroySurface (line 8) | function _eglDestroySurface(display,surface){display>>>=0;surface>>>=0;i...
  function _eglCreateContext (line 8) | function _eglCreateContext(display,config,hmm,contextAttribs){display>>>...
  function _eglDestroyContext (line 8) | function _eglDestroyContext(display,context){display>>>=0;context>>>=0;i...
  function _eglQuerySurface (line 8) | function _eglQuerySurface(display,surface,attribute,value){display>>>=0;...
  function _eglQueryContext (line 8) | function _eglQueryContext(display,context,attribute,value){display>>>=0;...
  function _eglQueryString (line 8) | function _eglQueryString(display,name){display>>>=0;if(display!=62e3){EG...
  function _eglSwapInterval (line 8) | function _eglSwapInterval(display,interval){display>>>=0;if(display!=62e...
  function _eglMakeCurrent (line 8) | function _eglMakeCurrent(display,draw,read,context){display>>>=0;draw>>>...
  function _eglGetCurrentContext (line 8) | function _eglGetCurrentContext(){return EGL.currentContext}
  function _eglGetCurrentSurface (line 8) | function _eglGetCurrentSurface(readdraw){if(readdraw==12378){return EGL....
  function _eglGetCurrentDisplay (line 8) | function _eglGetCurrentDisplay(){return EGL.currentContext?62e3:0}
  function _eglSwapBuffers (line 8) | function _eglSwapBuffers(dpy,surface){dpy>>>=0;surface>>>=0;if(!EGL.defa...
  function _SDL_LockSurface (line 8) | function _SDL_LockSurface(surf){surf>>>=0;var surfData=SDL.surfaces[surf...
  method loadRect (line 8) | loadRect(rect){return{x:HEAP32[rect>>>2>>>0],y:HEAP32[rect+4>>>2>>>0],w:...
  method updateRect (line 8) | updateRect(rect,r){HEAP32[rect>>>2>>>0]=r.x;HEAP32[rect+4>>>2>>>0]=r.y;H...
  method intersectionOfRects (line 8) | intersectionOfRects(first,second){var leftX=Math.max(first.x,second.x);v...
  method checkPixelFormat (line 8) | checkPixelFormat(fmt){}
  method loadColorToCSSRGB (line 8) | loadColorToCSSRGB(color){var rgba=HEAP32[color>>>2>>>0];return"rgb("+(rg...
  method loadColorToCSSRGBA (line 8) | loadColorToCSSRGBA(color){var rgba=HEAP32[color>>>2>>>0];return"rgba("+(...
  method makeSurface (line 8) | makeSurface(width,height,flags,usePageCanvas,source,rmask,gmask,bmask,am...
  method copyIndexedColorData (line 8) | copyIndexedColorData(surfData,rX,rY,rW,rH){if(!surfData.colors){return}v...
  method freeSurface (line 8) | freeSurface(surf){var refcountPointer=surf+56;var refcount=HEAP32[refcou...
  method blitSurface (line 8) | blitSurface(src,srcrect,dst,dstrect,scale){var srcData=SDL.surfaces[src]...
  method receiveEvent (line 8) | receiveEvent(event){function unpressAllPressedKeys(){for(var keyCode of ...
  method lookupKeyCodeForEvent (line 8) | lookupKeyCodeForEvent(event){var code=event.keyCode;if(code>=65&&code<=9...
  method handleEvent (line 8) | handleEvent(event){if(event.handled)return;event.handled=true;switch(eve...
  method flushEventsToHandler (line 8) | flushEventsToHandler(){if(!SDL.eventHandler)return;while(SDL.pollEvent(S...
  method pollEvent (line 8) | pollEvent(ptr){if(SDL.initFlags&512&&SDL.joystickEventState){SDL.queryJo...
  method makeCEvent (line 8) | makeCEvent(event,ptr){if(typeof event=="number"){_memcpy(ptr,event,28);_...
  method makeFontString (line 8) | makeFontString(height,fontName){if(fontName.charAt(0)!="'"&&fontName.cha...
  method estimateTextWidth (line 8) | estimateTextWidth(fontData,text){var h=fontData.size;var fontString=SDL....
  method allocateChannels (line 8) | allocateChannels(num){if(SDL.numChannels>=num&&num!=0)return;SDL.numChan...
  method setGetVolume (line 8) | setGetVolume(info,volume){if(!info)return 0;var ret=info.volume*128;if(v...
  method setPannerPosition (line 8) | setPannerPosition(info,x,y,z){info?.audio?.webAudioPannerNode?.["setPosi...
  method playWebAudio (line 8) | playWebAudio(audio){if(!audio)return;if(audio.webAudioNode)return;if(!SD...
  method pauseWebAudio (line 8) | pauseWebAudio(audio){if(!audio)return;if(audio.webAudioNode){try{audio.c...
  method openAudioContext (line 8) | openAudioContext(){if(!SDL.audioContext){if(typeof AudioContext!="undefi...
  method fillWebAudioBufferFromHeap (line 8) | fillWebAudioBufferFromHeap(heapPtr,sizeSamplesPerChannel,dstAudioBuffer)...
  method recordJoystickState (line 8) | recordJoystickState(joystick,state){var buttons=[];for(var button of sta...
  method getJoystickButtonState (line 8) | getJoystickButtonState(button){if(typeof button=="object"){return button...
  method queryJoysticks (line 8) | queryJoysticks(){for(var joystick in SDL.lastJoystickState){var state=SD...
  method joystickAxisValueConversion (line 8) | joystickAxisValueConversion(value){value=Math.min(1,Math.max(value,-1));...
  method getGamepads (line 8) | getGamepads(){var fcn=navigator.getGamepads||navigator.webkitGamepads||n...
  method getGamepad (line 8) | getGamepad(deviceIndex){var gamepads=SDL.getGamepads();if(gamepads.lengt...
  function _SDL_Linked_Version (line 8) | function _SDL_Linked_Version(){if(SDL.version===null){SDL.version=_mallo...
  function _SDL_GetVideoInfo (line 8) | function _SDL_GetVideoInfo(){var ret=_calloc(20,1);var canvas=Browser.ge...
  function _SDL_ListModes (line 8) | function _SDL_ListModes(format,flags){format>>>=0;return-1}
  function _SDL_VideoDriverName (line 8) | function _SDL_VideoDriverName(buf,max_size){buf>>>=0;if(SDL.startTime===...
  function _SDL_GetVideoSurface (line 8) | function _SDL_GetVideoSurface(){return SDL.screen}
  function _SDL_UnlockSurface (line 8) | function _SDL_UnlockSurface(surf){surf>>>=0;assert(!SDL.GL);var surfData...
  function _SDL_Flip (line 8) | function _SDL_Flip(surf){surf>>>=0}
  function _SDL_UpdateRect (line 8) | function _SDL_UpdateRect(surf,x,y,w,h){surf>>>=0}
  function _SDL_UpdateRects (line 8) | function _SDL_UpdateRects(surf,numrects,rects){surf>>>=0;rects>>>=0}
  function _SDL_WM_SetCaption (line 8) | function _SDL_WM_SetCaption(title,icon){title>>>=0;icon>>>=0;if(title){_...
  function _SDL_GetKeyboardState (line 8) | function _SDL_GetKeyboardState(numKeys){numKeys>>>=0;if(numKeys){HEAP32[...
  function _SDL_GetKeyName (line 8) | function _SDL_GetKeyName(key){var name="";if(key>=97&&key<=122||key>=48&...
  function _SDL_GetMouseState (line 8) | function _SDL_GetMouseState(x,y){x>>>=0;y>>>=0;if(x)HEAP32[x>>>2>>>0]=Br...
  function _SDL_GetError (line 8) | function _SDL_GetError(){SDL.errorMessage||=stringToNewUTF8("unknown SDL...
  function _SDL_SetError (line 8) | function _SDL_SetError(fmt,varargs){fmt>>>=0;varargs>>>=0}
  function _SDL_CreateRGBSurface (line 8) | function _SDL_CreateRGBSurface(flags,width,height,depth,rmask,gmask,bmas...
  function _SDL_CreateRGBSurfaceFrom (line 8) | function _SDL_CreateRGBSurfaceFrom(pixels,width,height,depth,pitch,rmask...
  function _SDL_ConvertSurface (line 8) | function _SDL_ConvertSurface(surf,format,flags){surf>>>=0;format>>>=0;if...
  function _SDL_DisplayFormat (line 8) | function _SDL_DisplayFormat(surf){surf>>>=0;return _SDL_ConvertSurface(s...
  function _SDL_DisplayFormatAlpha (line 8) | function _SDL_DisplayFormatAlpha(surf){surf>>>=0;return _SDL_ConvertSurf...
  function _SDL_FreeSurface (line 8) | function _SDL_FreeSurface(surf){surf>>>=0;if(surf)SDL.freeSurface(surf)}
  function _SDL_UpperBlit (line 8) | function _SDL_UpperBlit(src,srcrect,dst,dstrect){src>>>=0;srcrect>>>=0;d...
  function _SDL_UpperBlitScaled (line 8) | function _SDL_UpperBlitScaled(src,srcrect,dst,dstrect){src>>>=0;srcrect>...
  function _SDL_GetClipRect (line 8) | function _SDL_GetClipRect(surf,rect){surf>>>=0;rect>>>=0;assert(rect);va...
  function _SDL_SetClipRect (line 8) | function _SDL_SetClipRect(surf,rect){surf>>>=0;rect>>>=0;var surfData=SD...
  function _SDL_FillRect (line 8) | function _SDL_FillRect(surf,rect,color){surf>>>=0;rect>>>=0;var surfData...
  function _zoomSurface (line 8) | function _zoomSurface(src,x,y,smooth){src>>>=0;var srcData=SDL.surfaces[...
  function _rotozoomSurface (line 8) | function _rotozoomSurface(src,angle,zoom,smooth){src>>>=0;if(angle%360==...
  function _SDL_SetAlpha (line 8) | function _SDL_SetAlpha(surf,flag,alpha){surf>>>=0;var surfData=SDL.surfa...
  function _SDL_SetColorKey (line 8) | function _SDL_SetColorKey(surf,flag,key){surf>>>=0;warnOnce("SDL_SetColo...
  function _SDL_PollEvent (line 8) | function _SDL_PollEvent(ptr){ptr>>>=0;return SDL.pollEvent(ptr)}
  function _SDL_PushEvent (line 8) | function _SDL_PushEvent(ptr){ptr>>>=0;var copy=_malloc(28);_memcpy(copy,...
  function _SDL_PeepEvents (line 8) | function _SDL_PeepEvents(events,requestedEventCount,action,from,to){even...
  function _emscripten_SDL_SetEventHandler (line 8) | function _emscripten_SDL_SetEventHandler(handler,userdata){handler>>>=0;...
  function _SDL_SetColors (line 8) | function _SDL_SetColors(surf,colors,firstColor,nColors){surf>>>=0;colors...
  function _SDL_SetPalette (line 8) | function _SDL_SetPalette(surf,flags,colors,firstColor,nColors){surf>>>=0...
  function _SDL_MapRGB (line 8) | function _SDL_MapRGB(fmt,r,g,b){fmt>>>=0;SDL.checkPixelFormat(fmt);retur...
  function _SDL_MapRGBA (line 8) | function _SDL_MapRGBA(fmt,r,g,b,a){fmt>>>=0;SDL.checkPixelFormat(fmt);re...
  function _SDL_GetRGB (line 8) | function _SDL_GetRGB(pixel,fmt,r,g,b){fmt>>>=0;r>>>=0;g>>>=0;b>>>=0;SDL....
  function _SDL_GetRGBA (line 8) | function _SDL_GetRGBA(pixel,fmt,r,g,b,a){fmt>>>=0;r>>>=0;g>>>=0;b>>>=0;a...
  function _SDL_WM_ToggleFullScreen (line 8) | function _SDL_WM_ToggleFullScreen(surf){surf>>>=0;if(Browser.exitFullscr...
  function _SDL_FreeRW (line 8) | function _SDL_FreeRW(rwopsID){rwopsID>>>=0;SDL.rwops[rwopsID]=null;while...
  function _SDL_RWFromFile (line 8) | function _SDL_RWFromFile(_name,mode){_name>>>=0;mode>>>=0;var id=SDL.rwo...
  function _IMG_Load (line 8) | function _IMG_Load(filename){filename>>>=0;var rwops=_SDL_RWFromFile(fil...
  function _SDL_OpenAudio (line 8) | function _SDL_OpenAudio(desired,obtained){desired>>>=0;obtained>>>=0;try...
  function _SDL_CreateMutex (line 8) | function _SDL_CreateMutex(){return 0}
  function _SDL_mutexP (line 8) | function _SDL_mutexP(mutex){mutex>>>=0;return 0}
  function _SDL_mutexV (line 8) | function _SDL_mutexV(mutex){mutex>>>=0;return 0}
  function _SDL_DestroyMutex (line 8) | function _SDL_DestroyMutex(mutex){mutex>>>=0}
  function _SDL_CreateCond (line 8) | function _SDL_CreateCond(){return 0}
  function _SDL_CondSignal (line 8) | function _SDL_CondSignal(cond){cond>>>=0}
  function _SDL_CondWait (line 8) | function _SDL_CondWait(cond,mutex){cond>>>=0;mutex>>>=0}
  function _SDL_DestroyCond (line 8) | function _SDL_DestroyCond(cond){cond>>>=0}
  function _Mix_ChannelFinished (line 8) | function _Mix_ChannelFinished(func){func>>>=0;SDL.channelFinished=func}
  function _Mix_LoadWAV_RW (line 8) | function _Mix_LoadWAV_RW(rwopsID,freesrc){rwopsID>>>=0;var rwops=SDL.rwo...
  function _Mix_LoadWAV (line 8) | function _Mix_LoadWAV(filename){filename>>>=0;var rwops=_SDL_RWFromFile(...
  function _Mix_QuickLoad_RAW (line 8) | function _Mix_QuickLoad_RAW(mem,len){mem>>>=0;var audio;var webAudio;var...
  function _Mix_FreeChunk (line 8) | function _Mix_FreeChunk(id){id>>>=0;SDL.audios[id]=null}
  function halt (line 8) | function halt(channel){var info=SDL.channels[channel];if(info.audio){inf...
  function _Mix_PlayChannelTimed (line 8) | function _Mix_PlayChannelTimed(channel,id,loops,ticks){id>>>=0;assert(ti...
  function _Mix_HookMusicFinished (line 8) | function _Mix_HookMusicFinished(func){func>>>=0;SDL.hookMusicFinished=fu...
  function _Mix_LoadMUS_RW (line 8) | function _Mix_LoadMUS_RW(filename){filename>>>=0;return _Mix_LoadWAV_RW(...
  function _Mix_LoadMUS (line 8) | function _Mix_LoadMUS(filename){filename>>>=0;var rwops=_SDL_RWFromFile(...
  function _Mix_PlayMusic (line 8) | function _Mix_PlayMusic(id,loops){id>>>=0;if(SDL.music.audio){if(!SDL.mu...
  function _TTF_OpenFont (line 8) | function _TTF_OpenFont(name,size){name>>>=0;name=PATH.normalize(UTF8ToSt...
  function _TTF_CloseFont (line 8) | function _TTF_CloseFont(font){font>>>=0;SDL.fonts[font]=null}
  function _TTF_RenderText_Solid (line 8) | function _TTF_RenderText_Solid(font,text,color){font>>>=0;text>>>=0;colo...
  function _TTF_SizeText (line 8) | function _TTF_SizeText(font,text,w,h){font>>>=0;text>>>=0;w>>>=0;h>>>=0;...
  function _TTF_GlyphMetrics (line 8) | function _TTF_GlyphMetrics(font,ch,minx,maxx,miny,maxy,advance){font>>>=...
  function _TTF_FontAscent (line 8) | function _TTF_FontAscent(font){font>>>=0;var fontData=SDL.fonts[font];re...
  function _TTF_FontDescent (line 8) | function _TTF_FontDescent(font){font>>>=0;var fontData=SDL.fonts[font];r...
  function _TTF_FontHeight (line 8) | function _TTF_FontHeight(font){font>>>=0;var fontData=SDL.fonts[font];re...
  function _boxColor (line 8) | function _boxColor(surf,x1,y1,x2,y2,color){surf>>>=0;return SDL_gfx.draw...
  function _boxRGBA (line 8) | function _boxRGBA(surf,x1,y1,x2,y2,r,g,b,a){surf>>>=0;return SDL_gfx.dra...
  function _rectangleColor (line 8) | function _rectangleColor(surf,x1,y1,x2,y2,color){surf>>>=0;return SDL_gf...
  function _rectangleRGBA (line 8) | function _rectangleRGBA(surf,x1,y1,x2,y2,r,g,b,a){surf>>>=0;return SDL_g...
  function _ellipseColor (line 8) | function _ellipseColor(surf,x,y,rx,ry,color){surf>>>=0;return SDL_gfx.dr...
  function _ellipseRGBA (line 8) | function _ellipseRGBA(surf,x,y,rx,ry,r,g,b,a){surf>>>=0;return SDL_gfx.d...
  function _filledEllipseColor (line 8) | function _filledEllipseColor(surf,x,y,rx,ry,color){surf>>>=0;return SDL_...
  function _filledEllipseRGBA (line 8) | function _filledEllipseRGBA(surf,x,y,rx,ry,r,g,b,a){surf>>>=0;return SDL...
  function _lineColor (line 8) | function _lineColor(surf,x1,y1,x2,y2,color){surf>>>=0;return SDL_gfx.dra...
  function _lineRGBA (line 8) | function _lineRGBA(surf,x1,y1,x2,y2,r,g,b,a){surf>>>=0;return SDL_gfx.dr...
  function _pixelRGBA (line 8) | function _pixelRGBA(surf,x1,y1,r,g,b,a){surf>>>=0;return _boxRGBA(surf,x...
  function _SDL_GL_GetAttribute (line 8) | function _SDL_GL_GetAttribute(attr,value){value>>>=0;if(!(attr in SDL.gl...
  function _SDL_GL_ExtensionSupported (line 8) | function _SDL_GL_ExtensionSupported(extension){extension>>>=0;return GLc...
  function _SDL_DestroyWindow (line 8) | function _SDL_DestroyWindow(window){window>>>=0}
  function _SDL_DestroyRenderer (line 8) | function _SDL_DestroyRenderer(renderer){renderer>>>=0}
  function _SDL_GetWindowFlags (line 8) | function _SDL_GetWindowFlags(window){window>>>=0;if(Browser.isFullscreen...
  function _SDL_GL_SwapWindow (line 8) | function _SDL_GL_SwapWindow(window){window>>>=0}
  function _SDL_GL_MakeCurrent (line 8) | function _SDL_GL_MakeCurrent(window,context){window>>>=0;context>>>=0}
  function _SDL_GL_DeleteContext (line 8) | function _SDL_GL_DeleteContext(context){context>>>=0}
  function _SDL_SetWindowTitle (line 8) | function _SDL_SetWindowTitle(window,title){window>>>=0;title>>>=0;if(tit...
  function _SDL_GetWindowSize (line 8) | function _SDL_GetWindowSize(window,width,height){window>>>=0;width>>>=0;...
  function _SDL_LogSetOutputFunction (line 8) | function _SDL_LogSetOutputFunction(callback,userdata){callback>>>=0;user...
  function _SDL_SetWindowFullscreen (line 8) | function _SDL_SetWindowFullscreen(window,fullscreen){window>>>=0;if(Brow...
  function _SDL_SetGammaRamp (line 8) | function _SDL_SetGammaRamp(redTable,greenTable,blueTable){redTable>>>=0;...
  function _SDL_JoystickName (line 8) | function _SDL_JoystickName(deviceIndex){var gamepad=SDL.getGamepad(devic...
  function _SDL_JoystickOpen (line 8) | function _SDL_JoystickOpen(deviceIndex){var gamepad=SDL.getGamepad(devic...
  function _SDL_JoystickIndex (line 8) | function _SDL_JoystickIndex(joystick){joystick>>>=0;return joystick-1}
  function _SDL_JoystickNumAxes (line 8) | function _SDL_JoystickNumAxes(joystick){joystick>>>=0;var gamepad=SDL.ge...
  function _SDL_JoystickNumBalls (line 8) | function _SDL_JoystickNumBalls(joystick){joystick>>>=0;return 0}
  function _SDL_JoystickNumHats (line 8) | function _SDL_JoystickNumHats(joystick){joystick>>>=0;return 0}
  function _SDL_JoystickNumButtons (line 8) | function _SDL_JoystickNumButtons(joystick){joystick>>>=0;var gamepad=SDL...
  function _SDL_JoystickGetAxis (line 8) | function _SDL_JoystickGetAxis(joystick,axis){joystick>>>=0;var gamepad=S...
  function _SDL_JoystickGetHat (line 8) | function _SDL_JoystickGetHat(joystick,hat){joystick>>>=0;return 0}
  function _SDL_JoystickGetBall (line 8) | function _SDL_JoystickGetBall(joystick,ball,dxptr,dyptr){joystick>>>=0;d...
  function _SDL_JoystickGetButton (line 8) | function _SDL_JoystickGetButton(joystick,button){joystick>>>=0;var gamep...
  function _SDL_JoystickClose (line 8) | function _SDL_JoystickClose(joystick){joystick>>>=0;delete SDL.lastJoyst...
  function _SDL_RWFromConstMem (line 8) | function _SDL_RWFromConstMem(mem,size){mem>>>=0;var id=SDL.rwops.length;...
  function _SDL_GetCurrentAudioDriver (line 8) | function _SDL_GetCurrentAudioDriver(){return stringToNewUTF8("Emscripten...
  function _SDL_GetAudioDriver (line 8) | function _SDL_GetAudioDriver(index){return _SDL_GetCurrentAudioDriver()}
  function _SDL_CreateThread (line 8) | function _SDL_CreateThread(fs,data,pfnBeginThread,pfnEndThread){fs>>>=0;...
  function _SDL_WaitThread (line 8) | function _SDL_WaitThread(thread,status){thread>>>=0;status>>>=0;throw"SD...
  function _SDL_GetThreadID (line 8) | function _SDL_GetThreadID(thread){thread>>>=0;throw"SDL_GetThreadID"}
  function _SDL_ThreadID (line 8) | function _SDL_ThreadID(){return 0}
  function _SDL_AllocRW (line 8) | function _SDL_AllocRW(){throw"SDL_AllocRW: TODO"}
  function _SDL_CondBroadcast (line 8) | function _SDL_CondBroadcast(cond){cond>>>=0;throw"SDL_CondBroadcast: TODO"}
  function _SDL_CondWaitTimeout (line 8) | function _SDL_CondWaitTimeout(cond,mutex,ms){cond>>>=0;mutex>>>=0;throw"...
  function _Mix_SetPostMix (line 8) | function _Mix_SetPostMix(func,arg){func>>>=0;arg>>>=0;return warnOnce("M...
  function _Mix_VolumeChunk (line 8) | function _Mix_VolumeChunk(chunk,volume){chunk>>>=0;throw"Mix_VolumeChunk...
  function _Mix_QuerySpec (line 8) | function _Mix_QuerySpec(frequency,format,channels){frequency>>>=0;format...
  function _Mix_FadeInChannelTimed (line 8) | function _Mix_FadeInChannelTimed(channel,chunk,loop,ms,ticks){chunk>>>=0...
  function _Mix_Linked_Version (line 8) | function _Mix_Linked_Version(){throw"Mix_Linked_Version: TODO"}
  function _SDL_SaveBMP_RW (line 8) | function _SDL_SaveBMP_RW(surface,dst,freedst){surface>>>=0;dst>>>=0;thro...
  function _SDL_WM_SetIcon (line 8) | function _SDL_WM_SetIcon(icon,mask){icon>>>=0;mask>>>=0}
  function console_error (line 8) | function console_error(msg){let jsmsg=UTF8ToString(msg);console.error(js...
  function console_error_obj (line 8) | function console_error_obj(obj){console.error(obj)}
  function new_error (line 8) | function new_error(type,msg,err){return new API.PythonError(UTF8ToString...
  function fail_test (line 8) | function fail_test(){API.fail_test=true}
  function capture_stderr (line 8) | function capture_stderr(){API.capture_stderr()}
  function restore_stderr (line 8) | function restore_stderr(){return API.restore_stderr()}
  function raw_call_js (line 8) | function raw_call_js(func){func()}
  function hiwire_invalid_ref_js (line 8) | function hiwire_invalid_ref_js(type,ref){API.fail_test=!!1;if(type===1&&...
  function set_pyodide_module (line 8) | function set_pyodide_module(mod){API._pyodide=mod}
  function js2python_immutable_js (line 8) | function js2python_immutable_js(value){try{let result=Module.js2python_c...
  function js2python_js (line 8) | function js2python_js(value){try{let result=Module.js2python_convertImmu...
  function js2python_convert (line 8) | function js2python_convert(v,depth,defaultConverter){try{return Module.j...
  function isReservedWord (line 8) | function isReservedWord(word){if(!Module.pythonReservedWords){Module.pyt...
  function normalizeReservedWords (line 8) | function normalizeReservedWords(word){const noTrailing_=word.replace(/_*...
  function JsProxy_GetAttr_js (line 8) | function JsProxy_GetAttr_js(jsobj,ptrkey){try{const jskey=normalizeReser...
  function JsProxy_SetAttr_js (line 8) | function JsProxy_SetAttr_js(jsobj,ptrkey,jsval){try{let jskey=normalizeR...
  function JsProxy_DelAttr_js (line 8) | function JsProxy_DelAttr_js(jsobj,ptrkey){try{let jskey=normalizeReserve...
  function JsProxy_GetIter_js (line 8) | function JsProxy_GetIter_js(obj){try{return obj[Symbol.iterator]()}catch...
  function handle_next_result_js (line 8) | function handle_next_result_js(res,done,msg){try{let errmsg;if(typeof re...
  function JsException_new_helper (line 8) | function JsException_new_helper(name_ptr,message_ptr,stack_ptr){try{let ...
  function JsProxy_GetAsyncIter_js (line 8) | function JsProxy_GetAsyncIter_js(obj){try{return obj[Symbol.asyncIterato...
  function _agen_handle_result_js (line 8) | function _agen_handle_result_js(p,msg,set_result,set_exception,closing){...
  function get_length_helper (line 8) | function get_length_helper(val){try{let result;if(typeof val.size==="num...
  function get_length_string (line 8) | function get_length_string(val){try{let result;if(typeof val.size==="num...
  function destroy_jsarray_entries (line 8) | function destroy_jsarray_entries(array){for(let v of array){try{if(typeo...
  function JsArray_repeat_js (line 8) | function JsArray_repeat_js(o,count){try{return Array.from({length:count}...
  function JsArray_inplace_repeat_js (line 8) | function JsArray_inplace_repeat_js(o,count){try{o.splice(0,o.length,...A...
  function JsArray_reversed_iterator (line 8) | function JsArray_reversed_iterator(array){return new ReversedIterator(ar...
  class ReversedIterator (line 8) | class ReversedIterator{constructor(array){this._array=array;this._i=arra...
    method constructor (line 8) | constructor(array){this._array=array;this._i=array.length-1}
    method __length_hint__ (line 8) | __length_hint__(){return this._array.length}
    method next (line 8) | next(){const i=this._i;const a=this._array;const done=i<0;const value=...
  method [Symbol.toStringTag] (line 8) | [Symbol.toStringTag](){return"ReverseIterator"}
  function JsArray_index_js (line 8) | function JsArray_index_js(o,v,start,stop){try{for(let i=start;i<stop;i++...
  function JsArray_count_js (line 8) | function JsArray_count_js(o,v){try{let result=0;for(let i=0;i<o.length;i...
  function JsArray_reverse_js (line 8) | function JsArray_reverse_js(array){try{array.reverse()}catch(e){Module.h...
  function JsProxy_subscript_js (line 8) | function JsProxy_subscript_js(obj,key){try{let result=obj.get(key);if(re...
  function JsMap_GetIter_js (line 8) | function JsMap_GetIter_js(obj){try{let result;if(typeof obj.keys==="func...
  function JsMap_clear_js (line 8) | function JsMap_clear_js(map){try{if(map&&typeof map.clear==="function"){...
  function JsProxy_Dir_js (line 8) | function JsProxy_Dir_js(jsobj){try{let result=[];do{const names=Object.g...
  function JsProxy_Bool_js (line 8) | function JsProxy_Bool_js(val){try{if(!val){return!!0}if(val.size===0){if...
  function JsObjMap_GetIter_js (line 8) | function JsObjMap_GetIter_js(obj){try{return Module.iterObject(obj)}catc...
  function JsObjMap_length_js (line 8) | function JsObjMap_length_js(obj){try{let length=0;for(let _ of Module.it...
  function JsObjMap_subscript_js (line 8) | function JsObjMap_subscript_js(obj,key){try{if(!Object.prototype.hasOwnP...
  function JsObjMap_ass_subscript_js (line 8) | function JsObjMap_ass_subscript_js(obj,key,value){try{if(value===Module....
  function JsObjMap_contains_js (line 8) | function JsObjMap_contains_js(obj,key){try{return Object.prototype.hasOw...
  function JsModule_GetAll_js (line 8) | function JsModule_GetAll_js(o){try{return Object.getOwnPropertyNames(o)}...
  function JsBuffer_DecodeString_js (line 8) | function JsBuffer_DecodeString_js(buffer,encoding){try{let encoding_js;i...
  function JsBuffer_get_info (line 8) | function JsBuffer_get_info(jsobj,byteLength_ptr,format_ptr,size_ptr,chec...
  function JsDoubleProxy_unwrap_js (line 8) | function JsDoubleProxy_unwrap_js(id){try{return Module.PyProxy_getPtr(id...
  function JsProxy_to_weakref_js (line 8) | function JsProxy_to_weakref_js(pyproxy){try{return new WeakRef(pyproxy)}...
  function JsProxy_compute_typeflags (line 8) | function JsProxy_compute_typeflags(obj,is_py_json){try{let type_flags=0;...
  function is_comlink_proxy (line 8) | function is_comlink_proxy(obj){try{return!!(API.Comlink&&value[API.Comli...
  function can_run_sync_js (line 8) | function can_run_sync_js(){return!!validSuspender.value}
  function my_dict_converter (line 8) | function my_dict_converter(){return Object.fromEntries}
  function get_async_js_call_done_callback (line 8) | function get_async_js_call_done_callback(proxies){try{return function(re...
  function wrap_generator (line 8) | function wrap_generator(gen,proxies){try{proxies=new Set(proxies);const ...
  function wrap_async_generator (line 8) | function wrap_async_generator(gen,proxies){try{proxies=new Set(proxies);...
  function throw_no_gil (line 8) | function throw_no_gil(){throw new API.NoGilError("Attempted to use PyPro...
  function pyproxy_Check (line 8) | function pyproxy_Check(val){return API.isPyProxy(val)}
  function pyproxy_AsPyObject (line 8) | function pyproxy_AsPyObject(val){if(!API.isPyProxy(val)||!pyproxyIsAlive...
  function destroy_proxies (line 8) | function destroy_proxies(proxies,msg_ptr){let msg=undefined;if(msg_ptr){...
  function gc_register_proxies (line 8) | function gc_register_proxies(proxies){for(let px of proxies){Module.gc_r...
  function destroy_proxy (line 8) | function destroy_proxy(px,msg_ptr){const{shared,props}=Module.PyProxy_ge...
  function proxy_cache_get (line 8) | function proxy_cache_get(proxyCache,descr){const proxy=proxyCache.get(de...
  function proxy_cache_set (line 8) | function proxy_cache_set(proxyCache,descr,proxy){proxyCache.set(descr,pr...
  function _pyproxyGen_make_result (line 8) | function _pyproxyGen_make_result(done,value){return{done:!!done,value}}
  function array_to_js (line 8) | function array_to_js(array,len){return Array.from(HEAP32.subarray(array/...
  function _pyproxy_get_buffer_result (line 8) | function _pyproxy_get_buffer_result(start_ptr,smallest_ptr,largest_ptr,r...
  function pyproxy_new_ex (line 8) | function pyproxy_new_ex(ptrobj,capture_this,roundtrip,gcRegister,jsonAda...
  function pyproxy_new (line 8) | function pyproxy_new(ptrobj){try{return Module.pyproxy_new(ptrobj)}catch...
  function create_once_callable (line 8) | function create_once_callable(obj,may_syncify){try{_Py_IncRef(obj);let a...
  function create_promise_handles (line 8) | function create_promise_handles(handle_result,handle_exception,done_call...
  function _python2js_buffer_inner (line 8) | function _python2js_buffer_inner(buf,itemsize,ndim,format,shape,strides,...
  function jslib_init_js (line 8) | function jslib_init_js(){try{HEAP32[_Jsr_undefined/4>>>0]=_hiwire_intern...
  function JsvNoValue_Check (line 8) | function JsvNoValue_Check(v){return v===Module.novalue}
  function JsvNum_fromInt (line 8) | function JsvNum_fromInt(x){return x}
  function JsvNum_fromDouble (line 8) | function JsvNum_fromDouble(val){return val}
  function JsvNum_fromDigits (line 8) | function JsvNum_fromDigits(digits,ndigits){let result=BigInt(0);for(let ...
  function Jsv_to_bool (line 8) | function Jsv_to_bool(x){return!!x}
  function Jsv_typeof (line 8) | function Jsv_typeof(x){return typeof x}
  function Jsv_constructorName (line 8) | function Jsv_constructorName(obj){try{return stringToNewUTF8(obj.constru...
  function JsvUTF8ToString (line 8) | function JsvUTF8ToString(ptr){return UTF8ToString(ptr)}
  function JsvArray_New (line 8) | function JsvArray_New(){return[]}
  function JsvArray_Check (line 8) | function JsvArray_Check(obj){try{if(Array.isArray(obj)){return true}let ...
  function JsvArray_Get (line 8) | function JsvArray_Get(arr,idx){try{const result=arr[idx];if(result===und...
  function JsvArray_Set (line 8) | function JsvArray_Set(arr,idx,val){try{arr[idx]=val}catch(e){Module.hand...
  function JsvArray_Delete (line 8) | function JsvArray_Delete(arr,idx){try{if(idx<0||idx>=arr.length){return ...
  function JsvArray_Push (line 8) | function JsvArray_Push(arr,obj){return arr.push(obj)}
  function JsvArray_Extend (line 8) | function JsvArray_Extend(arr,vals){arr.push(...vals)}
  function JsvArray_Insert (line 8) | function JsvArray_Insert(arr,idx,value){try{arr.splice(idx,0,value)}catc...
  function JsvArray_ShallowCopy (line 8) | function JsvArray_ShallowCopy(arr){try{return"slice"in arr?arr.slice():A...
  function JsvArray_slice (line 8) | function JsvArray_slice(obj,length,start,stop,step){try{let result;if(st...
  function JsvArray_slice_assign (line 8) | function JsvArray_slice_assign(obj,slicelength,start,stop,step,values_le...
  function JsvObject_New (line 8) | function JsvObject_New(){return{}}
  function JsvObject_SetAttr (line 8) | function JsvObject_SetAttr(obj,attr,value){try{obj[attr]=value}catch(e){...
  function JsvObject_Entries (line 8) | function JsvObject_Entries(obj){try{return Object.entries(obj)}catch(e){...
  function JsvObject_Keys (line 8) | function JsvObject_Keys(obj){try{return Object.keys(obj)}catch(e){Module...
  function JsvObject_Values (line 8) | function JsvObject_Values(obj){try{return Object.values(obj)}catch(e){Mo...
  function JsvObject_toString (line 8) | function JsvObject_toString(obj){try{if(hasMethod(obj,"toString")){retur...
  function JsvObject_CallMethod (line 8) | function JsvObject_CallMethod(obj,meth,args){try{return obj[meth](...arg...
  function JsvObject_CallMethod_NoArgs (line 8) | function JsvObject_CallMethod_NoArgs(obj,meth){try{return obj[meth]()}ca...
  function JsvObject_CallMethod_OneArg (line 8) | function JsvObject_CallMethod_OneArg(obj,meth,arg){try{return obj[meth](...
  function JsvObject_CallMethod_TwoArgs (line 8) | function JsvObject_CallMethod_TwoArgs(obj,meth,arg1,arg2){try{return obj...
  function JsvFunction_Check (line 8) | function JsvFunction_Check(obj){try{return typeof obj==="function"}catch...
  function JsvFunction_CallBound (line 8) | function JsvFunction_CallBound(func,this_,args){try{return Function.prot...
  function JsvFunction_Call_OneArg (line 8) | function JsvFunction_Call_OneArg(func,arg){try{return func(arg)}catch(e)...
  function JsvFunction_Construct (line 8) | function JsvFunction_Construct(func,args){try{return Reflect.construct(f...
  function JsvPromise_Check (line 8) | function JsvPromise_Check(obj){try{return isPromise(obj)}catch(e){return...
  function JsvPromise_Resolve (line 8) | function JsvPromise_Resolve(obj){try{return Promise.resolve(obj)}catch(e...
  function jslib_init_buffers_js (line 8) | function jslib_init_buffers_js(){try{const dtypes_str=Array.from("bBhHiI...
  function JsvBuffer_assignToPtr (line 8) | function JsvBuffer_assignToPtr(buf,ptr){try{Module.HEAPU8.set(bufferAsUi...
  function JsvBuffer_assignFromPtr (line 8) | function JsvBuffer_assignFromPtr(buf,ptr){try{bufferAsUint8Array(buf).se...
  function JsvBuffer_readFromFile (line 8) | function JsvBuffer_readFromFile(buf,fd){try{let uint8_buf=bufferAsUint8A...
  function JsvBuffer_writeToFile (line 8) | function JsvBuffer_writeToFile(buf,fd){try{let uint8_buf=bufferAsUint8Ar...
  function JsvBuffer_intoFile (line 8) | function JsvBuffer_intoFile(buf,fd){try{let uint8_buf=bufferAsUint8Array...
  function JsvGenerator_Check (line 8) | function JsvGenerator_Check(obj){try{return getTypeTag(obj)==="[object G...
  function JsvAsyncGenerator_Check (line 8) | function JsvAsyncGenerator_Check(obj){try{return getTypeTag(obj)==="[obj...
  function JsvError_Throw (line 8) | function JsvError_Throw(e){throw e}
  function Jsv_less_than (line 8) | function Jsv_less_than(a,b){try{return!!(a<b)}catch(e){return false}}
  function Jsv_less_than_equal (line 8) | function Jsv_less_than_equal(a,b){try{return!!(a<=b)}catch(e){return fal...
  function Jsv_equal (line 8) | function Jsv_equal(a,b){try{return!!(a===b)}catch(e){return false}}
  function Jsv_not_equal (line 8) | function Jsv_not_equal(a,b){try{return!!(a!==b)}catch(e){return false}}
  function Jsv_greater_than (line 8) | function Jsv_greater_than(a,b){try{return!!(a>b)}catch(e){return false}}
  function Jsv_greater_than_equal (line 8) | function Jsv_greater_than_equal(a,b){try{return!!(a>=b)}catch(e){return ...
  function JsvMap_New (line 8) | function JsvMap_New(){try{return new Map}catch(e){Module.handle_js_error...
  function JsvLiteralMap_New (line 8) | function JsvLiteralMap_New(){try{return new API.LiteralMap}catch(e){Modu...
  function JsvMap_Set (line 8) | function JsvMap_Set(map,key,val){try{map.set(key,val)}catch(e){Module.ha...
  function JsvSet_New (line 8) | function JsvSet_New(){try{return new Set}catch(e){Module.handle_js_error...
  function JsvSet_Add (line 8) | function JsvSet_Add(set,val){try{set.add(val)}catch(e){Module.handle_js_...
  function _python2js_addto_postprocess_list (line 8) | function _python2js_addto_postprocess_list(list,parent,key,value){list.p...
  function _python2js_handle_postprocess_list (line 8) | function _python2js_handle_postprocess_list(list,cache){for(const[parent...
  function _python2js_ucs1 (line 8) | function _python2js_ucs1(ptr,len){try{let jsstr="";for(let i=0;i<len;++i...
  function _python2js_ucs2 (line 8) | function _python2js_ucs2(ptr,len){try{let jsstr="";for(let i=0;i<len;++i...
  function _python2js_ucs4 (line 8) | function _python2js_ucs4(ptr,len){try{let jsstr="";for(let i=0;i<len;++i...
  function _python2js_add_to_cache (line 8) | function _python2js_add_to_cache(cache,pyparent,jsparent){try{cache.set(...
  function _python2js_cache_lookup (line 8) | function _python2js_cache_lookup(cache,pyparent){return cache.get(pypare...
  function _JsObject_Set_js (line 8) | function _JsObject_Set_js(obj,key,value){try{if(key in obj){return-2}obj...
  function _JsArray_PushEntry_helper (line 8) | function _JsArray_PushEntry_helper(array,key,value){try{array.push([key,...
  function _JsArray_PostProcess_helper (line 8) | function _JsArray_PostProcess_helper(jscontext,array){try{return jsconte...
  function python2js__default_converter_js (line 8) | function python2js__default_converter_js(jscontext,object){try{let proxy...
  function python2js__eager_converter_js (line 8) | function python2js__eager_converter_js(jscontext,object){try{if(jscontex...
  function python2js_custom__create_jscontext (line 8) | function python2js_custom__create_jscontext(context,cache,dict_converter...
  function destroy_proxies_js (line 8) | function destroy_proxies_js(proxies_id){try{for(const proxy of proxies_i...
  function pyodide_js_init (line 8) | function pyodide_js_init(){"use strict";(()=>{var Dr=Object.create;var z...
  function promisingApply (line 8) | function promisingApply(...args){validSuspender.value=true;Module.stackS...
  function promisingRunMain (line 8) | function promisingRunMain(...args){validSuspender.value=true;Module.stac...
  function createPromising (line 8) | function createPromising(wasm_func){if(Module.newJspiSupported){const pr...
  function initSuspenders (line 8) | function initSuspenders(){promisingApplyHandler=createPromising(wasmExpo...
  method constructor (line 8) | constructor(){this.start=stackSave();this.stop=Module.stackStop;this._co...
  method restore (line 8) | restore(){let total=0;while(stackStates.length>0&&stackStates[stackState...
  method _save_up_to (line 8) | _save_up_to(stop){let sz1=this._copy.length;let sz2=stop-this.start;if(s...
  method _save (line 8) | _save(){return this._save_up_to(this.stop)}
  function getTypeTag (line 8) | function getTypeTag(x){try{return Object.prototype.toString.call(x)}catc...
  function hasProperty (line 8) | function hasProperty(obj,prop){try{while(obj){if(Object.hasOwn(obj,prop)...
  function hasMethod (line 8) | function hasMethod(obj,prop){try{return typeof obj[prop]==="function"}ca...
  function isPromise (line 8) | function isPromise(obj){try{return typeof obj?.then==="function"}catch(e...
  function bufferAsUint8Array (line 8) | function bufferAsUint8Array(arg){if(ArrayBuffer.isView(arg)){return new ...
  function wasmFunctionType (line 8) | function wasmFunctionType(wasm_func){if(!WebAssembly.Function){throw new...
  function set_suspender (line 8) | function set_suspender(suspender){suspenderGlobal.value=suspender}
  function get_suspender (line 8) | function get_suspender(){return suspenderGlobal.value}
  function syncifyHandler (line 8) | function syncifyHandler(x,y){return Module.error}
  function inner (line 8) | async function inner(x,y){try{return await(x??y)}catch(e){if(e&&e.pyodid...
  function JsvPromise_Syncify_handleError (line 8) | function JsvPromise_Syncify_handleError(){if(!Module.syncify_error){retu...
  function saveState (line 8) | function saveState(){if(!validSuspender.value){return Module.error}const...
  function restoreState (line 8) | function restoreState(state){state.stackState.restore();_restoreThreadSt...
  function _Py_emscripten_runtime (line 8) | function _Py_emscripten_runtime(){var info;if(typeof navigator=="object"...
  function _Py_CheckEmscriptenSignals_Helper (line 8) | function _Py_CheckEmscriptenSignals_Helper(){if(!Module.Py_EmscriptenSig...
  function _PyEM_GetCountArgsPtr (line 8) | function _PyEM_GetCountArgsPtr(){return Module._PyEM_CountArgsPtr}
  function _PyEM_InitTrampoline_js (line 8) | function _PyEM_InitTrampoline_js(){const ptr=getPyEMCountArgsPtr();Modul...
  function getPyEMCountArgsPtr (line 8) | function getPyEMCountArgsPtr(){let isIOS=globalThis.navigator&&(/iPad|iP...
  function _PyEM_TrampolineCall_JS (line 8) | function _PyEM_TrampolineCall_JS(func,arg1,arg2,arg3){return wasmTable.g...
  function unbox_small_structs (line 8) | function unbox_small_structs(type_ptr){var type_id=HEAPU16[(type_ptr+6>>...
  function ffi_call_js (line 8) | function ffi_call_js(cif,fn,rvalue,avalue){var abi=HEAPU32[(cif>>2)+0>>>...
  function ffi_closure_alloc_js (line 8) | function ffi_closure_alloc_js(size,code){var closure=_malloc(size);var i...
  function ffi_closure_free_js (line 8) | function ffi_closure_free_js(closure){var index=HEAPU32[(closure>>2)+0>>...
  function ffi_prep_closure_loc_js (line 8) | function ffi_prep_closure_loc_js(closure,cif,fun,user_data,codeloc){var ...
  function __hiwire_deduplicate_new (line 8) | function __hiwire_deduplicate_new(){return new Map}
  function __hiwire_deduplicate_get (line 8) | function __hiwire_deduplicate_get(map,value){return map.get(value)}
  function __hiwire_deduplicate_set (line 8) | function __hiwire_deduplicate_set(map,value,ref){map.set(value,ref)}
  function __hiwire_deduplicate_delete (line 8) | function __hiwire_deduplicate_delete(map,value){map.delete(value)}
  function applySignatureConversions (line 8) | function applySignatureConversions(wasmExports){wasmExports=Object.assig...
  function callMain (line 8) | function callMain(args=[]){var entryFunction=resolveGlobalSymbol("main")...
  function run (line 8) | function run(args=arguments_){if(runDependencies>0){dependenciesFulfille...
  function preInit (line 8) | function preInit(){if(Module["preInit"]){if(typeof Module["preInit"]=="f...

FILE: public/pyodide/pyodide.js
  function de (line 1) | function de(e){return!isNaN(parseFloat(e))&&isFinite(e)}
  function N (line 1) | function N(e){return e.charAt(0).toUpperCase()+e.substring(1)}
  function T (line 1) | function T(e){return function(){return this[e]}}
  function y (line 1) | function y(e){if(e)for(var t=0;t<D.length;t++)e[D[t]]!==void 0&&this["se...
  function me (line 1) | function me(){var e=/^\s*at .*(\S+:\d+|\(native\))/m,t=/^(eval@)?(\[nati...
  function ye (line 3) | function ye(){if(typeof API<"u"&&API!==globalThis.API)return API.runtime...
  function ge (line 3) | function ge(e){let t=e.IN_NODE&&typeof module<"u"&&module.exports&&typeo...
  function W (line 3) | async function W(){if(!f.IN_NODE||(z=(await import(/* webpackIgnore */"n...
  function be (line 3) | function be(e,t){return C.resolve(t||".",e)}
  function ve (line 3) | function ve(e,t){return t===void 0&&(t=location),new URL(e,t).toString()}
  function Pe (line 3) | function Pe(e,t){return e.startsWith("file://")&&(e=e.slice(7)),e.includ...
  function Ee (line 3) | function Ee(e,t){if(e.startsWith("file://")&&(e=e.slice(7)),e.includes("...
  function he (line 3) | function he(e,t){let n=new URL(e,location);return{response:fetch(n,t?{in...
  function q (line 3) | async function q(e,t){let{response:n,binary:i}=A(e,t);if(i)return i;let ...
  function Ne (line 3) | async function Ne(e){e.startsWith("file://")&&(e=e.slice(7)),e.includes(...
  function G (line 3) | async function G(e){if(f.IN_NODE){await W();let t=await U.readFile(e,{en...
  function K (line 3) | async function K(){if(f.IN_NODE_COMMONJS)return __dirname;let e;try{thro...
  function Y (line 3) | function Y(e){return e.substring(0,e.lastIndexOf("/")+1)||globalThis.loc...
  function X (line 3) | function X(e){let t=e.FS,n=e.FS.filesystems.MEMFS,i=e.PATH,a={DIR_MODE:1...
  function n (line 3) | async function n(a){for await(let r of a.values())t.push(r),r.kind==="di...
  function Z (line 3) | async function Z(){let e=await we;if(e)return e.exports;let t=Symbol("er...
  function ee (line 3) | function ee(e){let t={config:e,runtimeEnv:f},n={noImageDecoding:!0,noAud...
  function _e (line 3) | function _e(e){return function(t){let n="/";try{t.FS.mkdirTree(e)}catch(...
  function ke (line 3) | function ke(e){return function(t){Object.assign(t.ENV,e)}}
  function Re (line 3) | function Re(e){return e?[async t=>{t.addRunDependency("fsInitHook");try{...
  function Ae (line 3) | function Ae(e){let t=e.HEAPU32[e._Py_Version>>>2],n=t>>>24&255,i=t>>>16&...
  function Fe (line 3) | function Fe(e){let t=q(e);return async n=>{n.API.pyVersionTuple=Ae(n);le...
  function Oe (line 3) | function Oe(e){let t;return e.stdLibURL!=null?t=e.stdLibURL:t=e.indexURL...
  function xe (line 3) | function xe(e){if(typeof WasmOffsetConverter<"u")return;let{binary:t,res...
  function O (line 3) | function O(e){return e===void 0||e.endsWith("/")?e:e+"/"}
  function De (line 3) | async function De(e={}){if(await W(),e.lockFileContents&&e.lockFileURL)t...
  function Le (line 3) | function Le(e){let t=ee(e),n=t.API;return n.lockFilePromise=Promise.reso...
  function Te (line 3) | async function Te(e){if(typeof _createPyodideModule!="function"){let t=`...
  function Ce (line 3) | async function Ce(e,t){if(!e._loadSnapshot)return;let n=await e._loadSna...
  function Ue (line 3) | async function Ue(e){let t=await _createPyodideModule(e);if(e.exitCode!=...
  function We (line 3) | function We(e,t){let n=e.API;if(t.pyproxyToStringRepr&&n.setPyProxyToStr...
  function Me (line 3) | function Me(e,t,n){let i=e.API,a;return t&&(a=i.restoreSnapshot(t)),i.fi...
  function Be (line 3) | async function Be(e,t){let n=e._api;return n.sys.path.insert(0,""),n._py...
  function B (line 3) | async function B(e={}){let t=await De(e),n=Le(t);await Te(t);let i=await...

FILE: scripts/generate-parser.js
  function generateParser (line 6) | async function generateParser() {

FILE: src/cells/BaseCell.ts
  type CellTypes (line 4) | type CellTypes = "math" | "documentation" | "plot" | "table" | "piecewis...
  type DatabaseCell (line 7) | type DatabaseCell = DatabaseMathCell | DatabaseDocumentationCell |
  type DatabaseMathCell (line 12) | type DatabaseMathCell = {
  type DatabasePlotCell (line 19) | type DatabasePlotCell = {
  type DatabaseDocumentationCell (line 28) | type DatabaseDocumentationCell = {
  type DatabaseTableCell (line 34) | type DatabaseTableCell = {
  type DatabaseInterpolationDefinitionOld (line 50) | type DatabaseInterpolationDefinitionOld = {
  type DatabaseInterpolationDefinition (line 58) | type DatabaseInterpolationDefinition = {
  type DatabaseDataTableFitDefinition (line 67) | type DatabaseDataTableFitDefinition = DatabaseInterpolationDefinitionOld...
  type DatabaseDataTableCell (line 69) | type DatabaseDataTableCell = {
  type DatabasePiecewiseCell (line 83) | type DatabasePiecewiseCell = {
  type DatabaseSystemCell (line 91) | type DatabaseSystemCell = {
  type DatabaseFluidCell (line 99) | type DatabaseFluidCell = {
  type DatabaseCodeCell (line 112) | type DatabaseCodeCell = {
  method parsePending (line 128) | get parsePending() {
  method constructor (line 132) | constructor(type: CellTypes, index?: number) {

FILE: src/cells/Cells.ts
  type Cell (line 15) | type Cell = MathCell | PlotCell | TableCell | DocumentationCell |
  function cellFactory (line 19) | async function cellFactory(databaseCell: DatabaseCell, config: Config):

FILE: src/cells/CodeCell.svelte.ts
  type CodeCellDims (line 8) | type CodeCellDims = CodeCellDimsSpecific | CodeCellDimsAny | CodeCellDim...
  type CodeCellDimsSpecific (line 10) | type CodeCellDimsSpecific = {
  type CodeCellDimsAny (line 17) | type CodeCellDimsAny = {
  type CodeCellDimsDummy (line 21) | type CodeCellDimsDummy = {
  type CodeCellDimsRender (line 25) | type CodeCellDimsRender = {
  type ScalarCodeCellDims (line 30) | type ScalarCodeCellDims = {
  type MatrixCodeCellDims (line 35) | type MatrixCodeCellDims = {
  type CodeCellInputOutputDims (line 40) | type CodeCellInputOutputDims = ScalarCodeCellDims | MatrixCodeCellDims;
  type CodeCellFunction (line 42) | type CodeCellFunction = {
  class CodeCell (line 53) | class CodeCell extends BaseCell {
    method constructor (line 64) | constructor (arg?: DatabaseCodeCell) {
    method init (line 80) | static async init() {
    method serialize (line 117) | serialize(): DatabaseCodeCell {
    method parsePending (line 128) | get parsePending() {
    method getNextFuncName (line 132) | getNextFuncName() {
    method getInitialLatex (line 136) | getInitialLatex() {
    method getInitialCode (line 140) | getInitialCode() {
    method getCodeCellFunction (line 147) | getCodeCellFunction(): CodeCellFunction | null {
    method updateNeededPyodidePackages (line 162) | updateNeededPyodidePackages() {

FILE: src/cells/DataTableCell.svelte.ts
  type XLSX (line 9) | type XLSX = typeof import("xlsx");
  type InterpolationDefinition (line 11) | type InterpolationDefinition = {
  type InterpolationFunction (line 20) | type InterpolationFunction = {
  type GridInterpolationFunction (line 31) | type GridInterpolationFunction = {
  class DataTableCell (line 42) | class DataTableCell extends BaseCell {
    method constructor (line 72) | constructor (arg?: DatabaseDataTableCell) {
    method getNextColName (line 158) | static getNextColName() {
    method init (line 162) | static async init() {
    method getNextColId (line 168) | getNextColId() {
    method serialize (line 177) | serialize(): DatabaseDataTableCell {
    method parsePending (line 201) | get parsePending() {
    method isInterpolationCol (line 207) | isInterpolationCol(column: number) {
    method debounceParseColumn (line 219) | debounceParseColumn(columnId: number, timeout = 300): Promise<void> {
    method parseColumn (line 247) | async parseColumn(columnId: number) {
    method addRow (line 317) | addRow() {
    method addColumn (line 323) | addColumn() {
    method deleteRow (line 345) | deleteRow(rowIndex: number) {
    method deleteColumn (line 351) | deleteColumn(colIndex: number) {
    method padColumns (line 391) | padColumns() {
    method deleteEmptyRows (line 409) | deleteEmptyRows() {
    method clearOutputColumns (line 420) | clearOutputColumns() {
    method addInterpolationDefinition (line 428) | addInterpolationDefinition(type: "polyfit" | "interpolation", input: n...
    method deleteInterpolationDefinition (line 446) | deleteInterpolationDefinition(index: number) {
    method fixInterpolationCols (line 450) | fixInterpolationCols() {
    method setInterpolationFunctions (line 494) | setInterpolationFunctions() {
    method selectAndLoadSpreadsheetFile (line 597) | selectAndLoadSpreadsheetFile(): Promise<void> {
    method loadFile (line 613) | loadFile(file: File): Promise<void> {
    method populateTable (line 632) | populateTable(fileReader: ProgressEvent<FileReader>){
    method exportAsCSV (line 745) | async exportAsCSV(name: string) {
    method getSheetRows (line 755) | async getSheetRows(forMarkdown = false, columnFormatOptions?: NumberFo...
    method getClipboardData (line 804) | async getClipboardData(): Promise<string> {
  function excelColName (line 810) | function excelColName(index: number): string {
  function gridDetector (line 827) | function gridDetector(inputFunction: InterpolationFunction): (Interpolat...

FILE: src/cells/DeletedCell.ts
  class DeletedCell (line 5) | class DeletedCell extends BaseCell {
    method constructor (line 9) | constructor (deletedCell: Cell, height=0) {
    method serialize (line 15) | serialize() {

FILE: src/cells/DocumentationCell.svelte.ts
  class DocumentationField (line 4) | class DocumentationField {
    method constructor (line 8) | constructor (delta?: Delta) {
  class DocumentationCell (line 17) | class DocumentationCell extends BaseCell {
    method constructor (line 20) | constructor (arg?: DatabaseDocumentationCell) {
    method serialize (line 29) | serialize(): DatabaseDocumentationCell {

FILE: src/cells/FluidCell.svelte.ts
  type FluidConstants (line 7) | type FluidConstants = typeof import("../fluidConstants");
  type FluidFunction (line 9) | type FluidFunction = {
  class FluidCell (line 22) | class FluidCell extends BaseCell {
    method constructor (line 40) | constructor (sheetFluidConfig: FluidConfig, arg?: DatabaseFluidCell) {
    method init (line 68) | static async init() {
    method serialize (line 79) | serialize(): DatabaseFluidCell {
    method parsePending (line 94) | get parsePending() {
    method getSuggestedName (line 98) | getSuggestedName(sheetFluidConfig: FluidConfig) {
    method errorCheck (line 123) | errorCheck(sheetFluidConfig: FluidConfig) {
    method getFluidFunction (line 264) | getFluidFunction(sheetFluidConfig: FluidConfig): {fluidFunction: Fluid...

FILE: src/cells/InsertCell.ts
  class InsertCell (line 4) | class InsertCell extends BaseCell {
    method constructor (line 6) | constructor () {
    method serialize (line 10) | serialize() {

FILE: src/cells/MathCell.svelte.ts
  class MathCell (line 5) | class MathCell extends BaseCell {
    method constructor (line 9) | constructor (arg?: DatabaseMathCell) {
    method serialize (line 28) | serialize(): DatabaseMathCell {
    method parsePending (line 37) | get parsePending() {

FILE: src/cells/MathField.svelte.ts
  function setParsePending (line 8) | function setParsePending(parsePending: boolean) {
  class MathField (line 14) | class MathField {
    method constructor (line 29) | constructor (latex = "", type: FieldTypes ="math") {
    method setPendingLatex (line 35) | async setPendingLatex(immediate = false): Promise<void> {
    method parseLatex (line 53) | async parseLatex(latex: string, dataTableInfo?: DataTableInfo) {

FILE: src/cells/PiecewiseCell.svelte.ts
  class PiecewiseCell (line 5) | class PiecewiseCell extends BaseCell {
    method constructor (line 12) | constructor (arg?: DatabasePiecewiseCell) {
    method serialize (line 27) | serialize(): DatabasePiecewiseCell {
    method parsePending (line 37) | get parsePending() {
    method parsePiecewiseStatement (line 43) | async parsePiecewiseStatement() {
    method addRow (line 62) | addRow() {
    method deleteRow (line 71) | deleteRow(rowIndex: number) {

FILE: src/cells/PlotCell.svelte.ts
  type Plotly (line 6) | type Plotly = typeof import("plotly.js-basic-dist");
  class PlotCell (line 8) | class PlotCell extends BaseCell {
    method constructor (line 16) | constructor (arg?: DatabasePlotCell | MathCell) {
    method init (line 43) | static async init() {
    method serialize (line 53) | serialize(): DatabasePlotCell {
    method parsePending (line 64) | get parsePending() {
    method addRow (line 68) | addRow() {
    method deleteRow (line 73) | deleteRow(rowIndex: number) {

FILE: src/cells/SystemCell.svelte.ts
  type SystemDefinition (line 5) | type SystemDefinition = ExactSystemDefinition | NumericalSystemDefinition;
  type ExactSystemDefinition (line 7) | type ExactSystemDefinition = {
  type NumericalSystemDefinition (line 14) | type NumericalSystemDefinition = Omit<ExactSystemDefinition, "numericalS...
  class SystemCell (line 20) | class SystemCell extends BaseCell {
    method constructor (line 25) | constructor (arg?: DatabaseSystemCell) {
    method serialize (line 38) | serialize(): DatabaseSystemCell {
    method parsePending (line 48) | get parsePending() {
    method getSystemDefinition (line 53) | getSystemDefinition(): SystemDefinition | null {
    method addRow (line 94) | addRow() {
    method deleteRow (line 99) | deleteRow(rowIndex: number) {

FILE: src/cells/TableCell.svelte.ts
  class TableRowLabelField (line 6) | class TableRowLabelField {
    method constructor (line 11) | constructor (label = "") {
  class TableCell (line 17) | class TableCell extends BaseCell {
    method constructor (line 31) | constructor (arg?: DatabaseTableCell) {
    method serialize (line 63) | serialize(): DatabaseTableCell {
    method parsePending (line 79) | get parsePending() {
    method parseUnitField (line 85) | async parseUnitField (latex: string, column: number) {
    method parseTableStatements (line 99) | async parseTableStatements() {
    method addRowDocumentation (line 122) | addRowDocumentation() {
    method deleteRowDocumentation (line 126) | deleteRowDocumentation() {
    method addRow (line 131) | addRow() {
    method addColumn (line 149) | addColumn() {
    method deleteRow (line 161) | deleteRow(rowIndex: number):boolean {
    method deleteColumn (line 183) | deleteColumn(colIndex: number) {

FILE: src/constants.ts
  constant INLINE_SHORTCUTS (line 1) | const INLINE_SHORTCUTS = {
  constant MAX_MATRIX_COLS (line 61) | const MAX_MATRIX_COLS = 50;

FILE: src/database/_worker.ts
  constant API_MANUAL_SAVE_PATH (line 13) | const API_MANUAL_SAVE_PATH = "/documents/manual-save";
  type Flag (line 15) | type Flag = "0" | "1" | 0 | 1 | undefined;
  type Env (line 17) | interface Env {
  type DatabaseEntry (line 26) | interface DatabaseEntry {
  function checkFlag (line 36) | function checkFlag(flag: Flag): boolean {
  method fetch (line 41) | async fetch(request: Request, env: Env) {
  class IndexIfEmbedded (line 125) | class IndexIfEmbedded {
    method element (line 126) | element(element: Element) {
  class AppendCanonical (line 131) | class AppendCanonical {
    method constructor (line 134) | constructor(url: string) {
    method element (line 138) | element(element: Element) {
  function checkIfAlreadyExists (line 144) | async function checkIfAlreadyExists(previousSaveId: string, newData: str...
  function getNewId (line 160) | function getNewId(): string {
  function postSheet (line 173) | async function postSheet({ origin, requestHash, requestBody, requestIp, ...
  function getSheet (line 237) | async function getSheet({ requestHash, kv } :
  type ManualSaveBody (line 259) | interface ManualSaveBody {
  function manualSaveSheet (line 272) | async function manualSaveSheet({ requestBody, apiKey, kv }:

FILE: src/database/scripts/initialize.sql
  type Sheets (line 6) | CREATE TABLE Sheets (
  type NumReads (line 14) | CREATE TABLE NumReads (

FILE: src/database/types.ts
  type HistoryItem (line 1) | interface HistoryItem {
  type History (line 7) | type History = HistoryItem[];
  type SheetPostBody (line 9) | interface SheetPostBody {

FILE: src/database/utility.ts
  constant API_SAVE_PATH (line 1) | const API_SAVE_PATH = "/documents/save/";
  constant API_GET_PATH (line 2) | const API_GET_PATH = "/documents/get/";
  function getHash (line 5) | async function getHash(input: string) {

FILE: src/fluidConstants.ts
  constant FLUID_PROPS_PARAMETERS (line 1) | const FLUID_PROPS_PARAMETERS = new Map([
  constant FLUID_PROPS_PARAMETERS_ORDER (line 1019) | const FLUID_PROPS_PARAMETERS_ORDER = [
  constant FLUIDS (line 1109) | const FLUIDS = new Map([
  constant FLUID_HA_PROPS_PARAMETERS (line 6857) | const FLUID_HA_PROPS_PARAMETERS = new Map([
  constant FLUID_HA_PROPS_PARAMETERS_ORDER (line 7069) | const FLUID_HA_PROPS_PARAMETERS_ORDER = [

FILE: src/jediWorker.ts
  function setup (line 9) | async function setup() {

FILE: src/jediWrapper.ts
  type CodeContextRequest (line 1) | type CodeContextRequest = {
  type AutocompleteSuggestion (line 7) | type AutocompleteSuggestion = {
  type CodeContextResult (line 14) | type CodeContextResult = {
  class JediWrapper (line 19) | class JediWrapper {
    method constructor (line 23) | constructor() {
    method getCodeContextResult (line 32) | getCodeContextResult(request: {

FILE: src/keyboard/Keyboard.svelte.ts
  type Keyboards (line 5) | type Keyboards = {
  type Buttons (line 10) | type Buttons = {
  type Keyboard (line 15) | type Keyboard = {
  type Commands (line 20) | type Commands = "insert" | "moveToNextChar" | "moveToPreviousChar" | "de...
  class Button (line 26) | class Button {
    method constructor (line 37) | constructor({ buttonText, content, command = "insert",
    method click (line 55) | click(activeMathField: MathField): string | undefined {
  class Blank (line 89) | class Blank {
    method constructor (line 94) | constructor(size?: string) {

FILE: src/parser/LatexLexer.ts
  class LatexLexer (line 14) | class LatexLexer extends Lexer {
    method constructor (line 237) | constructor(input: CharStream) {
    method grammarFileName (line 242) | public get grammarFileName(): string { return "LatexLexer.g4"; }
    method literalNames (line 244) | public get literalNames(): (string | null)[] { return LatexLexer.liter...
    method symbolicNames (line 245) | public get symbolicNames(): (string | null)[] { return LatexLexer.symb...
    method ruleNames (line 246) | public get ruleNames(): string[] { return LatexLexer.ruleNames; }
    method serializedATN (line 248) | public get serializedATN(): number[] { return LatexLexer._serializedAT...
    method channelNames (line 250) | public get channelNames(): string[] { return LatexLexer.channelNames; }
    method modeNames (line 252) | public get modeNames(): string[] { return LatexLexer.modeNames; }
    method _ATN (line 902) | public static get _ATN(): ATN {

FILE: src/parser/LatexParser.ts
  type int (line 19) | type int = number;
  class LatexParser (line 21) | class LatexParser extends Parser {
    method grammarFileName (line 322) | public get grammarFileName(): string { return "LatexParser.g4"; }
    method literalNames (line 323) | public get literalNames(): (string | null)[] { return LatexParser.lite...
    method symbolicNames (line 324) | public get symbolicNames(): (string | null)[] { return LatexParser.sym...
    method ruleNames (line 325) | public get ruleNames(): string[] { return LatexParser.ruleNames; }
    method serializedATN (line 326) | public get serializedATN(): number[] { return LatexParser._serializedA...
    method createFailedPredicateException (line 328) | protected createFailedPredicateException(predicate?: string, message?:...
    method constructor (line 332) | constructor(input: TokenStream) {
    method statement (line 337) | public statement(): StatementContext {
    method scatter_plot_query (line 480) | public scatter_plot_query(): Scatter_plot_queryContext {
    method parametric_plot_query (line 585) | public parametric_plot_query(): Parametric_plot_queryContext {
    method insert_matrix (line 682) | public insert_matrix(): Insert_matrixContext {
    method fix_mixed_id (line 753) | public fix_mixed_id(): Fix_mixed_idContext {
    method unit_matrix_row (line 876) | public unit_matrix_row(): Unit_matrix_rowContext {
    method code_cell_units (line 918) | public code_cell_units(): Code_cell_unitsContext {
    method code_func_def (line 980) | public code_func_def(): Code_func_defContext {
    method id (line 1058) | public id(): IdContext {
    method number_ (line 1083) | public number_(): NumberContext {
    method number_with_units (line 1119) | public number_with_units(): Number_with_unitsContext {
    method assign (line 1163) | public assign(): AssignContext {
    method assign_list (line 1192) | public assign_list(): Assign_listContext {
    method assign_plus_query (line 1234) | public assign_plus_query(): Assign_plus_queryContext {
    method query (line 1272) | public query(): QueryContext {
    method equality (line 1310) | public equality(): EqualityContext {
    method piecewise_assign (line 1339) | public piecewise_assign(): Piecewise_assignContext {
    method piecewise_arg (line 1393) | public piecewise_arg(): Piecewise_argContext {
    method trig_function (line 1426) | public trig_function(): Trig_functionContext {
    method indefinite_integral_cmd (line 1475) | public indefinite_integral_cmd(): Indefinite_integral_cmdContext {
    method integral_cmd (line 1564) | public integral_cmd(): Integral_cmdContext {
    method sum_prod_cmd (line 1692) | public sum_prod_cmd(): Sum_prod_cmdContext {
    method derivative_cmd (line 1777) | public derivative_cmd(): Derivative_cmdContext {
    method n_derivative_cmd (line 1870) | public n_derivative_cmd(): N_derivative_cmdContext {
    method argument (line 2015) | public argument(): ArgumentContext {
    method condition (line 2086) | public condition(): ConditionContext {
    method id_list (line 2124) | public id_list(): Id_listContext {
    method guess (line 2166) | public guess(): GuessContext {
    method guess_list (line 2217) | public guess_list(): Guess_listContext {
    method condition_single (line 2259) | public condition_single(): Condition_singleContext {
    method condition_chain (line 2297) | public condition_chain(): Condition_chainContext {
    method matrix_row (line 2347) | public matrix_row(): Matrix_rowContext {
    method user_function (line 2389) | public user_function(): User_functionContext {
    method builtin_function (line 2453) | public builtin_function(): Builtin_functionContext {
    method index (line 2531) | public index(): IndexContext {
    method expr (line 2628) | public expr(_p?: number): ExprContext {
    method u_block (line 3485) | public u_block(): U_blockContext {
    method u_insert_matrix (line 3529) | public u_insert_matrix(): U_insert_matrixContext {
    method u_fraction (line 3600) | public u_fraction(): U_fractionContext {
    method u_expr (line 3663) | public u_expr(_p?: number): U_exprContext {
    method sempred (line 3878) | public sempred(localctx: RuleContext, ruleIndex: number, predIndex: nu...
    method expr_sempred (line 3887) | private expr_sempred(localctx: ExprContext, predIndex: number): boolean {
    method u_expr_sempred (line 3934) | private u_expr_sempred(localctx: U_exprContext, predIndex: number): bo...
    method _ATN (line 4237) | public static get _ATN(): ATN {
  class StatementContext (line 4250) | class StatementContext extends ParserRuleContext {
    method constructor (line 4251) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method EOF (line 4255) | public EOF(): TerminalNode {
    method fix_mixed_id (line 4258) | public fix_mixed_id(): Fix_mixed_idContext {
    method assign (line 4261) | public assign(): AssignContext {
    method assign_list (line 4264) | public assign_list(): Assign_listContext {
    method assign_plus_query (line 4267) | public assign_plus_query(): Assign_plus_queryContext {
    method query (line 4270) | public query(): QueryContext {
    method equality (line 4273) | public equality(): EqualityContext {
    method u_block (line 4276) | public u_block(): U_blockContext {
    method number_ (line 4279) | public number_(): NumberContext {
    method id (line 4282) | public id(): IdContext {
    method id_list (line 4285) | public id_list(): Id_listContext {
    method guess (line 4288) | public guess(): GuessContext {
    method guess_list (line 4291) | public guess_list(): Guess_listContext {
    method expr (line 4294) | public expr(): ExprContext {
    method condition (line 4297) | public condition(): ConditionContext {
    method piecewise_assign (line 4300) | public piecewise_assign(): Piecewise_assignContext {
    method insert_matrix (line 4303) | public insert_matrix(): Insert_matrixContext {
    method scatter_plot_query (line 4306) | public scatter_plot_query(): Scatter_plot_queryContext {
    method parametric_plot_query (line 4309) | public parametric_plot_query(): Parametric_plot_queryContext {
    method code_func_def (line 4312) | public code_func_def(): Code_func_defContext {
    method ruleIndex (line 4315) | public get ruleIndex(): number {
    method accept (line 4319) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class Scatter_plot_queryContext (line 4329) | class Scatter_plot_queryContext extends ParserRuleContext {
    method constructor (line 4330) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method EQ (line 4334) | public EQ(): TerminalNode {
    method AS_LINES (line 4337) | public AS_LINES(): TerminalNode {
    method L_PAREN_list (line 4340) | public L_PAREN_list(): TerminalNode[] {
    method L_PAREN (line 4343) | public L_PAREN(i: number): TerminalNode {
    method expr_list (line 4346) | public expr_list(): ExprContext[] {
    method expr (line 4349) | public expr(i: number): ExprContext {
    method COMMA_list (line 4352) | public COMMA_list(): TerminalNode[] {
    method COMMA (line 4355) | public COMMA(i: number): TerminalNode {
    method R_PAREN_list (line 4358) | public R_PAREN_list(): TerminalNode[] {
    method R_PAREN (line 4361) | public R_PAREN(i: number): TerminalNode {
    method u_block_list (line 4364) | public u_block_list(): U_blockContext[] {
    method u_block (line 4367) | public u_block(i: number): U_blockContext {
    method ruleIndex (line 4370) | public get ruleIndex(): number {
    method accept (line 4374) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class Parametric_plot_queryContext (line 4384) | class Parametric_plot_queryContext extends ParserRuleContext {
    method constructor (line 4389) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method L_PAREN_list (line 4393) | public L_PAREN_list(): TerminalNode[] {
    method L_PAREN (line 4396) | public L_PAREN(i: number): TerminalNode {
    method argument (line 4399) | public argument(): ArgumentContext {
    method R_PAREN_list (line 4402) | public R_PAREN_list(): TerminalNode[] {
    method R_PAREN (line 4405) | public R_PAREN(i: number): TerminalNode {
    method EQ (line 4408) | public EQ(): TerminalNode {
    method ID_list (line 4411) | public ID_list(): TerminalNode[] {
    method ID (line 4414) | public ID(i: number): TerminalNode {
    method expr_list (line 4417) | public expr_list(): ExprContext[] {
    method expr (line 4420) | public expr(i: number): ExprContext {
    method COMMA_list (line 4423) | public COMMA_list(): TerminalNode[] {
    method COMMA (line 4426) | public COMMA(i: number): TerminalNode {
    method number_ (line 4429) | public number_(): NumberContext {
    method u_block_list (line 4432) | public u_block_list(): U_blockContext[] {
    method u_block (line 4435) | public u_block(i: number): U_blockContext {
    method ruleIndex (line 4438) | public get ruleIndex(): number {
    method accept (line 4442) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class Insert_matrixContext (line 4452) | class Insert_matrixContext extends ParserRuleContext {
    method constructor (line 4453) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method u_insert_matrix_list (line 4457) | public u_insert_matrix_list(): U_insert_matrixContext[] {
    method u_insert_matrix (line 4460) | public u_insert_matrix(i: number): U_insert_matrixContext {
    method ruleIndex (line 4463) | public get ruleIndex(): number {
    method accept (line 4467) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class Fix_mixed_idContext (line 4477) | class Fix_mixed_idContext extends ParserRuleContext {
    method constructor (line 4478) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method CMD_MATHRM_list (line 4482) | public CMD_MATHRM_list(): TerminalNode[] {
    method CMD_MATHRM (line 4485) | public CMD_MATHRM(i: number): TerminalNode {
    method L_BRACE_list (line 4488) | public L_BRACE_list(): TerminalNode[] {
    method L_BRACE (line 4491) | public L_BRACE(i: number): TerminalNode {
    method id_list (line 4494) | public id_list(): IdContext[] {
    method id (line 4497) | public id(i: number): IdContext {
    method R_BRACE_list (line 4500) | public R_BRACE_list(): TerminalNode[] {
    method R_BRACE (line 4503) | public R_BRACE(i: number): TerminalNode {
    method PRIME_ACCENT_list (line 4506) | public PRIME_ACCENT_list(): TerminalNode[] {
    method PRIME_ACCENT (line 4509) | public PRIME_ACCENT(i: number): TerminalNode {
    method ruleIndex (line 4512) | public get ruleIndex(): number {
    method accept (line 4516) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class Unit_matrix_rowContext (line 4526) | class Unit_matrix_rowContext extends ParserRuleContext {
    method constructor (line 4527) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method u_block_list (line 4531) | public u_block_list(): U_blockContext[] {
    method u_block (line 4534) | public u_block(i: number): U_blockContext {
    method AMPERSAND_list (line 4537) | public AMPERSAND_list(): TerminalNode[] {
    method AMPERSAND (line 4540) | public AMPERSAND(i: number): TerminalNode {
    method ruleIndex (line 4543) | public get ruleIndex(): number {
    method accept (line 4547) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class Code_cell_unitsContext (line 4557) | class Code_cell_unitsContext extends ParserRuleContext {
    method constructor (line 4558) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method u_block (line 4562) | public u_block(): U_blockContext {
    method BEGIN_MATRIX (line 4565) | public BEGIN_MATRIX(): TerminalNode {
    method unit_matrix_row_list (line 4568) | public unit_matrix_row_list(): Unit_matrix_rowContext[] {
    method unit_matrix_row (line 4571) | public unit_matrix_row(i: number): Unit_matrix_rowContext {
    method END_MATRIX (line 4574) | public END_MATRIX(): TerminalNode {
    method DOUBLE_BACKSLASH_list (line 4577) | public DOUBLE_BACKSLASH_list(): TerminalNode[] {
    method DOUBLE_BACKSLASH (line 4580) | public DOUBLE_BACKSLASH(i: number): TerminalNode {
    method ruleIndex (line 4583) | public get ruleIndex(): number {
    method accept (line 4587) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class Code_func_defContext (line 4597) | class Code_func_defContext extends ParserRuleContext {
    method constructor (line 4601) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method L_PAREN (line 4605) | public L_PAREN(): TerminalNode {
    method R_PAREN (line 4608) | public R_PAREN(): TerminalNode {
    method EQ (line 4611) | public EQ(): TerminalNode {
    method code_cell_units_list (line 4614) | public code_cell_units_list(): Code_cell_unitsContext[] {
    method code_cell_units (line 4617) | public code_cell_units(i: number): Code_cell_unitsContext {
    method CMD_MATHRM (line 4620) | public CMD_MATHRM(): TerminalNode {
    method L_BRACE (line 4623) | public L_BRACE(): TerminalNode {
    method id (line 4626) | public id(): IdContext {
    method R_BRACE (line 4629) | public R_BRACE(): TerminalNode {
    method COMMA_list (line 4632) | public COMMA_list(): TerminalNode[] {
    method COMMA (line 4635) | public COMMA(i: number): TerminalNode {
    method ruleIndex (line 4638) | public get ruleIndex(): number {
    method accept (line 4642) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class IdContext (line 4652) | class IdContext extends ParserRuleContext {
    method constructor (line 4653) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method ID (line 4657) | public ID(): TerminalNode {
    method ruleIndex (line 4660) | public get ruleIndex(): number {
    method accept (line 4664) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class NumberContext (line 4674) | class NumberContext extends ParserRuleContext {
    method constructor (line 4675) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method NUMBER (line 4679) | public NUMBER(): TerminalNode {
    method SUB (line 4682) | public SUB(): TerminalNode {
    method ruleIndex (line 4685) | public get ruleIndex(): number {
    method accept (line 4689) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class Number_with_unitsContext (line 4699) | class Number_with_unitsContext extends ParserRuleContext {
    method constructor (line 4700) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method u_block (line 4704) | public u_block(): U_blockContext {
    method number_ (line 4707) | public number_(): NumberContext {
    method id (line 4710) | public id(): IdContext {
    method ruleIndex (line 4713) | public get ruleIndex(): number {
    method accept (line 4717) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class AssignContext (line 4727) | class AssignContext extends ParserRuleContext {
    method constructor (line 4728) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method id (line 4732) | public id(): IdContext {
    method EQ (line 4735) | public EQ(): TerminalNode {
    method expr (line 4738) | public expr(): ExprContext {
    method ruleIndex (line 4741) | public get ruleIndex(): number {
    method accept (line 4745) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class Assign_listContext (line 4755) | class Assign_listContext extends ParserRuleContext {
    method constructor (line 4756) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method assign_list (line 4760) | public assign_list(): AssignContext[] {
    method assign (line 4763) | public assign(i: number): AssignContext {
    method COMMA_list (line 4766) | public COMMA_list(): TerminalNode[] {
    method COMMA (line 4769) | public COMMA(i: number): TerminalNode {
    method ruleIndex (line 4772) | public get ruleIndex(): number {
    method accept (line 4776) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class Assign_plus_queryContext (line 4786) | class Assign_plus_queryContext extends ParserRuleContext {
    method constructor (line 4787) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method assign (line 4791) | public assign(): AssignContext {
    method EQ (line 4794) | public EQ(): TerminalNode {
    method u_block (line 4797) | public u_block(): U_blockContext {
    method ruleIndex (line 4800) | public get ruleIndex(): number {
    method accept (line 4804) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class QueryContext (line 4814) | class QueryContext extends ParserRuleContext {
    method constructor (line 4815) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method expr (line 4819) | public expr(): ExprContext {
    method EQ (line 4822) | public EQ(): TerminalNode {
    method u_block (line 4825) | public u_block(): U_blockContext {
    method ruleIndex (line 4828) | public get ruleIndex(): number {
    method accept (line 4832) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class EqualityContext (line 4842) | class EqualityContext extends ParserRuleContext {
    method constructor (line 4843) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method expr_list (line 4847) | public expr_list(): ExprContext[] {
    method expr (line 4850) | public expr(i: number): ExprContext {
    method EQ (line 4853) | public EQ(): TerminalNode {
    method ruleIndex (line 4856) | public get ruleIndex(): number {
    method accept (line 4860) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class Piecewise_assignContext (line 4870) | class Piecewise_assignContext extends ParserRuleContext {
    method constructor (line 4871) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method id_list (line 4875) | public id_list(): IdContext[] {
    method id (line 4878) | public id(i: number): IdContext {
    method EQ (line 4881) | public EQ(): TerminalNode {
    method L_PAREN (line 4884) | public L_PAREN(): TerminalNode {
    method R_PAREN (line 4887) | public R_PAREN(): TerminalNode {
    method piecewise_arg_list (line 4890) | public piecewise_arg_list(): Piecewise_argContext[] {
    method piecewise_arg (line 4893) | public piecewise_arg(i: number): Piecewise_argContext {
    method COMMA_list (line 4896) | public COMMA_list(): TerminalNode[] {
    method COMMA (line 4899) | public COMMA(i: number): TerminalNode {
    method ruleIndex (line 4902) | public get ruleIndex(): number {
    method accept (line 4906) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class Piecewise_argContext (line 4916) | class Piecewise_argContext extends ParserRuleContext {
    method constructor (line 4917) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method L_PAREN (line 4921) | public L_PAREN(): TerminalNode {
    method expr (line 4924) | public expr(): ExprContext {
    method COMMA (line 4927) | public COMMA(): TerminalNode {
    method condition (line 4930) | public condition(): ConditionContext {
    method R_PAREN (line 4933) | public R_PAREN(): TerminalNode {
    method ruleIndex (line 4936) | public get ruleIndex(): number {
    method accept (line 4940) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class Trig_functionContext (line 4950) | class Trig_functionContext extends ParserRuleContext {
    method constructor (line 4951) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method L_PAREN (line 4955) | public L_PAREN(): TerminalNode {
    method expr (line 4958) | public expr(): ExprContext {
    method R_PAREN (line 4961) | public R_PAREN(): TerminalNode {
    method CMD_SIN (line 4964) | public CMD_SIN(): TerminalNode {
    method CMD_COS (line 4967) | public CMD_COS(): TerminalNode {
    method CMD_TAN (line 4970) | public CMD_TAN(): TerminalNode {
    method CMD_COT (line 4973) | public CMD_COT(): TerminalNode {
    method CMD_SEC (line 4976) | public CMD_SEC(): TerminalNode {
    method CMD_CSC (line 4979) | public CMD_CSC(): TerminalNode {
    method CMD_ARCSIN (line 4982) | public CMD_ARCSIN(): TerminalNode {
    method CMD_ARCCOS (line 4985) | public CMD_ARCCOS(): TerminalNode {
    method CMD_ARCTAN (line 4988) | public CMD_ARCTAN(): TerminalNode {
    method CMD_SINH (line 4991) | public CMD_SINH(): TerminalNode {
    method CMD_COSH (line 4994) | public CMD_COSH(): TerminalNode {
    method CMD_TANH (line 4997) | public CMD_TANH(): TerminalNode {
    method CMD_COTH (line 5000) | public CMD_COTH(): TerminalNode {
    method BACKSLASH (line 5003) | public BACKSLASH(): TerminalNode {
    method ruleIndex (line 5006) | public get ruleIndex(): number {
    method accept (line 5010) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class Indefinite_integral_cmdContext (line 5020) | class Indefinite_integral_cmdContext extends ParserRuleContext {
    method constructor (line 5021) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method L_PAREN_list (line 5025) | public L_PAREN_list(): TerminalNode[] {
    method L_PAREN (line 5028) | public L_PAREN(i: number): TerminalNode {
    method expr (line 5031) | public expr(): ExprContext {
    method R_PAREN_list (line 5034) | public R_PAREN_list(): TerminalNode[] {
    method R_PAREN (line 5037) | public R_PAREN(i: number): TerminalNode {
    method id_list (line 5040) | public id_list(): IdContext[] {
    method id (line 5043) | public id(i: number): IdContext {
    method CMD_INT (line 5046) | public CMD_INT(): TerminalNode {
    method CMD_MATHRM (line 5049) | public CMD_MATHRM(): TerminalNode {
    method L_BRACE_list (line 5052) | public L_BRACE_list(): TerminalNode[] {
    method L_BRACE (line 5055) | public L_BRACE(i: number): TerminalNode {
    method R_BRACE_list (line 5058) | public R_BRACE_list(): TerminalNode[] {
    method R_BRACE (line 5061) | public R_BRACE(i: number): TerminalNode {
    method CMD_INT_UNDERSCORE (line 5064) | public CMD_INT_UNDERSCORE(): TerminalNode {
    method CARET (line 5067) | public CARET(): TerminalNode {
    method ruleIndex (line 5070) | public get ruleIndex(): number {
    method accept (line 5074) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class Integral_cmdContext (line 5084) | class Integral_cmdContext extends ParserRuleContext {
    method constructor (line 5088) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method L_PAREN_list (line 5092) | public L_PAREN_list(): TerminalNode[] {
    method L_PAREN (line 5095) | public L_PAREN(i: number): TerminalNode {
    method R_PAREN_list (line 5098) | public R_PAREN_list(): TerminalNode[] {
    method R_PAREN (line 5101) | public R_PAREN(i: number): TerminalNode {
    method id_list (line 5104) | public id_list(): IdContext[] {
    method id (line 5107) | public id(i: number): IdContext {
    method expr_list (line 5110) | public expr_list(): ExprContext[] {
    method expr (line 5113) | public expr(i: number): ExprContext {
    method CMD_MATHRM (line 5116) | public CMD_MATHRM(): TerminalNode {
    method L_BRACE_list (line 5119) | public L_BRACE_list(): TerminalNode[] {
    method L_BRACE (line 5122) | public L_BRACE(i: number): TerminalNode {
    method R_BRACE_list (line 5125) | public R_BRACE_list(): TerminalNode[] {
    method R_BRACE (line 5128) | public R_BRACE(i: number): TerminalNode {
    method CMD_INT_UNDERSCORE_SINGLE_CHAR_NUMBER (line 5131) | public CMD_INT_UNDERSCORE_SINGLE_CHAR_NUMBER(): TerminalNode {
    method CMD_INT_UNDERSCORE_SINGLE_CHAR_ID (line 5134) | public CMD_INT_UNDERSCORE_SINGLE_CHAR_ID(): TerminalNode {
    method CARET_SINGLE_CHAR_ID (line 5137) | public CARET_SINGLE_CHAR_ID(): TerminalNode {
    method CARET_SINGLE_CHAR_NUMBER (line 5140) | public CARET_SINGLE_CHAR_NUMBER(): TerminalNode {
    method CMD_INT_UNDERSCORE (line 5143) | public CMD_INT_UNDERSCORE(): TerminalNode {
    method CARET (line 5146) | public CARET(): TerminalNode {
    method ruleIndex (line 5149) | public get ruleIndex(): number {
    method accept (line 5153) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class Sum_prod_cmdContext (line 5163) | class Sum_prod_cmdContext extends ParserRuleContext {
    method constructor (line 5167) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method L_PAREN (line 5171) | public L_PAREN(): TerminalNode {
    method R_PAREN (line 5174) | public R_PAREN(): TerminalNode {
    method expr_list (line 5177) | public expr_list(): ExprContext[] {
    method expr (line 5180) | public expr(i: number): ExprContext {
    method L_BRACE_list (line 5183) | public L_BRACE_list(): TerminalNode[] {
    method L_BRACE (line 5186) | public L_BRACE(i: number): TerminalNode {
    method id (line 5189) | public id(): IdContext {
    method EQ (line 5192) | public EQ(): TerminalNode {
    method R_BRACE_list (line 5195) | public R_BRACE_list(): TerminalNode[] {
    method R_BRACE (line 5198) | public R_BRACE(i: number): TerminalNode {
    method CMD_SUM_UNDERSCORE (line 5201) | public CMD_SUM_UNDERSCORE(): TerminalNode {
    method CMD_PROD_UNDERSCORE (line 5204) | public CMD_PROD_UNDERSCORE(): TerminalNode {
    method CARET_SINGLE_CHAR_ID (line 5207) | public CARET_SINGLE_CHAR_ID(): TerminalNode {
    method CARET_SINGLE_CHAR_NUMBER (line 5210) | public CARET_SINGLE_CHAR_NUMBER(): TerminalNode {
    method CARET (line 5213) | public CARET(): TerminalNode {
    method ruleIndex (line 5216) | public get ruleIndex(): number {
    method accept (line 5220) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class Derivative_cmdContext (line 5230) | class Derivative_cmdContext extends ParserRuleContext {
    method constructor (line 5233) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method CMD_FRAC (line 5237) | public CMD_FRAC(): TerminalNode {
    method L_BRACE_list (line 5240) | public L_BRACE_list(): TerminalNode[] {
    method L_BRACE (line 5243) | public L_BRACE(i: number): TerminalNode {
    method R_BRACE_list (line 5246) | public R_BRACE_list(): TerminalNode[] {
    method R_BRACE (line 5249) | public R_BRACE(i: number): TerminalNode {
    method L_PAREN_list (line 5252) | public L_PAREN_list(): TerminalNode[] {
    method L_PAREN (line 5255) | public L_PAREN(i: number): TerminalNode {
    method id_list (line 5258) | public id_list(): IdContext[] {
    method id (line 5261) | public id(i: number): IdContext {
    method R_PAREN_list (line 5264) | public R_PAREN_list(): TerminalNode[] {
    method R_PAREN (line 5267) | public R_PAREN(i: number): TerminalNode {
    method expr (line 5270) | public expr(): ExprContext {
    method CMD_MATHRM_list (line 5273) | public CMD_MATHRM_list(): TerminalNode[] {
    method CMD_MATHRM (line 5276) | public CMD_MATHRM(i: number): TerminalNode {
    method ruleIndex (line 5279) | public get ruleIndex(): number {
    method accept (line 5283) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class N_derivative_cmdContext (line 5293) | class N_derivative_cmdContext extends ParserRuleContext {
    method constructor (line 5300) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method CMD_FRAC (line 5304) | public CMD_FRAC(): TerminalNode {
    method L_BRACE_list (line 5307) | public L_BRACE_list(): TerminalNode[] {
    method L_BRACE (line 5310) | public L_BRACE(i: number): TerminalNode {
    method R_BRACE_list (line 5313) | public R_BRACE_list(): TerminalNode[] {
    method R_BRACE (line 5316) | public R_BRACE(i: number): TerminalNode {
    method L_PAREN_list (line 5319) | public L_PAREN_list(): TerminalNode[] {
    method L_PAREN (line 5322) | public L_PAREN(i: number): TerminalNode {
    method id_list (line 5325) | public id_list(): IdContext[] {
    method id (line 5328) | public id(i: number): IdContext {
    method R_PAREN_list (line 5331) | public R_PAREN_list(): TerminalNode[] {
    method R_PAREN (line 5334) | public R_PAREN(i: number): TerminalNode {
    method expr (line 5337) | public expr(): ExprContext {
    method CMD_MATHRM_list (line 5340) | public CMD_MATHRM_list(): TerminalNode[] {
    method CMD_MATHRM (line 5343) | public CMD_MATHRM(i: number): TerminalNode {
    method CARET_SINGLE_CHAR_NUMBER_list (line 5346) | public CARET_SINGLE_CHAR_NUMBER_list(): TerminalNode[] {
    method CARET_SINGLE_CHAR_NUMBER (line 5349) | public CARET_SINGLE_CHAR_NUMBER(i: number): TerminalNode {
    method CARET_list (line 5352) | public CARET_list(): TerminalNode[] {
    method CARET (line 5355) | public CARET(i: number): TerminalNode {
    method number__list (line 5358) | public number__list(): NumberContext[] {
    method number_ (line 5361) | public number_(i: number): NumberContext {
    method ruleIndex (line 5364) | public get ruleIndex(): number {
    method accept (line 5368) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class ArgumentContext (line 5378) | class ArgumentContext extends ParserRuleContext {
    method constructor (line 5381) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method id (line 5385) | public id(): IdContext {
    method EQ (line 5388) | public EQ(): TerminalNode {
    method expr_list (line 5391) | public expr_list(): ExprContext[] {
    method expr (line 5394) | public expr(i: number): ExprContext {
    method LT_list (line 5397) | public LT_list(): TerminalNode[] {
    method LT (line 5400) | public LT(i: number): TerminalNode {
    method LTE_list (line 5403) | public LTE_list(): TerminalNode[] {
    method LTE (line 5406) | public LTE(i: number): TerminalNode {
    method ruleIndex (line 5409) | public get ruleIndex(): number {
    method accept (line 5413) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class ConditionContext (line 5423) | class ConditionContext extends ParserRuleContext {
    method constructor (line 5424) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method condition_single (line 5428) | public condition_single(): Condition_singleContext {
    method condition_chain (line 5431) | public condition_chain(): Condition_chainContext {
    method ruleIndex (line 5434) | public get ruleIndex(): number {
    method accept (line 5438) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class Id_listContext (line 5448) | class Id_listContext extends ParserRuleContext {
    method constructor (line 5449) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method id_list (line 5453) | public id_list(): IdContext[] {
    method id (line 5456) | public id(i: number): IdContext {
    method COMMA_list (line 5459) | public COMMA_list(): TerminalNode[] {
    method COMMA (line 5462) | public COMMA(i: number): TerminalNode {
    method ruleIndex (line 5465) | public get ruleIndex(): number {
    method accept (line 5469) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class GuessContext (line 5479) | class GuessContext extends ParserRuleContext {
    method constructor (line 5480) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method id (line 5484) | public id(): IdContext {
    method CMD_SIM (line 5487) | public CMD_SIM(): TerminalNode {
    method CMD_APPROX (line 5490) | public CMD_APPROX(): TerminalNode {
    method number_ (line 5493) | public number_(): NumberContext {
    method number_with_units (line 5496) | public number_with_units(): Number_with_unitsContext {
    method ruleIndex (line 5499) | public get ruleIndex(): number {
    method accept (line 5503) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class Guess_listContext (line 5513) | class Guess_listContext extends ParserRuleContext {
    method constructor (line 5514) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method guess_list (line 5518) | public guess_list(): GuessContext[] {
    method guess (line 5521) | public guess(i: number): GuessContext {
    method COMMA_list (line 5524) | public COMMA_list(): TerminalNode[] {
    method COMMA (line 5527) | public COMMA(i: number): TerminalNode {
    method ruleIndex (line 5530) | public get ruleIndex(): number {
    method accept (line 5534) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class Condition_singleContext (line 5544) | class Condition_singleContext extends ParserRuleContext {
    method constructor (line 5546) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method expr_list (line 5550) | public expr_list(): ExprContext[] {
    method expr (line 5553) | public expr(i: number): ExprContext {
    method LT (line 5556) | public LT(): TerminalNode {
    method LTE (line 5559) | public LTE(): TerminalNode {
    method GT (line 5562) | public GT(): TerminalNode {
    method GTE (line 5565) | public GTE(): TerminalNode {
    method ruleIndex (line 5568) | public get ruleIndex(): number {
    method accept (line 5572) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class Condition_chainContext (line 5582) | class Condition_chainContext extends ParserRuleContext {
    method constructor (line 5585) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method expr_list (line 5589) | public expr_list(): ExprContext[] {
    method expr (line 5592) | public expr(i: number): ExprContext {
    method LT_list (line 5595) | public LT_list(): TerminalNode[] {
    method LT (line 5598) | public LT(i: number): TerminalNode {
    method LTE_list (line 5601) | public LTE_list(): TerminalNode[] {
    method LTE (line 5604) | public LTE(i: number): TerminalNode {
    method GT_list (line 5607) | public GT_list(): TerminalNode[] {
    method GT (line 5610) | public GT(i: number): TerminalNode {
    method GTE_list (line 5613) | public GTE_list(): TerminalNode[] {
    method GTE (line 5616) | public GTE(i: number): TerminalNode {
    method ruleIndex (line 5619) | public get ruleIndex(): number {
    method accept (line 5623) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class Matrix_rowContext (line 5633) | class Matrix_rowContext extends ParserRuleContext {
    method constructor (line 5634) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method expr_list (line 5638) | public expr_list(): ExprContext[] {
    method expr (line 5641) | public expr(i: number): ExprContext {
    method AMPERSAND_list (line 5644) | public AMPERSAND_list(): TerminalNode[] {
    method AMPERSAND (line 5647) | public AMPERSAND(i: number): TerminalNode {
    method ruleIndex (line 5650) | public get ruleIndex(): number {
    method accept (line 5654) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class User_functionContext (line 5664) | class User_functionContext extends ParserRuleContext {
    method constructor (line 5668) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method id (line 5672) | public id(): IdContext {
    method L_PAREN (line 5675) | public L_PAREN(): TerminalNode {
    method R_PAREN (line 5678) | public R_PAREN(): TerminalNode {
    method argument_list (line 5681) | public argument_list(): ArgumentContext[] {
    method argument (line 5684) | public argument(i: number): ArgumentContext {
    method ID_list (line 5687) | public ID_list(): TerminalNode[] {
    method ID (line 5690) | public ID(i: number): TerminalNode {
    method number_ (line 5693) | public number_(): NumberContext {
    method COMMA_list (line 5696) | public COMMA_list(): TerminalNode[] {
    method COMMA (line 5699) | public COMMA(i: number): TerminalNode {
    method ruleIndex (line 5702) | public get ruleIndex(): number {
    method accept (line 5706) | public accept<Result>(visitor: LatexParserVisitor<Result>): Result {
  class Builtin_functionContext (line 5716) | class Builtin_functionContext extends ParserRuleContext {
    method constructor (line 5717) | constructor(parser?: LatexParser, parent?: ParserRuleContext, invoking...
    method L_PAREN (line 5721) | public L_PAREN(): TerminalNode {
    method R_PAREN (line 5724) | public R_PAREN(): TerminalNode {
    method CMD_MATHRM (line 5727) | public CMD_MATHRM(): TerminalNode {
    method L_BRACE (line 5730) | public L_BRACE(): TerminalNode {
    method id (line 5733) | public id(): IdContext {
    method R_BRACE (line 5736) | public R_BRACE(): TerminalNode {
    method expr_list (line 5739) | public expr_list(): ExprCon
Condensed preview — 228 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,200K chars).
[
  {
    "path": ".dev.vars",
    "chars": 39,
    "preview": "DOCGEN_API=http://127.0.0.1:8000\nDEV=1\n"
  },
  {
    "path": ".gitattributes",
    "chars": 63,
    "preview": "tests/** linguist-vendored\npublic/pyodide/** linguist-vendored\n"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 926,
    "preview": "### Related Issue\nRead the [contributing guide](https://github.com/mgreminger/EngineeringPaper.xyz/blob/main/CONTRIBUTIN"
  },
  {
    "path": ".github/workflows/playwright.yml",
    "chars": 2504,
    "preview": "name: Playwright Tests\non:\n  push:\n    branches: [ main, master ]\n  pull_request:\n    branches: [ main, master ]\n\njobs:\n"
  },
  {
    "path": ".gitignore",
    "chars": 438,
    "preview": ".DS_store\n\nnode_modules\npublic/build\npublic/fonts\n.antlr\n*.tokens\n*.interp\n.ipynb_checkpoints\n\ndist\n\n.vscode/settings.js"
  },
  {
    "path": ".node-version",
    "chars": 2,
    "preview": "22"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 3322,
    "preview": "## Get the Word Out\nThe easiest way to contribute to EngineeringPaper.xyz is to get the word out. A large and vibrant us"
  },
  {
    "path": "LICENSE",
    "chars": 1060,
    "preview": "Copyright 2020-25 Michael Greminger\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of thi"
  },
  {
    "path": "README.md",
    "chars": 5183,
    "preview": "# [![EngineeringPaper.xyz](https://user-images.githubusercontent.com/6439649/212795699-7cc908e1-00a4-44ed-a034-695f056ee"
  },
  {
    "path": "index.html",
    "chars": 973,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n\t<meta charset='utf-8'>\n\t<meta name='description' content='EngineeringPaper.xyz "
  },
  {
    "path": "notebooks/HA_parameters.csv",
    "chars": 1193,
    "preview": "haParameter,idName,units,input,output,description\nC,C,J/kg/K,FALSE,TRUE,Mixture specific heat per unit dry air\nH,H,J/kg"
  },
  {
    "path": "notebooks/HA_parameters_order.csv",
    "chars": 324,
    "preview": "C,Quick Access\nH,Quick Access\nP,Quick Access\nR,Quick Access\nS,Quick Access\nT,Quick Access\nTdp,Quick Access\nB,Quick Acce"
  },
  {
    "path": "notebooks/coolprop_options.ipynb",
    "chars": 10026,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"id\": \"0a4de3ff\",\n   \"metadata\": {},\n   \"outputs\":"
  },
  {
    "path": "notebooks/coolprop_predifined_mixtures.ipynb",
    "chars": 25261,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"id\": \"f2cf27a2\",\n   \"metadata\": {},\n   \"outputs\":"
  },
  {
    "path": "notebooks/latex_unicode_equivalents.ipynb",
    "chars": 32190,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"id\": \"d191eaea-3b3a-4dbe-a30f-f7ff2426fcfb\",\n   \""
  },
  {
    "path": "notebooks/predefined_mixtures.json",
    "chars": 24254,
    "preview": "[\n  {\n    \"fluids\": [\n      \"NITROGEN\", \n      \"ARGON\", \n      \"OXYGEN\"\n    ], \n    \"mole_fractions\": [\n      0.7812, \n "
  },
  {
    "path": "notebooks/propsSI_fluids.csv",
    "chars": 53183,
    "preview": "propsName,menuName,idName,order,category,basic,compressibleMixtureComponent,incompressible,incompressibleMixture,minConc"
  },
  {
    "path": "notebooks/propsSI_mixtures.csv",
    "chars": 20756,
    "preview": "propsName,menuName,idName,category,basic,incompressibleMixture,minConcentration,maxConcentration,longDescription\r\nAir.mi"
  },
  {
    "path": "notebooks/propsSI_parameters.csv",
    "chars": 6624,
    "preview": "propsParameter,idName,units,input,output,trivial,incompressibleInput,incompressibleOutput,description\nC,C,J/kg/K,FALSE,T"
  },
  {
    "path": "notebooks/propsSI_parameters_order.csv",
    "chars": 1220,
    "preview": "C,Quick Access\nD,Quick Access\nH,Quick Access\nP,Quick Access\nQ,Quick Access\nS,Quick Access\nT,Quick Access\nV,Quick Access\n"
  },
  {
    "path": "notebooks/reserved_ids.ipynb",
    "chars": 65806,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"id\": \"8aeab359-4296-4706-8dfb-bfaca083fc10\",\n   \""
  },
  {
    "path": "notebooks/reserved_ids_no_sympy.ipynb",
    "chars": 7039,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"id\": \"fe5a40c3-b7f8-4421-b29d-552438fb32e3\",\n   \""
  },
  {
    "path": "notebooks/sympy_test.ipynb",
    "chars": 28979,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"![Test Case](./test_case_small.png)"
  },
  {
    "path": "package.json",
    "chars": 2283,
    "preview": "{\n  \"name\": \"svelte-app\",\n  \"type\": \"module\",\n  \"version\": \"1.0.0\",\n  \"scripts\": {\n    \"dev\": \"npm run build:workers && "
  },
  {
    "path": "playwright.config.mjs",
    "chars": 2940,
    "preview": "// @ts-check\nimport { devices } from '@playwright/test';\n\n/**\n * Read environment variables from file.\n * https://github"
  },
  {
    "path": "public/.well-known/assetlinks.json",
    "chars": 324,
    "preview": "[{\n        \"relation\": [\"delegate_permission/common.handle_all_urls\"],\n        \"target\" : { \"namespace\": \"android_app\", "
  },
  {
    "path": "public/_routes.json",
    "chars": 482,
    "preview": "{\n  \"version\": 1,\n  \"include\": [\"/*\"],\n  \"exclude\": [\n    \"/assets/*\",\n    \"/mathlive/*\",\n    \"/pyodide/*\",\n    \"/images"
  },
  {
    "path": "public/dimensional_analysis.py",
    "chars": 208198,
    "preview": "PROFILE=False\n\nif PROFILE:\n    import cProfile\n\nimport sys\n\n# must be at least 131 to load sympy, cpython is 3000 by def"
  },
  {
    "path": "public/iframe_test.html",
    "chars": 1261,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=e"
  },
  {
    "path": "public/jedi_code_analysis.py",
    "chars": 1871,
    "preview": "from typing import cast, TypedDict\nimport traceback\nimport jedi\nimport json\n\nclass CodeContextRequest(TypedDict):\n    co"
  },
  {
    "path": "public/manifest.json",
    "chars": 2442,
    "preview": "{\n  \"name\": \"EngineeringPaper.xyz\",\n  \"short_name\": \"EPxyz.com\",\n  \"categories\": [\"engineering\", \"productivity\", \"educat"
  },
  {
    "path": "public/pyodide/pyodide-lock.json",
    "chars": 120315,
    "preview": "{\"info\": {\"abi_version\": \"2025_0\", \"arch\": \"wasm32\", \"platform\": \"emscripten_4_0_9\", \"python\": \"3.13.2\", \"version\": \"0.2"
  },
  {
    "path": "public/pyodide/pyodide.asm.js",
    "chars": 1074322,
    "preview": "\"use strict\";\nvar _createPyodideModule = (() => {\n  var _scriptName = typeof document != 'undefined' ? document.currentS"
  },
  {
    "path": "public/pyodide/pyodide.js",
    "chars": 18597,
    "preview": "\"use strict\";var loadPyodide=(()=>{var re=Object.create;var F=Object.defineProperty;var ie=Object.getOwnPropertyDescript"
  },
  {
    "path": "public/robots.txt",
    "chars": 23,
    "preview": "User-agent: *\nAllow: /\n"
  },
  {
    "path": "scripts/generate-parser.js",
    "chars": 1459,
    "preview": "import { promisify } from 'util';\nimport { exec } from 'child_process';\n\nimport packageInfo from '../package.json' with "
  },
  {
    "path": "scripts/get_pyodide_files.py",
    "chars": 4828,
    "preview": "# /// script\n# requires-python = \">=3.12\"\n# dependencies = [\n#     \"pkginfo\",\n#     \"packaging\",\n#     \"pyodide-lock==0."
  },
  {
    "path": "scripts/setupTypeScript.js",
    "chars": 3872,
    "preview": "// @ts-check\n\n/** This script modifies the project to support TS code in .svelte files like:\n\n  <script lang=\"ts\">\n  \tex"
  },
  {
    "path": "src/App.svelte",
    "chars": 107220,
    "preview": "<script lang=\"ts\">\n  import { onDestroy, onMount, tick, untrack } from \"svelte\";\n  import { SvelteMap } from \"svelte/rea"
  },
  {
    "path": "src/BaseUnitsConfigDialog.svelte",
    "chars": 2003,
    "preview": "<script lang=\"ts\">\n  import { onMount } from \"svelte\";\n  import { ComboBox, ButtonSet, Button } from \"carbon-components-"
  },
  {
    "path": "src/ButtonBar.svelte",
    "chars": 5093,
    "preview": "<script lang=\"ts\">\n  import appState from \"./stores.svelte\";\n  import { addCell } from \"./stores.svelte\";\n  import AddAl"
  },
  {
    "path": "src/Cell.svelte",
    "chars": 11439,
    "preview": "<script lang=\"ts\">\n  import { onMount, onDestroy } from \"svelte\";\n  import appState from \"./stores.svelte\";\n  import { h"
  },
  {
    "path": "src/CellList.svelte",
    "chars": 8908,
    "preview": "<script lang=\"ts\">\n  import type { ModalInfo } from \"./types\";\n  import MathCell from \"./cells/MathCell.svelte\";\n  impor"
  },
  {
    "path": "src/CodeCell.svelte",
    "chars": 6294,
    "preview": "<script lang=\"ts\">\n  import appState from \"./stores.svelte\";\n\n  import { onMount, tick } from \"svelte\";\n\n  import CodeCe"
  },
  {
    "path": "src/CodeEditor.svelte",
    "chars": 7765,
    "preview": "<script module lang=\"ts\">\n  import { JediWrapper } from \"./jediWrapper\";\n\n  const jediWrapper = new JediWrapper;\n</scrip"
  },
  {
    "path": "src/CustomMatrixModal.svelte",
    "chars": 1477,
    "preview": "<script lang=\"ts\">\n  import type { MathField } from \"./cells/MathField.svelte\";\n  import { MAX_MATRIX_COLS } from \"./con"
  },
  {
    "path": "src/DataTableCell.svelte",
    "chars": 29371,
    "preview": "<script lang=\"ts\">\n  import appState from \"./stores.svelte\";\n\n  import { isFiniteImagResult, type Result,\n           typ"
  },
  {
    "path": "src/DataTableInput.svelte",
    "chars": 1324,
    "preview": "<script lang=\"ts\">\n  import type { FormEventHandler } from \"svelte/elements\";\n  import appState from \"./stores.svelte\";\n"
  },
  {
    "path": "src/DeletedCell.svelte",
    "chars": 3263,
    "preview": "<script lang=\"ts\">\n  import { onMount, onDestroy } from 'svelte';\n  import type DeletedCell from \"./cells/DeletedCell\";\n"
  },
  {
    "path": "src/DocumentTitle.svelte",
    "chars": 763,
    "preview": "<script lang=\"ts\">\n  import appState from \"./stores.svelte\";\n\n  interface Props {\n    title: string;\n    triggerSaveNeed"
  },
  {
    "path": "src/DocumentationCell.svelte",
    "chars": 2004,
    "preview": "<script lang=\"ts\">\n  import { onMount } from 'svelte';\n  import type { Delta } from 'quill';\n  import appState from \"./s"
  },
  {
    "path": "src/DocumentationField.svelte",
    "chars": 5903,
    "preview": "<script module lang=\"ts\">\n  import Quill from \"quill\";\n  import Embed from \"quill/blots/embed\";\n  import ImageResize fro"
  },
  {
    "path": "src/DownloadDocumentModal.svelte",
    "chars": 3716,
    "preview": "<script lang=\"ts\">\n  import { Modal, RadioButtonGroup, RadioButton, Checkbox, Select,\n           SelectItem } from \"carb"
  },
  {
    "path": "src/DropOverlay.svelte",
    "chars": 1176,
    "preview": "\n<style>\n  div.drop-overlay {\n    position: absolute;\n    justify-content: center;\n    display: flex;\n    flex-direction"
  },
  {
    "path": "src/FluidCell.svelte",
    "chars": 19113,
    "preview": "<script lang=\"ts\">\n  import appState from \"./stores.svelte\";\n\n  import { onMount } from \"svelte\";\n\n  import FluidCell fr"
  },
  {
    "path": "src/GenerateCodeDialog.svelte",
    "chars": 6994,
    "preview": "<script lang=\"ts\">\n  import { onMount } from 'svelte';\n  import { unit } from 'mathjs';\n  import appState from './stores"
  },
  {
    "path": "src/IconButton.svelte",
    "chars": 1547,
    "preview": "<script lang=\"ts\">\n  import type { Snippet } from 'svelte';\n  import appState from './stores.svelte';\n\n  interface Props"
  },
  {
    "path": "src/InsertCell.svelte",
    "chars": 9462,
    "preview": "<script lang=\"ts\">\n  import { onMount, onDestroy } from 'svelte';\n  import type InsertCell from \"./cells/InsertCell\";\n  "
  },
  {
    "path": "src/InsertSheetModal.svelte",
    "chars": 3270,
    "preview": "<script lang=\"ts\">\n  import { onMount } from \"svelte\";\n\n  import { Modal } from \"carbon-components-svelte\";\n\n  import { "
  },
  {
    "path": "src/KeyboardButton.svelte",
    "chars": 1442,
    "preview": "<script lang=\"ts\">\n  import { onMount } from \"svelte\";\n  import appState from \"./stores.svelte\";\n  import { renderMathIn"
  },
  {
    "path": "src/KeyboardShortcuts.svelte",
    "chars": 13363,
    "preview": "<script>\n  import appState from \"./stores.svelte\";\n\n  const modifier = appState.modifierKey === \"ctrlKey\" ? \"Ctrl\" : \"Cm"
  },
  {
    "path": "src/MathCell.svelte",
    "chars": 23408,
    "preview": "<script lang=\"ts\">\n  import { onMount, untrack, tick } from \"svelte\";\n  import { bignumber, format, unaryMinus, type Big"
  },
  {
    "path": "src/MathCellConfigDialog.svelte",
    "chars": 2219,
    "preview": "<script lang=\"ts\">\n  import { Checkbox } from \"carbon-components-svelte\";  \n  import { defaultConfig, copyMathConfig, is"
  },
  {
    "path": "src/MathField.svelte",
    "chars": 9696,
    "preview": "<script module lang=\"ts\">\n  import { MathfieldElement } from \"mathlive\";\n\n  MathfieldElement.fontsDirectory = `${window."
  },
  {
    "path": "src/NumberFormatOptionsDialog.svelte",
    "chars": 3265,
    "preview": "<script lang=\"ts\">\n  import { NumberInput, RadioButtonGroup, RadioButton } from \"carbon-components-svelte\";\n  import { d"
  },
  {
    "path": "src/PiecewiseCell.svelte",
    "chars": 8614,
    "preview": "<script lang=\"ts\">\n  import appState from \"./stores.svelte\";\n\n  import { onMount, tick } from \"svelte\";\n\n  import type P"
  },
  {
    "path": "src/Plot.svelte",
    "chars": 1977,
    "preview": "<script lang=\"ts\">\n  import { untrack } from 'svelte';\n  import appState from './stores.svelte';\n  import { debounce } f"
  },
  {
    "path": "src/PlotCell.svelte",
    "chars": 25800,
    "preview": "<script lang=\"ts\">\n  import { onMount } from \"svelte\";\n  import appState from \"./stores.svelte\";\n  import { type Result,"
  },
  {
    "path": "src/RequestPersistentStorage.svelte",
    "chars": 1715,
    "preview": "<script lang=\"ts\">\n  import { onMount } from \"svelte\";\n\n  import { Button } from \"carbon-components-svelte\";\n\n  import E"
  },
  {
    "path": "src/SetDefaultConfigDialog.svelte",
    "chars": 2994,
    "preview": "<script lang=\"ts\">\n  import { onMount } from \"svelte\";\n  import { del, get, set } from 'idb-keyval';\n  import { Button }"
  },
  {
    "path": "src/SystemCell.svelte",
    "chars": 11305,
    "preview": "<script lang=\"ts\">\n  import appState from \"./stores.svelte\";\n\n  import { onMount, tick } from \"svelte\";\n\n  import type S"
  },
  {
    "path": "src/TableCell.svelte",
    "chars": 15584,
    "preview": "<script lang=\"ts\">\n  import { deltaToMarkdown } from \"quill-delta-to-markdown\";\n  import type { Delta } from \"quill\";\n\n "
  },
  {
    "path": "src/Terms.svelte",
    "chars": 3747,
    "preview": "<script lang=\"ts\">\n  export let versionDateString: string;\n</script>\n\n<p><em>Updated {versionDateString}</em></p>\n<br />"
  },
  {
    "path": "src/TextBox.svelte",
    "chars": 1110,
    "preview": "<script lang=\"ts\">\n  import type { FormEventHandler } from \"svelte/elements\";\n  import appState from \"./stores.svelte\";\n"
  },
  {
    "path": "src/TextButton.svelte",
    "chars": 569,
    "preview": "<script lang=\"ts\">\n\timport type { Snippet } from \"svelte\";\n\n\tinterface Props {\n\t\tchildren: Snippet;\n\t\tonclick: (arg: Poi"
  },
  {
    "path": "src/TextCheckbox.svelte",
    "chars": 1550,
    "preview": "<script lang=\"ts\">\n  import type { Snippet } from \"svelte\";\n  import appState from \"./stores.svelte\";\n\n  interface Props"
  },
  {
    "path": "src/UnitsDocumentation.svelte",
    "chars": 8753,
    "preview": "<style>\n  table {\n    border-collapse: collapse;\n    margin: 1rem 0;\n  }\n  table, th, td {\n    border: 1px solid darkgra"
  },
  {
    "path": "src/UpdateAvailable.svelte",
    "chars": 391,
    "preview": "<p>\n  An update is available for EngineeringPaper.xyz. The next time you close all \n  of your windows and tabs and reope"
  },
  {
    "path": "src/Updates.svelte",
    "chars": 61636,
    "preview": "<script lang=\"ts\">\n  import { onMount } from \"svelte\";\n  import { SettingsAdjust, Download, RowCollapse, ChevronDown, Ch"
  },
  {
    "path": "src/VirtualKeyboard.svelte",
    "chars": 4010,
    "preview": "<script lang=\"ts\">\n  import { renderMathInElement } from \"mathlive\";\n  import { onMount } from \"svelte\";\n  import appSta"
  },
  {
    "path": "src/carbon-theme.scss",
    "chars": 468,
    "preview": "// 1. Disable Carbon's default CDN font fetching\n$css--font-face: false;\n$css--helpers: true;\n$css--body: true;\n$css--us"
  },
  {
    "path": "src/cells/BaseCell.ts",
    "chars": 3508,
    "preview": "import type { Delta } from \"quill\";\nimport type { MathCellConfig, FluidConfig, NumberFormatOptions } from \"../sheet/Shee"
  },
  {
    "path": "src/cells/Cells.ts",
    "chars": 1883,
    "preview": "import type { BaseCell, DatabaseCell } from \"./BaseCell\";\nimport type { Config } from \"../sheet/Sheet\";\nimport MathCell "
  },
  {
    "path": "src/cells/CodeCell.svelte.ts",
    "chars": 4558,
    "preview": "import { loadMathJax } from \"../utility\";\nimport { BaseCell, type DatabaseCodeCell } from \"./BaseCell\";\nimport { MathFie"
  },
  {
    "path": "src/cells/DataTableCell.svelte.ts",
    "chars": 29523,
    "preview": "import { format } from \"mathjs\";\nimport { BaseCell, type DatabaseDataTableCell } from \"./BaseCell\";\nimport { MathField }"
  },
  {
    "path": "src/cells/DeletedCell.ts",
    "chars": 340,
    "preview": "import { BaseCell } from \"./BaseCell\";\nimport type { Cell } from \"./Cells\";\n\n\nexport default class DeletedCell extends B"
  },
  {
    "path": "src/cells/DocumentationCell.svelte.ts",
    "chars": 876,
    "preview": "import { BaseCell, type DatabaseDocumentationCell } from \"./BaseCell\";\nimport Quill, { Delta } from \"quill\";\n\nclass Docu"
  },
  {
    "path": "src/cells/FluidCell.svelte.ts",
    "chars": 14306,
    "preview": "import { BaseCell, type DatabaseFluidCell } from \"./BaseCell\";\nimport { MathField } from \"./MathField.svelte\";\nimport { "
  },
  {
    "path": "src/cells/InsertCell.ts",
    "chars": 175,
    "preview": "import { BaseCell } from \"./BaseCell\";\n\n\nexport default class InsertCell extends BaseCell {\n\n  constructor () {\n    supe"
  },
  {
    "path": "src/cells/MathCell.svelte.ts",
    "chars": 1015,
    "preview": "import type { MathCellConfig } from \"../sheet/Sheet\";\nimport { BaseCell, type DatabaseMathCell } from \"./BaseCell\";\nimpo"
  },
  {
    "path": "src/cells/MathField.svelte.ts",
    "chars": 2276,
    "preview": "import type MathFieldElement from \"../MathField.svelte\";\n\nimport { LatexParserWrapper } from \"../parser/parserWrapper\";\n"
  },
  {
    "path": "src/cells/PiecewiseCell.svelte.ts",
    "chars": 3179,
    "preview": "import { BaseCell, type DatabasePiecewiseCell } from \"./BaseCell\";\nimport { MathField } from \"./MathField.svelte\";\nimpor"
  },
  {
    "path": "src/cells/PlotCell.svelte.ts",
    "chars": 2321,
    "preview": "import { loadMathJax } from \"../utility\";\nimport { BaseCell, type DatabasePlotCell } from \"./BaseCell\";\nimport MathCell "
  },
  {
    "path": "src/cells/SystemCell.svelte.ts",
    "chars": 3233,
    "preview": "import { BaseCell, type DatabaseSystemCell } from \"./BaseCell\";\nimport { MathField } from \"./MathField.svelte\";\nimport t"
  },
  {
    "path": "src/cells/TableCell.svelte.ts",
    "chars": 7498,
    "preview": "import Quill, { Delta } from \"quill\";\nimport { BaseCell, type DatabaseTableCell } from \"./BaseCell\";\nimport { MathField "
  },
  {
    "path": "src/constants.ts",
    "chars": 1788,
    "preview": "export const INLINE_SHORTCUTS = {\n    '*': '\\\\cdot',\n    '@': '\\\\times',\n    '<=': '\\\\le',\n    '>=': '\\\\ge',\n    '~': '\\"
  },
  {
    "path": "src/customPlotButtonIcons.ts",
    "chars": 3551,
    "preview": "export const pngIcon = {\n  height: 16,\n  width: 16,\n  path: 'm 30.004302,24.268803 q -0.758967,0.368942 -1.575911,0.5534"
  },
  {
    "path": "src/database/_worker.ts",
    "chars": 8852,
    "preview": "import { getHash, API_GET_PATH, API_SAVE_PATH } from \"./utility\";\nimport type { History, SheetPostBody } from \"./types\";"
  },
  {
    "path": "src/database/scripts/initialize.sql",
    "chars": 372,
    "preview": "DROP TABLE IF EXISTS Sheets;\nDROP TABLE IF EXISTS NumReads;\n\nPRAGMA foreign_keys = ON;\n\nCREATE TABLE Sheets (\n    id TEX"
  },
  {
    "path": "src/database/scripts/sheets_used_for_tests.json",
    "chars": 4975,
    "preview": "[\n  [\n    \"2kftdqNYyiaqAEyhXboNZF\",\n    \"Database Consistency Test\",\n    \"2022-06-14 15:47:35.455971\",\n    \"2023-01-04 0"
  },
  {
    "path": "src/database/scripts/transfer_sheets.js",
    "chars": 1211,
    "preview": "import fs from \"fs\";\nimport fetch from \"node-fetch\";\n\nconst sheetsFile = process.argv[2];\nconst targetUrl = process.argv"
  },
  {
    "path": "src/database/tsconfig.json",
    "chars": 167,
    "preview": "{\n  \"compilerOptions\": {\n    \"target\": \"esnext\",\n    \"strict\": true,\n    \"module\": \"esnext\",\n    \"lib\": [\"esnext\"],\n    "
  },
  {
    "path": "src/database/types.ts",
    "chars": 214,
    "preview": "export interface HistoryItem {\n  url: string;\n  hash: string;\n  creation: string;\n}\n\nexport type History = HistoryItem[]"
  },
  {
    "path": "src/database/utility.ts",
    "chars": 391,
    "preview": "export const API_SAVE_PATH = \"/documents/save/\";\nexport const API_GET_PATH = \"/documents/get/\";\n\nconst encoder = new Tex"
  },
  {
    "path": "src/fluidConstants.ts",
    "chars": 180380,
    "preview": "export const FLUID_PROPS_PARAMETERS = new Map([\n  [\n    \"C\",\n    {\n      idName: \"C\",\n      units: \"J/kg/K\",\n      input"
  },
  {
    "path": "src/global.css",
    "chars": 1157,
    "preview": "\nbody {\n\tposition: fixed;\n\tinset: 0;\n\toverflow: hidden;\n\tcolor: #333;\n\tmargin: 0;\n\tpadding: 8px;\n\tbox-sizing: border-box"
  },
  {
    "path": "src/global.d.ts",
    "chars": 33,
    "preview": "/// <reference types=\"svelte\" />\n"
  },
  {
    "path": "src/jediWorker.ts",
    "chars": 1421,
    "preview": "\nglobalThis.importScripts('pyodide/pyodide.js');\n\nlet pyodide_ready = false;\nlet py_funcs;\nlet pyodide;\nlet loadedPyodid"
  },
  {
    "path": "src/jediWrapper.ts",
    "chars": 914,
    "preview": "export type CodeContextRequest = {\n  code: string;\n  line: number;\n  col: number;\n};\n\nexport type AutocompleteSuggestion"
  },
  {
    "path": "src/keyboard/Keyboard.svelte.ts",
    "chars": 45943,
    "preview": "import type {MathField} from '../cells/MathField.svelte';\nimport appState from '../stores.svelte';\nimport { inMatrix } f"
  },
  {
    "path": "src/main.js",
    "chars": 240,
    "preview": "import { mount } from 'svelte';\n\nimport './global.css';\nimport 'quill/dist/quill.snow.css';\nimport './carbon-theme.scss'"
  },
  {
    "path": "src/parser/LatexIdFragments.g4",
    "chars": 30311,
    "preview": "lexer grammar LatexIdFragments;\n\n// https://github.com/antlr/grammars-v4/blob/master/python/python3_13/PythonLexer.g4\nfr"
  },
  {
    "path": "src/parser/LatexLexer.g4",
    "chars": 4654,
    "preview": "lexer grammar LatexLexer;\n\nimport LatexIdFragments;\n\nL_BRACKET: '[' -> mode(UNITS) ; \nALT_L_BRACKET: '\\\\lbrack' -> mode("
  },
  {
    "path": "src/parser/LatexLexer.ts",
    "chars": 62721,
    "preview": "// Generated from LatexLexer.g4 by ANTLR 4.12.0\n// noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymb"
  },
  {
    "path": "src/parser/LatexParser.g4",
    "chars": 10120,
    "preview": "parser grammar LatexParser;\n\noptions { tokenVocab=LatexLexer; }\n\nstatement: (fix_mixed_id | assign | assign_list | assig"
  },
  {
    "path": "src/parser/LatexParser.ts",
    "chars": 214068,
    "preview": "// @ts-nocheck\n// Generated from LatexParser.g4 by ANTLR 4.12.0\n// noinspection ES6UnusedImports,JSUnusedGlobalSymbols,J"
  },
  {
    "path": "src/parser/LatexParserVisitor.ts",
    "chars": 22274,
    "preview": "// @ts-nocheck\n// Generated from LatexParser.g4 by ANTLR 4.12.0\n\nimport {ParseTreeVisitor} from 'antlr4';\n\n\nimport { Sta"
  },
  {
    "path": "src/parser/LatexToSympy.ts",
    "chars": 88227,
    "preview": "import { unit, bignumber, format, type Unit } from \"mathjs\";\nimport { ErrorListener, TerminalNode, CharStream, CommonTok"
  },
  {
    "path": "src/parser/constants.ts",
    "chars": 4556,
    "preview": "export const GREEK_CHARS = new Set(['alpha', 'beta', 'gamma', 'delta', 'epsilon', 'zeta',\n  'eta', 'theta', 'iota', 'kap"
  },
  {
    "path": "src/parser/parserWorker.ts",
    "chars": 245,
    "preview": "import { parseLatex } from \"./LatexToSympy\";\nimport { createCustomUnits } from \"../utility\";\n\ncreateCustomUnits();\n\nself"
  },
  {
    "path": "src/parser/parserWrapper.ts",
    "chars": 2126,
    "preview": "import type { FieldTypes, DataTableInfo } from \"./types\";\nimport type { ParsingResult } from \"./LatexToSympy\";\n\ntype Par"
  },
  {
    "path": "src/parser/types.ts",
    "chars": 8879,
    "preview": "import type { Replacement } from \"./utility\";\nimport type { CodeCellInputOutputDims } from \"../cells/CodeCell.svelte\";\n\n"
  },
  {
    "path": "src/parser/utility.ts",
    "chars": 4305,
    "preview": "import type { SubQueryStatement, BlankStatement } from \"./types\";\n\nexport const PYTHON_RESERVED = new Set([\n  \"numpy\",\n "
  },
  {
    "path": "src/pyodide-info.json",
    "chars": 2663,
    "preview": "[\n  {\n    \"releaseVersion\": 0,\n    \"latestPermalink\": \"https://20260313.engineeringpaper.xyz/\",\n    \"info\": {\n      \"pyt"
  },
  {
    "path": "src/pyodideWorker.ts",
    "chars": 2256,
    "preview": "import QuickLRU from \"quick-lru\";\n\nconst cache = new QuickLRU<string, string>({maxSize: 100}); \n\nglobalThis.importScript"
  },
  {
    "path": "src/resultTypes.ts",
    "chars": 4777,
    "preview": "export type Result = {\n  value: string;\n  symbolicValue?: string; // some old database entries may not have this value\n "
  },
  {
    "path": "src/sheet/Sheet.ts",
    "chars": 12827,
    "preview": "import type { NumberFormat } from \"xlsx\";\nimport type { DatabaseCell } from \"../cells/BaseCell\"\nimport type { Result, Fi"
  },
  {
    "path": "src/stores.svelte.ts",
    "chars": 8078,
    "preview": "import { SvelteMap } from 'svelte/reactivity';\n\nimport { get as idbGet } from 'idb-keyval';\n\nimport type { Cell } from '"
  },
  {
    "path": "src/types.ts",
    "chars": 2202,
    "preview": "import type MathCell from \"./cells/MathCell.svelte\";\nimport type { SystemDefinition } from \"./cells/SystemCell.svelte\";\n"
  },
  {
    "path": "src/utility.ts",
    "chars": 8603,
    "preview": "import { unit, bignumber, createUnit, type Unit, type BigNumber, type Fraction } from \"mathjs\";\nimport { UNITS_WITH_OFFS"
  },
  {
    "path": "svelte.config.js",
    "chars": 196,
    "preview": "import { vitePreprocess } from \"@sveltejs/vite-plugin-svelte\";\nimport { optimizeImports } from \"carbon-preprocess-svelte"
  },
  {
    "path": "tests/seed-data.json",
    "chars": 1288975,
    "preview": "[\n  {\n    \"key\": \"2kftdqNYyiaqAEyhXboNZF\",\n    \"value\": \"{\\\"title\\\":\\\"Database Consistency Test\\\",\\\"data\\\":\\\"{\\\\\\\"versio"
  },
  {
    "path": "tests/spreadsheets/bottle_data.csv",
    "chars": 582,
    "preview": "t,h,d,volume,displacement,mass\r\n[mm],[mm],[mm],[mm^3],[mm],[g]\r\n1,8,77.5,575219.2471,1.48225,52.0916\r\n1,3,77.5,626232.6"
  },
  {
    "path": "tests/spreadsheets/headers_and_units.csv",
    "chars": 285,
    "preview": "col1,      ,alpha_1,\\sigma_{initial},,col3,\r\n[m],[s],,km,,,\\left\\lbrack K\\right\\rbrack\r\n4.1,9,1.10E+30,0,,1,4\r\n0,8,-1.2"
  },
  {
    "path": "tests/spreadsheets/interpolation_autosort.csv",
    "chars": 24,
    "preview": "Col1,Col2\n1,10\n3,8\n2,9\n"
  },
  {
    "path": "tests/spreadsheets/interpolation_repeated_input.csv",
    "chars": 29,
    "preview": "Col1,Col2\n1,10\n3,8\n2,9\n2,11\n"
  },
  {
    "path": "tests/spreadsheets/plane_interpolation_no_units.csv",
    "chars": 38,
    "preview": "X,Y,Z\n1,1,9.4\n1,5,8\n7,1,7.9\n6,5,6.75\n"
  },
  {
    "path": "tests/spreadsheets/plane_interpolation_with_units_large_scale.csv",
    "chars": 53,
    "preview": "X,Y,Z\n[Ym],[ys],[YN]\n1,1,9.4\n1,5,8\n7,1,7.9\n6,5,6.75\n"
  },
  {
    "path": "tests/spreadsheets/plane_interpolation_with_units_small_scale.csv",
    "chars": 49,
    "preview": "X,Y,Z\n[Ym],,[yN]\n1,1,9.4\n1,5,8\n7,1,7.9\n6,5,6.75\n"
  },
  {
    "path": "tests/test_advanced_assignments.spec.mjs",
    "chars": 6252,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_advanced_var_names.spec.mjs",
    "chars": 9518,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos, e} from 'mathjs';\n\nimport { precision"
  },
  {
    "path": "tests/test_basic.spec.mjs",
    "chars": 87506,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_calc.spec.mjs",
    "chars": 18728,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_checkpoints.spec.mjs",
    "chars": 3125,
    "preview": "import { test, expect } from '@playwright/test';\n\nimport { precision, loadPyodide, newSheet, parseLatexFloat } from './u"
  },
  {
    "path": "tests/test_code_cell.spec.mjs",
    "chars": 132323,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_code_cell_rendering.spec.mjs",
    "chars": 15417,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos, not} from 'mathjs';\n\nimport { precisi"
  },
  {
    "path": "tests/test_complex.spec.mjs",
    "chars": 11119,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_context_menu.spec.mjs",
    "chars": 6520,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_csv_export_reference_data_table_format.csv",
    "chars": 155,
    "preview": "Col1=pi*range(3),Col2=1e-3*pi*range(3)\n3.141592653589793,0.0031415926535897933\n6.283185307179586,0.006283185307179587\n9"
  },
  {
    "path": "tests/test_custom_base_units.spec.mjs",
    "chars": 15267,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_data_table.spec.mjs",
    "chars": 94769,
    "preview": "import { promises as fs } from 'fs';\nimport { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} "
  },
  {
    "path": "tests/test_database.spec.mjs",
    "chars": 12717,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cos } from 'mathjs';\n\n\nimport { precision, pyodideLoadTimeout,"
  },
  {
    "path": "tests/test_ep_custom_units.spec.mjs",
    "chars": 5684,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_file_save_open.spec.mjs",
    "chars": 15796,
    "preview": "import { test, expect } from '@playwright/test';\nimport { promises as fs } from 'fs';\n\nimport { precision, pyodideLoadTi"
  },
  {
    "path": "tests/test_fluid_properties.spec.mjs",
    "chars": 30535,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_functions.spec.mjs",
    "chars": 12556,
    "preview": "import { test, expect } from '@playwright/test';\nimport { complex, cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { pre"
  },
  {
    "path": "tests/test_generated_code.spec.mjs",
    "chars": 10612,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_iframe.spec.mjs",
    "chars": 845,
    "preview": "import { test, expect } from '@playwright/test';\n\nimport { parseLatexFloat, precision, pyodideLoadTimeout } from './util"
  },
  {
    "path": "tests/test_insert_sheet.spec.mjs",
    "chars": 3358,
    "preview": "import { test, expect } from '@playwright/test';\n\nimport { precision, loadPyodide, newSheet, parseLatexFloat } from './u"
  },
  {
    "path": "tests/test_keyboard_shortcuts.spec.mjs",
    "chars": 15381,
    "preview": "import { test, expect } from '@playwright/test';\n\nimport { precision, loadPyodide, newSheet, parseLatexFloat, pyodideLoa"
  },
  {
    "path": "tests/test_latex_scientific_notation.spec.mjs",
    "chars": 6781,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_matrix_addition.spec.mjs",
    "chars": 10888,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_matrix_calc.spec.mjs",
    "chars": 1844,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_matrix_determinant.spec.mjs",
    "chars": 8547,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_matrix_functions.spec.mjs",
    "chars": 26398,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_matrix_indexing_and_assembling.spec.mjs",
    "chars": 15202,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_matrix_inverse.spec.mjs",
    "chars": 13799,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_matrix_keyboard.spec.mjs",
    "chars": 6890,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_matrix_multiplication.spec.mjs",
    "chars": 29526,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_matrix_transpose.spec.mjs",
    "chars": 3324,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_md_export.epxyz",
    "chars": 8755,
    "preview": "{\"data\":{\"version\":20250705,\"config\":{\"mathCellConfig\":{\"symbolicOutput\":false,\"showIntermediateResults\":false,\"formatOp"
  },
  {
    "path": "tests/test_md_export_reference.md",
    "chars": 3853,
    "preview": "<!-- Created with EngineeringPaper.xyz -->\n# MD Export Test\n$x=20\\left\\lbrack m\\right\\rbrack$ <!-- inline -->\n\nDocumenta"
  },
  {
    "path": "tests/test_md_export_reference_centered.md",
    "chars": 3743,
    "preview": "<!-- Created with EngineeringPaper.xyz -->\n# MD Export Test\n$$ x=20\\left\\lbrack m\\right\\rbrack   $$\n\nDocumentation cell "
  },
  {
    "path": "tests/test_md_export_reference_data_table_format.md",
    "chars": 367,
    "preview": "<!-- Created with EngineeringPaper.xyz -->\n# New Sheet\n$$ Col2= \\begin{bmatrix} 0.00314159265358979 \\\\ 0.006283185307179"
  },
  {
    "path": "tests/test_number_format.spec.mjs",
    "chars": 29920,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_parse_id_bug.spec.mjs",
    "chars": 1858,
    "preview": "import { test, expect } from '@playwright/test';\n\nimport { precision, pyodideLoadTimeout, compareImages, parseLatexFloat"
  },
  {
    "path": "tests/test_piecewise_cell.spec.mjs",
    "chars": 19382,
    "preview": "import { test, expect } from '@playwright/test';\n\nimport { precision, loadPyodide, newSheet, screenshotDir,\n         pyo"
  },
  {
    "path": "tests/test_plotting.spec.mjs",
    "chars": 40926,
    "preview": "import fs from 'fs';\nimport path from 'path';\nimport { test, expect } from '@playwright/test';\n\nimport { compareImages, "
  },
  {
    "path": "tests/test_sheet.epxyz",
    "chars": 475898,
    "preview": "{\"data\":{\"cells\":[{\"type\":\"documentation\",\"id\":4,\"json\":{\"ops\":[{\"insert\":\"Introduction\"},{\"attributes\":{\"header\":1},\"in"
  },
  {
    "path": "tests/test_sheet_long_calculation.epxyz",
    "chars": 1099,
    "preview": "{\"data\":{\"config\":{\"mathCellConfig\":{\"symbolicOutput\":false,\"formatOptions\":{\"notation\":\"auto\",\"precision\":15,\"lowerExp\""
  },
  {
    "path": "tests/test_sheet_parsing_error.epxyz",
    "chars": 869,
    "preview": "{\"data\":{\"cells\":[{\"type\":\"math\",\"id\":0,\"latex\":\"x=5.11\"},{\"type\":\"math\",\"id\":2,\"latex\":\"x=\"},{\"type\":\"math\",\"id\":1,\"lat"
  },
  {
    "path": "tests/test_sheet_slow_simplify.epxyz",
    "chars": 219296,
    "preview": "{\"data\":{\"version\":20250705,\"config\":{\"mathCellConfig\":{\"symbolicOutput\":false,\"showIntermediateResults\":false,\"formatOp"
  },
  {
    "path": "tests/test_sheet_with_results.epxyz",
    "chars": 101703,
    "preview": "{\"data\":{\"config\":{\"mathCellConfig\":{\"symbolicOutput\":false,\"formatOptions\":{\"notation\":\"auto\",\"precision\":5,\"lowerExp\":"
  },
  {
    "path": "tests/test_sheet_with_wrong_result.epxyz",
    "chars": 3047,
    "preview": "{\"data\":{\"version\":20251012,\"config\":{\"mathCellConfig\":{\"symbolicOutput\":false,\"showIntermediateResults\":false,\"formatOp"
  },
  {
    "path": "tests/test_single_char_scripts.spec.mjs",
    "chars": 9177,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_sum_and_prod.spec.mjs",
    "chars": 12935,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos, e} from 'mathjs';\n\nimport { precision"
  },
  {
    "path": "tests/test_symbolic_expression_error_handling.spec.mjs",
    "chars": 660,
    "preview": "import { test, expect } from '@playwright/test';\n\nimport { precision, pyodideLoadTimeout, compareImages, parseLatexFloat"
  },
  {
    "path": "tests/test_syntax_error_messages.spec.mjs",
    "chars": 13554,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_system_solve.spec.mjs",
    "chars": 47531,
    "preview": "import { test, expect } from '@playwright/test';\nimport { cot, pi, sqrt, tan, cos} from 'mathjs';\n\nimport { precision, l"
  },
  {
    "path": "tests/test_table_cell.spec.mjs",
    "chars": 24795,
    "preview": "import { test, expect } from '@playwright/test';\n\nimport { precision, loadPyodide, newSheet, pyodideLoadTimeout,\n       "
  },
  {
    "path": "tests/utility.mjs",
    "chars": 2486,
    "preview": "import fs from 'fs';\nimport path from 'path';\nimport { PNG } from 'pngjs';\nimport { complex } from 'mathjs';\n\nexport con"
  },
  {
    "path": "tsconfig.json",
    "chars": 415,
    "preview": "{\n  \"compilerOptions\": {\n    \"resolveJsonModule\": true,\n    \"target\": \"esnext\",\n    \"strict\": false,\n    \"verbatimModule"
  },
  {
    "path": "vite.config.js",
    "chars": 5538,
    "preview": "import { defineConfig } from 'vite';\nimport { svelte } from '@sveltejs/vite-plugin-svelte';\nimport { optimizeCss } from "
  }
]

// ... and 35 more files (download for full content)

About this extraction

This page contains the full source code of the mgreminger/EngineeringPaper.xyz GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 228 files (19.7 MB), approximately 1.5M tokens, and a symbol index with 2536 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!